aboutsummaryrefslogtreecommitdiff
path: root/assets
diff options
context:
space:
mode:
authorhellekin <hellekin@cepheide.org>2017-09-14 22:55:43 +0200
committerhellekin <hellekin@cepheide.org>2017-09-14 22:55:43 +0200
commitcfbad8a92412201ac61672fb1416b5d161817e87 (patch)
tree8e33ff08e5a24c4ee08c551259c2cefa5de7fbe4 /assets
downloadqw.lesoiseaux.io-cfbad8a92412201ac61672fb1416b5d161817e87.tar.gz
Add current site
Diffstat (limited to 'assets')
-rw-r--r--assets/css/normalize.css1
-rw-r--r--assets/css/qw.css59
-rw-r--r--assets/css/reset.css429
-rw-r--r--assets/img/logo-dicream.pngbin0 -> 1593 bytes
-rw-r--r--assets/img/logo-ps-32x32.pngbin0 -> 784 bytes
-rw-r--r--assets/img/qw-butterfly.pngbin0 -> 16785 bytes
-rw-r--r--assets/img/qw-butterfly.svg72
-rw-r--r--assets/js/index.js96
-rw-r--r--assets/js/index91.js96
-rw-r--r--assets/js/jquery-1.12.4.min.js5
-rw-r--r--assets/js/jquery-1.8.2.js9440
-rw-r--r--assets/js/kalman.js66
-rw-r--r--assets/js/kalman.min.js1
-rw-r--r--assets/js/message-bus.js431
-rw-r--r--assets/js/message-bus.min.js1
-rw-r--r--assets/js/pedometer.js73
-rw-r--r--assets/js/qw.js335
-rw-r--r--assets/js/snap.svg-min.js21
-rw-r--r--assets/js/sylvester.js1
19 files changed, 11127 insertions, 0 deletions
diff --git a/assets/css/normalize.css b/assets/css/normalize.css
new file mode 100644
index 0000000..c7cc828
--- /dev/null
+++ b/assets/css/normalize.css
@@ -0,0 +1 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}
diff --git a/assets/css/qw.css b/assets/css/qw.css
new file mode 100644
index 0000000..a6f7772
--- /dev/null
+++ b/assets/css/qw.css
@@ -0,0 +1,59 @@
+body {
+ background-color: rgba(194, 194, 194, 0.3);
+ font-family: 'Cormorant Garamond';
+}
+
+body>header h1 img {
+ vertical-align: bottom;
+}
+
+body>header h2 {
+ margin-top: -1rem;
+ margin-left: 40px;
+ font-size: 2rem;
+}
+
+header,main,aside {
+ margin: 0 auto;
+ width: 80%;
+}
+
+main article {
+ padding: 2%;
+ font-size: 150%;
+ max-width: 60rem;
+}
+
+article header + a {
+ float: right;
+ margin: 1rem;
+}
+
+figcaption {
+ margin-top: -2rem;
+ font-variant: small-caps;
+ text-align: center;
+}
+
+section {
+ margin-top: 10rem;
+}
+
+section h3 + p, h2 + p {
+ font-size: 150%;
+}
+
+article footer {
+ font-size: 1rem;
+}
+
+body>footer {
+ font-size: x-small;
+ width: 60%;
+ margin: 0 auto;
+}
+
+.cnc-dicream {
+ margin: 3rem auto;
+ text-align: right;
+}
diff --git a/assets/css/reset.css b/assets/css/reset.css
new file mode 100644
index 0000000..54c5d62
--- /dev/null
+++ b/assets/css/reset.css
@@ -0,0 +1,429 @@
+@charset "utf-8";
+
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
diff --git a/assets/img/logo-dicream.png b/assets/img/logo-dicream.png
new file mode 100644
index 0000000..0ea1eae
--- /dev/null
+++ b/assets/img/logo-dicream.png
Binary files differ
diff --git a/assets/img/logo-ps-32x32.png b/assets/img/logo-ps-32x32.png
new file mode 100644
index 0000000..d26013d
--- /dev/null
+++ b/assets/img/logo-ps-32x32.png
Binary files differ
diff --git a/assets/img/qw-butterfly.png b/assets/img/qw-butterfly.png
new file mode 100644
index 0000000..bfcf3b9
--- /dev/null
+++ b/assets/img/qw-butterfly.png
Binary files differ
diff --git a/assets/img/qw-butterfly.svg b/assets/img/qw-butterfly.svg
new file mode 100644
index 0000000..2cb0454
--- /dev/null
+++ b/assets/img/qw-butterfly.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ width="220"
+ height="220"
+ viewBox="0 0 206.24999 65.448496"
+ id="left-bits"
+ version="1.1">
+ <defs
+ id="defs15" />
+ <metadata
+ id="metadata7">
+ <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>
+ <metadata
+ id="metadata4">
+ <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 />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="g4141"
+ onclick="window.location=&quot;http://qw.butterfly.lesoiseaux.io&quot;"
+ transform="matrix(0.08873565,0,0,0.08873565,3.0254633,-41.034574)">
+ <path
+ id="cavity"
+ d="m 994.14081,1616.7151 c 6.98939,-42.2477 -45.12004,-98.5768 -1.63254,-130.0039 57.83153,-28.7853 125.37453,-18.5436 187.18313,-12.2797 36.9191,5.0108 74.8725,10.3259 111.7765,2.3187 -69.8939,3.6218 -139.1279,-10.5074 -208.5266,-13.5721 -32.8974,-3.3638 -81.0995,31.4774 -104.10585,10.4412 30.73415,-20.1016 71.55065,-21.8798 107.79585,-24.6912 69.4826,-2.97 139.8287,24.3777 208.0364,7.069 -82.6303,12.012 -166.0926,-19.5286 -248.9709,-5.1782 -27.1986,-2.8324 -89.75495,44.604 -78.44071,-13.7721 7.10451,-44.7574 -32.92257,-120.1487 29.18224,-136.8205 41.24397,-7.6413 82.73287,5.9099 124.20507,2.8505 62.6034,4.4369 127.2384,9.3769 188.0874,-9.6317 -91.06,21.5728 -184.7069,3.7379 -276.6624,3.7555 -24.9399,3.4352 -72.88466,13.3914 -52.68037,-27.09 -3.43206,-33.2693 26.01577,-99.6878 47.71837,-40.7339 11.729,20.514 68.6844,50.749 17.1058,41.4777 -19.0505,-3.0931 -72.10837,7.0074 -21.363,2.927 75.7481,-3.454 152.1711,12.6864 227.3529,-2.2157 -53.9211,5.6688 -108.2599,3.8025 -162.2913,0.9294 25.6313,-8.9664 95.4996,3.8794 92.811,-3.4093 -38.7623,10.5052 -90.0612,-7.2912 -75.7482,-54.7851 -23.4812,-111.2927 43.6529,-224.08982 4.8384,-333.66368 -30.9514,-91.20651 -115.901,-151.75454 -204.8331,-179.55608 -21.72304,-6.60809 -79.14909,-29.27744 -73.12073,-34.6217 100.74238,46.64521 210.21813,78.72851 322.13083,75.50187 114.1535,2.83157 223.7529,-32.9062 331.7394,-64.99438 12.5103,3.80387 -41.9363,18.37473 -55.6754,23.38055 -55.6762,17.25943 -107.6036,45.65653 -165.8894,53.46224 -78.4639,9.67361 -158.2537,10.92839 -236.3953,-2.41448 94.1009,22.67967 192.241,12.66231 286.3218,-4.68288 -68.6252,41.07144 -128.0852,110.07752 -129.9121,193.54101 -3.3833,91.33083 48.8244,181.69533 18.0846,272.51683 -39.5242,56.4528 60.7042,69.7045 62.0438,12.1599 -6.1829,-37.0719 54.5188,-57.1452 48.7863,-8.0266 8.2239,73.1427 6.5736,147.1471 -0.4171,220.2637 -5.8978,31.0537 -14.5937,79.7974 -57.3385,70.1623 -76.5413,-8.4487 -156.4771,-24.9497 -231.839,0.564 -15.5968,5.6258 -41.58166,15.5511 -11.9796,3.1463 90.0738,-29.108 184.009,-3.5708 275.5529,1.0965 -97.0835,1.3713 -200.0357,-33.0987 -292.35332,11.3995 70.85992,-28.6979 148.04572,-20.2879 221.89532,-11.8611 26.4185,6.0436 95.823,-9.2055 58.8497,35.2764 -38.6033,14.2084 -78.8999,-11.6169 -118.9347,-6.5279 -54.1541,-2.6493 -110.9271,3.4657 -158.55759,31.2387 82.55089,-40.205 179.26069,-33.1299 266.25029,-14.78 -18.5265,-0.064 -64.6334,-4.2425 -19.8356,-3.1047 35.7972,-12.8147 39.3654,78.1176 12.1791,28.6173 -42.3038,-37.7881 -109.7979,-35.0465 -160.5792,-17.5545 -31.1259,18.2615 -87.5319,31.1705 -101.84459,51.8753 z m 21.14999,-29.05 c -12.2808,3.3046 -12.4117,9.1655 0,0 z m 21.79,-12.57 c 18.0186,-5.3128 68.8433,-20.2282 21.2576,-9.5521 -13.3681,2.3936 -59.17057,25.3011 -21.2576,9.5521 z m -11.25,12.27 c -4.9098,-5.2274 -3.5613,7.4543 0,0 z m -21.25,-4.98 c 52.4967,-26.2268 111.9704,-33.188 169.9091,-34.9831 -60.6732,-5.0313 -125.4744,-0.6279 -178.63909,31.8431 29.73079,-17.4473 97.65329,-32.2569 109.97659,-30.2038 -34.2566,8.2766 -71.0456,14.3095 -101.2466,33.3438 z m 40,-4.32 c 23.8576,-4.2391 32.4991,-14.3967 3.6668,-3.6244 -14.8269,4.3897 -31.6536,14.6801 -3.6668,3.6244 z m 1.8,3.17 c -4.2481,-3.6959 -3.0397,5.1836 0,0 z m 220.7,-5.12 c -4.7481,-7.7269 -5.6621,6.0482 0,0 z m 1.25,-4.85 c -15.4586,-7.1353 -13.955,3.6283 0,0 z m -236.85,-20.03 c 78.8124,-26.9298 162.3024,-7.1027 242.95,-3.17 -65.9902,-10.1818 -132.941,-14.2423 -199.6737,-11.8038 62.494,-12.5485 125.4998,4.5846 188.2836,3.8614 -90.014,-8.0283 -189.2684,-27.9825 -271.54775,21.3437 14.76115,-7.1484 66.31285,-27.9223 58.52025,-18.6054 -15.7721,4.7978 -59.7292,24.3069 -20.0772,8.9389 z m 240.6,14.98 c -20.0502,-7.9532 -38.5492,-1.7952 -7.6031,0.9485 2.6374,0.3224 5.1103,-0.1032 7.6031,-0.9485 z m -270.99,-14.96 c 81.7826,-42.3103 178.9963,-18.5705 263.6139,-16.5928 -36.2638,-8.6386 -75.2803,-6.5305 -112.669,-10.5837 -54.9478,-2.7219 -113.622,1.2623 -161.05949,31.9974 l 5.22808,-2.0163 z m -3.10999,-5.83 c 85.39449,-40.812 181.57219,-18.3364 272.01859,-17.3319 -91.3096,-7.0183 -190.4004,-25.9645 -275.73588,17.7144 l -1.54886,1.1952 z m -1.53,-5.7 c 91.22589,-43.3262 193.48269,-14.968 289.87999,-19.67 -98.7114,-0.3304 -204.8121,-26.8364 -296.75944,22.1194 -9.41608,5.5874 8.4802,-3.4685 6.87945,-2.4494 z m 1.97,-9.32 c 62.81919,-28.3517 133.52649,-21.8735 200.29129,-17.0025 -71.3475,-10.9232 -148.9879,-13.0869 -214.23379,22.4662 l 7.05078,-2.5289 z m -5.63,-19.43 c 88.10689,-35.1541 183.87369,-13.4456 274.93119,-6.2248 22.4398,-7.3399 -36.701,-2.7 -46.4042,-6.6175 -76.8778,-8.9705 -159.3804,-20.5809 -232.10853,13.4571 l 2.29845,-0.3946 z m 3.66,-8.14 c 88.63909,-33.7971 183.52189,-6.9623 274.59289,-4.834 5.962,-4.5654 -51.8324,-0.957 -67.5603,-6.7031 -71.0556,-8.6116 -147.3089,-17.3085 -214.33762,14.0759 2.43501,-0.8463 4.87002,-1.6926 7.30503,-2.5388 z m 3.74999,-8.53 c 91.1187,-32.6688 187.4018,-0.5103 280.392,-3.5753 -33.1108,0.1679 -75.5095,-4.8259 -111.9301,-9.4023 -60.0357,-6.3148 -123.0648,-7.9016 -179.96562,15.3479 l 5.7779,-1.0675 z m 25,-13.76 c 84.1959,-22.2023 169.6014,9.7987 254.5711,4.7321 -5.4799,-6.1408 -61.7661,1.0182 -85.2258,-6.5372 -68.8126,-7.6839 -142.0737,-16.9698 -207.67628,11.1839 12.93617,-2.3567 25.38688,-7.0022 38.33098,-9.3788 z m -32.20999,-2.42 c 81.77159,-32.0484 169.59569,-8.3286 253.58099,-3.3094 20.399,2.3402 69.3986,-9.7875 22.0074,-4.4768 -88.0886,4.3838 -177.6482,-27.9241 -264.0386,2.0217 -16.93487,4.9019 -41.42785,16.0363 -11.54979,5.7645 z m -5.12,-3.98 c 89.58739,-38.4218 186.69279,-4.4742 279.49219,-6.5532 25.1923,-2.5345 31.0749,-6.8442 1.4652,-2.7958 -91.1453,4.4223 -185.5246,-31.5346 -273.77397,5.388 -11.48057,3.7086 -31.58308,12.4364 -7.18342,3.961 z m 18.75999,-19.11 c 19.0737,-5.7306 82.733,-15.5956 28.2471,-9.0281 -16.7121,2.1566 -74.80938,22.715 -28.2471,9.0281 z m -30.68999,2.92 c 91.41879,-39.1851 190.88729,-6.8924 285.70459,-8.9645 18.0621,1.1509 60.3335,-11.7469 20.0175,-4.2118 -96.0222,13.8636 -194.9039,-30.4309 -288.72441,5.5493 -6.01514,1.5153 -12.33651,3.2357 -16.99768,7.627 z m 299.94999,-3.55 c 35.8719,-10.2165 -38.0429,4.6365 -51.0838,0.1718 -37.7736,-4.0241 -105.7772,-13.7593 -124.9701,-12.5569 58.7134,3.475 116.9743,21.3087 176.0539,12.3851 z m -285.74999,-6.42 c 82.94259,-30.9504 171.18789,-5.4498 256.07889,-2.443 19.1181,1.2404 83.2608,-17.734 31.4483,-6.0086 -89.1988,13.1515 -179.7333,-28.727 -267.803,0.6965 -1.1947,0.5094 -29.69929,7.8406 -19.72419,7.7551 z m -10.46,-1.4 c 86.80729,-36.0886 181.03299,-9.0725 270.86559,-6.1307 16.3696,-0.342 64.8921,-15.7294 21.7118,-6.2669 -88.9153,11.7448 -179.4279,-28.4438 -266.8875,1.985 -8.98574,2.1313 -18.30403,4.567 -25.68989,10.4126 z m 8.81,-10.24 c 90.65359,-29.9121 185.52529,0.155 277.86929,-3.1532 17.9535,-2.1732 51.4038,-16.2999 12.0842,-5.3374 -96.4972,14.9711 -196.4101,-28.4962 -290.60649,7.2625 z m 24.83999,-13.85 c 94.7059,-22.2126 193.0565,24.0838 286.4425,-5.1431 -35.1376,9.1182 -77.6149,9.6838 -115.9115,4.9277 -68.3079,-5.8776 -139.9478,-16.9279 -205.909,8.1548 12.22537,-0.1442 23.2324,-6.9788 35.378,-7.9394 z m -31.79999,1.1 c 102.64009,-33.8725 210.60799,15.7878 314.05529,-9.6067 14.4928,-10.3538 -51.0908,10.8652 -70.478,5.1036 -83.2176,-0.067 -170.0273,-26.4193 -250.41725,6.2411 2.27999,-0.5793 4.55997,-1.1587 6.83996,-1.738 z m -0.62,-5.23 c 15.04616,-10.751 -25.83757,11.2474 0,0 z m 281.00999,-2.93 c 14.1942,3.7235 56.644,-19.2525 20.915,-6.894 -94.2872,19.7696 -190.7562,-23.4153 -284.34361,3.6204 87.38971,-18.4 175.53831,9.9774 263.42861,3.2736 z m -273.58999,-5.77 c 99.96579,-30.079 204.34009,20.654 304.23669,-7.436 9.9529,-7.4826 -47.0355,11.5428 -62.6017,6.2523 -83.7738,1.2106 -170.3032,-27.4317 -251.87663,3.0017 3.47268,0.1007 6.83162,-1.2905 10.24164,-1.818 z m -1.91,-6.74 c 92.80069,-25.6658 188.08129,11.242 281.54389,-0.9804 20.3351,-2.8135 43.9742,-14.1682 9.753,-4.516 -100.3245,20.5902 -204.6048,-29.4896 -302.84532,7.7208 l 3.67647,-0.2508 z m 36.90999,-13.82 c 93.928,-15.0856 190.8205,31.6735 282.5287,-4.2142 -108.3622,34.5453 -223.4785,-27.1301 -330.90469,13.7477 16.25679,-1.8993 32.09929,-7.372 48.37599,-9.5335 z m -35.88999,1.25 c 100.60969,-29.4691 205.58679,21.7675 305.89119,-7.084 -103.1281,23.983 -209.5097,-26.8397 -311.33326,7.0403 -19.72636,3.8638 2.79232,3.2999 5.44207,0.044 z m -7.44,-4.35 c 104.23079,-30.8578 213.51619,21.4304 317.40819,-9.5503 -35.6138,7.4481 -82.1581,10.079 -122.0278,5.0588 -67.3516,-5.7571 -137.6671,-17.937 -203.15869,5.4391 2.59277,-0.3159 5.18553,-0.6318 7.7783,-0.9476 z m 5.21,-6.81 c 101.93459,-28.1044 207.87679,20.8332 309.57419,-7.4648 -32.2236,5.9621 -84.3756,8.8132 -123.8741,3.4667 -66.6261,-5.7199 -136.2119,-16.348 -200.84793,6.8565 5.11514,-0.6427 10.14799,-1.604 15.14784,-2.8584 z m -12.5,-2.94 c 105.35919,-32.5203 215.82569,16.807 321.54229,-10.3638 -13.1604,1.3679 -57.865,8.4077 -83.6204,5.7716 -77.9177,-2.1543 -157.6541,-20.8118 -234.35002,1.4468 -6.18734,-4.6442 -16.36134,15.1433 -3.57187,3.1454 z m 8.92,-9.52 c 106.26639,-30.1286 217.33609,24.4867 323.04169,-10.0339 -108.1437,31.1176 -222.0151,-25.3365 -329.08421,11.4565 l -1.91164,1.1515 z m 2.74,-7.44 c 106.79259,-27.1717 217.85269,25.0897 323.73489,-9.5638 -111.2619,30.2925 -227.6286,-23.6193 -338.16815,12.2464 5.14684,1.1493 9.33436,-3.2232 14.43326,-2.6826 z m -2.09,-5 c 105.60589,-26.6229 215.33199,23.3326 320.16659,-9.6665 -109.3121,29.5965 -223.8373,-24.5058 -332.1754,12.4546 l 6.04175,-1.2272 z m 19.82999,-9.38 c 102.8214,-16.8262 209.072,26.0951 309.85,-9.3 -110.8045,32.8353 -227.6229,-18.5326 -338.13118,14.3737 -9.85694,4.6716 26.22728,-5.832 28.28118,-5.0737 z m -22.23999,-1.27 c 71.32249,-17.7877 144.71959,-2.6505 216.85999,-0.75 -75.5254,-7.0117 -154.1731,-22.0868 -228.07452,2.8959 l 5.6521,-0.8374 z m 283.74999,-3.69 c 14.3423,1.8062 53.2415,-13.2976 16.8412,-4.4911 -20.2953,2.3284 -83.774,9.6973 -32.2079,6.1107 5.1325,-0.4349 10.2571,-0.9677 15.3667,-1.6196 z m -275.44999,-4.36 c 105.62669,-25.1604 215.82399,24.6725 320.02099,-11.7309 -109.5358,32.6896 -227.3352,-20.5691 -335.00781,14.6666 5.08704,1.1654 10.07103,-3.043 14.98682,-2.9357 z m -12.97,-2.64 c 110.01569,-30.8519 226.01219,23.011 334.97729,-15.3061 -110.9373,32.7674 -227.7991,-18.7857 -338.53062,15.3559 l 2.33184,-0.033 1.22149,-0.017 v 0 z m 10.63,-8.58 c 106.42389,-22.5259 216.73069,21.9233 321.87069,-11.59 -91.4229,20.8813 -185.0331,0.8943 -277.228,2.6504 -10.5554,-1.0995 -95.24742,17.5116 -44.64269,8.9396 z m -8.19,-5.73 c 109.71899,-22.4678 223.63949,21.9293 331.80839,-13.4574 -100.7491,28.0419 -205.1753,-5.5345 -306.9569,7.1834 -2.2123,0.1862 -51.47913,9.77 -24.85149,6.274 z m 275.01999,-8.1 c 19.1837,0.9265 66.414,-15.6548 22.1081,-5.0958 -99.3107,17.9028 -200.5031,-15.9998 -299.48809,5.8058 92.16219,-14.0881 185.00629,8.9026 277.37999,-0.71 z m -22.45,-9.35 c -19.266,-1.9319 -14.5778,3.2872 0,0 z m 20.63,-7.53 c 15.2541,1.5815 66.8158,-17.4139 22.3937,-5.9445 -97.6149,21.8351 -197.9242,-8.9381 -295.85994,9.477 90.88414,-12.7462 182.77224,12.0428 273.46624,-3.5325 z m 13.13,3.65 c 20.3222,1.0355 51.1184,-15.06 13.3738,-4.9145 -9.1474,0.8156 -41.9901,9.8108 -13.3738,4.9145 z m -26.25,-8.61 c 18.2826,-1.4876 86.8522,-18.5758 33.7337,-7.2505 -87.1163,19.6384 -176.2362,-0.9029 -263.9663,4.152 -17.36763,1.8737 -31.91926,7.2243 -4.9121,2.3953 78.3642,-7.614 157.0365,13.9521 235.1447,0.7032 z m -9.68,-5.6 c 22.2672,-4.1042 51.2307,-7.0897 68.724,-15.0045 -98.612,29.3042 -201.7926,3.7578 -302.10517,12.2316 12.17757,1.5963 73.03487,-2.5669 103.55737,1.6983 43.1949,2.567 86.655,5.8622 129.8238,1.0746 z m -230.22999,-14 c 17.83889,-0.7139 56.15649,-7.9265 17.82589,-4.734 -5.3381,0.4408 -43.78428,9.3217 -17.82589,4.734 z m 288.02999,-3.49 c 44.1953,-8.1043 -43.9537,11.14 -10.5975,2.5233 l 4.7753,-1.1464 z m -23.04,-1.97 c 18.4781,-0.3478 47.7963,-15.1867 12.6688,-5.0265 -12.0907,1.0301 -41.3573,11.4916 -12.6688,5.0265 z m -70.71,0.18 c -20.348,-4.8225 -88.6621,1.1159 -34.7879,1.7761 11.6146,-0.042 23.2366,-0.5314 34.7879,-1.7761 z m -186.25,-2.2 c 22.7376,-0.4105 30.9732,-6.2897 1.8365,-3.5218 -14.32978,1.065 -20.61803,8.5694 -1.8365,3.5218 z m 183.75,-4.04 c -17.9175,-5.3335 -90.9272,1.7554 -36.7769,1.8027 12.277,-0.061 24.5568,-0.6005 36.7769,-1.8027 z m 80.63,-2.2 c 39.7966,-8.7502 -30.3959,3.3951 0,8e-4 v -8e-4 h -2e-4 z m -270.61999,0.1 c 40.19389,-1.124 8.14769,-10.4483 -7.5938,1.9979 z m 187.49999,-4.19 c -13.9529,-3.6266 -79.2008,1.1898 -34.0505,1.9143 11.3728,-0.019 22.7537,-0.5708 34.0505,-1.9143 z m 78.13,-1.31 c 18.5234,-1.7125 41.857,-15.2862 9.9733,-4.9758 -4.1882,0.9979 -32.3484,10.1401 -9.9733,4.9758 z m -269.82999,-0.71 c 23.84469,0.6455 26.34229,-9.5687 0.0518,-2.9742 -3.35173,-1.0226 -17.43444,11.9259 -0.0518,2.9742 z m 192.32999,-4.19 c -21.0762,-3.3718 -78.4944,3.0085 -24.7425,1.7494 8.2682,-0.1403 16.5562,-0.4997 24.7425,-1.7494 z m 121.19,-0.32 c -7.4072,-3.8065 -10.7118,9.8429 0,0 z m -292.2,-4.82 c -0.6972,-7.676 -39.78668,7.222 0,0 z m 169.4,0.18 c -19.8209,-0.8843 -81.1747,1.2806 -27.5088,0.8778 9.1747,-0.073 18.3494,-0.3322 27.5088,-0.8778 z m 94.61,-2.19 c 32.4352,-8.1536 -18.4015,0.6845 -1.8778,0.4379 z m -114.53,-1.78 c 7.0779,-10.1125 -73.9748,0.639 -19.4598,0.8036 6.4943,0.1635 13.0034,-0.066 19.4598,-0.8036 z m -146.9,-2.98 c -23.45185,-4.9706 -27.85642,6.625 0,0 z m 249.38,-0.36 c -4.1254,-4.8383 -3.1328,3.3099 0,0 z m 22.19,-4.96 c 21.0455,-10.4628 -30.3792,9.5183 0,0 z m -117.47,1.94 c -15.0557,-7.8563 -77.4015,2.8289 -23.2027,0.9588 7.7407,0 15.502,-0.069 23.2027,-0.9588 z m -156.28,-3.88 c -12.6767,-2.8031 -15.8521,5.1697 0,0 z m 163.13,-2.4 c -16.5305,-7.7873 -86.4425,4.054 -34.952,1.3146 11.6609,-0.054 23.3201,-0.4913 34.952,-1.3146 z m 108.17,-2.32 c 17.4818,-8.753 -30.1858,8.7832 0,0 z m -278.71,-0.05 c 8.5672,-7.8335 2.5427,3.2034 -7.4067,1.2935 z m 174.28,-3.85 c -18.5361,-4.5981 -94.4007,2.5305 -41.0966,1.9803 13.7201,0 27.4402,-0.6606 41.0966,-1.9803 z m 102.44,-3.09 c 16.0808,-9.3935 -27.8221,9.4944 0,0 z m -275.55,-1.81 c -8.9456,-7.0038 -10.98845,10.3611 0,0 z m 175.8,-2.01 c -22.6013,-5.6919 -54.2965,2.7396 -71.6798,0.1862 23.7937,2.7721 47.8893,2.4242 71.6798,-0.1862 z m 112.32,-0.49 c -3.8556,-6.2623 -4.1747,7.0628 0,0 z m -15,-2.5 c -3.3142,-5.8803 -3.4668,6.3503 0,0 z m -276.25,-2.5 c -4.517,-6.6638 -5.0349,8.2921 0,0 z m 170.63,0.01 c 33.5663,-6.2682 -59.7437,1.5131 -60.2117,-0.077 20.0227,0.7665 40.2322,2.0754 60.2117,0.077 z m 119.45,-1.87 c 3.9919,-6.3941 -18.2438,12.6035 0,0 z m -123.51,-3.95 c -20.5761,-7.1706 -52.0138,5.9059 -12.7419,0.9361 4.2626,-0.087 8.4962,-0.5913 12.7419,-0.9361 z m -56.23,-1.33 c -13.5237,-3.9449 -6.6585,2.4921 0,0 z m 82.79,-2.33 c -11.0788,-4.2894 -13.6559,9.2076 0,0 z m -10.99,-3.66 c -14.4221,-5.5412 -75.5764,2.5488 -61.9426,2.5874 20.6668,0.07 41.3977,-0.091 61.9426,-2.5874 z m -3.55,-5.08 c -0.8033,-4.4547 -70.1871,6.3354 -65.7784,2.4131 21.9108,0.238 44.0009,0.7596 65.7784,-2.4131 z m 7.43,-6.67 c -21.0483,-3.2625 -58.0763,0.6746 -80.5409,1.2661 26.6058,1.4508 54.2442,3.3483 80.5409,-1.2661 z m -6.7,-4.62 c -0.9765,-6.7973 -61.3234,1.5034 -65.3989,1.7584 21.7467,0.4822 43.8655,1.932 65.3989,-1.7584 z m 6.74,-6.64 c -18.3768,-1.6915 -83.9601,1.9627 -73.1832,2.6885 24.4031,0.571 48.9992,1.2812 73.1832,-2.6885 z m -29.46,-2.63 c 23.3176,1.2531 42.8917,-9.3595 8.0067,-3.0391 -18.6514,-0.5321 -75.5433,1.2036 -25.9306,3.9947 5.985,-0.052 11.9667,-0.3816 17.9239,-0.9556 z m 28.35,-8.78 c -12.0725,-3.3498 -71.1738,3.0539 -72.2414,2.4235 23.9994,0.8781 48.5519,2.2153 72.2414,-2.4235 z m -20.94,-3.16 c 20.5582,1.4189 34.9689,-9.707 6.3823,-2.9322 -16.2165,-1.8606 -78.2026,2.7353 -33.194,4.0952 8.9483,0 17.8975,-0.3786 26.8117,-1.163 z m 20.31,-7.96 c -12.2783,-3.8247 -97.497,2.2336 -73.3287,2.586 24.3992,1.3902 49.1606,1.3811 73.3287,-2.586 z m -27.52,-2.63 c 16.9382,2.788 43.9885,-10.6102 11.7641,-3.2771 -20.1974,1.2279 -87.6715,1.5166 -31.5222,4.0606 6.5896,-0.1663 13.1727,-0.5095 19.7581,-0.7835 z m 18.77,-7.44 c 38.4511,-9.6323 -71.815,5.8787 -43.9896,1.3593 -49.6131,0.6132 21.4007,1.1085 35.8922,-0.583 z m 3.96,-6.11 c -13.5215,-4.3452 -55.8438,2.6791 -72.6831,1.5879 24.0798,1.53 48.8324,2.5081 72.6831,-1.5879 z m -20.03,-2.74 c 19.3616,2.283 38.1643,-12.2886 8.3718,-3.1173 -20.8575,0 -77.4448,3.0986 -26.3227,4.0809 5.9913,-0.1495 11.9774,-0.4817 17.9509,-0.9636 z m 20.95,-8.51 c -10.2869,-2.0352 -95.0332,5.7807 -39.7992,3.1305 13.3149,-0.063 26.6733,-0.7801 39.7992,-3.1305 z m -3.63,-4.58 c -8.1119,-13.9496 -63.6158,0.511 -64.8498,2.2437 21.583,0.3925 43.455,1.0186 64.8498,-2.2437 z m 3.06,-5.6 c -16.3227,-6.6411 -74.2856,3.0145 -62.563,2.6997 20.8651,1.7779 41.8895,0.3933 62.563,-2.6997 z m -29.31,-2.45 c 25.7232,1.2257 37.2914,-9.0034 4.8245,-4.253 -18.635,-1.8163 -57.4616,5.5132 -17.4965,4.8439 4.2253,-0.1684 8.4482,-0.3899 12.672,-0.5909 z m 19.93,-7.08 c -7.1181,-3.2808 -89.1666,2.7377 -42.1605,2.571 14.0838,0.2233 28.2295,-0.4024 42.1605,-2.571 z m 6.92,-6.05 c -17.9838,-3.9009 -86.2816,4.2258 -33.5225,2.5165 11.2046,-0.3375 22.3895,-1.218 33.5225,-2.5165 z m -4,-4.5 c -5.0895,-6.6769 -91.2179,2.9101 -36.5732,2.4324 12.1231,-0.4277 24.7697,0.7401 36.5732,-2.4324 z m 1.9,-5.67 c -17.1932,-9.6456 -90.5743,4.1565 -36.6578,2.5285 12.2564,0.1752 24.5763,-0.3307 36.6578,-2.5285 z m -8.91,-4.35 c -14.7162,-6.2287 -73.0664,1.7731 -27.5263,1.0403 9.1801,0.1233 18.4112,0.2658 27.5263,-1.0403 z m 20.06,-4.41 c -3.2871,-3.1711 -2.256,3.2659 0,0 z m -17.79,-1.81 c 3.1489,-7.3917 -78.853,2.201 -31.3807,1.0198 10.4515,0.5968 21.0368,0.9163 31.3807,-1.0198 z m -5.89,-5.01 c 16.3624,-11.6595 -86.291,-3.3749 -31.9204,0.095 10.5301,1.4896 21.4883,2.7439 31.9204,-0.095 z m -2.24,-6.19 c 34.3793,-10.2069 -85.2173,0.5028 -24.3158,0.8268 8.1027,-0.1686 16.2986,0.8405 24.3158,-0.8268 z m 13.5,-7.93 c -14.757,-8.3351 -77.7069,4.1111 -28.6414,2.1808 9.5722,-0.029 19.256,-0.016 28.6414,-2.1808 z m -8.59,-4.64 c -13.6222,-11.3328 -65.2271,2.9649 -21.1098,1.0943 7.049,0.084 14.115,-0.1752 21.1098,-1.0943 z m 7.59,-7.89 c -15.5389,-5.5185 -71.6481,4.229 -23.8299,2.4517 7.9874,-0.2243 15.982,-0.9042 23.8299,-2.4517 z m -5.26,-4.76 c -17.7659,-5.4129 -59.7034,3.2634 -18.661,1.8906 6.255,-0.187 12.4937,-0.8362 18.661,-1.8906 z m 8.2,-6.79 c -15.9781,-6.2185 -74.6889,2.9871 -25.1743,1.4939 8.4057,-0.1453 16.826,-0.4364 25.1743,-1.4939 z m -6.25,-5.62 c -15.8349,-8.1775 -52.3217,5.4969 -15.5984,1.554 l 7.8202,-0.5695 z m -52.31,-1.13 c -3.3142,-5.8803 -3.4668,6.3503 0,0 z m 51.05,-5 c -19.8718,-8.0924 -57.3649,5.8715 -15.7737,1.5424 5.2785,-0.2443 10.5594,-0.6563 15.7737,-1.5424 z m 0.73,-5.95 c -20.1606,-4.9966 -56.5031,3.4776 -16.4037,1.4241 5.4882,-0.1412 10.9868,-0.4861 16.4037,-1.4241 z m -1.79,-5.25 c -20.2088,-4.6707 -47.9204,3.4234 -11.9776,1.217 4.0239,-0.057 7.9876,-0.772 11.9776,-1.217 z m -1.47,-6.30002 c -18.5327,-5.8863 -52.013,3.83742 -14.1454,1.64042 4.7481,-0.1076 9.5275,-0.4551 14.1454,-1.64042 z m -1.78,-4.96 c -17.8418,-10.09209 -53.605,5.0799 -14.5424,0.9117 4.8572,-0.092 9.7152,-0.3497 14.5424,-0.9117 z m 2.63,-6.29 c -22.9998,-5.6065 -43.9613,3.8509 -9.8697,0.955 3.3023,-0.082 6.5797,-0.6735 9.8697,-0.955 z m -1.96,-6.12004 c -22.5708,-7.14686 -45.7356,4.59604 -10.6039,0.83147 3.5451,-0.041 7.0693,-0.58405 10.6039,-0.83147 z m 0.08,-6.38 c -38.1201,-3.84903 -32.4238,4.70847 0,0 z m -1.2,-5.95 c -23.8817,-5.63134 -35.6413,5.20497 -5.3572,0.86531 1.7857,-0.28844 3.5715,-0.57687 5.3572,-0.86531 z m -2.86,-4.79 c -18.3426,-8.78326 -38.5526,7.80893 0,0 z m 5.31,-6.68 c -36.5231,-2.90452 -31.0499,6.05991 0,0 z m -2.5,-5.06 c -17.0256,-5.72258 -40.8834,4.5691 -10.0505,1.05086 l 5.03,-0.46494 z m 2.17,-6.05 c -21.0451,-4.5382 -30.453,6.4005 -3.0167,0.49739 l 2.301,-0.37938 z m -2.17,-5.21 c -18.3405,-4.56607 -37.8631,3.34678 -8.2574,0.63932 z m 1.25,-5.95 c -21.3521,-6.72561 -46.2424,8.40272 0,0 z m 1.88,-5.43 c -15.6047,-6.39792 -47.2722,4.74873 -13.4464,1.38843 l 6.7393,-0.51554 z m -1.87,-4.87 c -17.991,-5.0203 -49.7345,4.67086 0,0 z m -7.5,-4.63 c -14.7004,-9.08857 -49.0959,6.55406 0,0 z m 10,-6.48 c -15.8611,-2.84003 -52.3013,2.39271 -15.6056,0.7428 l 7.8105,-0.21718 z m -1.3,-4.73 c -19.9455,-10.15094 -46.0376,5.60094 -10.6077,0.56679 3.5452,0.0351 7.0721,-0.37331 10.6077,-0.56679 z m -0.75,-4.96 c -19.3621,-10.73965 -54.4117,5.3294 -14.0521,0.59401 4.6883,-0.0529 9.3787,-0.19932 14.0521,-0.59401 z m 2.95,-6.26 c -19.0338,-10.10005 -61.8237,5.07685 -16.9943,1.20711 5.6793,-0.11533 11.3631,-0.43113 16.9943,-1.20711 z m 5.22,-6.54 c -19.7955,-4.35535 -62.4034,3.37908 -16.8474,1.65653 5.642,-0.1773 11.2964,-0.58094 16.8474,-1.65653 z m -4.87,-4.62 c -19.4492,-10.52768 -60.1675,4.65958 -15.3247,1.63937 5.1442,-0.0143 10.3077,-0.46086 15.3247,-1.63937 z m 1.64,-5.54 c -14.4104,-10.60425 -75.0078,1.52176 -28.4438,0.68246 9.4711,0.42797 19.0471,0.97174 28.4438,-0.68246 z m 11.94,-7.66 c -17.4936,-1.79472 -89.2007,-0.39404 -35.9921,2.23683 12.0281,-0.12788 24.0125,-1.25528 35.9921,-2.23683 z m -4.28,-4.9 c -17.8446,-1.71059 -90.9403,-1.84585 -37.1953,0.90254 12.3741,1.01469 24.9217,1.25707 37.1953,-0.90254 z m -4.07,-6.29 c -19.8222,-10.91262 -82.1529,2.08349 -26.4137,1.12321 8.8123,0.3051 17.6729,0.14789 26.4137,-1.12321 z m -2,-4.89 c -3.1149,-7.45795 -74.5808,-0.68938 -60.1296,-3.55793 19.6884,4.31675 40.0686,5.71342 60.1296,3.55793 z m 1.67,-5.64 c 8.2778,-8.45178 -47.3161,3.98535 -59.5722,-5.57821 -28.7585,2.12972 47.3821,10.45434 59.5722,5.57821 z m -9.67,-5.19 c -18.5339,-2.24134 -90.7249,-8.32658 -35.6936,-0.38593 11.8501,1.26332 23.8184,1.35839 35.6936,0.38593 z m 19.96,-1.19 c 24.0909,-8.41055 -31.4611,4.92055 0,0 z m 6.07,-6.79 c -22.2408,-0.23327 -99.284,-1.58698 -90.5917,-3.40401 29.5956,7.38262 60.4775,6.13219 90.5917,3.40401 z m 0.63,-6.17 c -28.7708,-1.69345 -66.429,0.42579 -90.1943,-3.20247 29.5297,6.92971 60.2061,5.8711 90.1943,3.20247 z m -12.13,-4.4 c 37.9884,-8.8088 -36.2295,2.39915 -48.7391,-3.36268 -55.3018,-1.96003 25.5699,8.87042 41.7275,4.10644 z m 17.13,-8.01 c -24.8092,-1.39506 -111.8449,1.36814 -97.1935,-1.12685 32.0053,6.07321 65.0385,6.08692 97.1935,1.12685 z m -3,-4.53 c 31.2361,-1.70759 14.2267,-19.73753 -6.6868,-6.50774 -23.1392,3.54257 -83.6543,-4.88525 -91.6872,-0.77649 36.7884,5.74636 74.0304,0.46615 111.014,2.14423 -32.7894,12.24638 -102.2358,0.25295 -113.3251,2.44921 33.0778,7.3055 67.1891,4.44237 100.6851,2.69079 z m 24.88,-5.58 c -2.6141,-5.48106 -2.8822,6.54568 0,0 z m -23.93,-6.37 c 22.905,0.009 44.8866,-13.06952 9.5124,-3.75146 -41.1172,6.12293 -82.5768,-0.35717 -123.8389,-0.48379 37.6225,7.23151 76.2596,7.35806 114.3265,4.23525 z m 11.43,-7.53 c 17.485,-7.3797 -41.6669,2.64109 -52.312,-0.22919 -30.2672,0.60688 -60.3604,-3.30323 -90.5527,-4.67456 46.9958,8.95171 95.3639,10.50814 142.8647,4.90375 z m -10.32,-4.85 c 15.5315,2.11412 60.8026,-11.88079 19.3285,-4.41862 -53.0685,5.72584 -106.618,2.7138 -159.5772,-2.69513 45.8934,11.05783 93.5023,8.29797 140.2487,7.11375 z m 42.71,-1.06 c -5.5046,-4.03593 -6.0257,5.61956 0,0 z m -32.39,-5.7 c 21.8253,0.31396 51.5979,-10.68622 13.4366,-3.71202 -58.9125,6.19566 -118.5617,4.68972 -177.1966,-3.56798 53.6099,12.48544 109.2275,11.04756 163.76,7.28 z m -16.87,-5.83 c 49.2732,-6.31066 -28.8788,1.51064 -43.2627,-0.33747 -17.3641,0.26005 -60.3513,-3.09858 -66.0653,-1.156 36.2166,5.35282 72.9241,2.7371 109.328,1.49347 z m 75.66,-3.42 c -5.0185,-0.18322 -1.2304,3.98023 0,0 z m -201.28,-0.24 c -5.996,-6.85224 -9.6171,6.50434 0,0 z m 180.12,-1.95 c 31.9114,-2.4208 -47.5688,8.80662 0,0 z m -69.49,0.67 c 20.0677,-2.09381 72.6391,-2.65923 74.4669,-9.433 -70.8573,11.56769 -143.3755,9.6817 -214.2969,-0.31825 45.6096,11.58896 93.1102,11.74389 139.83,9.75125 z m -124.44,-1.09 c -3.1193,-6.94767 -18.5197,0.67997 -5.9617,0.40137 z m 145.13,-5.17 c 17.5618,0.62044 96.6356,-14.54824 46.4596,-7.75582 -71.5003,9.74392 -144.4515,8.80698 -215.6696,-2.83418 55.223,13.61153 112.7322,15.06 169.21,10.59 z m 100.85,-17.15 c -14.8479,-6.52714 -3.5492,15.88533 0,0 z m -99.66,4.68 c 30.7421,-2.87871 86.5826,-8.73301 100.8217,-15.42062 -96.5805,17.91563 -197.2038,22.07996 -293.3729,-0.60813 62.0978,19.92325 128.1843,17.83636 192.5512,16.02875 z m -8.12,-6.29 c -20.6274,0.71774 -85.1559,-5.76332 -77.0576,0.64399 25.6792,1.04332 51.3888,0.3425 77.0576,-0.64399 z m -105.62,-2.4 c -15.4807,-2.87078 -76.4016,-10.54815 -32.9523,-2.8294 10.8843,1.70458 21.8786,3.79797 32.9523,2.8294 z m 155.63,-1.32 c 17.1466,-4.49608 65.5686,-6.94018 65.0189,-12.74142 -22.2032,5.99246 -88.1169,10.54857 -84.3409,14.7514 6.4677,-0.36102 12.9198,-1.02046 19.322,-2.00998 z m -74.37,0.03 c -12.3664,-8.67077 1.3826,5.75498 0,0 z m -152.49,-10.07 c -0.7516,-8.76054 -7.2868,10.08444 0,0 z m -31.24999,-4.83 c -5.08507,-8.18495 -0.72035,6.35486 0,0 z m 368.69999,-8.83 c -4.3131,-5.75685 -3.7151,9.13323 0,0 z M 987.17081,1586.6351 c 1.82108,-4.3013 0.11105,6.8388 0,0 z m -1.15,-5.52 c 1.09402,-5.7716 1.03363,5.835 0,0 z m -1.35,-5.73 c 1.82108,-4.3013 0.11105,6.8388 0,0 z m -1.25,-5 c 1.82108,-4.3013 0.11105,6.8388 0,0 z m 261.14999,-320.33 c 1.4573,-9.8036 7.099,-0.6189 0,0 z m -248.56999,-55.15 c 9.49129,-28.6025 -2.41272,17.812 0,0 z M 1196.8408,737.76504 c 4.7948,-5.24518 2.1825,3.52227 0,0 z m 22.44,-1.3 c 13.7984,-4.6846 5.122,3.13739 0,0 z m 17.5,-1.25 c 13.7984,-4.6846 5.122,3.13739 0,0 z m 170.4,-37.7 c 13.7521,-12.12396 8.9688,3.61262 0,0 z"
+ style="fill:#000000" />
+ <path
+ style="fill:#000000"
+ id="musclel"
+ d="m 929.79,1474.02 c -2.25,-0.84 -5.06,-2.52 -6.25,-3.74 -2.06,-2.1 -1.94,-2.17 2.53,-1.35 6.58,1.2 5.84,-0.26 -1.17,-2.3 -3.36,-0.98 -6.67,-2.93 -7.76,-4.57 -1.88,-2.83 -1.85,-2.85 2.42,-2.09 4.09,0.73 4.04,0.66 -0.99,-1.35 -4.61,-1.85 -6.89,-4.48 -7.13,-8.22 -0.03,-0.54 -0.63,-1.38 -1.32,-1.87 -0.69,-0.49 -3.57,-3.99 -6.4,-7.77 -7.55,-10.09 -13.97,-16.02 -34.84,-32.18 -21.26,-16.46 -44.51,-38.97 -54.56,-52.82 -3.74,-5.16 -9.02,-12.44 -11.73,-16.19 -2.71,-3.75 -4.23,-6.39 -3.38,-5.86 2.63,1.63 1.77,0.03 -5.25,-9.76 -3.74,-5.21 -8.64,-12.69 -10.89,-16.64 -2.25,-3.94 -8.36,-13.1 -13.57,-20.35 -5.21,-7.25 -14.19,-21.31 -19.95,-31.25 -5.76,-9.94 -13.38,-22.28 -16.94,-27.44 -7.82,-11.33 -18.54,-28.79 -24.84,-40.46 -2.55,-4.72 -5.39,-9.33 -6.31,-10.25 -2.02,-2.02 -23.71,-39.42 -34.39,-59.29 -10.69,-19.9 -24.06,-49.7 -29.24,-65.17 -5.54,-16.54 -6.28,-19.83 -4.46,-19.83 0.97,0 0.9,-0.64 -0.23,-2 -0.91,-1.1 -1.78,-2.65 -1.93,-3.44 -0.15,-0.79 -2.58,-12.12 -5.41,-25.19 -7.64,-35.3 -26.93,-150.38 -31.32,-186.87 -9.51,-79.04 -12,-93.97 -19.82,-119.01 -8.31,-26.59 -16.41,-44.09 -30.24,-65.28 -19.05,-29.2 -34.94,-47.85 -80.37,-94.3 -50.61,-51.75 -67,-70.6 -93.04,-106.99 C 347.59,397.46 327.8,362.36 288.81,284.39 241.98,190.73 227.32,167.16 176.88,104.42 158.65,81.74 135.22,59.19 119.5,49.21 99.94,36.78 65.88,22.02 56.78,22.02 c -3.13,0 -3.64,-0.44 -3.31,-2.81 0.24,-1.72 2.09,-3.69 4.77,-5.08 7.12,-3.69 27.22,-2.29 42.41,2.95 25.96,8.96 68.01,32.85 96.23,54.68 22.48,17.39 65.68,64.58 94.65,103.39 22.11,29.62 57.15,81.45 89.16,131.88 22,34.66 33.73,51.89 69.68,102.34 15.49,21.74 32.84,46.56 38.54,55.16 12.54,18.88 29.96,51.5 49.06,91.88 31.87,67.37 49.55,111.18 83.98,208.13 15.27,42.97 33.51,82.67 53.16,115.67 17.99,30.22 22.59,35.83 44.49,54.37 21.56,18.25 51.73,46.9 74.07,70.35 49.39,51.85 77.14,69.34 121.4,76.52 14.63,2.37 37.45,2.34 51.27,-0.06 30.34,-5.29 55.12,-23 67.27,-48.08 5.01,-10.34 5.17,-11.05 5.64,-25.64 0.54,-16.88 -1.04,-25.89 -7.34,-41.7 -5.54,-13.91 -11.86,-24.07 -32.39,-52.05 -27.01,-36.82 -32.07,-44.97 -44.97,-72.5 -6.44,-13.75 -14.62,-31.19 -18.17,-38.75 -8.51,-18.1 -18.3,-30.37 -31.34,-39.26 -19.09,-13 -15.6,-11.76 5.14,1.83 14.92,9.78 21.78,16.4 25.56,24.66 1.33,2.9 6.16,13.7 10.75,24.02 18.39,41.36 23.68,50.18 56.21,93.62 33.71,45.02 39.31,56.59 41.36,85.45 0.92,13.02 -1.23,33.55 -4.74,45.15 -2.08,6.87 -18.58,41.82 -20.73,43.9 -0.36,0.34 -0.27,-0.78 0.19,-2.5 1.7,-6.32 -5.23,6.38 -7.4,13.55 -2.41,7.98 -13.46,35.29 -14.04,34.71 -0.21,-0.21 1.08,-4.73 2.87,-10.05 1.79,-5.32 2.97,-9.94 2.64,-10.28 -1.03,-1.03 -5.84,13.11 -10.25,30.18 -3.69,14.25 -7.91,26.87 -8.05,24.05 -0.03,-0.53 1.12,-6.35 2.54,-12.93 1.43,-6.58 2.33,-12.23 2,-12.56 -0.91,-0.91 -5.56,14.25 -7.14,23.26 -0.78,4.44 -2.73,12.31 -4.33,17.5 -1.61,5.19 -3.91,13.09 -5.12,17.56 -2.13,7.89 -15.65,46.85 -18.01,51.88 -0.64,1.38 -3.15,10.37 -5.56,20 -12,47.79 -14.51,91.38 -7.48,129.83 0.99,5.4 1.8,14.7 1.8,20.66 0,5.96 0.53,15.32 1.18,20.8 2.22,18.72 2.94,32.22 1.69,31.45 -0.66,-0.41 -1.95,-8.22 -2.86,-17.36 -0.91,-9.14 -1.93,-15.83 -2.25,-14.86 -0.33,0.97 0.13,9.29 1.02,18.49 1,10.41 1.17,17.17 0.44,17.9 -1.97,1.97 -8.37,2.34 -12.68,0.73 z m -1.82,-45.53 c 0.58,-1.73 -4.22,-2.04 -5.27,-0.34 -0.75,1.21 1.62,2.6 3.61,2.11 0.64,-0.16 1.39,-0.95 1.67,-1.77 z m -60.96,-24.19 c -14.77,-13.49 -33.92,-33.12 -46.02,-47.17 -16.51,-19.17 -20.72,-23.78 -19.47,-21.38 0.54,1.03 3.54,5.04 6.67,8.91 3.13,3.87 9.53,11.85 14.21,17.75 7.74,9.74 24.08,25.74 42.08,41.21 8.43,7.24 10.23,7.73 2.52,0.69 z m 93.76,-181.67 c 1.56,-6.19 5.55,-19.94 8.88,-30.55 3.33,-10.62 5.84,-19.51 5.59,-19.77 -1.03,-1.03 -16.1,47.13 -18.09,57.79 -1.78,9.54 0.57,4.69 3.63,-7.47 z m -121.26,4.95 c 0,-5.48 1.27,-6.82 6.44,-6.82 8.68,0 13.86,-8.67 9.77,-16.33 -1.09,-2.04 -2.67,-2.42 -10,-2.42 -8.5,0 -10.03,0.68 -7.43,3.28 0.87,0.87 0.51,5.23 -1.12,13.69 -1.32,6.83 -2.12,12.86 -1.79,13.41 1.06,1.75 4.13,-1.82 4.13,-4.8 z m 3.66,-10.05 c -1.36,-1.64 -1.33,-2.87 0.16,-7.19 1.45,-4.21 2.46,-5.29 5.24,-5.61 3.22,-0.37 3.44,-0.09 3.44,4.41 0,8.1 -5.07,12.91 -8.84,8.38 z m 81.44,4.99 c 3.62,-3.86 2.49,-5.06 -1.67,-1.78 -5.03,3.96 -6.28,3.3 -5.28,-2.79 0.48,-2.92 1.63,-7.54 2.56,-10.27 1.88,-5.53 1.03,-6.86 -4.4,-6.9 -2.29,-0.01 -2.7,0.34 -1.64,1.41 0.97,0.97 1.19,4.82 0.68,11.99 -0.55,7.84 -0.34,10.82 0.84,11.55 2.31,1.43 5.7,0.21 8.91,-3.2 z m -158.45,-1.03 4.78,-2.94 -5.79,-6.52 c -3.18,-3.58 -5.61,-7.44 -5.39,-8.57 0.64,-3.31 4.46,-3.14 7.68,0.33 3.78,4.08 5.82,4.09 5.82,0.02 0,-2.46 -0.99,-3.6 -4.33,-5 -5.63,-2.35 -6.43,-2.29 -9.42,0.69 -3.61,3.61 -3.12,8.34 1.41,13.5 l 3.91,4.46 -2.94,2.38 c -2.93,2.37 -2.94,2.37 -4.02,-0.86 -1.2,-3.61 -5.48,-4.45 -6.69,-1.31 -1.05,2.75 3.13,6.84 6.95,6.79 1.78,-0.02 5.4,-1.36 8.02,-2.98 z m 57.19,-0.64 c 2.95,-2.95 3.65,-4.73 3.65,-9.24 0,-6.49 -3.06,-11.12 -7.61,-11.5 -3.15,-0.26 -3.35,-1.07 -1.88,-7.65 0.81,-3.64 0.61,-3.95 -2.92,-4.47 -4.57,-0.67 -8.04,0.93 -4.75,2.19 2.59,0.99 2.74,4.92 0.7,18.35 -1.84,12.11 -0.57,15.96 5.27,15.96 2.61,0 5.06,-1.19 7.53,-3.65 z m -9.68,-0.8 c -0.82,-2.14 0.26,-13.62 1.47,-15.57 0.41,-0.67 2.13,-1.22 3.81,-1.22 3.13,0 3.6,1.14 3.07,7.5 -0.69,8.31 -6.32,14.57 -8.34,9.29 z m -14.8,1.96 c 0.43,-0.69 -0.46,-1.25 -1.96,-1.25 -2.9,0 -2.93,-0.9 -0.38,-13.6 0.67,-3.32 0.47,-4.11 -0.9,-3.66 -2.16,0.71 -4.71,7.73 -4.81,13.2 -0.05,3.15 -0.61,4.06 -2.48,4.06 -1.88,0 -6.4,-2.97 -6.32,-4.15 0.01,-0.12 0.8,-3.17 1.76,-6.78 1.78,-6.69 1.31,-8.48 -1.72,-6.6 -2.25,1.39 -3.26,13.88 -1.4,17.35 1.24,2.31 2.53,2.68 9.44,2.68 4.4,0 8.35,-0.56 8.78,-1.25 z m 78.65,0.49 c 3.25,-1.25 2.25,-2.39 -2.09,-2.38 -3.6,0.01 -4.1,-0.41 -4.43,-3.74 l -0.37,-3.75 6.31,0.43 6.31,0.43 v -4.41 c 0,-7.48 -5.36,-10.52 -10.79,-6.12 -9.78,7.92 -5.7,23.66 5.06,19.53 z m -4.87,-12.94 c -1.13,-1.83 2.16,-6.3 4.64,-6.3 2.83,0 3.01,5.67 0.22,6.74 -2.77,1.06 -4.01,0.95 -4.87,-0.44 z m 22.41,8.25 c 0.3,-1.47 0.88,-4.76 1.29,-7.32 0.96,-6 2.63,-6.91 6.3,-3.45 3.37,3.16 6.85,2.57 6.85,-1.16 0,-3.43 -2.06,-4.39 -10,-4.64 -7.36,-0.24 -9.99,0.49 -7.44,2.07 1.25,0.77 1.28,2.48 0.13,8.18 -0.8,3.96 -1.45,7.93 -1.45,8.83 0,2.62 3.71,0.47 4.31,-2.49 z m 49.44,-8.3 c 0,-0.72 -3.98,-1.25 -9.45,-1.25 -5.98,0 -9.17,0.46 -8.68,1.25 0.42,0.69 4.68,1.25 9.45,1.25 4.95,0 8.68,-0.54 8.68,-1.25 z m -17.72,-22.92 c 0.27,-1.41 -0.44,-2.08 -2.19,-2.08 -1.43,0 -2.59,0.75 -2.59,1.67 0,3.83 4.05,4.18 4.78,0.42 z m -243.52,-46.77 c -7.67,-14.95 -14.53,-27.75 -15.23,-28.44 -1.43,-1.4 20.03,42.01 24.86,50.31 1.7,2.92 3.37,5.31 3.71,5.31 0.34,0 -5.67,-12.23 -13.34,-27.19 z m 145.65,4.17 c 1.83,-4.37 3.85,-16.98 2.73,-16.98 -0.38,0 -1.31,2.95 -2.09,6.55 -1.7,7.93 -4.31,12.2 -7.45,12.2 -3.21,0 -4.12,-3.09 -3.16,-10.77 0.7,-5.58 0.48,-6.69 -1.54,-7.76 -1.52,-0.82 -3.11,-0.83 -4.5,-0.05 -2.95,1.65 -2.72,3.5 0.34,2.7 2.34,-0.61 2.45,-0.19 1.83,6.68 -0.7,7.67 0.21,9.97 5.02,12.63 3.37,1.86 6.69,-0.09 8.82,-5.19 z m 26.11,4.76 c 3.07,-1.18 2.34,-2.78 -1.46,-3.22 l -3.44,-0.4 0.43,-9.68 c 0.36,-8.14 0.09,-9.81 -1.66,-10.48 -1.2,-0.46 -2.96,0.07 -4.13,1.25 -1.89,1.89 -1.89,2.05 0.03,2.05 1.76,0 2.03,1.35 1.83,8.84 -0.2,7.48 0.13,9.12 2.19,10.63 2.72,2 3.4,2.11 6.22,1.02 z m -66.6,-2.46 c 3.46,-1.79 4,-1.79 5.97,0 2.88,2.6 4.25,2.48 7.06,-0.63 2.33,-2.58 2.32,-2.59 -1.25,-1.69 l -3.6,0.9 0.84,-6.75 c 0.46,-3.71 1.18,-8.59 1.59,-10.83 0.73,-4 0.68,-4.06 -2.6,-2.81 -1.84,0.7 -4.93,1.27 -6.85,1.27 -4.93,0 -9.38,3.96 -11.17,9.94 -1.55,5.17 -1.3,6.43 2.09,10.37 2.31,2.68 3.11,2.71 7.92,0.22 z m -5.97,-3.66 c -1.84,-4.79 3.84,-14.37 8.52,-14.37 4.57,0 1.6,13.56 -3.4,15.47 -3.13,1.2 -4.33,0.94 -5.12,-1.1 z m 87.57,3.62 c 3.34,-1.28 2.19,-2.59 -1.76,-2.01 -4.99,0.73 -5.73,-1.61 -3.25,-10.17 2.35,-8.08 2.37,-8.31 0.67,-8.31 -1.99,0 -4.94,8.05 -4.94,13.46 0,6.81 3.31,9.32 9.27,7.03 z m 18.67,-8.72 c 2.52,-9.4 3.41,-10.48 8.65,-10.51 4.69,-0.03 5.39,2.53 3.03,11.01 -1.08,3.88 -1.76,7.27 -1.51,7.52 1.29,1.29 3.3,-1.89 5.09,-8.04 1.83,-6.3 1.83,-7.12 -0.01,-9.94 -2.14,-3.27 -5.57,-3.89 -9.58,-1.75 -1.76,0.94 -3.65,0.89 -6.64,-0.19 -2.55,-0.92 -5.09,-1.09 -6.52,-0.44 -1.96,0.89 -1.67,1.15 1.72,1.52 4.75,0.53 5.22,2.96 2.19,11.54 -2.28,6.48 -2.38,9.13 -0.31,8.44 0.86,-0.28 2.61,-4.41 3.88,-9.17 z m -124.28,4.59 c 3.88,-5.45 3.11,-7.5 -1.09,-2.9 -4.17,4.56 -5.77,4.91 -9.03,1.96 -4.93,-4.46 -1.27,-23.21 5.21,-26.68 3.89,-2.08 6.03,-0.77 8.63,5.28 l 2.29,5.34 1.41,-5 c 2.53,-8.97 2.28,-9.37 -5.66,-9.37 -6.75,0 -7.34,0.26 -12.37,5.51 -5.72,5.97 -7.7,12.36 -6.13,19.77 2.05,9.67 11.71,13.18 16.76,6.08 z m 158.99,1.55 c 1.55,-1.88 1.37,-2 -1.87,-1.19 l -3.59,0.89 0.83,-5.56 c 1.52,-10.13 -2.27,-16.4 -8.03,-13.32 -3.51,1.88 -3.11,3.23 0.94,3.17 3.39,-0.05 3.44,0.05 3.52,8.08 0.05,4.47 0.19,8.55 0.31,9.06 0.43,1.77 6.17,0.94 7.89,-1.14 z M 660.75,1096 c 0,-0.56 -0.85,-2.1 -1.9,-3.44 -1.76,-2.25 -1.79,-2.18 -0.42,1.01 1.47,3.44 2.32,4.33 2.32,2.43 z m -8.54,-18.3 c -3.88,-8.29 -6.7,-11.6 -3.52,-4.12 3.4,7.99 6.26,13.4 6.8,12.86 0.3,-0.3 -1.18,-4.23 -3.28,-8.73 z m 115.2,0.03 c 0.88,-2.29 -2.32,-5.19 -3.54,-3.22 -1.03,1.67 0.1,5 1.7,5 0.64,0 1.46,-0.8 1.84,-1.78 z M 643.88,1058.6 c -1.22,-3.28 -2.78,-6.53 -3.46,-7.22 -0.83,-0.83 -1.09,-0.82 -0.77,0.04 3.82,10.47 5.41,14.19 5.89,13.71 0.31,-0.31 -0.43,-3.25 -1.65,-6.53 z m -7.52,-19.09 c -0.47,-1.48 -1.13,-2.41 -1.48,-2.06 -0.34,0.34 -0.24,1.83 0.23,3.31 0.47,1.48 1.13,2.41 1.48,2.06 0.34,-0.34 0.24,-1.83 -0.23,-3.31 z m 22.5,-46.25 c -0.42,-0.69 -1.3,-1.25 -1.95,-1.25 -0.65,0 -1.18,0.56 -1.18,1.25 0,0.69 0.88,1.25 1.95,1.25 1.07,0 1.6,-0.56 1.18,-1.25 z m -11.25,-52.5 c 0.42,-0.69 0.18,-1.25 -0.55,-1.25 -0.73,0 -1.32,0.56 -1.32,1.25 0,0.69 0.25,1.25 0.55,1.25 0.3,0 0.9,-0.56 1.32,-1.25 z M 543.4,612.42 c -1.47,-2.53 -1.83,-1.72 -0.62,1.42 0.43,1.12 1.04,1.77 1.36,1.45 0.32,-0.32 -0.01,-1.61 -0.74,-2.87 z m 7.35,-3.46 c 0,-0.3 -0.56,-0.9 -1.25,-1.32 -0.69,-0.42 -1.25,-0.18 -1.25,0.55 0,0.73 0.56,1.32 1.25,1.32 0.69,0 1.25,-0.25 1.25,-0.55 z m -30,-26.17 c 0,-0.26 -0.86,-1.18 -1.9,-2.05 -1.59,-1.32 -1.77,-1.24 -1.12,0.47 0.67,1.75 3.02,2.98 3.02,1.58 z m -3.6,-19.12 c -1.47,-2.53 -1.83,-1.72 -0.62,1.42 0.43,1.12 1.04,1.77 1.36,1.45 0.32,-0.32 -0.01,-1.61 -0.74,-2.87 z m -17.58,-3.25 c -1.6,-1.53 -2.47,-1.93 -1.92,-0.9 1.74,3.29 3.44,5.08 4.15,4.37 0.38,-0.38 -0.62,-1.94 -2.23,-3.47 z m 5.62,-4.1 c -1.18,-1.8 -2.43,-2.99 -2.77,-2.65 -0.34,0.34 0.34,2.1 1.52,3.9 1.18,1.8 2.43,2.99 2.77,2.65 0.34,-0.34 -0.34,-2.1 -1.52,-3.9 z m 6.84,-0.49 c -0.72,-1.34 -1.95,-2.83 -2.74,-3.32 -0.96,-0.59 -1.1,-0.31 -0.42,0.87 2.68,4.65 5.51,6.84 3.16,2.45 z m 1.44,-9.09 c -0.9,-0.9 -1.48,-0.97 -1.48,-0.19 0,0.71 0.38,1.67 0.83,2.13 0.46,0.46 1.12,0.54 1.48,0.19 0.36,-0.36 -0.02,-1.31 -0.83,-2.12 z m -17.64,-2.58 -2.89,-2.78 2.19,3.48 c 1.21,1.91 2.51,3.16 2.89,2.78 0.38,-0.38 -0.6,-1.95 -2.19,-3.48 z m 10.04,-8.82 c -1.46,-2.37 -3.59,-5.07 -4.72,-6 -1.88,-1.55 -1.92,-1.43 -0.44,1.34 0.89,1.68 2.67,4.17 3.95,5.55 1.28,1.38 2.33,3.05 2.33,3.72 0,0.67 0.35,0.88 0.77,0.46 0.42,-0.42 -0.43,-2.7 -1.89,-5.07 z m -9.39,-1.42 c -4.54,-5.95 -5.31,-5.62 -1.04,0.45 1.88,2.67 3.64,4.66 3.91,4.41 0.27,-0.25 -1.03,-2.44 -2.88,-4.86 z m -21.99,1.47 c 0,-0.2 -2.39,-2.59 -5.31,-5.31 l -5.31,-4.94 4.94,5.31 c 4.6,4.94 5.68,5.89 5.68,4.94 z m 9.32,-6.82 c -5.38,-7.25 -11.11,-14.21 -16.2,-19.69 l -4.65,-5 4.27,5.63 c 8.23,10.83 18.79,23.75 19.42,23.75 0.35,0 -0.93,-2.11 -2.85,-4.69 z m -18.03,-12.74 c -0.72,-1.34 -1.95,-2.83 -2.74,-3.32 -0.96,-0.59 -1.1,-0.31 -0.42,0.87 2.68,4.65 5.51,6.84 3.16,2.45 z m -16.13,-10.4 c -1.23,-1.23 -1.38,-1.08 -0.7,0.7 0.47,1.23 1.17,1.93 1.55,1.54 0.38,-0.38 0,-1.39 -0.85,-2.24 z m 22.5,-3.23 c -6.48,-7.74 -10.91,-11.34 -5.13,-4.16 2.39,2.97 5.19,6.46 6.23,7.77 1.03,1.3 2.35,2.39 2.93,2.41 0.58,0.03 -1.23,-2.68 -4.02,-6.02 z M 457,505.36 c 0,-0.22 -1.55,-1.77 -3.44,-3.44 l -3.44,-3.03 3.03,3.44 c 2.83,3.21 3.84,4.01 3.84,3.03 z m 2.61,-6.88 c -1.46,-2.72 -5.11,-5.95 -5.11,-4.51 0,1 5.02,6.8 5.89,6.8 0.25,0 -0.1,-1.03 -0.77,-2.29 z m 22.84,-5.83 c -0.4,-1.03 -1.29,-1.87 -1.99,-1.87 -0.73,0 -0.61,0.79 0.29,1.88 0.86,1.03 1.75,1.88 1.99,1.88 0.24,0 0.11,-0.84 -0.29,-1.87 z m -41.06,-5.94 c -1.81,-2.23 -8.88,-11.2 -15.71,-19.93 -11.06,-14.12 -17.33,-21.09 -14.29,-15.89 2.12,3.63 17.61,23.32 24.72,31.44 7.61,8.68 11.13,11.6 5.28,4.38 z m -15.6,-9.64 c -7.57,-8.74 -9.51,-9.95 -3.57,-2.23 6.21,8.07 8.9,10.99 9.53,10.35 0.32,-0.32 -2.37,-3.97 -5.96,-8.12 z m 63.09,2.45 c -0.42,-0.69 -1.33,-1.25 -2.02,-1.25 -0.69,0 -0.9,0.56 -0.48,1.25 0.42,0.69 1.34,1.25 2.02,1.25 0.69,0 0.9,-0.56 0.48,-1.25 z m -39.22,-5.94 c -0.65,-1.2 -3.06,-4.19 -5.36,-6.64 -4.32,-4.61 -3.97,-3.85 1.89,4.14 3.58,4.89 5.51,6.28 3.46,2.5 z m 22.35,-6.99 c 0,-0.24 -1.27,-1.5 -2.81,-2.81 l -2.81,-2.38 2.38,2.81 c 2.24,2.64 3.24,3.38 3.24,2.38 z m -58.59,-4.9 c -1.23,-1.23 -1.38,-1.08 -0.7,0.7 0.47,1.23 1.17,1.93 1.55,1.54 0.38,-0.38 0,-1.39 -0.85,-2.24 z m 15.06,-3.01 c -0.68,-1.27 -2.51,-3.43 -4.07,-4.79 -2.98,-2.62 -2.52,-1.3 1.69,4.77 2.63,3.79 4.4,3.8 2.38,0.02 z m 17.71,-2.33 c -0.41,-1.06 -1.01,-1.66 -1.34,-1.33 -0.33,0.33 -0.22,1.2 0.23,1.93 1.23,1.99 1.95,1.61 1.11,-0.6 z m 8.32,-0.57 c -0.74,-1.37 -1.62,-2.5 -1.96,-2.5 -0.34,0 -0.02,1.13 0.71,2.5 0.74,1.38 1.62,2.5 1.96,2.5 0.34,0 0.02,-1.12 -0.71,-2.5 z m -20.03,-1.91 c -0.87,-1.05 -1.84,-1.65 -2.15,-1.33 -0.87,0.87 0.89,3.24 2.41,3.24 0.83,0 0.73,-0.72 -0.25,-1.91 z m -35.01,-11.12 c -5.65,-7.48 -7.53,-9.13 -4.01,-3.51 3.62,5.78 8.21,11.54 8.76,11 0.28,-0.28 -1.85,-3.65 -4.75,-7.48 z m 60.04,7.56 c 0,-0.26 -0.98,-1.24 -2.19,-2.19 -1.98,-1.55 -2.03,-1.51 -0.47,0.47 1.63,2.08 2.66,2.74 2.66,1.72 z m -53.66,-9.15 c -1.48,-1.92 -3.83,-4.91 -5.22,-6.62 l -2.52,-3.12 1.52,3.13 c 2.12,4.38 7.6,11.44 8.32,10.72 0.33,-0.33 -0.62,-2.17 -2.1,-4.1 z m 12.41,4.19 c 0,-0.24 -1.27,-1.5 -2.81,-2.81 l -2.81,-2.38 2.38,2.81 c 2.24,2.64 3.24,3.38 3.24,2.38 z m 7.79,-15.53 c -16.83,-22.69 -25.73,-34.01 -26.29,-33.45 -1.07,1.07 34.94,48.16 36.82,48.16 0.21,0 -4.53,-6.62 -10.53,-14.71 z m -1.16,11.84 c -0.55,-0.89 -6.06,-8.25 -12.25,-16.34 -6.19,-8.09 -14.52,-19.31 -18.51,-24.94 -8.29,-11.67 -11.39,-15.06 -7.07,-7.72 3.95,6.72 14.32,20.88 27.24,37.19 9.59,12.11 13.36,16.32 10.59,11.81 z m -17.35,-9.45 c -2.35,-3.98 -11.25,-14.39 -9.77,-11.42 1.1,2.2 10.9,15 11.48,15 0.22,0 -0.55,-1.61 -1.71,-3.58 z m 28.94,-1.14 c -2.16,-2.06 -2.19,-2.03 -0.76,0.76 0.82,1.61 1.84,2.58 2.26,2.16 0.42,-0.42 -0.25,-1.73 -1.5,-2.92 z m -46.97,-2 c 0,-0.26 -0.86,-1.18 -1.9,-2.05 -1.59,-1.32 -1.77,-1.24 -1.12,0.47 0.67,1.75 3.02,2.98 3.02,1.58 z m 52.56,-2.97 c -1.7,-2.91 -7.91,-10.03 -7.37,-8.44 0.86,2.5 6.71,10.59 7.66,10.61 0.54,0.01 0.41,-0.97 -0.3,-2.17 z m -52.71,-7.67 c -2.27,-3.46 -4.33,-6.09 -4.58,-5.84 -0.25,0.25 1.41,3.28 3.69,6.72 2.28,3.45 4.34,6.08 4.58,5.84 0.24,-0.24 -1.43,-3.26 -3.69,-6.72 z m 41.56,5.15 c -0.65,-1.21 -2.45,-3.32 -4.01,-4.69 -3.26,-2.86 -2.13,-0.24 1.75,4.08 3.04,3.38 3.85,3.6 2.26,0.61 z m -51.37,-8.98 c -0.72,-1.34 -1.95,-2.83 -2.74,-3.32 -0.96,-0.59 -1.1,-0.31 -0.42,0.87 2.68,4.65 5.51,6.84 3.16,2.45 z m 11.37,-5.4 c -1.23,-1.23 -1.38,-1.08 -0.7,0.7 0.47,1.23 1.17,1.93 1.55,1.54 0.38,-0.38 0,-1.39 -0.85,-2.24 z m 26.67,-3.1 c -5.32,-8.25 -23.62,-32.68 -24.12,-32.19 -0.3,0.3 0.46,2.11 1.7,4.02 4.45,6.9 23.1,31.6 23.86,31.6 0.43,0 -0.22,-1.55 -1.44,-3.44 z m -39.84,-4.88 c -1.78,-2.62 -3.24,-4.38 -3.24,-3.92 0,1.53 5.3,9.86 5.89,9.26 0.32,-0.32 -0.88,-2.72 -2.65,-5.34 z m 51.76,-3.36 c 0,-0.24 -1.27,-1.5 -2.81,-2.81 l -2.81,-2.38 2.38,2.81 c 2.24,2.64 3.24,3.38 3.24,2.38 z m -11.99,-3.51 c -1.43,-2.32 -14.43,-20.37 -15.16,-21.06 -0.37,-0.34 0.19,1.06 1.24,3.13 2.29,4.5 13.12,19.38 14.11,19.38 0.39,0 0.3,-0.65 -0.19,-1.44 z m -46.76,-4.81 c -0.74,-1.37 -1.89,-2.5 -2.55,-2.5 -0.67,0 -0.52,1.12 0.34,2.5 0.86,1.38 2.01,2.5 2.55,2.5 0.55,0 0.39,-1.12 -0.34,-2.5 z m 23.08,-3.44 c -1.88,-3.27 -4.64,-7.34 -6.15,-9.06 -2.4,-2.73 -26.47,-39.8 -34.31,-52.81 -4.82,-8.01 -4.34,-5.14 0.63,3.75 4.71,8.42 33.23,52.31 39,60 4.39,5.86 4.77,5 0.83,-1.87 z m -18.08,-0.86 c 0,-0.3 -0.56,-0.9 -1.25,-1.32 -0.69,-0.42 -1.25,-0.18 -1.25,0.55 0,0.73 0.56,1.32 1.25,1.32 0.69,0 1.25,-0.25 1.25,-0.55 z m 6.25,-2.57 c -0.88,-1.06 -1.89,-1.65 -2.23,-1.31 -0.34,0.34 0.1,1.5 0.98,2.56 0.88,1.06 1.89,1.65 2.23,1.31 0.34,-0.34 -0.1,-1.5 -0.98,-2.56 z m 31.15,-6.87 c -5.8,-8.27 -11,-13.46 -6.89,-6.88 2.92,4.68 10.7,14.38 11.53,14.38 0.34,0 -1.74,-3.37 -4.64,-7.49 z m 0.17,-9.1 c -1.6,-1.53 -2.47,-1.93 -1.92,-0.9 1.74,3.29 3.44,5.08 4.15,4.37 0.38,-0.38 -0.62,-1.94 -2.23,-3.47 z m -57.57,0.35 c -0.74,-1.37 -1.62,-2.5 -1.96,-2.5 -0.34,0 -0.02,1.13 0.71,2.5 0.74,1.38 1.62,2.5 1.96,2.5 0.34,0 0.02,-1.12 -0.71,-2.5 z m 16.29,0.07 c -0.72,-1.34 -1.95,-2.83 -2.74,-3.32 -0.96,-0.59 -1.1,-0.31 -0.42,0.87 2.68,4.65 5.51,6.84 3.16,2.45 z m 9.9,-12.5 c -5.1,-7.51 -9.45,-13.47 -9.66,-13.25 -0.22,0.22 3.64,6.67 8.58,14.34 4.94,7.67 9.28,13.63 9.66,13.25 0.38,-0.38 -3.48,-6.83 -8.58,-14.34 z m 13.25,7.01 c -1.81,-3.09 -4.17,-6.34 -5.23,-7.23 -1.07,-0.89 0.22,1.81 2.87,5.99 5.52,8.72 7.29,9.65 2.37,1.24 z m -33.24,2.81 c -0.77,-1.43 -1.71,-2.29 -2.1,-1.91 -0.39,0.39 0.01,1.56 0.88,2.61 2.25,2.71 2.86,2.36 1.22,-0.7 z m -12.29,-7.73 c -1.23,-1.23 -1.38,-1.08 -0.7,0.7 0.47,1.23 1.17,1.93 1.55,1.54 0.38,-0.38 0,-1.39 -0.85,-2.24 z m 49.98,0.65 c -1.98,-3.6 -7.63,-10.87 -7.63,-9.82 0,1.06 7.64,12.01 8.38,12.01 0.25,0 -0.08,-0.98 -0.75,-2.19 z m -35.94,-2.77 c -1.21,-2.04 -2.44,-3.47 -2.74,-3.16 -0.63,0.63 3.25,6.88 4.27,6.88 0.37,0 -0.32,-1.67 -1.53,-3.71 z m 42.28,0.94 c -0.9,-0.9 -1.48,-0.97 -1.48,-0.19 0,0.71 0.38,1.67 0.83,2.13 0.46,0.46 1.12,0.54 1.48,0.19 0.36,-0.36 -0.02,-1.31 -0.83,-2.12 z m -53.31,-5.9 c -1.04,-2.02 -2.47,-4.02 -3.16,-4.45 -0.69,-0.43 -0.08,1.22 1.36,3.67 3.17,5.37 4.46,5.93 1.79,0.78 z m 50.53,1.06 c -0.77,-1.43 -1.71,-2.29 -2.1,-1.91 -0.39,0.39 0.01,1.56 0.88,2.61 2.25,2.71 2.86,2.36 1.22,-0.7 z m -50.87,-15.12 c -12.57,-19.72 -13.08,-20.47 -12.28,-18.04 0.76,2.34 14.87,26.17 17.31,29.23 0.7,0.88 1.52,1.34 1.83,1.02 0.31,-0.31 -2.77,-5.81 -6.86,-12.22 z m 28.47,4.04 c -0.72,-1.34 -1.92,-2.81 -2.67,-3.28 -0.76,-0.47 -0.41,0.63 0.78,2.43 2.5,3.82 3.8,4.4 1.9,0.85 z m -13.79,-7.57 c -1.47,-2.06 -2.93,-3.75 -3.24,-3.75 -0.31,0 0.3,1.69 1.37,3.75 1.07,2.06 2.53,3.75 3.24,3.75 0.72,0 0.1,-1.69 -1.37,-3.75 z m -36.15,-7.7 c -2.11,-3.67 -3.84,-5.89 -3.84,-4.94 -0.01,1.9 6.51,12.77 7.23,12.05 0.24,-0.24 -1.28,-3.45 -3.39,-7.12 z m 43.65,5.33 c 0,-0.61 -1.15,-2.44 -2.56,-4.06 l -2.56,-2.95 1.97,4.06 c 1.94,4 3.15,5.14 3.15,2.95 z m -35.8,-4.51 c -0.4,-1.03 -1.2,-1.87 -1.8,-1.87 -0.59,0 -0.75,0.84 -0.36,1.88 0.4,1.03 1.2,1.88 1.8,1.88 0.59,0 0.75,-0.84 0.36,-1.87 z m 18.95,-7.81 c -1.79,-3.27 -4.39,-7.34 -5.78,-9.06 l -2.53,-3.12 2.14,4.38 c 2.47,5.05 8.09,13.75 8.88,13.75 0.3,0 -0.93,-2.67 -2.71,-5.94 z m 18.09,2.89 c 0,-0.3 -0.56,-0.9 -1.25,-1.32 -0.69,-0.42 -1.25,-0.18 -1.25,0.55 0,0.73 0.56,1.32 1.25,1.32 0.69,0 1.25,-0.25 1.25,-0.55 z m -10.74,-5.07 c -1.13,-1.72 -2.3,-3.12 -2.6,-3.12 -0.61,0 0.57,2.26 2.44,4.69 2.15,2.78 2.27,1.65 0.16,-1.56 z m -16.76,0.63 c 0,-0.69 -0.6,-1.25 -1.32,-1.25 -0.73,0 -0.98,0.56 -0.55,1.25 0.42,0.69 1.02,1.25 1.32,1.25 0.3,0 0.55,-0.56 0.55,-1.25 z m 23.75,-1.72 c 0,-0.26 -0.98,-1.24 -2.19,-2.19 -1.98,-1.55 -2.03,-1.51 -0.47,0.47 1.63,2.08 2.66,2.74 2.66,1.72 z m -11.25,-5.78 c 0,-0.69 -0.6,-1.25 -1.32,-1.25 -0.73,0 -0.98,0.56 -0.55,1.25 0.42,0.69 1.02,1.25 1.32,1.25 0.3,0 0.55,-0.56 0.55,-1.25 z m -21.25,-7.5 c -0.8,-1.49 -1.73,-2.43 -2.08,-2.09 -0.34,0.34 0.03,1.85 0.83,3.34 0.8,1.49 1.73,2.43 2.08,2.09 0.34,-0.34 -0.03,-1.85 -0.83,-3.34 z m -12.95,-8.39 c -3.17,-5.36 -5.77,-9.2 -5.78,-8.55 -0.03,1.75 10.32,19.52 10.98,18.86 0.31,-0.31 -2.03,-4.95 -5.2,-10.3 z m -10.65,-5.7 c -1.23,-1.23 -1.38,-1.08 -0.7,0.7 0.47,1.23 1.17,1.93 1.55,1.54 0.38,-0.38 0,-1.39 -0.85,-2.24 z m 22.57,-13.69 c -0.9,-0.9 -1.48,-0.97 -1.48,-0.19 0,0.71 0.38,1.67 0.83,2.13 0.46,0.46 1.12,0.54 1.48,0.19 0.36,-0.36 -0.02,-1.31 -0.83,-2.12 z m 8.52,1.52 c 0,-0.69 -0.6,-1.25 -1.32,-1.25 -0.73,0 -0.98,0.56 -0.55,1.25 0.42,0.69 1.02,1.25 1.32,1.25 0.3,0 0.55,-0.56 0.55,-1.25 z m -33.75,-4.76 c 0,-0.56 -0.85,-2.1 -1.9,-3.44 -1.76,-2.25 -1.79,-2.18 -0.42,1.01 1.47,3.44 2.32,4.33 2.32,2.43 z m 27.5,-5.71 c 0,-0.26 -0.86,-1.18 -1.9,-2.05 -1.59,-1.32 -1.77,-1.24 -1.12,0.47 0.67,1.75 3.02,2.98 3.02,1.58 z m -53.81,-7.14 c -0.77,-1.43 -1.71,-2.29 -2.1,-1.91 -0.39,0.39 0.01,1.56 0.88,2.61 2.25,2.71 2.86,2.36 1.22,-0.7 z m 28.96,-8.98 c -1.23,-1.23 -1.38,-1.08 -0.7,0.7 0.47,1.23 1.17,1.93 1.55,1.54 0.38,-0.38 0,-1.39 -0.85,-2.24 z m -8.4,-1.54 c -1.13,-1.72 -2.3,-3.12 -2.6,-3.12 -0.61,0 0.57,2.26 2.44,4.69 2.15,2.78 2.27,1.65 0.16,-1.56 z m -14.49,-1.26 c -0.78,-1.72 -1.66,-2.89 -1.95,-2.61 -0.58,0.58 1.95,5.74 2.82,5.74 0.3,0 -0.09,-1.41 -0.87,-3.13 z m -8.07,-23.08 c -1.21,-2.04 -2.44,-3.47 -2.74,-3.16 -0.63,0.63 3.25,6.88 4.27,6.88 0.37,0 -0.32,-1.67 -1.53,-3.71 z m -29.82,-23.79 c 0.42,-0.69 0.18,-1.25 -0.55,-1.25 -0.73,0 -1.32,0.56 -1.32,1.25 0,0.69 0.25,1.25 0.55,1.25 0.3,0 0.9,-0.56 1.32,-1.25 z m -4.37,-8.05 c 0,-0.3 -0.56,-0.9 -1.25,-1.32 -0.69,-0.42 -1.25,-0.18 -1.25,0.55 0,0.73 0.56,1.32 1.25,1.32 0.69,0 1.25,-0.25 1.25,-0.55 z m 13.22,-41.29 c -5.6,-6.83 -7.4,-7.52 -2.53,-0.97 5.71,7.69 5.9,7.9 6.55,7.25 0.34,-0.34 -1.46,-3.17 -4.01,-6.28 z m -39.24,-0.93 c -0.9,-0.9 -1.48,-0.97 -1.48,-0.19 0,1.67 1.48,3.15 2.31,2.31 0.36,-0.36 -0.02,-1.31 -0.83,-2.12 z m 18.46,-6.09 c -0.77,-1.43 -1.71,-2.29 -2.1,-1.91 -0.39,0.39 0.01,1.56 0.88,2.61 2.25,2.71 2.86,2.36 1.22,-0.7 z m -22.44,-26.61 c 0,-0.26 -0.98,-1.24 -2.19,-2.19 -1.98,-1.55 -2.03,-1.51 -0.47,0.47 1.63,2.08 2.66,2.74 2.66,1.72 z m -15,-8.69 c 0,-0.22 -1.48,-1.77 -3.29,-3.44 -3.08,-2.84 -3.2,-2.86 -1.89,-0.33 1.17,2.25 2.42,3.3 4.87,4.07 0.17,0.05 0.31,-0.08 0.31,-0.31 z M 172,74.1 c 0,-0.24 -1.27,-1.5 -2.81,-2.81 l -2.81,-2.38 2.38,2.81 C 171,74.36 172,75.1 172,74.1 Z m 11.25,-5.04 c 0,-0.26 -0.98,-1.24 -2.19,-2.19 -1.98,-1.55 -2.03,-1.51 -0.47,0.47 1.63,2.08 2.66,2.74 2.66,1.72 z M 129.69,48.11 c -2.92,-2.15 -5.61,-3.59 -5.99,-3.22 -0.74,0.74 8.14,6.92 10.11,7.04 0.65,0.04 -1.2,-1.68 -4.12,-3.83 z M 162,51.52 c 0,-0.27 -0.87,-0.83 -1.94,-1.24 -1.11,-0.43 -1.61,-0.22 -1.18,0.49 0.73,1.19 3.12,1.76 3.12,0.74 z M 122.83,37.49 c -1.95,-1.06 -3.86,-1.61 -4.24,-1.23 -0.38,0.38 0.65,1.23 2.3,1.89 4.68,1.87 5.87,1.46 1.95,-0.67 z M 65.93,18.22 c -1.62,-1.35 -3.59,-2.44 -4.37,-2.42 -0.78,0.02 -0.1,1.15 1.53,2.5 1.62,1.35 3.59,2.44 4.38,2.42 0.78,-0.02 0.1,-1.15 -1.53,-2.5 z M 1046,1003.89 c 0.05,-12.79 0.34,-15.99 1.07,-11.87 1.33,7.45 1.29,23.73 -0.06,26.87 -0.66,1.54 -1.05,-4.2 -1.01,-15 z M 870.44,742.55 c -4.67,-2.54 -4.39,-3.59 0.31,-1.16 2.06,1.07 3.75,2.21 3.75,2.53 0,0.8 -0.13,0.76 -4.06,-1.37 z m -19.69,-10.54 c -2.41,-1.32 -3.93,-2.42 -3.38,-2.45 1.32,-0.07 8.38,3.6 8.38,4.35 0,0.82 -0.07,0.79 -5,-1.91 z m -14.06,-6.96 c -3.27,-1.7 -5.94,-3.37 -5.94,-3.71 0,-0.34 2.81,0.8 6.25,2.55 3.44,1.74 6.25,3.44 6.25,3.77 0,0.83 0.11,0.87 -6.56,-2.6 z m -17.89,-9.99 c -2.33,-1.87 -2.31,-1.89 0.39,-0.58 1.55,0.75 2.81,1.62 2.81,1.94 0,0.96 -0.65,0.68 -3.2,-1.36 z m -6.25,-3.75 c -2.33,-1.87 -2.31,-1.89 0.39,-0.58 1.55,0.75 2.81,1.62 2.81,1.94 0,0.96 -0.65,0.68 -3.2,-1.36 z" />
+ <path
+ style="fill:#000000"
+ id="wingl"
+ d="m 539.05,1564.3 c -57.88,-43.38 -74.16,-119.97 -99.06,-184.28 -16.78,-56.83 -0.05,-135.91 -58.82,-170.76 -54.63,-41.66 -1.28,-74.01 39.48,-88.39 55.55,-29.43 43.96,-110.6 97.33,-135.37 8.24,-70.34 -74.88,-76.83 -92.9,-138.25 -34.72,-55.05 -110.72,-54.77 -162.82,-27.04 -38.71,28.43 -74.9,-31.79 -47.52,-61.45 35.83,-64.22 45.81,-139.17 34.09,-211.35 -12.57,-99.1 -40,-196.16 -73.82,-289.93 C 146.84,201.21 117.22,136.41 54.93,111.41 24.25,98.37 -8.5,71.18 3.76,34.38 c 27.98,-49.3 79.51,-19.55 113.81,9.15 83.45,65.12 127.46,165.16 178.81,254.99 38.13,82.85 89.63,159.31 157.26,220.99 54.77,57.21 112.86,120.14 121.47,202.77 5.34,28 11.93,122.51 2.29,42.83 C 575.82,683.41 535.34,608.65 477.21,553 402.18,480.38 334.77,398.82 291.91,302.78 245.34,207.96 195.14,109.27 110.98,42.23 77.28,6.23 -9.01,3.52 17.29,72.72 c 41.22,42.25 108.95,55.64 131.41,116.4 54.84,90.3 73.91,196.88 97.94,298.44 18.3,88.27 23.38,185.1 -21.38,266.78 -36.08,55.69 35.82,79.97 74.95,47.59 69.69,-21.35 132.56,27.74 159.67,89.16 26.3,24.67 82.88,50.7 57.58,99.23 -49.41,30.26 -41.03,111.73 -100.41,139.74 -24.66,13 -61.71,16.95 -50.27,52.9 45.02,35.61 69.55,84.81 69.71,143.57 11.11,76.55 38.37,153.55 85.53,215.36 36.69,60.87 71.6,-53.17 65.01,-44.77 -10.19,19.1 -13.98,81.83 -47.96,67.18 z m 9.18,-24.04 c -4.19,-31.01 32.76,-38.31 0,0 z m -13.01,-13.23 c -13.43,-32.15 25.18,10.51 5.3,0.32 5.58,3.2 -3.11,15.61 -5.3,-0.32 z m 8.45,-12.84 c 5.89,-5.37 -1.44,6.76 0,0 z m -20.06,-2.51 c -12.61,-41.82 13.02,-13.99 0,0 z m 36.59,-2.8 c -18.91,-12.8 16.01,1.1 0,0 z m -26.56,-8.97 c 21.04,-17.9 12.53,21.62 0,0 z m -17.5,0.55 c -2.59,-6.47 8.1,6.15 0,0 z m 43.44,1.01 c -9.49,-9.5 16.03,3.56 0,0 z m 2.81,-5.68 c -11.73,-5.97 17.82,3.04 0,0 z m -20.17,-7.16 c -7.23,-9.04 18.85,8.85 0,0 z m 7.28,-0.75 c -23.78,-15.58 21.88,7.1 0,0 z m -40.44,0 c 2.6,-24.21 8.61,9.07 0,0 z m 45.37,-4.39 c -11.52,-14.08 16.85,9.3 0,0 z m 11.28,-1.15 c -14.74,-27.21 15.65,-3.26 4.5,-1.12 9.44,4.33 -5.19,7.3 -4.5,1.12 z m -42.03,-2.42 c -9.24,-49.27 12.44,17.35 0,0 z m 6.32,0.13 c -5.7,-14.94 10.45,3.76 0,0 z m -13.34,-3.14 c -2.05,-28.61 9.1,4.94 0,0 z m -12.82,-2.52 c -5.47,-20.74 12.52,7.88 0,0 z m 35.8,-1.74 c -20.01,-33.03 21.06,13.3 0,0 z m 6.55,-2.7 c -1.17,-27.54 20.66,-6.38 0,0 z m 28.69,-1.99 c 5.86,-7.11 0.97,6.12 0,0 z m 21.69,-1.25 c 40.88,-145.38 49.71,-300.14 17.2,-448.07 14.49,26.82 18,102.35 21.36,147.95 2.9,101.46 -4.14,205.8 -38.56,301.93 l 0.01,-1.8 v 0 z m -89.7,-2.5 c -40.12,-12.94 44.73,-15.12 3.15,2.97 l -3.15,-2.96 v 0 z m 63.01,0.58 c 15.39,-14.17 2.64,6.82 0,0 z m -7.23,-7.76 c -6.93,-18.66 45.62,-2.4 0,0 z m -34.77,-3.15 c -29.38,-25.21 33.77,7.06 0,0 z m 13.47,-9.49 c 0.2,-18.08 34.71,-1.62 3.05,4.61 z m -45.22,0.93 c 8.06,-30.65 16.88,16.67 0,0 z m 18.11,-3.02 c -12.93,-24.41 17.36,8.77 0,0 z m 52.51,2.54 c 4.49,-4.76 1.55,4.93 0,0 z m -79.8,-3.53 c -9,-13.35 12.01,5.66 0,0 z m 39.8,-0.22 c -0.41,-9.47 6.81,3.88 0,0 z m 53.22,-3.85 c -16.63,-41.55 18.66,16.79 0,0 z m -87.6,0.1 c 3.19,-4.48 3.19,4.48 0,0 z m 72.74,-3.12 c 1.36,-5.94 0.73,7.53 0,0 z m -57.41,-1.54 c -7.32,-12.94 22.37,-11.64 0,0 z m 60.96,-1.13 c 10.43,-25.92 1.99,9.81 0,0 z m 14.96,-4.68 c 2.02,-13 3.49,9.18 0,0 z m -99.73,0.84 c -20.34,-26.37 23.84,8.39 12.54,-14.76 16.1,-2.52 -3.49,27.31 -12.54,14.76 z m 49.75,-0.97 c -35,-16.86 22.21,-20.95 0,0 z m 18.24,-2.62 c 8.4,-29.9 26.15,-1.13 0,0 z m -5.76,-3.72 c 3.88,-4.53 2.37,6.29 0,0 z m 45.72,-5.65 c -5.52,-31.5 15.56,-17.14 0,0 z m -15.27,-1.78 c 3.21,-23.67 10.51,3.95 0,0 z m -67.01,-2.58 c -4.13,-18.45 36.62,-2.17 0,0 z m -37.85,-3.09 c 12.92,-20.46 23.14,5.01 0,0 z m 18.55,-0.2 c -8.69,-12.56 9.1,-0.33 0,0 z m 75.3,-2.67 c -4.96,-18.37 6.26,13.77 2.79,-18.76 23.58,-16.36 -2.1,31.22 -2.79,18.76 z m -16.55,0.31 c -25.91,-23.25 24.67,-6.66 0,0 z m 36.18,-2.55 c -13.86,-11.6 15.91,5.01 0,0 z m -49.55,-0.56 c 0.59,-12.48 16.6,7.63 0,0 z m -41.51,-4.96 c -1.03,-15.1 8.85,12.54 0,0 z m 5.84,-1.43 c -2.67,-19.13 9.78,16.66 0,0 z m 5.5,-1.73 c -0.44,-11.17 6.5,8.78 0,0 z m 14.4,-3.66 c 3.19,-4.48 3.19,4.48 0,0 z m 32.14,0.47 c -4.36,-17.78 23.27,0.2 0,0 z m 36.22,-1.02 c -3.49,-39.18 23.14,12.52 0,0 z m -112.11,-0.71 c 3.19,-4.48 3.19,4.48 0,0 z m 33.75,-0.62 c 4.79,-6.73 4.79,6.73 0,0 z m 35.63,-0.62 c -0.32,-12.3 7.52,7.17 0,0 z m -80.42,-3.83 c 6.09,-11.36 1.37,8.57 0,0 z m 8.45,-2.33 c -2.18,-21.27 16.23,7.61 0,0 z m 15.1,1.55 c 9.81,-17.16 19.78,10.21 0,0 z m 32.75,0.6 c -6.26,-14.62 22.23,0.91 0,0 z m 11.86,-5.76 c -11.19,-17.65 23.84,9.8 0,0 z m 16.64,1.15 c 2.06,-5.84 4.34,2.15 0,0 z m 17.54,-2.57 c -0.13,-23.41 30.97,4.29 0,0 z m -108.19,-5.12 c 24.16,-24.55 34.15,2.97 0,0 z m 102.73,2.95 c -3.85,-5.66 5.5,1.07 0,0 z m -65.33,-5.14 c -27.08,-24.38 2.52,-17.58 20.75,0.36 -10.48,-4.33 -11.2,7.52 -20.75,-0.36 z m 2,-4.65 c -11.22,-9.61 6.92,10.75 0,0 z m 85.64,5.36 c -4.74,-32.41 15.51,-8.26 0,0 z m 13.07,0.48 c -10.24,-31.38 22.38,-4.03 0,0 z m -54.92,-1.42 c 10.71,-13.69 27.18,1.15 0,0 z m -19.66,-5.85 c 4.08,-18.65 18.28,10.48 0,0 z m -62.85,-0.14 c 5.28,-8.98 22.46,0.4 0,0 z m 77.48,-5 c 16.32,-40.59 11.19,22.37 0,0 z m 4.98,-3.36 c -2.92,-4.29 -3.6,2.38 0,0 z m 4.51,-5.36 c -6.12,-0.02 3.42,6.46 0,0 z m -28.84,9.72 c -8.89,-12.71 12.36,-12.38 0,0 z m -44.41,-1.31 c 4.81,-4.48 3.2,4.63 0,0 z m 96.25,-2.99 c -33.13,-22.35 28.81,8.14 0,0 z m -70,0.49 c 3.08,-4.45 1.51,4.57 0,0 z m 57.81,0.42 c -5.75,-10.97 12.37,3.26 0,0 z m -30.3,-2.61 c 7.7,-20.93 5.31,4.5 0,0 z m -70.63,-4.06 c 1.51,-4.57 3.08,4.45 0,0 z m 6.88,-0.62 c 3.39,-5.81 3.39,5.81 0,0 z m 129.88,-1.03 c -17.61,-6.41 26.35,-23.45 11.35,2.61 l -4.72,-0.06 z m -121.12,-1.45 c -29.76,-13.05 13.15,-1.78 0,0 z m 7.17,-1.13 c -7.7,-9.01 13.73,6.18 0,0 z m 47.81,0.49 c 3.19,-4.48 3.19,4.48 0,0 z m -75.29,-3.02 c -1.84,-15.12 18.79,11.04 0,0 z m 43.38,-0.76 c -0.34,-10.58 42.31,0.8 0,0 z m 64.4,1.21 c 3.6,-2.38 2.92,4.29 0,0 z m 11.9,-1.15 c -33.06,-9.28 34.38,-6.11 0,0 z m -33.15,-4.15 c 11.42,-23.16 11.79,14.08 0,0 z m -62.5,0.37 c 3.19,-4.48 3.19,4.48 0,0 z m 50,-1.53 c 7.63,-26.27 11.08,-1.21 0,0 z m -44.51,-2.45 c 10.38,-22.33 17.58,0.65 0,0 z m 23.91,0.26 c 1.37,-6.53 7.07,2.38 0,0 z m 29.36,-0.74 c 6.24,-18.99 7.96,4.58 0,0 z m -64.24,-0.2 c -28.94,4.83 -12.56,-36.98 -4.52,-6.12 15.67,-9.67 24.46,1.78 4.52,6.12 z m 6.74,-5.34 c 4.62,-4.7 -9.95,4.39 0,0 z m 111.02,3.03 c -14.64,-22.72 37.1,-3.31 2.73,-9.69 16.09,8.12 0.96,6.66 -2.73,9.69 z m -11.02,-0.53 c 3.08,-4.45 1.51,4.57 0,0 z m -67.09,-2.98 c -7.41,-11.92 12.86,-32.27 7.16,1.39 z m 55.84,0.48 c 3.19,-4.48 3.19,4.48 0,0 z m -20.07,-5.04 c -38.33,-15.32 40.96,-20.46 0.27,-2.69 4.05,-1.5 7.91,11.05 -0.27,2.69 z m 2.02,-10.63 c 7.47,7.47 4,3.76 0,0 z m 8.36,12.34 c 12.53,-25.39 44.88,2.11 0,0 z m 15.02,-5.05 c -14.02,-1.98 -2.56,1.96 0,0 z m -47.2,3.38 c 3.08,-4.45 1.51,4.57 0,0 z m -21.87,-1.25 c 3.19,-4.48 3.19,4.48 0,0 z m 103.79,-4.06 c 2.51,-10.14 3.79,12.62 0,0 z M 495.12,1316 c 3.92,-6.98 4.13,4.56 0,0 z m -11.48,-2.37 c 25.55,-22.68 31.71,-7.79 0,0 z m 41.25,-0.79 c 3.23,-10.71 -11.56,-14.73 14.8,-13.81 -4.04,4.18 -8.69,14.37 -14.8,13.81 z m 41.25,-3.01 c 4.88,-4.57 4.88,4.57 0,0 z m -104.06,-1.5 c -12.54,-10.18 35.03,5.77 0,0 z m 137.73,-1.93 c -30.06,4.83 35.3,-35.88 1.36,3.44 z m -28.04,-3.3 c -23.09,-11.49 14.93,-14.69 9.73,1.16 l -1.83,1.33 -7.91,-2.48 z m -95.41,0.48 c 13.51,-16.17 12.43,5.94 0,0 z m 18.99,-0.56 c -12.88,-24.66 11.25,2.08 0,0 z m -45.81,-0.2 c -4.59,-18.82 32.84,-11.35 0,0 z m 15.61,-0.29 c -0.77,-9.43 14.14,4.77 0,0 z m 143.5,-0.26 c 3.6,-2.38 2.92,4.29 0,0 z m -92.5,-4.23 c 8.77,-11.48 8.54,3.55 0,0 z m 25.25,-6.99 c -15.74,-22.64 15.57,9.95 16,-8.71 8.21,7.7 -10.5,26.47 -16,8.71 z m -34,-1.84 c 2.95,-10.83 2.95,10.83 0,0 z m 7.5,0.63 c 3.9,-7.71 3.9,7.71 0,0 z m 76.25,-0.3 c 15.43,-42.1 11.21,6.66 16.81,-5.49 -3.98,-1.13 -13.31,13.14 -16.8,5.49 z m -88.89,0.72 c -8.86,-14.35 -45.96,11.38 -25.39,-12.84 3.64,12.58 45.92,-14.82 25.39,12.84 z m -56.07,-1.62 c 5.39,-13.36 21.85,8.96 0,0 z m 75.64,0.04 c 6.38,-7.88 11.49,3.4 0,0 z m 59.95,-1.76 c -49.23,-9.69 8.9,-22.69 4.12,-0.49 l -1.77,1.53 z m 1.88,-7.08 c 4.62,-4.7 -9.95,4.39 0,0 z m -68.75,4.51 c 13.9,-12.58 16.92,1.34 0,0 z m -50.42,-1.59 c 0.96,-9.83 15.91,6.39 0,0 z m 29.42,-5.67 c -6.02,-11.79 11.69,6.24 0,0 z m 21,-1.72 c 9.21,-12.52 46.73,3.32 0,0 z m -69.69,-0.11 c 15.16,-0.91 -9.37,-17.74 22.14,-8.78 11.55,4.34 -19.09,11.41 -22.14,8.78 z m 99.07,-10.41 c 0.36,-29.94 39.14,21.31 0,0 z m 8.79,1.09 c -4.12,-21.3 -7.77,10.86 0,0 z m 25.71,2.29 c -25.01,-36.75 34.98,15.64 0,0 z m 30.45,1.55 c -1.06,-6.72 6.21,2.88 0,0 z m -125.59,-3.17 c 4.22,-5.57 4.43,6.66 0,0 z m 26.44,0.04 c 3.83,-9.12 4.35,6.65 0,0 z m -32.85,-1.81 c -8.06,-32.1 26.03,-7.82 0,0 z m 14.74,-0.83 c -5.07,-20.76 25.7,3.31 0,0 z m -50,-1.25 c -0.77,-8.4 16.26,5.92 0,0 z m 75.43,-0.31 c -14.53,-8.81 11.59,-25.79 5.33,-7.14 8.26,-14.34 27.08,11.12 -5.33,7.14 z m -0.01,-5.11 c -1.51,-4.57 -3.08,4.45 0,0 z m 71.56,2.82 c -15.42,-19.5 22.93,9.81 0,0 z m 11.99,-4.83 c -16.69,-31.26 32.04,13.5 0,0 z m -147.63,1.91 c -22.45,-28.85 13.61,-0.32 0,0 z m 118.45,-1.14 c -4.35,-9.08 10.9,8.3 0,0 z m -129.02,-4.2 c -17.33,-11.89 12.11,-2.99 0,0 z m 22.19,-1.03 c -8.75,-13.48 13.14,10.1 0,0 z m 92.72,0.03 c 10.56,-7.92 3.84,5.68 0,0 z m -55.71,-2.91 c -17.53,-8.57 17.61,1.53 0,0 z m 33.1,-2.63 c -13.25,-16.76 15.48,0.92 10.87,-8.84 18.35,1.75 -6.22,19.64 -10.87,8.84 z m 18.9,1.69 c 23.46,-27.9 33.95,3.77 0,0 z m -86.57,-3.75 c -11.56,-26.59 16.84,18.82 0,0 z m 115.89,-3.59 c 2.37,-25.38 10.28,-0.27 31.7,-25.43 -5.94,42.14 1.41,14.17 -31.7,25.43 z m -131.29,4.32 c -8.99,-14.85 -29.66,-4.51 4.3,-17.49 5.17,20.55 -3.18,-1.74 -4.3,17.49 z m 58.73,-0.19 c -6.95,-27.04 6.39,-16.47 0,0 z m -38.22,-3.25 c -4.38,-8.08 7.62,2.62 0,0 z m 18.66,-4.83 c -9.15,-41.92 13.62,9.5 0,0 z m 10.94,0.38 c -9.67,-13.93 12.96,4.82 0,0 z m 57.81,0.56 c 8.02,-13.8 5.83,10.51 0,0 z m -83.26,-2.26 c -11.59,-18.57 17.82,11.29 0,0 z m 98.26,1.6 c 3.6,-2.38 2.92,4.29 0,0 z m -93.01,-3.77 c -10.57,-20.12 14.86,13.7 0,0 z m 66.24,1.79 c 0.27,-12.19 7.65,11.25 0,0 z m -80.02,-2.41 c -10.6,-13.36 12.28,8.49 0,0 z m 147.41,0.71 c 3.08,-4.45 1.51,4.57 0,0 z m -95.19,-4.43 c 0.28,-10.93 8,9.41 0,0 z m -90.92,-2.55 c 15.9,-28.23 24.86,1.9 0,0 z m 109.08,-1.46 c -32.56,-3.84 12.65,-3.86 0,0 z m -39.58,0.63 c -7.06,-19.27 9.67,3.32 0,0 z m 13.99,-1.62 c -0.21,-13.54 8.91,11.42 0,0 z m 38.88,1.93 c -26.13,-18.37 16.15,-16.02 0,0 z m -3.12,-6.25 c -3.19,-4.48 -3.19,4.48 0,0 z m 25.51,4.38 c -30.95,-2.34 18.62,-9.65 0,0 z m -73.09,-7.02 c -5.81,-24.48 15.1,18.57 0,0 z m -45.75,0.46 c -21.39,-27.69 22.13,2.7 0,0 z m 8.33,2.19 c 3.19,-4.48 3.19,4.48 0,0 z m 5.63,-2.5 c 3.19,-4.48 3.19,4.48 0,0 z m -47.4,-2.91 c -2.57,-15.42 11.67,0.94 16.73,-0.02 -4.7,1.32 -12.65,5.64 -16.73,0.03 z m 158.05,-1.59 c -27.21,-51.08 37.96,20.48 0,0 z m -105.02,1.3 c 3.88,-4.53 2.37,6.29 0,0 z m 20,0.07 c 3.1,-6.59 3.1,6.59 0,0 z m 22.19,0.42 c 15.17,-7.42 4.08,-16.75 22.25,-14.11 5.56,15.57 -12.65,14.58 -22.25,14.11 z m 86.15,-3.13 c -8.51,-32.51 19.76,-6.82 0,0 z m -12.07,-5.39 c -2.92,-19.79 5.66,-7.27 3.47,2.96 z m -35.02,1.23 c -24.5,-14.12 28.4,-2.88 0,0 z m -77.5,-1.31 c 11.44,-30.09 22.93,4.97 0,0 z m 28.99,-0.86 c 10.31,-12.18 7.88,10.55 0,0 z m -58.53,-2.2 c -14.22,-23.96 24.8,-4.63 9.06,-5.02 14.75,-7.43 -3.67,13.82 -9.06,5.02 z m 47.83,-4.38 c 3.88,-33.9 53.81,8.71 6.34,-3.96 -1.97,0.47 -7.76,19.64 -6.34,3.96 z m 19.22,-10 c -13.86,-4.23 -9.62,5.22 0,0 z m 97.5,13.82 c 2.83,-10.28 4.2,8.62 0,0 z m -145,-0.07 c 6.83,-4.58 4.65,4.69 0,0 z m -53.75,-0.61 c 20.43,-16.2 21.1,-0.37 0,0 z m 60.68,-0.56 c 9.21,-3.46 -1.1,-0.54 0,0 z m -45.05,-1.34 c 3.08,-4.45 1.51,4.57 0,0 z m -26.4,-1.81 c 0.99,-34.84 15.17,9.65 0,0 z m 66.65,0.12 c 26.16,-34.71 1.69,10.82 0,0 z m 39.12,0.44 c 7.5,-4.98 5.64,3.86 0,0 z m -93.02,-4.21 c 12.57,-14.84 13.66,5.35 0,0 z m 141.85,-0.38 c -1.41,-17.35 3.9,9.29 0,0 z m 57,1.25 c -3.71,-11.67 5.72,-1.44 0,0 z m -73.91,-1.6 c 4.13,-31 39.5,-19.56 0,0 z m 63.91,0.35 c -2.62,-7.31 7.31,2.62 0,0 z m -170.83,-2.92 c 4.65,-4.69 6.83,4.58 0,0 z m 133.22,-1.49 c -2.78,-12.13 13.04,8.71 0,0 z m -35.43,0.04 c -3.69,-16.1 16.54,2.29 0,0 z m -140.3,-1 c 6.23,-9.11 7.35,3.73 0,0 z m 76.02,-2.23 c -13.16,-24.22 47.72,-5.21 0,0 z m -36.02,-0.31 c -18.02,-25.47 20.65,0.04 0,0 z m 143.75,-1.22 c -43.63,-44.84 25.94,6.03 0,0 z m -188.54,0.11 c 16.21,-21.69 20.22,-1.26 0,0 z m 202.29,-1.39 c 10.9,-12.79 13.58,10.5 0,0 z m -98.27,-3.29 c 0.37,-20.4 12.64,14.49 0,0 z m -35.48,0.19 c -19.04,-0.04 -9.16,-38.49 -0.01,-10.01 10.31,-9.88 2.9,15.66 0.01,10.01 z m 145.38,-0.87 c -18.28,-27.03 -11.83,-17.18 -14.77,-1.16 -29.65,-28.51 6.29,-38.38 14.47,-10.73 8.68,7.44 26.87,19.14 0.31,11.89 z m 3.37,-3.46 c -3.93,-8.89 -7.41,6.41 0,0 z m -220.44,3.02 c 15.08,-15 30.84,-30.1 6.43,-0.5 l -5.68,2.29 -0.75,-1.8 v 0 z m 30.44,0.66 c 3.19,-4.48 3.19,4.48 0,0 z m 107.71,-1.42 c 4.92,-8.75 0.84,8.5 0,0 z m -113.38,0.09 c -11.13,-26.53 51.43,-31.63 15.38,-11.6 17.57,-24.77 -24.55,11.84 -3.76,5.8 -2.56,0.8 -7.68,10.32 -11.62,5.81 z m 97.62,0.19 c -12.32,-13.49 13.66,-23.62 1.81,-6.89 20.76,-7.1 13.93,11.51 -1.81,6.89 z m 39.31,-3.31 c 3.84,-4.43 0.74,6.16 0,0 z m -165,-0.4 c 0.16,-18.19 24.24,-11.93 0,0 z m 150.23,-2.63 c -21.92,-19.96 10.95,9.44 9.85,1.08 l -3.35,2.45 z m 38.52,-4.5 c 4.22,-5.57 4.43,6.66 0,0 z m 40.25,0.4 c -8.38,-19.13 14.61,3.08 0,0 z m -131.22,-2.73 c -15.12,-8.08 19.5,-20.47 8.31,-1.97 15.02,-4.14 -1.63,12.66 -8.31,1.97 z m 72.42,0.74 c -2.03,-28.56 42.36,-14.8 0,0 z m 10.43,-7.68 c -4.49,-4.76 -1.55,4.93 0,0 z m -100,6.25 c 6.24,-4.54 3.32,4.82 0,0 z m -4.37,-1.25 c 3.19,-4.48 3.19,4.48 0,0 z m 145,-1.25 c 4.88,-4.57 4.88,4.57 0,0 z m -61.26,-3.12 c -20.37,-16.71 -0.51,-28.15 6.48,-5.9 1.86,-0.56 -4.61,14.62 -6.48,5.9 z m -42.49,-2.4 c -4.55,-7.6 28.47,-21.65 22.16,-4.01 -6.24,0.21 -20.24,7.5 -22.16,4.01 z m -38.05,-3.51 c -6.61,-19.41 58.59,-10.27 14.39,-2.83 -1.47,2.52 -11.61,8.78 -14.39,2.83 z m 148.05,0.9 c 3.39,-5.81 3.39,5.81 0,0 z m -10.65,-1.9 c -4.3,-16.1 11.58,11.14 0,0 z m -5.98,-3.27 c -0.6,-7.35 6.34,2.72 0,0 z m 19.13,-0.45 c 6.83,-4.58 4.65,4.69 0,0 z m -172.81,-2 c -18.17,-23.02 37.16,8.71 0,0 z m 5.31,-4.88 c -10.72,-6.23 2.39,6.21 0,0 z m 101.5,4.13 c 3.21,-14.77 22.22,-10.58 7.59,-1.86 l -5.37,3.12 -2.21,-1.25 z m -38.17,-1.84 c -4.07,-12.21 13.54,-16.31 0,0 z m 64.68,-1.47 c -8.17,-13.51 39.83,-3.19 0,0 z m 31.33,-2.7 c -15.19,-11.05 7.37,-13.57 0,0 z m -108.43,-0.76 c -12.48,-5.18 22.96,-28.97 0,0 z m -33.27,-3.09 c -40.7,-28.09 40.35,1.69 0,0 z m 148.62,-1.15 c 3.19,-4.48 3.19,4.48 0,0 z m -72.41,-2.87 c -3.09,-12.54 38.88,-20.62 17.31,-8.13 -1.48,2.82 -7.98,8.63 -17.31,8.13 z m -18.47,-2.45 c -28.65,-21.49 30.44,-9.68 0,0 z m 42.12,0.32 c 7.7,-4.73 10.55,4.65 0,0 z m 49.38,-1.25 c 4.81,-4.48 3.2,4.63 0,0 z m -131.06,-0.94 c -12.68,-33.82 23.46,-5.71 0,0 z m 96.26,0.1 c 6.72,-16.2 29.82,2.71 0,0 z m 24.17,-0.97 c 2.37,-6.29 3.88,4.53 0,0 z m -42.5,-1.86 c 8.72,-7.97 18.59,5.95 0,0 z m 41.52,-4.05 c 12.32,-7.95 5.33,5.7 0,0 z m -65.95,-1.12 c 0.08,-7.3 8.46,5.2 0,0 z m -67.3,-2.89 c -1.92,-18.21 9.6,10.16 0,0 z m 33.65,-10.47 c 7.53,-26.32 8.28,26.48 0,0 z m 67.87,4.53 c -28.92,-18.77 41.59,-7.05 11.08,-2.37 -0.88,5.57 -7.58,6.8 -11.08,2.37 z m 26.82,-2.47 c 0.78,-10.62 18.29,-25.69 7.14,-5.42 26.45,8.31 -8.27,11.96 -7.14,5.42 z m -69.85,0.92 c 5,-19.54 29.29,7.18 0,0 z m 20.2,-0.26 c -5.55,-8.89 8.89,5.55 0,0 z m -58.06,-2.47 c 7.96,-20.35 -24.56,6.18 1.6,-13.88 5.6,2.4 9.63,23.92 -1.6,13.88 z m 28.89,1.1 c -20.02,-21.65 33.66,-13.38 0,0 z m 94.7,-3.62 c 3.84,-4.43 0.74,6.16 0,0 z m -72.28,-11.02 c -36.07,-12.08 -18.28,-18.68 2.82,-19.08 -18.78,15.52 33.36,19.62 3.56,24.34 l -6.37,-5.26 z m 25.64,5.91 c 5.9,-5.91 -0.37,-1.13 0,0 z m 18.04,-9.04 c -12.69,-22.61 18.46,-5.83 0,0 z m -92.39,-5.01 c -12.21,-16.05 23.49,8.95 1.12,-17.58 13.58,1.12 29.25,27.5 -1.12,17.58 z m 106.05,1.8 c -1.11,-8.98 12.22,4.86 0,0 z m 12.44,-0.69 c 3.19,-4.48 3.19,4.48 0,0 z m -51.63,-0.8 c -2,-10.75 -0.98,-6.52 16.69,-10.83 0.37,5.87 -10.85,13.22 -16.69,10.83 z m 41.01,-5.45 c 9.23,-4.71 4.16,4.92 0,0 z m 1.38,-4.79 c 4.39,-6.03 5.89,3.11 0,0 z m -52.75,-3.2 c 4.22,-44.68 39.91,12.01 4.89,-9.51 -4.89,3.21 7.77,15.56 -4.89,9.51 z m 12,-12.01 c -1.51,-4.57 -3.08,4.45 0,0 z m 18.13,12.5 c 4.81,-4.48 3.2,4.63 0,0 z m 19.69,-5.04 c -3.54,-7.8 23.24,4.08 0,0 z m -73.18,-2.85 c -25.53,-18.47 33.31,7.22 0,0 z m 55.05,-0.16 c -7.37,-14.39 25.4,5.78 0,0 z m -77.26,-3.48 c -18.85,-23.18 23.46,14.92 0,0 z m 40.9,3.2 c -3.12,-7.06 6.34,2.67 0,0 z m 60.1,-3.74 c 6.88,-2.03 1.25,2.19 0,0 z m -75.09,-2.5 c -9.46,-11.3 13.79,2.86 0,0 z m -23.65,-4.47 c -21.03,-10.82 17.52,2.66 0,0 z m 73.42,2.79 c 4.16,-4.92 9.23,4.71 0,0 z m -43.12,-2.5 c -44.17,-7.29 9.24,15.57 6.95,2.36 z m 56.85,-1.01 c -35.15,-20.91 40.5,7.93 0,0 z m -40.56,-2.65 c -4.97,-29.48 33.63,10.73 0,0 z m 19.91,-7.07 c 1.14,-21.27 22.94,-0.56 0,0 z m 21.92,0.74 c 14.87,-4.65 14.87,4.65 0,0 z m -53.54,-2.08 c -5.04,-26.68 8.55,-0.83 0,0 z m -37.71,-1.67 c 6.24,-4.54 3.32,4.82 0,0 z m 31.41,0.25 c -3.65,-29.32 10.66,0.38 0,0 z m -5.78,-2.68 c 2.22,-8.48 3.86,6.76 0,0 z m 63.26,0.45 c -8.43,-23 28.36,9.95 0,0 z m -31.25,-2.5 c 1.85,-45.96 16.6,-3.23 0,0 z m -37,-3.96 c 9.16,-10.55 13.84,5.86 0,0 z m 23.74,-2.2 c 11.22,-9.38 15.13,6.89 0,0 z m -41.84,-0.56 c 2.04,-23.91 24.1,4.79 0,0 z m 74.39,-3.05 c -19.37,-35.62 37.83,3.65 0,0 z m 4.71,-6.07 c -7.1,-18.02 1.31,15.25 0,0 z m 12.74,5.45 c 4.58,-7.54 8.45,5.7 0,0 z m -25.76,-3.99 c -9.7,-20.77 8.09,1.52 0,0 z m -31.51,-2.35 c -31.24,-8.44 5.1,-6.22 14.29,-1.76 l -2.38,2.08 -11.91,-0.33 v 0 z m -20.02,-4.16 c 1.23,-11.56 13.78,-2.65 0,0 z m 72.11,-2.1 c -10.21,-9.41 15.26,5.18 0,0 z m 22.29,-4.72 c -9.8,-66.55 -26.19,-133.26 -27.13,-200.47 11.68,68.02 22.74,136.48 32.78,204.66 -2.55,1.54 -6.75,-0.61 -5.65,-4.19 z m -73.96,-1.53 c -18.39,-11.37 13.33,1.74 0,0 z m 19.97,0.64 c -25.9,-16.16 6.82,-10.75 5.42,1.41 z m 28.16,-0.59 c -1.03,-6.92 15.77,3.36 0,0 z m -19.59,-7.89 c -22.75,-25.95 22.41,-4.59 0,0 z m 15.8,-0.59 c -11.4,-6.91 28.2,4.4 0,0 z m 0.26,-4.54 c -10.46,-44.16 20.8,15.07 0,0 z m -37.76,-3.94 c 13.22,-7.57 -3.94,7.2 0,0 z m 0,-5.62 c 8.54,-3.96 9.99,4.95 0,0 z m 27.71,-5.09 c -21.84,-28.91 12.27,5.14 10.77,-17.27 9.43,-3.72 10.34,19.96 -10.77,17.27 z m -26.02,-6.15 c -22.9,-23.57 27.25,-25.12 3.35,-7.44 1.37,2.95 6.45,12.71 -3.35,7.44 z m 28.56,-21.51 c -25.21,-37.39 18.39,-10.12 0,0 z m -24.48,-4.94 c -38.38,2.07 27.13,-24.51 5.19,1.33 z m 29.8,-1.14 c 0.16,-9.42 5.82,7.51 0,0 z m -47.18,-10.69 c 3.35,-12.47 16.83,2.81 0,0 z m 17.18,-4.31 c 0.97,-9.23 7.98,7.6 0,0 z m 29.77,-0.23 c -9.21,-19.31 10.93,5.29 0,0 z m -47.58,-1.11 c 16.4,-15.08 12.99,4.03 0,0 z m 27.23,-4.84 c -26.23,-16.33 32.4,-5.49 0,0 z m -32.52,-3.76 c 1.44,-29 34.64,12.05 0,0 z m 10.95,-4.58 c -9.68,-1.95 -1.86,2.01 0,0 z m 38.44,-4.14 c 3.19,-4.48 3.19,4.48 0,0 z m -28.12,-2.97 c 32.91,-30.61 14.63,1.89 0,0 z m 21.25,0.88 c 0.39,-29.57 18.3,-17.89 0,0 z m -46.41,-3.01 c -41,-11.08 19.98,-10.93 6.41,0.69 z m 6.41,-2.4 c -9.11,-5.11 -13.96,4.04 0,0 z m 33.75,2.65 c 4.22,-9.37 6.55,3.56 0,0 z m -14.28,-3.75 c 7.4,-13.67 15.63,-1.82 0,0 z m -14.34,-7.95 c -36.5,-21.76 29.68,1.48 0,0 z m -39.51,-1.49 c 6.44,-1.96 -14.03,-10.3 7.9,-2.9 l -2.6,4.36 z m 13.09,-5.59 c -6.97,-38.53 15.08,5.83 0,0 z m 44.8,-5.36 c 2.56,-20.84 37.9,2.49 6.27,2.74 1.37,7.65 -11.25,4.91 -6.27,-2.74 z m -32.25,0.41 c 15.14,-22.2 43.6,7.3 7.16,-2.92 z m -34.45,-4.03 c 10.04,-23.8 28.51,4.13 0,0 z m -11.81,-4.02 c 0.79,-15.02 19.8,-3.79 0,0 z m -8.55,-9.02 c 18.78,-9.65 -23.33,-18.05 9.87,-12.83 11.48,2.63 -10.03,18.6 -9.87,12.83 z m 54.36,2.2 c -7.37,-45.92 24.26,-0.73 0,0 z m 28.87,-1.22 c -3.19,-10.7 43.31,-10.77 11.28,0.7 z m -54.69,-4.71 c -7.41,-20.04 46.51,3.69 0,0 z m 43.13,-3.12 c 3.19,-4.48 3.19,4.48 0,0 z m 14.34,-4.48 c 3.79,-20.23 17.97,12.9 0,0 z m -71.87,0.67 c -1.06,-6.72 6.21,2.88 0,0 z m 17.71,-8.23 c -0.79,-16.43 43.05,-17.64 4.27,3.3 z m -17.44,-1.46 c -9.32,-28.87 51.25,-14.85 5.25,-10.89 -3.43,3.12 5.62,20.81 -5.25,10.89 z m 56.64,-0.16 c -38.83,-25.65 29.93,-16.77 0,0 z m -88.18,-2.67 c 12.2,-4.96 27.72,1.84 0,0 z m 98.81,-4.87 c 10.74,-22.89 20.11,-11.78 4.46,-3.45 22.32,1.46 13.18,16.49 -4.46,3.45 z m -93.81,1.12 c -32.46,-17.44 33.16,3.08 0,0 z m 1.92,-5.92 c 5.88,-11.22 9.62,4.09 0,0 z m 12.49,-3.06 c -45.26,-29.62 53.2,-14.57 0,0 z m 3.86,-5.03 c -3.14,-3.67 -2.92,4.62 0,0 z m -35.8,-1.04 c -11.97,-9.06 0.64,-21.93 13.2,-8.33 -1.21,6.72 -7.6,9.45 -13.2,8.33 z m 5.7,-11.75 c -7.81,-7.3 2.01,6.97 0,0 z m 63.44,11.05 c -8.81,-21.66 57.25,-9.35 7.81,0.2 l -2.39,1.66 z m 7.19,-5.43 c 5.26,-4.35 -13.18,3.49 0,0 z m 24.62,1.09 c 12.58,-29.13 50,8.99 0,0 z m -45.24,-2.4 c -2.92,-26.88 42.2,-11.15 0.62,1.24 z m 10.91,-10.69 c -4.95,-2.63 -1.17,2.82 0,0 z m -19.66,2.53 c 4.22,-5.57 4.43,6.66 0,0 z m -18.48,-0.75 c -8.13,-14.31 35.68,-7.15 0,0 z m 49.73,0.23 c 3.2,-4.63 4.81,4.48 0,0 z m -100,-1.25 c 4.65,-4.69 6.83,4.58 0,0 z m 34.71,-4.55 c -28.79,3.74 3.39,-25.2 4.52,-8.69 4.61,-0.19 3.24,19.61 -4.52,8.69 z m 82.79,1.88 c -35.09,-13.96 20.91,-6.86 16.23,-6.08 30.47,-19.12 6.4,10.83 -16.23,6.08 z m -293.75,-2.33 c 3.84,-8.77 6.43,8.89 0,0 z M 406.38,799 c 15.36,-10.29 7.81,4.78 0,0 z m 78.53,0.18 c 7.69,-11.77 9.99,6.42 0,0 z m -254.54,-3.7 c 1.22,-11.8 10.24,6.08 0,0 z m 190.79,-0.01 c -31.43,-10.44 16.61,-2.1 0,0 z m 40.83,-1.46 c -0.27,-11.08 32.78,-8.51 0,0 z m -210.03,-1.28 c -3.38,-17.97 20.35,-12.72 0,0 z m 243.2,-0.63 c -31.14,-22.66 5.14,-12.71 9.75,-0.95 l -6.03,2.28 z m -99,-1.06 c 7.6,-21.05 13.43,-2.61 0,0 z M 236.62,788.7 c -37.06,-18.28 28.27,0.54 0,0 z m 147.04,0.48 c 4.94,-9.53 5.71,6.3 0,0 z m 36.48,-0.19 c -16.8,-9.58 21.69,6.15 0,0 z m 125.23,-0.71 c 10.72,-28.07 14.5,5.56 0,0 z m -172.1,-5.54 c 6,-25.06 3.96,17.16 0,0 z m -109.61,1.48 c 3.1,-6.59 3.1,6.59 0,0 z m 5.64,-4.85 c -1.86,-39.74 35.38,30.15 0,0 z m 8.94,-1.3 c -13.06,-11.86 -1.25,18.12 0,0 z m 114.47,3.97 c 21.63,-13.91 -5.65,11.84 0,0 z m 29.7,0.5 c -30.45,-18.69 45.64,6.92 0,0 z m 80.23,0.98 c 3.92,-6.98 4.13,4.56 0,0 z m 27.27,-0.47 c -6.33,-20.43 20.9,0.71 0,0 z m -280.51,-5.7 c 24.54,-24.05 -9.96,24.72 0,0 z m 111.2,5.11 c 8.27,-20.56 19.5,0.51 0,0 z m 151.83,-2.14 c 2.64,-24.27 17.97,15.23 0,0 z m -218.07,-0.39 c -27.4,-39.92 29.67,-2.43 0,0 z m 157.36,0.59 c -3.82,-1.12 -8.01,-18.19 10.37,-11.78 -22.18,-5.25 17.72,18.19 -10.37,11.78 z m -139.99,-0.77 c 1.33,-9.2 10.18,6.2 0,0 z m 68.19,-0.36 c 2.58,-20.08 6.21,10.1 0,0 z m -59.78,-1.61 c 4.32,-8.72 4.44,7.67 0,0 z m 19.05,0.52 c 8.14,-18.78 25.13,4.79 0,0 z m -13.02,-2.66 c 13.63,-14.37 4.49,2.93 0,0 z m 172.5,1.23 c 12.92,-12.34 11.99,5.68 0,0 z m -258.73,-5.44 c 14.85,-11.48 -17.07,-15.41 12,-10.8 1.75,3.21 -10.49,16.86 -12,10.8 z m 178.42,1.33 c 1.56,-16.18 18.77,-3.87 0,0 z m 45.57,-1.18 c 12.82,-4.52 -2.09,7.05 0,0 z M 314.92,770.5 c 19.48,-13.78 17.93,4.86 0,0 z m 223.44,-0.9 c -4.24,-3.97 8.35,-28.39 11.56,-11.9 -4.2,8.06 15.92,6.9 -1.13,12.94 2.63,5.94 -15.52,-4.33 -10.43,-1.05 z m -305.94,-0.35 c 20.98,-10.55 -8,9.45 0,0 z m 172.5,-0.62 c 6.52,-9.24 6.3,8.72 0,0 z m -10.69,-5.94 c 1.79,-32.42 13.54,26.21 0,0 z m 38.62,1.26 c -25.13,-38.18 51.96,8.5 4.63,-7.7 6.18,4.94 4.78,19.38 -4.63,7.7 z m 40.82,2.18 c 5.67,-24.54 33.71,13.34 0,0 z m 27.5,1.36 c 28.6,-20.54 34.87,4.02 0,0 z m -240.4,-1.04 c -13.02,-29.98 27.15,-11.5 0,0 z m 94.15,-0.94 c 2.8,-6.23 7.32,6.74 0,0 z m 21.88,0.97 c 3.84,-24.28 -11.29,-3.98 -15.12,-14.7 14.97,-28.81 29.07,22.74 15.12,14.7 z m -63.48,-2.36 c 1.87,-8.26 14.59,2.24 0,0 z m 30.69,-1.49 c 2.04,-18.62 22.68,-9.23 0,0 z m -63,-0.56 c -1.25,-22.93 33.67,-14.65 0,0 z m 68.91,-0.98 c 9.76,-10.72 2.56,6.98 0,0 z m 54.73,-2.33 c -11.35,-21.26 40.73,3.92 0,0 z m 104.73,-3.56 c 31.24,-23.83 9.29,17.31 0,0 z m -185.71,0.67 c -21.96,-16.96 23.66,-12.16 5.65,2.96 l -4.86,-0.09 z m 57.5,1.82 c 9.35,-22.19 -0.47,13.56 0,0 z m 80.81,-0.87 c -1.93,-13.9 34.71,-2.5 0,0 z m -159.4,-1.39 c -10.94,-36.38 28.02,-17.25 0,0 z m 83.59,2.03 c 2.37,-6.29 3.88,4.53 0,0 z m 106.25,-0.63 c 18.37,-12.41 6.72,2.71 0,0 z m -6.9,-5.82 c 3.17,-21.9 26.47,20.56 0,0 z m -243.81,-2.79 c 6.67,-19.22 30.52,-8 2.03,1.49 z m 30.88,-0.67 c -4.89,-14.43 26.05,3.4 0,0 z m 8.25,-0.92 c -4.95,-2.63 -1.17,2.82 0,0 z m 175.34,2.16 c 7.65,-36.86 36.58,7.01 0,0 z m 11.77,-4.66 c 6.48,-8.96 -9.7,1.24 0,0 z m -75.48,-2.25 c 38.17,-13.15 -16.4,13.76 -1.12,0.7 z m -47.86,2.27 c 17.8,-3.97 1.71,-30.24 16.84,-4.01 -3.22,5.94 -11.4,3.88 -16.84,4.01 z m 108.45,-0.51 c 4.81,-4.48 3.2,4.63 0,0 z m 77.1,-1.56 c 27.23,-5.85 9.9,6.14 0,0 z m 16.79,-1.11 c -19.67,-18.01 30.44,4.73 0,0 z m -163.26,0.99 c 16.74,-21.36 26.91,-6.49 0,0 z m 26.88,0.43 c 4.65,-4.69 6.83,4.58 0,0 z m 94.7,-1.48 c -39.54,0.26 14.71,-26.43 3.41,2.57 z m 14.27,-0.29 c 4.93,-12.87 7.39,9.26 0,0 z m -203.96,-0.73 c 6.83,-4.58 4.65,4.69 0,0 z m 118.13,0 c -27.76,-15.1 60.67,-9.98 4.92,1.23 z m 11.88,-5 c -6.83,-4.58 -4.65,4.69 0,0 z M 270.7,734.24 c -13.01,-32.18 9.55,-5.42 19.03,-13.54 -3.69,20.13 17.81,17.94 -19.03,13.54 z m 13.02,-3.95 c -2.87,-6.12 -2.76,10.34 0,0 z m 97.95,3.16 c 11.59,-22.77 5.96,13.17 0,0 z m -132.64,1.87 c -4.3,-26.76 32.22,6.97 0,0 z m 268.44,-1.09 c -4.68,-18.97 20.98,3.18 19.06,-4.65 -7.92,-4.3 -11.29,13.14 -19.06,4.65 z m -189.42,-0.41 c -32.8,-6.88 15.14,-36.24 4.18,-10.44 -16.45,-16.83 3.11,12.39 -4.18,10.44 z m 40.26,0.24 c -1.42,-16.71 12.62,-4.64 0,0 z m 43,-2.14 c -16.03,-23.29 44.06,-10.95 2.42,-2.87 12.29,-5.71 4.83,13.66 -2.42,2.87 z m 67.11,2.15 c 6.88,-2.03 1.25,2.19 0,0 z M 375.61,729.9 c 4.65,-4.69 6.83,4.58 0,0 z m 99.38,0.73 c 20.16,-22.55 29.26,-11.76 0,0 z m -133.12,-1.81 c 9.7,-7.28 8.98,3.2 0,0 z m 211.25,-0.18 c 3.2,-4.63 4.81,4.48 0,0 z m -81.38,-3.23 c 4.99,-10.84 4.9,7.28 0,0 z m -180.49,-0.52 c 3.19,-4.48 3.19,4.48 0,0 z m 8.95,-0.74 c -3.99,-13.71 12.84,7.45 0,0 z m 148.23,-1.43 c -8.29,-13.38 14.25,-23.95 7.35,-2.83 5.77,-14.5 19.07,-19.44 7.4,0.31 l -6.49,4.31 z m 45.98,0.98 c 7.69,-13.13 6.91,6.45 0,0 z m 43.27,-2.43 c 6.92,-1.47 -5.68,-15.28 15.45,-1.87 -5.24,0.42 -10.11,5.04 -15.45,1.87 z m -171.43,-1.46 c 3.6,-2.38 2.92,4.29 0,0 z m -13.48,-2.22 c -6.73,-11.45 24.93,6.61 0,0 z m 25.18,0.41 c 7.27,-28.04 3.29,5.22 25.8,-9.99 9.13,13.6 -21.15,9.78 -25.8,9.99 z m 104.55,-1.28 c 8.02,-13.8 5.83,10.51 0,0 z m -228.75,-2.27 c 2.25,-35.64 15.06,12.82 0,0 z m 42,1.89 c 4.11,-20.54 24.07,-4.69 13.97,-0.08 -4.58,-4.64 -8.96,2.22 -13.97,0.08 z m 136.12,-2.7 c 1.51,-4.57 3.08,4.45 0,0 z m 69.38,-0.65 c 17.16,-23.74 29.31,0.95 25.59,-2.4 -11.34,3.87 -14.89,1.38 -25.59,2.4 z m -162.97,-0.24 c -17.41,-21.14 -59.97,-11.51 -21.98,-36.46 -2.86,8.31 -3.47,30.95 27.41,17.66 -8.4,10.02 11.86,14.74 -5.43,18.8 z m 100.73,-0.6 c -8.38,-20 16.36,-0.95 0,0 z m -26.84,-0.5 c 6.64,-4.27 -15.05,-30.64 5.93,-14.22 -3.55,-40.06 27.39,31.13 -5.93,14.22 z m -58.42,-2.38 c 23.3,-8.77 20.52,8.88 0,0 z m -79.52,-1.77 c -14.16,-11.04 1.38,-6.87 -9.54,-14.41 20.2,3.88 19.1,16.68 25.33,2.81 8.31,9.33 -7.9,19.05 -15.79,11.6 z m 198.76,-2.11 c -6.38,-32.41 30.66,16.76 0,0 z m 65.76,3.2 c 9.71,-18.54 24.7,2.52 0,0 z M 495,706.82 c 9.66,-12.58 10.66,2.29 0,0 z m -137.5,-3.17 c 7.7,-4.73 10.55,4.65 0,0 z m 6.74,-8.18 c -21.19,-15.07 19.95,-16.4 2.37,-3.07 9.14,14.64 29.48,-29.06 34.75,-0.58 -29.61,-13.18 9.27,13.72 -24.36,8.69 l -3.1,3.14 z m 67.49,3.67 c 1.88,-14.21 15.93,13.02 0,0 z m 60.77,1.35 c 13.88,-12.12 23.64,3.21 0,0 z m -146.25,-1.86 c -0.53,-12.16 13.68,6.63 0,0 z m 101.25,-0.67 c -29.95,-24.52 27.21,9.22 0,0 z m -190,-0.57 c 4.88,-4.57 4.88,4.57 0,0 z m 266.92,-2.63 c -37.9,-44.87 38.35,14.81 0,0 z m -66.61,-2.39 c 1.33,-27.14 5.48,-0.64 9.74,-6.35 0.11,5.65 -2.03,16.12 -9.74,6.35 z m 34.44,2.27 c 7.83,-2.97 -0.16,5.63 0,0 z m 47.99,-4.98 c 12.5,-25.22 4.14,20.83 0,0 z m -58.15,0.64 c -2,-13.37 22.5,-16.12 17.63,-2.92 -6.95,-5.02 -11.44,6.63 -17.63,2.92 z m -213.65,-1.95 c -14.72,-10.11 17.72,4.11 0,0 z m 52.9,-0.23 c 0.71,-12.12 15.52,10.54 0,0 z m 183.35,0.94 c 6.88,-2.03 1.25,2.19 0,0 z m -231.17,-4.05 c -24.06,-17.54 27.89,10.46 0,0 z m 197.23,2.57 c 0.57,-6.4 6.31,0.87 0,0 z m -177.96,-3.74 c 5.53,-14.99 19.49,0.07 0,0 z m 43.73,-1.62 c 24.27,-11.2 -26.48,-0.68 12.87,-13.48 6.49,6.12 12.08,11.55 -12.87,13.48 z m 95.59,-1.85 c -11.71,-18.92 41.56,5.55 0,0 z m -23.36,-0.29 c 8.05,-14.34 11.25,5.26 0,0 z m 93.39,0.28 c -2.6,-10.12 12.98,2.94 0,0 z m -232.18,-4.17 c -9.56,-13.63 17.04,12.36 0,0 z m 129.11,1.44 c -15.4,-18.51 20.26,6.58 0,0 z m 73.7,-1.42 c -40.21,-5.09 12.28,-19.42 5.93,3.44 z m -102.69,-0.77 c -37.03,-26.51 66.75,-3.68 0,0 z m 14.37,-2.33 c 3.63,-11.29 -19.8,8.42 0,0 z m -8.2,-5.73 c 4.62,-4.7 -9.95,4.39 0,0 z m -94.37,7.04 c -43.36,-24.83 36.2,-1.07 0,0 z m 135.14,-0.06 c 1.36,-22.32 9.81,10.9 0,0 z m 99.48,1.96 c -11.77,-9.87 24.89,3.27 0,0 z m 18.56,-1.24 c -18.77,-24.3 20.22,-9.7 0,0 z m -52.24,-5.95 c 4.12,-17.02 -45.67,-12.42 -5.95,-30.46 7.73,12.46 -10.23,11.52 11.39,21.24 0.05,1.6 -5.69,21.51 -5.44,9.22 z m -49.06,0.54 c -11.25,-7.13 29.56,2.66 0,0 z m -136.93,-1.91 c 7.45,-30.63 43.97,17.19 3.81,-0.39 l -0.47,2.41 z m 105.5,-2.93 c -24.12,-10.84 8.37,-12.08 -21.06,-11.68 6.92,-11.27 83,-17.43 24.27,-3.66 -2.8,20.93 11,-3.14 25.73,13.12 -16.09,-6.83 -20.78,13.18 -28.94,2.22 z m 94.43,2.03 c -10.47,-16.03 16.8,-15.11 12.94,-5.46 6.75,2.74 0.2,8.43 -12.94,5.46 z m -167.31,-1.48 c -10.67,-24.51 30.2,0.74 0,0 z m 113.69,0.16 c -8.96,-6.57 20.36,5.07 0,0 z m -165,-5.1 c -13.74,-13.01 32.06,6.25 0,0 z m 80.21,-1.4 c -1.67,-25.81 33.57,-11.22 0,0 z m 92.29,-0.38 c -35.62,-5.38 6.6,-32.21 0,0 z m -17.05,-2.5 c -2.47,-9.94 15.06,6.17 0,0 z m 87.67,0.58 c 7.12,-6.86 4.83,6.64 0,0 z m -230.94,-4.6 c -28.2,-3.94 -4.22,-9.9 -14.37,-20.86 8.66,-6.11 32.81,32.36 14.37,20.86 z m 226.57,1.47 c 1.51,-4.57 3.08,4.45 0,0 z m -171.06,-2.29 c -0.25,-39.5 16.42,-2.33 0,0 z m 180.1,0.29 c 3.47,-25.91 11.68,6.39 0,0 z m -225.92,-3 c 3.19,-4.48 3.19,4.48 0,0 z m 210.31,-0.33 c -10.49,-13.74 23.62,-19.4 7.79,-8.37 7.9,0.86 -2.85,16.72 -7.79,8.37 z m -197.19,-0.92 c -32.8,-13.5 32.27,-4.34 0,0 z m 22.41,-1.97 c -13.49,-17.79 16.46,2.87 0,0 z m 87.59,1.97 c 4.65,-4.69 6.83,4.58 0,0 z m 68.13,-7.4 c 4.23,-8.81 4.56,7.67 0,0 z m -113.12,-1.22 c -12.83,-6.33 10.66,-17.85 11.18,-2.22 18.75,-3.58 -7.56,9.75 -11.18,2.22 z m 30.63,-2.01 c 10.67,-14.15 9.34,12.97 0,0 z m 88.32,1.3 c 1.43,-6.39 6.37,4.96 0,0 z m -200.12,-0.57 c 1.02,-13.65 11.29,1.93 0,0 z m 186.31,-2.19 c -21.6,-15 -49.66,-8.47 -4.52,-20.77 17.15,0.24 -7.19,17.1 8.6,15.4 -8.76,0.97 12.19,7.62 -4.07,5.37 z m -5.76,-13.47 c -2.99,-4.27 -5.06,2.39 0,0 z m -149.71,14.07 c 4.54,-6.56 4.2,5.56 0,0 z m 128.46,0.3 c 9.51,-10.65 19.01,3.02 0,0 z m -19.26,-3.19 c 18.83,-12.11 2.61,6.88 0,0 z m 9.09,0.58 c 13.31,-8.23 -3.76,9.02 0,0 z m -27.01,-2.49 c -23.2,-17.4 35.68,-13.01 6.44,-5.62 12.01,5.98 2.59,13.41 -6.44,5.62 z m 81.18,2.72 c -9.05,-8.05 14.26,2.73 0,0 z m -158.41,-6.95 c 1.21,-28.71 29.21,-0.58 11.92,-2.62 17.73,3.35 -18.81,9.43 -11.92,2.62 z m 14.39,-9.54 c -14.96,-4.65 6.51,6.01 0,0 z m 6.91,13.8 c -0.51,-7.95 6.97,1.72 0,0 z m -53.54,-3.98 c 14.82,-17.39 37.5,9.3 0,0 z m -23.82,-1 c -45.16,-19.71 48.16,-1.24 0,0 z m 112.53,0.19 c -19.32,-36.84 21.27,3.67 0,0 z m 103.13,-3.37 c -12.17,-14.11 9.38,-19.25 5.86,-1.47 22.93,-6.87 0.3,11.26 -5.86,1.47 z M 371.3,621.39 c 33.24,-48.75 21.08,0.96 0,0 z m 69.56,-3.62 c 0.03,-7.77 15.27,1.07 0,0 z m -53.33,-1.67 c 3.19,-4.48 3.19,4.48 0,0 z m 72.5,0.14 c 7.48,-10.89 10.16,1.36 0,0 z m -148.75,-7.02 c 5.78,-24.45 9.05,8.43 23.6,-8.51 -3.5,3.75 -26.98,24.97 -23.6,8.51 z m 58.75,5.85 c 0.45,-27.71 20.09,-0.75 0,0 z m 35.62,-0.24 c -24.78,-11.02 46.26,-4.66 0,0 z m 31.88,-3.12 c 6.85,-7.34 3.06,6.11 0,0 z m -104.29,-0.49 c -0.66,-15.82 7.55,4.48 0,0 z m -34.46,-2.01 c 8.16,-6.87 8.16,6.87 0,0 z m 151.56,0.59 c -37.08,-9.53 19.75,-18.71 0,0 z m -89.06,-3.86 c -46.02,-5.27 31,-16.79 0,0 z m -82.81,1.3 c -0.36,-20.78 50.67,-6.13 5.48,1.12 z m 13.13,-5.73 c -6.88,-2.03 -1.25,2.19 0,0 z m 182.66,5.72 c -18.46,-13.69 39.78,-18.8 3.98,-5.5 33.55,-5.81 20.45,9.16 -3.98,5.5 z m -127.93,-1.09 c -5.18,-7.06 24.84,6.25 0,0 z m 80.59,-0.05 c 3.08,-4.45 1.51,4.57 0,0 z m -29.79,-0.83 c -2.2,-8.94 10.85,5.42 0,0 z m 21.75,-3.74 c -31.19,-11.79 28.14,-12.61 0,0 z m -90.71,-4.18 c 3.19,-4.48 3.19,4.48 0,0 z m 103.98,-3.17 c -3.73,-16.3 12.2,-24.83 19.86,-5.61 -13.17,-13.26 -12.05,18.72 -19.86,5.61 z m 26.02,2.29 c -4.74,-9.8 17.18,5.64 0,0 z M 400.1,596.4 c 8.15,-22.33 13.63,5.29 0,0 z m -127.86,-3 c 21.84,-6.74 15.58,3.88 0,0 z m 61.87,-1.68 c -1.17,-14.86 40.61,-9.42 0,0 z m 33.8,-1.69 c -19.58,-15.38 50.31,-31.5 8.61,-9.56 30.79,-16.35 -1.36,19.19 -8.61,9.56 z m 16.44,1.64 c 19,-3.75 1.09,3.7 -1.53,1.58 z M 302.8,589.1 c -17.6,-13.36 47.78,-0.04 0,0 z m 158.8,1.67 c 18.86,-11.76 11.29,7.34 0,0 z m -188.36,-2.08 c 24.53,-12.82 23.24,4.4 0,0 z m 110.56,-2.02 c 8.39,-9.01 12.3,7.75 0,0 z m -52.25,-3.34 c -4.53,-9.15 7.24,3.91 0,0 z M 457.13,584 c -2.73,-8.74 11.48,5.52 0,0 z m -184.52,-2.77 c -5.25,-9.72 32.83,1.81 0,0 z m 127.43,-1.4 c 14.53,-25.93 49.99,4.37 0,0 z m 65.94,-0.1 c 0.34,-16.15 27.56,6.17 0,0 z m -157.15,-1.1 c 3.78,-10.68 16.95,7.29 0,0 z m 87.46,-1.3 c 4.88,-4.57 4.88,4.57 0,0 z M 329.1,576.5 c 11.95,-9.77 0.4,-1.67 0,0 z m 122.81,-0.42 c 3.19,-4.48 3.19,4.48 0,0 z m -158.75,-2.46 c -5.65,-9.07 35.55,0.53 0,0 z m 66.88,-4.07 c 31.9,-25 5.48,15.36 -5.12,2.58 l 3.01,-1.51 2.11,-1.06 v 0 z m 104.35,2.73 c 0.01,-8.57 8.26,1.09 0,0 z m -16.01,-0.79 c -3.02,-18.98 43.35,-5.53 0,0 z m -110.83,-1.76 c -44.67,-7.57 25.55,-0.86 0,0 z m 13.75,-1.77 c 12.65,-4.64 -6.86,-12.61 10.72,-3.71 -1.01,3.26 -8.54,8.59 -10.72,3.71 z m -77.95,-1.25 c 1.33,-8.44 7.68,-24.67 13.11,-6.99 -1.84,2.96 -12.29,13.5 -13.11,6.99 z m 16.7,0.68 c 6.95,-8.78 21.97,0.45 0,0 z m 105.75,-2.64 c -35.63,-13.2 36.67,0.79 0,0 z m 38.5,0.4 c 11.48,-13.23 -18.34,-16.42 8.19,-17.5 11.83,-13.65 14.34,13.78 -5.24,20.94 l -2.47,-0.65 z m -12.93,-3.05 c -36.69,-11.85 7.29,-33.82 4.83,-2.57 10.87,8.72 -4.65,6.96 -4.83,2.57 z m -90.53,1.3 c -32.01,-0.63 -23.69,-21.89 -5.24,-5.41 9.8,0.4 24.51,10.32 5.24,5.41 z m -5.14,-8.53 c 7.44,-8.39 12.31,5.78 0,0 z m 23.41,-1.36 c -4.69,-32.25 28.86,-3.5 0,0 z m 24.69,-1.8 c 8.22,-20.42 10.13,-19.76 12.84,-6.82 23.17,-27.1 -5.2,12.01 11.58,-0.19 -3.74,7.53 -18.26,11.16 -24.42,7.01 z m -80,-0.63 c 3.2,-4.63 4.81,4.48 0,0 z m 141.82,-1.33 c -0.6,-6.91 6.54,4.88 0,0 z M 319.2,547.89 c -9.78,-13.63 29.94,-1.21 0,0 z m -26.91,-1.23 c -28.55,-4.38 33.78,-27.85 9.14,-4.33 -19.73,-1.81 6.44,6.25 -9.14,4.33 z m 48.38,-3.08 c 3.08,-4.45 1.51,4.57 0,0 z m 89.97,-1.34 c -0.44,-11.17 6.5,8.78 0,0 z m -70.04,-0.03 c 1.55,-11.54 6.31,4.14 0,0 z m -43.36,-2.48 c -2.7,-10.84 25.81,-10.82 0,0 z m 20.31,-1.77 c -4.94,-16.8 41.88,-15.82 0.64,1.51 z m 90.1,-0.1 c 1.8,-3.33 0.56,5.39 0,0 z m -158.61,-1.44 c 10.31,-12.18 7.88,10.55 0,0 z m 165.08,0.75 c -7.6,-17.69 7.58,4.57 0,0 z m -152.81,-1.03 c 8.05,-11.97 14.68,7.19 0,0 z m 123.07,-4.73 c 9.01,-23.49 29.03,16.66 0,0 z m -133.07,-0.16 c 9.14,-8.73 17.83,-1.04 0,0 z m 94.35,-3.49 c 6.01,-8.55 -18.64,-28.32 13.33,-21.38 -2.5,10.62 6.83,30.88 -13.33,21.38 z m -56.33,-1.2 c -16.39,-27.5 40.38,-0.79 0,0 z m 22.04,0.22 c -2.44,-12.72 42.84,-24.96 2.07,1.64 z m 93.14,-0.97 c -5.6,-15.04 13.61,10.56 0,0 z m -34.18,0.22 c -19.67,-34.31 47.45,-26.6 0.82,-9.74 3.16,2.16 24.14,-2.03 -0.82,9.74 z m -113.91,-2.01 c -29.37,-4.86 33.59,1.76 0,0 z m 13.65,-3.01 c 3.86,-6.76 2.22,8.48 0,0 z m 121.29,0.15 c 1.72,-21.37 15.12,1.54 0,0 z m -142.29,-2.11 c -0.7,-12.43 32.92,5.97 0,0 z m 23.16,-8.85 c -31.32,1.71 -2.83,-35.14 -0.76,-9.29 -9.32,-2.87 10.87,15.15 0.76,9.29 z m 4.67,-0.45 c -0.6,-6.91 6.54,4.88 0,0 z m 15.96,-1.4 c 4.54,-6.56 4.2,5.56 0,0 z m 11.45,-3.1 c -15.68,-3.91 -38.62,-4.64 -7.08,-15.13 -0.75,8.19 35.85,6.95 7.08,15.13 z m -60.16,0.52 c -11.56,-61.25 26.42,-5.32 0,0 z m 4.6,-10.62 c 0.46,-28.38 -9.33,7.61 0,0 z m 68.55,5.1 c 6.7,-26.01 31.26,9.98 9.03,-0.38 4.44,7.29 -15.81,12.81 -9.03,0.38 z m 41.52,-2.09 c 17.91,-42.64 19.62,12.76 0,0 z m -12.06,-3.32 c -37.03,-11.78 14.57,-30.39 0.73,-8.82 14.59,-11.72 7.93,12.94 -0.73,8.82 z m 30.18,-2.5 c 3.2,-4.63 4.81,4.48 0,0 z m -102.69,-4.43 c -29.78,-10.42 24.74,-27.45 2.6,-7 17.68,-17.26 18.95,10.21 -2.6,7 z m 29.81,-4.01 c -7.18,-27.79 24.7,-6.86 30.94,-18.55 2.58,8.88 -23.61,22.58 -30.94,18.55 z m 56.42,-8.26 c -50.98,-17.4 22.27,-7.62 0,0 z M 273.4,474.32 c -27.6,-22 22.41,-14.07 2.94,2.43 z m -15.83,0.62 c 3.33,-14.2 8.41,4.6 0,0 z m 36.25,-7.6 c 4.81,-4.48 3.2,4.63 0,0 z m 9.38,-3.75 c -12.06,-9.3 8.24,-5.25 3.13,-16.21 18.89,-4.9 17.31,31.74 -3.12,16.21 z m -17.63,-0.72 c 2.65,-16.33 8.95,12.65 0,0 z m 85.34,1.13 c -2.09,-10.16 10.58,1.18 0,0 z m -109.58,-3.54 c 3.1,-6.59 3.1,6.59 0,0 z m 96.96,-1.34 c -2.86,-26.54 17.72,0.53 0,0 z m -28.88,-2.1 c 17.07,-39.76 37.98,12.79 0,0 z m 11.37,-5.41 c -13.87,-6.63 7.57,8.34 0,0 z m 29.3,4.48 c 3.19,-4.48 3.19,4.48 0,0 z M 252,453.66 c 9.94,-16.37 3.83,-20.59 19.28,-10.07 -4.38,5.21 -13.27,11.61 -19.28,10.07 z m 42.47,-0.09 c 5.04,-2.41 2.83,4.34 0,0 z m 29.69,-0.26 c -22.33,-27.17 19.17,-24.12 0,0 z m -46.27,-0.99 c -7.62,-32.86 45.52,-6.73 6.88,-7.06 -4.66,-1.89 9.52,12.14 -6.87,7.06 z m -27.58,-9 c -5.42,-10.5 7.12,2.48 0,0 z m 101.49,-3.36 c -21.68,-22.93 20.81,4.54 0,0 z m -22.2,-2.79 c -7.03,-12.82 11.3,5.62 0,0 z m 6.24,0.7 c -2.92,-13.98 7.86,5.53 0,0 z m -31.44,-3.11 c -0.15,-6.76 8.52,5.17 0,0 z m -24.32,-1.79 c 8.45,-18.72 10.98,8.24 0,0 z m -10.91,-2.84 c -5.48,-26.63 27.51,-11.65 0,0 z m 28.08,-2.21 c -5.39,-32.83 28.41,12.98 0,0 z m -48.17,0.43 c -6.52,-14.25 11.99,6.53 0,0 z m 67.25,-0.29 c 18.63,-31.98 39.3,1.65 0,0 z m -62.28,-3.6 c -0.29,-34.23 15.4,4.39 0,0 z m 58.53,-8.68 c -18.58,-28.15 15.48,-12.08 0,0 z m -69.69,-1.17 c -16.54,-37.19 29.01,-36.25 4.2,-3.88 -2.81,-1.61 -1.44,8.48 -4.2,3.88 z m 39.27,-6.84 c 2.22,-30.05 10.44,4.53 16.67,-4.68 -2.59,4.76 -12.09,4.76 -16.67,4.68 z m 40.22,-3.92 c -16.54,-34.72 29.27,10.99 0,0 z m -57.91,0.08 c -28.86,-19.57 37.59,-2.76 0,0 z m 5.89,-10.55 c 9.84,-5.74 6.11,5.19 0,0 z m -6.53,-4.78 c 6.55,-4.61 6.55,4.61 0,0 z m 37.5,-3.24 c -17.21,-10.09 20.07,-30.74 3.59,-4.74 25.8,-7.59 6.65,15.68 -3.59,4.74 z m -25,-0.51 c -19.51,-4.33 10.03,9.72 8.04,0.03 l -4.62,1.13 z m -44.59,-6.98 c 20.26,-30.3 21.28,8.22 0,0 z m 21.78,-0.72 c -10.28,-27.34 24.92,0.81 0,0 z m 59.06,-1.76 c 4.35,-6.02 8.16,6.74 0,0 z m -45.21,-0.83 c 30.64,-13.58 34.13,7.41 0,0 z m -38.5,-9.63 c 25.73,-17.88 -22.15,-11.07 12.59,-17.47 20.43,7.3 -3.65,22.14 -12.59,17.47 z m 8.71,-3.79 c -5.01,-2.22 -4.88,4.08 0,0 z m 52.11,3.58 c -7.33,-17.15 17.2,-23.61 10.43,-5.58 16.66,-18.72 0.98,19.51 -10.43,5.58 z m -29.58,-6.09 c -19.25,-18.11 45.6,-18.47 10.71,2.23 z m 13.73,-3.16 c 1.98,-12.76 -9.39,3.44 0,0 z m -23.27,-9.93 c 6.15,-26.2 26.68,-20.89 10.35,-2.8 2.92,6.48 -8.44,4.81 -10.35,2.8 z m 29.68,-3.01 c -15.82,-60.18 23.14,15.77 0,0 z m -57.67,-0.82 c 7.57,-16.34 24.41,2.84 0,0 z m 13.75,-6.25 c -16.75,3.38 -22.04,-16.54 1.86,-4.54 0.75,-16.3 17.4,25.8 -1.86,4.54 z m 52.19,-9.02 c -9.08,-17.5 10.25,7.26 0,0 z m -36.47,-8.79 c 2.73,-17.06 23.02,2.25 23.35,-8.34 17.75,2.33 -21.29,24.32 -23.35,8.34 z m -14.15,0 c -18.9,-1.02 -0.18,-14.87 9.02,2.26 l -2.81,3.68 z m -22.07,1.88 c -10.51,-21.49 -0.11,-36.99 10.83,-19.39 -9.38,-0.15 -2.41,26.32 -10.83,19.39 z m 66.14,-7.21 c 5.04,-2.41 2.83,4.34 0,0 z m -38.83,-7.59 c -16.75,-1.21 13.15,-21.46 14.31,-8.34 18.87,-21.48 23.53,15.12 -14.31,8.34 z m 28.83,0.12 c 4.44,-8.11 11.7,3.03 0,0 z m -2.86,-13.96 c 6.3,-6.91 5.14,5.02 0,0 z m -39.97,-3.04 c -15.18,-20.89 48.54,-7.45 8.61,-4.48 8.03,-18.73 -9.08,13.3 -3.59,7.3 l -5.01,-2.82 v 0 z m -21.55,-1.62 c 8.29,-7.11 15.74,5.42 0,0 z m 0.94,-4.81 c -17.14,-7.24 39.08,-12.99 9.17,0.69 z m 44.93,-6.41 c -22.11,-25.53 16.43,-14.37 10.07,1.97 13.74,5.69 -11.96,4.68 -10.07,-1.97 z m -18.36,-4.55 c 8.29,-6.98 6.69,6.77 0,0 z m -37.62,-2.81 c 16.44,-33.92 39.7,9.94 0,0 z m 17.62,-9.06 c -5.22,-3.31 -7.71,4.62 0,0 z m 12.12,5.45 c -0.6,-7.35 6.34,2.72 0,0 z m 7.92,-5.42 c -26.27,2.37 -27.47,-40.29 -39.76,-2.78 -31.81,-50.88 64.55,4.27 39.76,2.78 z m 9.62,-7.64 c -21.99,-41.16 30.26,0.22 0,0 z M 225.9,236.41 c -22.2,-59.5 34.84,22.91 0,0 z m -38.27,-8.4 c -4.14,-10.68 9.32,6.79 0,0 z m 15.9,0.98 c -3.86,-15.94 28.64,1.18 0,0 z m -11.73,-5.04 c -47.52,-22.77 33.88,-9.06 0,0 z m 45.79,0.89 c 3.02,-8.69 3.02,8.69 0,0 z m -8.75,-10.04 c 6.22,-8.34 8.39,5.15 0,0 z m -14.06,-1.21 c -15.62,-15.42 13.84,-42.74 3.26,-8.75 18.64,-13.62 3.48,14.92 -3.26,8.75 z m -42.84,-9.24 c -21.12,-45.19 34.79,-0.85 0,0 z m 27.1,-3.73 c -2.53,-2.01 -21.53,7.74 -8.69,-13.29 15.64,-16.85 14.7,33.13 8.69,13.29 z m 1.77,-19.44 c -30.88,-65.52 29.16,17.61 0,0 z m -37.39,1.57 c -2.75,-22.41 54.14,-8.06 6.18,-3.64 -0.27,2.21 -3.87,6.02 -6.18,3.64 z m -11.26,-10.2 c 5.26,-27.87 -27.61,-6.67 4.29,-28.77 -0.48,5.03 7.64,35.24 -4.29,28.77 z m 14.19,-3.32 c -0.39,-8.86 14.62,7.15 0,0 z m 7.1,-6.91 c -4.44,-15.24 25.79,-46.24 4.94,-3.31 10.35,-11.84 22.94,-8.96 5.36,4.11 z m -9.61,-13.1 c -10.76,-42.21 27.24,-12.74 8.23,-12.19 -10.25,-10.67 1.21,20.28 -8.23,12.19 z m -32.25,-0.88 c 3.65,-27.67 43.44,-5.66 0,0 z m -13.4,-14.23 c -7.37,-23.98 18.41,6.33 11.86,-7.88 29.5,-44.57 3.16,28.63 -11.86,7.88 z m -8.1,-7.4 c -7.11,-10.11 6.05,-33.03 16.58,-12.23 -4.6,-2.01 -15.44,22.09 -16.58,12.23 z m 36.73,0.08 c 0.09,-48.28 22.64,6.78 13.94,-11.29 15.56,-11.59 -6.11,24.1 -13.94,11.29 z M 96.79,112.96 c -5.3,-12.17 -30.05,-16.4 0.96,-18.44 7.53,0.85 5.8,27.44 -0.96,18.44 z m 33.91,-9.06 c 18.32,-59.6 5.27,33.06 0,0 z m 11.84,2.27 c 27.73,-28.96 -3.04,13.2 0,0 z m -36.91,-9.33 c 2.65,-19.19 20.76,11.46 0,0 z m -34.03,-2 c -14.49,-22.37 29.11,-28.14 1.41,3.8 l -1.25,-0.97 z m 52.72,0.25 c -20.79,-25.7 29.4,-21.6 0,0 z M 56.99,88.63 c -20.76,-17.92 32.19,-26.32 0,0 z m 54.34,-1.3 c 4.81,-4.48 3.2,4.63 0,0 z M 82.58,86.05 c 1.58,-45.64 28.1,-12.77 0,0 z m 16.95,-0.29 c 5.92,-32.11 22.09,-5.63 5.28,-5.02 6,1.56 -3.25,9.71 -5.28,5.02 z M 43.4,78.01 C -6.12,49.4 74.45,73.34 64.51,49.82 88.44,69.43 50.1,65.3 43.4,78.01 Z m 78.87,-4.54 c -6.38,-10.07 11.25,3.36 0,0 z M 96.39,60.15 c -12.19,-25.18 20.08,9.96 0,0 z M 74.47,61.5 c -6.02,-19.58 34.97,-21.7 0,0 z M 37.7,59.1 c -7.08,-33.64 31.5,-4.52 0,0 z M 22.01,52.79 c -4.27,-38.7 30.12,1.58 0,0 z m 53.71,-5.04 c -5.52,-21.17 12.1,2.84 0,0 z M 58.64,43.12 c -67.66,-16.86 16,-20.54 0,0 z m 4.69,-4 c -10.65,-13.42 17.79,7.63 0,0 z" />
+ <path
+ id="stringr"
+ d="m 1258.7312,1653.417 c -0.3865,-36.958 18.2495,-41.0143 25.4369,-76.5037 1.3531,-15.2521 23.893,-63.6774 9.7553,-21.7556 -6.6471,26.1725 -26.106,71.6699 -22.7608,84.5575 18.3419,-60.1485 40.4573,-120.0111 43.3104,-182.541 2.0751,11.8399 1.3581,46.9381 -6.1683,66.5284 -7.8455,40.7947 -24.3873,79.8011 -34.2273,120.1417 23.9421,-57.9283 40.0257,-118.9426 46.8899,-180.13 -14.9879,4.425 1.3192,-41.0451 3.2432,-33.2004 -6.807,12.6393 -3.1182,39.371 1.32,8.61 -1.6355,-24.2935 -2.0576,-35.8152 -0.9724,-63.2487 4.0965,-15.0687 8.2778,-51.5076 0.1822,-81.076 -3.4359,-24.2828 -4.3624,4.4702 -6.7394,-25.468 -3.5419,-17.6861 -3.2333,-19.2123 1.7392,-13.092 -6.0183,-15.753 -6.0796,-51.9372 -10.5782,-45.3094 3.3307,-18.06 -30.5491,-38.3153 -0.9517,-18.037 8.4786,15.3726 12.7287,76.3099 16.8962,67.0378 -4.4413,-40.8904 -20.3586,-82.0111 -12.8705,-123.1278 1.7707,50.3402 11.2659,100.4062 21.9689,149.7546 -1.7576,-44.3742 -18.5781,-88.3795 -16.1242,-133.0993 1.9945,21.4886 7.6129,62.6729 14.5927,90.7956 0.9351,3.7397 -1.4126,-37.5325 4.0049,-1.465 2.8802,11.315 7.0395,37.187 -1.4542,12.9545 8.9351,22.2792 9.3733,44.8344 8.5908,76.9944 -0.9312,-13.3309 -4.0999,-63.7856 -5.0199,-24.0755 -0.7661,38.1483 -1.0201,77.9767 -2.5505,115.0341 6.1177,-21.3972 8.4393,-5.4398 9.6637,-33.6684 3.309,-28.392 -1.043,-82.4921 0.755,-95.9513 12.2587,64.346 -3.1916,129.5789 -10.5788,193.7289 -5.7841,54.6591 -33.2444,104.9152 -47.5119,157.7967 -9.4716,2.1211 -19.6946,11.9504 -29.8412,7.8149 z m 27.2186,-17.5515 c 7.1995,-12.5152 19.138,-50.9811 18.5881,-56.8272 -3.9813,19.2556 -21.763,71.5271 -23.1734,64.5981 l 2.1499,-3.4985 2.4358,-4.2724 z m -18.0883,-6.686 c 2.8487,-13.1471 -8.3374,20.2415 0,0 z m 45.0706,-80.759 c 5.1548,-33.6709 13.8514,-41.5023 20.1196,-73.7241 4.5052,-16.6207 14.8985,-81.5172 2.9736,-32.0901 -3.9064,5.5784 -14.3664,84.5809 -10.8929,43.2241 9.2603,-61.3449 13.8043,-123.9642 7.8986,-185.4711 -3.4883,-17.6298 -9.6008,-33.9607 -5.0362,-5.5577 8.6781,49.6041 4.3066,100.469 -0.184,150.2803 -5.1344,39.8229 -13.7902,79.1576 -21.9631,118.5824 2.1251,-5.1579 4.5346,-10.2275 7.0844,-15.2438 z m 10.4497,-30.6168 c -1.3332,-6.9211 -3.6568,6.8753 0,0 z m 5.6054,-131.7628 c -3.413,-32.7122 -2.0369,34.9991 0,0 z m -52.8316,198.5883 c 3.3844,-18.1701 12.6561,-50.0553 19.7725,-57.7737 -1.3718,2.9075 -22.1826,76.1756 -19.7725,57.7737 z m 22.7976,-60.9292 c -0.098,-15.0171 16.8431,-47.1134 6.6757,-14.7256 -3.2873,2.0883 -6.6676,34.7588 -6.6757,14.7256 z m 42.7184,-149.3744 c -1.003,-17.835 2.2777,-29.0655 2.3358,-3.7748 1.3248,16.0576 -2.6123,39.2374 -2.3225,9.2379 l -0.014,-5.4631 v 0 z m -16.9859,-32.1025 c -0.9974,-15.4341 -4.8781,-67.4428 1.7531,-24.5078 2.9595,7.3587 -1.3791,55.8719 -1.7531,24.5078 z m -132.6307,-58.3124 c -32.4421,-16.8559 19.9643,10.9677 20.8148,-14.4835 32.0965,-32.4254 47.1034,-75.2804 54.1134,-116.5275 1.7401,-36.3615 -0.1354,-72.7617 -6.9557,-108.5868 15.5899,42.9794 13.7971,89.8471 5.6271,133.836 -13.8352,38.4495 -28.09,82.1185 -67.62,106.937 z m 11.6929,-14.824 c 36.5937,-35.0638 53.1335,-83.493 56.5547,-129.468 0.6862,-29.6782 1.217,-59.3665 -7.7965,-88.2849 -5.2261,-16.9784 -6.2821,-40.7218 1.566,-7.8059 14.5629,58.0896 15.3639,120.7862 -11.4955,176.4866 -7.0264,20.7449 -31.218,55.0295 -47.1903,57.0806 l 3.3634,-3.426 z m -14.9571,7.7066 c 26.1134,-48.4525 50.9802,-100.4937 43.1406,-154.9772 -2.739,-67.7962 -37.6526,-135.87628 -10.9356,-203.23009 8.6003,-42.43163 51.8664,-68.25207 81.4795,-100.05503 35.0374,-30.82118 69.0003,-63.976 111.8168,-87.0595 -64.4278,45.64222 -119.1635,100.29183 -173.9667,153.93509 -11.3229,19.75729 38.5469,-38.1407 52.3105,-46.98941 61.1648,-57.60958 125.1479,-115.5343 204.2786,-155.18517 -39.5863,15.68546 -73.2641,40.56928 -109.5906,61.02976 -56.3333,41.73524 -106.3991,89.51635 -153.5342,138.48688 -35.4649,59.22696 -27.9356,129.55257 -11.3832,192.35537 14.8826,59.9266 5.4422,122.8086 -24.7637,178.2627 -2.748,23.8093 -26.1734,27.6414 -11.9344,0.7471 14.171,-33.7631 -0.1524,-1.3882 -6.0144,2.9396 13.1497,-35.2889 31.935,-69.7667 31.1546,-107.7507 10.9088,18.1406 -12.7608,67.7201 -13.1442,77.0844 21.4163,-34.6453 20.3888,-74.0238 13.3959,-111.5916 -0.909,-15.909 -9.7906,-53.3073 -4.6877,-16.8896 3.8012,17.2956 4.2702,56.9195 -1.3169,15.7606 -7.0794,-40.1075 -15.6155,-80.8959 -24.7782,-120.16527 -6.5731,-1.76932 9.4063,48.17917 11.7604,65.33887 4.09,21.0145 17.9834,70.793 7.9509,76.9641 -7.6198,-77.6057 -46.2749,-154.00872 -29.1833,-232.4296 20.275,-86.08006 106.7468,-145.55741 194.3791,-183.05658 18.958,-6.81132 53.3377,-19.71672 63.576,-18.56164 -32.9145,14.24637 -63.2735,35.22047 -95.1916,49.00561 17.8094,-15.02127 64.8787,-34.81797 71.4939,-42.49121 -75.9707,29.11619 -148.5836,70.49889 -197.3375,128.85149 -9.3962,11.26337 -30.1048,51.83555 -25.2085,55.10763 16.3882,-61.17158 73.9797,-104.32822 131.7598,-138.8206 15.4121,-8.76329 88.3176,-45.62192 40.4518,-18.42357 -55.8367,33.15363 -110.9066,71.61428 -145.151,122.5481 -31.045,54.64994 -30.6697,117.30326 -16.841,175.73687 2.1874,16.2037 14.8835,58.6149 6.1657,17.4316 -17.7057,-72.06438 -22.7376,-154.36334 31.5279,-216.62751 25.5908,-29.85314 59.9957,-53.47044 93.5524,-76.32 -37.2523,34.26201 -86.51,62.02156 -108.9795,106.71668 -15.1722,28.88833 -26.7088,59.89481 -23.4136,91.82068 -3.4268,63.34435 25.1842,123.73855 25.3225,186.90085 6.0644,-17.282 -5.3908,-63.826 -10.4666,-92.2296 -13.8439,-61.17445 -23.432,-127.49511 11.3421,-185.19482 26.2798,-51.10195 82.5961,-83.90709 131.3744,-118.51581 51.0022,-31.32742 106.5603,-58.38361 168.1543,-70.92877 49.2191,-18.74645 -21.5421,16.50691 -37.7038,24.26541 -45.6221,28.7126 -77.8942,69.57084 -116.8451,104.20666 -13.3231,14.16988 -63.3977,63.20251 -21.3524,25.22629 39.1551,-37.18366 76.0838,-76.21175 116.851,-112.078 11.3253,-12.05103 70.8699,-38.93236 29.6995,-16.59795 -54.8342,33.21339 -89.6999,83.71224 -137.0277,123.61629 -39.0947,40.93726 -99.3539,70.94948 -114.1857,125.34661 -21.3246,61.75439 20.3783,123.58789 12.0831,185.54109 -2.291,-44.6842 -14.487,-88.5241 -22.2318,-132.5855 -4.1715,-45.02474 13.9784,-90.75495 53.2915,-121.73485 50.2716,-47.23025 97.0842,-97.03326 147.988,-143.82348 12.3577,-16.10681 -35.136,31.10104 -45.4875,39.88185 -41.8357,37.03723 -75.9131,79.74424 -118.8168,116.0203 -47.0642,44.25211 -46.0807,108.42098 -30.0372,162.98578 10.5899,51.7163 20.2609,106.3376 -2.8904,156.7604 -10.1121,20.1561 -11.6825,32.6123 2.0002,5.6075 28.8717,-63.6675 23.9409,-133.9561 4.3634,-198.9844 -14.6121,-52.57841 10.553,-108.02503 58.3178,-142.43461 50.1576,-41.62225 96.1286,-86.85806 141.6399,-131.95513 -11.4012,13.08296 -51.6084,60.89391 -42.5711,55.45728 13.0719,-16.29312 45.8402,-56.90499 48.3755,-54.95055 -21.7223,25.00561 -48.5102,62.49117 -65.5915,71.75271 19.8771,-8.82491 -35.3871,30.34739 -46.3531,43.08078 -30.1336,24.47594 -58.2084,49.18392 -81.9845,78.24384 -13.7108,12.94667 -15.6756,64.97358 -4.6019,91.66798 18.4209,75.2959 21.0882,160.7474 -32.2309,226.7129 -6.7047,6.5817 -13.6854,16.4179 -23.2638,19.2401 z m 2.9337,-19.2749 c 22.6495,-45.7481 40.5108,-94.8779 31.8241,-145.0521 -5.7514,-50.2788 -20.3089,-100.108 -23.9734,-150.23107 -3.705,70.67307 33.7464,140.07877 19.259,211.29757 -3.7071,32.66 -25.7885,64.2685 -32.2588,94.3587 l 1.8696,-3.3508 z m 19.1008,-7.6715 c 20.7561,-40.6381 35.8545,-84.431 28.2774,-129.1801 -0.4986,-41.7174 -16.5676,-81.7454 -19.2028,-123.07317 -3.4485,-46.98484 17.7286,-94.49844 60.26,-125.23848 12.972,-11.56722 45.8607,-40.14126 14.512,-15.39376 -36.9969,27.37551 -70.2542,61.70309 -75.1304,104.87884 -9.2004,46.56917 7.956,91.89767 14.9219,137.61027 5.6461,47.446 0.6603,95.8129 -22.4578,139.7397 -5.1741,9.6814 -14.3733,35.1442 -1.1803,10.6567 z m -30.4101,-291.21498 c -3.2244,-60.68925 24.8941,-122.5055 79.9377,-162.12443 12.4264,-10.20841 74.3626,-54.0036 28.0467,-23.67949 -48.8015,34.12148 -96.3262,76.19339 -104.3872,132.08939 -7.7961,24.5969 -7.4281,65.01027 -3.8169,81.77517 0.2427,-9.35191 0.2263,-18.70708 0.2197,-28.06064 z m -5.5061,11.99009 c -7.2336,-12.59976 8.3167,-71.36017 1.2762,-60.14376 -6.2505,17.1015 -4.4487,76.60001 -0.1952,70.73939 l -0.4268,-4.82135 z m 26.2068,-23.32508 c 4.3824,-59.13455 38.1001,-116.19565 92.8006,-153.22317 17.2274,-15.25015 53.3693,-38.43319 59.7842,-47.06314 -54.0533,38.11521 -114.7727,76.34936 -138.4751,135.14761 -8.9199,9.59992 -22.6596,82.04958 -14.1097,65.1387 z m 7.8678,-14.64958 c 10.5492,-67.17712 73.3269,-113.09452 124.5493,-159.71171 33.3469,-27.8686 71.9094,-51.6427 111.2977,-72.2144 -78.1544,31.4272 -135.8127,88.66532 -191.8448,142.93154 -28.7119,23.46438 -50.1491,81.83528 -46.1994,98.53956 l 1.0948,-4.3839 z m 15.4245,-2.51455 c 9.295,-30.53075 42.4296,-56.1904 64.0392,-74.49841 -34.8787,20.01826 -61.0151,51.07543 -70.2018,86.14678 3.7214,-3.00066 3.6926,-8.12937 6.1626,-11.64837 z m 45.5601,-17.66661 c 36.1283,-42.33897 90.0302,-73.33363 121.6903,-118.60492 -38.8941,42.46973 -87.9854,77.26077 -126.9861,119.49531 -17.6691,21.30933 -9.1215,15.45139 5.2958,-0.89039 z m -5.343,-66.64008 c 51.7661,-51.9126 108.4732,-101.38115 176.9296,-137.35612 -22.4398,7.10314 -63.9811,33.58411 -88.636,54.12706 -36.7632,30.95774 -75.4835,61.52393 -103.9868,98.39874 6.0401,-4.38065 10.5771,-10.05762 15.6932,-15.16968 z m 36.759,-6.41015 c 27.2177,-28.72514 70.784,-62.08379 91.7696,-85.94933 -40.0308,33.00077 -77.9346,67.91283 -114.2369,103.89507 8.4313,-5.06265 15.5415,-11.4851 22.4673,-17.94574 z m -53.5394,4.43852 c 14.1135,-16.67436 40.7144,-36.82331 49.7576,-48.52906 -15.8589,12.76202 -68.708,58.68946 -57.0709,56.71524 l 3.3414,-3.6856 3.9719,-4.50057 z m 62.0355,-4.46018 c 50.1195,-42.95189 93.0484,-92.50306 149.4366,-129.80161 16.4419,-10.78448 73.0305,-37.28489 25.9643,-17.47513 -66.1907,33.07387 -110.7046,88.15926 -164.3859,133.42518 -11.4407,10.37187 -44.4107,42.50265 -11.015,13.85156 z m -80.1609,425.688 c 14.9439,-11.0614 16.6537,-21.1651 1.494,-3.6138 25.7019,-46.6402 51.2265,-96.3837 44.2567,-149.2266 -0.2836,-18.0396 -10.7113,-81.6743 0.8307,-30.5879 9.4237,54.8855 -0.6085,111.3823 -31.3811,160.4823 0.457,14.4459 21.1989,-47.3408 27.8558,-39.9565 -6.8899,10.8994 -12.3056,24.5911 -16.1219,31.328 4.1049,7.276 -45.5738,53.6921 -26.9342,31.5745 z m -54.262,1.088 c -3.6735,-32.6305 25.0971,-60.1184 23.5394,-92.9871 -4.4098,-20.4285 9.4145,-37.6314 7.4843,-6.8461 0.4286,33.5191 -27.6847,74.4829 -31.0237,99.8332 z m 135.3426,-40.5642 c 0.6927,-7.4721 1.4929,8.0907 0,0 z m 19.9709,-8.5168 c 1.3482,-5.9061 1.3482,5.906 0,0 z m -2.5007,-12.1203 c -6.4777,-18.8967 -2.1997,-30.3444 0.9221,-3.016 l 0.1735,4.2721 z m 3.9197,-0.4369 c 0.991,-5.0499 1.5629,5.9639 0,0 z m -61.7455,-7.818 c 9.8554,-13.8021 16.5319,-86.286 13.8337,-34.8777 -0.8662,11.2075 -5.1202,28.5421 -13.8337,34.8777 z m 14.3544,-14.3581 c 9.9968,-27.2509 1.5165,-79.4154 3.9998,-93.0214 3.3981,30.6171 8.6507,66.345 -4.3404,94.8639 z m 20.3859,-0.9725 c -0.4606,-16.1832 -4.2995,-61.5815 -0.3432,-59.9463 6.7998,17.0789 -0.6293,52.6483 0.3432,59.9463 z m -11.6257,-3.2758 c 7.8929,-22.2729 -0.5065,-57.3951 3.4744,-73.0493 1.1812,20.4469 8.7542,64.2527 -3.4744,73.0493 z m -11.3426,-69.4941 c 0.1228,-16.2293 -11.7217,-66.0937 0.7989,-24.794 4.5462,13.7835 2.3685,68.489 -0.7989,24.794 z m -32.5866,-85.4707 c -13.8682,-24.44414 0.6803,-7.3465 0,0 z m -7.6877,-18.3228 c -2.508,-15.98357 5.4246,12.9717 0,0 z m -2.1894,-8.62612 c 0.9911,-5.04993 1.5628,5.96372 0,0 z m -1.5406,-6.55163 c 0.9912,-5.04984 1.5627,5.96406 0,0 z m 115.4247,-143.86368 c 4.9882,-6.06927 5.4262,-1.02587 0,0 z m 9.2437,-9.33255 c 20.3238,-16.47672 -16.7059,16.27245 0,0 z m 6.1626,-6.39107 c 4.9879,-6.06931 5.4261,-1.02588 0,0 z m 89.5525,-105.2594 c 36.3562,-27.71444 8.9982,-2.52135 0,0 z m 32.1564,-20.5297 c 4.988,-6.06925 5.426,-1.02593 0,0 z m 17.7171,-10.66658 c 25.8628,-14.14673 -10.7762,7.84224 0,0 z m 10.6929,-5.74677 c -13.6394,-3.43875 77.9553,-44.93062 30.5186,-14.89231 -10.0457,4.76068 -19.747,12.11619 -30.5186,14.89231 z"
+ style="fill:#000000" />
+ <path
+ id="stringl"
+ d="m 974.1793,1646.0925 c -18.46888,-30.6318 -31.92984,-65.3782 -42.21067,-97.8269 -1.29171,-37.1429 -2.77145,-4.676 -4.86644,-16.1283 -11.30996,-59.5747 -13.40944,-120.46 -12.33817,-180.9885 10.69748,-100.9672 35.77318,-202.0003 86.23698,-292.0162 20.7895,-31.2311 36.7407,-70.56942 29.5666,-107.90307 -20.7828,-55.9981 -73.09575,-94.47947 -94.26565,-150.05328 24.67143,45.78038 61.27065,84.43853 89.02115,128.3923 15.0503,29.62775 12.3558,64.6748 2.6218,95.41765 11.6726,-7.2101 13.5014,-60.36938 4.7699,-83.91412 -23.1456,-50.47914 -69.01715,-87.92571 -91.78958,-138.85261 -11.25411,-21.91551 -24.09151,-48.81935 -18.85775,-30.02103 -3.52526,-16.69514 -47.89269,-51.76266 -40.95122,-48.98176 14.66234,4.57755 51.73839,51.7786 25.60846,17.45438 -36.40537,-37.24249 -92.68735,-46.87583 -133.36478,-78.44613 57.2861,32.59102 131.20724,50.93672 163.39035,112.14293 22.57389,45.82893 53.06977,87.12892 85.85852,126.75238 31.0885,39.02874 29.523,91.31698 14.5682,135.94876 2.0936,7.5448 15.7815,-47.65574 13.697,-64.52029 -3.1771,-68.60934 -67.669,-111.77894 -95.90838,-170.60422 -20.69777,-46.7881 -58.29413,-86.61931 -108.17239,-106.28976 -13.20691,-4.78907 -74.33394,-35.37053 -59.94968,-32.74432 48.20084,27.81574 107.30727,42.30196 141.08353,88.6049 30.32661,42.83965 51.9486,90.87749 87.72122,130.30175 15.8331,10.45425 34.804,68.06883 35.4587,58.13884 -15.4521,-51.97557 -62.36842,-87.44645 -86.93509,-135.16977 -23.86295,-46.3886 -57.5093,-91.51169 -109.78237,-111.46705 -18.27424,-6.3615 -69.00894,-32.43987 -22.94774,-12.49585 54.95752,19.06038 106.65796,53.39883 131.57549,105.22516 33.09775,55.32369 83.53041,104.54395 95.09241,169.10287 1.9284,18.05574 -1.4945,80.31704 3.6203,29.60092 3.7102,-70.57245 -47.3589,-127.87168 -84.72085,-184.14085 -21.34371,-34.08 -43.6956,-68.94368 -80.42906,-90.07346 -20.54845,-13.90794 -50.05768,-30.60034 -61.03962,-32.65218 34.4606,16.00686 -33.72865,-9.12566 -43.59092,-17.60436 -29.40441,-24.60354 32.51397,10.70281 42.7587,12.84915 52.90027,22.35132 111.17905,34.70313 156.93355,70.29885 51.913,33.62665 98.9019,79.49481 113.6235,139.32545 20.9595,65.95811 8.0346,135.01322 -5.7922,200.92312 -8.2574,53.566 -3.6798,107.7057 3.2345,161.1029 -7.2375,-22.8278 -10.9362,-62.7848 -13.0691,-78.7836 -0.9883,17.2658 10.8567,85.4271 1.1666,42.5402 -1.6902,-19.514 -7.688,-59.8297 -0.7999,-58.8494 0.8433,-65.1141 16.4299,-128.9589 19.9294,-193.8939 1.9486,-17.51105 -10.528,-64.07302 -8.1199,-65.86214 5.0979,2.33463 -29.581,-55.22209 -27.377,-57.84269 7.4881,0.99202 -45.1234,-57.04965 -16.4162,-19.34331 31.4175,48.60326 54.7674,104.66097 47.6509,162.73393 -6.8061,90.00441 -41.4202,183.72941 -5.425,272.09221 8.8064,14.146 -3.3761,39.3433 -8.8873,10.3126 -23.1292,-40.8904 -33.2096,-87.6228 -25.9361,-133.7192 4.1939,-55.6287 19.8977,-110.3638 19.9385,-166.14014 -4.1486,-61.78613 -35.2202,-119.40881 -73.5969,-168.2399 -25.02922,-26.61036 -51.56254,-52.27829 -81.09643,-74.36467 40.18646,22.14172 71.33363,57.32072 99.10143,92.10686 34.4645,56.08324 69.1643,118.72931 57.5521,185.97487 -7.6554,68.31728 -30.567,137.49818 -16.2313,206.30188 4.4466,17.1159 23.0642,63.7926 27.9754,62.1617 -17.1154,-38.7954 -34.6009,-79.7506 -29.7408,-122.7744 3.804,-67.1879 27.0601,-133.3255 20.8197,-200.86253 -7.2135,-54.87217 -36.9085,-104.82572 -70.6217,-148.82628 -13.5226,-17.0852 -55.41093,-51.40335 -55.26432,-55.93804 62.37792,42.14446 102.00552,108.72305 124.34372,176.98635 21.5915,91.1686 -26.0219,181.6066 -14.8561,273.1158 7.9674,40.2469 -0.8095,-26.5248 2.1292,-38.7339 1.7638,-88.0329 42.5408,-178.63709 6.1308,-264.67202 -20.5599,-45.5507 -46.7667,-89.17573 -84.47581,-123.91686 11.84751,3.11867 49.48181,44.23996 59.82341,68.79281 29.803,45.8031 48.7366,99.14482 42.497,153.52906 -5.9602,85.51801 -40.0306,173.81831 -8.3005,258.13481 13.4444,28.2974 -9.9138,-31.3555 -7.9149,-41.6428 -10.1548,-82.4546 19.4468,-162.8303 20.0641,-244.79545 -0.7438,-54.71047 -28.0717,-103.72371 -57.6167,-149.05816 -17.4552,-31.27425 -51.05394,-51.14994 -70.56564,-63.52545 -30.96431,-20.63184 -67.06674,-33.79714 -102.62325,-45.39872 25.88945,11.42754 69.64034,51.36617 77.67602,56.17236 -10.7566,-13.85482 -58.18171,-45.75485 -50.06266,-43.9616 67.87933,39.48381 106.64233,108.73425 147.27843,170.42196 -12.6113,-33.23762 -38.8143,-63.15773 -54.7682,-92.88491 37.2803,43.62295 63.8236,95.70064 80.1609,149.5558 11.8818,50.15921 -4.5559,99.84897 -20.0269,147.39047 -20.1498,58.4806 -15.258,124.6425 20.4336,176.9244 15.0662,17.1282 16.8106,27.3243 -0.3382,5.1622 -46.8445,-47.3212 -48.2983,-118.9198 -30.8332,-178.2722 -7.2602,4.0733 -17.014,59.0483 -12.2065,84.3166 1.9878,17.7308 9.0507,51.8495 -0.8869,14.9734 -10.8605,-30.8499 7.6667,-92.88 7.457,-104.9019 -22.3096,56.4321 -17.3975,123.6664 23.6341,171.4767 6.2211,9.0625 38.9667,42.9388 10.9482,19.9576 -32.6017,-28.5308 -52.5147,-68.5014 -61.5356,-108.9764 -10.30707,-29.8566 24.4042,-103.9875 20.651,-101.3368 -20.7034,42.5486 -35.94125,94.1633 -12.2267,138.5463 8.0475,30.5019 37.5674,58.5582 53.7204,78.6581 -38.8241,-29.9673 -61.6466,-76.4127 -69.1618,-122.6449 -2.7177,-32.9754 15.7899,-72.5345 24.8211,-96.6881 -14.405,12.7805 -30.2846,94.7602 -27.7736,75.0591 0.4181,-22.7404 21.9645,-73.4117 19.4568,-76.886 -18.4441,40.7834 -24.71898,85.0908 -23.4771,129.2272 -4.17773,4.5637 -2.33116,-42.1442 -0.0421,-57.8234 0.27742,-19.0672 19.0611,-65.4263 16.2466,-66.3153 -19.9573,42.5944 -21.36859,89.3057 -22.48785,135.0811 -8.66685,42.0814 3.8858,-35.3308 -5.44728,-0.7414 -12.15116,39.1044 -19.17037,79.2999 -27.72609,119.1392 2.40371,-30.2387 11.2055,-70.6481 20.87216,-103.6955 6.68575,-17.0117 14.19521,-69.0479 2.60778,-22.7499 -14.45157,45.0138 -22.81159,91.5655 -29.41358,138.0236 -2.8583,-68.5388 33.54087,-131.7636 36.93466,-199.7715 3.70469,-21.3595 16.4064,-49.9807 19.0141,-65.4068 -17.84992,37.3807 -23.59472,78.255 -29.57126,118.4276 -20.16919,62.8198 -35.79338,128.4914 -32.23286,194.5636 8.29138,15.0295 -3.88299,41.5944 1.2561,63.4482 6.02804,24.1791 1.77273,44.7161 9.22436,70.3024 8.29463,48.2078 21.52515,96.6922 31.71952,143.7861 -4.36427,0.5489 -10.66851,1.3392 -12.60908,-3.8452 z m 1.56814,-12.3727 c -20.09735,-48.9784 9.29309,34.2616 0,0 z m 3.96195,-4.3658 c -16.20533,-47.4253 -19.92936,-98.0168 -33.50779,-145.733 8.14129,53.0601 17.11181,106.725 35.72685,157.543 4.7428,4.3276 -3.0451,-11.447 -2.21906,-11.81 z m -14.25459,-29.1712 c -10.22292,-46.9123 -20.39895,-94.3206 -28.3158,-141.3069 3.17983,47.4652 16.06703,96.1089 26.68961,143.3086 2.98286,11.7832 7.11201,18.611 1.62619,-2.0017 z m -6.49554,-6.8366 c -9.74701,-25.3255 1.96737,17.2927 0,0 z m -11.09258,-48.8489 c -4.827,-15.3438 -9.96973,-57.3349 -13.21325,-57.0228 2.39801,26.3004 13.75104,59.1783 14.95627,80.8224 -3.92223,-15.535 -15.30823,-46.7439 -6.08083,-13.6268 2.53943,19.1197 13.87007,25.3368 7.15764,2.3806 l -1.27259,-5.7977 z M 937.43,1523.0883 c -1.88216,-11.4062 -13.04951,-67.3868 -7.65615,-27.6814 0.71809,4.6354 9.00271,48.2701 7.65615,27.6814 z m -8.35668,-5.6054 c -3.50083,-4.6722 -3.50083,4.6722 0,0 z m -3.44113,-67.439 c -4.94546,-43.1003 -2.80058,11.7971 1.72732,20.9633 -0.10338,-7.0174 -0.9403,-13.9948 -1.72732,-20.9633 z m 18.05061,13.7159 c -2.39823,1.3018 2.22397,7.172 0,0 z m -13.25453,-14.9273 c -2.85949,-34.9995 -2.60608,-70.1387 -3.45826,-105.2168 -1.54745,39.5409 -4.86231,79.8827 4.42279,118.6993 0.36498,-4.5207 -0.4737,-9.0073 -0.96453,-13.4825 z m 11.40818,-25.2294 c 0.53354,-15.3374 -3.10153,-40.125 -3.03516,-11.0379 -0.87073,15.4992 4.96756,64.4832 3.36183,23.4213 l -0.14782,-5.9862 z m -5.84483,17.0547 c -2.74181,-20.1028 0.11562,-73.3482 -3.60067,-73.079 -0.25853,24.0634 -1.97483,73.8151 4.43324,82.6562 l -0.32341,-4.3607 z m 4.70812,-86.9412 c -1.33556,-9.8553 3.34903,-61.0197 0.8494,-49.4501 -3.4822,17.5553 -4.81065,77.2454 -1.54952,74.8405 0.4968,-8.4549 0.62158,-16.9244 0.70012,-25.3904 z m -18.23438,4.425 c -3.4159,16.9995 -0.1545,33.278 0.75219,4.7808 z m 13.50594,-36.015 c 2.53637,-13.5289 3.58332,-50.4412 -1.32809,-18.6939 -2.86901,13.6911 -3.71139,66.4582 0.60296,26.3859 z m -11.29782,5.8606 c 1.08683,-26.566 -4.8945,25.7814 -0.27757,7.2037 z m 6.43621,-17.6477 c 4.23888,-18.8521 6.2987,-60.9708 0.0632,-18.4882 -2.24514,14.5088 -4.27988,52.4914 -0.0632,18.4882 z m -3.78372,-17.1674 c -1.95693,3.6034 1.90163,17.1717 0,0 z m 19.03198,-10.3613 c 4.85947,-41.9078 21.66768,-81.644 31.10736,-122.1756 -16.00507,42.5072 -30.78936,88.6349 -33.86196,132.4862 l 1.15072,-3.3533 z m -14.5652,-13.7562 c -1.235,-9.2593 -4.26859,11.818 0,0 z m 12.31081,-10.0932 c -4.80156,1.7706 -1.11618,7.2749 0,0 z m -4.18595,-4.5585 c -2.21779,-8.5018 -3.33986,19.2913 0,0 z m -4.94119,-5.2095 c 3.67657,-30.1057 -6.91581,33.7141 0,0 z m 10.07653,-4.2325 c -2.39815,1.3015 2.22398,7.1719 0,0 z m 107.87145,-1.3025 c -40.9327,-53.444 -40.7116,-127.0917 -10.5653,-185.0366 9.0569,-24.7082 -16.1397,27.7821 -18.0077,38.7527 -12.5139,49.6973 -8.284,108.7047 29.3038,147.8405 z m -116.09261,-7.8142 c -2.39821,1.3016 2.2239,7.172 0,0 z m 17.64478,-38.0945 c 5.45618,-17.0437 26.4298,-83.4851 18.46446,-73.893 -8.59636,38.882 -24.56725,76.1231 -31.43822,115.3868 5.1315,-13.5693 8.39156,-27.7467 12.97376,-41.4938 z m 0.16655,20.5417 c 14.36183,-37.7724 21.86554,-77.1066 31.9549,-115.8818 9.50902,-34.1887 -13.6739,32.9418 -12.96427,43.0538 -6.76771,30.5142 -19.97874,60.3152 -25.98744,90.4101 2.78282,-5.6918 4.78713,-11.6805 6.99681,-17.5821 z m 98.46238,5.6613 c -25.6974,-56.8229 -13.4292,-120.8558 6.688,-177.3817 22.1515,-57.09433 18.9488,-124.29503 -18.229,-175.14622 -22.9006,-35.42388 -44.53454,-72.33778 -73.28311,-103.75719 32.32171,55.0676 79.24291,103.63235 98.19131,165.04855 13.6282,50.24959 -3.5144,101.12466 -20.334,148.59976 -16.3112,49.9348 -17.146,108.2126 10.7318,154.4449 2.4688,-3.814 -5.8526,-8.2555 -3.765,-11.8081 z m -108.2867,-16.4396 c 5.60058,-18.3508 23.06948,-74.069 6.52752,-27.4189 -4.34775,8.5493 -17.60234,64.9772 -6.52752,27.4189 z m 70.1466,-57.6258 c -7.0668,-28.3839 24.7086,-95.3602 21.6297,-94.4603 -17.4884,36.5137 -31.5516,77.9043 -21.8981,118.2288 0.3685,-7.9181 0.2528,-15.8455 0.2684,-23.7685 z m -26.99438,4.4816 c -4.31568,-4.3791 -2.23102,11.893 0,0 z m -0.41319,-12.2144 c -2.3493,-2.2391 1.18294,7.281 0,0 z m 61.88947,-80.503 c 6.4931,-17.6793 12.8159,-46.9594 1.3959,-11.989 -4.0501,7.7566 -9.878,34.8362 -1.3959,11.989 z m 50.8803,-3.1475 c -1.6637,-6.7505 -3.4999,14.2722 0,0 z m 4.9818,-20.9465 c 3.2559,-20.895 9.4705,-55.6924 7.7249,-69.00511 -1.5893,22.19126 -10.0246,67.11601 -9.3816,75.28911 z m -68.8434,-10.6169 c 16.6213,-47.48894 5.831,-101.93314 -30.0714,-139.0123 -33.84775,-37.79981 -56.44607,-82.48333 -81.0171,-125.82328 22.80945,52.92112 56.81539,100.36002 92.9651,145.7476 23.2693,27.19499 23.6452,62.31099 22.4022,95.46548 0.274,11.1178 -19.2528,59.5292 -6.1854,29.7838 z m 11.7801,-0.9761 c 6.0679,-18.0116 11.2119,-55.71451 6.0101,-63.35333 2.6865,26.74554 -6.8143,56.53183 -11.6732,80.15063 2.626,-5.3563 4.0085,-11.1359 5.6631,-16.7973 z m -25.5227,12.5698 c 9.9189,-22.087 -10.1161,14.0905 0,0 z m 4.9626,-0.9768 c -4.8017,1.7706 -1.1163,7.275 0,0 z m 27.9637,-16.5579 c 5.9375,-24.47531 -9.0835,23.6624 0,0 z m 9.8005,-16.0015 c 12.1953,-57.55197 -15.0241,-112.90127 -48.4199,-159.19831 -21.29522,-30.77203 -41.37694,-62.8587 -66.46211,-90.85786 33.90507,55.18477 77.83241,105.18775 104.43261,164.1644 15.5217,30.61562 9.4283,80.425 6.2618,102.82257 1.9497,-5.5102 3.0881,-11.2278 4.1876,-16.9308 z m 45.1478,-84.58206 c -8.8029,-45.12405 1.4124,27.18023 1.7233,17.58202 0.1303,-5.90895 -0.7664,-11.76567 -1.7233,-17.58202 z m -86.4784,-40.1205 c -29.01781,-40.42049 -56.91118,-81.50844 -82.38825,-124.02376 -13.73626,-18.24351 -24.82692,-23.41741 -5.97985,-2.51842 27.81616,43.70574 52.98088,89.50404 88.7187,128.0547 z m 72.0975,-9.76776 c -1.9074,-9.63162 -4.7059,2.98735 0,0 z m -16.2515,-31.92989 c -4.5541,-3.37084 4.3328,7.1037 0,0 z M 868.7844,691.20239 c -3.19768,-4.47339 -3.94647,2.48174 0,0 z m 102.98148,887.49221 c 1.19911,-5.8705 1.19911,5.8702 0,0 z m -1.37017,-7.8143 c 1.19912,-5.8703 1.19912,5.8703 0,0 z m -2.84854,-16.3882 c 0.88139,-5.0193 1.39005,5.9279 0,0 z m -2.58668,-11.0683 c -4.24293,-20.5735 2.41627,-3.615 2.05534,6.6184 z m -4.13185,-19.3329 c -5.56172,-27.1749 6.62317,13.1719 0,0 z M 949.134,1435.1593 c -3.55753,-22.8578 3.24565,-32.7172 2.06438,-3.2239 1.82573,-0.7236 -1.61362,10.6757 -2.06438,3.2239 z m -2.16527,-73.3103 c -3.05342,-17.2898 8.41722,-25.0851 3.5436,-9.714 0.18164,10.5927 -3.68963,33.1808 -3.5436,9.714 z m 141.50617,-90.5281 c -22.0137,-29.1276 -40.2688,-63.5456 -42.8862,-99.8674 -6.9575,-60.4583 21.3789,-116.5841 32.2225,-174.77145 9.3056,-71.33705 -25.2368,-140.25535 -66.8515,-197.4466 -18.65937,-21.85847 -34.9946,-43.58173 -24.35074,-21.72382 -17.37547,-21.32485 -61.09716,-58.96597 -68.21827,-66.01626 64.87421,39.54039 114.15351,99.42347 142.80351,167.17218 27.1105,49.94167 24.7965,107.95133 13.2411,161.53945 -7.63,66.3774 -29.6756,138.0508 4.9544,201.0336 7.1867,14.1792 24.1441,41.5419 3.9061,13.8054 -33.6965,-52.3038 -28.5554,-115.985 -17.6336,-173.7975 -3.2323,0.4063 -12.9646,51.3956 -11.1299,71.6319 -2.1728,43.7677 9.8357,89.6521 40.8943,122.9418 l -0.547,0.5728 -6.4045,-5.0741 z m -34.1488,-74.3116 c -9.1499,-49.8495 2.4991,-99.7434 13.9766,-148.1891 -17.0962,50.7128 -29.5269,106.9725 -12.332,159.0557 l -0.3777,-3.7026 z m 9.0271,77.2779 c -28.7392,-14.1115 -41.1779,-50.2979 -55.3579,-78.4032 -7.7528,-16.957 -5.3082,-32.7719 0.6595,-5.6339 7.9798,31.5291 39.0134,66.1523 54.6984,84.0371 z m -93.06565,-12.8297 c 0.88146,-5.0192 1.39007,5.928 0,0 z m 71.82755,0.7599 c 1.657,-4.7619 3.3792,4.6393 0,0 z m 63.9307,-3.9073 c 1.199,-5.8702 1.199,5.8704 0,0 z m -74.1623,-7.7603 c -18.9978,-9.5685 -34.6369,-58.8046 -13.8605,-17.0103 17.9283,24.1024 -19.85391,-31.7357 -18.92353,-47.3194 -2.81344,-16.8438 -0.46103,-54.3184 1.39563,-16.6926 -1.30066,27.6195 23.0097,67.5347 31.3884,81.0223 z m -56.90844,-13.0777 c 3.37937,-4.6394 1.65711,4.7617 0,0 z m 115.78214,-143.9125 c 3.2522,-6.8335 1.1858,6.8793 0,0 z M 932.66809,793.96291 c -3.59321,-9.53261 5.04794,6.10114 0,0 z m -5.48077,-11.72138 c -3.59321,-9.53263 5.04793,6.10113 0,0 z m -106.36,-88.9488 c -12.63905,-5.39051 -59.78268,-28.32968 -51.40077,-29.11417 19.78566,13.20766 79.23527,39.47377 79.67359,42.47241 -9.43712,-4.42816 -18.84922,-8.90419 -28.27282,-13.35824 z"
+ style="fill:#000000" />
+ <path
+ id="muscler"
+ d="m 1320.8006,1516.9558 c -0.7028,-47.9321 18.7552,-115.9811 14.6844,-172.2419 -1.5728,-62.2026 -7.6144,-125.1813 -24.0015,-185.3641 -0.4348,7.9594 -12.7934,-41.4285 -22.3398,-57.7944 -11.445,-30.075 -40.587,-68.2083 -46.1258,-106.29652 -3.201,62.23202 -1.5148,-77.62683 16.3728,-57.85271 38.5369,-50.70285 88.2609,-91.80679 126.3704,-142.95485 -35.2562,56.5639 20.7633,-29.89527 41.5164,-42.31488 -45.9948,65.1654 -100.5529,123.42724 -154.6759,181.66232 -48.5496,69.53204 35.211,158.34924 109.811,148.16544 63.1538,-7.8065 114.8719,-52.0168 165.6457,-86.75842 82.5088,-82.59044 153.9619,-180.92389 186.4834,-294.25943 60.4296,-171.67931 137.9722,-338.06515 235.4641,-491.99435 49.9337,-71.03409 121.539,-138.879594 188.0539,-183.318083 17.1734,-33.3967293 112.19,5.811323 41.1815,2.660239 -72.8765,36.01894 -123.0284,107.269004 -160.9512,177.068054 -62.1612,113.5276 -105.4624,237.50465 -179.3489,344.38216 -50.9673,67.44609 -124.8477,131.12081 -123.0767,222.76919 -8.6129,100.46652 1.8513,202.95194 -17.89,302.16554 -12.6006,40.2244 -25.778,72.8819 -34.9678,92.6685 -24.772,44.2036 -57.2813,96.0236 -89.3061,139.9233 -70.529,90.4653 -171.8651,149.2682 -266.5742,210.9022 l -6.326,-1.2173 z m 17.2676,-18.5698 c 28.2247,-21.9931 126.828,-79.14 110.0994,-72.1284 -38.8951,20.7888 -92.8505,58.1207 -110.0994,72.1284 z m 9.2785,-1.1332 c 56.0557,-35.411 5.1463,-8.081 -14.1501,8.8599 l 5.3046,-3.1809 z m -15.4218,-1.0782 c 39.0037,-29.9404 112.7284,-70.1175 136.5626,-85.8432 -35.8211,12.7715 -138.0686,87.7393 -126.3906,72.0796 41.9805,-30.125 118.8013,-72.9267 144.4483,-85.7357 -55.7225,23.312 -112.9597,59.7357 -156.6915,94.7968 12.2765,-4.012 -13.6364,14.9 2.0712,4.7025 z m 64.9982,-30.641 c 38.9434,-28.3749 -42.9992,25.9447 0,0 z m -37.6152,-0.056 c 25.6728,-18.3789 -36.9417,21.3885 0,0 z m 43.5767,-28.4113 c 48.877,-27.6107 113.7938,-64.0013 109.8585,-60.6574 -36.9238,18.7568 -112.0466,52.6572 -123.0427,69.1128 l 6.0265,-3.8044 z m 2.2313,-7.8032 c 34.447,-23.127 95.1881,-47.4194 118.4063,-63.9183 -30.8068,13.1403 -154.6471,77.8964 -131.3164,72.5717 l 5.5667,-3.7177 z m 3.7514,-8.7051 c 25.7835,-17.3929 87.9492,-44.3704 95.909,-51.648 -34.3868,16.6508 -86.0018,40.5481 -106.8506,58.5918 z m 144.1725,-81.8585 c -10.6054,5.1983 -92.4161,44.0749 -110.9523,56.1782 37.4653,-17.6952 75.0362,-35.5118 110.9523,-56.1782 z m -46.6216,19.4299 c 25.2996,-9.1755 105.2572,-61.5393 36.4207,-21.5252 -27.7914,14.5791 -118.3171,62.0948 -45.16,25.8791 z m -21.8015,5.1658 c 22.8186,-10.9433 133.1408,-70.9768 100.355,-60.118 -26.4042,21.7916 -90.2288,50.1995 -100.355,60.118 z m 53.6197,-10.9115 c 8.8556,-8.7172 -34.8343,19.0929 -9.8112,5.6486 z m -18.5436,-13.5478 c 21.1592,-8.5683 90.5546,-56.473 72.8465,-48.3116 -19.1896,15.5668 -66.377,42.3622 -83.7998,54.1032 z m 0,-6.1073 c 12.9131,-11.2319 -16.0444,8.7776 0,0 z m 37.4209,-22.6245 c 24.6621,-12.6891 82.2252,-65.5733 29.8104,-23.2818 -20.4576,15.0624 -85.8739,57.0047 -29.81,23.2818 v 0 z m -23.7905,8.0085 c 14.9516,-10.9685 -19.706,9.3 0,0 z m 27.4391,-16.6533 c 25.0239,-15.3613 68.3993,-55.8729 17.9565,-15.4992 -12.0491,8.0312 -56.2121,40.7178 -17.9565,15.4992 z m -17.8573,4.2975 c 4.8061,-5.855 -8.6698,6.9667 0,0 z m 35.2353,-24.4322 c 21.2527,-14.7685 65.6146,-55.5308 16.9618,-16.0165 -21.3369,16.2476 -72.2016,55.6781 -16.9618,16.0165 z m -15.4471,-0.2516 c 6.5855,-9.1712 -9.6064,9.3254 0,0 z m 29.8017,-25.6759 c 25.2476,-21.4527 61.4266,-55.78 13.1939,-14.3782 -17.6766,14.1169 -59.2248,55.4448 -13.1939,14.3782 z m 8.2953,0.091 c 18.2262,-13.6276 66.685,-59.0529 18.5556,-18.3116 -16.9983,13.5516 -62.0145,55.3423 -18.5556,18.3116 z m -2.6975,-12.967 c 13.9074,-15.8694 -47.201,43.5969 0,0 z m 24.6221,9.38 c 4.8062,-5.8551 -8.6698,6.9669 0,0 z m -38.6177,-3.8467 c 4.8062,-5.8552 -8.6698,6.9667 0,0 z m 47.4642,-11.2201 c 9.0896,-11.3996 -12.1142,11.5742 0,0 z m -34.7558,-0.6412 c -1.5567,-4.688 -3.1749,4.568 0,0 z m 7.1967,-7.3636 c -5.7222,-0.1537 -3.1132,6.6397 0,0 z m 17.5808,-7.0618 c 29.7831,-25.5498 37.7515,-37.0508 2.0129,-4.0855 -8.0687,6.3328 -22.9661,22.4909 -2.0129,4.0855 z m -29.23,4.082 c 1.2808,-6.8777 -5.9946,5.5133 0,0 z m 14.6703,-6.8415 c 19.6515,-23.6117 -27.3083,25.6862 0,0 z m 18.0924,-8.3862 c 17.5108,-13.7732 60.1686,-60.0225 19.12,-20.0402 -8.8123,8.5381 -54.0383,50.8842 -19.12,20.0402 z m -12.2718,-4.8827 c 38.2412,-39.3775 -45.6138,41.7447 0,0 z m -231.0553,2.3282 c -8.3675,-1.9574 14.8024,-52.4336 -6.9586,-27.0119 10.2589,-1.1819 -11.9858,39.2124 6.9586,27.0119 z m 60.2245,-0.071 c 14.7058,-14.2964 -34.835,-37.4083 -17.7258,-2.2119 23.3447,-54.2299 -0.1128,13.128 17.7258,2.2119 z m 23.8141,-1.0056 c -21.1035,0.6747 26.0749,-30.3283 -7.7029,-18.6598 -7.1117,5.8374 -5.5909,30.2451 7.7029,18.6598 z m -5.4708,-15.8571 c 8.6117,-14.8363 17.3521,6.3605 0,0 z m 173.1358,3.7659 c 23.3748,-17.4057 58.6772,-65.6137 17.8646,-20.1958 -10.118,9.9975 -52.2739,50.4605 -17.8646,20.1958 z m -227.3179,12.5021 c 29.6556,-54.4547 -42.6768,-2.8702 0,0 z m -7.5334,-6.7923 c 5.8922,-37.5321 14.3645,17.2622 0,0 z m 92.1571,7.0529 c -5.7555,-6.2685 9.7275,-37.0121 8.3541,-0.3251 13.5958,-0.5083 2.1097,-48.3495 -16.8323,-7.94 -1.0251,2.9811 3.3778,13.9025 8.4782,8.2651 z m 56.3967,-2.1613 c -21.5828,-4.8846 33.5046,-28.1424 -7.1477,-18.32 -7.4272,6.8625 -6.7712,25.1767 7.1477,18.32 z m -4.454,-15.1322 c 4.5759,-12.3708 18.6852,4.2004 0,0 z m -15.5105,12.6032 c -12.8913,-2.8577 7.0129,-61.3505 -9.9921,-4.0238 -3.7551,7.8085 7.2362,7.9017 9.9921,4.0238 z m 90.3356,-8.7735 c 4.1814,-6.3736 -7.3226,8.0957 0,0 z m 15.9532,-15.9148 c 28.463,-31.0336 -35.2457,34.5591 0,0 z m 15.2859,-6.5027 c 28.8049,-31.583 -43.561,40.1576 -6.2934,6.0955 z m 6.5706,-16.3713 c 6.5854,-9.1711 -9.6063,9.3255 0,0 z m -6.3195,-2.2344 c -5.722,-0.1539 -3.1131,6.6396 0,0 z m 13.5637,-5.1386 c 4.8061,-5.855 -8.6697,6.9669 0,0 z m 8.2029,-0.3207 c 6.5854,-9.1711 -9.6064,9.3255 0,0 z m -308.5934,-7.7878 c 30.3401,-10.9519 23.5893,-41.4849 0.037,-25.5512 16.7869,-0.7517 -19.0664,49.7897 -0.037,25.5512 z m 7.2494,-11.9525 c 6.7045,-38.601 28.4429,6.8114 0,0 z m 297.4161,3.3915 c 17.0939,-16.7838 61.6525,-83.7934 23.4907,-31.6766 -3.0309,4.6087 -46.6382,56.9761 -23.4907,31.6766 z m -253.0437,2.9695 c 9.9403,-6.8458 -21.2957,-3.841 8.9753,-18.7493 -12.4221,-17.6167 -32.083,25.7755 -8.9753,18.7493 z m -3.6977,-16.1405 c 7.884,-10.9175 17.6413,4.2908 0,0 z m 105.1502,11.3445 c 2.8916,-9.5969 -22.4297,-31.6725 -4.2423,2.6285 z m 28.0922,-1.6007 c -3.0907,-19.7691 25.6977,-21.0649 -5.4631,-17.5562 11.4267,9.8138 -8.7083,29.5178 5.4631,17.5562 z m -94.9111,1.1104 c -7.7475,3.1676 -2.0063,-56.7311 -8.1596,-11.2461 -9.7401,7.5657 2.2797,17.6711 8.1596,11.2461 z m 34.6673,-0.889 c 25.4744,-41.7281 -10.1617,21.9547 -11.717,-17.4994 -7.9157,-16.2403 -0.061,34.095 11.717,17.4994 z m 50.578,-0.2753 c 16.9427,-19.1702 -18.3752,0.4141 0,0 z m 153.1362,-10.3034 c -8.9548,5.2429 -5.0176,11.3442 0,0 z m 8.3323,-0.8632 c 3.5424,-12.48 -12.4198,20.2158 0,0 z m -18.5833,-7.9187 c -8.7822,3.5931 -5.394,9.8266 0,0 z m 17.2697,-0.3754 c 0.9711,-5.3157 -6.2055,7.1147 0,0 z m -178.1872,-8.1197 c 4.3412,-9.3195 -12.789,3.0643 0,0 z m 171.8592,-5.1628 c 6.5854,-9.1713 -9.6064,9.3255 0,0 z m -1.9309,-7.845 c -4.4675,-2.2106 -2.1241,5.9866 0,0 z m -350.777,-8.8246 c -3.4145,-4.9453 -6.4215,4.6549 0,0 z m 358.5005,-1.2823 c 3.1564,-9.1012 -6.1202,9.2019 0,0 z m 9.6544,-2.5645 c -1.5567,-4.6882 -3.1748,4.5678 0,0 z m 0.045,-24.9025 c 19.2123,-37.4386 -25.2886,42.2687 0,0 z m 10.946,5.3989 c 9.9408,-21.3871 -16.6485,27.43 0,0 z m -109.44,-7.4078 c -7.6558,-1.2423 3.3899,7.3274 0,0 z m 103.6149,-18.2885 c 19.0987,-31.54012 -20.3051,26.1407 0,0 z m 10.1283,6.0242 c -1.2761,-4.716 -2.6493,6.5277 0,0 z m -0.4911,-12.1151 c 12.3173,-27.24732 -15.2336,27.4038 0,0 z m -9.0108,-5.2805 c -4.4676,-2.2104 -2.1241,5.9867 0,0 z m 10.2524,-9.3901 c -4.3224,1.0726 -5.6041,13.8986 0,0 z m -0.045,-10.97472 c -7.1773,3.70422 -0.5396,11.33342 0,0 z m 3.1313,4.48792 c -1.1141,-6.77322 -3.0554,6.7281 0,0 z m -467.9865,-56.45417 c -3.6429,2.47876 -1.5292,5.57757 0,0 z m 43.8169,-46.87101 c 21.3358,-13.74838 86.4864,-91.22744 35.5005,-37.43121 -5.1479,7.1239 -71.2625,67.11055 -35.5005,37.43121 z m 67.7118,-71.08987 c 11.0799,-17.12264 -18.0016,17.31916 0,0 z m 432.4018,-237.83549 c -8.9785,12.47036 -5.9409,19.28819 0,0 z m -6.9531,0.13629 c 13.7974,-37.50683 -17.3836,36.41909 0,0 z m 21.2962,1.14591 c -1.5567,-4.68819 -3.1748,4.56786 0,0 z m -1.4397,-12.24816 c -1.8132,-4.89722 -2.371,6.49208 0,0 z m -22.7825,-2.09726 c -2.478,0.55621 1.8443,5.6208 0,0 z m 33.7853,-8.09428 c -5.6391,5.03157 -2.4966,9.37955 0,0 z m 5.8839,1.9234 c 5.4561,-13.58463 -8.3939,13.72231 0,0 z m -18.5087,-5.90842 c 11.6119,-31.65352 -14.8157,29.87737 0,0 z m 8.0186,0.47085 c 9.7567,-22.18037 33.0009,-76.45218 9.2597,-25.37928 0.7962,0.0297 -19.7098,40.70732 -9.2597,25.37928 z m -13.4153,-6.74406 c -5.6392,5.03165 -2.4967,9.37953 0,0 z m 36.6256,-1.34882 c -1.8132,-4.89713 -2.371,6.492 0,0 z m -33.9993,-5.06255 c -4.5109,1.7434 -1.0487,7.16269 0,0 z m 37.9961,-2.72119 c 5.929,-18.00739 -8.0184,16.73752 0,0 z m -9.8039,-5.68798 c 3.3065,-13.84385 -9.5824,18.85037 0,0 z m 6.6031,-0.38429 c -5.0779,4.7947 -2.7752,7.27216 0,0 z m -24.9208,-13.30063 c 5.9035,-18.58001 -10.0958,20.20771 0,0 z m 6.8598,1.57778 c -4.5109,1.74332 -1.0487,7.1627 0,0 z m 24.6796,-18.17233 c 15.272,-29.73533 24.6384,-60.10368 3.9654,-12.27933 -8.0661,16.57015 -23.3704,52.80712 -3.9654,12.27933 z m 7.4648,14.20095 c 8.3175,-23.18591 -12.9974,23.56408 0,0 z m -5.1805,-3.72227 c -6.9303,7.95112 -3.9447,12.00962 0,0 z m 12.3368,1.92339 c -1.5567,-4.68819 -3.1748,4.56786 0,0 z M 1819.3279,505.939 c -9.592,14.58737 -10.4383,27.06497 0,0 z m 5.1919,6.73432 c 4.616,-14.17924 -9.4228,16.57016 0,0 z m 35.408,-9.93992 c -6.1015,4.16669 -6.0032,18.69404 0,0 z m -22.9259,0.32046 c 15.291,-29.71297 22.0686,-51.89093 3.1048,-10.22623 -2.9414,4.82996 -15.0008,34.40868 -3.1048,10.22623 z m 34.9196,-9.67021 c 4.4381,-18.30789 -17.6065,36.74419 0,0 z m 2.3535,9.22218 c 10.7714,-24.87429 -12.9451,22.09205 0,0 z m 7.6385,-1.84537 c 16.3133,-33.81257 -19.2303,29.71214 0,0 z m -34.0921,-3.2529 c 13.9879,-30.13502 31.5157,-70.12051 6.2055,-17.85486 -0.6327,2.2407 -12.6406,23.86904 -6.2055,17.85486 z m 18.4691,-7.27634 c 10.4954,-22.05011 -10.9751,14.26628 0,0 z m 23.8829,-21.47804 c -13.0289,20.00546 -13.9678,31.58645 0,0 z m -49.0369,5.09503 c -3.6429,2.47885 -1.5292,5.57765 0,0 z m 57.0274,-4.89881 c 8.5193,-21.42227 -16.3241,28.10521 0,0 z m -22.0229,0.30284 c -10.1946,10.42849 -2.2532,5.0799 0,0 z m 13.5477,-12.62994 c 28.6897,-58.53369 -19.5362,30.81814 -4.6662,9.1629 z m -39.2672,-1.33305 c 24.3906,-48.34883 -7.022,26.29955 -4.7928,9.95012 z m 29.5418,4.48798 c -4.5109,1.7434 -1.0486,7.16269 0,0 z m 25.1398,-20.57113 c 21.2077,-47.32094 -28.6298,55.26936 0,0 z m -35.4917,-6.35654 c -13.0243,20.56325 -10.4857,26.276 0,0 z m -19.8106,7.53325 c 19.9453,-44.81091 -23.1729,45.18063 0,0 z m 28.788,6.86607 c 7.0594,-21.37255 -10.8667,24.19923 0,0 z m 30.8495,-0.61493 c 16.852,-34.47186 -13.2198,16.94247 0,0 z m -29.9036,-17.88381 c -17.7614,27.01507 0.5379,6.07162 0,0 z m 11.279,8.90786 c 6.4709,-14.82128 -9.5678,15.5571 0,0 z m 14.2905,-13.14329 c 10.0318,-22.68666 -12.9516,22.84096 0,0 z m -16.3393,0.60724 c -3.6429,2.47876 -1.5291,5.57756 0,0 z m 32.3388,-5.09512 c -5.6392,5.03166 -2.4967,9.37954 0,0 z m -37.2392,1.77207 c -4.4675,-2.21045 -2.1241,5.98653 0,0 z m -15.6957,-4.37052 c -3.6429,2.47867 -1.5291,5.57757 0,0 z m 9.7724,-1.56897 c 6.4709,-14.82128 -9.5679,15.55719 0,0 z m 16.2214,-0.77934 c -5.0779,4.79488 -2.7753,7.27225 0,0 z m -33.4687,1.74108 c 3.1564,-9.1013 -6.1202,9.20177 0,0 z m 25.7451,-1.2823 c 3.1564,-9.10129 -6.1202,9.20178 0,0 z m 16.4297,-1.51831 c 4.6332,-15.11798 -7.885,14.65529 0,0 z m 20.8879,-13.4052 c 13.4156,-31.49237 -15.6727,29.50291 0,0 z m -6.4432,-2.14226 c -6.0606,-0.95302 -0.047,9.07189 0,0 z m -46.9651,-0.88594 c 5.4561,-13.58463 -8.3939,13.72222 0,0 z m 61.7883,0 c 5.456,-13.58463 -8.394,13.72222 0,0 z m 6.4362,-12.82282 c 5.4561,-13.58455 -8.3939,13.72231 0,0 z m -59.8573,-4.73301 c -2.9392,-4.33174 -4.3031,13.57461 0,0 z m 30.8941,3.29939 c -4.4675,-2.21045 -2.1241,5.98663 0,0 z m -19.886,-8.95591 c 15.4063,-33.65355 -17.7999,32.64903 0,0 z m 46.8897,0.23826 c -5.5905,3.71531 -5.6481,13.02453 0,0 z m -53.8718,-2.35092 c 4.1815,-6.37332 -7.3226,8.09576 0,0 z m 65.4157,-5.60363 c 8.615,-19.90109 -11.3088,17.27034 0,0 z m -12.9041,-3.27027 c 13.4459,-27.81648 -14.8971,24.9733 0,0 z m -7.6219,-0.91266 c -5.8964,2.93607 -2.4679,8.32539 0,0 z m 15.9382,-0.21756 c -1.2761,-4.71612 -2.6493,6.52799 0,0 z m -9.5414,-12.75612 c -4.5109,1.74331 -1.0486,7.1626 0,0 z m -22.6399,-1.34891 c -1.2762,-4.71603 -2.6494,6.528 0,0 z m 15.447,0 c -1.2761,-4.71603 -2.6493,6.528 0,0 z m 23.323,0.70772 c -1.5567,-4.68819 -3.1748,4.56786 0,0 z m -5.0871,-3.96591 c 6.1649,-15.37729 -8.7638,13.49983 0,0 z m 13.4543,1.25009 c -4.4676,-2.21053 -2.1241,5.98654 0,0 z m -51.4902,-5.43654 c -5.0779,4.7948 -2.7752,7.27217 0,0 z m 50.1297,-5.13983 c 12.1898,-28.13101 -15.6821,27.0209 0,0 z m -31.6169,1.04403 c -1.2762,-4.71603 -2.6494,6.5279 0,0 z m 40.4798,-5.72304 c -5.2007,3.40832 -1.9732,7.71082 0,0 z m -28.751,-2.00466 c 10.7379,-22.69818 -13.0839,20.63384 0,0 z m 8.376,0.10042 c -1.1138,-6.77311 -3.0554,6.72802 0,0 z m 10.2981,-4.48806 c -1.5567,-4.68811 -3.1748,4.56795 0,0 z m -29.901,-5.84941 c -5.5848,4.27486 -3.1949,7.52805 0,0 z m 9.4207,-1.20307 c 2.1389,-6.45153 -10.9886,16.40158 0,0 z m 26.8253,-6.41136 c -5.6392,5.03166 -2.4967,9.37964 0,0 z m 6.9518,1.62279 c 1.2491,-8.05586 -6.1542,11.62181 0,0 z m -21.664,-3.54618 c 10.0318,-22.68676 -12.9516,22.84096 0,0 z m 15.6368,-13.70237 c -15.8527,21.72614 0,5.54241 0,0 z m 13.3265,3.44422 c 3.1563,-9.1013 -6.1202,9.20178 0,0 z m -5.7927,-2.56449 c -1.5567,-4.68819 -3.1748,4.56786 0,0 z m -13.0032,-4.80852 c 6.4709,-14.82128 -9.5679,15.5571 0,0 z m -6.7837,-1.92349 c 3.4332,-8.23224 -7.2918,9.59014 0,0 z m -13.1701,-5.77018 c 8.6424,-19.22472 -11.2017,19.53954 0,0 z m 32.3134,0.96165 c 7.8442,-17.54079 -10.6723,16.6492 0,0 z m -11.6886,-8.97585 c 3.9055,-8.33661 -7.4948,10.61841 0,0 z m -10.6779,-9.61705 c 3.9463,-10.31224 -13.0759,21.54651 0,0 z m 35.4346,-3.66021 c 5.504,-16.67721 -13.7702,25.27723 0,0 z m -5.9437,-3.7128 c 6.5692,-13.41374 -8.9861,13.82687 0,0 z m -14.848,-2.24405 c -1.5566,-4.68818 -3.1748,4.56786 0,0 z m -5.4431,-5.84949 c -5.5848,4.27486 -3.1948,7.52815 0,0 z m 31.6795,2.5772 c -1.2762,-4.71602 -2.6494,6.52799 0,0 z m -3.0658,-7.13717 c -4.4675,-2.21045 -2.124,5.98662 0,0 z m 5.2649,-9.46573 c 2.1389,-6.45154 -10.9886,16.40148 0,0 z m -14.2756,-2.41354 c -5.8964,2.93607 -2.4679,8.32548 0,0 z m 29.6068,-20.3402 c -5.8334,0.0547 -2.701,7.2254 0,0 z m -15.447,-0.32714 c 1.8515,-6.92155 -5.8435,7.13921 0,0 z m 10.4276,-5.12907 c -4.187,0.88019 -6.2993,12.63113 0,0 z M 1320.1485,1209.7996 c 1.8583,-3.415 0.573,5.5289 0,0 z m -2.6762,-13.3569 c -4.5318,-33.7118 7.1889,29.9476 0,0 z m -81.6549,-202.86222 c -2.3956,-33.2222 17.4187,-58.80012 2.6372,-8.09703 l -1.5484,12.55893 z m 93.3919,-138.05492 c 46.0732,-50.93447 -15.4712,14.94588 -9.5804,10.61489 3.1934,-3.53829 6.3868,-7.0766 9.5804,-10.61489 z m 92.3247,-88.28442 c 23.3064,-27.56477 28.8814,-26.81669 0,0 z m 23.3766,-32.95288 c 17.7922,-21.28627 99.9722,-84.68777 43.2793,-34.29929 -13.4592,12.58596 -28.6127,23.24936 -43.2793,34.29929 z m 74.6608,-62.29465 c 9.4336,-5.37633 -3.1917,5.0503 0,0 z M 2217.2636,15.2293 c -15.4972,-13.7038323 23.8786,10.187534 0,0 z"
+ style="fill:#000000" />
+ <path
+ id="wingr"
+ d="m 1737.6061,1575.9425 c -69.5788,-29.9351 -43.9743,-119.7282 -49.8363,-179.7285 4.4851,-148.7133 44.7239,-294.0541 44.2818,-443.18091 5.3641,-90.5151 -7.8566,-187.02874 30.3966,-271.81801 47.0988,-80.9229 122.2537,-143.07389 157.8399,-231.23265 71.3401,-125.35267 111.1524,-271.95061 215.819,-375.698222 30.0818,-35.13232 98.7348,-73.78120101 117.8981,-6.53825 11.4878,75.604282 -78.9612,98.692522 -109.4188,156.001272 -56.7471,70.24729 -85.9753,156.65779 -109.2733,242.569 -24.787,65.26621 -52.1898,145.58438 -5.6104,208.15237 21.5709,32.55204 119.8433,75.66318 38.0348,94.96118 -23.514,10.10227 -100.361,39.87354 -39.1512,11.8905 33.7707,-5.33441 87.5013,-39.85496 32.0358,-64.20921 -53.553,-42.77905 -78.8821,-117.82975 -52.8676,-182.72328 23.9594,-79.58199 45.131,-161.1033 81.8017,-235.90029 38.6903,-72.02873 98.9178,-128.43108 155.0493,-186.43995 35.4957,-74.429965 -80.589,-95.216229 -106.2217,-29.579049 -146.2869,147.607099 -176.1327,369.190479 -313.5969,523.309059 -51.5739,54.29766 -88.447,125.66525 -82.9862,202.27 -5.0098,143.07073 -5.4422,287.31804 -34.0301,428.15624 -10.5637,101.5274 -19.4577,205.6158 3.696,306.1305 43.8706,71.3159 116.3355,-17.8213 132.5219,-66.6037 22.1334,-68.2148 75.5524,-124.5671 68.5578,-196.2741 8.1796,-47.8711 107.5371,-64.3558 48.5515,-116.0948 -63.7513,-28.6833 -98.2757,-87.4566 -129.1391,-147.1654 -53.1541,-74.73712 57.5892,-109.14467 76.9018,-174.26392 3.9453,-37.39742 36.7847,-69.4796 74.6717,-51.62552 -86.9717,-10.92264 -72.794,118.95479 -144.5078,141.9196 -49.0654,56.57876 29.5772,119.49764 51.7196,171.59684 33.6691,39.4148 152.6151,71.936 71.6208,127.9448 -72.9352,32.2684 -28.88,119.3891 -79.2532,171.2035 -34.1052,59.036 -46.5205,142.4691 -115.9098,172.1403 -9.5557,2.9285 -19.8864,3.1597 -29.5957,0.8306 z m -3.7061,-29.728 c -19.4462,-17.8672 28.3885,11.0346 0,0 z m 19.0764,0.4597 c -2.6003,-35.2823 41.1105,13.4952 0,0 z m 5.3873,-7.6635 c -4.7621,-2.4494 -1.1846,6.2679 0,0 z m -26.5836,-1.0709 c -1.1117,-9.5136 15.1173,8.106 0,0 z m 12.7243,-3.7003 c -9.307,-42.6872 37.4113,-5.7259 0,0 z m 7.4362,-14.7576 c -6.7069,2.5507 -0.6171,9.4224 0,0 z m 15.6975,13.648 c 7.1483,-30.1631 51.0958,1.2096 0,0 z m -46.0344,-4.1262 c 21.2676,-4.847 12.7521,5.1698 0,0 z m 10.1407,-5.8061 c 5.6903,-6.7605 5.7042,7.9337 0,0 z m -10.1407,-1.8113 c 7.8757,-5.8171 6.0187,5.6378 0,0 z m 47.2177,-3.9342 c -26.8941,-39.4416 39.8529,1.2911 0,0 z m -48.4853,-1.1198 c 15.5856,-12.3597 34.3026,3.8686 0,0 z m 78.1168,-1.0339 c 5.513,-18.3603 21.0185,-10.4702 0,0 z m -11.36,-2.4616 c 5.1309,-20.1441 24.2503,-0.3251 0,0 z m 25.7772,-1.682 c 3.776,-2.8168 2.33,4.8156 0,0 z m -92.1377,-4.5312 c 2.8956,-31.7455 51.736,11.6261 0,0 z m 16.7162,-5.5506 c -5.5349,-5.605 -3.5713,5.4436 0,0 z m 17.3501,-0.079 c 2.9531,-7.756 4.7074,4.8801 0,0 z m 53.3344,-4.1258 c -17.0561,-35.6822 29.9511,-3.6775 0,0 z m -25.9024,-1.5381 c -32.6017,-51.8512 41.7028,17.8171 0,0 z m -32.74,-1.8744 c 4.5842,-5.3509 4.5842,5.351 0,0 z m -6.927,-2.4666 c -7.5018,-7.7298 -16.8723,-9.72 5.8263,-7.5051 1.7577,3.0742 -0.1558,12.2514 -5.8263,7.5051 z m 15.4378,-2.4933 c 2.7221,-37.7147 30.8027,13.9366 0,0 z m -41.249,-3.4944 c 5.6156,-8.7793 2.7687,7.3675 0,0 z m 78.9125,0.1747 c 9.5868,-4.8468 -4.8168,6.0863 0,0 z m -8.1466,-1.0385 c 12.6678,-20.3161 6.2408,9.2904 0,0 z m 32.0057,0.1139 c 4.6438,-8.4598 4.5703,5.8078 0,0 z m -102.8245,-5.195 c 0.6769,-11.7896 11.3839,6.9316 0,0 z m 16.6287,-3.692 6.0647,-1.2587 z m 88.4195,-1.5821 c -1.2876,-16.6844 17.9556,7.5344 0,0 z m -104.3338,-0.2591 c 3.5338,-13.5043 2.8734,-27.3505 16.4146,-6.4858 -4.424,3.976 -10.3217,6.9511 -16.4146,6.4858 z m 33.3443,-0.9263 c 6.1947,-13.9481 5.7527,5.3752 0,0 z m 38.8721,-5.8404 c -32.5056,-11.4769 18.5263,-11.06 7.2639,6.6205 z m -31.2667,2.7984 c 9.4056,-16.8431 12.3186,3.1148 0,0 z m 45.6203,-4.0551 c 6.7003,-19.0711 40.9169,7.2895 0,0 z m -58.2961,2.6089 c -8.557,-20.0306 31.0474,-3.2334 0,0 z m 83.8153,-6.2701 c -1.3599,-11.5544 11.9723,4.799 0,0 z m -29.913,-6.4219 c 1.1019,-12.7964 24.6699,-6.3277 0,0 z m 31.026,-2.7232 c -63.2138,-27.3622 45.5541,-2.6531 0,0 z m -5.7042,-12.5602 c -4.5842,-5.351 -4.5842,5.3509 0,0 z m -59.5765,11.4591 c -28.268,-8.0168 16.2114,7.5984 9.6711,-2.928 l -1.1574,1.1161 z m -27.2531,-1.1472 c 3.1149,-15.1207 4.7557,7.6176 0,0 z m 5.4947,-1.5722 c 1.8074,-15.6046 3.9424,9.406 0,0 z m 44.7362,1.6781 c 5.7084,-24.8591 17.068,-1.911 0,0 z m -61.2011,-1.9502 c -3.6364,-20.0648 27.7187,-7.1288 0,0 z m -13.5678,-8.5192 c 2.3402,-38.6987 22.2008,8.3027 0,0 z m 124.0436,1.3867 c 0.035,-10.8764 13.2245,5.5769 0,0 z m -77.0061,-1.4368 c -0.1032,-13.0112 21.5635,8.626 0,0 z m 25.6688,-1.168 c 3.059,-4.9857 3.059,4.986 0,0 z m 45.8708,-0.079 c 2.9532,-7.7558 4.7074,4.8801 0,0 z m -26.6411,-2.2436 c -29.1368,-5.1964 15.1571,-25.2033 0,0 z m -27.412,-2.6627 c -31.3874,-24.8431 46.8062,-5.6024 0,0 z m 33.5743,-1.6797 c 5.0579,-15.0311 14.4939,4.1239 0,0 z m -63.8993,-3.174 c 11.3091,-17.0025 17.7448,10.2904 0,0 z m 88.2601,0.9127 c -30.1481,-17.1713 38.9466,-15.7647 0.5996,-4.0388 15.6252,-3.1979 12.8927,9.2333 -0.5996,4.0388 z m -99.7683,-2.4118 c 0.9288,-11.3761 8.1651,8.5643 0,0 z m 5.0411,-2.5485 c -24.5506,-14.3882 24.6169,-14.34 0,0 z m 80.4669,-2.6926 c 3.7759,-2.8166 2.33,4.8155 0,0 z m -106.1604,-2.0625 c -16.3099,-36.305 32.6635,2.0927 0,0 z m 75.7382,-3.7271 c -28.6307,-24.5346 42.5639,3.7374 0,0 z m -32.1673,-1.4355 c -23.7486,-12.5386 -52.0434,-21.5406 -14.2858,-13.9303 15.6303,-9.4493 31.8601,25.1508 14.2858,13.9303 z m 53.5367,-1.2696 c -26.1409,-33.4451 20.5808,10.0055 0,0 z m -41.6509,-2.2966 c 4.1404,-4.8552 1.8666,6.8126 0,0 z m 49.3902,-1.7437 c 11.6255,-13.1914 5.9782,10.8185 0,0 z m 27.5939,-0.4034 c -6.2466,-43.5571 26.047,0.2663 0,0 z m -13.7811,-3.3819 c -7.4974,-12.547 17.2035,10.1267 0,0 z m -60.2878,-4.4111 c -22.5056,-26.2557 41.4691,-16.9655 0,0 z m 59.1967,-0.9394 c -1.8469,-13.1008 29.051,13.1044 0,0 z m -82.2591,-4.7899 c -9.668,-17.4607 2.5545,-4.265 7.3837,3.483 z m 62.7253,1.6179 c -17.9274,-6.807 -27.4113,-13.0265 0.1813,-10.3556 6.3346,1.9442 11.8942,20.0067 -0.1813,10.3556 z m -98.881,-4.6838 c -0.9775,-23.1463 27.7157,-1.9989 0,0 z m 111.0627,-1.1223 c -32.7874,-28.0189 35.4672,-16.5967 0,0 z m 16.2447,0.5714 c 1.6403,-13.4277 6.2738,3.3301 0,0 z m 18.1918,-2.9643 c 5.4007,-19.9282 1.2746,12.8705 0,0 z m -104.1785,-2.6634 7.0506,-3.545 z m -14.1721,0.2319 c 4.5842,-5.351 4.5842,5.3511 0,0 z m 114.0826,0 c 3.0593,-4.9858 3.0593,4.9858 0,0 z m -118.3234,-2.2219 c -30.1249,-29.468 32.2443,-19.753 0,0 z m 110.718,-3.3418 c -26.1527,-26.2382 38.969,-11.4904 0,0 z m -131.195,-0.7843 c 4.5842,-5.3508 4.5842,5.3511 0,0 z m 33.5909,-2.539 c 2.8452,-4.9165 1.6689,4.8138 0,0 z m 42.9516,0.4029 c -24.2413,-33.0928 42.1112,-2.4152 0,0 z m -36.6137,-6.6027 c -8.7052,-36.6117 32.3622,16.8315 0,0 z m -44.3151,-4.5306 c -0.453,-42.2641 36.3096,3.8754 0,0 z m 105.6552,-2.2827 c -36.9687,-13.8523 17.7794,-46.043 0.9194,-6.8427 11.3201,-0.3312 -2.6733,15.5043 -0.9194,6.8427 z m 7.1097,-0.8772 c 5.023,-10.3994 -5.7495,-7.4359 0,0 z m -12.6759,-0.075 c 3.059,-4.9858 3.059,4.9856 0,0 z m 54.7597,-1.5237 c -36.0216,-21.7971 29.411,-19.0495 0,0 z m -32.823,-5.0622 c -25.7498,-41.729 30.8381,0.5871 6.7931,2.6472 l -3.6604,-0.6107 z m -64.0414,-1.9838 c 8.3843,-27.1454 31.9338,6.5998 0,0 z m -23.7464,-1.4681 c -8.6322,-20.596 14.033,3.6848 0,0 z m -6.8997,-0.8576 c -5.2776,-14.5462 10.6461,7.0221 0,0 z m -5.6074,-2.0757 c -9.707,-17.5463 9.458,-4.7963 0,0 z m 144.2726,-0.4343 c 4.1404,-4.855 1.8667,6.8126 0,0 z m 4.5113,-7.583 c -34.0936,-8.0587 21.6731,-18.9891 0,0 z m -143.9457,-4.4029 c 2.9473,-11.1972 2.9473,11.1971 0,0 z m 18.5911,2.9621 c -24.3159,-19.967 33.629,-15.6295 2.411,-7.6862 -0.06,-0.6074 2.2341,10.6139 -2.411,7.6862 z m 38.5248,-1.4966 c 8.6028,-16.0686 24.925,-9.7759 0,0 z m 51.1471,0.5948 c -3.1571,-24.5886 11.7761,-9.4296 0,0 z m -134.0374,-0.3677 c -0.651,-42.7859 29.8728,1.5883 0,0 z m 140.4909,-0.4231 c 3.5543,-11.5202 21.6525,3.4342 0,0 z m -62.304,-6.3374 c -11.3471,-21.2145 12.6699,11.5095 0,0 z m 102.6903,1.8911 c -0.5273,-25.8386 15.0619,-3.2057 0,0 z m -53.2376,-2.5364 c -5.6718,-16.9799 10.5096,7.397 0,0 z m -106.1366,-8.5692 c -6.1154,-20.084 28.9538,6.8226 0,0 z m 126.8258,2.0313 c -2.4002,-32.6362 14.5023,15.6256 5.4077,-12.5053 -2.2868,3.0495 0.7151,11.8438 -5.4077,12.5053 z m -46.2018,-2.3453 c -5.2813,-26.2931 52.1106,4.7948 0,0 z m 71.2869,-0.5304 c -18.9835,-22.17 10.4046,-13.4878 0,0 z m -104.0944,-5.9895 c -27.5888,-30.0281 28.5962,-30.5877 6.6494,-20.969 -11.9232,4.2186 38.7324,37.5154 -6.6494,20.969 z m 64.8977,-0.1733 c -10.6671,-48.8222 33.4853,-5.7118 0,0 z m 6.9074,-10.3137 c -5.7847,-10.3571 -4.1822,5.7511 0,0 z m -98.4988,11.4903 c -10.5706,-26.9162 24.8239,-17.3828 0,0 z m 3.4298,-5.353 c -4.2331,-6.9441 -1.7063,9.0278 0,0 z m -34.9935,2.1849 c -6.0905,-19.9789 22.4316,4.3279 0,0 z m 47.2469,2.1217 c -5.3994,-15.4149 10.2578,-1.3372 0,0 z m 122.1108,-2.2432 c 1.5927,-18.8063 14.2108,4.5203 0,0 z m -59.5398,-3.2086 c -3.7264,-9.1058 9.6762,6.8554 0,0 z m -120.88,-2.1663 c -7.3241,-44.5879 46.7009,-23.6512 0,0 z m 10.7683,-18.888 c -18.4455,-10.49 4.5469,16.9539 0,0 z m 84.3509,15.0594 c -4.0905,-28.9877 42.8426,7.7883 0,0 z m -42.7256,-0.4033 c 3.7989,-8.2623 3.7989,8.2623 0,0 z m 119.4066,1.0157 c -3.2969,-11.5359 11.4338,7.3387 0,0 z m -141.7077,-2.2511 c -28.2546,-30.1611 39.7797,-1.0756 0,0 z m 124.4625,-4.0556 c -24.5088,-28.7091 18.5379,-10.4522 0,0 z m -32.1906,-2.5804 c -34.0345,-29.2977 20.9527,-8.5023 0,0 z m 58.0875,-0.3421 c -39.633,-8.8119 13.4063,-18.5325 0,0 z m -131.2282,-7.0228 c -16.0428,-24.121 19.9389,-26.9158 0,0 z m 33.8208,-4.5239 c -18.855,-21.2594 51.2917,9.9871 2.6448,1.4125 z m 94.3114,0.887 -1.8446,-4.0151 z m -122.4271,-2.513 c 11.9874,-21.5489 17.6958,8.3216 0,0 z m -11.4083,-1.5412 c 3.7762,-2.8162 2.3299,4.8156 0,0 z m -20.6576,-1.6146 c -2.1644,-28.7212 13.2097,2.0185 0,0 z m 108.1211,-0.2148 c -18.4354,-22.9891 28.2644,-1.1953 0,0 z m 46.2671,-3.1737 c -53.0422,-7.7976 37.7115,-23.3226 0,0 z m -164.7865,-1.2696 c -27.4638,-30.5716 8.0158,-32.3709 8.9539,-7.4129 z m 18.3801,-1.1143 c 4.3562,-10.0969 3.0391,6.4809 0,0 z m 77.6449,0.9289 c -24.1896,-41.1065 33.4126,-11.257 0,0 z m 2.7925,-17.6765 c -5.0149,-4.9502 -0.4831,6.6627 0,0 z m -29.5523,16.7314 c 10.0278,-11.483 16.6437,9.5751 0,0 z m 66.6207,-3.7691 c -4.5047,-12.8201 26.413,2.6445 0,0 z m -82.3529,-2.129 c -18.8572,-23.8185 19.1892,11.3986 0,0 z m -34.8362,-5.6331 c -15.1364,-21.4481 28.3215,10.2184 0,0 z m 45.3164,0.4946 c 4.5621,-6.1226 3.8522,7.4689 0,0 z m 58.1465,-3.3854 c -22.0135,-21.2332 26.2795,-4.0096 0,0 z m -83.1221,-0.7168 c -29.7382,-26.735 32.8156,-8.235 0,0 z m 30.6742,1.0254 c -41.0896,-25.0798 40.3882,-8.1412 0,0 z m 106.001,-3.4825 c -54.2173,-13.674 30.9878,-21.4236 0,0 z m -37.7873,-3.8088 c -32.2631,-31.1437 30.7234,2.8363 0.2245,0.1769 z m -133.172,-4.9669 c -2.5489,-11.063 -16.1186,-27.0829 9.9253,-8.5042 11.9699,6.6946 -0.3813,17.2953 -9.9253,8.5042 z m 83.0038,-0.6853 c 17.7815,-45.6675 43.429,15.1881 0,0 z m 14.9549,-7.4217 c 3.0999,-13.7148 -12.0878,6.6997 0,0 z m -77.5709,1.8736 c -19.4248,-40.405 33.4751,-10.0373 0,0 z m 54.3542,-2.1773 c -28.2367,-46.2849 46.3234,-13.1133 0,0 z m 4.0368,-18.1051 c -4.0682,-12.4549 -0.7507,18.9077 0,0 z m 69.2119,15.325 c -11.3941,-28.4965 43.0789,5.0451 6.7926,-3.6355 -2.0232,1.8777 -6.0806,13.8793 -6.7926,3.6355 z m -99.7916,1.5576 c 13.0903,-11.4666 19.5199,7.2138 0,0 z m 86.7461,0.7935 c -3.4372,-12.1698 8.6104,1.5583 0,0 z m 46.5742,-0.5773 c -10.0417,-22.9191 10.7992,3.6724 0,0 z m 7.0762,-1.7495 c -22.488,-19.5338 9.2851,-17.9334 0,0 z m -12.7179,-3.8624 c 3.7571,-10.3062 3.7571,10.3061 0,0 z m -134.5217,-3.1994 c 32.3997,-30.6091 16.1146,20.9269 0,0 z m 90.1561,3.7593 c 3.7761,-2.8165 2.3296,4.8156 0,0 z m -21.4567,-4.6579 c -19.4987,-26.6642 36.3995,8.4522 0,0 z m -40.555,-2.3556 c 2.339,-3.0843 -0.1344,5.8195 0,0 z m 63.7925,-2.5266 c -2.4394,-32.6556 20.1858,10.2704 0,0 z m 67.3028,2.527 c 21.3841,-19.7218 17.7451,3.2519 0,0 z m -200.6591,-3.3224 c -14.2276,-32.7001 14.1772,-20.2377 7.5206,0.3986 l -7.5206,-0.3983 v 0 z m 194.3604,0.3175 c 4.5613,-12.9256 8.753,5.2809 0,0 z m -24.5038,-4.1262 c -24.8884,-12.058 13.2566,-27.179 0,0 z m -18.6856,-1.1003 c -0.3147,-7.3024 6.3644,5.7103 0,0 z m -8.1871,-0.9424 c 1.7959,-13.1171 8.5009,3.0122 0,0 z m 62.1116,-0.2426 c 6.1195,-5.6556 4.668,5.4695 0,0 z m -157.3616,-1.7743 c -42.2896,-13.8113 35.0252,-11.1931 0,0 z m 147.8548,0.5046 c 5.5347,-5.605 3.5713,5.4435 0,0 z m 19.3948,-3.166 c 8.8692,-35.9446 38.0093,14.3163 0,0 z m -193.6815,2.0317 c 5.9446,-14.5078 -44.6962,-26.0691 -10.7064,-24.8341 -35.3837,-19.2971 22.5964,-7.7415 -0.3346,6.6329 17.9316,-7.2929 37.4791,17.7257 11.041,18.2012 z m -10.8205,-30.5414 c -3.0993,-10.2496 -9.0305,4.2838 0,0 z m 24.7574,30.4062 c 3.2784,-5.1775 4.3503,5.2811 0,0 z m 53.9186,-1.2185 c -8.4599,-40.2854 38.4852,10.0455 9.4793,-14.0165 2.6015,6.9982 1.8322,19.5794 -9.4793,14.0165 z m 69.6711,-0.052 c 2.8452,-4.9164 1.6686,4.8138 0,0 z m -91.4417,-4.4435 c 10.5851,-37.4019 35.8131,1.0431 0,0 z m 48.3961,-4.7608 c -0.3101,-26.0461 38.3053,15.5719 5.8805,-0.6348 15.7397,10.0255 -5.7638,10.0868 -5.8805,0.6348 z m 67.0108,3.9335 c 5.6216,-13.058 27.9702,0.018 0,0 z m 13.6188,0.256 c 2.7488,-5.2481 3.1339,4.216 0,0 z m -51.065,-7.7045 c -19.0262,-20.0085 22.255,-5.717 5.7948,3.9903 l -0.4052,1.8012 z m -89.058,1.8243 c -34.1242,-21.0685 18.1772,-15.2318 0,0 z m 118.6373,-2.0549 c -1.7254,-15.1991 17.1677,2.6929 0,0 z m 10.1278,-1.8009 c 10.9301,-5.8388 -2.7258,7.1718 0,0 z m 12.2818,-3.6498 c -20.059,-18.3466 24.4551,7.3681 0,0 z m 15.6814,3.5941 c 11.117,-26.6082 39.8812,-3.8327 2.7095,0.2696 z m -145.2995,-3.653 c -11.2897,-31.0693 13.6411,6.5483 0,0 z m -37.7349,-7.8847 c -22.5699,-31.4542 15.4068,5.0681 0,0 z m 60.0784,0.9662 c -35.593,-23.7152 21.3976,-16.7835 3.1199,2.0829 z m 70.1063,-0.2963 c -7.7287,-17.0265 13.6896,11.9457 0,0 z m -139.0251,-3.5344 c -2.8848,-23.9118 9.1282,18.611 0,0 z m 86.375,3.2144 c -13.7417,-35.3903 32.7055,4.9471 0,0 z m 10.0858,-6.0627 c -8.483,-13.3847 7.3433,-2.1573 0,0 z m 10.3921,5.713 c -2.9991,-28.7331 29.5971,4.6831 0,0 z m 38.3624,-0.8896 c -7.5463,-18.5442 11.957,10.9748 0,0 z m 7.6813,-2.0754 c -29.7566,-25.1586 23.0556,-19.2438 10.6235,-33.318 43.6364,6.3029 -32.8572,24.4949 -7.3795,35.4095 l -2.7769,-1.7904 z m 14.1696,0.5469 c 2.7205,-27.6917 30.4969,3.3778 0,0 z m 4.9591,-10.2683 c -5.8921,-0.7156 -1.9947,6.7921 0,0 z m 10.7018,9.1204 c 1.4435,-8.6575 7.2426,-2.5772 0,0 z m -170.9119,-4.7764 c -13.8659,-30.7133 -2.0358,-40.3509 6.361,-6.2934 9.9569,7.8911 -3.3678,11.7442 -6.361,6.2934 z m -4.3678,-24.0316 c -7.0933,-8.3337 -7.3135,7.8645 0,0 z m 184.6902,21.5827 c -6.0126,-32.3183 27.6119,19.5937 0,0 z m -161.9453,3.1739 c -21.9261,-40.0785 36.3015,12.3221 4.5026,-10.979 0.47,0.8103 3.6304,17.0962 -4.5026,10.979 z m 98.6377,-4.0703 c -36.9466,-22.9238 25.7482,-15.3219 0,0 z m -105.2273,-2.5949 c 1.6686,-4.8138 2.8451,4.9166 0,0 z m -35.6644,-8.2524 c 9.6795,-26.3724 11.7601,26.8473 0,0 z m -7.1166,3.9859 c -13.4098,-15.0137 17.9591,1.4871 0,0 z m 94.6986,-4.707 c -42.8319,-10.2637 -0.3201,-34.1358 0,0 z m -8.2112,-8.1964 c -5.8459,-6.0323 1.216,7.0073 0,0 z m 33.6525,8.3411 c -5.6863,-22.6254 13.5368,-19.7589 0,0 z m -52.8309,-3.867 c -18.8238,-24.6463 -1.481,-38.9723 0,0 z m 43.3324,1.3531 c -7.6518,-40.1594 24.284,-8.1959 0,0 z m 4.3177,-9.1105 c 4.9388,-24.233 -9.1973,22.508 0,0 z m -16.2385,4.1324 c -8.9921,-21.6864 14.0801,9.9974 0,0 z m -57.841,-0.902 c -13.3158,-28.8377 21.6284,-14.5808 1.9092,0.6877 z m -41.6053,-4.4611 c 13.4037,-17.6368 8.4405,12.9284 0,0 z m 133.5053,-3.9716 c -48.3647,-37.4132 45.3785,-4.5131 0,0 z m 13.9861,-2.5927 c 28.3104,-23.4494 -0.6681,15.8449 0,0 z m 15.3437,0.9524 c 2.4821,-7.0387 6.0854,7.6525 0,0 z m -153.5532,-2.1751 c -28.9749,-20.6214 29.6488,-0.9076 0,0 z m 159.9273,0.6938 c -5.4432,-11.2895 13.7451,3.0526 0,0 z m -71.7732,-6.5188 c 5.8363,-35.8428 22.1797,10.6134 0,0 z m -15.8225,-3.6522 c 7.1285,-18.7504 4.1558,17.1984 0,0 z m -57.7545,2.5172 c -2.9584,-37.1017 27.9153,-7.4629 0,0 z m 47.6537,-1.5383 c -8.627,-33.0585 15.0911,-32.5559 0,0 z m 60.0914,-5.1964 c -0.6094,-9.1892 6.7007,10.5167 0,0 z m -125.323,-2.6546 c -4.6066,-15.0921 3.0036,-1.1248 5.3661,3.2489 z m 41.9789,1.8138 c 17.4755,-33.6912 4.2064,5.5273 15.0256,-8.1506 1.7569,7.4056 -9.7261,11.9151 -15.0256,8.1506 z m 96.7994,-2.2885 c -7.5785,-15.9445 9.8209,11.5505 0,0 z m -11.3887,-4.6746 c -38.224,0.4919 12.702,-24.1343 0,0 z m -121.1218,-4.1527 c -10.6717,-23.1324 15.9136,7.9109 0,0 z m 70.8867,0.5304 c -1.3087,-19.8687 14.4594,4.8576 0,0 z m -40.5628,-2.5391 c 3.0592,-4.9859 3.0592,4.9857 0,0 z m 49.4016,-4.4689 c -24.9509,-20.4589 29.0961,12.569 0,0 z m -56.3732,-1 c -5.1026,-26.7271 27.745,1.597 0,0 z m -20.7388,-3.4603 c -27.5289,-13.4475 20.2878,2.2159 0,0 z m 77.4673,-2.8145 c -16.4419,-17.3013 16.5776,11.2761 0,0 z m 13.9047,0.8802 c -7.1968,-31.0025 37.9092,14.3699 0,0 z m 9.2248,-1.8322 c -7.1641,-6.0052 -4.1818,3.9827 0,0 z m -90.0313,-1.9858 c -35.7226,-17.4245 9.9448,-17.9071 0,0 z m 42.0741,2.4089 c -0.6681,-22.7802 24.4144,8.2673 0,0 z m -12.853,-2.4748 c -6.433,-19.0449 15.7517,8.104 0,0 z m 40.7541,-7.6677 c -24.4447,-3.2733 8.4764,-5.5366 0,0 z m -52.1059,-2.4324 c -4.2825,-12.3631 21.3138,3.885 0,0 z m 64.7598,-0.3188 c -9.8725,-15.5999 9.8123,4.3232 0,0 z m -29.661,-3.0818 c 4.5493,-23.512 29.2621,1.4501 5.294,-0.4588 z m -14.6701,0.7671 c -5.0263,-11.4566 12.6889,1.7965 0,0 z m 49.1981,-1.7194 c -3.3154,-9.5698 13.3759,11.5791 0,0 z m -59.9981,-2.1415 c -8.433,-24.1037 8.5645,7.0876 0,0 z m -41.4609,-0.482 c 0.8065,-7.9134 7.9176,6.655 0,0 z m 20.4238,-0.6411 c -33.1654,-44.6259 22.3777,-17.4899 0,0 z m 27.3084,-3.7276 c -42.4538,-8.6458 17.323,-7.748 0,0 z m -45.7788,-1.8947 c 3.2786,-5.1776 4.3502,5.2811 0,0 z m 88.5113,-3.6756 c -24.2132,-31.928 26.6306,5.4892 0,0 z m -89.4621,-3.5127 c -3.9118,-8.9834 18.2672,7.2775 0,0 z m 55.457,-1.6984 c 7.6765,-8.498 10.196,11.1035 0,0 z m -15.1747,-6.6654 c -47.0745,-13.004 40.9745,-13.9292 0,0 z m 17.3219,-0.4944 c 7.7479,-17.6425 26.1527,8.49 0,0 z m -60.4561,-8.0001 c 11.8724,-19.5146 10.6428,15.1103 0,0 z m 31.7264,3.7832 c -3.3251,-10.3216 9.5026,7.4399 0,0 z m -24.438,-11.7817 c -22.7855,-24.6593 19.0215,4.9343 0,0 z m 30.7393,1.5754 c 7.6414,-5.6265 7.6414,5.6266 0,0 z m 31.3936,-3.7038 c 9.8093,-16.9236 27.6413,16.5104 0,0 z m -16.9898,-0.7338 c 6.9699,-13.1394 16.6413,10.5818 0,0 z m -30.3759,-0.3438 c -0.2335,-25.7593 17.0628,-7.9298 0,0 z m 48.9293,-7.3852 c 4.5619,-6.1229 3.8524,7.4686 0,0 z m -29.7977,-1.814 c -4.7944,-26.9679 9.7915,-16.2488 0,0 z m 9.5307,-3.1967 c 8.6523,-26.6935 5.7349,14.8658 0,0 z m 24.5071,1.253 c 1.9177,-8.5767 11.2706,11.3597 0,0 z m -73.182,-2.802 c 9.8078,-26.8928 22.0161,-1.1196 0,0 z m 60.8382,-2.3254 c -5.6079,-37.16328 28.4407,0.9295 0,0 z m 7.3114,-7.8917 c -0.051,-10.8094 -9.2392,5.4716 0,0 z m 7.764,7.3607 c 1.6689,-4.814 2.845,4.9165 0,0 z m -30.8183,-2.6185 c 2.9532,-7.7558 4.7073,4.8799 0,0 z m -38.0155,-10.1871 c -18.3948,-17.55748 31.7949,15.9853 0,0 z m 18.2739,-1.3929 c 3.3681,-19.61528 9.5167,15.0566 0,0 z m 20.3491,-3.1525 c -4.624,-5.5961 5.8099,0.8165 0,0 z m -10.6691,-4.3778 c -18.1708,-17.41948 20.1008,5.9764 0,0 z m 17.3195,0.6479 c -20.1705,-43.9705 29.6856,11.4739 0,0 z m -47.4739,-3.1208 c -8.0479,-17.48948 21.6307,6.9077 0,0 z m 20.9645,-1.1149 c 1.8664,-6.81248 4.1405,4.8548 0,0 z m -11.2073,-5.45998 c -34.0185,-10.6209 8.2447,-23.37655 2.6261,0.2245 z m 11.2518,-9.7662 c -17.0452,-25.69847 14.8682,-4.06603 0,0 z m 29.2102,0.4455 c 2.3388,-3.0842 -0.1346,5.8194 0,0 z m -20.3815,-1.058 c -3.5185,-25.08651 16.9422,7.4461 0,0 z m 14.7885,-7.93508 c -3.224,-20.70358 15.7959,4.16235 0,0 z m -46.4781,-1.6927 c 6.0184,-5.63771 7.8754,5.81705 0,0 z m 3.2509,-3.67563 c 3.5949,-9.53962 14.971,9.09528 0,0 z m 3.7206,-5.49485 c -23.8964,-14.47834 24.6735,5.06954 0,0 z m 22.1827,-0.28408 c 13.6888,-34.34298 34.907,4.7669 0,0 z m -15.5181,-3.97214 c -30.4963,-1.11281 1.6922,-13.48415 0,0 z m 10.5801,-6.77783 c -2.0698,-15.38795 14.0581,6.1833 0,0 z m 23.4609,-1.1469 c 0.7836,-9.64628 8.2208,-0.0338 0,0 z m -31.6437,-3.63944 c -30.1225,-8.65331 12.0151,-29.81512 5.0762,-6.5892 12.8024,-7.51609 -0.8576,1.82741 -5.0762,6.5892 z m 13.335,-6.93997 c 7.7158,-13.40753 2.816,9.75366 0,0 z m 8.3485,-10.5216 c 7.3523,-17.07632 28.6082,6.26295 5.8365,-3.16675 0.8408,3.00001 2.1352,13.10517 -5.8365,3.16675 z m -37.7169,-6.40918 c -1.6021,-49.23748 42.4363,0.77303 0,0 z m 10.1406,-14.6172 c -2.8451,-4.9164 -1.6686,4.81389 0,0 z m 14.4896,12.55385 c -3.7496,-35.05558 19.6401,-7.77773 0,0 z m 38.749,-4.38503 c -9.8606,-32.41094 21.3358,9.9382 0,0 z m -22.0059,-1.43223 c -5.6443,-13.66504 10.6992,-6.43381 0,0 z m 9.0131,-1.29798 c -17.6708,-26.03819 18.6282,6.25168 0,0 z m -14.9113,-2.58201 c -7.5404,-17.93246 9.127,1.18606 0,0 z m 40.1575,0.10572 c -8.3932,-19.61279 23.6504,1.14315 0,0 z m -64.9776,-12.82099 c -25.353,-32.84493 27.6791,-6.85322 7.5638,0.4086 l -1.3219,0.60775 z m 13.9995,-5.1289 c -12.1931,-16.02216 -22.2515,3.39116 0,0 z m 63.3645,4.70421 c 8.2248,-25.21978 41.7095,-16.57913 0,0 z m -52.3223,-5.51132 c -15.5403,-29.06016 46.0977,8.50373 5.6099,2.41233 z m 27.994,1.51196 c 4.5822,-10.6647 -5.9021,-28.03848 14.4909,-6.19222 1.4794,7.96442 -9.8692,9.61819 -14.4909,6.19222 z m 22.988,-4.95731 c 21.444,-37.40385 -3.1063,20.18824 0,0 z m -2.7825,-14.67928 c -39.8222,-14.5908 30.4771,-16.22037 2.9717,1.91578 z m 19.4121,1.20488 c 11.6439,-40.99582 13.3768,-2.91267 13.044,-6.21799 6.6808,2.37023 -10.6891,18.99859 -13.044,6.21799 z m -89.9987,-2.83371 c -26.0494,-22.01719 30.0737,-0.11223 0,0 z m 30.5931,-3.90086 c -10.7426,-15.98037 18.2831,11.13824 0,0 z m -11.3293,0.40953 c -8.2869,-21.76311 12.5464,0.78095 0,0 z m 17.6921,-2.63986 c -31.295,-14.56507 16.1385,-4.02956 0,0 z m 53.6765,0.29653 c 5.1996,-23.13081 11.33,0.89184 0,0 z m 14.892,0.0136 c 6.0412,-18.07833 22.3427,-0.078 0,0 z m -22.5827,-6.34315 c -33.8589,-25.59757 41.056,-23.45199 0,0 z m 5.7352,-10.60062 c -0.1207,-6.468 -4.181,4.35763 0,0 z m -42.0931,8.75978 c -23.045,-44.16511 24.8055,-10.1143 0,0 z m -38.9783,-3.76919 c 1.6687,-4.81383 2.845,4.91647 0,0 z m 22.8164,0 c 1.9508,-5.24288 4.0014,5.53122 0,0 z m -41.1964,-0.74314 c 0.6872,-35.18377 38.1358,-11.04339 0,0 z m 20.5982,-1.82045 c -8.8578,-14.13414 18.751,2.9815 0,0 z m 42.7812,-0.61035 c 3.0314,-7.01584 3.0314,7.01579 0,0 z m 52.2735,-0.83954 c 6.38,-27.1822 29.7075,-8.80908 10.8202,-3.42266 13.7329,7.68028 -10.1898,2.23919 -10.8202,3.42266 z m -84.3795,-12.17383 c 12.4391,-23.89499 12.4029,9.83025 0,0 z m 82.8095,-1.34436 c 3.3993,-18.75712 6.601,8.54541 0,0 z m -22.1829,-4.05137 c -34.3468,-11.20993 30.7768,-11.02368 0,0 z m -26.4439,-1.90437 c -33.7023,-12.36972 10.9777,-16.2945 0,0 z m 74.4761,-1.16701 c 2.6115,-22.79836 13.0808,3.40548 0,0 z m -108.0468,-2.70767 c 2.8503,-9.95945 5.0466,6.8542 0,0 z m -30.6178,-6.95655 c 18.7738,-33.7784 20.0271,25.18934 0,0 z m 131.829,6.67023 c 3.1195,-15.87203 10.3968,2.11302 0,0 z m -114.5943,-2.62332 c -0.084,-6.80186 6.5728,1.56878 0,0 z m 19.5254,-0.27327 c 3.7761,-2.81647 2.3297,4.81553 0,0 z m 34.1506,0.14066 c -43.7388,-25.78147 34.2121,-0.56997 0,0 z m 55.848,-1.04602 c 15.8595,-25.0309 20.5784,-7.59044 0,0 z m -14.2971,-2.77653 c -31.9788,-6.0795 -13.3025,-24.67785 -0.6387,-12.17965 16.5546,-8.52434 6.3575,8.47574 0.6387,12.17965 z m -70.0013,-3.87262 c -17.5369,-21.4233 91.1891,-30.06356 29.0227,-9.63345 -11.0918,-8.24084 -19.5022,6.70022 -29.0227,9.63345 z m 83.1309,0.54101 c 2.3388,-3.08421 -0.1345,5.81949 0,0 z m -100.9524,-1.92667 c 6.1833,-14.06483 24.2738,6.08657 0,0 z m 121.1335,-1.53363 c 2.8287,-18.91567 7.6965,6.97697 0,0 z m -134.8365,-6.08441 c -26.8003,-18.52801 40.0209,-7.74462 0,0 z m 119.0126,-2.37688 c 3.9242,-15.17163 14.7942,-0.47584 0,0 z m -92.5547,-5.11307 c 5.5349,-5.60517 3.5714,5.44339 0,0 z m 85.5623,0.0864 c -0.2784,-5.94482 -13.0789,-19.20567 12.87,-14.53725 -0.2319,5.75432 -5.3568,18.00931 -12.87,14.53725 z m 2.5171,-10.09359 c 13.6495,-11.62081 -19.285,8.86185 0,0 z m 20.4058,6.3331 c -6.6952,-47.21527 28.3919,19.36682 0,0 z m -138.2735,-1.88358 c 7.7514,-19.59601 5.6614,10.33957 0,0 z m 48.2298,-0.0814 c -25.1078,-42.7334 24.4249,5.61857 0.7212,-5.2819 1.4104,-2.25303 3.2251,10.73845 -0.7212,5.2819 z m -53.9681,-0.76448 c 2.176,-14.87097 10.1304,4.13067 0,0 z m 29.339,-5.54349 c -10.5628,-37.84397 26.006,0.70567 0,0 z m 6.8216,-12.17498 c -2.8454,-4.91653 -1.669,4.81385 0,0 z m 6.3377,15.23488 c 3.0591,-4.98575 3.0591,4.98575 0,0 z m -5.7042,-1.26956 c 3.0592,-4.98576 3.0592,4.98574 0,0 z m 26.5395,-1.84857 c -4.4853,-15.40185 11.4194,11.02977 0,0 z m 34.5161,1.00218 c -25.8798,-10.02125 14.5209,-24.18796 0,0 z m 58.137,-0.35954 c 4.9291,-10.5124 13.4345,2.09776 0,0 z m -87.5547,-3.95685 c -0.3151,-7.30254 6.3643,5.71019 0,0 z m -58.0372,-1.34358 c 7.5878,-24.75052 -27.4613,2.15514 -4.0246,-24.99656 10.4541,0.95895 20.4527,25.2028 4.0246,24.99656 z m 62.6403,-5.86291 c -13.7575,-26.97404 24.8265,6.82692 -1.5798,-7.06261 1.757,-3.94026 17.5824,26.47277 1.5798,7.06261 z m 39.3714,0.94074 c 8.4935,-15.91693 3.4383,14.83916 0,0 z m 55.3748,0.15615 c -16.3336,-15.56371 15.9128,1.12423 0,0 z m -57.4741,-4.18072 c -13.2316,-22.15101 25,-15.30728 0,0 z m 14.5844,-3.59734 c -26.454,-29.43173 28.3858,9.73591 0,0 z m 50.218,0.18647 c -5.0907,-33.96627 30.192,7.00532 0,0 z m -35.8422,-0.40006 c 17.1619,-22.25932 40.0705,-13.69352 7.9925,0.40012 z m 19.849,-0.24322 c 6.9392,-21.22937 14.1,1.38555 0,0 z m 89.9987,-1.56632 c 5.5719,-25.48278 15.1511,-14.03234 2.1749,1.69725 z m -198.6279,-2.60935 c -9.5928,-42.72019 27.3078,7.20836 0,0 z m 47.1513,0.83053 c 3.2786,-5.17745 4.3501,5.28126 0,0 z m 131.18,-1.29793 c -15.0639,-43.72866 33.8041,8.31737 0,0 z m 7.6207,-1.72057 c -5.6901,-15.80061 -8.7213,8.47856 0,0 z m -198.9191,-0.0446 c -4.5967,-19.36393 13.2391,-0.8464 0,0 z m 177.8633,0.54959 c -37.4081,-1.49185 11.8938,-15.84236 0,6e-5 z m 50.3103,-0.76633 c 2.3392,-3.0841 -0.1364,5.81964 0,0 z m -5.022,-5.60721 c 13.8345,-31.33193 -3.7145,23.10807 0,0 z m -242.7618,1.06919 c -3.6564,-22.02855 20.4236,-15.06114 0,0 z m 5.5745,0.99059 c 15.6383,-13.47441 16.1847,2.69771 0,0 z m 62.112,-0.50661 c -37.5562,-44.02922 45.0773,6.85323 0,0 z m 47.7306,-1.72252 c 5.7094,-23.19953 28.7587,-3.33535 0,0 z m 139.5182,-6.11538 c 13.5233,-28.90481 21.7057,23.3852 0,0 z m -207.5302,2.28805 c -32.4548,-17.43423 26.4117,-0.75329 0,0 z m 42.421,0.48587 c -10.372,-17.65124 -5.5312,-36.85644 10.1391,-13.20767 l -5.4583,7.09704 z m 79.1312,-4.74143 c -35.3686,-15.16027 32.2056,-3.1672 0,0 z m 24.8195,4.38762 c -29.3639,-5.27712 27.2382,-11.73855 0,0 z m 37.4284,-0.019 c 3.7762,-2.81654 2.3297,4.81552 0,0 z m 44.3654,-1.19468 c 3.0591,-4.98575 3.0591,4.98576 0,0 z m -288.3263,-1.71113 c -3.5033,-43.38561 37.2312,-12.43552 0,0 z m 29.7582,0.75895 c -0.2392,-9.58079 5.5898,2.1833 0,0 z m 91.827,-5.6398 c 10.8363,-31.6969 22.6643,12.7084 0,0 z m 8.2928,-4.19943 c 6.2647,-11.58173 -13.4172,13.45748 0,0 z m 163.7397,5.31387 c 4.188,-32.62221 28.5161,8.14887 0,0 z m -145.1615,-2.4019 c 0.4392,-13.77677 7.6379,12.95284 0,0 z m -110.436,-2.62826 c -42.7369,-19.41079 27.6355,-16.13753 1.1684,-4.53601 z m 212.532,1.36674 c -4.0343,-12.21872 11.8934,5.68889 0,0 z M 1791.321,746.8672 c 3.7762,-2.81648 2.3299,4.81553 0,0 z m 206.6168,-2.45549 c 1.281,-27.57183 17.2672,2.59947 0,0 z m -23.7673,-0.91091 c 1.0065,-21.28824 25.0449,2.80388 0,0 z m 11.0913,-1.00215 c 5.6281,-8.66761 4.0546,6.51852 0,0 z m 55.8638,0.10853 c -4.4896,-8.20355 6.3911,4.03456 0,0 z m -85.6436,-3.24389 c -23.6842,-36.2392 32.2471,2.2277 0.8252,1.1138 z m 61.7231,2.24662 c -2.44,-18.40497 22.5857,10.79382 0,0 z m -201.0707,-3.45346 c -8.3767,-40.08306 48.0269,14.91108 8.9867,-8.65776 1.793,2.15244 -2.9346,20.89806 -8.9867,8.65776 z m 85.7255,-0.0207 c -2.5293,-23.17929 21.6991,11.68941 0,0 z m 20.2513,1.00032 c 6.6452,-26.37711 8.393,11.30049 0,0 z m 7.3767,-0.96672 c 12.5417,-22.8206 12.0342,3.41493 0,0 z m -52.6919,-7.07623 c -38.8817,-27.14361 47.2308,-5.78877 7.113,-1.9866 z m 118.1759,2.12759 c -15.9985,-16.73908 18.2998,-4.69841 0,0 z m -20.8021,-0.55975 6.0651,-1.25881 z m 47.1437,-1.54963 c 11.6266,-7.50392 -3.4876,6.59176 0,0 z m 15.9195,0.58367 c 19.8626,-11.1184 28.8067,7.87888 0,0 z m -181.8987,-1.45898 c -42.6429,-45.97331 26.5072,-1.23951 0,0 z m 156.8381,-0.0369 c 6.5151,-13.57516 9.8405,2.85989 0,0 z m 22.5254,-2.85877 c -7.9173,-27.38346 30.015,3.94135 0,0 z m -228.7499,-2.7167 c -12.992,-35.44461 24.6859,-1.68089 0,0 z m 131.4775,-0.13931 c 14.6676,-6.4544 -6.9016,8.20618 0,0 z m 71.9205,0.24186 c 4.102,-7.26557 3.0569,7.20053 0,0 z m -220.5599,-0.67949 c -4.5696,-39.45205 31.8509,-6.03481 0,0 z m 129.4895,-0.65606 c 2.8503,-9.95944 5.0466,6.85422 0,0 z m 63.1835,-0.43301 c 1.0081,-23.10126 41.4663,-9.5642 5.6984,-0.88329 z m -208.966,-2.29759 c -31.1877,-10.58626 39.4979,-13.69954 0,0 z m 127.9099,0.55323 c -23.0901,-22.28671 30.8235,-1.69208 0,0 z m 31.9522,-0.53767 c 8.9689,-6.37991 -3.3626,7.8663 0,0 z m 73.8218,0.87665 c 4.0012,-5.53137 1.9508,5.24278 0,0 z m -93.1676,-1.26963 c 4.3502,-5.28125 3.2787,5.17748 0,0 z m -74.2811,-4.31795 c 2.3521,-16.47347 10.4775,2.50157 0,0 z m 113.1195,-0.56436 c 2.7208,-22.46488 27.9537,4.61671 0,0 z m 65.1037,1.46048 c -2.8576,-21.77803 31.7722,-2.34503 0,0 z m -51.261,-1.53277 c 11.0849,-13.75053 9.2456,6.32207 0,0 z m -136.3418,-1.39322 c -34.0176,-22.36665 20.7577,-23.09744 0,0 z m 42.132,-1.58696 c -28.5501,-25.38988 29.5142,-4.19085 0,0 z m -11.0054,-0.83764 c -12.6019,-19.51536 10.5344,-5.28072 0,0 z m 53.8018,0.13936 c 3.8045,-10.29327 9.6431,1.25025 0,0 z m 7.3678,0.14837 c 4.8483,-2.87888 1.3674,2.82886 0,0 z m 12.9333,-4.28388 c -33.6851,-9.78384 35.0484,-27.11345 4.8712,-9.37507 10.2893,6.16981 9.1127,10.55758 -4.8712,9.37507 z m -154.0316,-0.59379 c -31.4793,-5.32587 11.7632,-10.69815 0,0 z m 131.1953,-0.60295 c 3.0591,-4.98576 3.0591,4.98575 0,0 z m -25.5489,-2.22178 c -36.1761,-44.38554 28.1012,-15.99476 0,0 z m 19.2109,-0.84634 c -29.4792,-0.12106 10.6706,-10.64784 0,0 z m 69.0631,0.4959 c -20.4118,-4.91804 19.6845,-4.13806 0,0 z m 39.1855,-2.80649 c 9.4526,-25.41173 5.6824,15.07179 0,0 z m -30.9257,-3.36024 c 16.7859,-26.4144 22.4587,25.76946 0,0 z m -32.2639,0.79611 c 4.5727,-14.56714 2.1321,9.32675 0,0 z m 6.9289,0.35686 c -10.3514,-27.12974 42.0457,10.89471 0,0 z m -160.6223,-0.87623 c 6.2212,-23.65177 1.0062,-42.78998 7.8651,-13.51672 -0.1364,8.6763 11.7103,19.64132 -7.8651,13.51672 z m 48.1072,1.27354 c 5.827,-36.01344 50.5712,-21.58636 0,0 z m -62.1119,-3.79414 c -5.9816,-43.28832 34.3705,-6.04025 0,0 z m 7.656,-9.3304 c -1.0029,-8.86466 -2.7668,9.05348 0,0 z m 115.4016,5.46442 c -13.6577,-33.00118 65.3882,-1.32097 0,0 z m 5.2355,-4.63585 c 2.9114,-13.47552 -13.3266,10.77329 0,0 z m 92.7345,2.43006 c -8.9035,-20.97064 3.5197,-0.3673 7.1896,2.5458 z m -186.7974,-2.70288 c 1.0487,-27.12259 36.1205,-5.34611 11.0359,-3.72908 4.4844,10.55555 -10.0636,12.04105 -11.0359,3.72908 z m 144.1828,0.63888 c 3.7762,-2.81649 2.3298,4.81552 0,0 z m 17.1245,-1.03783 c -17.6627,-21.83023 53.8044,-13.97576 8.8705,-0.12451 z m -1.0477,-8.01234 c -2.8246,1.36966 2.8748,4.8559 0,0 z m -39.1237,-1.75443 c 41.5137,-19.12398 13.8368,24.89139 0,0 z m -128.3686,-0.44742 c -16.2984,-10.76393 12.5778,-40.74902 0,0 z m 34.446,-4.03854 c 7.5179,-16.04029 19.1548,16.20521 0,0 z m 52.9016,0.99863 c -9.0052,-40.03133 42.8926,-0.94896 3.5359,-4.90791 1.3053,13.18126 -1.3951,7.94331 -3.5359,4.90791 z m 27.3079,-4.50106 c -3.4938,-36.23225 41.5593,9.56656 0,0 z m -44.3656,1.1688 c -22.2624,-38.97455 32.8449,4.8977 0,0 z m 79.858,-0.075 c -31.1986,-8.37895 22.7804,-1.47751 0,0 z m -92.2472,-4.03539 c 4.7061,-10.69698 6.8475,4.93379 0,0 z m -66.6892,-2.90259 c -6.7111,-18.28673 11.1424,10.13604 0,0 z m 52.9605,-1.10628 c -5.2505,-44.87572 25.3112,5.59861 0,0 z m 121.5437,1.94415 c 20.4574,-29.29995 6.9279,-0.66465 24.1277,-1.8866 -7.4045,3.54016 -16.2887,2.75616 -24.1277,1.8866 z m -146.1293,-6.03345 c -18.5652,-41.60559 33.284,-6.86313 6.6975,2.25547 z m -9.9126,-3.52848 c -24.3906,-36.78586 15.4456,0.0375 0,0 z m 128.5676,3.49722 c 10.8463,-16.92452 24.2998,0.0944 0,0 z m 20.7795,0.88845 c 1.1846,-6.26791 4.7623,2.44919 0,0 z m -7.6054,-1.21347 c 5.7244,-14.3468 12.1391,1.02309 0,0 z m -152.8868,-5.95862 c -4.5199,-15.16048 11.4067,13.54726 0,0 z m 112.324,1.44501 c 4.2568,-4.70014 4.9302,2.86968 0,0 z m 23.5449,-3.15643 c 15.9581,-21.16254 20.9153,0.78242 0,0 z m -64.6228,-2.56109 c -13.2014,-43.32762 40.8278,7.12747 0,0 z m 2.4164,-3.94012 c -3.059,-4.98575 -3.059,4.98575 0,0 z m 2.9791,-6.34788 c -7.7709,-13.60237 2.8751,12.56613 0,0 z m 18.1922,9.49861 c -23.1767,-15.69246 26.414,5.70915 0,0 z m 12.4198,0.0234 c 3.2795,-6.30929 3.2795,6.30935 0,0 z m 56.4796,-2.18683 c -9.8738,-21.16976 20.3603,4.03158 0,0 z m -53.6083,-2.02183 c -1.8728,-33.65969 39.436,13.9269 0,0 z m 66.2123,-1.50441 c 0.771,-11.56831 14.5493,5.29557 0,0 z m -120.7379,-2.1258 c -16.2872,-22.80211 16.1705,5.91477 0,0 z m -23.5347,-2.50815 c -28.8908,-13.51089 9.8951,-34.63327 0,0 z m 114.0401,-2.50494 c -14.4842,-12.0348 23.7894,-10.83084 5.7256,2.21401 l -0.8041,1.2032 z m -105.1435,1.25886 c 5.0033,-32.45731 40.2022,-0.84607 0,0 z m 46.9963,-5.69024 c -25.3109,-37.99896 38.8569,7.49472 7.8827,2.74985 z m 80.1402,0.77883 c 2.9145,-13.3698 2.9145,13.36993 0,0 z m 5.2883,-1.67207 c -0.4903,-25.11754 10.0993,4.73771 0,0 z m -159.0544,0.22544 2.5037,-1.80008 z m 115.3412,-6.80556 c -35.8525,8.33692 -0.1,-34.59876 4.6309,4.37052 l -1.4086,0.65409 z m -62.1369,1.69274 c -15.5646,-35.88708 22.7401,-5.3647 0,0 z m 90.3901,-6.17386 c -0.065,-52.66773 41.8281,7.10568 0,0 z m 6.6015,-9.75933 c -5.7761,-0.75423 4.6278,5.51155 0,0 z m -126.9911,8.5715 c 9.9398,-26.55097 13.7875,2.00086 0,0 z m 8.873,-1.87654 c 9.9679,-17.57684 6.2208,5.99633 0,0 z m 95.5507,-0.646 c 13.9923,-14.06403 -34.9603,-10.05169 7.3833,-17.64821 9.3305,3.39411 1.9503,24.45197 -7.3833,17.64821 z m -108.8646,-0.70266 c 5.5782,-21.85436 17.799,-6.44059 0,0 z m 60.2344,-2.4426 c -30.9173,-27.57073 39.1245,2.09004 2.3614,0.61176 z m -2.5549,-5.16783 c -2.8452,-4.91646 -1.6686,4.81384 0,0 z m 17.2238,-8.16236 c 7.2814,-55.46671 21.7952,32.29057 0,0 z m -72.9977,4.55041 c 8.3077,-18.92276 7.0866,5.00604 0,0 z m 17.1834,-0.082 c 17.6692,-4.5579 0.5434,-38.0132 14.1684,-12.87707 -2.5272,6.04901 -7.6298,11.34043 -14.1684,12.87707 z m 18.3091,-0.0396 c 1.8664,-6.81258 4.1405,4.85489 0,0 z m -22.1266,-5.06218 c 9.6034,-14.43985 14.2346,-1.87938 0,0 z m 107.6599,-3.94637 c -18.5161,-36.71334 26.2579,0.32328 0,0 z m -27.7225,-1.9616 c -13.2722,-38.92861 32.7251,-3.54025 0,0 z m -81.895,-0.53105 c 3.0592,-4.98576 3.0592,4.98577 0,0 z m 36.9605,-2.53914 c -26.4535,-19.09945 36.6218,3.07818 0,0 z m 3.6023,-4.82438 c -4.3787,-14.90761 -5.8873,4.79351 0,0 z m 84.4911,3.77222 c -10.255,-27.12643 15.0254,4.42235 0,0 z m -76.4306,-11.70986 c -42.0605,-18.25294 51.3064,-15.22711 3.6535,-5.51179 19.4815,-0.23877 6.5374,17.64694 -3.6535,5.51179 z m 0.9675,-4.59943 c -4.9824,-4.85727 3.6537,9.87287 0,0 z m 69.8643,3.07872 c -4.5014,-12.918 18.8751,-1.41011 0,0 z m -95.2887,-1.48762 c -0.037,-21.89935 16.8403,-9.89406 0,0 z m -6.4202,-3.34818 c 4.2334,-6.94366 1.7061,9.02822 0,0 z m 89.9988,-1.05402 c 4.3777,-18.77036 7.9582,4.07665 0,0 z m -26.5296,-3.21356 c -9.0426,-35.47533 36.1156,-13.74678 0,0 z m 13.8537,-2.19895 c 1.6737,-14.528 26.3999,6.20657 0,0 z m -26.1919,-5.60045 c -21.2238,-35.44287 32.4099,-5.18072 0,0 z m -38.4866,-1.88259 c -1.9087,-13.83934 10.6833,7.87165 0,0 z m 98.0318,1.60084 c -21.2408,-28.57775 18.4306,-20.09744 0,0 z m -81.0234,-3.44602 c -28.8556,-45.4196 31.7879,-8.53478 0,0 z m 63.3831,-2.79647 c -29.7864,-22.04557 30.1104,6.65257 0,0 z m 22.3144,-12.67517 c 4.9172,-25.03309 4.8289,8.07306 0,0 z m -55.4216,-1.98508 c 14.9348,-30.43826 21.0032,5.68231 0,0 z m 25.7173,-6.98264 c 15.2669,-21.61055 12.3795,22.69211 0,0 z m -49.4072,0.85477 c 5.8542,-15.28348 16.8977,-33.48964 14.6563,-7.01422 -14.1509,-22.69266 13.0248,25.40092 -14.6563,7.01422 z m 60.7419,-5.43371 c -18.7631,-21.25853 29.6466,8.39415 0,0 z m 17.9838,-2.57496 c -14.5522,-23.95754 24.5451,-5.13151 7.2809,-2.63293 9.3821,5.51523 -4.0363,12.30618 -7.2809,2.63293 z m -44.6134,-5.56131 c -12.9353,-43.63959 41.4914,-1.85671 7.5304,-10.96494 -2.836,3.90757 0.7267,14.05447 -7.5304,10.96494 z m -14.4853,-7.45185 c -23.9421,-42.76644 37.0977,3.69826 0,0 z m 36.312,-2.61271 c -10.9897,-34.41214 26.0687,-8.8575 5.1467,-0.28338 l -2.5719,0.98439 z m 21.2532,-1.68883 c -11.2182,-39.95415 38.1752,0.37355 0,0 z m -51.3156,-17.39765 c -7.009,-22.88918 35.9188,9.50149 0,0 z m 62.1082,-0.63496 c 4.0705,-16.54213 7.3548,7.18927 0,0 z m 7.6055,-0.34703 c 4.5886,-7.47859 4.5886,7.47863 0,0 z m -40.3249,-6.65181 c -12.6653,-28.87438 45.645,-1.82844 0,0 z m 21.9449,-0.33084 c 2.8454,-4.9165 1.6686,4.81386 0,0 z m 18.5799,-1.35254 c -55.1629,-14.74499 9.1776,-16.80637 0,0 z m -56.5369,-4.88075 c -9.2911,-24.92211 21.0187,-15.06609 0,0 z m 54.0432,-7.41462 c 10.1334,-10.55267 21.9594,12.22678 0,0 z m -63.3921,-3.17399 c 4.9553,-9.48372 2.5908,10.08397 0,0 z m 44.137,-0.17224 c 2.9967,-19.65991 8.7603,4.08252 0,0 z m -3.8524,-7.92452 c -32.7461,-0.49719 20.8997,-23.15674 0,0 z m 33.249,3.52674 c 4.6574,-14.20283 -30.0596,-2.39023 2.297,-19.34992 13.7454,-2.41786 7.7297,20.548 -2.297,19.34992 z m -67.9341,-2.3943 2.9174,-2.41266 z m 42.6056,-7.57119 c -9.589,-28.89776 21.6403,9.98782 0,0 z m -32.5726,0.36946 c -16.5652,-27.39604 34.9574,-6.70109 0,0 z m 39.8931,-12.83625 c -28.4731,-37.53138 34.0248,3.97887 0,0 z m 22.8361,-1.16504 c -29.2344,-32.5478 25.5638,-6.8566 0.7096,0.0412 z m -54.8918,-5.76584 c -10.9967,-31.4176 27.1193,5.37185 0,0 z m 2.9207,-3.83669 c -8.4128,-9.77476 1.5194,8.07507 0,0 z m 62.6775,-3.91937 c 0.4396,-9.99682 7.5795,5.66237 0,0 z m -5.636,-2.98838 c 1.8664,-6.81257 4.1405,4.85488 0,0 z m -19.0138,-3.24889 c 3.059,-4.98575 3.059,4.98577 0,0 z m -28.5207,-1.79213 c -33.1047,-22.42689 27.098,-3.54597 0,0 z m -0.6339,-6.38518 c -2.3297,-4.81551 -3.7761,2.81648 0,0 z m 12.8441,1.76694 c -13.6748,-36.607 6.9614,-39.86301 9.4973,-1.37316 21.7462,-15.04086 -6.8044,20.85823 -9.4973,1.37316 z m 5.4004,-4.48488 c 3.8537,-11.5344 -6.5082,6.18713 0,0 z m -8.1037,-14.42132 c -4.0103,-11.27944 -4.9769,6.39919 0,0 z m 37.0769,18.32628 c -27.3141,-28.87586 37.9732,15.97769 0,0 z m -16.1616,-0.62716 c -1.4614,-12.83667 8.2373,7.08994 0,0 z m 27.7572,-5.71307 c -19.554,-16.69359 18.7876,-4.08527 0,0 z m -57.5456,-3.17393 c 3.0591,-4.9858 3.0591,4.98575 0,0 z m 29.2464,-5.88432 c -17.4631,-41.489 36.7617,12.05508 0,0 z m 23.6551,-5.37469 c -19.1946,-24.10424 44.0785,-11.87127 2.0091,-3.58994 30.7986,3.97512 1.5333,5.51943 -2.0091,3.58994 z m -32.62,-17.9413 c -10.4628,-33.22052 13.9531,-5.32556 0,0 z m 19.6106,-0.93945 c 5.9026,-17.68126 3.4463,14.478 0,0 z m -13.1837,0.62209 c -0.4833,-16.96698 10.8621,8.25921 0,0 z m 19.5586,-0.95221 c 2.845,-4.91648 1.6687,4.81389 0,0 z m 15.8449,-3.86197 c -14.2952,-23.94873 22.6351,-8.88059 13.0645,-1.25803 6.4947,7.647 -15.5628,0.84281 -13.0645,1.25803 z m -27.3957,-1.89072 c -4.1892,-13.94083 9.3322,9.89949 0,0 z m 9.0818,-5.90651 c -6.3127,-9.56986 -19.3735,-17.7031 3.359,-15.68702 3.4005,1.81746 6.1271,23.97781 -3.359,15.68702 z m 33.5627,-10.11869 c -51.1534,-18.46857 -4.6356,-41.56373 0,0 z m -55.8117,-6.69018 c 6.5261,-26.44668 21.6469,0.35627 0,0 z m 23.1968,-8.47661 c -41.9065,-3.33388 20.8749,-27.68324 0,0 z m 33.8534,-3.20438 c -41.2085,-25.52119 44.9999,-9.69417 1.8651,-8.10992 9.9163,2.08363 13.0274,21.46348 -1.8651,8.10992 z m -0.6427,-10.63399 c -1.6687,-4.81389 -2.8451,4.91647 0,0 z m -34.1262,-7.95572 c -3.0466,-44.95736 29.89,10.90182 0,0 z m 17.8194,-2.84505 c -0.6182,-34.42279 30.1035,7.44825 0,0 z m 26.7646,-0.71183 c -0.306,-39.56371 27.6905,2.76223 0,0 z m -36.2222,-21.89562 c -4.7311,-34.89491 19.0344,-6.5838 0,0 z m 24.1647,1.35142 c -12.0598,-38.04174 36.5891,-0.77627 0,0 z m 23.0229,-1.59762 c -5.0167,-34.34168 37.013,13.38188 0,0 z m -36.6002,-2.84588 c -2.3352,-27.41053 16.0146,14.14059 0,0 z m 30.4466,-9.92808 c 13.3754,-1.34278 -0.4604,-5.83372 0,0 z m 20.471,-1.78758 c -33.366,-46.60184 34.8091,-3.90235 0,0 z m -50.9054,-7.5943 c -1.0291,-36.08876 26.6046,8.2828 0,0 z m 15.9954,-6.71637 c -13.8157,-37.70157 41.2481,21.82082 0,0 z m 18.9171,3.38552 c 2.3391,-3.0841 -0.1363,5.81965 0,0 z m 31.7614,-6.53571 c -42.1903,-13.03555 19.7193,-37.37317 0.651,-5.50877 2.4524,1.87379 15.1273,7.91164 -0.651,5.50877 z m 0.7856,-13.35431 c -17.8725,-9.38861 -12.6167,7.79082 0,0 z m -48.6882,2.16699 c 0.6649,-11.36169 7.692,10.39534 0,0 z m 10.2103,-2.35745 c -9.3052,-30.13866 36.0938,15.015 5.6808,-3.70868 8.1433,7.5308 -5.4295,11.57474 -5.6808,3.70868 z m 15.1625,-1.39652 c -5.3108,-7.76305 0.9841,7.01895 0,0 z m -34.6834,-0.48943 c 3.0524,-15.62518 26.9836,-40.23766 8.4032,-10.05104 z m 65.6949,-5.54497 c -17.6354,-35.58334 31.7731,18.41167 0,0 z m -28.9348,-7.93034 c -3.9078,-27.18369 -2.715,3.68582 5.8803,-3.02241 l 1.0443,2.14074 z m -21.549,-1.62191 c 2.0685,-17.75603 7.9381,2.28346 0,0 z m 66.1148,-4.09121 c -37.7646,-25.51767 55.2185,-16.78903 0,0 z m 6.1377,-6.34787 c -1.6688,-4.81389 -2.8452,4.91651 0,0 z m -28.0768,1.61115 c -25.9556,-26.52366 33.708,-12.21736 0,0 z m -37.2051,-6.23711 c -7.9693,-29.87527 18.9199,3.38488 0,0 z m 10.255,-9.12044 c -8.8213,-20.19068 11.3994,-8.75381 0,0 z m 42.82,0.49152 c -19.3856,-43.7772 40.2163,10.91541 0,0 z m 2.0662,-14.8165 c -5.9809,2.51572 -4.5282,10.74028 0,0 z m -36.5873,4.51894 c -14.2719,-37.59142 41.9633,18.57977 0,0 z m 3.6301,-6.91743 c -2.8452,-4.9165 -1.6689,4.81387 0,0 z m 53.4534,6.1568 c -22.0385,-37.49325 37.6729,20.63373 0,0 z m 17.5231,-9.88211 c -42.2452,-17.53254 35.0928,-16.42841 0,0 z m -62.4202,-7.14958 c -8.3333,-35.80539 29.7638,4.85004 0,0 z m 18.0629,1.92485 c 4.9257,-34.70776 48.0346,5.13038 6.2259,-4.83648 -1.9157,-0.63241 -3.1474,9.37817 -6.2259,4.83648 z m 56.5092,-1.042 c 0.6646,-12.17346 6.7611,3.13036 0,0 z m -5.8057,-1.99402 c -1.3318,-16.41868 7.3837,9.23769 0,0 z m 11.4081,-7.05764 c 0.3705,-5.99648 8.4138,6.90757 0,0 z m -67.0531,-9.2961 c 0.4535,-46.81349 32.4235,16.12837 0,0 z m 39.1665,2.95918 c -34.1944,-20.06756 15.0331,-32.83162 0,0 z m 13.2931,-2.57669 c 30.1058,-10.17229 26.9155,3.62881 0,0 z m 32.3399,-6.88214 c 8.7858,-17.8759 9.2361,4.73767 0,0 z m -37.5624,-4.19998 c -29.8879,-31.9769 22.0362,-11.67961 12.7352,3.82824 l -4.9684,-0.96685 z m 32.9602,-1.41388 c -4.4336,-0.85382 -19.0409,-13.45644 6.3079,-12.92054 24.9139,5.25911 -16.1973,25.09107 -6.3079,12.92054 z m -62.2227,-6.41987 c -23.5808,-26.12795 41.6978,-7.84348 0,0 z m 77.9162,-7.82021 c -31.8344,-21.6773 45.4091,-1.84968 0,0 z m -39.8069,-4.61634 c -26.5356,-40.144832 31.2316,7.46956 0,0 z m -25.42,-8.4833 c -16.9924,-37.145258 40.0411,27.77655 0,0 z m 44.1818,-4.44863 c -14.396,-18.396339 46.5043,-15.422449 6.3726,4.59244 l -3.9888,-0.51953 z m -11.3665,0.82801 c 6.8312,-9.856659 3.6832,10.65207 0,0 z m 46.0382,-2.02073 c -2.3879,-31.366607 29.2948,6.94017 0,0 z m -70.9849,-0.20097 c 1.9508,-5.242879 4.0011,5.53129 0,0 z m 63.3272,-0.0844 c 0.2842,-9.348639 7.8556,8.47219 0,0 z m -62.1031,-9.546899 c -2.7663,-40.57449 40.7841,17.987889 0,0 z m 69.4959,-9.02751 c 1.7174,-48.173415 30.9057,20.192199 0,0 z m -47.2696,0.43043 c 2.1728,-20.164582 43.8973,-7.203386 0,0 z m 36.76,-1.13712 c -31.3481,-9.619896 35.2983,-37.790564 4.549,-10.009807 -0.067,3.10134 0,9.347107 -4.549,10.009807 z m -38.6615,-4.75644 c -27.7603,-26.704247 35.3296,0.3853 0,0 z m 19.8711,-14.249418 c -39.1587,5.885257 4.7276,-24.392814 2.2685,1.459515 z m 10.1368,-5.653365 c 5.6682,-22.874742 30.8966,7.963389 0,0 z m -4.0223,-7.878119 c 1.1845,-6.267875 4.7623,2.449248 0,0 z m 17.1126,-25.610844 c -11.6483,-9.185389 24.0074,11.269768 0,0 z"
+ style="fill:#000000" />
+ </g>
+</svg>
diff --git a/assets/js/index.js b/assets/js/index.js
new file mode 100644
index 0000000..5d5ade0
--- /dev/null
+++ b/assets/js/index.js
@@ -0,0 +1,96 @@
+
+
+
+ var map, wingr,wingl,muscler, musclel, stringr, stringl, cavity, flight_path, flight_path_length, last_point, step;
+
+ // window.onload = function () {
+
+ step = 0;
+ map = Snap('#left-bits');
+ wingr = map.select('#wingr');
+ wingrbbox = wingr.getBBox();
+ wingl = map.select('#wingl');
+ winglbbox = wingl.getBBox();
+ musclel = map.select('#musclel');
+ musclelbbox = musclel.getBBox();
+ muscler = map.select('#muscler');
+ musclerbbox = muscler.getBBox();
+ stringl = map.select('#stringl');
+ stringlbbox = stringl.getBBox();
+ stringr = map.select('#stringr');
+ stringrbbox = stringr.getBBox();
+ cavity = map.select('#cavity');
+ cavitybbox = cavity.getBBox();
+ flight_path = map.select('#path');
+
+
+
+ flight_path_length = Snap.path.getTotalLength(flight_path);
+
+flight_path_length= flight_path_length/100
+
+ last_point = flight_path.getPointAtLength(flight_path_length);
+
+console.log ('len'+ flight_path_length);
+
+
+
+ let cb=function(){step=step+100;
+
+ Snap.animate(step, flight_path_length, function() {
+//console.log('pas');
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+// console.log('animating ' + x + ' ' + y);
+ wingr.transform('translate(' + x + ',' + y + ') '+', '+wingrbbox.cx+', '+wingrbbox.cy);
+ },5000, mina.easeout);
+
+
+ Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ wingl.transform('translate(' + x + ',' + y + ')' + (moveToPoint.alpha - 90)+', '+winglbbox.cx+', '+winglbbox.cy);
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ cavity.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+cavitybbox.cx+', '+cavitybbox.cy+')');
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ musclel.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+musclelbbox.cx+', '+musclelbbox.cy+')');
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ muscler.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+musclerbbox.cx+', '+musclerbbox.cy+')');
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ stringr.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+stringrbbox.cx+', '+stringrbbox.cy+')');
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ stringl.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+stringlbbox.cx+', '+stringlbbox.cy+')');
+ },5000, mina.easeout);
+
+}
+
+document.addEventListener("requestMove", cb,false);
+
+
diff --git a/assets/js/index91.js b/assets/js/index91.js
new file mode 100644
index 0000000..5d5ade0
--- /dev/null
+++ b/assets/js/index91.js
@@ -0,0 +1,96 @@
+
+
+
+ var map, wingr,wingl,muscler, musclel, stringr, stringl, cavity, flight_path, flight_path_length, last_point, step;
+
+ // window.onload = function () {
+
+ step = 0;
+ map = Snap('#left-bits');
+ wingr = map.select('#wingr');
+ wingrbbox = wingr.getBBox();
+ wingl = map.select('#wingl');
+ winglbbox = wingl.getBBox();
+ musclel = map.select('#musclel');
+ musclelbbox = musclel.getBBox();
+ muscler = map.select('#muscler');
+ musclerbbox = muscler.getBBox();
+ stringl = map.select('#stringl');
+ stringlbbox = stringl.getBBox();
+ stringr = map.select('#stringr');
+ stringrbbox = stringr.getBBox();
+ cavity = map.select('#cavity');
+ cavitybbox = cavity.getBBox();
+ flight_path = map.select('#path');
+
+
+
+ flight_path_length = Snap.path.getTotalLength(flight_path);
+
+flight_path_length= flight_path_length/100
+
+ last_point = flight_path.getPointAtLength(flight_path_length);
+
+console.log ('len'+ flight_path_length);
+
+
+
+ let cb=function(){step=step+100;
+
+ Snap.animate(step, flight_path_length, function() {
+//console.log('pas');
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+// console.log('animating ' + x + ' ' + y);
+ wingr.transform('translate(' + x + ',' + y + ') '+', '+wingrbbox.cx+', '+wingrbbox.cy);
+ },5000, mina.easeout);
+
+
+ Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ wingl.transform('translate(' + x + ',' + y + ')' + (moveToPoint.alpha - 90)+', '+winglbbox.cx+', '+winglbbox.cy);
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ cavity.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+cavitybbox.cx+', '+cavitybbox.cy+')');
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ musclel.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+musclelbbox.cx+', '+musclelbbox.cy+')');
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ muscler.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+musclerbbox.cx+', '+musclerbbox.cy+')');
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ stringr.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+stringrbbox.cx+', '+stringrbbox.cy+')');
+ },5000, mina.easeout);
+
+Snap.animate(step, flight_path_length, function() {
+ moveToPoint = Snap.path.getPointAtLength( flight_path, step );
+ x = moveToPoint.x ;
+ y = moveToPoint.y ;
+ stringl.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - 90)+', '+stringlbbox.cx+', '+stringlbbox.cy+')');
+ },5000, mina.easeout);
+
+}
+
+document.addEventListener("requestMove", cb,false);
+
+
diff --git a/assets/js/jquery-1.12.4.min.js b/assets/js/jquery-1.12.4.min.js
new file mode 100644
index 0000000..e836475
--- /dev/null
+++ b/assets/js/jquery-1.12.4.min.js
@@ -0,0 +1,5 @@
+/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;
+}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
+marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({
+padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
diff --git a/assets/js/jquery-1.8.2.js b/assets/js/jquery-1.8.2.js
new file mode 100644
index 0000000..12c7797
--- /dev/null
+++ b/assets/js/jquery-1.8.2.js
@@ -0,0 +1,9440 @@
+/*!
+ * jQuery JavaScript Library v1.8.2
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: Thu Sep 20 2012 21:13:05 GMT-0400 (Eastern Daylight Time)
+ */
+(function( window, undefined ) {
+var
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+ location = window.location,
+ navigator = window.navigator,
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // Save a reference to some core methods
+ core_push = Array.prototype.push,
+ core_slice = Array.prototype.slice,
+ core_indexOf = Array.prototype.indexOf,
+ core_toString = Object.prototype.toString,
+ core_hasOwn = Object.prototype.hasOwnProperty,
+ core_trim = String.prototype.trim,
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Used for matching numbers
+ core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
+
+ // Used for detecting and trimming whitespace
+ core_rnotwhite = /\S/,
+ core_rspace = /\s+/,
+
+ // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return ( letter + "" ).toUpperCase();
+ },
+
+ // The ready event handler and self cleanup method
+ DOMContentLoaded = function() {
+ if ( document.addEventListener ) {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ } else if ( document.readyState === "complete" ) {
+ // we're here because readyState === "complete" in oldIE
+ // which is good enough for us to call the dom ready!
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ },
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+ doc = ( context && context.nodeType ? context.ownerDocument || context : document );
+
+ // scripts is true for back-compat
+ selector = jQuery.parseHTML( match[1], doc, true );
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ this.attr.call( selector, context, true );
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.8.2",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return core_slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+ },
+
+ eq: function( i ) {
+ i = +i;
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( core_slice.apply( this, arguments ),
+ "slice", core_slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: core_push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger("ready").off("ready");
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ isWindow: function( obj ) {
+ return obj != null && obj == obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ return !isNaN( parseFloat(obj) ) && isFinite( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ core_toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !core_hasOwn.call(obj, "constructor") &&
+ !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || core_hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ // data: string of html
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
+ // scripts (optional): If true, will include scripts passed in the html string
+ parseHTML: function( data, context, scripts ) {
+ var parsed;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ scripts = context;
+ context = 0;
+ }
+ context = context || document;
+
+ // Single tag
+ if ( (parsed = rsingleTag.exec( data )) ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );
+ return jQuery.merge( [],
+ (parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );
+ },
+
+ parseJSON: function( data ) {
+ if ( !data || typeof data !== "string") {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return ( new Function( "return " + data ) )();
+
+ }
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && core_rnotwhite.test( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var name,
+ i = 0,
+ length = obj.length,
+ isObj = length === undefined || jQuery.isFunction( obj );
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in obj ) {
+ if ( callback.apply( obj[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( obj[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in obj ) {
+ if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
+ function( text ) {
+ return text == null ?
+ "" :
+ core_trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var type,
+ ret = results || [];
+
+ if ( arr != null ) {
+ // The window, strings (and functions) also have 'length'
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ type = jQuery.type( arr );
+
+ if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) {
+ core_push.call( ret, arr );
+ } else {
+ jQuery.merge( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ var len;
+
+ if ( arr ) {
+ if ( core_indexOf ) {
+ return core_indexOf.call( arr, elem, i );
+ }
+
+ len = arr.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in arr && arr[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var l = second.length,
+ i = first.length,
+ j = 0;
+
+ if ( typeof l === "number" ) {
+ for ( ; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var retVal,
+ ret = [],
+ i = 0,
+ length = elems.length;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value, key,
+ ret = [],
+ i = 0,
+ length = elems.length,
+ // jquery objects are treated as arrays
+ isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( key in elems ) {
+ value = callback( elems[ key ], key, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = core_slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context, args.concat( core_slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Multifunctional method to get and set values of a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
+ var exec,
+ bulk = key == null,
+ i = 0,
+ length = elems.length;
+
+ // Sets many values
+ if ( key && typeof key === "object" ) {
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
+ }
+ chainable = 1;
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = pass === undefined && jQuery.isFunction( value );
+
+ if ( bulk ) {
+ // Bulk operations only iterate when executing function values
+ if ( exec ) {
+ exec = fn;
+ fn = function( elem, key, value ) {
+ return exec.call( jQuery( elem ), value );
+ };
+
+ // Otherwise they run against the entire set
+ } else {
+ fn.call( elems, value );
+ fn = null;
+ }
+ }
+
+ if ( fn ) {
+ for (; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+ }
+
+ chainable = 1;
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ length ? fn( elems[0], key ) : emptyGet;
+ },
+
+ now: function() {
+ return ( new Date() ).getTime();
+ }
+});
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready, 1 );
+
+ // Standards-based browsers support DOMContentLoaded
+ } else if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else {
+ // Ensure firing before onload, maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var top = false;
+
+ try {
+ top = window.frameElement == null && document.documentElement;
+ } catch(e) {}
+
+ if ( top && top.doScroll ) {
+ (function doScrollCheck() {
+ if ( !jQuery.isReady ) {
+
+ try {
+ // Use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ top.doScroll("left");
+ } catch(e) {
+ return setTimeout( doScrollCheck, 50 );
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+ }
+ })();
+ }
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.split( core_rspace ), function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // Flag to know if list is currently firing
+ firing,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" && ( !options.unique || !self.has( arg ) ) ) {
+ list.push( arg );
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ });
+ }
+ return this;
+ },
+ // Control if a given callback is in the list
+ has: function( fn ) {
+ return jQuery.inArray( fn, list ) > -1;
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( list && ( !fired || stack ) ) {
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var action = tuple[ 0 ],
+ fn = fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ]( jQuery.isFunction( fn ) ?
+ function() {
+ var returned = fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
+ }
+ } :
+ newDefer[ action ]
+ );
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ] = list.fire
+ deferred[ tuple[0] ] = list.fire;
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = core_slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+ if( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // if we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+});
+jQuery.support = (function() {
+
+ var support,
+ all,
+ a,
+ select,
+ opt,
+ input,
+ fragment,
+ eventName,
+ i,
+ isSupported,
+ clickFn,
+ div = document.createElement("div");
+
+ // Preliminary tests
+ div.setAttribute( "className", "t" );
+ div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
+
+ all = div.getElementsByTagName("*");
+ a = div.getElementsByTagName("a")[ 0 ];
+ a.style.cssText = "top:1px;float:left;opacity:.5";
+
+ // Can't get basic test support
+ if ( !all || !all.length ) {
+ return {};
+ }
+
+ // First batch of supports tests
+ select = document.createElement("select");
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName("input")[ 0 ];
+
+ support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: ( div.firstChild.nodeType === 3 ),
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ style: /top/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: ( a.getAttribute("href") === "/a" ),
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.5/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: ( input.value === "on" ),
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ getSetAttribute: div.className !== "t",
+
+ // Tests for enctype support on a form(#6743)
+ enctype: !!document.createElement("form").enctype,
+
+ // Makes sure cloning an html5 element does not cause problems
+ // Where outerHTML is undefined, this still works
+ html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
+
+ // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
+ boxModel: ( document.compatMode === "CSS1Compat" ),
+
+ // Will be defined later
+ submitBubbles: true,
+ changeBubbles: true,
+ focusinBubbles: false,
+ deleteExpando: true,
+ noCloneEvent: true,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableMarginRight: true,
+ boxSizingReliable: true,
+ pixelPosition: false
+ };
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent( "onclick", clickFn = function() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ support.noCloneEvent = false;
+ });
+ div.cloneNode( true ).fireEvent("onclick");
+ div.detachEvent( "onclick", clickFn );
+ }
+
+ // Check if a radio maintains its value
+ // after being appended to the DOM
+ input = document.createElement("input");
+ input.value = "t";
+ input.setAttribute( "type", "radio" );
+ support.radioValue = input.value === "t";
+
+ input.setAttribute( "checked", "checked" );
+
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( div.lastChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ fragment.removeChild( input );
+ fragment.appendChild( div );
+
+ // Technique from Juriy Zaytsev
+ // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( div.attachEvent ) {
+ for ( i in {
+ submit: true,
+ change: true,
+ focusin: true
+ }) {
+ eventName = "on" + i;
+ isSupported = ( eventName in div );
+ if ( !isSupported ) {
+ div.setAttribute( eventName, "return;" );
+ isSupported = ( typeof div[ eventName ] === "function" );
+ }
+ support[ i + "Bubbles" ] = isSupported;
+ }
+ }
+
+ // Run tests that need a body at doc ready
+ jQuery(function() {
+ var container, div, tds, marginDiv,
+ divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
+ body = document.getElementsByTagName("body")[0];
+
+ if ( !body ) {
+ // Return for frameset docs that don't have a body
+ return;
+ }
+
+ container = document.createElement("div");
+ container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";
+ body.insertBefore( container, body.firstChild );
+
+ // Construct the test element
+ div = document.createElement("div");
+ container.appendChild( div );
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName("td");
+ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE <= 8 fail this test)
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+ // Check box-sizing and margin behavior
+ div.innerHTML = "";
+ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+ support.boxSizing = ( div.offsetWidth === 4 );
+ support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
+
+ // NOTE: To any future maintainer, we've window.getComputedStyle
+ // because jsdom on node.js will break without it.
+ if ( window.getComputedStyle ) {
+ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ marginDiv = document.createElement("div");
+ marginDiv.style.cssText = div.style.cssText = divReset;
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+ div.appendChild( marginDiv );
+ support.reliableMarginRight =
+ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
+ }
+
+ if ( typeof div.style.zoom !== "undefined" ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.innerHTML = "";
+ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "block";
+ div.style.overflow = "visible";
+ div.innerHTML = "<div></div>";
+ div.firstChild.style.width = "5px";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+
+ container.style.zoom = 1;
+ }
+
+ // Null elements to avoid leaks in IE
+ body.removeChild( container );
+ container = div = tds = marginDiv = null;
+ });
+
+ // Null elements to avoid leaks in IE
+ fragment.removeChild( div );
+ all = a = select = opt = input = fragment = div = null;
+
+ return support;
+})();
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+jQuery.extend({
+ cache: {},
+
+ deletedIds: [],
+
+ // Remove at next major release (1.9/2.0)
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, ret,
+ internalKey = jQuery.expando,
+ getByName = typeof name === "string",
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;
+ } else {
+ id = internalKey;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ cache[ id ] = {};
+
+ // Avoids exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
+
+ thisCache = thisCache.data;
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( getByName ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, i, l,
+
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+ if ( thisCache ) {
+
+ // Support array or space separated string names for data keys
+ if ( !jQuery.isArray( name ) ) {
+
+ // try the string as a key before any manipulation
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+
+ // split the camel cased version by spaces unless a key with the spaces exists
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split(" ");
+ }
+ }
+ }
+
+ for ( i = 0, l = name.length; i < l; i++ ) {
+ delete thisCache[ name[i] ];
+ }
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject( cache[ id ] ) ) {
+ return;
+ }
+ }
+
+ // Destroy the cache
+ if ( isNode ) {
+ jQuery.cleanData( [ elem ], true );
+
+ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+ delete cache[ id ];
+
+ // When all else fails, null
+ } else {
+ cache[ id ] = null;
+ }
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ // nodes accept data unless otherwise specified; rejection can be conditional
+ return !noData || noData !== true && elem.getAttribute("classid") === noData;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var parts, part, attr, name, l,
+ elem = this[0],
+ i = 0,
+ data = null;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = jQuery.data( elem );
+
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+ attr = elem.attributes;
+ for ( l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( !name.indexOf( "data-" ) ) {
+ name = jQuery.camelCase( name.substring(5) );
+
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ jQuery._data( elem, "parsedAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ parts = key.split( ".", 2 );
+ parts[1] = parts[1] ? "." + parts[1] : "";
+ part = parts[1] + "!";
+
+ return jQuery.access( this, function( value ) {
+
+ if ( value === undefined ) {
+ data = this.triggerHandler( "getData" + part, [ parts[0] ] );
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && elem ) {
+ data = jQuery.data( elem, key );
+ data = dataAttr( elem, key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ }
+
+ parts[1] = value;
+ this.each(function() {
+ var self = jQuery( this );
+
+ self.triggerHandler( "setData" + part, parts );
+ jQuery.data( this, key, value );
+ self.triggerHandler( "changeData" + part, parts );
+ });
+ }, null, value, arguments.length > 1, null, false );
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ var name;
+ for ( name in obj ) {
+
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray(data) ) {
+ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ jQuery.removeData( elem, type + "queue", true );
+ jQuery.removeData( elem, key, true );
+ })
+ });
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while( i-- ) {
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+});
+var nodeHook, boolHook, fixSpecified,
+ rclass = /[\t\r\n]/g,
+ rreturn = /\r/g,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea|)$/i,
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ getSetAttribute = jQuery.support.getSetAttribute;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classNames, i, l, elem,
+ setClass, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ classNames = value.split( core_rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className && classNames.length === 1 ) {
+ elem.className = value;
+
+ } else {
+ setClass = " " + elem.className + " ";
+
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) {
+ setClass += classNames[ c ] + " ";
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var removes, className, elem, c, cl, i, l;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
+ });
+ }
+ if ( (value && typeof value === "string") || value === undefined ) {
+ removes = ( value || "" ).split( core_rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+ if ( elem.nodeType === 1 && elem.className ) {
+
+ className = (" " + elem.className + " ").replace( rclass, " " );
+
+ // loop over each item in the removal list
+ for ( c = 0, cl = removes.length; c < cl; c++ ) {
+ // Remove until there is nothing to remove,
+ while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) {
+ className = className.replace( " " + removes[ c ] + " " , " " );
+ }
+ }
+ elem.className = value ? jQuery.trim( className ) : "";
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( core_rspace );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space separated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var val,
+ self = jQuery(this);
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, self.val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, i, max, option,
+ index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ i = one ? index : 0;
+ max = one ? index + 1 : options.length;
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var values = jQuery.makeArray( value );
+
+ jQuery(elem).find("option").each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9
+ attrFn: {},
+
+ attr: function( elem, name, value, pass ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {
+ return jQuery( elem )[ name ]( value );
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === "undefined" ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( notxml ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return;
+
+ } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+
+ ret = elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret === null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var propName, attrNames, name, isBool,
+ i = 0;
+
+ if ( value && elem.nodeType === 1 ) {
+
+ attrNames = value.split( core_rspace );
+
+ for ( ; i < attrNames.length; i++ ) {
+ name = attrNames[ i ];
+
+ if ( name ) {
+ propName = jQuery.propFix[ name ] || name;
+ isBool = rboolean.test( name );
+
+ // See #9699 for explanation of this approach (setting first, then removal)
+ // Do not do this for boolean attributes (see #10870)
+ if ( !isBool ) {
+ jQuery.attr( elem, name, "" );
+ }
+ elem.removeAttribute( getSetAttribute ? name : propName );
+
+ // Set corresponding property to false for boolean attributes
+ if ( isBool && propName in elem ) {
+ elem[ propName ] = false;
+ }
+ }
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to it's default in case type is set after value
+ // This is for element creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ },
+ // Use the value property for back compat
+ // Use the nodeHook for button elements in IE6/7 (#1954)
+ value: {
+ get: function( elem, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.get( elem, name );
+ }
+ return name in elem ?
+ elem.value :
+ null;
+ },
+ set: function( elem, value, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.set( elem, value, name );
+ }
+ // Does not return so that setAttribute is also used
+ elem.value = value;
+ }
+ }
+ },
+
+ propFix: {
+ tabindex: "tabIndex",
+ readonly: "readOnly",
+ "for": "htmlFor",
+ "class": "className",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ cellpadding: "cellPadding",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ usemap: "useMap",
+ frameborder: "frameBorder",
+ contenteditable: "contentEditable"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return ( elem[ name ] = value );
+ }
+
+ } else {
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ return elem[ name ];
+ }
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ var attributeNode = elem.getAttributeNode("tabindex");
+
+ return attributeNode && attributeNode.specified ?
+ parseInt( attributeNode.value, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+ }
+ }
+});
+
+// Hook for boolean attributes
+boolHook = {
+ get: function( elem, name ) {
+ // Align boolean attributes with corresponding properties
+ // Fall back to attribute presence where some booleans are not supported
+ var attrNode,
+ property = jQuery.prop( elem, name );
+ return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+ name.toLowerCase() :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ var propName;
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ // value is true since we know at this point it's type boolean and not false
+ // Set boolean attributes to the same name and set the DOM property
+ propName = jQuery.propFix[ name ] || name;
+ if ( propName in elem ) {
+ // Only set the IDL specifically if it already exists on the element
+ elem[ propName ] = true;
+ }
+
+ elem.setAttribute( name, name.toLowerCase() );
+ }
+ return name;
+ }
+};
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+ fixSpecified = {
+ name: true,
+ id: true,
+ coords: true
+ };
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret;
+ ret = elem.getAttributeNode( name );
+ return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ?
+ ret.value :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ ret = document.createAttribute( name );
+ elem.setAttributeNode( ret );
+ }
+ return ( ret.value = value + "" );
+ }
+ };
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ });
+ });
+
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ get: nodeHook.get,
+ set: function( elem, value, name ) {
+ if ( value === "" ) {
+ value = "false";
+ }
+ nodeHook.set( elem, value, name );
+ }
+ };
+}
+
+
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ get: function( elem ) {
+ var ret = elem.getAttribute( name, 2 );
+ return ret === null ? undefined : ret;
+ }
+ });
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Normalize to lowercase since IE uppercases css property names
+ return elem.style.cssText.toLowerCase() || undefined;
+ },
+ set: function( elem, value ) {
+ return ( elem.style.cssText = value + "" );
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ });
+}
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+ jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+ jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ get: function( elem ) {
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+ };
+ });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ });
+});
+var rformElems = /^(?:textarea|input|select)$/i,
+ rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/,
+ rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ hoverHack = function( events ) {
+ return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
+ };
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var elemData, eventHandle, events,
+ t, tns, type, namespaces, handleObj,
+ handleObjIn, handlers, special;
+
+ // Don't attach events to noData or text/comment nodes (allow plain objects tho)
+ if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ events = elemData.events;
+ if ( !events ) {
+ elemData.events = events = {};
+ }
+ eventHandle = elemData.handle;
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = jQuery.trim( hoverHack(types) ).split( " " );
+ for ( t = 0; t < types.length; t++ ) {
+
+ tns = rtypenamespace.exec( types[t] ) || [];
+ type = tns[1];
+ namespaces = ( tns[2] || "" ).split( "." ).sort();
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: tns[1],
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ handlers = events[ type ];
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var t, tns, type, origType, namespaces, origCount,
+ j, events, special, eventType, handleObj,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem );
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
+ for ( t = 0; t < types.length; t++ ) {
+ tns = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tns[1];
+ namespaces = tns[2];
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector? special.delegateType : special.bindType ) || type;
+ eventType = events[ type ] || [];
+ origCount = eventType.length;
+ namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
+
+ // Remove matching events
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ eventType.splice( j--, 1 );
+
+ if ( handleObj.selector ) {
+ eventType.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( eventType.length === 0 && origCount !== eventType.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
+
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery.removeData( elem, "events", true );
+ }
+ },
+
+ // Events that are safe to short-circuit if no handlers are attached.
+ // Native DOM events should not be added, they may have inline handlers.
+ customEvent: {
+ "getData": true,
+ "setData": true,
+ "changeData": true
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ // Don't do events on text and comment nodes
+ if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
+ return;
+ }
+
+ // Event object or event type
+ var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,
+ type = event.type || event,
+ namespaces = [];
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf( "!" ) >= 0 ) {
+ // Exclusive events trigger only for the exact event (no namespaces)
+ type = type.slice(0, -1);
+ exclusive = true;
+ }
+
+ if ( type.indexOf( "." ) >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+
+ if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+ // No jQuery handlers for this event type, and it can't have inline handlers
+ return;
+ }
+
+ // Caller can pass in an Event, Object, or just an event type string
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ new jQuery.Event( type, event ) :
+ // Just the event type (string)
+ new jQuery.Event( type );
+
+ event.type = type;
+ event.isTrigger = true;
+ event.exclusive = exclusive;
+ event.namespace = namespaces.join( "." );
+ event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
+ ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
+
+ // Handle a global trigger
+ if ( !elem ) {
+
+ // TODO: Stop taunting the data cache; remove global events and always attach to document
+ cache = jQuery.cache;
+ for ( i in cache ) {
+ if ( cache[ i ].events && cache[ i ].events[ type ] ) {
+ jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
+ }
+ }
+ return;
+ }
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data != null ? jQuery.makeArray( data ) : [];
+ data.unshift( event );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ eventPath = [[ elem, special.bindType || type ]];
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
+ for ( old = elem; cur; cur = cur.parentNode ) {
+ eventPath.push([ cur, bubbleType ]);
+ old = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( old === (elem.ownerDocument || document) ) {
+ eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
+ }
+ }
+
+ // Fire handlers on the event path
+ for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
+
+ cur = eventPath[i][0];
+ event.type = eventPath[i][1];
+
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+ // Note that this is a bare JS function and not a jQuery handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+ event.preventDefault();
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
+ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ // IE<9 dies on focus/blur to hidden element (#1486)
+ if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ old = elem[ ontype ];
+
+ if ( old ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( old ) {
+ elem[ ontype ] = old;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event || window.event );
+
+ var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,
+ handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
+ delegateCount = handlers.delegateCount,
+ args = core_slice.call( arguments ),
+ run_all = !event.exclusive && !event.namespace,
+ special = jQuery.event.special[ event.type ] || {},
+ handlerQueue = [];
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers that should run if there are delegated events
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && !(event.button && event.type === "click") ) {
+
+ for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
+
+ // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.disabled !== true || event.type !== "click" ) {
+ selMatch = {};
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+ sel = handleObj.selector;
+
+ if ( selMatch[ sel ] === undefined ) {
+ selMatch[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( selMatch[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, matches: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( handlers.length > delegateCount ) {
+ handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
+ }
+
+ // Run delegates first; they may want to stop propagation beneath us
+ for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
+ matched = handlerQueue[ i ];
+ event.currentTarget = matched.elem;
+
+ for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
+ handleObj = matched.matches[ j ];
+
+ // Triggered event must either 1) be non-exclusive and have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
+ props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var eventDoc, doc, body,
+ button = original.button,
+ fromElement = original.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop,
+ originalEvent = event,
+ fixHook = jQuery.event.fixHooks[ event.type ] || {},
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = jQuery.Event( originalEvent );
+
+ for ( i = copy.length; i; ) {
+ prop = copy[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
+
+ // Target should not be a text node (#504, Safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)
+ event.metaKey = !!event.metaKey;
+
+ return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+
+ focus: {
+ delegateType: "focusin"
+ },
+ blur: {
+ delegateType: "focusout"
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ { type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+// Some plugins are using, but it's undocumented/deprecated and will be removed.
+// The 1.7 special event interface should provide all the hooks needed now.
+jQuery.event.handle = jQuery.event.dispatch;
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ var name = "on" + type;
+
+ if ( elem.detachEvent ) {
+
+ // #8545, #7054, preventing memory leaks for custom events in IE6-8 –
+ // detachEvent needed property on element, by name of that event, to properly expose it to GC
+ if ( typeof elem[ name ] === "undefined" ) {
+ elem[ name ] = null;
+ }
+
+ elem.detachEvent( name, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj,
+ selector = handleObj.selector;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !jQuery._data( form, "_submit_attached" ) ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ event._submit_bubble = true;
+ });
+ jQuery._data( form, "_submit_attached", true );
+ }
+ });
+ // return undefined since we don't need an event listener
+ },
+
+ postDispatch: function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( event._submit_bubble ) {
+ delete event._submit_bubble;
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ }
+ },
+
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
+ };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+ jQuery.event.special.change = {
+
+ setup: function() {
+
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed && !event.isTrigger ) {
+ this._just_changed = false;
+ }
+ // Allow triggered, simulated change events (#11500)
+ jQuery.event.simulate( "change", this, event, true );
+ });
+ }
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
+
+ if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ jQuery._data( elem, "_change_attached", true );
+ }
+ });
+ },
+
+ handle: function( event ) {
+ var elem = event.target;
+
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
+
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
+
+ return !rformElems.test( this.nodeName );
+ }
+ };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) { // && selector != null
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ live: function( types, data, fn ) {
+ jQuery( this.context ).on( types, this.selector, data, fn );
+ return this;
+ },
+ die: function( types, fn ) {
+ jQuery( this.context ).off( types, this.selector || "**", fn );
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ return jQuery.event.trigger( type, data, this[0], true );
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ guid = fn.guid || jQuery.guid++,
+ i = 0,
+ toggler = function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ };
+
+ // link all the functions, so any of them can unbind this click handler
+ toggler.guid = guid;
+ while ( i < args.length ) {
+ args[ i++ ].guid = guid;
+ }
+
+ return this.click( toggler );
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( rkeyEvent.test( name ) ) {
+ jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
+ }
+
+ if ( rmouseEvent.test( name ) ) {
+ jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
+ }
+});
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://sizzlejs.com/
+ */
+(function( window, undefined ) {
+
+var cachedruns,
+ assertGetIdNotName,
+ Expr,
+ getText,
+ isXML,
+ contains,
+ compile,
+ sortOrder,
+ hasDuplicate,
+ outermostContext,
+
+ baseHasDuplicate = true,
+ strundefined = "undefined",
+
+ expando = ( "sizcache" + Math.random() ).replace( ".", "" ),
+
+ Token = String,
+ document = window.document,
+ docElem = document.documentElement,
+ dirruns = 0,
+ done = 0,
+ pop = [].pop,
+ push = [].push,
+ slice = [].slice,
+ // Use a stripped-down indexOf if a native one is unavailable
+ indexOf = [].indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ // Augment a function for special use by Sizzle
+ markFunction = function( fn, value ) {
+ fn[ expando ] = value == null || value;
+ return fn;
+ },
+
+ createCache = function() {
+ var cache = {},
+ keys = [];
+
+ return markFunction(function( key, value ) {
+ // Only keep the most recent entries
+ if ( keys.push( key ) > Expr.cacheLength ) {
+ delete cache[ keys.shift() ];
+ }
+
+ return (cache[ key ] = value);
+ }, cache );
+ },
+
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+
+ // Regex
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+ operators = "([*^$|!~]?=)",
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+ "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+ // Prefer arguments not in parens/brackets,
+ // then attribute selectors and non-pseudos (denoted by :),
+ // then anything else
+ // These preferences are here to reduce the number of selectors
+ // needing tokenize in the PSEUDO preFilter
+ pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)",
+
+ // For matchExpr.POS and matchExpr.needsContext
+ pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
+ "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
+ rpseudo = new RegExp( pseudos ),
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
+
+ rnot = /^:not/,
+ rsibling = /[\x20\t\r\n\f]*[+~]/,
+ rendsWithNot = /:not\($/,
+
+ rheader = /h\d/i,
+ rinputs = /input|select|textarea|button/i,
+
+ rbackslash = /\\(?!\\)/g,
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "POS": new RegExp( pos, "i" ),
+ "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ // For use in libraries implementing .is()
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" )
+ },
+
+ // Support
+
+ // Used for testing something on an element
+ assert = function( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // release memory in IE
+ div = null;
+ }
+ },
+
+ // Check if getElementsByTagName("*") returns only elements
+ assertTagNameNoComments = assert(function( div ) {
+ div.appendChild( document.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ }),
+
+ // Check if getAttribute returns normalized href attributes
+ assertHrefNotNormalized = assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
+ div.firstChild.getAttribute("href") === "#";
+ }),
+
+ // Check if attributes should be retrieved by attribute nodes
+ assertAttributes = assert(function( div ) {
+ div.innerHTML = "<select></select>";
+ var type = typeof div.lastChild.getAttribute("multiple");
+ // IE8 returns a string for some attributes even when not present
+ return type !== "boolean" && type !== "string";
+ }),
+
+ // Check if getElementsByClassName can be trusted
+ assertUsableClassName = assert(function( div ) {
+ // Opera can't find a second classname (in 9.6)
+ div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
+ if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
+ return false;
+ }
+
+ // Safari 3.2 caches class attributes and doesn't catch changes
+ div.lastChild.className = "e";
+ return div.getElementsByClassName("e").length === 2;
+ }),
+
+ // Check if getElementById returns elements by name
+ // Check if getElementsByName privileges form controls or returns elements by ID
+ assertUsableName = assert(function( div ) {
+ // Inject content
+ div.id = expando + 0;
+ div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
+ docElem.insertBefore( div, docElem.firstChild );
+
+ // Test
+ var pass = document.getElementsByName &&
+ // buggy browsers will return fewer than the correct 2
+ document.getElementsByName( expando ).length === 2 +
+ // buggy browsers will return more than the correct 0
+ document.getElementsByName( expando + 0 ).length;
+ assertGetIdNotName = !document.getElementById( expando );
+
+ // Cleanup
+ docElem.removeChild( div );
+
+ return pass;
+ });
+
+// If slice is not available, provide a backup
+try {
+ slice.call( docElem.childNodes, 0 )[0].nodeType;
+} catch ( e ) {
+ slice = function( i ) {
+ var elem,
+ results = [];
+ for ( ; (elem = this[i]); i++ ) {
+ results.push( elem );
+ }
+ return results;
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+ var match, elem, xml, m,
+ nodeType = context.nodeType;
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ if ( nodeType !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ xml = isXML( context );
+
+ if ( !xml && !seed ) {
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
+ push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
+ return results;
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed, xml );
+}
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ return Sizzle( expr, null, null, [ elem ] ).length > 0;
+};
+
+// Returns a function to use in pseudos for input types
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+// Returns a function to use in pseudos for buttons
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+// Returns a function to use in pseudos for positionals
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( nodeType ) {
+ if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (see #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+ } else {
+
+ // If no nodeType, this is expected to be an array
+ for ( ; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ }
+ return ret;
+};
+
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Element contains another
+contains = Sizzle.contains = docElem.contains ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );
+ } :
+ docElem.compareDocumentPosition ?
+ function( a, b ) {
+ return b && !!( a.compareDocumentPosition( b ) & 16 );
+ } :
+ function( a, b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+Sizzle.attr = function( elem, name ) {
+ var val,
+ xml = isXML( elem );
+
+ if ( !xml ) {
+ name = name.toLowerCase();
+ }
+ if ( (val = Expr.attrHandle[ name ]) ) {
+ return val( elem );
+ }
+ if ( xml || assertAttributes ) {
+ return elem.getAttribute( name );
+ }
+ val = elem.getAttributeNode( name );
+ return val ?
+ typeof elem[ name ] === "boolean" ?
+ elem[ name ] ? name : null :
+ val.specified ? val.value : null :
+ null;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ // IE6/7 return a modified href
+ attrHandle: assertHrefNotNormalized ?
+ {} :
+ {
+ "href": function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ },
+ "type": function( elem ) {
+ return elem.getAttribute("type");
+ }
+ },
+
+ find: {
+ "ID": assertGetIdNotName ?
+ function( id, context, xml ) {
+ if ( typeof context.getElementById !== strundefined && !xml ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ } :
+ function( id, context, xml ) {
+ if ( typeof context.getElementById !== strundefined && !xml ) {
+ var m = context.getElementById( id );
+
+ return m ?
+ m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
+ [m] :
+ undefined :
+ [];
+ }
+ },
+
+ "TAG": assertTagNameNoComments ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ var elem,
+ tmp = [],
+ i = 0;
+
+ for ( ; (elem = results[i]); i++ ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ },
+
+ "NAME": assertUsableName && function( tag, context ) {
+ if ( typeof context.getElementsByName !== strundefined ) {
+ return context.getElementsByName( name );
+ }
+ },
+
+ "CLASS": assertUsableClassName && function( className, context, xml ) {
+ if ( typeof context.getElementsByClassName !== strundefined && !xml ) {
+ return context.getElementsByClassName( className );
+ }
+ }
+ },
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( rbackslash, "" );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 3 xn-component of xn+y argument ([+-]?\d*n|)
+ 4 sign of xn-component
+ 5 x of xn-component
+ 6 sign of y-component
+ 7 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1] === "nth" ) {
+ // nth-child requires argument
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) );
+ match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var unquoted, excess;
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ if ( match[3] ) {
+ match[2] = match[3];
+ } else if ( (unquoted = match[4]) ) {
+ // Only check arguments that contain a pseudo
+ if ( rpseudo.test(unquoted) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ unquoted = unquoted.slice( 0, excess );
+ match[0] = match[0].slice( 0, excess );
+ }
+ match[2] = unquoted;
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+ "ID": assertGetIdNotName ?
+ function( id ) {
+ id = id.replace( rbackslash, "" );
+ return function( elem ) {
+ return elem.getAttribute("id") === id;
+ };
+ } :
+ function( id ) {
+ id = id.replace( rbackslash, "" );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === id;
+ };
+ },
+
+ "TAG": function( nodeName ) {
+ if ( nodeName === "*" ) {
+ return function() { return true; };
+ }
+ nodeName = nodeName.replace( rbackslash, "" ).toLowerCase();
+
+ return function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ expando ][ className ];
+ if ( !pattern ) {
+ pattern = classCache( className, new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)") );
+ }
+ return function( elem ) {
+ return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
+ };
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem, context ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.substr( result.length - check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, argument, first, last ) {
+
+ if ( type === "nth" ) {
+ return function( elem ) {
+ var node, diff,
+ parent = elem.parentNode;
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ if ( parent ) {
+ diff = 0;
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ diff++;
+ if ( elem === node ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset (or cast to NaN), then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ };
+ }
+
+ return function( elem ) {
+ var node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ /* falls through */
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+ // not comment, processing instructions, or others
+ // Thanks to Diego Perini for the nodeName shortcut
+ // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+ var nodeType;
+ elem = elem.firstChild;
+ while ( elem ) {
+ if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {
+ return false;
+ }
+ elem = elem.nextSibling;
+ }
+ return true;
+ },
+
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "text": function( elem ) {
+ var type, attr;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" &&
+ (type = elem.type) === "text" &&
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type );
+ },
+
+ // Input types
+ "radio": createInputPseudo("radio"),
+ "checkbox": createInputPseudo("checkbox"),
+ "file": createInputPseudo("file"),
+ "password": createInputPseudo("password"),
+ "image": createInputPseudo("image"),
+
+ "submit": createButtonPseudo("submit"),
+ "reset": createButtonPseudo("reset"),
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "focus": function( elem ) {
+ var doc = elem.ownerDocument;
+ return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href);
+ },
+
+ "active": function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
+ },
+
+ // Positional types
+ "first": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ for ( var i = 0; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ for ( var i = 1; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+function siblingCheck( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+}
+
+sortOrder = docElem.compareDocumentPosition ?
+ function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ return ( !a.compareDocumentPosition || !b.compareDocumentPosition ?
+ a.compareDocumentPosition :
+ a.compareDocumentPosition(b) & 4
+ ) ? -1 : 1;
+ } :
+ function( a, b ) {
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
+ }
+
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+// Always assume the presence of duplicates if sort doesn't
+// pass them to our comparison function (as in Google Chrome).
+[0, 0].sort( sortOrder );
+baseHasDuplicate = !hasDuplicate;
+
+// Document sorting and removing duplicates
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ i = 1;
+
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( ; (elem = results[i]); i++ ) {
+ if ( elem === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+function tokenize( selector, parseOnly ) {
+ var matched, match, tokens, type, soFar, groups, preFilters,
+ cached = tokenCache[ expando ][ selector ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ soFar = soFar.slice( match[0].length );
+ }
+ groups.push( tokens = [] );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ tokens.push( matched = new Token( match.shift() ) );
+ soFar = soFar.slice( matched.length );
+
+ // Cast descendant combinators to space
+ matched.type = match[0].replace( rtrim, " " );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ // The last two arguments here are (context, xml) for backCompat
+ (match = preFilters[ type ]( match, document, true ))) ) {
+
+ tokens.push( matched = new Token( match.shift() ) );
+ soFar = soFar.slice( matched.length );
+ matched.type = type;
+ matched.matches = match;
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && combinator.dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( checkNonElements || elem.nodeType === 1 ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( !xml ) {
+ var cache,
+ dirkey = dirruns + " " + doneName + " ",
+ cachedkey = dirkey + cachedruns;
+ while ( (elem = elem[ dir ]) ) {
+ if ( checkNonElements || elem.nodeType === 1 ) {
+ if ( (cache = elem[ expando ]) === cachedkey ) {
+ return elem.sizset;
+ } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) {
+ if ( elem.sizset ) {
+ return elem;
+ }
+ } else {
+ elem[ expando ] = cachedkey;
+ if ( matcher( elem, context, xml ) ) {
+ elem.sizset = true;
+ return elem;
+ }
+ elem.sizset = false;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( checkNonElements || elem.nodeType === 1 ) {
+ if ( matcher( elem, context, xml ) ) {
+ return elem;
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ // Positional selectors apply to seed elements, so it is invalid to follow them with relative ones
+ if ( seed && postFinder ) {
+ return;
+ }
+
+ var i, elem, postFilterIn,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [], seed ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ postFilterIn = condense( matcherOut, postMap );
+ postFilter( postFilterIn, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = postFilterIn.length;
+ while ( i-- ) {
+ if ( (elem = postFilterIn[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ // Keep seed and results synchronized
+ if ( seed ) {
+ // Ignore postFinder because it can't coexist with seed
+ i = preFilter && matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ seed[ preMap[i] ] = !(results[ preMap[i] ] = elem);
+ }
+ }
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
+ } else {
+ // The concatenated values are (context, xml) for backCompat
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && tokens.join("")
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, expandContext ) {
+ var elem, j, matcher,
+ setMatched = [],
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ outermost = expandContext != null,
+ contextBackup = outermostContext,
+ // We must always have either seed elements or context
+ elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+ // Nested matchers should use non-integer dirruns
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ cachedruns = superMatcher.el;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ for ( j = 0; (matcher = elementMatchers[j]); j++ ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ cachedruns = ++superMatcher.el;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ for ( j = 0; (matcher = setMatchers[j]); j++ ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ superMatcher.el = 0;
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ expando ][ selector ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !group ) {
+ group = tokenize( selector );
+ }
+ i = group.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( group[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ }
+ return cached;
+};
+
+function multipleContexts( selector, contexts, results, seed ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results, seed );
+ }
+ return results;
+}
+
+function select( selector, context, results, seed, xml ) {
+ var i, tokens, token, type, find,
+ match = tokenize( selector ),
+ j = match.length;
+
+ if ( !seed ) {
+ // Try to minimize operations if there is only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ context.nodeType === 9 && !xml &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0];
+ if ( !context ) {
+ return results;
+ }
+
+ selector = selector.slice( tokens.shift().length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( rbackslash, "" ),
+ rsibling.test( tokens[0].type ) && context.parentNode || context,
+ xml
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && tokens.join("");
+ if ( !selector ) {
+ push.apply( results, slice.call( seed, 0 ) );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function
+ // Provide `match` to avoid retokenization if we modified the selector above
+ compile( selector, match )(
+ seed,
+ context,
+ xml,
+ results,
+ rsibling.test( selector )
+ );
+ return results;
+}
+
+if ( document.querySelectorAll ) {
+ (function() {
+ var disconnectedMatch,
+ oldSelect = select,
+ rescape = /'|\\/g,
+ rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
+
+ // qSa(:focus) reports false when true (Chrome 21),
+ // A support test would require too much code (would include document ready)
+ rbuggyQSA = [":focus"],
+
+ // matchesSelector(:focus) reports false when true (Chrome 21),
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ // A support test would require too much code (would include document ready)
+ // just skip matchesSelector for :active
+ rbuggyMatches = [ ":active", ":focus" ],
+ matches = docElem.matchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.webkitMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector;
+
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explictly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = "<select><option selected=''></option></select>";
+
+ // IE8 - Some boolean attributes are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here (do not put tests after this one)
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
+
+ assert(function( div ) {
+
+ // Opera 10-12/IE9 - ^= $= *= and empty values
+ // Should not select anything
+ div.innerHTML = "<p test=''></p>";
+ if ( div.querySelectorAll("[test^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here (do not put tests after this one)
+ div.innerHTML = "<input type='hidden'/>";
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push(":enabled", ":disabled");
+ }
+ });
+
+ // rbuggyQSA always contains :focus, so no need for a length check
+ rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") );
+
+ select = function( selector, context, results, seed, xml ) {
+ // Only use querySelectorAll when not filtering,
+ // when this is not xml,
+ // and when no QSA bugs apply
+ if ( !seed && !xml && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ var groups, i,
+ old = true,
+ nid = expando,
+ newContext = context,
+ newSelector = context.nodeType === 9 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + groups[i].join("");
+ }
+ newContext = rsibling.test( selector ) && context.parentNode || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results, slice.call( newContext.querySelectorAll(
+ newSelector
+ ), 0 ) );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+
+ return oldSelect( selector, context, results, seed, xml );
+ };
+
+ if ( matches ) {
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ try {
+ matches.call( div, "[test!='']:sizzle" );
+ rbuggyMatches.push( "!=", pseudos );
+ } catch ( e ) {}
+ });
+
+ // rbuggyMatches always contains :active and :focus, so no need for a length check
+ rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") );
+
+ Sizzle.matchesSelector = function( elem, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ // rbuggyMatches always contains :active, so no need for an existence check
+ if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && (!rbuggyQSA || !rbuggyQSA.test( expr )) ) {
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle( expr, null, null, [ elem ] ).length > 0;
+ };
+ }
+ })();
+}
+
+// Deprecated
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Back-compat
+function setFilters() {}
+Expr.filters = setFilters.prototype = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+// Override sizzle attribute retrieval
+Sizzle.attr = jQuery.attr;
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})( window );
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ rneedsContext = jQuery.expr.match.needsContext,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i, l, length, n, r, ret,
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return jQuery( selector ).filter(function() {
+ for ( i = 0, l = self.length; i < l; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ });
+ }
+
+ ret = this.pushStack( "", "find", selector );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( n = length; n < ret.length; n++ ) {
+ for ( r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var i,
+ targets = jQuery( target, this ),
+ len = targets.length;
+
+ return this.filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && (
+ typeof selector === "string" ?
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ rneedsContext.test( selector ) ?
+ jQuery( selector, this.context ).index( this[0] ) >= 0 :
+ jQuery.filter( selector, this ).length > 0 :
+ this.filter( selector ).length > 0 );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ ret = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+ }
+ cur = cur.parentNode;
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+function sibling( cur, dir ) {
+ do {
+ cur = cur[ dir ];
+ } while ( cur && cur.nodeType !== 1 );
+
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+ if ( this.length > 1 && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, core_slice.call( arguments ).join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+ // Can't pass null or undefined to indexOf in Firefox 4
+ // Set to 0 to skip string check
+ qualifier = qualifier || 0;
+
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return ( elem === qualifier ) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
+ });
+}
+function createSafeFragment( document ) {
+ var list = nodeNames.split( "|" ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( list.length ) {
+ safeFrag.createElement(
+ list.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+ "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style|link)/i,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+ rcheckableType = /^(?:checkbox|radio)$/,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /\/(java|ecma)script/i,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,
+ wrapMap = {
+ 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, "", "" ]
+ },
+ safeFragment = createSafeFragment( document ),
+ fragmentDiv = safeFragment.appendChild( document.createElement("div") );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+// unless wrapped in a div with non-breaking characters in front of it.
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "X<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return jQuery.access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+ }, null, value, arguments.length );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function(i) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( !isDisconnected( this[0] ) ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ }
+
+ if ( arguments.length ) {
+ var set = jQuery.clean( arguments );
+ return this.pushStack( jQuery.merge( set, this ), "before", this.selector );
+ }
+ },
+
+ after: function() {
+ if ( !isDisconnected( this[0] ) ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ }
+
+ if ( arguments.length ) {
+ var set = jQuery.clean( arguments );
+ return this.pushStack( jQuery.merge( this, set ), "after", this.selector );
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return jQuery.access( this, function( value ) {
+ var elem = this[0] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined ) {
+ return elem.nodeType === 1 ?
+ elem.innerHTML.replace( rinlinejQuery, "" ) :
+ undefined;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&
+ ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+ !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+ try {
+ for (; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ elem = this[i] || {};
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName( "*" ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function( value ) {
+ if ( !isDisconnected( this[0] ) ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ }
+
+ return this.length ?
+ this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+ this;
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+
+ // Flatten any nested arrays
+ args = [].concat.apply( [], args );
+
+ var results, first, fragment, iNoClone,
+ i = 0,
+ value = args[0],
+ scripts = [],
+ l = this.length;
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call( this, i, table ? self.html() : undefined );
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ results = jQuery.buildFragment( args, this, scripts );
+ fragment = results.fragment;
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ // Use the original fragment for the last item instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ // Fragments from the fragment cache must always be cloned and never used in place.
+ for ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {
+ callback.call(
+ table && jQuery.nodeName( this[i], "table" ) ?
+ findOrAppend( this[i], "tbody" ) :
+ this[i],
+ i === iNoClone ?
+ fragment :
+ jQuery.clone( fragment, true, true )
+ );
+ }
+ }
+
+ // Fix #11809: Avoid leaking memory
+ fragment = first = null;
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, function( i, elem ) {
+ if ( elem.src ) {
+ if ( jQuery.ajax ) {
+ jQuery.ajax({
+ url: elem.src,
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ });
+ } else {
+ jQuery.error("no ajax");
+ }
+ } else {
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ });
+ }
+ }
+
+ return this;
+ }
+});
+
+function findOrAppend( elem, tag ) {
+ return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var type, i, l,
+ oldData = jQuery._data( src ),
+ curData = jQuery._data( dest, oldData ),
+ events = oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+
+ // make the cloned public data object a copy from the original
+ if ( curData.data ) {
+ curData.data = jQuery.extend( {}, curData.data );
+ }
+}
+
+function cloneFixAttributes( src, dest ) {
+ var nodeName;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // clearAttributes removes the attributes, which we don't want,
+ // but also removes the attachEvent events, which we *do* want
+ if ( dest.clearAttributes ) {
+ dest.clearAttributes();
+ }
+
+ // mergeAttributes, in contrast, only merges back on the
+ // original attributes, not the events
+ if ( dest.mergeAttributes ) {
+ dest.mergeAttributes( src );
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ if ( nodeName === "object" ) {
+ // IE6-10 improperly clones children of object elements using classid.
+ // IE10 throws NoModificationAllowedError if parent is null, #12132.
+ if ( dest.parentNode ) {
+ dest.outerHTML = src.outerHTML;
+ }
+
+ // This path appears unavoidable for IE9. When cloning an object
+ // element in IE9, the outerHTML strategy above is not sufficient.
+ // If the src has innerHTML and the destination does not,
+ // copy the src.innerHTML into the dest.innerHTML. #10324
+ if ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {
+ dest.innerHTML = src.innerHTML;
+ }
+
+ } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+
+ dest.defaultChecked = dest.checked = src.checked;
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+
+ // IE blanks contents when cloning scripts
+ } else if ( nodeName === "script" && dest.text !== src.text ) {
+ dest.text = src.text;
+ }
+
+ // Event data gets referenced instead of copied if the expando
+ // gets copied too
+ dest.removeAttribute( jQuery.expando );
+}
+
+jQuery.buildFragment = function( args, context, scripts ) {
+ var fragment, cacheable, cachehit,
+ first = args[ 0 ];
+
+ // Set context from what may come in as undefined or a jQuery collection or a node
+ // Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &
+ // also doubles as fix for #8950 where plain objects caused createDocumentFragment exception
+ context = context || document;
+ context = !context.nodeType && context[0] || context;
+ context = context.ownerDocument || context;
+
+ // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
+ if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document &&
+ first.charAt(0) === "<" && !rnocache.test( first ) &&
+ (jQuery.support.checkClone || !rchecked.test( first )) &&
+ (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
+
+ // Mark cacheable and look for a hit
+ cacheable = true;
+ fragment = jQuery.fragments[ first ];
+ cachehit = fragment !== undefined;
+ }
+
+ if ( !fragment ) {
+ fragment = context.createDocumentFragment();
+ jQuery.clean( args, context, fragment, scripts );
+
+ // Update the cache, but only store false
+ // unless this is a second parsing of the same content
+ if ( cacheable ) {
+ jQuery.fragments[ first ] = cachehit && fragment;
+ }
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ i = 0,
+ ret = [],
+ insert = jQuery( selector ),
+ l = insert.length,
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+ } else {
+ for ( ; i < l; i++ ) {
+ elems = ( i > 0 ? this.clone(true) : this ).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+function getAll( elem ) {
+ if ( typeof elem.getElementsByTagName !== "undefined" ) {
+ return elem.getElementsByTagName( "*" );
+
+ } else if ( typeof elem.querySelectorAll !== "undefined" ) {
+ return elem.querySelectorAll( "*" );
+
+ } else {
+ return [];
+ }
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( rcheckableType.test( elem.type ) ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var srcElements,
+ destElements,
+ i,
+ clone;
+
+ if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
+ clone = elem.cloneNode( true );
+
+ // IE<=8 does not properly clone detached, unknown element nodes
+ } else {
+ fragmentDiv.innerHTML = elem.outerHTML;
+ fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
+ }
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+ // IE copies events bound via attachEvent when using cloneNode.
+ // Calling detachEvent on the clone will also remove the events
+ // from the original. In order to get around this, we use some
+ // proprietary methods to clear the events. Thanks to MooTools
+ // guys for this hotness.
+
+ cloneFixAttributes( elem, clone );
+
+ // Using Sizzle here is crazy slow, so we use getElementsByTagName instead
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ // Weird iteration because IE will replace the length property
+ // with an element if you are cloning the body and one of the
+ // elements on the page has a name or id of "length"
+ for ( i = 0; srcElements[i]; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ cloneFixAttributes( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ cloneCopyEvent( elem, clone );
+
+ if ( deepDataAndEvents ) {
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneCopyEvent( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ srcElements = destElements = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ clean: function( elems, context, fragment, scripts ) {
+ var i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,
+ safe = context === document && safeFragment,
+ ret = [];
+
+ // Ensure that context is a document
+ if ( !context || typeof context.createDocumentFragment === "undefined" ) {
+ context = document;
+ }
+
+ // Use the already-created safe fragment if context permits
+ for ( i = 0; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ if ( !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+ } else {
+ // Ensure a safe container in which to render the html
+ safe = safe || createSafeFragment( context );
+ div = context.createElement("div");
+ safe.appendChild( div );
+
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Go to html and back, then peel off extra wrappers
+ tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ depth = wrap[0];
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ hasBody = rtbody.test(elem);
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+
+ // Take out of fragment container (we need a fresh div each time)
+ div.parentNode.removeChild( div );
+ }
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ jQuery.merge( ret, elem );
+ }
+ }
+
+ // Fix #11356: Clear elements from safeFragment
+ if ( div ) {
+ elem = div = safe = null;
+ }
+
+ // Reset defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ if ( !jQuery.support.appendChecked ) {
+ for ( i = 0; (elem = ret[i]) != null; i++ ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ fixDefaultChecked( elem );
+ } else if ( typeof elem.getElementsByTagName !== "undefined" ) {
+ jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+ }
+ }
+ }
+
+ // Append elements to a provided document fragment
+ if ( fragment ) {
+ // Special handling of each script element
+ handleScript = function( elem ) {
+ // Check if we consider it executable
+ if ( !elem.type || rscriptType.test( elem.type ) ) {
+ // Detach the script and store it in the scripts array (if provided) or the fragment
+ // Return truthy to indicate that it has been handled
+ return scripts ?
+ scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
+ fragment.appendChild( elem );
+ }
+ };
+
+ for ( i = 0; (elem = ret[i]) != null; i++ ) {
+ // Check if we're done after handling an executable script
+ if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
+ // Append to fragment and handle embedded scripts
+ fragment.appendChild( elem );
+ if ( typeof elem.getElementsByTagName !== "undefined" ) {
+ // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
+ jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
+
+ // Splice the scripts into ret after their former ancestor and advance our index beyond them
+ ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+ i += jsTags.length;
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems, /* internal */ acceptData ) {
+ var data, id, elem, type,
+ i = 0,
+ internalKey = jQuery.expando,
+ cache = jQuery.cache,
+ deleteExpando = jQuery.support.deleteExpando,
+ special = jQuery.event.special;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( acceptData || jQuery.acceptData( elem ) ) {
+
+ id = elem[ internalKey ];
+ data = id && cache[ id ];
+
+ if ( data ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Remove cache only if it was not already removed by jQuery.event.remove
+ if ( cache[ id ] ) {
+
+ delete cache[ id ];
+
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( deleteExpando ) {
+ delete elem[ internalKey ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( internalKey );
+
+ } else {
+ elem[ internalKey ] = null;
+ }
+
+ jQuery.deletedIds.push( id );
+ }
+ }
+ }
+ }
+ }
+});
+// Limit scope pollution from any deprecated API
+(function() {
+
+var matched, browser;
+
+// Use of jQuery.browser is frowned upon.
+// More details: http://api.jquery.com/jQuery.browser
+// jQuery.uaMatch maintained for back-compat
+jQuery.uaMatch = function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
+ /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
+ /(msie) ([\w.]+)/.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
+ [];
+
+ return {
+ browser: match[ 1 ] || "",
+ version: match[ 2 ] || "0"
+ };
+};
+
+matched = jQuery.uaMatch( navigator.userAgent );
+browser = {};
+
+if ( matched.browser ) {
+ browser[ matched.browser ] = true;
+ browser.version = matched.version;
+}
+
+// Chrome is Webkit, but Webkit is also Safari.
+if ( browser.chrome ) {
+ browser.webkit = true;
+} else if ( browser.webkit ) {
+ browser.safari = true;
+}
+
+jQuery.browser = browser;
+
+jQuery.sub = function() {
+ function jQuerySub( selector, context ) {
+ return new jQuerySub.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySub, this );
+ jQuerySub.superclass = this;
+ jQuerySub.fn = jQuerySub.prototype = this();
+ jQuerySub.fn.constructor = jQuerySub;
+ jQuerySub.sub = this.sub;
+ jQuerySub.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+ context = jQuerySub( context );
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+ };
+ jQuerySub.fn.init.prototype = jQuerySub.fn;
+ var rootjQuerySub = jQuerySub(document);
+ return jQuerySub;
+};
+
+})();
+var curCSS, iframe, iframeDoc,
+ ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ rposition = /^(top|right|bottom|left)$/,
+ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rmargin = /^margin/,
+ rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
+ rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
+ rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ),
+ elemdisplay = {},
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: 0,
+ fontWeight: 400
+ },
+
+ cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
+
+ eventsToggle = jQuery.fn.toggle;
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+ // shortcut for names that are not vendor prefixed
+ if ( name in style ) {
+ return name;
+ }
+
+ // check for vendor prefixed names
+ var capName = name.charAt(0).toUpperCase() + name.slice(1),
+ origName = name,
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in style ) {
+ return name;
+ }
+ }
+
+ return origName;
+}
+
+function isHidden( elem, el ) {
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+}
+
+function showHide( elements, show ) {
+ var elem, display,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ values[ index ] = jQuery._data( elem, "olddisplay" );
+ if ( show ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && elem.style.display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
+ }
+ } else {
+ display = curCSS( elem, "display" );
+
+ if ( !values[ index ] && display !== "none" ) {
+ jQuery._data( elem, "olddisplay", display );
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend({
+ css: function( name, value ) {
+ return jQuery.access( this, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state, fn2 ) {
+ var bool = typeof state === "boolean";
+
+ if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {
+ return eventsToggle.apply( this, arguments );
+ }
+
+ return this.each(function() {
+ if ( bool ? state : isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, numeric, extra ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name );
+ }
+
+ //convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Return, converting to number if forced or a qualifier was provided and val looks numeric
+ if ( numeric || extra !== undefined ) {
+ num = parseFloat( val );
+ return numeric || jQuery.isNumeric( num ) ? num || 0 : val;
+ }
+ return val;
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+ }
+});
+
+// NOTE: To any future maintainer, we've window.getComputedStyle
+// because jsdom on node.js will break without it.
+if ( window.getComputedStyle ) {
+ curCSS = function( elem, name ) {
+ var ret, width, minWidth, maxWidth,
+ computed = window.getComputedStyle( elem, null ),
+ style = elem.style;
+
+ if ( computed ) {
+
+ ret = computed[ name ];
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
+ // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret;
+ };
+} else if ( document.documentElement.currentStyle ) {
+ curCSS = function( elem, name ) {
+ var left, rsLeft,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ style = elem.style;
+
+ // Avoid setting ret to empty string here
+ // so we don't default to auto
+ if ( ret == null && style && style[ name ] ) {
+ ret = style[ name ];
+ }
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ // but not position css attributes, as those are proportional to the parent element instead
+ // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
+ if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
+
+ // Remember the original values
+ left = style.left;
+ rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : ret;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+ var matches = rnumsplit.exec( value );
+ return matches ?
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+ // both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ // we use jQuery.css instead of curCSS here
+ // because of the reliableMarginRight CSS hook!
+ val += jQuery.css( elem, extra + cssExpand[ i ], true );
+ }
+
+ // From this point on we use curCSS for maximum performance (relevant in animations)
+ if ( isBorderBox ) {
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0;
+ }
+
+ // at this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
+ }
+ } else {
+ // at this point, extra isn't content, so add padding
+ val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0;
+
+ // at this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ valueIsBorderBox = true,
+ isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box";
+
+ // some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // we need the check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox
+ )
+ ) + "px";
+}
+
+
+// Try to determine the default display value of an element
+function css_defaultDisplay( nodeName ) {
+ if ( elemdisplay[ nodeName ] ) {
+ return elemdisplay[ nodeName ];
+ }
+
+ var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ),
+ display = elem.css("display");
+ elem.remove();
+
+ // If the simple way fails,
+ // get element's real default display by attaching it to a temp iframe
+ if ( display === "none" || display === "" ) {
+ // Use the already-created iframe if possible
+ iframe = document.body.appendChild(
+ iframe || jQuery.extend( document.createElement("iframe"), {
+ frameBorder: 0,
+ width: 0,
+ height: 0
+ })
+ );
+
+ // Create a cacheable copy of the iframe document on first call.
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+ // document to it; WebKit & Firefox won't allow reusing the iframe document.
+ if ( !iframeDoc || !iframe.createElement ) {
+ iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+ iframeDoc.write("<!doctype html><html><body>");
+ iframeDoc.close();
+ }
+
+ elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );
+
+ display = curCSS( elem, "display" );
+ document.body.removeChild( iframe );
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+
+ return display;
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+ // certain elements can have dimension info if we invisibly show them
+ // however, it must have a current display style that would benefit from this
+ if ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, "display" ) ) ) {
+ return jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ });
+ } else {
+ return getWidthOrHeight( elem, name, extra );
+ }
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ return setPositiveNumber( elem, value, extra ?
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"
+ ) : 0
+ );
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+ style.removeAttribute ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there there is no filter style applied in a css rule, we are done
+ if ( currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+// These hooks cannot be added until DOM ready because the support test
+// for it is not run until after DOM ready
+jQuery(function() {
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ return curCSS( elem, "marginRight" );
+ }
+ });
+ }
+ };
+ }
+
+ // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+ // getComputedStyle returns percent when specified for top/left/bottom/right
+ // rather than make the css module depend on the offset module, we just check for it here
+ if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
+ jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ var ret = curCSS( elem, prop );
+ // if curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret;
+ }
+ }
+ };
+ });
+ }
+
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i,
+
+ // assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ],
+ expanded = {};
+
+ for ( i = 0; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+});
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ rselectTextarea = /^(?:select|textarea)/i;
+
+jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray( this.elements ) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ ( this.checked || rselectTextarea.test( this.nodeName ) ||
+ rinput.test( this.type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val, i ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+//Serialize an array of form elements or a set of
+//key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+var
+ // Document location
+ ajaxLocParts,
+ ajaxLocation,
+
+ rhash = /#.*$/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rquery = /\?/,
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = ["*/"] + ["*"];
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType, list, placeBefore,
+ dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),
+ i = 0,
+ length = dataTypes.length;
+
+ if ( jQuery.isFunction( func ) ) {
+ // For each dataType in the dataTypeExpression
+ for ( ; i < length; i++ ) {
+ dataType = dataTypes[ i ];
+ // We control if we're asked to add before
+ // any existing element
+ placeBefore = /^\+/.test( dataType );
+ if ( placeBefore ) {
+ dataType = dataType.substr( 1 ) || "*";
+ }
+ list = structure[ dataType ] = structure[ dataType ] || [];
+ // then we add to the structure accordingly
+ list[ placeBefore ? "unshift" : "push" ]( func );
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+ dataType /* internal */, inspected /* internal */ ) {
+
+ dataType = dataType || options.dataTypes[ 0 ];
+ inspected = inspected || {};
+
+ inspected[ dataType ] = true;
+
+ var selection,
+ list = structure[ dataType ],
+ i = 0,
+ length = list ? list.length : 0,
+ executeOnly = ( structure === prefilters );
+
+ for ( ; i < length && ( executeOnly || !selection ); i++ ) {
+ selection = list[ i ]( options, originalOptions, jqXHR );
+ // If we got redirected to another dataType
+ // we try there if executing only and not done already
+ if ( typeof selection === "string" ) {
+ if ( !executeOnly || inspected[ selection ] ) {
+ selection = undefined;
+ } else {
+ options.dataTypes.unshift( selection );
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, selection, inspected );
+ }
+ }
+ }
+ // If we're only executing or nothing was selected
+ // we try the catchall dataType if not done already
+ if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, "*", inspected );
+ }
+ // unnecessary when only executing (prefilters)
+ // but it'll be ignored by the caller in that case
+ return selection;
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+}
+
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ // Don't do a request if no elements are being requested
+ if ( !this.length ) {
+ return this;
+ }
+
+ var selector, type, response,
+ self = this,
+ off = url.indexOf(" ");
+
+ if ( off >= 0 ) {
+ selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+
+ // if "type" variable is undefined, then "GET" method will be used
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function( jqXHR, status ) {
+ if ( callback ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ }
+ }
+ }).done(function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ // See if a selector was specified
+ self.html( selector ?
+
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append( responseText.replace( rscript, "" ) )
+
+ // Locate the specified elements
+ .find( selector ) :
+
+ // If not, just inject the full result
+ responseText );
+
+ });
+
+ return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+ jQuery.fn[ o ] = function( f ){
+ return this.on( o, f );
+ };
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ type: method,
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ };
+});
+
+jQuery.extend({
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ if ( settings ) {
+ // Building a settings object
+ ajaxExtend( target, jQuery.ajaxSettings );
+ } else {
+ // Extending ajaxSettings
+ settings = target;
+ target = jQuery.ajaxSettings;
+ }
+ ajaxExtend( target, settings );
+ return target;
+ },
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ text: "text/plain",
+ json: "application/json, text/javascript",
+ "*": allTypes
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText"
+ },
+
+ // List of data converters
+ // 1) key format is "source_type destination_type" (a single space in-between)
+ // 2) the catchall symbol "*" can be used for source_type
+ converters: {
+
+ // Convert anything to text
+ "* text": window.String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ context: true,
+ url: true
+ }
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // ifModified key
+ ifModifiedKey,
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // transport
+ transport,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events
+ // It's the callbackContext if one was provided in the options
+ // and if it's a DOM node or a jQuery collection
+ globalEventContext = callbackContext !== s &&
+ ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+ jQuery( callbackContext ) : jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks( "once memory" ),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+
+ readyState: 0,
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( !state ) {
+ var lname = name.toLowerCase();
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match === undefined ? null : match;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ statusText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( statusText );
+ }
+ done( 0, statusText );
+ return this;
+ }
+ };
+
+ // Callback for when everything is done
+ // It is defined here because jslint complains if it is declared
+ // at the end of the function (which would be more logical and readable)
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // If successful, handle type chaining
+ if ( status >= 200 && status < 300 || status === 304 ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ ifModifiedKey ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("Etag");
+ if ( modified ) {
+ jQuery.etag[ ifModifiedKey ] = modified;
+ }
+ }
+
+ // If not modified
+ if ( status === 304 ) {
+
+ statusText = "notmodified";
+ isSuccess = true;
+
+ // If we have data
+ } else {
+
+ isSuccess = ajaxConvert( s, response );
+ statusText = isSuccess.state;
+ success = isSuccess.data;
+ error = isSuccess.error;
+ isSuccess = !error;
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( !statusText || status ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+ jqXHR.complete = completeDeferred.add;
+
+ // Status-dependent callbacks
+ jqXHR.statusCode = function( map ) {
+ if ( map ) {
+ var tmp;
+ if ( state < 2 ) {
+ for ( tmp in map ) {
+ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+ }
+ } else {
+ tmp = map[ jqXHR.status ];
+ jqXHR.always( tmp );
+ }
+ }
+ return this;
+ };
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace );
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() ) || false;
+ s.crossDomain = parts && ( parts.join(":") + ( parts[ 3 ] ? "" : parts[ 1 ] === "http:" ? 80 : 443 ) ) !==
+ ( ajaxLocParts.join(":") + ( ajaxLocParts[ 3 ] ? "" : ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Get ifModifiedKey before adding the anti-cache parameter
+ ifModifiedKey = s.url;
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+
+ var ts = jQuery.now(),
+ // try replacing _= if it is there
+ ret = s.url.replace( rts, "$1_=" + ts );
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ ifModifiedKey = ifModifiedKey || s.url;
+ if ( jQuery.lastModified[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+ }
+ if ( jQuery.etag[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+ }
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+
+ }
+
+ // aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout( function(){
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch (e) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var ct, type, finalDataType, firstDataType,
+ contents = s.contents,
+ dataTypes = s.dataTypes,
+ responseFields = s.responseFields;
+
+ // Fill responseXXX fields
+ for ( type in responseFields ) {
+ if ( type in responses ) {
+ jqXHR[ responseFields[type] ] = responses[ type ];
+ }
+ }
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+ var conv, conv2, current, tmp,
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice(),
+ prev = dataTypes[ 0 ],
+ converters = {},
+ i = 0;
+
+ // Apply the dataFilter if provided
+ if ( s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ // Convert to each sequential dataType, tolerating list modification
+ for ( ; (current = dataTypes[++i]); ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current !== "*" ) {
+
+ // Convert response if prev dataType is non-auto and differs from current
+ if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split(" ");
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.splice( i--, 0, current );
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s["throws"] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+
+ // Update prev for next iteration
+ prev = current;
+ }
+ }
+
+ return { state: "success", data: response };
+}
+var oldCallbacks = [],
+ rquestion = /\?/,
+ rjsonp = /(=)\?(?=&|$)|\?\?/,
+ nonce = jQuery.now();
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ data = s.data,
+ url = s.url,
+ hasCallback = s.jsonp !== false,
+ replaceInUrl = hasCallback && rjsonp.test( url ),
+ replaceInData = hasCallback && !replaceInUrl && typeof data === "string" &&
+ !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") &&
+ rjsonp.test( data );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+ overwritten = window[ callbackName ];
+
+ // Insert callback into url or form data
+ if ( replaceInUrl ) {
+ s.url = url.replace( rjsonp, "$1" + callbackName );
+ } else if ( replaceInData ) {
+ s.data = data.replace( rjsonp, "$1" + callbackName );
+ } else if ( hasCallback ) {
+ s.url += ( rquestion.test( url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /javascript|ecmascript/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement( "script" );
+
+ script.async = "async";
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+
+ // Dereference the script
+ script = undefined;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( 0, 1 );
+ }
+ }
+ };
+ }
+});
+var xhrCallbacks,
+ // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject ? function() {
+ // Abort all pending requests
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( 0, 1 );
+ }
+ } : false,
+ xhrId = 0;
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+ jQuery.extend( jQuery.support, {
+ ajax: !!xhr,
+ cors: !!xhr && ( "withCredentials" in xhr )
+ });
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var handle, i,
+ xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( _ ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+
+ var status,
+ statusText,
+ responseHeaders,
+ responses,
+ xml;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occurred
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+ responses = {};
+ xml = xhr.responseXML;
+
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+
+ // When requesting binary data, IE6-9 will throw an exception
+ // on any attempt to access responseText (#11426)
+ try {
+ responses.text = xhr.responseText;
+ } catch( _ ) {
+ }
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ if ( !s.async ) {
+ // if we're in sync mode we fire the callback
+ callback();
+ } else if ( xhr.readyState === 4 ) {
+ // (IE6 & IE7) if it's in cache and has been
+ // retrieved directly we need to fire the callback
+ setTimeout( callback, 0 );
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback(0,1);
+ }
+ }
+ };
+ }
+ });
+}
+var fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [function( prop, value ) {
+ var end, unit,
+ tween = this.createTween( prop, value ),
+ parts = rfxnum.exec( value ),
+ target = tween.cur(),
+ start = +target || 0,
+ scale = 1,
+ maxIterations = 20;
+
+ if ( parts ) {
+ end = +parts[2];
+ unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+
+ // We need to compute starting value
+ if ( unit !== "px" && start ) {
+ // Iteratively approximate from a nonzero starting point
+ // Prefer the current property, because this process will be trivial if it uses the same units
+ // Fallback to end or a simple constant
+ start = jQuery.css( tween.elem, prop, true ) || end || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*
+ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ tween.unit = unit;
+ tween.start = start;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;
+ }
+ return tween;
+ }]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ }, 0 );
+ return ( fxNow = jQuery.now() );
+}
+
+function createTweens( animation, props ) {
+ jQuery.each( props, function( prop, value ) {
+ var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( collection[ index ].call( animation, prop, value ) ) {
+
+ // we're done with this property
+ return;
+ }
+ }
+ });
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ index = 0,
+ tweenerIndex = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ percent = 1 - ( remaining / animation.duration || 0 ),
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end, easing ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // if we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // resolve when we played the last frame
+ // otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ createTweens( animation, props );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ anim: animation,
+ queue: animation.opts.queue,
+ elem: elem
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'index' from above because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+function defaultPrefilter( elem, props, opts ) {
+ var index, prop, value, length, dataShow, tween, hooks, oldfire,
+ anim = this,
+ style = elem.style,
+ orig = {},
+ handled = [],
+ hidden = elem.nodeType && isHidden( elem );
+
+ // handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // doing this makes sure that the complete handler will be called
+ // before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( elem, "display" ) === "inline" &&
+ jQuery.css( elem, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+ style.display = "inline-block";
+
+ } else {
+ style.zoom = 1;
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ if ( !jQuery.support.shrinkWrapBlocks ) {
+ anim.done(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+ }
+
+
+ // show/hide pass
+ for ( index in props ) {
+ value = props[ index ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ index ];
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+ continue;
+ }
+ handled.push( index );
+ }
+ }
+
+ length = handled.length;
+ if ( length ) {
+ dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+ jQuery.removeData( elem, "fxshow", true );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( index = 0 ; index < length ; index++ ) {
+ prop = handled[ index ];
+ tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );
+ orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+ }
+}
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // passing any value as a 4th parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails
+ // so, simple values such as "10px" are parsed to Float.
+ // complex values such as "rotate(1rad)" are returned as is.
+ result = jQuery.css( tween.elem, tween.prop, false, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // use step hook for back compat - use cssHook if its there - use .style if its
+ // available and use plain properties where available
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Remove in 2.0 - this supports IE8's panic based approach
+// to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ||
+ // special check for .toggle( handler, handler, ... )
+ ( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations resolve immediately
+ if ( empty ) {
+ anim.stop( true );
+ }
+ };
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ }
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ attrs = { height: type },
+ i = 0;
+
+ // if we include width, step value is 1 to do all cssExpand values,
+ // if we don't include width, step value is 2 to skip over Left and Right
+ includeWidth = includeWidth? 1 : 0;
+ for( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p*Math.PI ) / 2;
+ }
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+};
+
+jQuery.fx.timer = function( timer ) {
+ if ( timer() && jQuery.timers.push( timer ) && !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+var rroot = /^(?:body|html)$/i;
+
+jQuery.fn.offset = function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,
+ box = { top: 0, left: 0 },
+ elem = this[ 0 ],
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ if ( (body = doc.body) === elem ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // If we don't have gBCR, just use 0,0 rather than error
+ // BlackBerry 5, iOS 3 (original iPhone)
+ if ( typeof elem.getBoundingClientRect !== "undefined" ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ clientTop = docElem.clientTop || body.clientTop || 0;
+ clientLeft = docElem.clientLeft || body.clientLeft || 0;
+ scrollTop = win.pageYOffset || docElem.scrollTop;
+ scrollLeft = win.pageXOffset || docElem.scrollLeft;
+ return {
+ top: box.top + scrollTop - clientTop,
+ left: box.left + scrollLeft - clientLeft
+ };
+};
+
+jQuery.offset = {
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[0] ) {
+ return;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || document.body;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+ var top = /Y/.test( prop );
+
+ jQuery.fn[ method ] = function( val ) {
+ return jQuery.access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? (prop in win) ? win[ prop ] :
+ win.document.documentElement[ method ] :
+ elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : jQuery( win ).scrollLeft(),
+ top ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return jQuery.access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+ // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, value, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+
+// Expose jQuery as an AMD module, but only for AMD loaders that
+// understand the issues with loading multiple versions of jQuery
+// in a page that all might call define(). The loader will indicate
+// they have special allowances for multiple jQuery versions by
+// specifying define.amd.jQuery = true. Register as a named module,
+// since jQuery can be concatenated with other files that may use define,
+// but not use a proper concatenation script that understands anonymous
+// AMD modules. A named AMD is safest and most robust way to register.
+// Lowercase jquery is used because AMD module names are derived from
+// file names, and jQuery is normally delivered in a lowercase file name.
+// Do this after creating the global so that if an AMD module wants to call
+// noConflict to hide this version of jQuery, it will work.
+if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
+ define( "jquery", [], function () { return jQuery; } );
+}
+
+})( window );
diff --git a/assets/js/kalman.js b/assets/js/kalman.js
new file mode 100644
index 0000000..6686e6c
--- /dev/null
+++ b/assets/js/kalman.js
@@ -0,0 +1,66 @@
+// === Kalman ===
+// Kalman filter for Javascript
+// Copyright (c) 2012 Itamar Weiss
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+var Kalman = {
+ version: '0.0.1'
+};
+
+KalmanModel = (function(){
+
+ function KalmanModel(x_0,P_0,F_k,Q_k){
+ this.x_k = x_0;
+ this.P_k = P_0;
+ this.F_k = F_k;
+ this.Q_k = Q_k;
+ }
+
+ KalmanModel.prototype.update = function(o){
+ this.I = Matrix.I(this.P_k.rows());
+ //init
+ this.x_k_ = this.x_k;
+ this.P_k_ = this.P_k;
+
+ //Predict
+ this.x_k_k_ = this.F_k.x(this.x_k_);
+ this.P_k_k_ = this.F_k.x(this.P_k_.x(this.F_k.transpose())).add(this.Q_k);
+
+ //update
+ this.y_k = o.z_k.subtract(o.H_k.x(this.x_k_k_));//observation residual
+ this.S_k = o.H_k.x(this.P_k_k_.x(o.H_k.transpose())).add(o.R_k);//residual covariance
+ this.K_k = this.P_k_k_.x(o.H_k.transpose().x(this.S_k.inverse()));//Optimal Kalman gain
+ this.x_k = this.x_k_k_.add(this.K_k.x(this.y_k));
+ this.P_k = this.I.subtract(this.K_k.x(o.H_k)).x(this.P_k_k_);
+ }
+
+ return KalmanModel;
+})();
+
+KalmanObservation = (function(){
+
+ function KalmanObservation(z_k,H_k,R_k){
+ this.z_k = z_k;//observation
+ this.H_k = H_k;//observation model
+ this.R_k = R_k;//observation noise covariance
+ }
+
+ return KalmanObservation;
+})();
diff --git a/assets/js/kalman.min.js b/assets/js/kalman.min.js
new file mode 100644
index 0000000..ee2c9fb
--- /dev/null
+++ b/assets/js/kalman.min.js
@@ -0,0 +1 @@
+eval(function(a,i,l,n,o,t){if(o=function(a){return(a<62?"":o(parseInt(a/62)))+((a%=62)>35?String.fromCharCode(a+29):a.toString(36))},!"".replace(/^/,String)){for(;l--;)t[o(l)]=n[l]||o(l);n=[function(a){return t[a]}],o=function(){return"\\w+"},l=1}for(;l--;)n[l]&&(a=a.replace(new RegExp("\\b"+o(l)+"\\b","g"),n[l]));return a}("9 17={3i:'0.1.3',16:1e-6};l v(){}v.23={e:l(i){8(i<1||i>7.4.q)?w:7.4[i-1]},2R:l(){8 7.4.q},1u:l(){8 F.1x(7.2u(7))},24:l(a){9 n=7.4.q;9 V=a.4||a;o(n!=V.q){8 1L}J{o(F.13(7.4[n-1]-V[n-1])>17.16){8 1L}}H(--n);8 2x},1q:l(){8 v.u(7.4)},1b:l(a){9 b=[];7.28(l(x,i){b.19(a(x,i))});8 v.u(b)},28:l(a){9 n=7.4.q,k=n,i;J{i=k-n;a(7.4[i],i+1)}H(--n)},2q:l(){9 r=7.1u();o(r===0){8 7.1q()}8 7.1b(l(x){8 x/r})},1C:l(a){9 V=a.4||a;9 n=7.4.q,k=n,i;o(n!=V.q){8 w}9 b=0,1D=0,1F=0;7.28(l(x,i){b+=x*V[i-1];1D+=x*x;1F+=V[i-1]*V[i-1]});1D=F.1x(1D);1F=F.1x(1F);o(1D*1F===0){8 w}9 c=b/(1D*1F);o(c<-1){c=-1}o(c>1){c=1}8 F.37(c)},1m:l(a){9 b=7.1C(a);8(b===w)?w:(b<=17.16)},34:l(a){9 b=7.1C(a);8(b===w)?w:(F.13(b-F.1A)<=17.16)},2k:l(a){9 b=7.2u(a);8(b===w)?w:(F.13(b)<=17.16)},2j:l(a){9 V=a.4||a;o(7.4.q!=V.q){8 w}8 7.1b(l(x,i){8 x+V[i-1]})},2C:l(a){9 V=a.4||a;o(7.4.q!=V.q){8 w}8 7.1b(l(x,i){8 x-V[i-1]})},22:l(k){8 7.1b(l(x){8 x*k})},x:l(k){8 7.22(k)},2u:l(a){9 V=a.4||a;9 i,2g=0,n=7.4.q;o(n!=V.q){8 w}J{2g+=7.4[n-1]*V[n-1]}H(--n);8 2g},2f:l(a){9 B=a.4||a;o(7.4.q!=3||B.q!=3){8 w}9 A=7.4;8 v.u([(A[1]*B[2])-(A[2]*B[1]),(A[2]*B[0])-(A[0]*B[2]),(A[0]*B[1])-(A[1]*B[0])])},2A:l(){9 m=0,n=7.4.q,k=n,i;J{i=k-n;o(F.13(7.4[i])>F.13(m)){m=7.4[i]}}H(--n);8 m},2Z:l(x){9 a=w,n=7.4.q,k=n,i;J{i=k-n;o(a===w&&7.4[i]==x){a=i+1}}H(--n);8 a},3g:l(){8 S.2X(7.4)},2d:l(){8 7.1b(l(x){8 F.2d(x)})},2V:l(x){8 7.1b(l(y){8(F.13(y-x)<=17.16)?x:y})},1o:l(a){o(a.K){8 a.1o(7)}9 V=a.4||a;o(V.q!=7.4.q){8 w}9 b=0,2b;7.28(l(x,i){2b=x-V[i-1];b+=2b*2b});8 F.1x(b)},3a:l(a){8 a.1h(7)},2T:l(a){8 a.1h(7)},1V:l(t,a){9 V,R,x,y,z;2S(7.4.q){27 2:V=a.4||a;o(V.q!=2){8 w}R=S.1R(t).4;x=7.4[0]-V[0];y=7.4[1]-V[1];8 v.u([V[0]+R[0][0]*x+R[0][1]*y,V[1]+R[1][0]*x+R[1][1]*y]);1I;27 3:o(!a.U){8 w}9 C=a.1r(7).4;R=S.1R(t,a.U).4;x=7.4[0]-C[0];y=7.4[1]-C[1];z=7.4[2]-C[2];8 v.u([C[0]+R[0][0]*x+R[0][1]*y+R[0][2]*z,C[1]+R[1][0]*x+R[1][1]*y+R[1][2]*z,C[2]+R[2][0]*x+R[2][1]*y+R[2][2]*z]);1I;2P:8 w}},1t:l(a){o(a.K){9 P=7.4.2O();9 C=a.1r(P).4;8 v.u([C[0]+(C[0]-P[0]),C[1]+(C[1]-P[1]),C[2]+(C[2]-(P[2]||0))])}1d{9 Q=a.4||a;o(7.4.q!=Q.q){8 w}8 7.1b(l(x,i){8 Q[i-1]+(Q[i-1]-x)})}},1N:l(){9 V=7.1q();2S(V.4.q){27 3:1I;27 2:V.4.19(0);1I;2P:8 w}8 V},2n:l(){8'['+7.4.2K(', ')+']'},26:l(a){7.4=(a.4||a).2O();8 7}};v.u=l(a){9 V=25 v();8 V.26(a)};v.i=v.u([1,0,0]);v.j=v.u([0,1,0]);v.k=v.u([0,0,1]);v.2J=l(n){9 a=[];J{a.19(F.2F())}H(--n);8 v.u(a)};v.1j=l(n){9 a=[];J{a.19(0)}H(--n);8 v.u(a)};l S(){}S.23={e:l(i,j){o(i<1||i>7.4.q||j<1||j>7.4[0].q){8 w}8 7.4[i-1][j-1]},33:l(i){o(i>7.4.q){8 w}8 v.u(7.4[i-1])},2E:l(j){o(j>7.4[0].q){8 w}9 a=[],n=7.4.q,k=n,i;J{i=k-n;a.19(7.4[i][j-1])}H(--n);8 v.u(a)},2R:l(){8{2D:7.4.q,1p:7.4[0].q}},2D:l(){8 7.4.q},1p:l(){8 7.4[0].q},24:l(a){9 M=a.4||a;o(1g(M[0][0])=='1f'){M=S.u(M).4}o(7.4.q!=M.q||7.4[0].q!=M[0].q){8 1L}9 b=7.4.q,15=b,i,G,10=7.4[0].q,j;J{i=15-b;G=10;J{j=10-G;o(F.13(7.4[i][j]-M[i][j])>17.16){8 1L}}H(--G)}H(--b);8 2x},1q:l(){8 S.u(7.4)},1b:l(a){9 b=[],12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;b[i]=[];J{j=10-G;b[i][j]=a(7.4[i][j],i+1,j+1)}H(--G)}H(--12);8 S.u(b)},2i:l(a){9 M=a.4||a;o(1g(M[0][0])=='1f'){M=S.u(M).4}8(7.4.q==M.q&&7.4[0].q==M[0].q)},2j:l(a){9 M=a.4||a;o(1g(M[0][0])=='1f'){M=S.u(M).4}o(!7.2i(M)){8 w}8 7.1b(l(x,i,j){8 x+M[i-1][j-1]})},2C:l(a){9 M=a.4||a;o(1g(M[0][0])=='1f'){M=S.u(M).4}o(!7.2i(M)){8 w}8 7.1b(l(x,i,j){8 x-M[i-1][j-1]})},2B:l(a){9 M=a.4||a;o(1g(M[0][0])=='1f'){M=S.u(M).4}8(7.4[0].q==M.q)},22:l(a){o(!a.4){8 7.1b(l(x){8 x*a})}9 b=a.1u?2x:1L;9 M=a.4||a;o(1g(M[0][0])=='1f'){M=S.u(M).4}o(!7.2B(M)){8 w}9 d=7.4.q,15=d,i,G,10=M[0].q,j;9 e=7.4[0].q,4=[],21,20,c;J{i=15-d;4[i]=[];G=10;J{j=10-G;21=0;20=e;J{c=e-20;21+=7.4[i][c]*M[c][j]}H(--20);4[i][j]=21}H(--G)}H(--d);9 M=S.u(4);8 b?M.2E(1):M},x:l(a){8 7.22(a)},32:l(a,b,c,d){9 e=[],12=c,i,G,j;9 f=7.4.q,1p=7.4[0].q;J{i=c-12;e[i]=[];G=d;J{j=d-G;e[i][j]=7.4[(a+i-1)%f][(b+j-1)%1p]}H(--G)}H(--12);8 S.u(e)},31:l(){9 a=7.4.q,1p=7.4[0].q;9 b=[],12=1p,i,G,j;J{i=1p-12;b[i]=[];G=a;J{j=a-G;b[i][j]=7.4[j][i]}H(--G)}H(--12);8 S.u(b)},1y:l(){8(7.4.q==7.4[0].q)},2A:l(){9 m=0,12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;J{j=10-G;o(F.13(7.4[i][j])>F.13(m)){m=7.4[i][j]}}H(--G)}H(--12);8 m},2Z:l(x){9 a=w,12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;J{j=10-G;o(7.4[i][j]==x){8{i:i+1,j:j+1}}}H(--G)}H(--12);8 w},30:l(){o(!7.1y){8 w}9 a=[],n=7.4.q,k=n,i;J{i=k-n;a.19(7.4[i][i])}H(--n);8 v.u(a)},1K:l(){9 M=7.1q(),1c;9 n=7.4.q,k=n,i,1s,1n=7.4[0].q,p;J{i=k-n;o(M.4[i][i]==0){2e(j=i+1;j<k;j++){o(M.4[j][i]!=0){1c=[];1s=1n;J{p=1n-1s;1c.19(M.4[i][p]+M.4[j][p])}H(--1s);M.4[i]=1c;1I}}}o(M.4[i][i]!=0){2e(j=i+1;j<k;j++){9 a=M.4[j][i]/M.4[i][i];1c=[];1s=1n;J{p=1n-1s;1c.19(p<=i?0:M.4[j][p]-M.4[i][p]*a)}H(--1s);M.4[j]=1c}}}H(--n);8 M},3h:l(){8 7.1K()},2z:l(){o(!7.1y()){8 w}9 M=7.1K();9 a=M.4[0][0],n=M.4.q-1,k=n,i;J{i=k-n+1;a=a*M.4[i][i]}H(--n);8 a},3f:l(){8 7.2z()},2y:l(){8(7.1y()&&7.2z()===0)},2Y:l(){o(!7.1y()){8 w}9 a=7.4[0][0],n=7.4.q-1,k=n,i;J{i=k-n+1;a+=7.4[i][i]}H(--n);8 a},3e:l(){8 7.2Y()},1Y:l(){9 M=7.1K(),1Y=0;9 a=7.4.q,15=a,i,G,10=7.4[0].q,j;J{i=15-a;G=10;J{j=10-G;o(F.13(M.4[i][j])>17.16){1Y++;1I}}H(--G)}H(--a);8 1Y},3d:l(){8 7.1Y()},2W:l(a){9 M=a.4||a;o(1g(M[0][0])=='1f'){M=S.u(M).4}9 T=7.1q(),1p=T.4[0].q;9 b=T.4.q,15=b,i,G,10=M[0].q,j;o(b!=M.q){8 w}J{i=15-b;G=10;J{j=10-G;T.4[i][1p+j]=M[i][j]}H(--G)}H(--b);8 T},2w:l(){o(!7.1y()||7.2y()){8 w}9 a=7.4.q,15=a,i,j;9 M=7.2W(S.I(a)).1K();9 b,1n=M.4[0].q,p,1c,2v;9 c=[],2c;J{i=a-1;1c=[];b=1n;c[i]=[];2v=M.4[i][i];J{p=1n-b;2c=M.4[i][p]/2v;1c.19(2c);o(p>=15){c[i].19(2c)}}H(--b);M.4[i]=1c;2e(j=0;j<i;j++){1c=[];b=1n;J{p=1n-b;1c.19(M.4[j][p]-M.4[i][p]*M.4[j][i])}H(--b);M.4[j]=1c}}H(--a);8 S.u(c)},3c:l(){8 7.2w()},2d:l(){8 7.1b(l(x){8 F.2d(x)})},2V:l(x){8 7.1b(l(p){8(F.13(p-x)<=17.16)?x:p})},2n:l(){9 a=[];9 n=7.4.q,k=n,i;J{i=k-n;a.19(v.u(7.4[i]).2n())}H(--n);8 a.2K('\\n')},26:l(a){9 i,4=a.4||a;o(1g(4[0][0])!='1f'){9 b=4.q,15=b,G,10,j;7.4=[];J{i=15-b;G=4[i].q;10=G;7.4[i]=[];J{j=10-G;7.4[i][j]=4[i][j]}H(--G)}H(--b);8 7}9 n=4.q,k=n;7.4=[];J{i=k-n;7.4.19([4[i]])}H(--n);8 7}};S.u=l(a){9 M=25 S();8 M.26(a)};S.I=l(n){9 a=[],k=n,i,G,j;J{i=k-n;a[i]=[];G=k;J{j=k-G;a[i][j]=(i==j)?1:0}H(--G)}H(--n);8 S.u(a)};S.2X=l(a){9 n=a.q,k=n,i;9 M=S.I(n);J{i=k-n;M.4[i][i]=a[i]}H(--n);8 M};S.1R=l(b,a){o(!a){8 S.u([[F.1H(b),-F.1G(b)],[F.1G(b),F.1H(b)]])}9 d=a.1q();o(d.4.q!=3){8 w}9 e=d.1u();9 x=d.4[0]/e,y=d.4[1]/e,z=d.4[2]/e;9 s=F.1G(b),c=F.1H(b),t=1-c;8 S.u([[t*x*x+c,t*x*y-s*z,t*x*z+s*y],[t*x*y+s*z,t*y*y+c,t*y*z-s*x],[t*x*z-s*y,t*y*z+s*x,t*z*z+c]])};S.3b=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[1,0,0],[0,c,-s],[0,s,c]])};S.39=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[c,0,s],[0,1,0],[-s,0,c]])};S.38=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[c,-s,0],[s,c,0],[0,0,1]])};S.2J=l(n,m){8 S.1j(n,m).1b(l(){8 F.2F()})};S.1j=l(n,m){9 a=[],12=n,i,G,j;J{i=n-12;a[i]=[];G=m;J{j=m-G;a[i][j]=0}H(--G)}H(--12);8 S.u(a)};l 14(){}14.23={24:l(a){8(7.1m(a)&&7.1h(a.K))},1q:l(){8 14.u(7.K,7.U)},2U:l(a){9 V=a.4||a;8 14.u([7.K.4[0]+V[0],7.K.4[1]+V[1],7.K.4[2]+(V[2]||0)],7.U)},1m:l(a){o(a.W){8 a.1m(7)}9 b=7.U.1C(a.U);8(F.13(b)<=17.16||F.13(b-F.1A)<=17.16)},1o:l(a){o(a.W){8 a.1o(7)}o(a.U){o(7.1m(a)){8 7.1o(a.K)}9 N=7.U.2f(a.U).2q().4;9 A=7.K.4,B=a.K.4;8 F.13((A[0]-B[0])*N[0]+(A[1]-B[1])*N[1]+(A[2]-B[2])*N[2])}1d{9 P=a.4||a;9 A=7.K.4,D=7.U.4;9 b=P[0]-A[0],2a=P[1]-A[1],29=(P[2]||0)-A[2];9 c=F.1x(b*b+2a*2a+29*29);o(c===0)8 0;9 d=(b*D[0]+2a*D[1]+29*D[2])/c;9 e=1-d*d;8 F.13(c*F.1x(e<0?0:e))}},1h:l(a){9 b=7.1o(a);8(b!==w&&b<=17.16)},2T:l(a){8 a.1h(7)},1v:l(a){o(a.W){8 a.1v(7)}8(!7.1m(a)&&7.1o(a)<=17.16)},1U:l(a){o(a.W){8 a.1U(7)}o(!7.1v(a)){8 w}9 P=7.K.4,X=7.U.4,Q=a.K.4,Y=a.U.4;9 b=X[0],1z=X[1],1B=X[2],1T=Y[0],1S=Y[1],1M=Y[2];9 c=P[0]-Q[0],2s=P[1]-Q[1],2r=P[2]-Q[2];9 d=-b*c-1z*2s-1B*2r;9 e=1T*c+1S*2s+1M*2r;9 f=b*b+1z*1z+1B*1B;9 g=1T*1T+1S*1S+1M*1M;9 h=b*1T+1z*1S+1B*1M;9 k=(d*g/f+h*e)/(g-h*h);8 v.u([P[0]+k*b,P[1]+k*1z,P[2]+k*1B])},1r:l(a){o(a.U){o(7.1v(a)){8 7.1U(a)}o(7.1m(a)){8 w}9 D=7.U.4,E=a.U.4;9 b=D[0],1l=D[1],1k=D[2],1P=E[0],1O=E[1],1Q=E[2];9 x=(1k*1P-b*1Q),y=(b*1O-1l*1P),z=(1l*1Q-1k*1O);9 N=v.u([x*1Q-y*1O,y*1P-z*1Q,z*1O-x*1P]);9 P=11.u(a.K,N);8 P.1U(7)}1d{9 P=a.4||a;o(7.1h(P)){8 v.u(P)}9 A=7.K.4,D=7.U.4;9 b=D[0],1l=D[1],1k=D[2],1w=A[0],18=A[1],1a=A[2];9 x=b*(P[1]-18)-1l*(P[0]-1w),y=1l*((P[2]||0)-1a)-1k*(P[1]-18),z=1k*(P[0]-1w)-b*((P[2]||0)-1a);9 V=v.u([1l*x-1k*z,1k*y-b*x,b*z-1l*y]);9 k=7.1o(P)/V.1u();8 v.u([P[0]+V.4[0]*k,P[1]+V.4[1]*k,(P[2]||0)+V.4[2]*k])}},1V:l(t,a){o(1g(a.U)=='1f'){a=14.u(a.1N(),v.k)}9 R=S.1R(t,a.U).4;9 C=a.1r(7.K).4;9 A=7.K.4,D=7.U.4;9 b=C[0],1E=C[1],1J=C[2],1w=A[0],18=A[1],1a=A[2];9 x=1w-b,y=18-1E,z=1a-1J;8 14.u([b+R[0][0]*x+R[0][1]*y+R[0][2]*z,1E+R[1][0]*x+R[1][1]*y+R[1][2]*z,1J+R[2][0]*x+R[2][1]*y+R[2][2]*z],[R[0][0]*D[0]+R[0][1]*D[1]+R[0][2]*D[2],R[1][0]*D[0]+R[1][1]*D[1]+R[1][2]*D[2],R[2][0]*D[0]+R[2][1]*D[1]+R[2][2]*D[2]])},1t:l(a){o(a.W){9 A=7.K.4,D=7.U.4;9 b=A[0],18=A[1],1a=A[2],2N=D[0],1l=D[1],1k=D[2];9 c=7.K.1t(a).4;9 d=b+2N,2h=18+1l,2o=1a+1k;9 Q=a.1r([d,2h,2o]).4;9 e=[Q[0]+(Q[0]-d)-c[0],Q[1]+(Q[1]-2h)-c[1],Q[2]+(Q[2]-2o)-c[2]];8 14.u(c,e)}1d o(a.U){8 7.1V(F.1A,a)}1d{9 P=a.4||a;8 14.u(7.K.1t([P[0],P[1],(P[2]||0)]),7.U)}},1Z:l(a,b){a=v.u(a);b=v.u(b);o(a.4.q==2){a.4.19(0)}o(b.4.q==2){b.4.19(0)}o(a.4.q>3||b.4.q>3){8 w}9 c=b.1u();o(c===0){8 w}7.K=a;7.U=v.u([b.4[0]/c,b.4[1]/c,b.4[2]/c]);8 7}};14.u=l(a,b){9 L=25 14();8 L.1Z(a,b)};14.X=14.u(v.1j(3),v.i);14.Y=14.u(v.1j(3),v.j);14.Z=14.u(v.1j(3),v.k);l 11(){}11.23={24:l(a){8(7.1h(a.K)&&7.1m(a))},1q:l(){8 11.u(7.K,7.W)},2U:l(a){9 V=a.4||a;8 11.u([7.K.4[0]+V[0],7.K.4[1]+V[1],7.K.4[2]+(V[2]||0)],7.W)},1m:l(a){9 b;o(a.W){b=7.W.1C(a.W);8(F.13(b)<=17.16||F.13(F.1A-b)<=17.16)}1d o(a.U){8 7.W.2k(a.U)}8 w},2k:l(a){9 b=7.W.1C(a.W);8(F.13(F.1A/2-b)<=17.16)},1o:l(a){o(7.1v(a)||7.1h(a)){8 0}o(a.K){9 A=7.K.4,B=a.K.4,N=7.W.4;8 F.13((A[0]-B[0])*N[0]+(A[1]-B[1])*N[1]+(A[2]-B[2])*N[2])}1d{9 P=a.4||a;9 A=7.K.4,N=7.W.4;8 F.13((A[0]-P[0])*N[0]+(A[1]-P[1])*N[1]+(A[2]-(P[2]||0))*N[2])}},1h:l(a){o(a.W){8 w}o(a.U){8(7.1h(a.K)&&7.1h(a.K.2j(a.U)))}1d{9 P=a.4||a;9 A=7.K.4,N=7.W.4;9 b=F.13(N[0]*(A[0]-P[0])+N[1]*(A[1]-P[1])+N[2]*(A[2]-(P[2]||0)));8(b<=17.16)}},1v:l(a){o(1g(a.U)=='1f'&&1g(a.W)=='1f'){8 w}8!7.1m(a)},1U:l(a){o(!7.1v(a)){8 w}o(a.U){9 A=a.K.4,D=a.U.4,P=7.K.4,N=7.W.4;9 b=(N[0]*(P[0]-A[0])+N[1]*(P[1]-A[1])+N[2]*(P[2]-A[2]))/(N[0]*D[0]+N[1]*D[1]+N[2]*D[2]);8 v.u([A[0]+D[0]*b,A[1]+D[1]*b,A[2]+D[2]*b])}1d o(a.W){9 c=7.W.2f(a.W).2q();9 N=7.W.4,A=7.K.4,O=a.W.4,B=a.K.4;9 d=S.1j(2,2),i=0;H(d.2y()){i++;d=S.u([[N[i%3],N[(i+1)%3]],[O[i%3],O[(i+1)%3]]])}9 e=d.2w().4;9 x=N[0]*A[0]+N[1]*A[1]+N[2]*A[2];9 y=O[0]*B[0]+O[1]*B[1]+O[2]*B[2];9 f=[e[0][0]*x+e[0][1]*y,e[1][0]*x+e[1][1]*y];9 g=[];2e(9 j=1;j<=3;j++){g.19((i==j)?0:f[(j+(5-i)%3)%3])}8 14.u(g,c)}},1r:l(a){9 P=a.4||a;9 A=7.K.4,N=7.W.4;9 b=(A[0]-P[0])*N[0]+(A[1]-P[1])*N[1]+(A[2]-(P[2]||0))*N[2];8 v.u([P[0]+N[0]*b,P[1]+N[1]*b,(P[2]||0)+N[2]*b])},1V:l(t,a){9 R=S.1R(t,a.U).4;9 C=a.1r(7.K).4;9 A=7.K.4,N=7.W.4;9 b=C[0],1E=C[1],1J=C[2],1w=A[0],18=A[1],1a=A[2];9 x=1w-b,y=18-1E,z=1a-1J;8 11.u([b+R[0][0]*x+R[0][1]*y+R[0][2]*z,1E+R[1][0]*x+R[1][1]*y+R[1][2]*z,1J+R[2][0]*x+R[2][1]*y+R[2][2]*z],[R[0][0]*N[0]+R[0][1]*N[1]+R[0][2]*N[2],R[1][0]*N[0]+R[1][1]*N[1]+R[1][2]*N[2],R[2][0]*N[0]+R[2][1]*N[1]+R[2][2]*N[2]])},1t:l(a){o(a.W){9 A=7.K.4,N=7.W.4;9 b=A[0],18=A[1],1a=A[2],2M=N[0],2L=N[1],2Q=N[2];9 c=7.K.1t(a).4;9 d=b+2M,2p=18+2L,2m=1a+2Q;9 Q=a.1r([d,2p,2m]).4;9 e=[Q[0]+(Q[0]-d)-c[0],Q[1]+(Q[1]-2p)-c[1],Q[2]+(Q[2]-2m)-c[2]];8 11.u(c,e)}1d o(a.U){8 7.1V(F.1A,a)}1d{9 P=a.4||a;8 11.u(7.K.1t([P[0],P[1],(P[2]||0)]),7.W)}},1Z:l(a,b,c){a=v.u(a);a=a.1N();o(a===w){8 w}b=v.u(b);b=b.1N();o(b===w){8 w}o(1g(c)=='1f'){c=w}1d{c=v.u(c);c=c.1N();o(c===w){8 w}}9 d=a.4[0],18=a.4[1],1a=a.4[2];9 e=b.4[0],1W=b.4[1],1X=b.4[2];9 f,1i;o(c!==w){9 g=c.4[0],2l=c.4[1],2t=c.4[2];f=v.u([(1W-18)*(2t-1a)-(1X-1a)*(2l-18),(1X-1a)*(g-d)-(e-d)*(2t-1a),(e-d)*(2l-18)-(1W-18)*(g-d)]);1i=f.1u();o(1i===0){8 w}f=v.u([f.4[0]/1i,f.4[1]/1i,f.4[2]/1i])}1d{1i=F.1x(e*e+1W*1W+1X*1X);o(1i===0){8 w}f=v.u([b.4[0]/1i,b.4[1]/1i,b.4[2]/1i])}7.K=a;7.W=f;8 7}};11.u=l(a,b,c){9 P=25 11();8 P.1Z(a,b,c)};11.2I=11.u(v.1j(3),v.k);11.2H=11.u(v.1j(3),v.i);11.2G=11.u(v.1j(3),v.j);11.36=11.2I;11.35=11.2H;11.3j=11.2G;9 $V=v.u;9 $M=S.u;9 $L=14.u;9 $P=11.u;",0,206,"||||elements|||this|return|var||||||||||||function|||if||length||||create|Vector|null|||||||||Math|nj|while||do|anchor||||||||Matrix||direction||normal||||kj|Plane|ni|abs|Line|ki|precision|Sylvester|A2|push|A3|map|els|else||undefined|typeof|contains|mod|Zero|D3|D2|isParallelTo|kp|distanceFrom|cols|dup|pointClosestTo|np|reflectionIn|modulus|intersects|A1|sqrt|isSquare|X2|PI|X3|angleFrom|mod1|C2|mod2|sin|cos|break|C3|toRightTriangular|false|Y3|to3D|E2|E1|E3|Rotation|Y2|Y1|intersectionWith|rotate|v12|v13|rank|setVectors|nc|sum|multiply|prototype|eql|new|setElements|case|each|PA3|PA2|part|new_element|round|for|cross|product|AD2|isSameSizeAs|add|isPerpendicularTo|v22|AN3|inspect|AD3|AN2|toUnitVector|PsubQ3|PsubQ2|v23|dot|divisor|inverse|true|isSingular|determinant|max|canMultiplyFromLeft|subtract|rows|col|random|ZX|YZ|XY|Random|join|N2|N1|D1|slice|default|N3|dimensions|switch|liesIn|translate|snapTo|augment|Diagonal|trace|indexOf|diagonal|transpose|minor|row|isAntiparallelTo|ZY|YX|acos|RotationZ|RotationY|liesOn|RotationX|inv|rk|tr|det|toDiagonalMatrix|toUpperTriangular|version|XZ".split("|"),0,{}));var Kalman={version:"0.0.1"};KalmanModel=function(){function a(a,i,l,n){this.x_k=a,this.P_k=i,this.F_k=l,this.Q_k=n}return a.prototype.update=function(a){this.I=Matrix.I(this.P_k.rows()),this.x_k_=this.x_k,this.P_k_=this.P_k,this.x_k_k_=this.F_k.x(this.x_k_),this.P_k_k_=this.F_k.x(this.P_k_.x(this.F_k.transpose())).add(this.Q_k),this.y_k=a.z_k.subtract(a.H_k.x(this.x_k_k_)),this.S_k=a.H_k.x(this.P_k_k_.x(a.H_k.transpose())).add(a.R_k),this.K_k=this.P_k_k_.x(a.H_k.transpose().x(this.S_k.inverse())),this.x_k=this.x_k_k_.add(this.K_k.x(this.y_k)),this.P_k=this.I.subtract(this.K_k.x(a.H_k)).x(this.P_k_k_)},a}(),KalmanObservation=function(){function a(a,i,l){this.z_k=a,this.H_k=i,this.R_k=l}return a}(); \ No newline at end of file
diff --git a/assets/js/message-bus.js b/assets/js/message-bus.js
new file mode 100644
index 0000000..0a1d4a0
--- /dev/null
+++ b/assets/js/message-bus.js
@@ -0,0 +1,431 @@
+/*jshint bitwise: false*/
+(function(global, document, undefined) {
+ 'use strict';
+ var previousMessageBus = global.MessageBus;
+
+ // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript
+ var callbacks, clientId, failCount, shouldLongPoll, queue, responseCallbacks, uniqueId, baseUrl;
+ var me, started, stopped, longPoller, pollTimeout, paused, later, jQuery, interval, chunkedBackoff;
+
+ uniqueId = function() {
+ return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+ var r, v;
+ r = Math.random() * 16 | 0;
+ v = c === 'x' ? r : (r & 0x3 | 0x8);
+ return v.toString(16);
+ });
+ };
+
+ clientId = uniqueId();
+ responseCallbacks = {};
+ callbacks = [];
+ queue = [];
+ interval = null;
+ failCount = 0;
+ baseUrl = "/";
+ paused = false;
+ later = [];
+ chunkedBackoff = 0;
+ jQuery = global.jQuery;
+ var hiddenProperty;
+
+ (function(){
+ var prefixes = ["","webkit","ms"];
+ for(var i=0; i<prefixes.length; i++) {
+ var prefix = prefixes[i];
+ var check = prefix + (prefix === "" ? "hidden" : "Hidden");
+ if(document[check] !== undefined ){
+ hiddenProperty = check;
+ }
+ }
+ })();
+
+ var isHidden = function() {
+ if (hiddenProperty !== undefined){
+ return document[hiddenProperty];
+ } else {
+ return !document.hasFocus;
+ }
+ };
+
+ var hasonprogress = (new XMLHttpRequest()).onprogress === null;
+ var allowChunked = function(){
+ return me.enableChunkedEncoding && hasonprogress;
+ };
+
+ shouldLongPoll = function() {
+ return me.alwaysLongPoll || !isHidden();
+ };
+
+ var totalAjaxFailures = 0;
+ var totalAjaxCalls = 0;
+ var lastAjax;
+
+ var processMessages = function(messages) {
+ var gotData = false;
+ if (!messages) return false; // server unexpectedly closed connection
+
+ for (var i=0; i<messages.length; i++) {
+ var message = messages[i];
+ gotData = true;
+ for (var j=0; j<callbacks.length; j++) {
+ var callback = callbacks[j];
+ if (callback.channel === message.channel) {
+ callback.last_id = message.message_id;
+ try {
+ callback.func(message.data, message.global_id, message.message_id);
+ }
+ catch(e){
+ if(console.log) {
+ console.log("MESSAGE BUS FAIL: callback " + callback.channel + " caused exception " + e.message);
+ }
+ }
+ }
+ if (message.channel === "/__status") {
+ if (message.data[callback.channel] !== undefined) {
+ callback.last_id = message.data[callback.channel];
+ }
+ }
+ }
+ }
+
+ return gotData;
+ };
+
+ var reqSuccess = function(messages) {
+ failCount = 0;
+ if (paused) {
+ if (messages) {
+ for (var i=0; i<messages.length; i++) {
+ later.push(messages[i]);
+ }
+ }
+ } else {
+ return processMessages(messages);
+ }
+ return false;
+ };
+
+ longPoller = function(poll,data){
+ var gotData = false;
+ var aborted = false;
+ lastAjax = new Date();
+ totalAjaxCalls += 1;
+ data.__seq = totalAjaxCalls;
+
+ var longPoll = shouldLongPoll() && me.enableLongPolling;
+ var chunked = longPoll && allowChunked();
+ if (chunkedBackoff > 0) {
+ chunkedBackoff--;
+ chunked = false;
+ }
+
+ var headers = {
+ 'X-SILENCE-LOGGER': 'true'
+ };
+ for (var name in me.headers){
+ headers[name] = me.headers[name];
+ }
+
+ if (!chunked){
+ headers["Dont-Chunk"] = 'true';
+ }
+
+ var dataType = chunked ? "text" : "json";
+
+ var handle_progress = function(payload, position) {
+
+ var separator = "\r\n|\r\n";
+ var endChunk = payload.indexOf(separator, position);
+
+ if (endChunk === -1) {
+ return position;
+ }
+
+ var chunk = payload.substring(position, endChunk);
+ chunk = chunk.replace(/\r\n\|\|\r\n/g, separator);
+
+ try {
+ reqSuccess(JSON.parse(chunk));
+ } catch(e) {
+ if (console.log) {
+ console.log("FAILED TO PARSE CHUNKED REPLY");
+ console.log(data);
+ }
+ }
+
+ return handle_progress(payload, endChunk + separator.length);
+ }
+
+ var disableChunked = function(){
+ if (me.longPoll) {
+ me.longPoll.abort();
+ chunkedBackoff = 30;
+ }
+ };
+
+ var setOnProgressListener = function(xhr) {
+ var position = 0;
+ // if it takes longer than 3000 ms to get first chunk, we have some proxy
+ // this is messing with us, so just backoff from using chunked for now
+ var chunkedTimeout = setTimeout(disableChunked,3000);
+ xhr.onprogress = function () {
+ clearTimeout(chunkedTimeout);
+ if(xhr.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {
+ // not chunked we are sending json back
+ chunked = false;
+ return;
+ }
+ position = handle_progress(xhr.responseText, position);
+ }
+ };
+ if (!me.ajax){
+ throw new Error("Either jQuery or the ajax adapter must be loaded");
+ }
+ var req = me.ajax({
+ url: me.baseUrl + "message-bus/" + me.clientId + "/poll" + (!longPoll ? "?dlp=t" : ""),
+ data: data,
+ cache: false,
+ async: true,
+ dataType: dataType,
+ type: 'POST',
+ headers: headers,
+ messageBus: {
+ chunked: chunked,
+ onProgressListener: function(xhr) {
+ var position = 0;
+ // if it takes longer than 3000 ms to get first chunk, we have some proxy
+ // this is messing with us, so just backoff from using chunked for now
+ var chunkedTimeout = setTimeout(disableChunked,3000);
+ return xhr.onprogress = function () {
+ clearTimeout(chunkedTimeout);
+ if(xhr.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {
+ chunked = false; // not chunked, we are sending json back
+ } else {
+ position = handle_progress(xhr.responseText, position);
+ }
+ }
+ }
+ },
+ xhr: function() {
+ var xhr = jQuery.ajaxSettings.xhr();
+ if (!chunked) {
+ return xhr;
+ }
+ this.messageBus.onProgressListener(xhr);
+ return xhr;
+ },
+ success: function(messages) {
+ if (!chunked) {
+ // we may have requested text so jQuery will not parse
+ if (typeof(messages) === "string") {
+ messages = JSON.parse(messages);
+ }
+ gotData = reqSuccess(messages);
+ }
+ },
+ error: function(xhr, textStatus, err) {
+ if(textStatus === "abort") {
+ aborted = true;
+ } else {
+ failCount += 1;
+ totalAjaxFailures += 1;
+ }
+ },
+ complete: function() {
+ var interval;
+ try {
+ if (gotData || aborted) {
+ interval = 100;
+ } else {
+ interval = me.callbackInterval;
+ if (failCount > 2) {
+ interval = interval * failCount;
+ } else if (!shouldLongPoll()) {
+ interval = me.backgroundCallbackInterval;
+ }
+ if (interval > me.maxPollInterval) {
+ interval = me.maxPollInterval;
+ }
+
+ interval -= (new Date() - lastAjax);
+
+ if (interval < 100) {
+ interval = 100;
+ }
+ }
+ } catch(e) {
+ if(console.log && e.message) {
+ console.log("MESSAGE BUS FAIL: " + e.message);
+ }
+ }
+
+ pollTimeout = setTimeout(function(){pollTimeout=null; poll();}, interval);
+ me.longPoll = null;
+ }
+ });
+
+ return req;
+ };
+
+ me = {
+ enableChunkedEncoding: true,
+ enableLongPolling: true,
+ callbackInterval: 15000,
+ backgroundCallbackInterval: 60000,
+ maxPollInterval: 3 * 60 * 1000,
+ callbacks: callbacks,
+ clientId: clientId,
+ alwaysLongPoll: false,
+ baseUrl: baseUrl,
+ headers: {},
+ ajax: (jQuery && jQuery.ajax),
+ noConflict: function(){
+ global.MessageBus = global.MessageBus.previousMessageBus;
+ return this;
+ },
+ diagnostics: function(){
+ console.log("Stopped: " + stopped + " Started: " + started);
+ console.log("Current callbacks");
+ console.log(callbacks);
+ console.log("Total ajax calls: " + totalAjaxCalls + " Recent failure count: " + failCount + " Total failures: " + totalAjaxFailures);
+ console.log("Last ajax call: " + (new Date() - lastAjax) / 1000 + " seconds ago") ;
+ },
+
+ pause: function() {
+ paused = true;
+ },
+
+ resume: function() {
+ paused = false;
+ processMessages(later);
+ later = [];
+ },
+
+ stop: function() {
+ stopped = true;
+ started = false;
+ },
+
+ // Start polling
+ start: function() {
+ var poll, delayPollTimeout;
+
+ if (started) return;
+ started = true;
+ stopped = false;
+
+ poll = function() {
+ var data;
+
+ if(stopped) {
+ return;
+ }
+
+ if (callbacks.length === 0) {
+ if(!delayPollTimeout) {
+ delayPollTimeout = setTimeout(function(){ delayPollTimeout = null; poll();}, 500);
+ }
+ return;
+ }
+
+ data = {};
+ for (var i=0;i<callbacks.length;i++) {
+ data[callbacks[i].channel] = callbacks[i].last_id;
+ }
+
+ me.longPoll = longPoller(poll,data);
+ };
+
+
+ // monitor visibility, issue a new long poll when the page shows
+ if(document.addEventListener && 'hidden' in document){
+ me.visibilityEvent = global.document.addEventListener('visibilitychange', function(){
+ if(!document.hidden && !me.longPoll && pollTimeout){
+ clearTimeout(pollTimeout);
+ pollTimeout = null;
+ poll();
+ }
+ });
+ }
+
+ poll();
+ },
+
+ "status": function() {
+ if (paused) {
+ return "paused";
+ } else if (started) {
+ return "started";
+ } else if (stopped) {
+ return "stopped";
+ } else {
+ throw "Cannot determine current status";
+ }
+ },
+
+ // Subscribe to a channel
+ subscribe: function(channel, func, lastId) {
+
+ if(!started && !stopped){
+ me.start();
+ }
+
+ if (typeof(lastId) !== "number" || lastId < -1){
+ lastId = -1;
+ }
+ callbacks.push({
+ channel: channel,
+ func: func,
+ last_id: lastId
+ });
+ if (me.longPoll) {
+ me.longPoll.abort();
+ }
+
+ return func;
+ },
+
+ // Unsubscribe from a channel
+ unsubscribe: function(channel, func) {
+ // TODO allow for globbing in the middle of a channel name
+ // like /something/*/something
+ // at the moment we only support globbing /something/*
+ var glob;
+ if (channel.indexOf("*", channel.length - 1) !== -1) {
+ channel = channel.substr(0, channel.length - 1);
+ glob = true;
+ }
+
+ var removed = false;
+
+ for (var i=callbacks.length-1; i>=0; i--) {
+
+ var callback = callbacks[i];
+ var keep;
+
+ if (glob) {
+ keep = callback.channel.substr(0, channel.length) !== channel;
+ } else {
+ keep = callback.channel !== channel;
+ }
+
+ if(!keep && func && callback.func !== func){
+ keep = true;
+ }
+
+ if (!keep) {
+ callbacks.splice(i,1);
+ removed = true;
+ }
+ }
+
+ if (removed && me.longPoll) {
+ me.longPoll.abort();
+ }
+
+ return removed;
+ }
+ };
+ global.MessageBus = me;
+})(window, document);
diff --git a/assets/js/message-bus.min.js b/assets/js/message-bus.min.js
new file mode 100644
index 0000000..f948ccb
--- /dev/null
+++ b/assets/js/message-bus.min.js
@@ -0,0 +1 @@
+!function(n,e,t){"use strict";var a,r,o,l,s,u,c,i,g,d,f,h,x;n.MessageBus;r=function(){return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(n){var e;return e=16*Math.random()|0,("x"===n?e:3&e|8).toString(16)})}(),a=[],o=0,d=!1,f=[],x=0,h=n.jQuery;var v;!function(){for(var n=["","webkit","ms"],t=0;t<n.length;t++){var a=n[t],r=a+(""===a?"hidden":"Hidden");void 0!==e[r]&&(v=r)}}();var b=function(){return void 0!==v?e[v]:!e.hasFocus},p=null===(new XMLHttpRequest).onprogress,m=function(){return s.enableChunkedEncoding&&p};l=function(){return s.alwaysLongPoll||!b()};var P,E=0,y=0,L=function(n){var e=!1;if(!n)return!1;for(var t=0;t<n.length;t++){var r=n[t];e=!0;for(var o=0;o<a.length;o++){var l=a[o];if(l.channel===r.channel){l.last_id=r.message_id;try{l.func(r.data,r.global_id,r.message_id)}catch(n){console.log&&console.log("MESSAGE BUS FAIL: callback "+l.channel+" caused exception "+n.message)}}"/__status"===r.channel&&void 0!==r.data[l.channel]&&(l.last_id=r.data[l.channel])}}return e},S=function(n){if(o=0,!d)return L(n);if(n)for(var e=0;e<n.length;e++)f.push(n[e]);return!1};i=function(n,e){var t=!1,a=!1;P=new Date,y+=1,e.__seq=y;var r=l()&&s.enableLongPolling,u=r&&m();x>0&&(x--,u=!1);var c={"X-SILENCE-LOGGER":"true"};for(var i in s.headers)c[i]=s.headers[i];u||(c["Dont-Chunk"]="true");var d=u?"text":"json",f=function(n,t){var a=n.indexOf("\r\n|\r\n",t);if(-1===a)return t;var r=n.substring(t,a);r=r.replace(/\r\n\|\|\r\n/g,"\r\n|\r\n");try{S(JSON.parse(r))}catch(n){console.log&&(console.log("FAILED TO PARSE CHUNKED REPLY"),console.log(e))}return f(n,a+"\r\n|\r\n".length)},v=function(){s.longPoll&&(s.longPoll.abort(),x=30)};if(!s.ajax)throw new Error("Either jQuery or the ajax adapter must be loaded");return s.ajax({url:s.baseUrl+"message-bus/"+s.clientId+"/poll"+(r?"":"?dlp=t"),data:e,cache:!1,async:!0,dataType:d,type:"POST",headers:c,messageBus:{chunked:u,onProgressListener:function(n){var e=0,t=setTimeout(v,3e3);return n.onprogress=function(){clearTimeout(t),"application/json; charset=utf-8"===n.getResponseHeader("Content-Type")?u=!1:e=f(n.responseText,e)}}},xhr:function(){var n=h.ajaxSettings.xhr();return u?(this.messageBus.onProgressListener(n),n):n},success:function(n){u||("string"==typeof n&&(n=JSON.parse(n)),t=S(n))},error:function(n,e,t){"abort"===e?a=!0:(o+=1,E+=1)},complete:function(){var e;try{t||a?e=100:(e=s.callbackInterval,o>2?e*=o:l()||(e=s.backgroundCallbackInterval),e>s.maxPollInterval&&(e=s.maxPollInterval),(e-=new Date-P)<100&&(e=100))}catch(n){console.log&&n.message&&console.log("MESSAGE BUS FAIL: "+n.message)}g=setTimeout(function(){g=null,n()},e),s.longPoll=null}})},s={enableChunkedEncoding:!0,enableLongPolling:!0,callbackInterval:15e3,backgroundCallbackInterval:6e4,maxPollInterval:18e4,callbacks:a,clientId:r,alwaysLongPoll:!1,baseUrl:"/",headers:{},ajax:h&&h.ajax,noConflict:function(){return n.MessageBus=n.MessageBus.previousMessageBus,this},diagnostics:function(){console.log("Stopped: "+c+" Started: "+u),console.log("Current callbacks"),console.log(a),console.log("Total ajax calls: "+y+" Recent failure count: "+o+" Total failures: "+E),console.log("Last ajax call: "+(new Date-P)/1e3+" seconds ago")},pause:function(){d=!0},resume:function(){d=!1,L(f),f=[]},stop:function(){c=!0,u=!1},start:function(){var t,r;u||(u=!0,c=!1,t=function(){var n;if(!c)if(0!==a.length){n={};for(var e=0;e<a.length;e++)n[a[e].channel]=a[e].last_id;s.longPoll=i(t,n)}else r||(r=setTimeout(function(){r=null,t()},500))},e.addEventListener&&"hidden"in e&&(s.visibilityEvent=n.document.addEventListener("visibilitychange",function(){e.hidden||s.longPoll||!g||(clearTimeout(g),g=null,t())})),t())},status:function(){if(d)return"paused";if(u)return"started";if(c)return"stopped";throw"Cannot determine current status"},subscribe:function(n,e,t){return u||c||s.start(),("number"!=typeof t||t<-1)&&(t=-1),a.push({channel:n,func:e,last_id:t}),s.longPoll&&s.longPoll.abort(),e},unsubscribe:function(n,e){var t;-1!==n.indexOf("*",n.length-1)&&(n=n.substr(0,n.length-1),t=!0);for(var r=!1,o=a.length-1;o>=0;o--){var l,u=a[o];!(l=t?u.channel.substr(0,n.length)!==n:u.channel!==n)&&e&&u.func!==e&&(l=!0),l||(a.splice(o,1),r=!0)}return r&&s.longPoll&&s.longPoll.abort(),r}},n.MessageBus=s}(window,document); \ No newline at end of file
diff --git a/assets/js/pedometer.js b/assets/js/pedometer.js
new file mode 100644
index 0000000..53079a9
--- /dev/null
+++ b/assets/js/pedometer.js
@@ -0,0 +1,73 @@
+$(document).ready(function(){
+
+console.log("print");
+
+//on déclare l'ensemble des variables ax et ay sont les données d'acceleration, n c'est la norme, maxn et minn les valeurs max et min de la norme, et pas le nombre de pas
+var n=0, maxn = 0, minn = 0, pas = 0,
+ ax = 0, ay = 0, az = 0, pass=0;
+
+//programme d'alberto desarullo qui va chercher les données de l'accelerometre
+if (window.DeviceMotionEvent != undefined) {
+ window.ondevicemotion = function(e) {
+ ax = event.accelerationIncludingGravity.x ;
+ ay = event.accelerationIncludingGravity.y ;
+ az = event.accelerationIncludingGravity.z ;
+// et les affiche dans la page html
+ document.getElementById("accelerationX").innerHTML = e.accelerationIncludingGravity.x;
+ document.getElementById("accelerationY").innerHTML = e.accelerationIncludingGravity.y;
+ document.getElementById("accelerationZ").innerHTML = e.accelerationIncludingGravity.z;
+// on affiche également la norme sa valeur max et le nombre de pas
+ document.getElementById("n").innerHTML = n;
+ document.getElementById("pas").innerHTML = pas;
+ document.getElementById("maxn").innerHTML = maxn;
+
+ }
+
+
+ var ev = new Event("requestMove");
+
+ function pollAccelerometer() {
+ setInterval( function() {
+
+ // on calcule la norme c'est à dire la taille du vecteur qui est défini par les points d'accélération ax ay et az
+ n0 = n;
+ n=Math.sqrt (ax*ax + ay*ay + az*az);
+ // console.log(n);
+
+ //on calcule un min et max pour la norme
+ if (n < n0) { minn = n ;
+ }else if (n > n0) { maxn = n ;
+ }
+
+ // console.log(maxn);
+
+ //on défini un seuil qui correspond à un pas
+ if ((maxn - minn) > 10) {pas = pas+1;
+
+ }
+
+
+ if (pas>10) {
+ // console.log(pas);
+ document.dispatchEvent(ev);
+ }
+ pas++;
+ // on vérifie cela chaque 250 milisecondes
+ }, 350);
+ }
+
+//function mockAccelerometer() {
+// setInterval( function() {
+// console.log(pas);
+// if (pas===100) {
+// document.dispatchEvent(ev);
+// }
+// pas++;
+// },1000);
+//}
+
+
+pollAccelerometer();
+}
+});
+
diff --git a/assets/js/qw.js b/assets/js/qw.js
new file mode 100644
index 0000000..7708718
--- /dev/null
+++ b/assets/js/qw.js
@@ -0,0 +1,335 @@
+$(function() {
+
+ // Return a string safe to display in HTML
+ var safe = function(html) {
+ return String(html)
+ .replace(/&/g, '&amp;')
+ .replace(/</g, '&lt;')
+ .replace(/>/g, '&gt;')
+ .replace(/"/g, '&quot;');
+ };
+
+ // Return a uniquer identifier
+ var uniqueId = function() {
+ return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+ var r, v;
+ r = Math.random() * 16 | 0;
+ v = c === 'x' ? r : (r & 0x3 | 0x8);
+ return v.toString(16);
+ });
+ };
+
+ // MessageBus ENTER callback
+ var enter = function(name, opts) {
+ if (opts && opts.check) {
+ var found = false;
+ $('#walkers li').each(function() {
+ found = found || ($(this).text().trim() === name.trim());
+ if (found && opts.me) {
+ $(this).remove();
+ found = false;
+ }
+ return !found;
+ });
+ if (found) {
+ return;
+ }
+ }
+
+ var li = $('<li></li>');
+ li.text(name);
+ if (opts && opts.me) {
+ li.addClass("me");
+ $('#walkers').prepend(li);
+ } else {
+ $('#walkers').append(li);
+ }
+ };
+
+ // MessageBus LEAVE callback
+ var leave = function(name) {
+ $.post('/leave', { name: name });
+ MessageBus.stop();
+ $('#bus-status').text('stopped');
+ };
+
+ // Assign player to a team
+ var assign_random_team = function() {
+ var teams = ['cavity', 'musclel', 'muscler', 'stringl', 'stringr', 'wingl', 'wingr'];
+ var team = teams[Math.floor(Math.random()*teams.length)];
+ $('#team').text(team);
+ return team;
+ };
+
+
+ // When the DOM is fully loaded, start playing
+ $(document).ready(function() {
+
+ var name = uniqueId(), // Uniquely identify client
+ n_walkers = 0, // Number of clients
+ n_steps = 0, // Number of steps for this client
+ last_step = $.now(), // Timestamp for last step
+ has_accel = false, // Whether this device has an accelerometer
+ accel_n = 0, // Acceleration (vector norm)
+ accel = { x: 0, y: 0, z: 0, n: 0 }, // Acceleration with Kalman filter
+ MIN_N = 10.3, // Minimum threshold for step detection
+ MAX_N = 20; // Maximum threshold
+
+ // SVG animation
+ var map, cavity, cavity_b, musclel, musclel_b, muscler, muscler_b,
+ stringl, stringl_b, stringr, stringr_b, wingl, wingl_b, wingr, wingr_b, flight_path, flight_path_l, last_point;
+
+ var team = assign_random_team();
+ var svgp, bbox;
+
+ map = Snap('#left-bits');
+/*
+ cavity = map.select('#cavity');
+ cavity_b = cavity.getBBox();
+ musclel = map.select('#musclel');
+ musclel_b = musclel.getBBox();
+ muscler = map.select('#muscler');
+ musclel_b = muscler.getBBox();
+ stringl = map.select('#stringl');
+ stringl_b = stringl.getBBox();
+ stringr = map.select('#stringr');
+ stringl_b = stringr.getBBox();
+ wingl = map.select('#wingl');
+ wingl_b = wingl.getBBox();
+ wingr = map.select('#wingr');
+ wingr_b = wingr.getBBox();
+*/ flight_path = map.select('#path');
+ flight_path_l = Snap.path.getTotalLength(flight_path);
+
+// console.log('flight_path_length ' + flight_path_l);
+ last_point = flight_path.getPointAtLength(flight_path_l);
+
+ // Start/pause MessageBus when clicking on status
+ $('#bus-status').click(function() {
+ switch($('#bus-status').text()) {
+ case 'started':
+ MessageBus.pause();
+ break;
+ case 'paused':
+ MessageBus.resume();
+ break;
+ case 'stopped':
+ MessageBus.start();
+ break;
+ default:
+ break;
+ }
+ });
+
+ var play_move = function(jump, team=false) {
+ if (svgp = map.select('#' + (team || $('#team').text()))) {
+ bbox = svgp.getBBox();
+
+ if (jump > flight_path_l) {
+// console.log('GAME OVER');
+ return;
+ }
+
+ Snap.animate(jump, flight_path_l, function() {
+ var p = Snap.path.getPointAtLength( flight_path, jump );
+ x = p.x;
+ y = p.y;
+ svgp.transform('translate(' + x + ',' + y + ') rotate(' + (p.alpha - 90) + ', ' + bbox.cx + ', ' + bbox.cy + ')');
+ },1000, mina.easeout);
+ }
+ }
+
+ // Update MessageBus status (debug)
+ var statusInfo = setInterval(function() {
+ $('#bus-status').text(MessageBus.status());
+ $('#name').text(name); // should be static
+ }, 2000);
+
+ // Configuration
+ MessageBus.headers["X-NAME"] = name;
+
+ // Who's connected
+/* MessageBus.subscribe("/presence", function(msg) {
+ if (msg.enter) {
+ enter(msg.enter, { check: true });
+ }
+ if (msg.leave) {
+ $('#walkers li').each(function() {
+ if ($(this).text() === msg.leave) {
+ $(this).remove();
+ leave(msg.leave);
+ }
+ });
+ }
+ });
+*/
+ // Count clients
+/* MessageBus.subscribe('/n-walkers', function(data) {
+ if (data && data.count) {
+ n_walkers = data.count;
+ $('#n-walkers').text(n_walkers);
+ }
+ }, n_walkers);
+*/
+ // Update client steps
+ MessageBus.subscribe("/walk", function(data) {
+ if (data.name) {
+ jump = data.n * data.step;
+ if (data.name == name) {
+ $('#accel-n').text(data.n);
+ $('#n-steps').text(data.step);
+ $('#current-team').text(data.team);
+ }
+ if (jump > flight_path_l) {
+ $.post('/walk', { n: data.n, name: data.name, step: 0, team: data.team });
+ } else {
+ play_move(jump, data.team);
+ }
+ }
+ }); // last id is zero, so getting backlog
+
+ // If we have accelerometer, play the game
+ if (window.DeviceMotionEvent != undefined) {
+
+ // Enter the game
+/* $.post("/enter", { name: name }, null, "json" ).success(function(data) {
+ $.each(data.walkers, function(idx, name) {
+ enter(name);
+ });
+ name = data.name;
+ enter(name, { check: true, me: true });
+ });
+
+ // Leave the game
+ window.onbeforeunload = function() {
+ $.post("/leave", { name: name });
+ };
+*/
+ // Compute acceleration or simulate it
+ var accel_norm = function(e) {
+
+ // has_accel = (window.DeviceMotionEvent != undefined && e != undefined && e.type == 'devicemotion' && e.acceleration.x != null);
+ var norm;
+
+ if (!has_accel) {
+// console.log("This device does not support DeviceMotionEvent");
+ var min = 5, max = 15;
+ norm = Math.floor(Math.random()*(max-min+1)+min);
+ } else {
+ var ax, ay, az;
+ ax = e.accelerationIncludingGravity.x;
+ ay = e.accelerationIncludingGravity.y;
+ az = e.accelerationIncludingGravity.z;
+
+ accel = detect_footstep(ax, ay, az);
+
+ norm = Math.sqrt(ax * ax + ay * ay + az * az);
+ }
+ $('#accel-n').text(safe(norm));
+// console.log("accel-n " + norm);
+ return norm;
+ }
+
+ // Detect footsteps with a Kalman filter
+ var detect_footstep = function(ax, ay, az) {
+
+ var acc = {
+ x: ax,
+ y: ay,
+ z: az
+ };
+ var cnt = 0;
+
+ var x_0 = $V([acc.x, acc.y, acc.z]); // vector. Initial accelerometer values
+
+ // P prior knowledge of state
+ var P_0 = $M([
+ [1,0,0],
+ [0,1,0],
+ [0,0,1]
+ ]); // identity matrix. Initial covariance. Set to 1
+ var F_k = $M([
+ [1,0,0],
+ [0,1,0],
+ [0,0,1]
+ ]); // identity matrix. How change to model is applied. Set to 1
+ var Q_k = $M([
+ [0,0,0],
+ [0,0,0],
+ [0,0,0]
+ ]); // empty matrix. Noise in system is zero
+
+ var KM = new KalmanModel(x_0,P_0,F_k,Q_k);
+
+ var z_k = $V([acc.x, acc.y, acc.z]); // Updated accelerometer values
+ var H_k = $M([
+ [1,0,0],
+ [0,1,0],
+ [0,0,1]
+ ]); // identity matrix. Describes relationship between model and observation
+ var R_k = $M([
+ [2,0,0],
+ [0,2,0],
+ [0,0,2]
+ ]); // 2x Scalar matrix. Describes noise from sensor. Set to 2 to begin
+
+ var KO = new KalmanObservation(z_k,H_k,R_k);
+
+ // each 1/10th second take new reading from accelerometer to update
+ var getNewPos = window.setInterval(function() {
+ KO.z_k = $V([acc.x, acc.y, acc.z]); //vector to be new reading from x, y, z
+ KM.update(KO);
+
+ accel = { x: KM.x_k.elements[0], y: KM.x_k.elements[1], z: KM.x_k.elements[2], n: accel.n };
+ accel.n = Math.sqrt(accel.x * accel.x + accel.y * accel.y + accel.z * accel.z);
+ $('#accel-n-kalman').text(accel.n);
+ }, 100);
+
+ return accel;
+ };
+
+ // If we can use the accelerometer, use it...
+ window.ondevicemotion = function(e) {
+// console.log('ondevicemotion');
+ has_accel = (window.DeviceMotionEvent != undefined && e != undefined && e.type == 'devicemotion' && e.acceleration.x != null);
+ if (has_accel) {
+// console.log('has_accel');
+ $('#accel-support').text("with accelerometer support");
+ walk(e);
+ } else {
+ $('#accel-support').text('with simulated accelerometer');
+ setInterval(walk, 100);
+ }
+ }
+ // ... otherwise simulate it
+// if (!has_accel) {
+// $('#accel-support').text('with simulated accelerometer');
+// setInterval(walk, 100);
+// }
+
+ // Count steps (ballpark figure)
+ var walk = function(e) {
+ var val = accel_norm(e);
+// console.log('walk setting val to ' + safe(val));
+ if (has_accel) {
+ // Use Kalman filter
+ val = accel.n;
+// console.log('walk setting val to ' + safe(val) + ' (K)');
+ }
+// console.log("walk " + (has_accel?'ACCEL ':'NOCEL ') + val);
+ // Avoid noise
+ if (val < MIN_N || val > MAX_N) {
+// console.log('walk NOISE');
+ return;
+ }
+ // Take step frequency into account
+ if (($.now() - last_step) > 400) {
+ n_steps += 1;
+ $.post('/walk', { n: val, name: name, step: n_steps, team: $('#team').text() });
+ last_step = $.now();
+ }
+ };
+ } // DeviceMotionEvent
+ }); // DOM Ready
+}); // Anonymous function
+
diff --git a/assets/js/snap.svg-min.js b/assets/js/snap.svg-min.js
new file mode 100644
index 0000000..6567d19
--- /dev/null
+++ b/assets/js/snap.svg-min.js
@@ -0,0 +1,21 @@
+// Snap.svg 0.4.1
+//
+// Copyright (c) 2013 – 2015 Adobe Systems Incorporated. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// build: 2015-04-13
+
+!function(a){var b,c,d="0.4.2",e="hasOwnProperty",f=/[\.\/]/,g=/\s*,\s*/,h="*",i=function(a,b){return a-b},j={n:{}},k=function(){for(var a=0,b=this.length;b>a;a++)if("undefined"!=typeof this[a])return this[a]},l=function(){for(var a=this.length;--a;)if("undefined"!=typeof this[a])return this[a]},m=function(a,d){a=String(a);var e,f=c,g=Array.prototype.slice.call(arguments,2),h=m.listeners(a),j=0,n=[],o={},p=[],q=b;p.firstDefined=k,p.lastDefined=l,b=a,c=0;for(var r=0,s=h.length;s>r;r++)"zIndex"in h[r]&&(n.push(h[r].zIndex),h[r].zIndex<0&&(o[h[r].zIndex]=h[r]));for(n.sort(i);n[j]<0;)if(e=o[n[j++]],p.push(e.apply(d,g)),c)return c=f,p;for(r=0;s>r;r++)if(e=h[r],"zIndex"in e)if(e.zIndex==n[j]){if(p.push(e.apply(d,g)),c)break;do if(j++,e=o[n[j]],e&&p.push(e.apply(d,g)),c)break;while(e)}else o[e.zIndex]=e;else if(p.push(e.apply(d,g)),c)break;return c=f,b=q,p};m._events=j,m.listeners=function(a){var b,c,d,e,g,i,k,l,m=a.split(f),n=j,o=[n],p=[];for(e=0,g=m.length;g>e;e++){for(l=[],i=0,k=o.length;k>i;i++)for(n=o[i].n,c=[n[m[e]],n[h]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},m.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(g),d=0,e=c.length;e>d;d++)!function(a){for(var c,d=a.split(f),e=j,g=0,h=d.length;h>g;g++)e=e.n,e=e.hasOwnProperty(d[g])&&e[d[g]]||(e[d[g]]={n:{}});for(e.f=e.f||[],g=0,h=e.f.length;h>g;g++)if(e.f[g]==b){c=!0;break}!c&&e.f.push(b)}(c[d]);return function(a){+a==+a&&(b.zIndex=+a)}},m.f=function(a){var b=[].slice.call(arguments,1);return function(){m.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},m.stop=function(){c=1},m.nt=function(a){return a?new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)").test(b):b},m.nts=function(){return b.split(f)},m.off=m.unbind=function(a,b){if(!a)return void(m._events=j={n:{}});var c=a.split(g);if(c.length>1)for(var d=0,i=c.length;i>d;d++)m.off(c[d],b);else{c=a.split(f);var k,l,n,d,i,o,p,q=[j];for(d=0,i=c.length;i>d;d++)for(o=0;o<q.length;o+=n.length-2){if(n=[o,1],k=q[o].n,c[d]!=h)k[c[d]]&&n.push(k[c[d]]);else for(l in k)k[e](l)&&n.push(k[l]);q.splice.apply(q,n)}for(d=0,i=q.length;i>d;d++)for(k=q[d];k.n;){if(b){if(k.f){for(o=0,p=k.f.length;p>o;o++)if(k.f[o]==b){k.f.splice(o,1);break}!k.f.length&&delete k.f}for(l in k.n)if(k.n[e](l)&&k.n[l].f){var r=k.n[l].f;for(o=0,p=r.length;p>o;o++)if(r[o]==b){r.splice(o,1);break}!r.length&&delete k.n[l].f}}else{delete k.f;for(l in k.n)k.n[e](l)&&k.n[l].f&&delete k.n[l].f}k=k.n}}},m.once=function(a,b){var c=function(){return m.unbind(a,c),b.apply(this,arguments)};return m.on(a,c)},m.version=d,m.toString=function(){return"You are running Eve "+d},"undefined"!=typeof module&&module.exports?module.exports=m:"function"==typeof define&&define.amd?define("eve",[],function(){return m}):a.eve=m}(this),function(a,b){if("function"==typeof define&&define.amd)define(["eve"],function(c){return b(a,c)});else if("undefined"!=typeof exports){var c=require("eve");module.exports=b(a,c)}else b(a,a.eve)}(window||this,function(a,b){var c=function(b){var c={},d=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(a){setTimeout(a,16)},e=Array.isArray||function(a){return a instanceof Array||"[object Array]"==Object.prototype.toString.call(a)},f=0,g="M"+(+new Date).toString(36),h=function(){return g+(f++).toString(36)},i=Date.now||function(){return+new Date},j=function(a){var b=this;if(null==a)return b.s;var c=b.s-a;b.b+=b.dur*c,b.B+=b.dur*c,b.s=a},k=function(a){var b=this;return null==a?b.spd:void(b.spd=a)},l=function(a){var b=this;return null==a?b.dur:(b.s=b.s*a/b.dur,void(b.dur=a))},m=function(){var a=this;delete c[a.id],a.update(),b("mina.stop."+a.id,a)},n=function(){var a=this;a.pdif||(delete c[a.id],a.update(),a.pdif=a.get()-a.b)},o=function(){var a=this;a.pdif&&(a.b=a.get()-a.pdif,delete a.pdif,c[a.id]=a)},p=function(){var a,b=this;if(e(b.start)){a=[];for(var c=0,d=b.start.length;d>c;c++)a[c]=+b.start[c]+(b.end[c]-b.start[c])*b.easing(b.s)}else a=+b.start+(b.end-b.start)*b.easing(b.s);b.set(a)},q=function(){var a=0;for(var e in c)if(c.hasOwnProperty(e)){var f=c[e],g=f.get();a++,f.s=(g-f.b)/(f.dur/f.spd),f.s>=1&&(delete c[e],f.s=1,a--,function(a){setTimeout(function(){b("mina.finish."+a.id,a)})}(f)),f.update()}a&&d(q)},r=function(a,b,e,f,g,i,s){var t={id:h(),start:a,end:b,b:e,s:0,dur:f-e,spd:1,get:g,set:i,easing:s||r.linear,status:j,speed:k,duration:l,stop:m,pause:n,resume:o,update:p};c[t.id]=t;var u,v=0;for(u in c)if(c.hasOwnProperty(u)&&(v++,2==v))break;return 1==v&&d(q),t};return r.time=i,r.getById=function(a){return c[a]||null},r.linear=function(a){return a},r.easeout=function(a){return Math.pow(a,1.7)},r.easein=function(a){return Math.pow(a,.48)},r.easeinout=function(a){if(1==a)return 1;if(0==a)return 0;var b=.48-a/1.04,c=Math.sqrt(.1734+b*b),d=c-b,e=Math.pow(Math.abs(d),1/3)*(0>d?-1:1),f=-c-b,g=Math.pow(Math.abs(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},r.backin=function(a){if(1==a)return 1;var b=1.70158;return a*a*((b+1)*a-b)},r.backout=function(a){if(0==a)return 0;a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},r.elastic=function(a){return a==!!a?a:Math.pow(2,-10*a)*Math.sin(2*(a-.075)*Math.PI/.3)+1},r.bounce=function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b},a.mina=r,r}("undefined"==typeof b?function(){}:b),d=function(a){function c(a,b){if(a){if(a.nodeType)return w(a);if(e(a,"array")&&c.set)return c.set.apply(c,a);if(a instanceof s)return a;if(null==b)return a=y.doc.querySelector(String(a)),w(a)}return a=null==a?"100%":a,b=null==b?"100%":b,new v(a,b)}function d(a,b){if(b){if("#text"==a&&(a=y.doc.createTextNode(b.text||b["#text"]||"")),"#comment"==a&&(a=y.doc.createComment(b.text||b["#text"]||"")),"string"==typeof a&&(a=d(a)),"string"==typeof b)return 1==a.nodeType?"xlink:"==b.substring(0,6)?a.getAttributeNS(T,b.substring(6)):"xml:"==b.substring(0,4)?a.getAttributeNS(U,b.substring(4)):a.getAttribute(b):"text"==b?a.nodeValue:null;if(1==a.nodeType){for(var c in b)if(b[z](c)){var e=A(b[c]);e?"xlink:"==c.substring(0,6)?a.setAttributeNS(T,c.substring(6),e):"xml:"==c.substring(0,4)?a.setAttributeNS(U,c.substring(4),e):a.setAttribute(c,e):a.removeAttribute(c)}}else"text"in b&&(a.nodeValue=b.text)}else a=y.doc.createElementNS(U,a);return a}function e(a,b){return b=A.prototype.toLowerCase.call(b),"finite"==b?isFinite(a):"array"==b&&(a instanceof Array||Array.isArray&&Array.isArray(a))?!0:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||J.call(a).slice(8,-1).toLowerCase()==b}function f(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[z](c)&&(b[c]=f(a[c]));return b}function h(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function i(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("␀"),g=d.cache=d.cache||{},i=d.count=d.count||[];return g[z](f)?(h(i,f),c?c(g[f]):g[f]):(i.length>=1e3&&delete g[i.shift()],i.push(f),g[f]=a.apply(b,e),c?c(g[f]):g[f])}return d}function j(a,b,c,d,e,f){if(null==e){var g=a-c,h=b-d;return g||h?(180+180*D.atan2(-h,-g)/H+360)%360:0}return j(a,b,e,f)-j(c,d,e,f)}function k(a){return a%360*H/180}function l(a){return 180*a/H%360}function m(a){var b=[];return a=a.replace(/(?:^|\s)(\w+)\(([^)]+)\)/g,function(a,c,d){return d=d.split(/\s*,\s*|\s+/),"rotate"==c&&1==d.length&&d.push(0,0),"scale"==c&&(d.length>2?d=d.slice(0,2):2==d.length&&d.push(0,0),1==d.length&&d.push(d[0],0,0)),b.push("skewX"==c?["m",1,0,D.tan(k(d[0])),1,0,0]:"skewY"==c?["m",1,D.tan(k(d[0])),0,1,0,0]:[c.charAt(0)].concat(d)),a}),b}function n(a,b){var d=ab(a),e=new c.Matrix;if(d)for(var f=0,g=d.length;g>f;f++){var h,i,j,k,l,m=d[f],n=m.length,o=A(m[0]).toLowerCase(),p=m[0]!=o,q=p?e.invert():0;"t"==o&&2==n?e.translate(m[1],0):"t"==o&&3==n?p?(h=q.x(0,0),i=q.y(0,0),j=q.x(m[1],m[2]),k=q.y(m[1],m[2]),e.translate(j-h,k-i)):e.translate(m[1],m[2]):"r"==o?2==n?(l=l||b,e.rotate(m[1],l.x+l.width/2,l.y+l.height/2)):4==n&&(p?(j=q.x(m[2],m[3]),k=q.y(m[2],m[3]),e.rotate(m[1],j,k)):e.rotate(m[1],m[2],m[3])):"s"==o?2==n||3==n?(l=l||b,e.scale(m[1],m[n-1],l.x+l.width/2,l.y+l.height/2)):4==n?p?(j=q.x(m[2],m[3]),k=q.y(m[2],m[3]),e.scale(m[1],m[1],j,k)):e.scale(m[1],m[1],m[2],m[3]):5==n&&(p?(j=q.x(m[3],m[4]),k=q.y(m[3],m[4]),e.scale(m[1],m[2],j,k)):e.scale(m[1],m[2],m[3],m[4])):"m"==o&&7==n&&e.add(m[1],m[2],m[3],m[4],m[5],m[6])}return e}function o(a){var b=a.node.ownerSVGElement&&w(a.node.ownerSVGElement)||a.node.parentNode&&w(a.node.parentNode)||c.select("svg")||c(0,0),d=b.select("defs"),e=null==d?!1:d.node;return e||(e=u("defs",b.node).node),e}function p(a){return a.node.ownerSVGElement&&w(a.node.ownerSVGElement)||c.select("svg")}function q(a,b,c){function e(a){if(null==a)return I;if(a==+a)return a;d(j,{width:a});try{return j.getBBox().width}catch(b){return 0}}function f(a){if(null==a)return I;if(a==+a)return a;d(j,{height:a});try{return j.getBBox().height}catch(b){return 0}}function g(d,e){null==b?i[d]=e(a.attr(d)||0):d==b&&(i=e(null==c?a.attr(d)||0:c))}var h=p(a).node,i={},j=h.querySelector(".svg---mgr");switch(j||(j=d("rect"),d(j,{x:-9e9,y:-9e9,width:10,height:10,"class":"svg---mgr",fill:"none"}),h.appendChild(j)),a.type){case"rect":g("rx",e),g("ry",f);case"image":g("width",e),g("height",f);case"text":g("x",e),g("y",f);break;case"circle":g("cx",e),g("cy",f),g("r",e);break;case"ellipse":g("cx",e),g("cy",f),g("rx",e),g("ry",f);break;case"line":g("x1",e),g("x2",e),g("y1",f),g("y2",f);break;case"marker":g("refX",e),g("markerWidth",e),g("refY",f),g("markerHeight",f);break;case"radialGradient":g("fx",e),g("fy",f);break;case"tspan":g("dx",e),g("dy",f);break;default:g(b,e)}return h.removeChild(j),i}function r(a){e(a,"array")||(a=Array.prototype.slice.call(arguments,0));for(var b=0,c=0,d=this.node;this[b];)delete this[b++];for(b=0;b<a.length;b++)"set"==a[b].type?a[b].forEach(function(a){d.appendChild(a.node)}):d.appendChild(a[b].node);var f=d.childNodes;for(b=0;b<f.length;b++)this[c++]=w(f[b]);return this}function s(a){if(a.snap in V)return V[a.snap];var b;try{b=a.ownerSVGElement}catch(c){}this.node=a,b&&(this.paper=new v(b)),this.type=a.tagName||a.nodeName;var d=this.id=S(this);if(this.anims={},this._={transform:[]},a.snap=d,V[d]=this,"g"==this.type&&(this.add=r),this.type in{g:1,mask:1,pattern:1,symbol:1})for(var e in v.prototype)v.prototype[z](e)&&(this[e]=v.prototype[e])}function t(a){this.node=a}function u(a,b){var c=d(a);b.appendChild(c);var e=w(c);return e}function v(a,b){var c,e,f,g=v.prototype;if(a&&"svg"==a.tagName){if(a.snap in V)return V[a.snap];var h=a.ownerDocument;c=new s(a),e=a.getElementsByTagName("desc")[0],f=a.getElementsByTagName("defs")[0],e||(e=d("desc"),e.appendChild(h.createTextNode("Created with Snap")),c.node.appendChild(e)),f||(f=d("defs"),c.node.appendChild(f)),c.defs=f;for(var i in g)g[z](i)&&(c[i]=g[i]);c.paper=c.root=c}else c=u("svg",y.doc.body),d(c.node,{height:b,version:1.1,width:a,xmlns:U});return c}function w(a){return a?a instanceof s||a instanceof t?a:a.tagName&&"svg"==a.tagName.toLowerCase()?new v(a):a.tagName&&"object"==a.tagName.toLowerCase()&&"image/svg+xml"==a.type?new v(a.contentDocument.getElementsByTagName("svg")[0]):new s(a):a}function x(a,b){for(var c=0,d=a.length;d>c;c++){var e={type:a[c].type,attr:a[c].attr()},f=a[c].children();b.push(e),f.length&&x(f,e.childNodes=[])}}c.version="0.4.0",c.toString=function(){return"Snap v"+this.version},c._={};var y={win:a.window,doc:a.window.document};c._.glob=y;{var z="hasOwnProperty",A=String,B=parseFloat,C=parseInt,D=Math,E=D.max,F=D.min,G=D.abs,H=(D.pow,D.PI),I=(D.round,""),J=Object.prototype.toString,K=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\))\s*$/i,L=(c._.separator=/[,\s]+/,/[\s]*,[\s]*/),M={hs:1,rg:1},N=/([a-z])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?[\s]*)+)/gi,O=/([rstm])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?[\s]*)+)/gi,P=/(-?\d*\.?\d*(?:e[\-+]?\\d+)?)[\s]*,?[\s]*/gi,Q=0,R="S"+(+new Date).toString(36),S=function(a){return(a&&a.type?a.type:I)+R+(Q++).toString(36)},T="http://www.w3.org/1999/xlink",U="http://www.w3.org/2000/svg",V={};c.url=function(a){return"url('#"+a+"')"}}c._.$=d,c._.id=S,c.format=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return A(b).replace(a,function(a,b){return c(a,b,d)})}}(),c._.clone=f,c._.cacher=i,c.rad=k,c.deg=l,c.sin=function(a){return D.sin(c.rad(a))},c.tan=function(a){return D.tan(c.rad(a))},c.cos=function(a){return D.cos(c.rad(a))},c.asin=function(a){return c.deg(D.asin(a))},c.acos=function(a){return c.deg(D.acos(a))},c.atan=function(a){return c.deg(D.atan(a))},c.atan2=function(a){return c.deg(D.atan2(a))},c.angle=j,c.len=function(a,b,d,e){return Math.sqrt(c.len2(a,b,d,e))},c.len2=function(a,b,c,d){return(a-c)*(a-c)+(b-d)*(b-d)},c.closestPoint=function(a,b,c){function d(a){var d=a.x-b,e=a.y-c;return d*d+e*e}for(var e,f,g,h,i=a.node,j=i.getTotalLength(),k=j/i.pathSegList.numberOfItems*.125,l=1/0,m=0;j>=m;m+=k)(h=d(g=i.getPointAtLength(m)))<l&&(e=g,f=m,l=h);for(k*=.5;k>.5;){var n,o,p,q,r,s;(p=f-k)>=0&&(r=d(n=i.getPointAtLength(p)))<l?(e=n,f=p,l=r):(q=f+k)<=j&&(s=d(o=i.getPointAtLength(q)))<l?(e=o,f=q,l=s):k*=.5}return e={x:e.x,y:e.y,length:f,distance:Math.sqrt(l)}},c.is=e,c.snapTo=function(a,b,c){if(c=e(c,"finite")?c:10,e(a,"array")){for(var d=a.length;d--;)if(G(a[d]-b)<=c)return a[d]}else{a=+a;var f=b%a;if(c>f)return b-f;if(f>a-c)return b-f+a}return b},c.getRGB=i(function(a){if(!a||(a=A(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Z};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:Z};if(!(M[z](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=W(a)),!a)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Z};var b,d,f,g,h,i,j=a.match(K);return j?(j[2]&&(f=C(j[2].substring(5),16),d=C(j[2].substring(3,5),16),b=C(j[2].substring(1,3),16)),j[3]&&(f=C((h=j[3].charAt(3))+h,16),d=C((h=j[3].charAt(2))+h,16),b=C((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4].split(L),b=B(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=B(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),f=B(i[2]),"%"==i[2].slice(-1)&&(f*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(g=B(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100)),j[5]?(i=j[5].split(L),b=B(i[0]),"%"==i[0].slice(-1)&&(b/=100),d=B(i[1]),"%"==i[1].slice(-1)&&(d/=100),f=B(i[2]),"%"==i[2].slice(-1)&&(f/=100),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(g=B(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),c.hsb2rgb(b,d,f,g)):j[6]?(i=j[6].split(L),b=B(i[0]),"%"==i[0].slice(-1)&&(b/=100),d=B(i[1]),"%"==i[1].slice(-1)&&(d/=100),f=B(i[2]),"%"==i[2].slice(-1)&&(f/=100),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(g=B(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),c.hsl2rgb(b,d,f,g)):(b=F(D.round(b),255),d=F(D.round(d),255),f=F(D.round(f),255),g=F(E(g,0),1),j={r:b,g:d,b:f,toString:Z},j.hex="#"+(16777216|f|d<<8|b<<16).toString(16).slice(1),j.opacity=e(g,"finite")?g:1,j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Z}},c),c.hsb=i(function(a,b,d){return c.hsb2rgb(a,b,d).hex}),c.hsl=i(function(a,b,d){return c.hsl2rgb(a,b,d).hex}),c.rgb=i(function(a,b,c,d){if(e(d,"finite")){var f=D.round;return"rgba("+[f(a),f(b),f(c),+d.toFixed(2)]+")"}return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)});var W=function(a){var b=y.doc.getElementsByTagName("head")[0]||y.doc.getElementsByTagName("svg")[0],c="rgb(255, 0, 0)";return(W=i(function(a){if("red"==a.toLowerCase())return c;b.style.color=c,b.style.color=a;var d=y.doc.defaultView.getComputedStyle(b,I).getPropertyValue("color");return d==c?null:d}))(a)},X=function(){return"hsb("+[this.h,this.s,this.b]+")"},Y=function(){return"hsl("+[this.h,this.s,this.l]+")"},Z=function(){return 1==this.opacity||null==this.opacity?this.hex:"rgba("+[this.r,this.g,this.b,this.opacity]+")"},$=function(a,b,d){if(null==b&&e(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,b=a.g,a=a.r),null==b&&e(a,string)){var f=c.getRGB(a);a=f.r,b=f.g,d=f.b}return(a>1||b>1||d>1)&&(a/=255,b/=255,d/=255),[a,b,d]},_=function(a,b,d,f){a=D.round(255*a),b=D.round(255*b),d=D.round(255*d);var g={r:a,g:b,b:d,opacity:e(f,"finite")?f:1,hex:c.rgb(a,b,d),toString:Z};return e(f,"finite")&&(g.opacity=f),g};c.color=function(a){var b;return e(a,"object")&&"h"in a&&"s"in a&&"b"in a?(b=c.hsb2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.opacity=1,a.hex=b.hex):e(a,"object")&&"h"in a&&"s"in a&&"l"in a?(b=c.hsl2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.opacity=1,a.hex=b.hex):(e(a,"string")&&(a=c.getRGB(a)),e(a,"object")&&"r"in a&&"g"in a&&"b"in a&&!("error"in a)?(b=c.rgb2hsl(a),a.h=b.h,a.s=b.s,a.l=b.l,b=c.rgb2hsb(a),a.v=b.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1,a.error=1)),a.toString=Z,a},c.hsb2rgb=function(a,b,c,d){e(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,d=a.o,a=a.h),a*=360;var f,g,h,i,j;return a=a%360/60,j=c*b,i=j*(1-G(a%2-1)),f=g=h=c-j,a=~~a,f+=[j,i,0,0,i,j][a],g+=[i,j,j,i,0,0][a],h+=[0,0,i,j,j,i][a],_(f,g,h,d)},c.hsl2rgb=function(a,b,c,d){e(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var f,g,h,i,j;return a=a%360/60,j=2*b*(.5>c?c:1-c),i=j*(1-G(a%2-1)),f=g=h=c-j/2,a=~~a,f+=[j,i,0,0,i,j][a],g+=[i,j,j,i,0,0][a],h+=[0,0,i,j,j,i][a],_(f,g,h,d)},c.rgb2hsb=function(a,b,c){c=$(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=E(a,b,c),g=f-F(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:X}},c.rgb2hsl=function(a,b,c){c=$(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=E(a,b,c),h=F(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:Y}},c.parsePathString=function(a){if(!a)return null;var b=c.path(a);if(b.arr)return c.path.clone(b.arr);var d={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},f=[];return e(a,"array")&&e(a[0],"array")&&(f=c.path.clone(a)),f.length||A(a).replace(N,function(a,b,c){var e=[],g=b.toLowerCase();if(c.replace(P,function(a,b){b&&e.push(+b)}),"m"==g&&e.length>2&&(f.push([b].concat(e.splice(0,2))),g="l",b="m"==b?"l":"L"),"o"==g&&1==e.length&&f.push([b,e[0]]),"r"==g)f.push([b].concat(e));else for(;e.length>=d[g]&&(f.push([b].concat(e.splice(0,d[g]))),d[g]););}),f.toString=c.path.toString,b.arr=c.path.clone(f),f};var ab=c.parseTransformString=function(a){if(!a)return null;var b=[];return e(a,"array")&&e(a[0],"array")&&(b=c.path.clone(a)),b.length||A(a).replace(O,function(a,c,d){{var e=[];c.toLowerCase()}d.replace(P,function(a,b){b&&e.push(+b)}),b.push([c].concat(e))}),b.toString=c.path.toString,b};c._.svgTransform2string=m,c._.rgTransform=/^[a-z][\s]*-?\.?\d/i,c._.transform2matrix=n,c._unit2px=q;y.doc.contains||y.doc.compareDocumentPosition?function(a,b){var c=9==a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a==d||!(!d||1!=d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b;)if(b=b.parentNode,b==a)return!0;return!1};c._.getSomeDefs=o,c._.getSomeSVG=p,c.select=function(a){return a=A(a).replace(/([^\\]):/g,"$1\\:"),w(y.doc.querySelector(a))},c.selectAll=function(a){for(var b=y.doc.querySelectorAll(a),d=(c.set||Array)(),e=0;e<b.length;e++)d.push(w(b[e]));return d},setInterval(function(){for(var a in V)if(V[z](a)){var b=V[a],c=b.node;("svg"!=b.type&&!c.ownerSVGElement||"svg"==b.type&&(!c.parentNode||"ownerSVGElement"in c.parentNode&&!c.ownerSVGElement))&&delete V[a]}},1e4),s.prototype.attr=function(a,c){var d=this,f=d.node;if(!a){if(1!=f.nodeType)return{text:f.nodeValue};for(var g=f.attributes,h={},i=0,j=g.length;j>i;i++)h[g[i].nodeName]=g[i].nodeValue;return h}if(e(a,"string")){if(!(arguments.length>1))return b("snap.util.getattr."+a,d).firstDefined();var k={};k[a]=c,a=k}for(var l in a)a[z](l)&&b("snap.util.attr."+l,d,a[l]);return d},c.parse=function(a){var b=y.doc.createDocumentFragment(),c=!0,d=y.doc.createElement("div");if(a=A(a),a.match(/^\s*<\s*svg(?:\s|>)/)||(a="<svg>"+a+"</svg>",c=!1),d.innerHTML=a,a=d.getElementsByTagName("svg")[0])if(c)b=a;else for(;a.firstChild;)b.appendChild(a.firstChild);return new t(b)},c.fragment=function(){for(var a=Array.prototype.slice.call(arguments,0),b=y.doc.createDocumentFragment(),d=0,e=a.length;e>d;d++){var f=a[d];f.node&&f.node.nodeType&&b.appendChild(f.node),f.nodeType&&b.appendChild(f),"string"==typeof f&&b.appendChild(c.parse(f).node)}return new t(b)},c._.make=u,c._.wrap=w,v.prototype.el=function(a,b){var c=u(a,this.node);return b&&c.attr(b),c},s.prototype.children=function(){for(var a=[],b=this.node.childNodes,d=0,e=b.length;e>d;d++)a[d]=c(b[d]);return a},s.prototype.toJSON=function(){var a=[];return x([this],a),a[0]},b.on("snap.util.getattr",function(){var a=b.nt();a=a.substring(a.lastIndexOf(".")+1);var c=a.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()});return bb[z](c)?this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(c):d(this.node,a)});var bb={"alignment-baseline":0,"baseline-shift":0,clip:0,"clip-path":0,"clip-rule":0,color:0,"color-interpolation":0,"color-interpolation-filters":0,"color-profile":0,"color-rendering":0,cursor:0,direction:0,display:0,"dominant-baseline":0,"enable-background":0,fill:0,"fill-opacity":0,"fill-rule":0,filter:0,"flood-color":0,"flood-opacity":0,font:0,"font-family":0,"font-size":0,"font-size-adjust":0,"font-stretch":0,"font-style":0,"font-variant":0,"font-weight":0,"glyph-orientation-horizontal":0,"glyph-orientation-vertical":0,"image-rendering":0,kerning:0,"letter-spacing":0,"lighting-color":0,marker:0,"marker-end":0,"marker-mid":0,"marker-start":0,mask:0,opacity:0,overflow:0,"pointer-events":0,"shape-rendering":0,"stop-color":0,"stop-opacity":0,stroke:0,"stroke-dasharray":0,"stroke-dashoffset":0,"stroke-linecap":0,"stroke-linejoin":0,"stroke-miterlimit":0,"stroke-opacity":0,"stroke-width":0,"text-anchor":0,"text-decoration":0,"text-rendering":0,"unicode-bidi":0,visibility:0,"word-spacing":0,"writing-mode":0};b.on("snap.util.attr",function(a){var c=b.nt(),e={};c=c.substring(c.lastIndexOf(".")+1),e[c]=a;var f=c.replace(/-(\w)/gi,function(a,b){return b.toUpperCase()}),g=c.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()});bb[z](g)?this.node.style[f]=null==a?I:a:d(this.node,e)}),function(){}(v.prototype),c.ajax=function(a,c,d,f){var g=new XMLHttpRequest,h=S();if(g){if(e(c,"function"))f=d,d=c,c=null;else if(e(c,"object")){var i=[];for(var j in c)c.hasOwnProperty(j)&&i.push(encodeURIComponent(j)+"="+encodeURIComponent(c[j]));c=i.join("&")}return g.open(c?"POST":"GET",a,!0),c&&(g.setRequestHeader("X-Requested-With","XMLHttpRequest"),g.setRequestHeader("Content-type","application/x-www-form-urlencoded")),d&&(b.once("snap.ajax."+h+".0",d),b.once("snap.ajax."+h+".200",d),b.once("snap.ajax."+h+".304",d)),g.onreadystatechange=function(){4==g.readyState&&b("snap.ajax."+h+"."+g.status,f,g)},4==g.readyState?g:(g.send(c),g)}},c.load=function(a,b,d){c.ajax(a,function(a){var e=c.parse(a.responseText);d?b.call(d,e):b(e)})};var cb=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,h=e.clientLeft||d.clientLeft||0,i=b.top+(g.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(g.win.pageXOffset||e.scrollLeft||d.scrollLeft)-h;return{y:i,x:j}};return c.getElementByPoint=function(a,b){var c=this,d=(c.canvas,y.doc.elementFromPoint(a,b));if(y.win.opera&&"svg"==d.tagName){var e=cb(d),f=d.createSVGRect();f.x=a-e.x,f.y=b-e.y,f.width=f.height=1;var g=d.getIntersectionList(f,null);g.length&&(d=g[g.length-1])}return d?w(d):null},c.plugin=function(a){a(c,s,v,y,t)},y.win.Snap=c,c}(a||this);return d.plugin(function(d,e,f,g,h){function i(a,b){if(null==b){var c=!0;if(b=a.node.getAttribute("linearGradient"==a.type||"radialGradient"==a.type?"gradientTransform":"pattern"==a.type?"patternTransform":"transform"),!b)return new d.Matrix;b=d._.svgTransform2string(b)}else b=d._.rgTransform.test(b)?o(b).replace(/\.{3}|\u2026/g,a._.transform||""):d._.svgTransform2string(b),n(b,"array")&&(b=d.path?d.path.toString.call(b):o(b)),a._.transform=b;var e=d._.transform2matrix(b,a.getBBox(1));return c?e:void(a.matrix=e)}function j(a){function b(a,b){var c=q(a.node,b);c=c&&c.match(f),c=c&&c[2],c&&"#"==c.charAt()&&(c=c.substring(1),c&&(h[c]=(h[c]||[]).concat(function(c){var d={};d[b]=URL(c),q(a.node,d)})))}function c(a){var b=q(a.node,"xlink:href");b&&"#"==b.charAt()&&(b=b.substring(1),b&&(h[b]=(h[b]||[]).concat(function(b){a.attr("xlink:href","#"+b)})))}for(var d,e=a.selectAll("*"),f=/^\s*url\(("|'|)(.*)\1\)\s*$/,g=[],h={},i=0,j=e.length;j>i;i++){d=e[i],b(d,"fill"),b(d,"stroke"),b(d,"filter"),b(d,"mask"),b(d,"clip-path"),c(d);var k=q(d.node,"id");k&&(q(d.node,{id:d.id}),g.push({old:k,id:d.id}))}for(i=0,j=g.length;j>i;i++){var l=h[g[i].old];if(l)for(var m=0,n=l.length;n>m;m++)l[m](g[i].id)}}function k(a,b,c){return function(d){var e=d.slice(a,b);return 1==e.length&&(e=e[0]),c?c(e):e}}function l(a){return function(){var b=a?"<"+this.type:"",c=this.node.attributes,d=this.node.childNodes;if(a)for(var e=0,f=c.length;f>e;e++)b+=" "+c[e].name+'="'+c[e].value.replace(/"/g,'\\"')+'"';if(d.length){for(a&&(b+=">"),e=0,f=d.length;f>e;e++)3==d[e].nodeType?b+=d[e].nodeValue:1==d[e].nodeType&&(b+=u(d[e]).toString());a&&(b+="</"+this.type+">")}else a&&(b+="/>");return b}}var m=e.prototype,n=d.is,o=String,p=d._unit2px,q=d._.$,r=d._.make,s=d._.getSomeDefs,t="hasOwnProperty",u=d._.wrap;m.getBBox=function(a){if(!d.Matrix||!d.path)return this.node.getBBox();var b=this,c=new d.Matrix;if(b.removed)return d._.box();for(;"use"==b.type;)if(a||(c=c.add(b.transform().localMatrix.translate(b.attr("x")||0,b.attr("y")||0))),b.original)b=b.original;else{var e=b.attr("xlink:href");b=b.original=b.node.ownerDocument.getElementById(e.substring(e.indexOf("#")+1))}var f=b._,g=d.path.get[b.type]||d.path.get.deflt;try{return a?(f.bboxwt=g?d.path.getBBox(b.realPath=g(b)):d._.box(b.node.getBBox()),d._.box(f.bboxwt)):(b.realPath=g(b),b.matrix=b.transform().localMatrix,f.bbox=d.path.getBBox(d.path.map(b.realPath,c.add(b.matrix))),d._.box(f.bbox))}catch(h){return d._.box()}};var v=function(){return this.string};m.transform=function(a){var b=this._;if(null==a){for(var c,e=this,f=new d.Matrix(this.node.getCTM()),g=i(this),h=[g],j=new d.Matrix,k=g.toTransformString(),l=o(g)==o(this.matrix)?o(b.transform):k;"svg"!=e.type&&(e=e.parent());)h.push(i(e));for(c=h.length;c--;)j.add(h[c]);return{string:l,globalMatrix:f,totalMatrix:j,localMatrix:g,diffMatrix:f.clone().add(g.invert()),global:f.toTransformString(),total:j.toTransformString(),local:k,toString:v}}return a instanceof d.Matrix?(this.matrix=a,this._.transform=a.toTransformString()):i(this,a),this.node&&("linearGradient"==this.type||"radialGradient"==this.type?q(this.node,{gradientTransform:this.matrix}):"pattern"==this.type?q(this.node,{patternTransform:this.matrix}):q(this.node,{transform:this.matrix})),this},m.parent=function(){return u(this.node.parentNode)},m.append=m.add=function(a){if(a){if("set"==a.type){var b=this;return a.forEach(function(a){b.add(a)}),this}a=u(a),this.node.appendChild(a.node),a.paper=this.paper}return this},m.appendTo=function(a){return a&&(a=u(a),a.append(this)),this},m.prepend=function(a){if(a){if("set"==a.type){var b,c=this;return a.forEach(function(a){b?b.after(a):c.prepend(a),b=a}),this}a=u(a);var d=a.parent();this.node.insertBefore(a.node,this.node.firstChild),this.add&&this.add(),a.paper=this.paper,this.parent()&&this.parent().add(),d&&d.add()}return this},m.prependTo=function(a){return a=u(a),a.prepend(this),this},m.before=function(a){if("set"==a.type){var b=this;return a.forEach(function(a){var c=a.parent();b.node.parentNode.insertBefore(a.node,b.node),c&&c.add()}),this.parent().add(),this}a=u(a);var c=a.parent();return this.node.parentNode.insertBefore(a.node,this.node),this.parent()&&this.parent().add(),c&&c.add(),a.paper=this.paper,this},m.after=function(a){a=u(a);var b=a.parent();return this.node.nextSibling?this.node.parentNode.insertBefore(a.node,this.node.nextSibling):this.node.parentNode.appendChild(a.node),this.parent()&&this.parent().add(),b&&b.add(),a.paper=this.paper,this},m.insertBefore=function(a){a=u(a);var b=this.parent();return a.node.parentNode.insertBefore(this.node,a.node),this.paper=a.paper,b&&b.add(),a.parent()&&a.parent().add(),this},m.insertAfter=function(a){a=u(a);var b=this.parent();return a.node.parentNode.insertBefore(this.node,a.node.nextSibling),this.paper=a.paper,b&&b.add(),a.parent()&&a.parent().add(),this},m.remove=function(){var a=this.parent();return this.node.parentNode&&this.node.parentNode.removeChild(this.node),delete this.paper,this.removed=!0,a&&a.add(),this},m.select=function(a){return u(this.node.querySelector(a))},m.selectAll=function(a){for(var b=this.node.querySelectorAll(a),c=(d.set||Array)(),e=0;e<b.length;e++)c.push(u(b[e]));return c},m.asPX=function(a,b){return null==b&&(b=this.attr(a)),+p(this,a,b)},m.use=function(){var a,b=this.node.id;return b||(b=this.id,q(this.node,{id:b})),a="linearGradient"==this.type||"radialGradient"==this.type||"pattern"==this.type?r(this.type,this.node.parentNode):r("use",this.node.parentNode),q(a.node,{"xlink:href":"#"+b}),a.original=this,a},m.clone=function(){var a=u(this.node.cloneNode(!0));return q(a.node,"id")&&q(a.node,{id:a.id}),j(a),a.insertAfter(this),a},m.toDefs=function(){var a=s(this);return a.appendChild(this.node),this},m.pattern=m.toPattern=function(a,b,c,d){var e=r("pattern",s(this));return null==a&&(a=this.getBBox()),n(a,"object")&&"x"in a&&(b=a.y,c=a.width,d=a.height,a=a.x),q(e.node,{x:a,y:b,width:c,height:d,patternUnits:"userSpaceOnUse",id:e.id,viewBox:[a,b,c,d].join(" ")}),e.node.appendChild(this.node),e},m.marker=function(a,b,c,d,e,f){var g=r("marker",s(this));return null==a&&(a=this.getBBox()),n(a,"object")&&"x"in a&&(b=a.y,c=a.width,d=a.height,e=a.refX||a.cx,f=a.refY||a.cy,a=a.x),q(g.node,{viewBox:[a,b,c,d].join(" "),markerWidth:c,markerHeight:d,orient:"auto",refX:e||0,refY:f||0,id:g.id}),g.node.appendChild(this.node),g};var w=function(a,b,d,e){"function"!=typeof d||d.length||(e=d,d=c.linear),this.attr=a,this.dur=b,d&&(this.easing=d),e&&(this.callback=e)};d._.Animation=w,d.animation=function(a,b,c,d){return new w(a,b,c,d)},m.inAnim=function(){var a=this,b=[];for(var c in a.anims)a.anims[t](c)&&!function(a){b.push({anim:new w(a._attrs,a.dur,a.easing,a._callback),mina:a,curStatus:a.status(),status:function(b){return a.status(b)},stop:function(){a.stop()}})}(a.anims[c]);return b},d.animate=function(a,d,e,f,g,h){"function"!=typeof g||g.length||(h=g,g=c.linear);var i=c.time(),j=c(a,d,i,i+f,c.time,e,g);return h&&b.once("mina.finish."+j.id,h),j},m.stop=function(){for(var a=this.inAnim(),b=0,c=a.length;c>b;b++)a[b].stop();return this},m.animate=function(a,d,e,f){"function"!=typeof e||e.length||(f=e,e=c.linear),a instanceof w&&(f=a.callback,e=a.easing,d=a.dur,a=a.attr);var g,h,i,j,l=[],m=[],p={},q=this;for(var r in a)if(a[t](r)){q.equal?(j=q.equal(r,o(a[r])),g=j.from,h=j.to,i=j.f):(g=+q.attr(r),h=+a[r]);var s=n(g,"array")?g.length:1;p[r]=k(l.length,l.length+s,i),l=l.concat(g),m=m.concat(h)}var u=c.time(),v=c(l,m,u,u+d,c.time,function(a){var b={};for(var c in p)p[t](c)&&(b[c]=p[c](a));q.attr(b)},e);return q.anims[v.id]=v,v._attrs=a,v._callback=f,b("snap.animcreated."+q.id,v),b.once("mina.finish."+v.id,function(){delete q.anims[v.id],f&&f.call(q)}),b.once("mina.stop."+v.id,function(){delete q.anims[v.id]}),q};var x={};m.data=function(a,c){var e=x[this.id]=x[this.id]||{};if(0==arguments.length)return b("snap.data.get."+this.id,this,e,null),e;
+if(1==arguments.length){if(d.is(a,"object")){for(var f in a)a[t](f)&&this.data(f,a[f]);return this}return b("snap.data.get."+this.id,this,e[a],a),e[a]}return e[a]=c,b("snap.data.set."+this.id,this,c,a),this},m.removeData=function(a){return null==a?x[this.id]={}:x[this.id]&&delete x[this.id][a],this},m.outerSVG=m.toString=l(1),m.innerSVG=l(),m.toDataURL=function(){if(a&&a.btoa){var b=this.getBBox(),c=d.format('<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="{width}" height="{height}" viewBox="{x} {y} {width} {height}">{contents}</svg>',{x:+b.x.toFixed(3),y:+b.y.toFixed(3),width:+b.width.toFixed(3),height:+b.height.toFixed(3),contents:this.outerSVG()});return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(c)))}},h.prototype.select=m.select,h.prototype.selectAll=m.selectAll}),d.plugin(function(a){function b(a,b,d,e,f,g){return null==b&&"[object SVGMatrix]"==c.call(a)?(this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.e=a.e,void(this.f=a.f)):void(null!=a?(this.a=+a,this.b=+b,this.c=+d,this.d=+e,this.e=+f,this.f=+g):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0))}var c=Object.prototype.toString,d=String,e=Math,f="";!function(c){function g(a){return a[0]*a[0]+a[1]*a[1]}function h(a){var b=e.sqrt(g(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}c.add=function(a,c,d,e,f,g){var h,i,j,k,l=[[],[],[]],m=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],n=[[a,d,f],[c,e,g],[0,0,1]];for(a&&a instanceof b&&(n=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),h=0;3>h;h++)for(i=0;3>i;i++){for(k=0,j=0;3>j;j++)k+=m[h][j]*n[j][i];l[h][i]=k}return this.a=l[0][0],this.b=l[1][0],this.c=l[0][1],this.d=l[1][1],this.e=l[0][2],this.f=l[1][2],this},c.invert=function(){var a=this,c=a.a*a.d-a.b*a.c;return new b(a.d/c,-a.b/c,-a.c/c,a.a/c,(a.c*a.f-a.d*a.e)/c,(a.b*a.e-a.a*a.f)/c)},c.clone=function(){return new b(this.a,this.b,this.c,this.d,this.e,this.f)},c.translate=function(a,b){return this.add(1,0,0,1,a,b)},c.scale=function(a,b,c,d){return null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d),this},c.rotate=function(b,c,d){b=a.rad(b),c=c||0,d=d||0;var f=+e.cos(b).toFixed(9),g=+e.sin(b).toFixed(9);return this.add(f,g,-g,f,c,d),this.add(1,0,0,1,-c,-d)},c.x=function(a,b){return a*this.a+b*this.c+this.e},c.y=function(a,b){return a*this.b+b*this.d+this.f},c.get=function(a){return+this[d.fromCharCode(97+a)].toFixed(4)},c.toString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")"},c.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},c.determinant=function(){return this.a*this.d-this.b*this.c},c.split=function(){var b={};b.dx=this.e,b.dy=this.f;var c=[[this.a,this.c],[this.b,this.d]];b.scalex=e.sqrt(g(c[0])),h(c[0]),b.shear=c[0][0]*c[1][0]+c[0][1]*c[1][1],c[1]=[c[1][0]-c[0][0]*b.shear,c[1][1]-c[0][1]*b.shear],b.scaley=e.sqrt(g(c[1])),h(c[1]),b.shear/=b.scaley,this.determinant()<0&&(b.scalex=-b.scalex);var d=-c[0][1],f=c[1][1];return 0>f?(b.rotate=a.deg(e.acos(f)),0>d&&(b.rotate=360-b.rotate)):b.rotate=a.deg(e.asin(d)),b.isSimple=!(+b.shear.toFixed(9)||b.scalex.toFixed(9)!=b.scaley.toFixed(9)&&b.rotate),b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate,b.noRotation=!+b.shear.toFixed(9)&&!b.rotate,b},c.toTransformString=function(a){var b=a||this.split();return+b.shear.toFixed(9)?"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]:(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[+b.dx.toFixed(4),+b.dy.toFixed(4)]:f)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:f)+(b.rotate?"r"+[+b.rotate.toFixed(4),0,0]:f))}}(b.prototype),a.Matrix=b,a.matrix=function(a,c,d,e,f,g){return new b(a,c,d,e,f,g)}}),d.plugin(function(a,c,d,e,f){function g(d){return function(e){if(b.stop(),e instanceof f&&1==e.node.childNodes.length&&("radialGradient"==e.node.firstChild.tagName||"linearGradient"==e.node.firstChild.tagName||"pattern"==e.node.firstChild.tagName)&&(e=e.node.firstChild,n(this).appendChild(e),e=l(e)),e instanceof c)if("radialGradient"==e.type||"linearGradient"==e.type||"pattern"==e.type){e.node.id||p(e.node,{id:e.id});var g=q(e.node.id)}else g=e.attr(d);else if(g=a.color(e),g.error){var h=a(n(this).ownerSVGElement).gradient(e);h?(h.node.id||p(h.node,{id:h.id}),g=q(h.node.id)):g=e}else g=r(g);var i={};i[d]=g,p(this.node,i),this.node.style[d]=t}}function h(a){b.stop(),a==+a&&(a+="px"),this.node.style.fontSize=a}function i(a){for(var b=[],c=a.childNodes,d=0,e=c.length;e>d;d++){var f=c[d];3==f.nodeType&&b.push(f.nodeValue),"tspan"==f.tagName&&b.push(1==f.childNodes.length&&3==f.firstChild.nodeType?f.firstChild.nodeValue:i(f))}return b}function j(){return b.stop(),this.node.style.fontSize}var k=a._.make,l=a._.wrap,m=a.is,n=a._.getSomeDefs,o=/^url\(#?([^)]+)\)$/,p=a._.$,q=a.url,r=String,s=a._.separator,t="";b.on("snap.util.attr.mask",function(a){if(a instanceof c||a instanceof f){if(b.stop(),a instanceof f&&1==a.node.childNodes.length&&(a=a.node.firstChild,n(this).appendChild(a),a=l(a)),"mask"==a.type)var d=a;else d=k("mask",n(this)),d.node.appendChild(a.node);!d.node.id&&p(d.node,{id:d.id}),p(this.node,{mask:q(d.id)})}}),function(a){b.on("snap.util.attr.clip",a),b.on("snap.util.attr.clip-path",a),b.on("snap.util.attr.clipPath",a)}(function(a){if(a instanceof c||a instanceof f){if(b.stop(),"clipPath"==a.type)var d=a;else d=k("clipPath",n(this)),d.node.appendChild(a.node),!d.node.id&&p(d.node,{id:d.id});p(this.node,{"clip-path":q(d.node.id||d.id)})}}),b.on("snap.util.attr.fill",g("fill")),b.on("snap.util.attr.stroke",g("stroke"));var u=/^([lr])(?:\(([^)]*)\))?(.*)$/i;b.on("snap.util.grad.parse",function(a){a=r(a);var b=a.match(u);if(!b)return null;var c=b[1],d=b[2],e=b[3];return d=d.split(/\s*,\s*/).map(function(a){return+a==a?+a:a}),1==d.length&&0==d[0]&&(d=[]),e=e.split("-"),e=e.map(function(a){a=a.split(":");var b={color:a[0]};return a[1]&&(b.offset=parseFloat(a[1])),b}),{type:c,params:d,stops:e}}),b.on("snap.util.attr.d",function(c){b.stop(),m(c,"array")&&m(c[0],"array")&&(c=a.path.toString.call(c)),c=r(c),c.match(/[ruo]/i)&&(c=a.path.toAbsolute(c)),p(this.node,{d:c})})(-1),b.on("snap.util.attr.#text",function(a){b.stop(),a=r(a);for(var c=e.doc.createTextNode(a);this.node.firstChild;)this.node.removeChild(this.node.firstChild);this.node.appendChild(c)})(-1),b.on("snap.util.attr.path",function(a){b.stop(),this.attr({d:a})})(-1),b.on("snap.util.attr.class",function(a){b.stop(),this.node.className.baseVal=a})(-1),b.on("snap.util.attr.viewBox",function(a){var c;c=m(a,"object")&&"x"in a?[a.x,a.y,a.width,a.height].join(" "):m(a,"array")?a.join(" "):a,p(this.node,{viewBox:c}),b.stop()})(-1),b.on("snap.util.attr.transform",function(a){this.transform(a),b.stop()})(-1),b.on("snap.util.attr.r",function(a){"rect"==this.type&&(b.stop(),p(this.node,{rx:a,ry:a}))})(-1),b.on("snap.util.attr.textpath",function(a){if(b.stop(),"text"==this.type){var d,e,f;if(!a&&this.textPath){for(e=this.textPath;e.node.firstChild;)this.node.appendChild(e.node.firstChild);return e.remove(),void delete this.textPath}if(m(a,"string")){var g=n(this),h=l(g.parentNode).path(a);g.appendChild(h.node),d=h.id,h.attr({id:d})}else a=l(a),a instanceof c&&(d=a.attr("id"),d||(d=a.id,a.attr({id:d})));if(d)if(e=this.textPath,f=this.node,e)e.attr({"xlink:href":"#"+d});else{for(e=p("textPath",{"xlink:href":"#"+d});f.firstChild;)e.appendChild(f.firstChild);f.appendChild(e),this.textPath=l(e)}}})(-1),b.on("snap.util.attr.text",function(a){if("text"==this.type){for(var c=this.node,d=function(a){var b=p("tspan");if(m(a,"array"))for(var c=0;c<a.length;c++)b.appendChild(d(a[c]));else b.appendChild(e.doc.createTextNode(a));return b.normalize&&b.normalize(),b};c.firstChild;)c.removeChild(c.firstChild);for(var f=d(a);f.firstChild;)c.appendChild(f.firstChild)}b.stop()})(-1),b.on("snap.util.attr.fontSize",h)(-1),b.on("snap.util.attr.font-size",h)(-1),b.on("snap.util.getattr.transform",function(){return b.stop(),this.transform()})(-1),b.on("snap.util.getattr.textpath",function(){return b.stop(),this.textPath})(-1),function(){function c(c){return function(){b.stop();var d=e.doc.defaultView.getComputedStyle(this.node,null).getPropertyValue("marker-"+c);return"none"==d?d:a(e.doc.getElementById(d.match(o)[1]))}}function d(a){return function(c){b.stop();var d="marker"+a.charAt(0).toUpperCase()+a.substring(1);if(""==c||!c)return void(this.node.style[d]="none");if("marker"==c.type){var e=c.node.id;return e||p(c.node,{id:c.id}),void(this.node.style[d]=q(e))}}}b.on("snap.util.getattr.marker-end",c("end"))(-1),b.on("snap.util.getattr.markerEnd",c("end"))(-1),b.on("snap.util.getattr.marker-start",c("start"))(-1),b.on("snap.util.getattr.markerStart",c("start"))(-1),b.on("snap.util.getattr.marker-mid",c("mid"))(-1),b.on("snap.util.getattr.markerMid",c("mid"))(-1),b.on("snap.util.attr.marker-end",d("end"))(-1),b.on("snap.util.attr.markerEnd",d("end"))(-1),b.on("snap.util.attr.marker-start",d("start"))(-1),b.on("snap.util.attr.markerStart",d("start"))(-1),b.on("snap.util.attr.marker-mid",d("mid"))(-1),b.on("snap.util.attr.markerMid",d("mid"))(-1)}(),b.on("snap.util.getattr.r",function(){return"rect"==this.type&&p(this.node,"rx")==p(this.node,"ry")?(b.stop(),p(this.node,"rx")):void 0})(-1),b.on("snap.util.getattr.text",function(){if("text"==this.type||"tspan"==this.type){b.stop();var a=i(this.node);return 1==a.length?a[0]:a}})(-1),b.on("snap.util.getattr.#text",function(){return this.node.textContent})(-1),b.on("snap.util.getattr.viewBox",function(){b.stop();var c=p(this.node,"viewBox");return c?(c=c.split(s),a._.box(+c[0],+c[1],+c[2],+c[3])):void 0})(-1),b.on("snap.util.getattr.points",function(){var a=p(this.node,"points");return b.stop(),a?a.split(s):void 0})(-1),b.on("snap.util.getattr.path",function(){var a=p(this.node,"d");return b.stop(),a})(-1),b.on("snap.util.getattr.class",function(){return this.node.className.baseVal})(-1),b.on("snap.util.getattr.fontSize",j)(-1),b.on("snap.util.getattr.font-size",j)(-1)}),d.plugin(function(a,b){var c=/\S+/g,d=String,e=b.prototype;e.addClass=function(a){var b,e,f,g,h=d(a||"").match(c)||[],i=this.node,j=i.className.baseVal,k=j.match(c)||[];if(h.length){for(b=0;f=h[b++];)e=k.indexOf(f),~e||k.push(f);g=k.join(" "),j!=g&&(i.className.baseVal=g)}return this},e.removeClass=function(a){var b,e,f,g,h=d(a||"").match(c)||[],i=this.node,j=i.className.baseVal,k=j.match(c)||[];if(k.length){for(b=0;f=h[b++];)e=k.indexOf(f),~e&&k.splice(e,1);g=k.join(" "),j!=g&&(i.className.baseVal=g)}return this},e.hasClass=function(a){var b=this.node,d=b.className.baseVal,e=d.match(c)||[];return!!~e.indexOf(a)},e.toggleClass=function(a,b){if(null!=b)return b?this.addClass(a):this.removeClass(a);var d,e,f,g,h=(a||"").match(c)||[],i=this.node,j=i.className.baseVal,k=j.match(c)||[];for(d=0;f=h[d++];)e=k.indexOf(f),~e?k.splice(e,1):k.push(f);return g=k.join(" "),j!=g&&(i.className.baseVal=g),this}}),d.plugin(function(){function a(a){return a}function c(a){return function(b){return+b.toFixed(3)+a}}var d={"+":function(a,b){return a+b},"-":function(a,b){return a-b},"/":function(a,b){return a/b},"*":function(a,b){return a*b}},e=String,f=/[a-z]+$/i,g=/^\s*([+\-\/*])\s*=\s*([\d.eE+\-]+)\s*([^\d\s]+)?\s*$/;b.on("snap.util.attr",function(a){var c=e(a).match(g);if(c){var h=b.nt(),i=h.substring(h.lastIndexOf(".")+1),j=this.attr(i),k={};b.stop();var l=c[3]||"",m=j.match(f),n=d[c[1]];if(m&&m==l?a=n(parseFloat(j),+c[2]):(j=this.asPX(i),a=n(this.asPX(i),this.asPX(i,c[2]+l))),isNaN(j)||isNaN(a))return;k[i]=a,this.attr(k)}})(-10),b.on("snap.util.equal",function(h,i){var j=e(this.attr(h)||""),k=e(i).match(g);if(k){b.stop();var l=k[3]||"",m=j.match(f),n=d[k[1]];return m&&m==l?{from:parseFloat(j),to:n(parseFloat(j),+k[2]),f:c(m)}:(j=this.asPX(h),{from:j,to:n(j,this.asPX(h,k[2]+l)),f:a})}})(-10)}),d.plugin(function(c,d,e,f){var g=e.prototype,h=c.is;g.rect=function(a,b,c,d,e,f){var g;return null==f&&(f=e),h(a,"object")&&"[object Object]"==a?g=a:null!=a&&(g={x:a,y:b,width:c,height:d},null!=e&&(g.rx=e,g.ry=f)),this.el("rect",g)},g.circle=function(a,b,c){var d;return h(a,"object")&&"[object Object]"==a?d=a:null!=a&&(d={cx:a,cy:b,r:c}),this.el("circle",d)};var i=function(){function a(){this.parentNode.removeChild(this)}return function(b,c){var d=f.doc.createElement("img"),e=f.doc.body;d.style.cssText="position:absolute;left:-9999em;top:-9999em",d.onload=function(){c.call(d),d.onload=d.onerror=null,e.removeChild(d)},d.onerror=a,e.appendChild(d),d.src=b}}();g.image=function(a,b,d,e,f){var g=this.el("image");if(h(a,"object")&&"src"in a)g.attr(a);else if(null!=a){var j={"xlink:href":a,preserveAspectRatio:"none"};null!=b&&null!=d&&(j.x=b,j.y=d),null!=e&&null!=f?(j.width=e,j.height=f):i(a,function(){c._.$(g.node,{width:this.offsetWidth,height:this.offsetHeight})}),c._.$(g.node,j)}return g},g.ellipse=function(a,b,c,d){var e;return h(a,"object")&&"[object Object]"==a?e=a:null!=a&&(e={cx:a,cy:b,rx:c,ry:d}),this.el("ellipse",e)},g.path=function(a){var b;return h(a,"object")&&!h(a,"array")?b=a:a&&(b={d:a}),this.el("path",b)},g.group=g.g=function(a){var b=this.el("g");return 1==arguments.length&&a&&!a.type?b.attr(a):arguments.length&&b.add(Array.prototype.slice.call(arguments,0)),b},g.svg=function(a,b,c,d,e,f,g,i){var j={};return h(a,"object")&&null==b?j=a:(null!=a&&(j.x=a),null!=b&&(j.y=b),null!=c&&(j.width=c),null!=d&&(j.height=d),null!=e&&null!=f&&null!=g&&null!=i&&(j.viewBox=[e,f,g,i])),this.el("svg",j)},g.mask=function(a){var b=this.el("mask");return 1==arguments.length&&a&&!a.type?b.attr(a):arguments.length&&b.add(Array.prototype.slice.call(arguments,0)),b},g.ptrn=function(a,b,c,d,e,f,g,i){if(h(a,"object"))var j=a;else j={patternUnits:"userSpaceOnUse"},a&&(j.x=a),b&&(j.y=b),null!=c&&(j.width=c),null!=d&&(j.height=d),j.viewBox=null!=e&&null!=f&&null!=g&&null!=i?[e,f,g,i]:[a||0,b||0,c||0,d||0];return this.el("pattern",j)},g.use=function(a){return null!=a?(a instanceof d&&(a.attr("id")||a.attr({id:c._.id(a)}),a=a.attr("id")),"#"==String(a).charAt()&&(a=a.substring(1)),this.el("use",{"xlink:href":"#"+a})):d.prototype.use.call(this)},g.symbol=function(a,b,c,d){var e={};return null!=a&&null!=b&&null!=c&&null!=d&&(e.viewBox=[a,b,c,d]),this.el("symbol",e)},g.text=function(a,b,c){var d={};return h(a,"object")?d=a:null!=a&&(d={x:a,y:b,text:c||""}),this.el("text",d)},g.line=function(a,b,c,d){var e={};return h(a,"object")?e=a:null!=a&&(e={x1:a,x2:c,y1:b,y2:d}),this.el("line",e)},g.polyline=function(a){arguments.length>1&&(a=Array.prototype.slice.call(arguments,0));var b={};return h(a,"object")&&!h(a,"array")?b=a:null!=a&&(b={points:a}),this.el("polyline",b)},g.polygon=function(a){arguments.length>1&&(a=Array.prototype.slice.call(arguments,0));var b={};return h(a,"object")&&!h(a,"array")?b=a:null!=a&&(b={points:a}),this.el("polygon",b)},function(){function d(){return this.selectAll("stop")}function e(a,b){var d=k("stop"),e={offset:+b+"%"};return a=c.color(a),e["stop-color"]=a.hex,a.opacity<1&&(e["stop-opacity"]=a.opacity),k(d,e),this.node.appendChild(d),this}function f(){if("linearGradient"==this.type){var a=k(this.node,"x1")||0,b=k(this.node,"x2")||1,d=k(this.node,"y1")||0,e=k(this.node,"y2")||0;return c._.box(a,d,math.abs(b-a),math.abs(e-d))}var f=this.node.cx||.5,g=this.node.cy||.5,h=this.node.r||0;return c._.box(f-h,g-h,2*h,2*h)}function h(a,c){function d(a,b){for(var c=(b-l)/(a-m),d=m;a>d;d++)g[d].offset=+(+l+c*(d-m)).toFixed(2);m=a,l=b}var e,f=b("snap.util.grad.parse",null,c).firstDefined();if(!f)return null;f.params.unshift(a),e="l"==f.type.toLowerCase()?i.apply(0,f.params):j.apply(0,f.params),f.type!=f.type.toLowerCase()&&k(e.node,{gradientUnits:"userSpaceOnUse"});var g=f.stops,h=g.length,l=0,m=0;h--;for(var n=0;h>n;n++)"offset"in g[n]&&d(n,g[n].offset);for(g[h].offset=g[h].offset||100,d(h,g[h].offset),n=0;h>=n;n++){var o=g[n];e.addStop(o.color,o.offset)}return e}function i(a,b,g,h,i){var j=c._.make("linearGradient",a);return j.stops=d,j.addStop=e,j.getBBox=f,null!=b&&k(j.node,{x1:b,y1:g,x2:h,y2:i}),j}function j(a,b,g,h,i,j){var l=c._.make("radialGradient",a);return l.stops=d,l.addStop=e,l.getBBox=f,null!=b&&k(l.node,{cx:b,cy:g,r:h}),null!=i&&null!=j&&k(l.node,{fx:i,fy:j}),l}var k=c._.$;g.gradient=function(a){return h(this.defs,a)},g.gradientLinear=function(a,b,c,d){return i(this.defs,a,b,c,d)},g.gradientRadial=function(a,b,c,d,e){return j(this.defs,a,b,c,d,e)},g.toString=function(){var a,b=this.node.ownerDocument,d=b.createDocumentFragment(),e=b.createElement("div"),f=this.node.cloneNode(!0);return d.appendChild(e),e.appendChild(f),c._.$(f,{xmlns:"http://www.w3.org/2000/svg"}),a=e.innerHTML,d.removeChild(d.firstChild),a},g.toDataURL=function(){return a&&a.btoa?"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(this))):void 0},g.clear=function(){for(var a,b=this.node.firstChild;b;)a=b.nextSibling,"defs"!=b.tagName?b.parentNode.removeChild(b):g.clear.call({node:b}),b=a}}()}),d.plugin(function(a,b){function c(a){var b=c.ps=c.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[K](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]}function d(a,b,c,d){return null==a&&(a=b=c=d=0),null==b&&(b=a.y,c=a.width,d=a.height,a=a.x),{x:a,y:b,width:c,w:c,height:d,h:d,x2:a+c,y2:b+d,cx:a+c/2,cy:b+d/2,r1:N.min(c,d)/2,r2:N.max(c,d)/2,r0:N.sqrt(c*c+d*d)/2,path:w(a,b,c,d),vb:[a,b,c,d].join(" ")}}function e(){return this.join(",").replace(L,"$1")}function f(a){var b=J(a);return b.toString=e,b}function g(a,b,c,d,e,f,g,h,j){return null==j?n(a,b,c,d,e,f,g,h):i(a,b,c,d,e,f,g,h,o(a,b,c,d,e,f,g,h,j))}function h(c,d){function e(a){return+(+a).toFixed(3)}return a._.cacher(function(a,f,h){a instanceof b&&(a=a.attr("d")),a=E(a);for(var j,k,l,m,n,o="",p={},q=0,r=0,s=a.length;s>r;r++){if(l=a[r],"M"==l[0])j=+l[1],k=+l[2];else{if(m=g(j,k,l[1],l[2],l[3],l[4],l[5],l[6]),q+m>f){if(d&&!p.start){if(n=g(j,k,l[1],l[2],l[3],l[4],l[5],l[6],f-q),o+=["C"+e(n.start.x),e(n.start.y),e(n.m.x),e(n.m.y),e(n.x),e(n.y)],h)return o;p.start=o,o=["M"+e(n.x),e(n.y)+"C"+e(n.n.x),e(n.n.y),e(n.end.x),e(n.end.y),e(l[5]),e(l[6])].join(),q+=m,j=+l[5],k=+l[6];continue}if(!c&&!d)return n=g(j,k,l[1],l[2],l[3],l[4],l[5],l[6],f-q)}q+=m,j=+l[5],k=+l[6]}o+=l.shift()+l}return p.end=o,n=c?q:d?p:i(j,k,l[0],l[1],l[2],l[3],l[4],l[5],1)},null,a._.clone)}function i(a,b,c,d,e,f,g,h,i){var j=1-i,k=R(j,3),l=R(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*N.atan2(q-s,r-t)/O;return{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}}function j(b,c,e,f,g,h,i,j){a.is(b,"array")||(b=[b,c,e,f,g,h,i,j]);var k=D.apply(null,b);return d(k.min.x,k.min.y,k.max.x-k.min.x,k.max.y-k.min.y)}function k(a,b,c){return b>=a.x&&b<=a.x+a.width&&c>=a.y&&c<=a.y+a.height}function l(a,b){return a=d(a),b=d(b),k(b,a.x,a.y)||k(b,a.x2,a.y)||k(b,a.x,a.y2)||k(b,a.x2,a.y2)||k(a,b.x,b.y)||k(a,b.x2,b.y)||k(a,b.x,b.y2)||k(a,b.x2,b.y2)||(a.x<b.x2&&a.x>b.x||b.x<a.x2&&b.x>a.x)&&(a.y<b.y2&&a.y>b.y||b.y<a.y2&&b.y>a.y)}function m(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function n(a,b,c,d,e,f,g,h,i){null==i&&(i=1),i=i>1?1:0>i?0:i;for(var j=i/2,k=12,l=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;k>p;p++){var q=j*l[p]+j,r=m(q,a,c,e,g),s=m(q,b,d,f,h),t=r*r+s*s;o+=n[p]*N.sqrt(t)}return j*o}function o(a,b,c,d,e,f,g,h,i){if(!(0>i||n(a,b,c,d,e,f,g,h)<i)){var j,k=1,l=k/2,m=k-l,o=.01;for(j=n(a,b,c,d,e,f,g,h,m);S(j-i)>o;)l/=2,m+=(i>j?1:-1)*l,j=n(a,b,c,d,e,f,g,h,m);return m}}function p(a,b,c,d,e,f,g,h){if(!(Q(a,c)<P(e,g)||P(a,c)>Q(e,g)||Q(b,d)<P(f,h)||P(b,d)>Q(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+P(a,c).toFixed(2)||n>+Q(a,c).toFixed(2)||n<+P(e,g).toFixed(2)||n>+Q(e,g).toFixed(2)||o<+P(b,d).toFixed(2)||o>+Q(b,d).toFixed(2)||o<+P(f,h).toFixed(2)||o>+Q(f,h).toFixed(2)))return{x:l,y:m}}}}function q(a,b,c){var d=j(a),e=j(b);if(!l(d,e))return c?0:[];for(var f=n.apply(0,a),g=n.apply(0,b),h=~~(f/8),k=~~(g/8),m=[],o=[],q={},r=c?0:[],s=0;h+1>s;s++){var t=i.apply(0,a.concat(s/h));m.push({x:t.x,y:t.y,t:s/h})}for(s=0;k+1>s;s++)t=i.apply(0,b.concat(s/k)),o.push({x:t.x,y:t.y,t:s/k});for(s=0;h>s;s++)for(var u=0;k>u;u++){var v=m[s],w=m[s+1],x=o[u],y=o[u+1],z=S(w.x-v.x)<.001?"y":"x",A=S(y.x-x.x)<.001?"y":"x",B=p(v.x,v.y,w.x,w.y,x.x,x.y,y.x,y.y);if(B){if(q[B.x.toFixed(4)]==B.y.toFixed(4))continue;q[B.x.toFixed(4)]=B.y.toFixed(4);var C=v.t+S((B[z]-v[z])/(w[z]-v[z]))*(w.t-v.t),D=x.t+S((B[A]-x[A])/(y[A]-x[A]))*(y.t-x.t);C>=0&&1>=C&&D>=0&&1>=D&&(c?r++:r.push({x:B.x,y:B.y,t1:C,t2:D}))}}return r}function r(a,b){return t(a,b)}function s(a,b){return t(a,b,1)}function t(a,b,c){a=E(a),b=E(b);for(var d,e,f,g,h,i,j,k,l,m,n=c?0:[],o=0,p=a.length;p>o;o++){var r=a[o];if("M"==r[0])d=h=r[1],e=i=r[2];else{"C"==r[0]?(l=[d,e].concat(r.slice(1)),d=l[6],e=l[7]):(l=[d,e,d,e,h,i,h,i],d=h,e=i);for(var s=0,t=b.length;t>s;s++){var u=b[s];if("M"==u[0])f=j=u[1],g=k=u[2];else{"C"==u[0]?(m=[f,g].concat(u.slice(1)),f=m[6],g=m[7]):(m=[f,g,f,g,j,k,j,k],f=j,g=k);var v=q(l,m,c);if(c)n+=v;else{for(var w=0,x=v.length;x>w;w++)v[w].segment1=o,v[w].segment2=s,v[w].bez1=l,v[w].bez2=m;n=n.concat(v)}}}}}return n}function u(a,b,c){var d=v(a);return k(d,b,c)&&t(a,[["M",b,c],["H",d.x2+10]],1)%2==1}function v(a){var b=c(a);if(b.bbox)return J(b.bbox);if(!a)return d();a=E(a);for(var e,f=0,g=0,h=[],i=[],j=0,k=a.length;k>j;j++)if(e=a[j],"M"==e[0])f=e[1],g=e[2],h.push(f),i.push(g);else{var l=D(f,g,e[1],e[2],e[3],e[4],e[5],e[6]);h=h.concat(l.min.x,l.max.x),i=i.concat(l.min.y,l.max.y),f=e[5],g=e[6]}var m=P.apply(0,h),n=P.apply(0,i),o=Q.apply(0,h),p=Q.apply(0,i),q=d(m,n,o-m,p-n);return b.bbox=J(q),q}function w(a,b,c,d,f){if(f)return[["M",+a+ +f,b],["l",c-2*f,0],["a",f,f,0,0,1,f,f],["l",0,d-2*f],["a",f,f,0,0,1,-f,f],["l",2*f-c,0],["a",f,f,0,0,1,-f,-f],["l",0,2*f-d],["a",f,f,0,0,1,f,-f],["z"]];var g=[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]];return g.toString=e,g}function x(a,b,c,d,f){if(null==f&&null==d&&(d=c),a=+a,b=+b,c=+c,d=+d,null!=f)var g=Math.PI/180,h=a+c*Math.cos(-d*g),i=a+c*Math.cos(-f*g),j=b+c*Math.sin(-d*g),k=b+c*Math.sin(-f*g),l=[["M",h,j],["A",c,c,0,+(f-d>180),0,i,k]];else l=[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]];return l.toString=e,l}function y(b){var d=c(b),g=String.prototype.toLowerCase;if(d.rel)return f(d.rel);a.is(b,"array")&&a.is(b&&b[0],"array")||(b=a.parsePathString(b));var h=[],i=0,j=0,k=0,l=0,m=0;"M"==b[0][0]&&(i=b[0][1],j=b[0][2],k=i,l=j,m++,h.push(["M",i,j]));for(var n=m,o=b.length;o>n;n++){var p=h[n]=[],q=b[n];if(q[0]!=g.call(q[0]))switch(p[0]=g.call(q[0]),p[0]){case"a":p[1]=q[1],p[2]=q[2],p[3]=q[3],p[4]=q[4],p[5]=q[5],p[6]=+(q[6]-i).toFixed(3),p[7]=+(q[7]-j).toFixed(3);break;case"v":p[1]=+(q[1]-j).toFixed(3);break;case"m":k=q[1],l=q[2];default:for(var r=1,s=q.length;s>r;r++)p[r]=+(q[r]-(r%2?i:j)).toFixed(3)}else{p=h[n]=[],"m"==q[0]&&(k=q[1]+i,l=q[2]+j);for(var t=0,u=q.length;u>t;t++)h[n][t]=q[t]}var v=h[n].length;switch(h[n][0]){case"z":i=k,j=l;break;case"h":i+=+h[n][v-1];break;case"v":j+=+h[n][v-1];break;default:i+=+h[n][v-2],j+=+h[n][v-1]}}return h.toString=e,d.rel=f(h),h}function z(b){var d=c(b);if(d.abs)return f(d.abs);if(I(b,"array")&&I(b&&b[0],"array")||(b=a.parsePathString(b)),!b||!b.length)return[["M",0,0]];var g,h=[],i=0,j=0,k=0,l=0,m=0;"M"==b[0][0]&&(i=+b[0][1],j=+b[0][2],k=i,l=j,m++,h[0]=["M",i,j]);for(var n,o,p=3==b.length&&"M"==b[0][0]&&"R"==b[1][0].toUpperCase()&&"Z"==b[2][0].toUpperCase(),q=m,r=b.length;r>q;q++){if(h.push(n=[]),o=b[q],g=o[0],g!=g.toUpperCase())switch(n[0]=g.toUpperCase(),n[0]){case"A":n[1]=o[1],n[2]=o[2],n[3]=o[3],n[4]=o[4],n[5]=o[5],n[6]=+o[6]+i,n[7]=+o[7]+j;break;case"V":n[1]=+o[1]+j;break;case"H":n[1]=+o[1]+i;break;case"R":for(var s=[i,j].concat(o.slice(1)),t=2,u=s.length;u>t;t++)s[t]=+s[t]+i,s[++t]=+s[t]+j;h.pop(),h=h.concat(G(s,p));break;case"O":h.pop(),s=x(i,j,o[1],o[2]),s.push(s[0]),h=h.concat(s);break;case"U":h.pop(),h=h.concat(x(i,j,o[1],o[2],o[3])),n=["U"].concat(h[h.length-1].slice(-2));break;case"M":k=+o[1]+i,l=+o[2]+j;default:for(t=1,u=o.length;u>t;t++)n[t]=+o[t]+(t%2?i:j)}else if("R"==g)s=[i,j].concat(o.slice(1)),h.pop(),h=h.concat(G(s,p)),n=["R"].concat(o.slice(-2));else if("O"==g)h.pop(),s=x(i,j,o[1],o[2]),s.push(s[0]),h=h.concat(s);else if("U"==g)h.pop(),h=h.concat(x(i,j,o[1],o[2],o[3])),n=["U"].concat(h[h.length-1].slice(-2));else for(var v=0,w=o.length;w>v;v++)n[v]=o[v];if(g=g.toUpperCase(),"O"!=g)switch(n[0]){case"Z":i=+k,j=+l;break;case"H":i=n[1];break;case"V":j=n[1];break;case"M":k=n[n.length-2],l=n[n.length-1];default:i=n[n.length-2],j=n[n.length-1]}}return h.toString=e,d.abs=f(h),h}function A(a,b,c,d){return[a,b,c,d,c,d]}function B(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]}function C(b,c,d,e,f,g,h,i,j,k){var l,m=120*O/180,n=O/180*(+f||0),o=[],p=a._.cacher(function(a,b,c){var d=a*N.cos(c)-b*N.sin(c),e=a*N.sin(c)+b*N.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(b,c,-n),b=l.x,c=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(N.cos(O/180*f),N.sin(O/180*f),(b-i)/2),r=(c-j)/2,s=q*q/(d*d)+r*r/(e*e);s>1&&(s=N.sqrt(s),d=s*d,e=s*e);var t=d*d,u=e*e,v=(g==h?-1:1)*N.sqrt(S((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*d*r/e+(b+i)/2,x=v*-e*q/d+(c+j)/2,y=N.asin(((c-x)/e).toFixed(9)),z=N.asin(((j-x)/e).toFixed(9));y=w>b?O-y:y,z=w>i?O-z:z,0>y&&(y=2*O+y),0>z&&(z=2*O+z),h&&y>z&&(y-=2*O),!h&&z>y&&(z-=2*O)}var A=z-y;if(S(A)>m){var B=z,D=i,E=j;z=y+m*(h&&z>y?1:-1),i=w+d*N.cos(z),j=x+e*N.sin(z),o=C(i,j,d,e,f,0,h,D,E,[z,B,w,x])}A=z-y;var F=N.cos(y),G=N.sin(y),H=N.cos(z),I=N.sin(z),J=N.tan(A/4),K=4/3*d*J,L=4/3*e*J,M=[b,c],P=[b+K*G,c-L*F],Q=[i+K*I,j-L*H],R=[i,j];if(P[0]=2*M[0]-P[0],P[1]=2*M[1]-P[1],k)return[P,Q,R].concat(o);o=[P,Q,R].concat(o).join().split(",");for(var T=[],U=0,V=o.length;V>U;U++)T[U]=U%2?p(o[U-1],o[U],n).y:p(o[U],o[U+1],n).x;return T}function D(a,b,c,d,e,f,g,h){for(var i,j,k,l,m,n,o,p,q=[],r=[[],[]],s=0;2>s;++s)if(0==s?(j=6*a-12*c+6*e,i=-3*a+9*c-9*e+3*g,k=3*c-3*a):(j=6*b-12*d+6*f,i=-3*b+9*d-9*f+3*h,k=3*d-3*b),S(i)<1e-12){if(S(j)<1e-12)continue;l=-k/j,l>0&&1>l&&q.push(l)}else o=j*j-4*k*i,p=N.sqrt(o),0>o||(m=(-j+p)/(2*i),m>0&&1>m&&q.push(m),n=(-j-p)/(2*i),n>0&&1>n&&q.push(n));for(var t,u=q.length,v=u;u--;)l=q[u],t=1-l,r[0][u]=t*t*t*a+3*t*t*l*c+3*t*l*l*e+l*l*l*g,r[1][u]=t*t*t*b+3*t*t*l*d+3*t*l*l*f+l*l*l*h;return r[0][v]=a,r[1][v]=b,r[0][v+1]=g,r[1][v+1]=h,r[0].length=r[1].length=v+2,{min:{x:P.apply(0,r[0]),y:P.apply(0,r[1])},max:{x:Q.apply(0,r[0]),y:Q.apply(0,r[1])}}}function E(a,b){var d=!b&&c(a);if(!b&&d.curve)return f(d.curve);for(var e=z(a),g=b&&z(b),h={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},i={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},j=(function(a,b,c){var d,e;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"].concat(C.apply(0,[b.x,b.y].concat(a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e].concat(a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"].concat(B(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"].concat(B(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"].concat(A(b.x,b.y,a[1],a[2]));break;case"H":a=["C"].concat(A(b.x,b.y,a[1],b.y));break;case"V":a=["C"].concat(A(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"].concat(A(b.x,b.y,b.X,b.Y))}return a}),k=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)m[b]="A",g&&(n[b]="A"),a.splice(b++,0,["C"].concat(c.splice(0,6)));a.splice(b,1),r=Q(e.length,g&&g.length||0)}},l=function(a,b,c,d,f){a&&b&&"M"==a[f][0]&&"M"!=b[f][0]&&(b.splice(f,0,["M",d.x,d.y]),c.bx=0,c.by=0,c.x=a[f][1],c.y=a[f][2],r=Q(e.length,g&&g.length||0))},m=[],n=[],o="",p="",q=0,r=Q(e.length,g&&g.length||0);r>q;q++){e[q]&&(o=e[q][0]),"C"!=o&&(m[q]=o,q&&(p=m[q-1])),e[q]=j(e[q],h,p),"A"!=m[q]&&"C"==o&&(m[q]="C"),k(e,q),g&&(g[q]&&(o=g[q][0]),"C"!=o&&(n[q]=o,q&&(p=n[q-1])),g[q]=j(g[q],i,p),"A"!=n[q]&&"C"==o&&(n[q]="C"),k(g,q)),l(e,g,h,i,q),l(g,e,i,h,q);var s=e[q],t=g&&g[q],u=s.length,v=g&&t.length;h.x=s[u-2],h.y=s[u-1],h.bx=M(s[u-4])||h.x,h.by=M(s[u-3])||h.y,i.bx=g&&(M(t[v-4])||i.x),i.by=g&&(M(t[v-3])||i.y),i.x=g&&t[v-2],i.y=g&&t[v-1]}return g||(d.curve=f(e)),g?[e,g]:e}function F(a,b){if(!b)return a;var c,d,e,f,g,h,i;for(a=E(a),e=0,g=a.length;g>e;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a}function G(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}var H=b.prototype,I=a.is,J=a._.clone,K="hasOwnProperty",L=/,?([a-z]),?/gi,M=parseFloat,N=Math,O=N.PI,P=N.min,Q=N.max,R=N.pow,S=N.abs,T=h(1),U=h(),V=h(0,1),W=a._unit2px,X={path:function(a){return a.attr("path")},circle:function(a){var b=W(a);return x(b.cx,b.cy,b.r)},ellipse:function(a){var b=W(a);return x(b.cx||0,b.cy||0,b.rx,b.ry)},rect:function(a){var b=W(a);return w(b.x||0,b.y||0,b.width,b.height,b.rx,b.ry)},image:function(a){var b=W(a);return w(b.x||0,b.y||0,b.width,b.height)},line:function(a){return"M"+[a.attr("x1")||0,a.attr("y1")||0,a.attr("x2"),a.attr("y2")]},polyline:function(a){return"M"+a.attr("points")},polygon:function(a){return"M"+a.attr("points")+"z"},deflt:function(a){var b=a.node.getBBox();return w(b.x,b.y,b.width,b.height)}};a.path=c,a.path.getTotalLength=T,a.path.getPointAtLength=U,a.path.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return V(a,b).end;var d=V(a,c,1);return b?V(d,b).end:d},H.getTotalLength=function(){return this.node.getTotalLength?this.node.getTotalLength():void 0},H.getPointAtLength=function(a){return U(this.attr("d"),a)},H.getSubpath=function(b,c){return a.path.getSubpath(this.attr("d"),b,c)},a._.box=d,a.path.findDotsAtSegment=i,a.path.bezierBBox=j,a.path.isPointInsideBBox=k,a.closest=function(b,c,e,f){for(var g=100,h=d(b-g/2,c-g/2,g,g),i=[],j=e[0].hasOwnProperty("x")?function(a){return{x:e[a].x,y:e[a].y}}:function(a){return{x:e[a],y:f[a]}},l=0;1e6>=g&&!l;){for(var m=0,n=e.length;n>m;m++){var o=j(m);if(k(h,o.x,o.y)){l++,i.push(o);break}}l||(g*=2,h=d(b-g/2,c-g/2,g,g))}if(1e6!=g){var p,q=1/0;for(m=0,n=i.length;n>m;m++){var r=a.len(b,c,i[m].x,i[m].y);q>r&&(q=r,i[m].len=r,p=i[m])}return p}},a.path.isBBoxIntersect=l,a.path.intersection=r,a.path.intersectionNumber=s,a.path.isPointInside=u,a.path.getBBox=v,a.path.get=X,a.path.toRelative=y,a.path.toAbsolute=z,a.path.toCubic=E,a.path.map=F,a.path.toString=e,a.path.clone=f}),d.plugin(function(a){var d=Math.max,e=Math.min,f=function(a){if(this.items=[],this.bindings={},this.length=0,this.type="set",a)for(var b=0,c=a.length;c>b;b++)a[b]&&(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},g=f.prototype;g.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],a&&(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},g.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},g.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this},g.animate=function(d,e,f,g){"function"!=typeof f||f.length||(g=f,f=c.linear),d instanceof a._.Animation&&(g=d.callback,f=d.easing,e=f.dur,d=d.attr);var h=arguments;if(a.is(d,"array")&&a.is(h[h.length-1],"array"))var i=!0;var j,k=function(){j?this.b=j:j=this.b},l=0,m=this,n=g&&function(){++l==m.length&&g.call(this)
+};return this.forEach(function(a,c){b.once("snap.animcreated."+a.id,k),i?h[c]&&a.animate.apply(a,h[c]):a.animate(d,e,f,n)})},g.remove=function(){for(;this.length;)this.pop().remove();return this},g.bind=function(a,b,c){var d={};if("function"==typeof b)this.bindings[a]=b;else{var e=c||a;this.bindings[a]=function(a){d[e]=a,b.attr(d)}}return this},g.attr=function(a){var b={};for(var c in a)this.bindings[c]?this.bindings[c](a[c]):b[c]=a[c];for(var d=0,e=this.items.length;e>d;d++)this.items[d].attr(b);return this},g.clear=function(){for(;this.length;)this.pop()},g.splice=function(a,b){a=0>a?d(this.length+a,0):a,b=d(0,e(this.length-a,b));var c,g=[],h=[],i=[];for(c=2;c<arguments.length;c++)i.push(arguments[c]);for(c=0;b>c;c++)h.push(this[a+c]);for(;c<this.length-a;c++)g.push(this[a+c]);var j=i.length;for(c=0;c<j+g.length;c++)this.items[a+c]=this[a+c]=j>c?i[c]:g[c-j];for(c=this.items.length=this.length-=b-j;this[c];)delete this[c++];return new f(h)},g.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0;return!1},g.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},g.getBBox=function(){for(var a=[],b=[],c=[],f=[],g=this.items.length;g--;)if(!this.items[g].removed){var h=this.items[g].getBBox();a.push(h.x),b.push(h.y),c.push(h.x+h.width),f.push(h.y+h.height)}return a=e.apply(0,a),b=e.apply(0,b),c=d.apply(0,c),f=d.apply(0,f),{x:a,y:b,x2:c,y2:f,width:c-a,height:f-b,cx:a+(c-a)/2,cy:b+(f-b)/2}},g.clone=function(a){a=new f;for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},g.toString=function(){return"Snap‘s set"},g.type="set",a.Set=f,a.set=function(){var a=new f;return arguments.length&&a.push.apply(a,Array.prototype.slice.call(arguments,0)),a}}),d.plugin(function(a,c){function d(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}}function e(b,c,e){c=p(c).replace(/\.{3}|\u2026/g,b),b=a.parseTransformString(b)||[],c=a.parseTransformString(c)||[];for(var f,g,h,i,l=Math.max(b.length,c.length),m=[],n=[],o=0;l>o;o++){if(h=b[o]||d(c[o]),i=c[o]||d(h),h[0]!=i[0]||"r"==h[0].toLowerCase()&&(h[2]!=i[2]||h[3]!=i[3])||"s"==h[0].toLowerCase()&&(h[3]!=i[3]||h[4]!=i[4])){b=a._.transform2matrix(b,e()),c=a._.transform2matrix(c,e()),m=[["m",b.a,b.b,b.c,b.d,b.e,b.f]],n=[["m",c.a,c.b,c.c,c.d,c.e,c.f]];break}for(m[o]=[],n[o]=[],f=0,g=Math.max(h.length,i.length);g>f;f++)f in h&&(m[o][f]=h[f]),f in i&&(n[o][f]=i[f])}return{from:k(m),to:k(n),f:j(m)}}function f(a){return a}function g(a){return function(b){return+b.toFixed(3)+a}}function h(a){return a.join(" ")}function i(b){return a.rgb(b[0],b[1],b[2])}function j(a){var b,c,d,e,f,g,h=0,i=[];for(b=0,c=a.length;c>b;b++){for(f="[",g=['"'+a[b][0]+'"'],d=1,e=a[b].length;e>d;d++)g[d]="val["+h++ +"]";f+=g+"]",i[b]=f}return Function("val","return Snap.path.toString.call(["+i+"])")}function k(a){for(var b=[],c=0,d=a.length;d>c;c++)for(var e=1,f=a[c].length;f>e;e++)b.push(a[c][e]);return b}function l(a){return isFinite(parseFloat(a))}function m(b,c){return a.is(b,"array")&&a.is(c,"array")?b.toString()==c.toString():!1}var n={},o=/[a-z]+$/i,p=String;n.stroke=n.fill="colour",c.prototype.equal=function(a,c){return b("snap.util.equal",this,a,c).firstDefined()},b.on("snap.util.equal",function(b,c){var d,q,r=p(this.attr(b)||""),s=this;if(l(r)&&l(c))return{from:parseFloat(r),to:parseFloat(c),f:f};if("colour"==n[b])return d=a.color(r),q=a.color(c),{from:[d.r,d.g,d.b,d.opacity],to:[q.r,q.g,q.b,q.opacity],f:i};if("viewBox"==b)return d=this.attr(b).vb.split(" ").map(Number),q=c.split(" ").map(Number),{from:d,to:q,f:h};if("transform"==b||"gradientTransform"==b||"patternTransform"==b)return c instanceof a.Matrix&&(c=c.toTransformString()),a._.rgTransform.test(c)||(c=a._.svgTransform2string(c)),e(r,c,function(){return s.getBBox(1)});if("d"==b||"path"==b)return d=a.path.toCubic(r,c),{from:k(d[0]),to:k(d[1]),f:j(d[0])};if("points"==b)return d=p(r).split(a._.separator),q=p(c).split(a._.separator),{from:d,to:q,f:function(a){return a}};var t=r.match(o),u=p(c).match(o);return t&&m(t,u)?{from:parseFloat(r),to:parseFloat(c),f:g(t)}:{from:this.asPX(b),to:this.asPX(b,c),f:f}})}),d.plugin(function(a,c,d,e){for(var f=c.prototype,g="hasOwnProperty",h=("createTouch"in e.doc),i=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","touchstart","touchmove","touchend","touchcancel"],j={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},k=(function(a,b){var c="y"==a?"scrollTop":"scrollLeft",d=b&&b.node?b.node.ownerDocument:e.doc;return d[c in d.documentElement?"documentElement":"body"][c]}),l=function(){return this.originalEvent.preventDefault()},m=function(){return this.originalEvent.stopPropagation()},n=function(a,b,c,d){var e=h&&j[b]?j[b]:b,f=function(e){var f=k("y",d),i=k("x",d);if(h&&j[g](b))for(var n=0,o=e.targetTouches&&e.targetTouches.length;o>n;n++)if(e.targetTouches[n].target==a||a.contains(e.targetTouches[n].target)){var p=e;e=e.targetTouches[n],e.originalEvent=p,e.preventDefault=l,e.stopPropagation=m;break}var q=e.clientX+i,r=e.clientY+f;return c.call(d,e,q,r)};return b!==e&&a.addEventListener(b,f,!1),a.addEventListener(e,f,!1),function(){return b!==e&&a.removeEventListener(b,f,!1),a.removeEventListener(e,f,!1),!0}},o=[],p=function(a){for(var c,d=a.clientX,e=a.clientY,f=k("y"),g=k("x"),i=o.length;i--;){if(c=o[i],h){for(var j,l=a.touches&&a.touches.length;l--;)if(j=a.touches[l],j.identifier==c.el._drag.id||c.el.node.contains(j.target)){d=j.clientX,e=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();{var m=c.el.node;m.nextSibling,m.parentNode,m.style.display}d+=g,e+=f,b("snap.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,a)}},q=function(c){a.unmousemove(p).unmouseup(q);for(var d,e=o.length;e--;)d=o[e],d.el._drag={},b("snap.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,c),b.off("snap.drag.*."+d.el.id);o=[]},r=i.length;r--;)!function(b){a[b]=f[b]=function(c,d){if(a.is(c,"function"))this.events=this.events||[],this.events.push({name:b,f:c,unbind:n(this.node||document,b,c,d||this)});else for(var e=0,f=this.events.length;f>e;e++)if(this.events[e].name==b)try{this.events[e].f.call(this)}catch(g){}return this},a["un"+b]=f["un"+b]=function(a){for(var c=this.events||[],d=c.length;d--;)if(c[d].name==b&&(c[d].f==a||!a))return c[d].unbind(),c.splice(d,1),!c.length&&delete this.events,this;return this}}(i[r]);f.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},f.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var s=[];f.drag=function(c,d,e,f,g,h){function i(i,j,l){(i.originalEvent||i).preventDefault(),k._drag.x=j,k._drag.y=l,k._drag.id=i.identifier,!o.length&&a.mousemove(p).mouseup(q),o.push({el:k,move_scope:f,start_scope:g,end_scope:h}),d&&b.on("snap.drag.start."+k.id,d),c&&b.on("snap.drag.move."+k.id,c),e&&b.on("snap.drag.end."+k.id,e),b("snap.drag.start."+k.id,g||f||k,j,l,i)}function j(a,c,d){b("snap.draginit."+k.id,k,a,c,d)}var k=this;if(!arguments.length){var l;return k.drag(function(a,b){this.attr({transform:l+(l?"T":"t")+[a,b]})},function(){l=this.transform().local})}return b.on("snap.draginit."+k.id,i),k._drag={},s.push({el:k,start:i,init:j}),k.mousedown(j),k},f.undrag=function(){for(var c=s.length;c--;)s[c].el==this&&(this.unmousedown(s[c].init),s.splice(c,1),b.unbind("snap.drag.*."+this.id),b.unbind("snap.draginit."+this.id));return!s.length&&a.unmousemove(p).unmouseup(q),this}}),d.plugin(function(a,c,d){var e=(c.prototype,d.prototype),f=/^\s*url\((.+)\)/,g=String,h=a._.$;a.filter={},e.filter=function(b){var d=this;"svg"!=d.type&&(d=d.paper);var e=a.parse(g(b)),f=a._.id(),i=(d.node.offsetWidth,d.node.offsetHeight,h("filter"));return h(i,{id:f,filterUnits:"userSpaceOnUse"}),i.appendChild(e.node),d.defs.appendChild(i),new c(i)},b.on("snap.util.getattr.filter",function(){b.stop();var c=h(this.node,"filter");if(c){var d=g(c).match(f);return d&&a.select(d[1])}}),b.on("snap.util.attr.filter",function(d){if(d instanceof c&&"filter"==d.type){b.stop();var e=d.node.id;e||(h(d.node,{id:d.id}),e=d.id),h(this.node,{filter:a.url(e)})}d&&"none"!=d||(b.stop(),this.node.removeAttribute("filter"))}),a.filter.blur=function(b,c){null==b&&(b=2);var d=null==c?b:[b,c];return a.format('<feGaussianBlur stdDeviation="{def}"/>',{def:d})},a.filter.blur.toString=function(){return this()},a.filter.shadow=function(b,c,d,e,f){return"string"==typeof d&&(e=d,f=e,d=4),"string"!=typeof e&&(f=e,e="#000"),e=e||"#000",null==d&&(d=4),null==f&&(f=1),null==b&&(b=0,c=2),null==c&&(c=b),e=a.color(e),a.format('<feGaussianBlur in="SourceAlpha" stdDeviation="{blur}"/><feOffset dx="{dx}" dy="{dy}" result="offsetblur"/><feFlood flood-color="{color}"/><feComposite in2="offsetblur" operator="in"/><feComponentTransfer><feFuncA type="linear" slope="{opacity}"/></feComponentTransfer><feMerge><feMergeNode/><feMergeNode in="SourceGraphic"/></feMerge>',{color:e,dx:b,dy:c,blur:d,opacity:f})},a.filter.shadow.toString=function(){return this()},a.filter.grayscale=function(b){return null==b&&(b=1),a.format('<feColorMatrix type="matrix" values="{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {b} {h} 0 0 0 0 0 1 0"/>',{a:.2126+.7874*(1-b),b:.7152-.7152*(1-b),c:.0722-.0722*(1-b),d:.2126-.2126*(1-b),e:.7152+.2848*(1-b),f:.0722-.0722*(1-b),g:.2126-.2126*(1-b),h:.0722+.9278*(1-b)})},a.filter.grayscale.toString=function(){return this()},a.filter.sepia=function(b){return null==b&&(b=1),a.format('<feColorMatrix type="matrix" values="{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {h} {i} 0 0 0 0 0 1 0"/>',{a:.393+.607*(1-b),b:.769-.769*(1-b),c:.189-.189*(1-b),d:.349-.349*(1-b),e:.686+.314*(1-b),f:.168-.168*(1-b),g:.272-.272*(1-b),h:.534-.534*(1-b),i:.131+.869*(1-b)})},a.filter.sepia.toString=function(){return this()},a.filter.saturate=function(b){return null==b&&(b=1),a.format('<feColorMatrix type="saturate" values="{amount}"/>',{amount:1-b})},a.filter.saturate.toString=function(){return this()},a.filter.hueRotate=function(b){return b=b||0,a.format('<feColorMatrix type="hueRotate" values="{angle}"/>',{angle:b})},a.filter.hueRotate.toString=function(){return this()},a.filter.invert=function(b){return null==b&&(b=1),a.format('<feComponentTransfer><feFuncR type="table" tableValues="{amount} {amount2}"/><feFuncG type="table" tableValues="{amount} {amount2}"/><feFuncB type="table" tableValues="{amount} {amount2}"/></feComponentTransfer>',{amount:b,amount2:1-b})},a.filter.invert.toString=function(){return this()},a.filter.brightness=function(b){return null==b&&(b=1),a.format('<feComponentTransfer><feFuncR type="linear" slope="{amount}"/><feFuncG type="linear" slope="{amount}"/><feFuncB type="linear" slope="{amount}"/></feComponentTransfer>',{amount:b})},a.filter.brightness.toString=function(){return this()},a.filter.contrast=function(b){return null==b&&(b=1),a.format('<feComponentTransfer><feFuncR type="linear" slope="{amount}" intercept="{amount2}"/><feFuncG type="linear" slope="{amount}" intercept="{amount2}"/><feFuncB type="linear" slope="{amount}" intercept="{amount2}"/></feComponentTransfer>',{amount:b,amount2:.5-b/2})},a.filter.contrast.toString=function(){return this()}}),d.plugin(function(a,b){var c=a._.box,d=a.is,e=/^[^a-z]*([tbmlrc])/i,f=function(){return"T"+this.dx+","+this.dy};b.prototype.getAlign=function(a,b){null==b&&d(a,"string")&&(b=a,a=null),a=a||this.paper;var g=a.getBBox?a.getBBox():c(a),h=this.getBBox(),i={};switch(b=b&&b.match(e),b=b?b[1].toLowerCase():"c"){case"t":i.dx=0,i.dy=g.y-h.y;break;case"b":i.dx=0,i.dy=g.y2-h.y2;break;case"m":i.dx=0,i.dy=g.cy-h.cy;break;case"l":i.dx=g.x-h.x,i.dy=0;break;case"r":i.dx=g.x2-h.x2,i.dy=0;break;default:i.dx=g.cx-h.cx,i.dy=0}return i.toString=f,i},b.prototype.align=function(a,b){return this.transform("..."+this.getAlign(a,b))}}),d});
diff --git a/assets/js/sylvester.js b/assets/js/sylvester.js
new file mode 100644
index 0000000..3e83bee
--- /dev/null
+++ b/assets/js/sylvester.js
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('9 17={3i:\'0.1.3\',16:1e-6};l v(){}v.23={e:l(i){8(i<1||i>7.4.q)?w:7.4[i-1]},2R:l(){8 7.4.q},1u:l(){8 F.1x(7.2u(7))},24:l(a){9 n=7.4.q;9 V=a.4||a;o(n!=V.q){8 1L}J{o(F.13(7.4[n-1]-V[n-1])>17.16){8 1L}}H(--n);8 2x},1q:l(){8 v.u(7.4)},1b:l(a){9 b=[];7.28(l(x,i){b.19(a(x,i))});8 v.u(b)},28:l(a){9 n=7.4.q,k=n,i;J{i=k-n;a(7.4[i],i+1)}H(--n)},2q:l(){9 r=7.1u();o(r===0){8 7.1q()}8 7.1b(l(x){8 x/r})},1C:l(a){9 V=a.4||a;9 n=7.4.q,k=n,i;o(n!=V.q){8 w}9 b=0,1D=0,1F=0;7.28(l(x,i){b+=x*V[i-1];1D+=x*x;1F+=V[i-1]*V[i-1]});1D=F.1x(1D);1F=F.1x(1F);o(1D*1F===0){8 w}9 c=b/(1D*1F);o(c<-1){c=-1}o(c>1){c=1}8 F.37(c)},1m:l(a){9 b=7.1C(a);8(b===w)?w:(b<=17.16)},34:l(a){9 b=7.1C(a);8(b===w)?w:(F.13(b-F.1A)<=17.16)},2k:l(a){9 b=7.2u(a);8(b===w)?w:(F.13(b)<=17.16)},2j:l(a){9 V=a.4||a;o(7.4.q!=V.q){8 w}8 7.1b(l(x,i){8 x+V[i-1]})},2C:l(a){9 V=a.4||a;o(7.4.q!=V.q){8 w}8 7.1b(l(x,i){8 x-V[i-1]})},22:l(k){8 7.1b(l(x){8 x*k})},x:l(k){8 7.22(k)},2u:l(a){9 V=a.4||a;9 i,2g=0,n=7.4.q;o(n!=V.q){8 w}J{2g+=7.4[n-1]*V[n-1]}H(--n);8 2g},2f:l(a){9 B=a.4||a;o(7.4.q!=3||B.q!=3){8 w}9 A=7.4;8 v.u([(A[1]*B[2])-(A[2]*B[1]),(A[2]*B[0])-(A[0]*B[2]),(A[0]*B[1])-(A[1]*B[0])])},2A:l(){9 m=0,n=7.4.q,k=n,i;J{i=k-n;o(F.13(7.4[i])>F.13(m)){m=7.4[i]}}H(--n);8 m},2Z:l(x){9 a=w,n=7.4.q,k=n,i;J{i=k-n;o(a===w&&7.4[i]==x){a=i+1}}H(--n);8 a},3g:l(){8 S.2X(7.4)},2d:l(){8 7.1b(l(x){8 F.2d(x)})},2V:l(x){8 7.1b(l(y){8(F.13(y-x)<=17.16)?x:y})},1o:l(a){o(a.K){8 a.1o(7)}9 V=a.4||a;o(V.q!=7.4.q){8 w}9 b=0,2b;7.28(l(x,i){2b=x-V[i-1];b+=2b*2b});8 F.1x(b)},3a:l(a){8 a.1h(7)},2T:l(a){8 a.1h(7)},1V:l(t,a){9 V,R,x,y,z;2S(7.4.q){27 2:V=a.4||a;o(V.q!=2){8 w}R=S.1R(t).4;x=7.4[0]-V[0];y=7.4[1]-V[1];8 v.u([V[0]+R[0][0]*x+R[0][1]*y,V[1]+R[1][0]*x+R[1][1]*y]);1I;27 3:o(!a.U){8 w}9 C=a.1r(7).4;R=S.1R(t,a.U).4;x=7.4[0]-C[0];y=7.4[1]-C[1];z=7.4[2]-C[2];8 v.u([C[0]+R[0][0]*x+R[0][1]*y+R[0][2]*z,C[1]+R[1][0]*x+R[1][1]*y+R[1][2]*z,C[2]+R[2][0]*x+R[2][1]*y+R[2][2]*z]);1I;2P:8 w}},1t:l(a){o(a.K){9 P=7.4.2O();9 C=a.1r(P).4;8 v.u([C[0]+(C[0]-P[0]),C[1]+(C[1]-P[1]),C[2]+(C[2]-(P[2]||0))])}1d{9 Q=a.4||a;o(7.4.q!=Q.q){8 w}8 7.1b(l(x,i){8 Q[i-1]+(Q[i-1]-x)})}},1N:l(){9 V=7.1q();2S(V.4.q){27 3:1I;27 2:V.4.19(0);1I;2P:8 w}8 V},2n:l(){8\'[\'+7.4.2K(\', \')+\']\'},26:l(a){7.4=(a.4||a).2O();8 7}};v.u=l(a){9 V=25 v();8 V.26(a)};v.i=v.u([1,0,0]);v.j=v.u([0,1,0]);v.k=v.u([0,0,1]);v.2J=l(n){9 a=[];J{a.19(F.2F())}H(--n);8 v.u(a)};v.1j=l(n){9 a=[];J{a.19(0)}H(--n);8 v.u(a)};l S(){}S.23={e:l(i,j){o(i<1||i>7.4.q||j<1||j>7.4[0].q){8 w}8 7.4[i-1][j-1]},33:l(i){o(i>7.4.q){8 w}8 v.u(7.4[i-1])},2E:l(j){o(j>7.4[0].q){8 w}9 a=[],n=7.4.q,k=n,i;J{i=k-n;a.19(7.4[i][j-1])}H(--n);8 v.u(a)},2R:l(){8{2D:7.4.q,1p:7.4[0].q}},2D:l(){8 7.4.q},1p:l(){8 7.4[0].q},24:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}o(7.4.q!=M.q||7.4[0].q!=M[0].q){8 1L}9 b=7.4.q,15=b,i,G,10=7.4[0].q,j;J{i=15-b;G=10;J{j=10-G;o(F.13(7.4[i][j]-M[i][j])>17.16){8 1L}}H(--G)}H(--b);8 2x},1q:l(){8 S.u(7.4)},1b:l(a){9 b=[],12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;b[i]=[];J{j=10-G;b[i][j]=a(7.4[i][j],i+1,j+1)}H(--G)}H(--12);8 S.u(b)},2i:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}8(7.4.q==M.q&&7.4[0].q==M[0].q)},2j:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}o(!7.2i(M)){8 w}8 7.1b(l(x,i,j){8 x+M[i-1][j-1]})},2C:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}o(!7.2i(M)){8 w}8 7.1b(l(x,i,j){8 x-M[i-1][j-1]})},2B:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}8(7.4[0].q==M.q)},22:l(a){o(!a.4){8 7.1b(l(x){8 x*a})}9 b=a.1u?2x:1L;9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}o(!7.2B(M)){8 w}9 d=7.4.q,15=d,i,G,10=M[0].q,j;9 e=7.4[0].q,4=[],21,20,c;J{i=15-d;4[i]=[];G=10;J{j=10-G;21=0;20=e;J{c=e-20;21+=7.4[i][c]*M[c][j]}H(--20);4[i][j]=21}H(--G)}H(--d);9 M=S.u(4);8 b?M.2E(1):M},x:l(a){8 7.22(a)},32:l(a,b,c,d){9 e=[],12=c,i,G,j;9 f=7.4.q,1p=7.4[0].q;J{i=c-12;e[i]=[];G=d;J{j=d-G;e[i][j]=7.4[(a+i-1)%f][(b+j-1)%1p]}H(--G)}H(--12);8 S.u(e)},31:l(){9 a=7.4.q,1p=7.4[0].q;9 b=[],12=1p,i,G,j;J{i=1p-12;b[i]=[];G=a;J{j=a-G;b[i][j]=7.4[j][i]}H(--G)}H(--12);8 S.u(b)},1y:l(){8(7.4.q==7.4[0].q)},2A:l(){9 m=0,12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;J{j=10-G;o(F.13(7.4[i][j])>F.13(m)){m=7.4[i][j]}}H(--G)}H(--12);8 m},2Z:l(x){9 a=w,12=7.4.q,15=12,i,G,10=7.4[0].q,j;J{i=15-12;G=10;J{j=10-G;o(7.4[i][j]==x){8{i:i+1,j:j+1}}}H(--G)}H(--12);8 w},30:l(){o(!7.1y){8 w}9 a=[],n=7.4.q,k=n,i;J{i=k-n;a.19(7.4[i][i])}H(--n);8 v.u(a)},1K:l(){9 M=7.1q(),1c;9 n=7.4.q,k=n,i,1s,1n=7.4[0].q,p;J{i=k-n;o(M.4[i][i]==0){2e(j=i+1;j<k;j++){o(M.4[j][i]!=0){1c=[];1s=1n;J{p=1n-1s;1c.19(M.4[i][p]+M.4[j][p])}H(--1s);M.4[i]=1c;1I}}}o(M.4[i][i]!=0){2e(j=i+1;j<k;j++){9 a=M.4[j][i]/M.4[i][i];1c=[];1s=1n;J{p=1n-1s;1c.19(p<=i?0:M.4[j][p]-M.4[i][p]*a)}H(--1s);M.4[j]=1c}}}H(--n);8 M},3h:l(){8 7.1K()},2z:l(){o(!7.1y()){8 w}9 M=7.1K();9 a=M.4[0][0],n=M.4.q-1,k=n,i;J{i=k-n+1;a=a*M.4[i][i]}H(--n);8 a},3f:l(){8 7.2z()},2y:l(){8(7.1y()&&7.2z()===0)},2Y:l(){o(!7.1y()){8 w}9 a=7.4[0][0],n=7.4.q-1,k=n,i;J{i=k-n+1;a+=7.4[i][i]}H(--n);8 a},3e:l(){8 7.2Y()},1Y:l(){9 M=7.1K(),1Y=0;9 a=7.4.q,15=a,i,G,10=7.4[0].q,j;J{i=15-a;G=10;J{j=10-G;o(F.13(M.4[i][j])>17.16){1Y++;1I}}H(--G)}H(--a);8 1Y},3d:l(){8 7.1Y()},2W:l(a){9 M=a.4||a;o(1g(M[0][0])==\'1f\'){M=S.u(M).4}9 T=7.1q(),1p=T.4[0].q;9 b=T.4.q,15=b,i,G,10=M[0].q,j;o(b!=M.q){8 w}J{i=15-b;G=10;J{j=10-G;T.4[i][1p+j]=M[i][j]}H(--G)}H(--b);8 T},2w:l(){o(!7.1y()||7.2y()){8 w}9 a=7.4.q,15=a,i,j;9 M=7.2W(S.I(a)).1K();9 b,1n=M.4[0].q,p,1c,2v;9 c=[],2c;J{i=a-1;1c=[];b=1n;c[i]=[];2v=M.4[i][i];J{p=1n-b;2c=M.4[i][p]/2v;1c.19(2c);o(p>=15){c[i].19(2c)}}H(--b);M.4[i]=1c;2e(j=0;j<i;j++){1c=[];b=1n;J{p=1n-b;1c.19(M.4[j][p]-M.4[i][p]*M.4[j][i])}H(--b);M.4[j]=1c}}H(--a);8 S.u(c)},3c:l(){8 7.2w()},2d:l(){8 7.1b(l(x){8 F.2d(x)})},2V:l(x){8 7.1b(l(p){8(F.13(p-x)<=17.16)?x:p})},2n:l(){9 a=[];9 n=7.4.q,k=n,i;J{i=k-n;a.19(v.u(7.4[i]).2n())}H(--n);8 a.2K(\'\\n\')},26:l(a){9 i,4=a.4||a;o(1g(4[0][0])!=\'1f\'){9 b=4.q,15=b,G,10,j;7.4=[];J{i=15-b;G=4[i].q;10=G;7.4[i]=[];J{j=10-G;7.4[i][j]=4[i][j]}H(--G)}H(--b);8 7}9 n=4.q,k=n;7.4=[];J{i=k-n;7.4.19([4[i]])}H(--n);8 7}};S.u=l(a){9 M=25 S();8 M.26(a)};S.I=l(n){9 a=[],k=n,i,G,j;J{i=k-n;a[i]=[];G=k;J{j=k-G;a[i][j]=(i==j)?1:0}H(--G)}H(--n);8 S.u(a)};S.2X=l(a){9 n=a.q,k=n,i;9 M=S.I(n);J{i=k-n;M.4[i][i]=a[i]}H(--n);8 M};S.1R=l(b,a){o(!a){8 S.u([[F.1H(b),-F.1G(b)],[F.1G(b),F.1H(b)]])}9 d=a.1q();o(d.4.q!=3){8 w}9 e=d.1u();9 x=d.4[0]/e,y=d.4[1]/e,z=d.4[2]/e;9 s=F.1G(b),c=F.1H(b),t=1-c;8 S.u([[t*x*x+c,t*x*y-s*z,t*x*z+s*y],[t*x*y+s*z,t*y*y+c,t*y*z-s*x],[t*x*z-s*y,t*y*z+s*x,t*z*z+c]])};S.3b=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[1,0,0],[0,c,-s],[0,s,c]])};S.39=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[c,0,s],[0,1,0],[-s,0,c]])};S.38=l(t){9 c=F.1H(t),s=F.1G(t);8 S.u([[c,-s,0],[s,c,0],[0,0,1]])};S.2J=l(n,m){8 S.1j(n,m).1b(l(){8 F.2F()})};S.1j=l(n,m){9 a=[],12=n,i,G,j;J{i=n-12;a[i]=[];G=m;J{j=m-G;a[i][j]=0}H(--G)}H(--12);8 S.u(a)};l 14(){}14.23={24:l(a){8(7.1m(a)&&7.1h(a.K))},1q:l(){8 14.u(7.K,7.U)},2U:l(a){9 V=a.4||a;8 14.u([7.K.4[0]+V[0],7.K.4[1]+V[1],7.K.4[2]+(V[2]||0)],7.U)},1m:l(a){o(a.W){8 a.1m(7)}9 b=7.U.1C(a.U);8(F.13(b)<=17.16||F.13(b-F.1A)<=17.16)},1o:l(a){o(a.W){8 a.1o(7)}o(a.U){o(7.1m(a)){8 7.1o(a.K)}9 N=7.U.2f(a.U).2q().4;9 A=7.K.4,B=a.K.4;8 F.13((A[0]-B[0])*N[0]+(A[1]-B[1])*N[1]+(A[2]-B[2])*N[2])}1d{9 P=a.4||a;9 A=7.K.4,D=7.U.4;9 b=P[0]-A[0],2a=P[1]-A[1],29=(P[2]||0)-A[2];9 c=F.1x(b*b+2a*2a+29*29);o(c===0)8 0;9 d=(b*D[0]+2a*D[1]+29*D[2])/c;9 e=1-d*d;8 F.13(c*F.1x(e<0?0:e))}},1h:l(a){9 b=7.1o(a);8(b!==w&&b<=17.16)},2T:l(a){8 a.1h(7)},1v:l(a){o(a.W){8 a.1v(7)}8(!7.1m(a)&&7.1o(a)<=17.16)},1U:l(a){o(a.W){8 a.1U(7)}o(!7.1v(a)){8 w}9 P=7.K.4,X=7.U.4,Q=a.K.4,Y=a.U.4;9 b=X[0],1z=X[1],1B=X[2],1T=Y[0],1S=Y[1],1M=Y[2];9 c=P[0]-Q[0],2s=P[1]-Q[1],2r=P[2]-Q[2];9 d=-b*c-1z*2s-1B*2r;9 e=1T*c+1S*2s+1M*2r;9 f=b*b+1z*1z+1B*1B;9 g=1T*1T+1S*1S+1M*1M;9 h=b*1T+1z*1S+1B*1M;9 k=(d*g/f+h*e)/(g-h*h);8 v.u([P[0]+k*b,P[1]+k*1z,P[2]+k*1B])},1r:l(a){o(a.U){o(7.1v(a)){8 7.1U(a)}o(7.1m(a)){8 w}9 D=7.U.4,E=a.U.4;9 b=D[0],1l=D[1],1k=D[2],1P=E[0],1O=E[1],1Q=E[2];9 x=(1k*1P-b*1Q),y=(b*1O-1l*1P),z=(1l*1Q-1k*1O);9 N=v.u([x*1Q-y*1O,y*1P-z*1Q,z*1O-x*1P]);9 P=11.u(a.K,N);8 P.1U(7)}1d{9 P=a.4||a;o(7.1h(P)){8 v.u(P)}9 A=7.K.4,D=7.U.4;9 b=D[0],1l=D[1],1k=D[2],1w=A[0],18=A[1],1a=A[2];9 x=b*(P[1]-18)-1l*(P[0]-1w),y=1l*((P[2]||0)-1a)-1k*(P[1]-18),z=1k*(P[0]-1w)-b*((P[2]||0)-1a);9 V=v.u([1l*x-1k*z,1k*y-b*x,b*z-1l*y]);9 k=7.1o(P)/V.1u();8 v.u([P[0]+V.4[0]*k,P[1]+V.4[1]*k,(P[2]||0)+V.4[2]*k])}},1V:l(t,a){o(1g(a.U)==\'1f\'){a=14.u(a.1N(),v.k)}9 R=S.1R(t,a.U).4;9 C=a.1r(7.K).4;9 A=7.K.4,D=7.U.4;9 b=C[0],1E=C[1],1J=C[2],1w=A[0],18=A[1],1a=A[2];9 x=1w-b,y=18-1E,z=1a-1J;8 14.u([b+R[0][0]*x+R[0][1]*y+R[0][2]*z,1E+R[1][0]*x+R[1][1]*y+R[1][2]*z,1J+R[2][0]*x+R[2][1]*y+R[2][2]*z],[R[0][0]*D[0]+R[0][1]*D[1]+R[0][2]*D[2],R[1][0]*D[0]+R[1][1]*D[1]+R[1][2]*D[2],R[2][0]*D[0]+R[2][1]*D[1]+R[2][2]*D[2]])},1t:l(a){o(a.W){9 A=7.K.4,D=7.U.4;9 b=A[0],18=A[1],1a=A[2],2N=D[0],1l=D[1],1k=D[2];9 c=7.K.1t(a).4;9 d=b+2N,2h=18+1l,2o=1a+1k;9 Q=a.1r([d,2h,2o]).4;9 e=[Q[0]+(Q[0]-d)-c[0],Q[1]+(Q[1]-2h)-c[1],Q[2]+(Q[2]-2o)-c[2]];8 14.u(c,e)}1d o(a.U){8 7.1V(F.1A,a)}1d{9 P=a.4||a;8 14.u(7.K.1t([P[0],P[1],(P[2]||0)]),7.U)}},1Z:l(a,b){a=v.u(a);b=v.u(b);o(a.4.q==2){a.4.19(0)}o(b.4.q==2){b.4.19(0)}o(a.4.q>3||b.4.q>3){8 w}9 c=b.1u();o(c===0){8 w}7.K=a;7.U=v.u([b.4[0]/c,b.4[1]/c,b.4[2]/c]);8 7}};14.u=l(a,b){9 L=25 14();8 L.1Z(a,b)};14.X=14.u(v.1j(3),v.i);14.Y=14.u(v.1j(3),v.j);14.Z=14.u(v.1j(3),v.k);l 11(){}11.23={24:l(a){8(7.1h(a.K)&&7.1m(a))},1q:l(){8 11.u(7.K,7.W)},2U:l(a){9 V=a.4||a;8 11.u([7.K.4[0]+V[0],7.K.4[1]+V[1],7.K.4[2]+(V[2]||0)],7.W)},1m:l(a){9 b;o(a.W){b=7.W.1C(a.W);8(F.13(b)<=17.16||F.13(F.1A-b)<=17.16)}1d o(a.U){8 7.W.2k(a.U)}8 w},2k:l(a){9 b=7.W.1C(a.W);8(F.13(F.1A/2-b)<=17.16)},1o:l(a){o(7.1v(a)||7.1h(a)){8 0}o(a.K){9 A=7.K.4,B=a.K.4,N=7.W.4;8 F.13((A[0]-B[0])*N[0]+(A[1]-B[1])*N[1]+(A[2]-B[2])*N[2])}1d{9 P=a.4||a;9 A=7.K.4,N=7.W.4;8 F.13((A[0]-P[0])*N[0]+(A[1]-P[1])*N[1]+(A[2]-(P[2]||0))*N[2])}},1h:l(a){o(a.W){8 w}o(a.U){8(7.1h(a.K)&&7.1h(a.K.2j(a.U)))}1d{9 P=a.4||a;9 A=7.K.4,N=7.W.4;9 b=F.13(N[0]*(A[0]-P[0])+N[1]*(A[1]-P[1])+N[2]*(A[2]-(P[2]||0)));8(b<=17.16)}},1v:l(a){o(1g(a.U)==\'1f\'&&1g(a.W)==\'1f\'){8 w}8!7.1m(a)},1U:l(a){o(!7.1v(a)){8 w}o(a.U){9 A=a.K.4,D=a.U.4,P=7.K.4,N=7.W.4;9 b=(N[0]*(P[0]-A[0])+N[1]*(P[1]-A[1])+N[2]*(P[2]-A[2]))/(N[0]*D[0]+N[1]*D[1]+N[2]*D[2]);8 v.u([A[0]+D[0]*b,A[1]+D[1]*b,A[2]+D[2]*b])}1d o(a.W){9 c=7.W.2f(a.W).2q();9 N=7.W.4,A=7.K.4,O=a.W.4,B=a.K.4;9 d=S.1j(2,2),i=0;H(d.2y()){i++;d=S.u([[N[i%3],N[(i+1)%3]],[O[i%3],O[(i+1)%3]]])}9 e=d.2w().4;9 x=N[0]*A[0]+N[1]*A[1]+N[2]*A[2];9 y=O[0]*B[0]+O[1]*B[1]+O[2]*B[2];9 f=[e[0][0]*x+e[0][1]*y,e[1][0]*x+e[1][1]*y];9 g=[];2e(9 j=1;j<=3;j++){g.19((i==j)?0:f[(j+(5-i)%3)%3])}8 14.u(g,c)}},1r:l(a){9 P=a.4||a;9 A=7.K.4,N=7.W.4;9 b=(A[0]-P[0])*N[0]+(A[1]-P[1])*N[1]+(A[2]-(P[2]||0))*N[2];8 v.u([P[0]+N[0]*b,P[1]+N[1]*b,(P[2]||0)+N[2]*b])},1V:l(t,a){9 R=S.1R(t,a.U).4;9 C=a.1r(7.K).4;9 A=7.K.4,N=7.W.4;9 b=C[0],1E=C[1],1J=C[2],1w=A[0],18=A[1],1a=A[2];9 x=1w-b,y=18-1E,z=1a-1J;8 11.u([b+R[0][0]*x+R[0][1]*y+R[0][2]*z,1E+R[1][0]*x+R[1][1]*y+R[1][2]*z,1J+R[2][0]*x+R[2][1]*y+R[2][2]*z],[R[0][0]*N[0]+R[0][1]*N[1]+R[0][2]*N[2],R[1][0]*N[0]+R[1][1]*N[1]+R[1][2]*N[2],R[2][0]*N[0]+R[2][1]*N[1]+R[2][2]*N[2]])},1t:l(a){o(a.W){9 A=7.K.4,N=7.W.4;9 b=A[0],18=A[1],1a=A[2],2M=N[0],2L=N[1],2Q=N[2];9 c=7.K.1t(a).4;9 d=b+2M,2p=18+2L,2m=1a+2Q;9 Q=a.1r([d,2p,2m]).4;9 e=[Q[0]+(Q[0]-d)-c[0],Q[1]+(Q[1]-2p)-c[1],Q[2]+(Q[2]-2m)-c[2]];8 11.u(c,e)}1d o(a.U){8 7.1V(F.1A,a)}1d{9 P=a.4||a;8 11.u(7.K.1t([P[0],P[1],(P[2]||0)]),7.W)}},1Z:l(a,b,c){a=v.u(a);a=a.1N();o(a===w){8 w}b=v.u(b);b=b.1N();o(b===w){8 w}o(1g(c)==\'1f\'){c=w}1d{c=v.u(c);c=c.1N();o(c===w){8 w}}9 d=a.4[0],18=a.4[1],1a=a.4[2];9 e=b.4[0],1W=b.4[1],1X=b.4[2];9 f,1i;o(c!==w){9 g=c.4[0],2l=c.4[1],2t=c.4[2];f=v.u([(1W-18)*(2t-1a)-(1X-1a)*(2l-18),(1X-1a)*(g-d)-(e-d)*(2t-1a),(e-d)*(2l-18)-(1W-18)*(g-d)]);1i=f.1u();o(1i===0){8 w}f=v.u([f.4[0]/1i,f.4[1]/1i,f.4[2]/1i])}1d{1i=F.1x(e*e+1W*1W+1X*1X);o(1i===0){8 w}f=v.u([b.4[0]/1i,b.4[1]/1i,b.4[2]/1i])}7.K=a;7.W=f;8 7}};11.u=l(a,b,c){9 P=25 11();8 P.1Z(a,b,c)};11.2I=11.u(v.1j(3),v.k);11.2H=11.u(v.1j(3),v.i);11.2G=11.u(v.1j(3),v.j);11.36=11.2I;11.35=11.2H;11.3j=11.2G;9 $V=v.u;9 $M=S.u;9 $L=14.u;9 $P=11.u;',62,206,'||||elements|||this|return|var||||||||||||function|||if||length||||create|Vector|null|||||||||Math|nj|while||do|anchor||||||||Matrix||direction||normal||||kj|Plane|ni|abs|Line|ki|precision|Sylvester|A2|push|A3|map|els|else||undefined|typeof|contains|mod|Zero|D3|D2|isParallelTo|kp|distanceFrom|cols|dup|pointClosestTo|np|reflectionIn|modulus|intersects|A1|sqrt|isSquare|X2|PI|X3|angleFrom|mod1|C2|mod2|sin|cos|break|C3|toRightTriangular|false|Y3|to3D|E2|E1|E3|Rotation|Y2|Y1|intersectionWith|rotate|v12|v13|rank|setVectors|nc|sum|multiply|prototype|eql|new|setElements|case|each|PA3|PA2|part|new_element|round|for|cross|product|AD2|isSameSizeAs|add|isPerpendicularTo|v22|AN3|inspect|AD3|AN2|toUnitVector|PsubQ3|PsubQ2|v23|dot|divisor|inverse|true|isSingular|determinant|max|canMultiplyFromLeft|subtract|rows|col|random|ZX|YZ|XY|Random|join|N2|N1|D1|slice|default|N3|dimensions|switch|liesIn|translate|snapTo|augment|Diagonal|trace|indexOf|diagonal|transpose|minor|row|isAntiparallelTo|ZY|YX|acos|RotationZ|RotationY|liesOn|RotationX|inv|rk|tr|det|toDiagonalMatrix|toUpperTriangular|version|XZ'.split('|'),0,{})) \ No newline at end of file