META-INF.resources.luuesweb.js.snap.svg-min.js Maven / Gradle / Ivy
// Snap.svg 0.3.0
//
// Copyright (c) 2013 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: 2014-06-03
!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) {
"function" == typeof define && define.amd ? define(["eve"], function(c) {
return b(a, c)
}) : b(a, a.eve)
}(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() {
function d(a, b) {
if (a) {
if (a.tagName)
return y(a);
if (f(a, "array") && d.set)
return d.set.apply(d, a);
if (a instanceof u)
return a;
if (null == b)
return a = z.doc.querySelector(a),
y(a)
}
return a = null == a ? "100%" : a,
b = null == b ? "100%" : b,
new x(a,b)
}
function e(a, b) {
if (b) {
if ("#text" == a && (a = z.doc.createTextNode(b.text || "")),
"string" == typeof a && (a = e(a)),
"string" == typeof b)
return "xlink:" == b.substring(0, 6) ? a.getAttributeNS(W, b.substring(6)) : "xml:" == b.substring(0, 4) ? a.getAttributeNS(X, b.substring(4)) : a.getAttribute(b);
for (var c in b)
if (b[A](c)) {
var d = B(b[c]);
d ? "xlink:" == c.substring(0, 6) ? a.setAttributeNS(W, c.substring(6), d) : "xml:" == c.substring(0, 4) ? a.setAttributeNS(X, c.substring(4), d) : a.setAttribute(c, d) : a.removeAttribute(c)
}
} else
a = z.doc.createElementNS(X, a);
return a
}
function f(a, b) {
return b = B.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) || L.call(a).slice(8, -1).toLowerCase() == b
}
function h(a) {
if ("function" == typeof a || Object(a) !== a)
return a;
var b = new a.constructor;
for (var c in a)
a[A](c) && (b[c] = h(a[c]));
return b
}
function i(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 j(a, b, c) {
function d() {
var e = Array.prototype.slice.call(arguments, 0)
, f = e.join("␀")
, g = d.cache = d.cache || {}
, h = d.count = d.count || [];
return g[A](f) ? (i(h, f),
c ? c(g[f]) : g[f]) : (h.length >= 1e3 && delete g[h.shift()],
h.push(f),
g[f] = a.apply(b, e),
c ? c(g[f]) : g[f])
}
return d
}
function k(a, b, c, d, e, f) {
if (null == e) {
var g = a - c
, h = b - d;
return g || h ? (180 + 180 * E.atan2(-h, -g) / I + 360) % 360 : 0
}
return k(a, b, e, f) - k(c, d, e, f)
}
function l(a) {
return a % 360 * I / 180
}
function m(a) {
return 180 * a / I % 360
}
function n(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, E.tan(l(d[0])), 1, 0, 0] : "skewY" == c ? ["m", 1, E.tan(l(d[0])), 0, 1, 0, 0] : [c.charAt(0)].concat(d)),
a
}),
b
}
function o(a, b) {
var c = eb(a)
, e = new d.Matrix;
if (c)
for (var f = 0, g = c.length; g > f; f++) {
var h, i, j, k, l, m = c[f], n = m.length, o = B(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 p(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 = n(b)
} else
b = d._.rgTransform.test(b) ? B(b).replace(/\.{3}|\u2026/g, a._.transform || J) : n(b),
f(b, "array") && (b = d.path ? d.path.toString.call(b) : B(b)),
a._.transform = b;
var e = o(b, a.getBBox(1));
return c ? e : void (a.matrix = e)
}
function q(a) {
var b = a.node.ownerSVGElement && y(a.node.ownerSVGElement) || a.node.parentNode && y(a.node.parentNode) || d.select("svg") || d(0, 0)
, c = b.select("defs")
, e = null == c ? !1 : c.node;
return e || (e = w("defs", b.node).node),
e
}
function r(a) {
return a.node.ownerSVGElement && y(a.node.ownerSVGElement) || d.select("svg")
}
function s(a, b, c) {
function d(a) {
if (null == a)
return J;
if (a == +a)
return a;
e(j, {
width: a
});
try {
return j.getBBox().width
} catch (b) {
return 0
}
}
function f(a) {
if (null == a)
return J;
if (a == +a)
return a;
e(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 = r(a).node
, i = {}
, j = h.querySelector(".svg---mgr");
switch (j || (j = e("rect"),
e(j, {
x: -9e9,
y: -9e9,
width: 10,
height: 10,
"class": "svg---mgr",
fill: "none"
}),
h.appendChild(j)),
a.type) {
case "rect":
g("rx", d),
g("ry", f);
case "image":
g("width", d),
g("height", f);
case "text":
g("x", d),
g("y", f);
break;
case "circle":
g("cx", d),
g("cy", f),
g("r", d);
break;
case "ellipse":
g("cx", d),
g("cy", f),
g("rx", d),
g("ry", f);
break;
case "line":
g("x1", d),
g("x2", d),
g("y1", f),
g("y2", f);
break;
case "marker":
g("refX", d),
g("markerWidth", d),
g("refY", f),
g("markerHeight", f);
break;
case "radialGradient":
g("fx", d),
g("fy", f);
break;
case "tspan":
g("dx", d),
g("dy", f);
break;
default:
g(b, d)
}
return h.removeChild(j),
i
}
function t(a) {
f(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 e = d.childNodes;
for (b = 0; b < e.length; b++)
this[c++] = y(e[b]);
return this
}
function u(a) {
if (a.snap in Y)
return Y[a.snap];
var b, c = this.id = V();
try {
b = a.ownerSVGElement
} catch (d) {}
if (this.node = a,
b && (this.paper = new x(b)),
this.type = a.tagName,
this.anims = {},
this._ = {
transform: []
},
a.snap = c,
Y[c] = this,
"g" == this.type && (this.add = t),
this.type in {
g: 1,
mask: 1,
pattern: 1
})
for (var e in x.prototype)
x.prototype[A](e) && (this[e] = x.prototype[e])
}
function v(a) {
this.node = a
}
function w(a, b) {
var c = e(a);
b.appendChild(c);
var d = y(c);
return d
}
function x(a, b) {
var c, d, f, g = x.prototype;
if (a && "svg" == a.tagName) {
if (a.snap in Y)
return Y[a.snap];
var h = a.ownerDocument;
c = new u(a),
d = a.getElementsByTagName("desc")[0],
f = a.getElementsByTagName("defs")[0],
d || (d = e("desc"),
d.appendChild(h.createTextNode("Created with Snap")),
c.node.appendChild(d)),
f || (f = e("defs"),
c.node.appendChild(f)),
c.defs = f;
for (var i in g)
g[A](i) && (c[i] = g[i]);
c.paper = c.root = c
} else
c = w("svg", z.doc.body),
e(c.node, {
height: b,
version: 1.1,
width: a,
xmlns: X
});
return c
}
function y(a) {
return a ? a instanceof u || a instanceof v ? a : a.tagName && "svg" == a.tagName.toLowerCase() ? new x(a) : a.tagName && "object" == a.tagName.toLowerCase() && "image/svg+xml" == a.type ? new x(a.contentDocument.getElementsByTagName("svg")[0]) : new u(a) : a
}
d.version = "0.3.0",
d.toString = function() {
return "Snap v" + this.version
}
,
d._ = {};
var z = {
win: a,
doc: a.document
};
d._.glob = z;
var A = "hasOwnProperty"
, B = String
, C = parseFloat
, D = parseInt
, E = Math
, F = E.max
, G = E.min
, H = E.abs
, I = (E.pow,
E.PI)
, J = (E.round,
"")
, K = " "
, L = Object.prototype.toString
, M = /^\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
, N = " \n\f\r \u2028\u2029"
, O = (d._.separator = new RegExp("[," + N + "]+"),
new RegExp("[" + N + "]","g"),
new RegExp("[" + N + "]*,[" + N + "]*"))
, P = {
hs: 1,
rg: 1
}
, Q = new RegExp("([a-z])[" + N + ",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[" + N + "]*,?[" + N + "]*)+)","ig")
, R = new RegExp("([rstm])[" + N + ",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[" + N + "]*,?[" + N + "]*)+)","ig")
, S = new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[" + N + "]*,?[" + N + "]*","ig")
, T = 0
, U = "S" + (+new Date).toString(36)
, V = function() {
return U + (T++).toString(36)
}
, W = "http://www.w3.org/1999/xlink"
, X = "http://www.w3.org/2000/svg"
, Y = {}
, Z = d.url = function(a) {
return "url('#" + a + "')"
}
;
d._.$ = e,
d._.id = V,
d.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 B(b).replace(a, function(a, b) {
return c(a, b, d)
})
}
}(),
d._.clone = h,
d._.cacher = j,
d.rad = l,
d.deg = m,
d.angle = k,
d.is = f,
d.snapTo = function(a, b, c) {
if (c = f(c, "finite") ? c : 10,
f(a, "array")) {
for (var d = a.length; d--; )
if (H(a[d] - b) <= c)
return a[d]
} else {
a = +a;
var e = b % a;
if (c > e)
return b - e;
if (e > a - c)
return b - e + a
}
return b
}
,
d.getRGB = j(function(a) {
if (!a || (a = B(a)).indexOf("-") + 1)
return {
r: -1,
g: -1,
b: -1,
hex: "none",
error: 1,
toString: bb
};
if ("none" == a)
return {
r: -1,
g: -1,
b: -1,
hex: "none",
toString: bb
};
if (!(P[A](a.toLowerCase().substring(0, 2)) || "#" == a.charAt()) && (a = $(a)),
!a)
return {
r: -1,
g: -1,
b: -1,
hex: "none",
error: 1,
toString: bb
};
var b, c, e, g, h, i, j = a.match(M);
return j ? (j[2] && (e = D(j[2].substring(5), 16),
c = D(j[2].substring(3, 5), 16),
b = D(j[2].substring(1, 3), 16)),
j[3] && (e = D((h = j[3].charAt(3)) + h, 16),
c = D((h = j[3].charAt(2)) + h, 16),
b = D((h = j[3].charAt(1)) + h, 16)),
j[4] && (i = j[4].split(O),
b = C(i[0]),
"%" == i[0].slice(-1) && (b *= 2.55),
c = C(i[1]),
"%" == i[1].slice(-1) && (c *= 2.55),
e = C(i[2]),
"%" == i[2].slice(-1) && (e *= 2.55),
"rgba" == j[1].toLowerCase().slice(0, 4) && (g = C(i[3])),
i[3] && "%" == i[3].slice(-1) && (g /= 100)),
j[5] ? (i = j[5].split(O),
b = C(i[0]),
"%" == i[0].slice(-1) && (b /= 100),
c = C(i[1]),
"%" == i[1].slice(-1) && (c /= 100),
e = C(i[2]),
"%" == i[2].slice(-1) && (e /= 100),
("deg" == i[0].slice(-3) || "°" == i[0].slice(-1)) && (b /= 360),
"hsba" == j[1].toLowerCase().slice(0, 4) && (g = C(i[3])),
i[3] && "%" == i[3].slice(-1) && (g /= 100),
d.hsb2rgb(b, c, e, g)) : j[6] ? (i = j[6].split(O),
b = C(i[0]),
"%" == i[0].slice(-1) && (b /= 100),
c = C(i[1]),
"%" == i[1].slice(-1) && (c /= 100),
e = C(i[2]),
"%" == i[2].slice(-1) && (e /= 100),
("deg" == i[0].slice(-3) || "°" == i[0].slice(-1)) && (b /= 360),
"hsla" == j[1].toLowerCase().slice(0, 4) && (g = C(i[3])),
i[3] && "%" == i[3].slice(-1) && (g /= 100),
d.hsl2rgb(b, c, e, g)) : (b = G(E.round(b), 255),
c = G(E.round(c), 255),
e = G(E.round(e), 255),
g = G(F(g, 0), 1),
j = {
r: b,
g: c,
b: e,
toString: bb
},
j.hex = "#" + (16777216 | e | c << 8 | b << 16).toString(16).slice(1),
j.opacity = f(g, "finite") ? g : 1,
j)) : {
r: -1,
g: -1,
b: -1,
hex: "none",
error: 1,
toString: bb
}
}, d),
d.hsb = j(function(a, b, c) {
return d.hsb2rgb(a, b, c).hex
}),
d.hsl = j(function(a, b, c) {
return d.hsl2rgb(a, b, c).hex
}),
d.rgb = j(function(a, b, c, d) {
if (f(d, "finite")) {
var e = E.round;
return "rgba(" + [e(a), e(b), e(c), +d.toFixed(2)] + ")"
}
return "#" + (16777216 | c | b << 8 | a << 16).toString(16).slice(1)
});
var $ = function(a) {
var b = z.doc.getElementsByTagName("head")[0] || z.doc.getElementsByTagName("svg")[0]
, c = "rgb(255, 0, 0)";
return ($ = j(function(a) {
if ("red" == a.toLowerCase())
return c;
b.style.color = c,
b.style.color = a;
var d = z.doc.defaultView.getComputedStyle(b, J).getPropertyValue("color");
return d == c ? null : d
}))(a)
}
, _ = function() {
return "hsb(" + [this.h, this.s, this.b] + ")"
}
, ab = function() {
return "hsl(" + [this.h, this.s, this.l] + ")"
}
, bb = function() {
return 1 == this.opacity || null == this.opacity ? this.hex : "rgba(" + [this.r, this.g, this.b, this.opacity] + ")"
}
, cb = function(a, b, c) {
if (null == b && f(a, "object") && "r"in a && "g"in a && "b"in a && (c = a.b,
b = a.g,
a = a.r),
null == b && f(a, string)) {
var e = d.getRGB(a);
a = e.r,
b = e.g,
c = e.b
}
return (a > 1 || b > 1 || c > 1) && (a /= 255,
b /= 255,
c /= 255),
[a, b, c]
}
, db = function(a, b, c, e) {
a = E.round(255 * a),
b = E.round(255 * b),
c = E.round(255 * c);
var g = {
r: a,
g: b,
b: c,
opacity: f(e, "finite") ? e : 1,
hex: d.rgb(a, b, c),
toString: bb
};
return f(e, "finite") && (g.opacity = e),
g
};
d.color = function(a) {
var b;
return f(a, "object") && "h"in a && "s"in a && "b"in a ? (b = d.hsb2rgb(a),
a.r = b.r,
a.g = b.g,
a.b = b.b,
a.opacity = 1,
a.hex = b.hex) : f(a, "object") && "h"in a && "s"in a && "l"in a ? (b = d.hsl2rgb(a),
a.r = b.r,
a.g = b.g,
a.b = b.b,
a.opacity = 1,
a.hex = b.hex) : (f(a, "string") && (a = d.getRGB(a)),
f(a, "object") && "r"in a && "g"in a && "b"in a && !("error"in a) ? (b = d.rgb2hsl(a),
a.h = b.h,
a.s = b.s,
a.l = b.l,
b = d.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 = bb,
a
}
,
d.hsb2rgb = function(a, b, c, d) {
f(a, "object") && "h"in a && "s"in a && "b"in a && (c = a.b,
b = a.s,
a = a.h,
d = a.o),
a *= 360;
var e, g, h, i, j;
return a = a % 360 / 60,
j = c * b,
i = j * (1 - H(a % 2 - 1)),
e = g = h = c - j,
a = ~~a,
e += [j, i, 0, 0, i, j][a],
g += [i, j, j, i, 0, 0][a],
h += [0, 0, i, j, j, i][a],
db(e, g, h, d)
}
,
d.hsl2rgb = function(a, b, c, d) {
f(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 e, g, h, i, j;
return a = a % 360 / 60,
j = 2 * b * (.5 > c ? c : 1 - c),
i = j * (1 - H(a % 2 - 1)),
e = g = h = c - j / 2,
a = ~~a,
e += [j, i, 0, 0, i, j][a],
g += [i, j, j, i, 0, 0][a],
h += [0, 0, i, j, j, i][a],
db(e, g, h, d)
}
,
d.rgb2hsb = function(a, b, c) {
c = cb(a, b, c),
a = c[0],
b = c[1],
c = c[2];
var d, e, f, g;
return f = F(a, b, c),
g = f - G(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: _
}
}
,
d.rgb2hsl = function(a, b, c) {
c = cb(a, b, c),
a = c[0],
b = c[1],
c = c[2];
var d, e, f, g, h, i;
return g = F(a, b, c),
h = G(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: ab
}
}
,
d.parsePathString = function(a) {
if (!a)
return null;
var b = d.path(a);
if (b.arr)
return d.path.clone(b.arr);
var c = {
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
}
, e = [];
return f(a, "array") && f(a[0], "array") && (e = d.path.clone(a)),
e.length || B(a).replace(Q, function(a, b, d) {
var f = []
, g = b.toLowerCase();
if (d.replace(S, function(a, b) {
b && f.push(+b)
}),
"m" == g && f.length > 2 && (e.push([b].concat(f.splice(0, 2))),
g = "l",
b = "m" == b ? "l" : "L"),
"o" == g && 1 == f.length && e.push([b, f[0]]),
"r" == g)
e.push([b].concat(f));
else
for (; f.length >= c[g] && (e.push([b].concat(f.splice(0, c[g]))),
c[g]); )
;
}),
e.toString = d.path.toString,
b.arr = d.path.clone(e),
e
}
;
var eb = d.parseTransformString = function(a) {
if (!a)
return null;
var b = [];
return f(a, "array") && f(a[0], "array") && (b = d.path.clone(a)),
b.length || B(a).replace(R, function(a, c, d) {
{
var e = [];
c.toLowerCase()
}
d.replace(S, function(a, b) {
b && e.push(+b)
}),
b.push([c].concat(e))
}),
b.toString = d.path.toString,
b
}
;
d._.svgTransform2string = n,
d._.rgTransform = new RegExp("^[a-z][" + N + "]*-?\\.?\\d","i"),
d._.transform2matrix = o,
d._unit2px = s;
z.doc.contains || z.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
}
;
d._.getSomeDefs = q,
d._.getSomeSVG = r,
d.select = function(a) {
return y(z.doc.querySelector(a))
}
,
d.selectAll = function(a) {
for (var b = z.doc.querySelectorAll(a), c = (d.set || Array)(), e = 0; e < b.length; e++)
c.push(y(b[e]));
return c
}
,
setInterval(function() {
for (var a in Y)
if (Y[A](a)) {
var b = Y[a]
, c = b.node;
("svg" != b.type && !c.ownerSVGElement || "svg" == b.type && (!c.parentNode || "ownerSVGElement"in c.parentNode && !c.ownerSVGElement)) && delete Y[a]
}
}, 1e4),
function(a) {
function g(a) {
function b(a, b) {
var c = e(a.node, b);
c = c && c.match(g),
c = c && c[2],
c && "#" == c.charAt() && (c = c.substring(1),
c && (i[c] = (i[c] || []).concat(function(c) {
var d = {};
d[b] = Z(c),
e(a.node, d)
})))
}
function c(a) {
var b = e(a.node, "xlink:href");
b && "#" == b.charAt() && (b = b.substring(1),
b && (i[b] = (i[b] || []).concat(function(b) {
a.attr("xlink:href", "#" + b)
})))
}
for (var d, f = a.selectAll("*"), g = /^\s*url\(("|'|)(.*)\1\)\s*$/, h = [], i = {}, j = 0, k = f.length; k > j; j++) {
d = f[j],
b(d, "fill"),
b(d, "stroke"),
b(d, "filter"),
b(d, "mask"),
b(d, "clip-path"),
c(d);
var l = e(d.node, "id");
l && (e(d.node, {
id: d.id
}),
h.push({
old: l,
id: d.id
}))
}
for (j = 0,
k = h.length; k > j; j++) {
var m = i[h[j].old];
if (m)
for (var n = 0, o = m.length; o > n; n++)
m[n](h[j].id)
}
}
function h(a, b, c) {
return function(d) {
var e = d.slice(a, b);
return 1 == e.length && (e = e[0]),
c ? c(e) : e
}
}
function i(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 += y(d[e]).toString());
a && (b += "" + this.type + ">")
} else
a && (b += "/>");
return b
}
}
a.attr = function(a, c) {
{
var d = this;
d.node
}
if (!a)
return d;
if (f(a, "string")) {
if (!(arguments.length > 1))
return b("snap.util.getattr." + a, d).firstDefined();
var e = {};
e[a] = c,
a = e
}
for (var g in a)
a[A](g) && b("snap.util.attr." + g, d, a[g]);
return d
}
,
a.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 j = function() {
return this.string
};
a.transform = function(a) {
var b = this._;
if (null == a) {
for (var c, f = this, g = new d.Matrix(this.node.getCTM()), h = p(this), i = [h], k = new d.Matrix, l = h.toTransformString(), m = B(h) == B(this.matrix) ? B(b.transform) : l; "svg" != f.type && (f = f.parent()); )
i.push(p(f));
for (c = i.length; c--; )
k.add(i[c]);
return {
string: m,
globalMatrix: g,
totalMatrix: k,
localMatrix: h,
diffMatrix: g.clone().add(h.invert()),
global: g.toTransformString(),
total: k.toTransformString(),
local: l,
toString: j
}
}
return a instanceof d.Matrix ? this.matrix = a : p(this, a),
this.node && ("linearGradient" == this.type || "radialGradient" == this.type ? e(this.node, {
gradientTransform: this.matrix
}) : "pattern" == this.type ? e(this.node, {
patternTransform: this.matrix
}) : e(this.node, {
transform: this.matrix
})),
this
}
,
a.parent = function() {
return y(this.node.parentNode)
}
,
a.append = a.add = function(a) {
if (a) {
if ("set" == a.type) {
var b = this;
return a.forEach(function(a) {
b.add(a)
}),
this
}
a = y(a),
this.node.appendChild(a.node),
a.paper = this.paper
}
return this
}
,
a.appendTo = function(a) {
return a && (a = y(a),
a.append(this)),
this
}
,
a.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 = y(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
}
,
a.prependTo = function(a) {
return a = y(a),
a.prepend(this),
this
}
,
a.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 = y(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
}
,
a.after = function(a) {
a = y(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
}
,
a.insertBefore = function(a) {
a = y(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
}
,
a.insertAfter = function(a) {
a = y(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
}
,
a.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
}
,
a.select = function(a) {
return y(this.node.querySelector(a))
}
,
a.selectAll = function(a) {
for (var b = this.node.querySelectorAll(a), c = (d.set || Array)(), e = 0; e < b.length; e++)
c.push(y(b[e]));
return c
}
,
a.asPX = function(a, b) {
return null == b && (b = this.attr(a)),
+s(this, a, b)
}
,
a.use = function() {
var a, b = this.node.id;
return b || (b = this.id,
e(this.node, {
id: b
})),
a = "linearGradient" == this.type || "radialGradient" == this.type || "pattern" == this.type ? w(this.type, this.node.parentNode) : w("use", this.node.parentNode),
e(a.node, {
"xlink:href": "#" + b
}),
a.original = this,
a
}
;
var k = /\S+/g;
a.addClass = function(a) {
var b, c, d, e, f = (a || "").match(k) || [], g = this.node, h = g.className.baseVal, i = h.match(k) || [];
if (f.length) {
for (b = 0; d = f[b++]; )
c = i.indexOf(d),
~c || i.push(d);
e = i.join(" "),
h != e && (g.className.baseVal = e)
}
return this
}
,
a.removeClass = function(a) {
var b, c, d, e, f = (a || "").match(k) || [], g = this.node, h = g.className.baseVal, i = h.match(k) || [];
if (i.length) {
for (b = 0; d = f[b++]; )
c = i.indexOf(d),
~c && i.splice(c, 1);
e = i.join(" "),
h != e && (g.className.baseVal = e)
}
return this
}
,
a.hasClass = function(a) {
var b = this.node
, c = b.className.baseVal
, d = c.match(k) || [];
return !!~d.indexOf(a)
}
,
a.toggleClass = function(a, b) {
if (null != b)
return b ? this.addClass(a) : this.removeClass(a);
var c, d, e, f, g = (a || "").match(k) || [], h = this.node, i = h.className.baseVal, j = i.match(k) || [];
for (c = 0; e = g[c++]; )
d = j.indexOf(e),
~d ? j.splice(d, 1) : j.push(e);
return f = j.join(" "),
i != f && (h.className.baseVal = f),
this
}
,
a.clone = function() {
var a = y(this.node.cloneNode(!0));
return e(a.node, "id") && e(a.node, {
id: a.id
}),
g(a),
a.insertAfter(this),
a
}
,
a.toDefs = function() {
var a = q(this);
return a.appendChild(this.node),
this
}
,
a.pattern = a.toPattern = function(a, b, c, d) {
var g = w("pattern", q(this));
return null == a && (a = this.getBBox()),
f(a, "object") && "x"in a && (b = a.y,
c = a.width,
d = a.height,
a = a.x),
e(g.node, {
x: a,
y: b,
width: c,
height: d,
patternUnits: "userSpaceOnUse",
id: g.id,
viewBox: [a, b, c, d].join(" ")
}),
g.node.appendChild(this.node),
g
}
,
a.marker = function(a, b, c, d, g, h) {
var i = w("marker", q(this));
return null == a && (a = this.getBBox()),
f(a, "object") && "x"in a && (b = a.y,
c = a.width,
d = a.height,
g = a.refX || a.cx,
h = a.refY || a.cy,
a = a.x),
e(i.node, {
viewBox: [a, b, c, d].join(K),
markerWidth: c,
markerHeight: d,
orient: "auto",
refX: g || 0,
refY: h || 0,
id: i.id
}),
i.node.appendChild(this.node),
i
}
;
var l = 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 = l,
d.animation = function(a, b, c, d) {
return new l(a,b,c,d)
}
,
a.inAnim = function() {
var a = this
, b = [];
for (var c in a.anims)
a.anims[A](c) && !function(a) {
b.push({
anim: new l(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
}
,
a.stop = function() {
for (var a = this.inAnim(), b = 0, c = a.length; c > b; b++)
a[b].stop();
return this
}
,
a.animate = function(a, d, e, g) {
"function" != typeof e || e.length || (g = e,
e = c.linear),
a instanceof l && (g = a.callback,
e = a.easing,
d = e.dur,
a = a.attr);
var i, j, k, m, n = [], o = [], p = {}, q = this;
for (var r in a)
if (a[A](r)) {
q.equal ? (m = q.equal(r, B(a[r])),
i = m.from,
j = m.to,
k = m.f) : (i = +q.attr(r),
j = +a[r]);
var s = f(i, "array") ? i.length : 1;
p[r] = h(n.length, n.length + s, k),
n = n.concat(i),
o = o.concat(j)
}
var t = c.time()
, u = c(n, o, t, t + d, c.time, function(a) {
var b = {};
for (var c in p)
p[A](c) && (b[c] = p[c](a));
q.attr(b)
}, e);
return q.anims[u.id] = u,
u._attrs = a,
u._callback = g,
b("snap.animcreated." + q.id, u),
b.once("mina.finish." + u.id, function() {
delete q.anims[u.id],
g && g.call(q)
}),
b.once("mina.stop." + u.id, function() {
delete q.anims[u.id]
}),
q
}
;
var m = {};
a.data = function(a, c) {
var e = m[this.id] = m[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[A](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
}
,
a.removeData = function(a) {
return null == a ? m[this.id] = {} : m[this.id] && delete m[this.id][a],
this
}
,
a.outerSVG = a.toString = i(1),
a.innerSVG = i()
}(u.prototype),
d.parse = function(a) {
var b = z.doc.createDocumentFragment()
, c = !0
, d = z.doc.createElement("div");
if (a = B(a),
a.match(/^\s*<\s*svg(?:\s|>)/) || (a = "",
c = !1),
d.innerHTML = a,
a = d.getElementsByTagName("svg")[0])
if (c)
b = a;
else
for (; a.firstChild; )
b.appendChild(a.firstChild);
return d.innerHTML = J,
new v(b)
}
,
v.prototype.select = u.prototype.select,
v.prototype.selectAll = u.prototype.selectAll,
d.fragment = function() {
for (var a = Array.prototype.slice.call(arguments, 0), b = z.doc.createDocumentFragment(), c = 0, e = a.length; e > c; c++) {
var f = a[c];
f.node && f.node.nodeType && b.appendChild(f.node),
f.nodeType && b.appendChild(f),
"string" == typeof f && b.appendChild(d.parse(f).node)
}
return new v(b)
}
,
d._.make = w,
d._.wrap = y,
x.prototype.el = function(a, b) {
var c = w(a, this.node);
return b && c.attr(b),
c
}
,
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 fb[A](c) ? this.node.ownerDocument.defaultView.getComputedStyle(this.node, null).getPropertyValue(c) : e(this.node, a)
});
var fb = {
"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()
, d = {};
c = c.substring(c.lastIndexOf(".") + 1),
d[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()
});
fb[A](g) ? this.node.style[f] = null == a ? J : a : e(this.node, d)
}),
function() {}(x.prototype),
d.ajax = function(a, c, d, e) {
var g = new XMLHttpRequest
, h = V();
if (g) {
if (f(c, "function"))
e = d,
d = c,
c = null;
else if (f(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, e, g)
}
,
4 == g.readyState ? g : (g.send(c),
g)
}
}
,
d.load = function(a, b, c) {
d.ajax(a, function(a) {
var e = d.parse(a.responseText);
c ? b.call(c, e) : b(e)
})
}
;
var gb = 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 d.getElementByPoint = function(a, b) {
var c = this
, d = (c.canvas,
z.doc.elementFromPoint(a, b));
if (z.win.opera && "svg" == d.tagName) {
var e = gb(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 ? y(d) : null
}
,
d.plugin = function(a) {
a(d, u, x, z, v)
}
,
z.win.Snap = d,
d
}();
return 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.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() {
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(a, c, d, e) {
var f = d.prototype
, g = a.is;
f.rect = function(a, b, c, d, e, f) {
var h;
return null == f && (f = e),
g(a, "object") && "[object Object]" == a ? h = a : null != a && (h = {
x: a,
y: b,
width: c,
height: d
},
null != e && (h.rx = e,
h.ry = f)),
this.el("rect", h)
}
,
f.circle = function(a, b, c) {
var d;
return g(a, "object") && "[object Object]" == a ? d = a : null != a && (d = {
cx: a,
cy: b,
r: c
}),
this.el("circle", d)
}
;
var h = function() {
function a() {
this.parentNode.removeChild(this)
}
return function(b, c) {
var d = e.doc.createElement("img")
, f = e.doc.body;
d.style.cssText = "position:absolute;left:-9999em;top:-9999em",
d.onload = function() {
c.call(d),
d.onload = d.onerror = null,
f.removeChild(d)
}
,
d.onerror = a,
f.appendChild(d),
d.src = b
}
}();
f.image = function(b, c, d, e, f) {
var i = this.el("image");
if (g(b, "object") && "src"in b)
i.attr(b);
else if (null != b) {
var j = {
"xlink:href": b,
preserveAspectRatio: "none"
};
null != c && null != d && (j.x = c,
j.y = d),
null != e && null != f ? (j.width = e,
j.height = f) : h(b, function() {
a._.$(i.node, {
width: this.offsetWidth,
height: this.offsetHeight
})
}),
a._.$(i.node, j)
}
return i
}
,
f.ellipse = function(a, b, c, d) {
var e;
return g(a, "object") && "[object Object]" == a ? e = a : null != a && (e = {
cx: a,
cy: b,
rx: c,
ry: d
}),
this.el("ellipse", e)
}
,
f.path = function(a) {
var b;
return g(a, "object") && !g(a, "array") ? b = a : a && (b = {
d: a
}),
this.el("path", b)
}
,
f.group = f.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
}
,
f.svg = function(a, b, c, d, e, f, h, i) {
var j = {};
return g(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 != h && null != i && (j.viewBox = [e, f, h, i])),
this.el("svg", j)
}
,
f.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
}
,
f.ptrn = function(a, b, c, d, e, f, h, i) {
if (g(a, "object"))
var j = a;
else
arguments.length ? (j = {},
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 != h && null != i && (j.viewBox = [e, f, h, i])) : j = {
patternUnits: "userSpaceOnUse"
};
return this.el("pattern", j)
}
,
f.use = function(a) {
if (null != a) {
{
make("use", this.node)
}
return a instanceof c && (a.attr("id") || a.attr({
id: ID()
}),
a = a.attr("id")),
this.el("use", {
"xlink:href": a
})
}
return c.prototype.use.call(this)
}
,
f.text = function(a, b, c) {
var d = {};
return g(a, "object") ? d = a : null != a && (d = {
x: a,
y: b,
text: c || ""
}),
this.el("text", d)
}
,
f.line = function(a, b, c, d) {
var e = {};
return g(a, "object") ? e = a : null != a && (e = {
x1: a,
x2: c,
y1: b,
y2: d
}),
this.el("line", e)
}
,
f.polyline = function(a) {
arguments.length > 1 && (a = Array.prototype.slice.call(arguments, 0));
var b = {};
return g(a, "object") && !g(a, "array") ? b = a : null != a && (b = {
points: a
}),
this.el("polyline", b)
}
,
f.polygon = function(a) {
arguments.length > 1 && (a = Array.prototype.slice.call(arguments, 0));
var b = {};
return g(a, "object") && !g(a, "array") ? b = a : null != a && (b = {
points: a
}),
this.el("polygon", b)
}
,
function() {
function c() {
return this.selectAll("stop")
}
function d(b, c) {
var d = j("stop")
, e = {
offset: +c + "%"
};
return b = a.color(b),
e["stop-color"] = b.hex,
b.opacity < 1 && (e["stop-opacity"] = b.opacity),
j(d, e),
this.node.appendChild(d),
this
}
function e() {
if ("linearGradient" == this.type) {
var b = j(this.node, "x1") || 0
, c = j(this.node, "x2") || 1
, d = j(this.node, "y1") || 0
, e = j(this.node, "y2") || 0;
return a._.box(b, d, math.abs(c - b), math.abs(e - d))
}
var f = this.node.cx || .5
, g = this.node.cy || .5
, h = this.node.r || 0;
return a._.box(f - h, g - h, 2 * h, 2 * h)
}
function g(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() ? h.apply(0, f.params) : i.apply(0, f.params),
f.type != f.type.toLowerCase() && j(e.node, {
gradientUnits: "userSpaceOnUse"
});
var g = f.stops
, k = g.length
, l = 0
, m = 0;
k--;
for (var n = 0; k > n; n++)
"offset"in g[n] && d(n, g[n].offset);
for (g[k].offset = g[k].offset || 100,
d(k, g[k].offset),
n = 0; k >= n; n++) {
var o = g[n];
e.addStop(o.color, o.offset)
}
return e
}
function h(b, f, g, h, i) {
var k = a._.make("linearGradient", b);
return k.stops = c,
k.addStop = d,
k.getBBox = e,
null != f && j(k.node, {
x1: f,
y1: g,
x2: h,
y2: i
}),
k
}
function i(b, f, g, h, i, k) {
var l = a._.make("radialGradient", b);
return l.stops = c,
l.addStop = d,
l.getBBox = e,
null != f && j(l.node, {
cx: f,
cy: g,
r: h
}),
null != i && null != k && j(l.node, {
fx: i,
fy: k
}),
l
}
var j = a._.$;
f.gradient = function(a) {
return g(this.defs, a)
}
,
f.gradientLinear = function(a, b, c, d) {
return h(this.defs, a, b, c, d)
}
,
f.gradientRadial = function(a, b, c, d, e) {
return i(this.defs, a, b, c, d, e)
}
,
f.toString = function() {
var b, c = this.node.ownerDocument, d = c.createDocumentFragment(), e = c.createElement("div"), f = this.node.cloneNode(!0);
return d.appendChild(e),
e.appendChild(f),
a._.$(f, {
xmlns: "http://www.w3.org/2000/svg"
}),
b = e.innerHTML,
d.removeChild(d.firstChild),
b
}
,
f.clear = function() {
for (var a, b = this.node.firstChild; b; )
a = b.nextSibling,
"defs" != b.tagName ? b.parentNode.removeChild(b) : f.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.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 = g && function() {
l++ == this.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, m)
})
}
,
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 = 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 = m(c).replace(/\.{3}|\u2026/g, b),
b = a.parseTransformString(b) || [],
c = a.parseTransformString(c) || [];
for (var f, g, h, k, l = Math.max(b.length, c.length), n = [], o = [], p = 0; l > p; p++) {
if (h = b[p] || d(c[p]),
k = c[p] || d(h),
h[0] != k[0] || "r" == h[0].toLowerCase() && (h[2] != k[2] || h[3] != k[3]) || "s" == h[0].toLowerCase() && (h[3] != k[3] || h[4] != k[4])) {
b = a._.transform2matrix(b, e()),
c = a._.transform2matrix(c, e()),
n = [["m", b.a, b.b, b.c, b.d, b.e, b.f]],
o = [["m", c.a, c.b, c.c, c.d, c.e, c.f]];
break
}
for (n[p] = [],
o[p] = [],
f = 0,
g = Math.max(h.length, k.length); g > f; f++)
f in h && (n[p][f] = h[f]),
f in k && (o[p][f] = k[f])
}
return {
from: j(n),
to: j(o),
f: i(n)
}
}
function f(a) {
return a
}
function g(a) {
return function(b) {
return +b.toFixed(3) + a
}
}
function h(b) {
return a.rgb(b[0], b[1], b[2])
}
function i(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 j(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
}
var k = {}
, l = /[a-z]+$/i
, m = String;
k.stroke = k.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, n, o = m(this.attr(b) || ""), p = this;
if (o == +o && c == +c)
return {
from: +o,
to: +c,
f: f
};
if ("colour" == k[b])
return d = a.color(o),
n = a.color(c),
{
from: [d.r, d.g, d.b, d.opacity],
to: [n.r, n.g, n.b, n.opacity],
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(o, c, function() {
return p.getBBox(1)
});
if ("d" == b || "path" == b)
return d = a.path.toCubic(o, c),
{
from: j(d[0]),
to: j(d[1]),
f: i(d[0])
};
if ("points" == b)
return d = m(o).split(a._.separator),
n = m(c).split(a._.separator),
{
from: d,
to: n,
f: function(a) {
return a
}
};
aUnit = o.match(l);
var q = m(c).match(l);
return aUnit && aUnit == q ? {
from: parseFloat(o),
to: parseFloat(c),
f: g(aUnit)
} : {
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() {
this.returnValue = !1
}, m = function() {
return this.originalEvent.preventDefault()
}, n = function() {
this.cancelBubble = !0
}, o = function() {
return this.originalEvent.stopPropagation()
}, p = function() {
return e.doc.addEventListener ? 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 l = 0, n = e.targetTouches && e.targetTouches.length; n > l; l++)
if (e.targetTouches[l].target == a || a.contains(e.targetTouches[l].target)) {
var p = e;
e = e.targetTouches[l],
e.originalEvent = p,
e.preventDefault = m,
e.stopPropagation = o;
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
}
}
: e.doc.attachEvent ? function(a, b, c, d) {
var e = function(a) {
a = a || d.node.ownerDocument.window.event;
var b = k("y", d)
, e = k("x", d)
, f = a.clientX + e
, g = a.clientY + b;
return a.preventDefault = a.preventDefault || l,
a.stopPropagation = a.stopPropagation || n,
c.call(d, a, f, g)
};
a.attachEvent("on" + b, e);
var f = function() {
return a.detachEvent("on" + b, e),
!0
};
return f
}
: void 0
}(), q = [], r = function(a) {
for (var c, d = a.clientX, e = a.clientY, f = k("y"), g = k("x"), i = q.length; i--; ) {
if (c = q[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)
}
}, s = function(c) {
a.unmousemove(r).unmouseup(s);
for (var d, e = q.length; e--; )
d = q[e],
d.el._drag = {},
b("snap.drag.end." + d.el.id, d.end_scope || d.start_scope || d.move_scope || d.el, c);
q = []
}, t = i.length; t--; )
!function(b) {
a[b] = f[b] = function(c, d) {
return a.is(c, "function") && (this.events = this.events || [],
this.events.push({
name: b,
f: c,
unbind: p(this.node || document, b, c, d || this)
})),
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[t]);
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 u = [];
f.drag = function(c, d, e, f, g, h) {
function i(i, j, k) {
(i.originalEvent || i).preventDefault(),
this._drag.x = j,
this._drag.y = k,
this._drag.id = i.identifier,
!q.length && a.mousemove(r).mouseup(s),
q.push({
el: this,
move_scope: f,
start_scope: g,
end_scope: h
}),
d && b.on("snap.drag.start." + this.id, d),
c && b.on("snap.drag.move." + this.id, c),
e && b.on("snap.drag.end." + this.id, e),
b("snap.drag.start." + this.id, g || f || this, j, k, i)
}
if (!arguments.length) {
var j;
return this.drag(function(a, b) {
this.attr({
transform: j + (j ? "T" : "t") + [a, b]
})
}, function() {
j = this.transform().local
})
}
return this._drag = {},
u.push({
el: this,
start: i
}),
this.mousedown(i),
this
}
,
f.undrag = function() {
for (var c = u.length; c--; )
u[c].el == this && (this.unmousedown(u[c].start),
u.splice(c, 1),
b.unbind("snap.drag.*." + this.id));
return !u.length && a.unmousemove(r).unmouseup(s),
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(' ', {
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(' ', {
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(' ', {
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(' ', {
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(' ', {
amount: 1 - b
})
}
,
a.filter.saturate.toString = function() {
return this()
}
,
a.filter.hueRotate = function(b) {
return b = b || 0,
a.format(' ', {
angle: b
})
}
,
a.filter.hueRotate.toString = function() {
return this()
}
,
a.filter.invert = function(b) {
return null == b && (b = 1),
a.format(' ', {
amount: b,
amount2: 1 - b
})
}
,
a.filter.invert.toString = function() {
return this()
}
,
a.filter.brightness = function(b) {
return null == b && (b = 1),
a.format(' ', {
amount: b
})
}
,
a.filter.brightness.toString = function() {
return this()
}
,
a.filter.contrast = function(b) {
return null == b && (b = 1),
a.format(' ', {
amount: b,
amount2: .5 - b / 2
})
}
,
a.filter.contrast.toString = function() {
return this()
}
}),
d
});