! function(t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define .amd ? define(["exports"], e) : e(t.echarts = {}) }(this, function(t) { "use strict"; function e(t) { var e = {}, n = {}, i = t.match(/Firefox\/([\d.]+)/), r = t.match(/MSIE\s([\d.]+)/) || t.match(/Trident\/.+?rv:(([\d.]+))/), o = t.match(/Edge\/([\d.]+)/), a = /micromessenger/i.test(t); return i && (n.firefox = !0, n.version = i[1]), r && (n.ie = !0, n.version = r[1]), o && (n.edge = !0, n .version = o[1]), a && (n.weChat = !0), { browser: n, os: e, node: !1, canvasSupported: !!document.createElement("canvas").getContext, svgSupported: "undefined" != typeof SVGRect, touchEventsSupported: "ontouchstart" in window && !n.ie && !n.edge, pointerEventsSupported: "onpointerdown" in window && (n.edge || n.ie && n.version >= 11), domSupported: "undefined" != typeof document } } function n(t, e) { "createCanvas" === t && (Mp = null), bp[t] = e } function i(t) { if (null == t || "object" != typeof t) return t; var e = t, n = gp.call(t); if ("[object Array]" === n) { if (!B(t)) { e = []; for (var r = 0, o = t.length; o > r; r++) e[r] = i(t[r]) } } else if (pp[n]) { if (!B(t)) { var a = t.constructor; if (t.constructor.from) e = a.from(t); else { e = new a(t.length); for (var r = 0, o = t.length; o > r; r++) e[r] = i(t[r]) } } } else if (!fp[n] && !B(t) && !C(t)) { e = {}; for (var s in t) t.hasOwnProperty(s) && (e[s] = i(t[s])) } return e } function r(t, e, n) { if (!S(e) || !S(t)) return n ? i(e) : t; for (var o in e) if (e.hasOwnProperty(o)) { var a = t[o], s = e[o]; !S(s) || !S(a) || _(s) || _(a) || C(s) || C(a) || M(s) || M(a) || B(s) || B(a) ? !n && o in t || (t[ o] = i(e[o], !0)) : r(a, s, n) } return t } function o(t, e) { for (var n = t[0], i = 1, o = t.length; o > i; i++) n = r(n, t[i], e); return n } function a(t, e) { for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]); return t } function s(t, e, n) { for (var i in e) e.hasOwnProperty(i) && (n ? null != e[i] : null == t[i]) && (t[i] = e[i]); return t } function l() { return Mp || (Mp = Sp().getContext("2d")), Mp } function u(t, e) { if (t) { if (t.indexOf) return t.indexOf(e); for (var n = 0, i = t.length; i > n; n++) if (t[n] === e) return n } return -1 } function h(t, e) { function n() {} var i = t.prototype; n.prototype = e.prototype, t.prototype = new n; for (var r in i) i.hasOwnProperty(r) && (t.prototype[r] = i[r]); t.prototype.constructor = t, t.superClass = e } function c(t, e, n) { t = "prototype" in t ? t.prototype : t, e = "prototype" in e ? e.prototype : e, s(t, e, n) } function d(t) { return t ? "string" == typeof t ? !1 : "number" == typeof t.length : void 0 } function f(t, e, n) { if (t && e) if (t.forEach && t.forEach === mp) t.forEach(e, n); else if (t.length === +t.length) for (var i = 0, r = t.length; r > i; i++) e.call(n, t[i], i, t); else for (var o in t) t.hasOwnProperty(o) && e.call(n, t[o], o, t) } function p(t, e, n) { if (t && e) { if (t.map && t.map === _p) return t.map(e, n); for (var i = [], r = 0, o = t.length; o > r; r++) i.push(e.call(n, t[r], r, t)); return i } } function g(t, e, n, i) { if (t && e) { if (t.reduce && t.reduce === wp) return t.reduce(e, n, i); for (var r = 0, o = t.length; o > r; r++) n = e.call(i, n, t[r], r, t); return n } } function v(t, e, n) { if (t && e) { if (t.filter && t.filter === yp) return t.filter(e, n); for (var i = [], r = 0, o = t.length; o > r; r++) e.call(n, t[r], r, t) && i.push(t[r]); return i } } function m(t, e, n) { if (t && e) for (var i = 0, r = t.length; r > i; i++) if (e.call(n, t[i], i, t)) return t[i] } function y(t, e) { var n = xp.call(arguments, 2); return function() { return t.apply(e, n.concat(xp.call(arguments))) } } function x(t) { var e = xp.call(arguments, 1); return function() { return t.apply(this, e.concat(xp.call(arguments))) } } function _(t) { return "[object Array]" === gp.call(t) } function w(t) { return "function" == typeof t } function b(t) { return "[object String]" === gp.call(t) } function S(t) { var e = typeof t; return "function" === e || !!t && "object" === e } function M(t) { return !!fp[gp.call(t)] } function I(t) { return !!pp[gp.call(t)] } function C(t) { return "object" == typeof t && "number" == typeof t.nodeType && "object" == typeof t.ownerDocument } function T(t) { return t !== t } function A() { for (var t = 0, e = arguments.length; e > t; t++) if (null != arguments[t]) return arguments[t] } function D(t, e) { return null != t ? t : e } function k(t, e, n) { return null != t ? t : null != e ? e : n } function P() { return Function.call.apply(xp, arguments) } function O(t) { if ("number" == typeof t) return [t, t, t, t]; var e = t.length; return 2 === e ? [t[0], t[1], t[0], t[1]] : 3 === e ? [t[0], t[1], t[2], t[1]] : t } function L(t, e) { if (!t) throw new Error(e) } function z(t) { return null == t ? null : "function" == typeof t.trim ? t.trim() : t.replace( /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "") } function E(t) { t[Ip] = !0 } function B(t) { return t[Ip] } function R(t) { function e(t, e) { n ? i.set(t, e) : i.set(e, t) } var n = _(t); this.data = {}; var i = this; t instanceof R ? t.each(e) : t && f(t, e) } function N(t) { return new R(t) } function F(t, e) { for (var n = new t.constructor(t.length + e.length), i = 0; i < t.length; i++) n[i] = t[i]; var r = t.length; for (i = 0; i < e.length; i++) n[i + r] = e[i]; return n } function V() {} function W(t, e) { var n = new Tp(2); return null == t && (t = 0), null == e && (e = 0), n[0] = t, n[1] = e, n } function H(t, e) { return t[0] = e[0], t[1] = e[1], t } function G(t) { var e = new Tp(2); return e[0] = t[0], e[1] = t[1], e } function Z(t, e, n) { return t[0] = e, t[1] = n, t } function X(t, e, n) { return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t } function Y(t, e, n, i) { return t[0] = e[0] + n[0] * i, t[1] = e[1] + n[1] * i, t } function U(t, e, n) { return t[0] = e[0] - n[0], t[1] = e[1] - n[1], t } function j(t) { return Math.sqrt(q(t)) } function q(t) { return t[0] * t[0] + t[1] * t[1] } function K(t, e, n) { return t[0] = e[0] * n[0], t[1] = e[1] * n[1], t } function $(t, e, n) { return t[0] = e[0] / n[0], t[1] = e[1] / n[1], t } function Q(t, e) { return t[0] * e[0] + t[1] * e[1] } function J(t, e, n) { return t[0] = e[0] * n, t[1] = e[1] * n, t } function te(t, e) { var n = j(e); return 0 === n ? (t[0] = 0, t[1] = 0) : (t[0] = e[0] / n, t[1] = e[1] / n), t } function ee(t, e) { return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1])) } function ne(t, e) { return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]) } function ie(t, e) { return t[0] = -e[0], t[1] = -e[1], t } function re(t, e, n, i) { return t[0] = e[0] + i * (n[0] - e[0]), t[1] = e[1] + i * (n[1] - e[1]), t } function oe(t, e, n) { var i = e[0], r = e[1]; return t[0] = n[0] * i + n[2] * r + n[4], t[1] = n[1] * i + n[3] * r + n[5], t } function ae(t, e, n) { return t[0] = Math.min(e[0], n[0]), t[1] = Math.min(e[1], n[1]), t } function se(t, e, n) { return t[0] = Math.max(e[0], n[0]), t[1] = Math.max(e[1], n[1]), t } function le() { this.on("mousedown", this._dragStart, this), this.on("mousemove", this._drag, this), this.on("mouseup", this ._dragEnd, this) } function ue(t, e) { return { target: t, topTarget: e && e.topTarget } } function he(t, e) { var n = t._$eventProcessor; return null != e && n && n.normalizeQuery && (e = n.normalizeQuery(e)), e } function ce(t, e, n, i, r, o) { var a = t._$handlers; if ("function" == typeof n && (r = i, i = n, n = null), !i || !e) return t; n = he(t, n), a[e] || (a[e] = []); for (var s = 0; s < a[e].length; s++) if (a[e][s].h === i) return t; var l = { h: i, one: o, query: n, ctx: r || t, callAtLast: i.zrEventfulCallAtLast }, u = a[e].length - 1, h = a[e][u]; return h && h.callAtLast ? a[e].splice(u, 0, l) : a[e].push(l), t } function de(t, e, n, i, r, o) { var a = i + "-" + r, s = t.length; if (o.hasOwnProperty(a)) return o[a]; if (1 === e) { var l = Math.round(Math.log((1 << s) - 1 & ~r) / Ep); return t[n][l] } for (var u = i | 1 << n, h = n + 1; i & 1 << h;) h++; for (var c = 0, d = 0, f = 0; s > d; d++) { var p = 1 << d; p & r || (c += (f % 2 ? -1 : 1) * t[n][d] * de(t, e - 1, h, u, r | p, o), f++) } return o[a] = c, c } function fe(t, e) { var n = [ [t[0], t[1], 1, 0, 0, 0, -e[0] * t[0], -e[0] * t[1]], [0, 0, 0, t[0], t[1], 1, -e[1] * t[0], -e[1] * t[1]], [t[2], t[3], 1, 0, 0, 0, -e[2] * t[2], -e[2] * t[3]], [0, 0, 0, t[2], t[3], 1, -e[3] * t[2], -e[3] * t[3]], [t[4], t[5], 1, 0, 0, 0, -e[4] * t[4], -e[4] * t[5]], [0, 0, 0, t[4], t[5], 1, -e[5] * t[4], -e[5] * t[5]], [t[6], t[7], 1, 0, 0, 0, -e[6] * t[6], -e[6] * t[7]], [0, 0, 0, t[6], t[7], 1, -e[7] * t[6], -e[7] * t[7]] ], i = {}, r = de(n, 8, 0, 0, 0, i); if (0 !== r) { for (var o = [], a = 0; 8 > a; a++) for (var s = 0; 8 > s; s++) null == o[s] && (o[s] = 0), o[s] += ((a + s) % 2 ? -1 : 1) * de(n, 7, 0 === a ? 1 : 0, 1 << a, 1 << s, i) / r * e[a]; return function(t, e, n) { var i = e * o[6] + n * o[7] + 1; t[0] = (e * o[0] + n * o[1] + o[2]) / i, t[1] = (e * o[3] + n * o[4] + o[5]) / i } } } function pe(t, e, n, i, r) { return ge(Rp, e, i, r, !0) && ge(t, n, Rp[0], Rp[1]) } function ge(t, e, n, i, r) { if (e.getBoundingClientRect && dp.domSupported && !ye(e)) { var o = e[Bp] || (e[Bp] = {}), a = ve(e, o), s = me(a, o, r); if (s) return s(t, n, i), !0 } return !1 } function ve(t, e) { var n = e.markers; if (n) return n; n = e.markers = []; for (var i = ["left", "right"], r = ["top", "bottom"], o = 0; 4 > o; o++) { var a = document.createElement("div"), s = a.style, l = o % 2, u = (o >> 1) % 2; s.cssText = ["position: absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "user-select: none", "width:0", "height:0", i[l] + ":0", r[u] + ":0", i[1 - l] + ":auto", r[1 - u] + ":auto", "" ].join("!important;"), t.appendChild(a), n.push(a) } return n } function me(t, e, n) { for (var i = n ? "invTrans" : "trans", r = e[i], o = e.srcCoords, a = !0, s = [], l = [], u = 0; 4 > u; u++) { var h = t[u].getBoundingClientRect(), c = 2 * u, d = h.left, f = h.top; s.push(d, f), a = a && o && d === o[c] && f === o[c + 1], l.push(t[u].offsetLeft, t[u].offsetTop) } return a && r ? r : (e.srcCoords = s, e[i] = n ? fe(l, s) : fe(s, l)) } function ye(t) { return "CANVAS" === t.nodeName.toUpperCase() } function xe(t, e, n, i) { return n = n || {}, i || !dp.canvasSupported ? _e(t, e, n) : dp.browser.firefox && null != e.layerX && e .layerX !== e.offsetX ? (n.zrX = e.layerX, n.zrY = e.layerY) : null != e.offsetX ? (n.zrX = e.offsetX, n .zrY = e.offsetY) : _e(t, e, n), n } function _e(t, e, n) { if (dp.domSupported && t.getBoundingClientRect) { var i = e.clientX, r = e.clientY; if (ye(t)) { var o = t.getBoundingClientRect(); return n.zrX = i - o.left, void(n.zrY = r - o.top) } if (ge(Vp, t, i, r)) return n.zrX = Vp[0], void(n.zrY = Vp[1]) } n.zrX = n.zrY = 0 } function we(t) { return t || window.event } function be(t, e, n) { if (e = we(e), null != e.zrX) return e; var i = e.type, r = i && i.indexOf("touch") >= 0; if (r) { var o = "touchend" !== i ? e.targetTouches[0] : e.changedTouches[0]; o && xe(t, o, e, n) } else xe(t, e, e, n), e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3; var a = e.button; return null == e.which && void 0 !== a && Fp.test(e.type) && (e.which = 1 & a ? 1 : 2 & a ? 3 : 4 & a ? 2 : 0), e } function Se(t, e, n, i) { Np ? t.addEventListener(e, n, i) : t.attachEvent("on" + e, n) } function Me(t, e, n, i) { Np ? t.removeEventListener(e, n, i) : t.detachEvent("on" + e, n) } function Ie(t) { return 2 === t.which || 3 === t.which } function Ce(t) { var e = t[1][0] - t[0][0], n = t[1][1] - t[0][1]; return Math.sqrt(e * e + n * n) } function Te(t) { return [(t[0][0] + t[1][0]) / 2, (t[0][1] + t[1][1]) / 2] } function Ae(t, e, n) { return { type: t, event: n, target: e.target, topTarget: e.topTarget, cancelBubble: !1, offsetX: n.zrX, offsetY: n.zrY, gestureEvent: n.gestureEvent, pinchX: n.pinchX, pinchY: n.pinchY, pinchScale: n.pinchScale, wheelDelta: n.zrDelta, zrByTouch: n.zrByTouch, which: n.which, stop: De } } function De() { Wp(this.event) } function ke() {} function Pe(t, e, n) { if (t[t.rectHover ? "rectContain" : "contain"](e, n)) { for (var i, r = t; r;) { if (r.clipPath && !r.clipPath.contain(e, n)) return !1; r.silent && (i = !0), r = r.parent } return i ? Zp : !0 } return !1 } function Oe(t, e, n) { var i = t.painter; return 0 > e || e > i.getWidth() || 0 > n || n > i.getHeight() } function Le() { var t = new Up(6); return ze(t), t } function ze(t) { return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t } function Ee(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], t } function Be(t, e, n) { var i = e[0] * n[0] + e[2] * n[1], r = e[1] * n[0] + e[3] * n[1], o = e[0] * n[2] + e[2] * n[3], a = e[1] * n[2] + e[3] * n[3], s = e[0] * n[4] + e[2] * n[5] + e[4], l = e[1] * n[4] + e[3] * n[5] + e[5]; return t[0] = i, t[1] = r, t[2] = o, t[3] = a, t[4] = s, t[5] = l, t } function Re(t, e, n) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4] + n[0], t[5] = e[5] + n[1], t } function Ne(t, e, n) { var i = e[0], r = e[2], o = e[4], a = e[1], s = e[3], l = e[5], u = Math.sin(n), h = Math.cos(n); return t[0] = i * h + a * u, t[1] = -i * u + a * h, t[2] = r * h + s * u, t[3] = -r * u + h * s, t[4] = h * o + u * l, t[5] = h * l - u * o, t } function Fe(t, e, n) { var i = n[0], r = n[1]; return t[0] = e[0] * i, t[1] = e[1] * r, t[2] = e[2] * i, t[3] = e[3] * r, t[4] = e[4] * i, t[5] = e[5] * r, t } function Ve(t, e) { var n = e[0], i = e[2], r = e[4], o = e[1], a = e[3], s = e[5], l = n * a - o * i; return l ? (l = 1 / l, t[0] = a * l, t[1] = -o * l, t[2] = -i * l, t[3] = n * l, t[4] = (i * s - a * r) * l, t[5] = (o * r - n * s) * l, t) : null } function We(t) { var e = Le(); return Ee(e, t), e } function He(t) { return t > Kp || -Kp > t } function Ge(t) { this._target = t.target, this._life = t.life || 1e3, this._delay = t.delay || 0, this._initialized = !1, this.loop = null == t.loop ? !1 : t.loop, this.gap = t.gap || 0, this.easing = t.easing || "Linear", this.onframe = t.onframe, this.ondestroy = t.ondestroy, this.onrestart = t.onrestart, this._pausedTime = 0, this._paused = !1 } function Ze(t) { return t = Math.round(t), 0 > t ? 0 : t > 255 ? 255 : t } function Xe(t) { return t = Math.round(t), 0 > t ? 0 : t > 360 ? 360 : t } function Ye(t) { return 0 > t ? 0 : t > 1 ? 1 : t } function Ue(t) { return Ze(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 * 255 : parseInt(t, 10)) } function je(t) { return Ye(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 : parseFloat(t)) } function qe(t, e, n) { return 0 > n ? n += 1 : n > 1 && (n -= 1), 1 > 6 * n ? t + (e - t) * n * 6 : 1 > 2 * n ? e : 2 > 3 * n ? t + (e - t) * (2 / 3 - n) * 6 : t } function Ke(t, e, n) { return t + (e - t) * n } function $e(t, e, n, i, r) { return t[0] = e, t[1] = n, t[2] = i, t[3] = r, t } function Qe(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t } function Je(t, e) { hg && Qe(hg, e), hg = ug.put(t, hg || e.slice()) } function tn(t, e) { if (t) { e = e || []; var n = ug.get(t); if (n) return Qe(e, n); t += ""; var i = t.replace(/ /g, "").toLowerCase(); if (i in lg) return Qe(e, lg[i]), Je(t, e), e; if ("#" !== i.charAt(0)) { var r = i.indexOf("("), o = i.indexOf(")"); if (-1 !== r && o + 1 === i.length) { var a = i.substr(0, r), s = i.substr(r + 1, o - (r + 1)).split(","), l = 1; switch (a) { case "rgba": if (4 !== s.length) return void $e(e, 0, 0, 0, 1); l = je(s.pop()); case "rgb": return 3 !== s.length ? void $e(e, 0, 0, 0, 1) : ($e(e, Ue(s[0]), Ue(s[1]), Ue(s[2]), l), Je(t, e), e); case "hsla": return 4 !== s.length ? void $e(e, 0, 0, 0, 1) : (s[3] = je(s[3]), en(s, e), Je(t, e), e); case "hsl": return 3 !== s.length ? void $e(e, 0, 0, 0, 1) : (en(s, e), Je(t, e), e); default: return } } $e(e, 0, 0, 0, 1) } else { if (4 === i.length) { var u = parseInt(i.substr(1), 16); return u >= 0 && 4095 >= u ? ($e(e, (3840 & u) >> 4 | (3840 & u) >> 8, 240 & u | (240 & u) >> 4, 15 & u | (15 & u) << 4, 1), Je(t, e), e) : void $e(e, 0, 0, 0, 1) } if (7 === i.length) { var u = parseInt(i.substr(1), 16); return u >= 0 && 16777215 >= u ? ($e(e, (16711680 & u) >> 16, (65280 & u) >> 8, 255 & u, 1), Je( t, e), e) : void $e(e, 0, 0, 0, 1) } } } } function en(t, e) { var n = (parseFloat(t[0]) % 360 + 360) % 360 / 360, i = je(t[1]), r = je(t[2]), o = .5 >= r ? r * (i + 1) : r + i - r * i, a = 2 * r - o; return e = e || [], $e(e, Ze(255 * qe(a, o, n + 1 / 3)), Ze(255 * qe(a, o, n)), Ze(255 * qe(a, o, n - 1 / 3)), 1), 4 === t.length && (e[3] = t[3]), e } function nn(t) { if (t) { var e, n, i = t[0] / 255, r = t[1] / 255, o = t[2] / 255, a = Math.min(i, r, o), s = Math.max(i, r, o), l = s - a, u = (s + a) / 2; if (0 === l) e = 0, n = 0; else { n = .5 > u ? l / (s + a) : l / (2 - s - a); var h = ((s - i) / 6 + l / 2) / l, c = ((s - r) / 6 + l / 2) / l, d = ((s - o) / 6 + l / 2) / l; i === s ? e = d - c : r === s ? e = 1 / 3 + h - d : o === s && (e = 2 / 3 + c - h), 0 > e && (e += 1), e > 1 && (e -= 1) } var f = [360 * e, n, u]; return null != t[3] && f.push(t[3]), f } } function rn(t, e) { var n = tn(t); if (n) { for (var i = 0; 3 > i; i++) n[i] = 0 > e ? n[i] * (1 - e) | 0 : (255 - n[i]) * e + n[i] | 0, n[i] > 255 ? n[i] = 255 : t[i] < 0 && (n[i] = 0); return hn(n, 4 === n.length ? "rgba" : "rgb") } } function on(t) { var e = tn(t); return e ? ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1) : void 0 } function an(t, e, n) { if (e && e.length && t >= 0 && 1 >= t) { n = n || []; var i = t * (e.length - 1), r = Math.floor(i), o = Math.ceil(i), a = e[r], s = e[o], l = i - r; return n[0] = Ze(Ke(a[0], s[0], l)), n[1] = Ze(Ke(a[1], s[1], l)), n[2] = Ze(Ke(a[2], s[2], l)), n[3] = Ye(Ke(a[3], s[3], l)), n } } function sn(t, e, n) { if (e && e.length && t >= 0 && 1 >= t) { var i = t * (e.length - 1), r = Math.floor(i), o = Math.ceil(i), a = tn(e[r]), s = tn(e[o]), l = i - r, u = hn([Ze(Ke(a[0], s[0], l)), Ze(Ke(a[1], s[1], l)), Ze(Ke(a[2], s[2], l)), Ye(Ke(a[3], s[3], l))], "rgba"); return n ? { color: u, leftIndex: r, rightIndex: o, value: i } : u } } function ln(t, e, n, i) { return t = tn(t), t ? (t = nn(t), null != e && (t[0] = Xe(e)), null != n && (t[1] = je(n)), null != i && (t[ 2] = je(i)), hn(en(t), "rgba")) : void 0 } function un(t, e) { return t = tn(t), t && null != e ? (t[3] = Ye(e), hn(t, "rgba")) : void 0 } function hn(t, e) { if (t && t.length) { var n = t[0] + "," + t[1] + "," + t[2]; return ("rgba" === e || "hsva" === e || "hsla" === e) && (n += "," + t[3]), e + "(" + n + ")" } } function cn(t, e) { return t[e] } function dn(t, e, n) { t[e] = n } function fn(t, e, n) { return (e - t) * n + t } function pn(t, e, n) { return n > .5 ? e : t } function gn(t, e, n, i, r) { var o = t.length; if (1 === r) for (var a = 0; o > a; a++) i[a] = fn(t[a], e[a], n); else for (var s = o && t[0].length, a = 0; o > a; a++) for (var l = 0; s > l; l++) i[a][l] = fn(t[a][l], e[a][l], n) } function vn(t, e, n) { var i = t.length, r = e.length; if (i !== r) { var o = i > r; if (o) t.length = r; else for (var a = i; r > a; a++) t.push(1 === n ? e[a] : pg.call(e[a])) } for (var s = t[0] && t[0].length, a = 0; a < t.length; a++) if (1 === n) isNaN(t[a]) && (t[a] = e[a]); else for (var l = 0; s > l; l++) isNaN(t[a][l]) && (t[a][l] = e[a][l]) } function mn(t, e, n) { if (t === e) return !0; var i = t.length; if (i !== e.length) return !1; if (1 === n) { for (var r = 0; i > r; r++) if (t[r] !== e[r]) return !1 } else for (var o = t[0].length, r = 0; i > r; r++) for (var a = 0; o > a; a++) if (t[r][a] !== e[r][a]) return !1; return !0 } function yn(t, e, n, i, r, o, a, s, l) { var u = t.length; if (1 === l) for (var h = 0; u > h; h++) s[h] = xn(t[h], e[h], n[h], i[h], r, o, a); else for (var c = t[0].length, h = 0; u > h; h++) for (var d = 0; c > d; d++) s[h][d] = xn(t[h][d], e[h][d], n[h][d], i[h][d], r, o, a) } function xn(t, e, n, i, r, o, a) { var s = .5 * (n - t), l = .5 * (i - e); return (2 * (e - n) + s + l) * a + (-3 * (e - n) - 2 * s - l) * o + s * r + e } function _n(t) { if (d(t)) { var e = t.length; if (d(t[0])) { for (var n = [], i = 0; e > i; i++) n.push(pg.call(t[i])); return n } return pg.call(t) } return t } function wn(t) { return t[0] = Math.floor(t[0]), t[1] = Math.floor(t[1]), t[2] = Math.floor(t[2]), "rgba(" + t.join(",") + ")" } function bn(t) { var e = t[t.length - 1].value; return d(e && e[0]) ? 2 : 1 } function Sn(t, e, n, i, r, o) { var a = t._getter, s = t._setter, l = "spline" === e, u = i.length; if (u) { var h, c = i[0].value, f = d(c), p = !1, g = !1, v = f ? bn(i) : 0; i.sort(function(t, e) { return t.time - e.time }), h = i[u - 1].time; for (var m = [], y = [], x = i[0].value, _ = !0, w = 0; u > w; w++) { m.push(i[w].time / h); var b = i[w].value; if (f && mn(b, x, v) || !f && b === x || (_ = !1), x = b, "string" == typeof b) { var S = tn(b); S ? (b = S, p = !0) : g = !0 } y.push(b) } if (o || !_) { for (var M = y[u - 1], w = 0; u - 1 > w; w++) f ? vn(y[w], M, v) : !isNaN(y[w]) || isNaN(M) || g || p || (y[w] = M); f && vn(a(t._target, r), M, v); var I, C, T, A, D, k, P = 0, O = 0; if (p) var L = [0, 0, 0, 0]; var z = function(t, e) { var n; if (0 > e) n = 0; else if (O > e) { for (I = Math.min(P + 1, u - 1), n = I; n >= 0 && !(m[n] <= e); n--); n = Math.min(n, u - 2) } else { for (n = P; u > n && !(m[n] > e); n++); n = Math.min(n - 1, u - 2) } P = n, O = e; var i = m[n + 1] - m[n]; if (0 !== i) if (C = (e - m[n]) / i, l) if (A = y[n], T = y[0 === n ? n : n - 1], D = y[n > u - 2 ? u - 1 : n + 1], k = y[ n > u - 3 ? u - 1 : n + 2], f) yn(T, A, D, k, C, C * C, C * C * C, a(t, r), v); else { var o; if (p) o = yn(T, A, D, k, C, C * C, C * C * C, L, 1), o = wn(L); else { if (g) return pn(A, D, C); o = xn(T, A, D, k, C, C * C, C * C * C) } s(t, r, o) } else if (f) gn(y[n], y[n + 1], C, a(t, r), v); else { var o; if (p) gn(y[n], y[n + 1], C, L, 1), o = wn(L); else { if (g) return pn(y[n], y[n + 1], C); o = fn(y[n], y[n + 1], C) } s(t, r, o) } }, E = new Ge({ target: t._target, life: h, loop: t._loop, delay: t._delay, onframe: z, ondestroy: n }); return e && "spline" !== e && (E.easing = e), E } } } function Mn(t, e, n, i, r, o, a, s) { function l() { h--, h || o && o() } b(i) ? (o = r, r = i, i = 0) : w(r) ? (o = r, r = "linear", i = 0) : w(i) ? (o = i, i = 0) : w(n) ? (o = n, n = 500) : n || (n = 500), t.stopAnimation(), In(t, "", t, e, n, i, s); var u = t.animators.slice(), h = u.length; h || o && o(); for (var c = 0; c < u.length; c++) u[c].done(l).start(r, a) } function In(t, e, n, i, r, o, a) { var s = {}, l = 0; for (var u in i) i.hasOwnProperty(u) && (null != n[u] ? S(i[u]) && !d(i[u]) ? In(t, e ? e + "." + u : u, n[ u], i[u], r, o, a) : (a ? (s[u] = n[u], Cn(t, e, u, i[u])) : s[u] = i[u], l++) : null == i[u] || a || Cn(t, e, u, i[u])); l > 0 && t.animate(e, !1).when(null == r ? 500 : r, s).delay(o || 0) } function Cn(t, e, n, i) { if (e) { var r = {}; r[e] = {}, r[e][n] = i, t.attr(r) } else t.attr(n, i) } function Tn(t, e, n, i) { 0 > n && (t += n, n = -n), 0 > i && (e += i, i = -i), this.x = t, this.y = e, this.width = n, this.height = i } function An(t) { for (var e = 0; t >= Tg;) e |= 1 & t, t >>= 1; return t + e } function Dn(t, e, n, i) { var r = e + 1; if (r === n) return 1; if (i(t[r++], t[e]) < 0) { for (; n > r && i(t[r], t[r - 1]) < 0;) r++; kn(t, e, r) } else for (; n > r && i(t[r], t[r - 1]) >= 0;) r++; return r - e } function kn(t, e, n) { for (n--; n > e;) { var i = t[e]; t[e++] = t[n], t[n--] = i } } function Pn(t, e, n, i, r) { for (i === e && i++; n > i; i++) { for (var o, a = t[i], s = e, l = i; l > s;) o = s + l >>> 1, r(a, t[o]) < 0 ? l = o : s = o + 1; var u = i - s; switch (u) { case 3: t[s + 3] = t[s + 2]; case 2: t[s + 2] = t[s + 1]; case 1: t[s + 1] = t[s]; break; default: for (; u > 0;) t[s + u] = t[s + u - 1], u-- } t[s] = a } } function On(t, e, n, i, r, o) { var a = 0, s = 0, l = 1; if (o(t, e[n + r]) > 0) { for (s = i - r; s > l && o(t, e[n + r + l]) > 0;) a = l, l = (l << 1) + 1, 0 >= l && (l = s); l > s && (l = s), a += r, l += r } else { for (s = r + 1; s > l && o(t, e[n + r - l]) <= 0;) a = l, l = (l << 1) + 1, 0 >= l && (l = s); l > s && (l = s); var u = a; a = r - l, l = r - u } for (a++; l > a;) { var h = a + (l - a >>> 1); o(t, e[n + h]) > 0 ? a = h + 1 : l = h } return l } function Ln(t, e, n, i, r, o) { var a = 0, s = 0, l = 1; if (o(t, e[n + r]) < 0) { for (s = r + 1; s > l && o(t, e[n + r - l]) < 0;) a = l, l = (l << 1) + 1, 0 >= l && (l = s); l > s && (l = s); var u = a; a = r - l, l = r - u } else { for (s = i - r; s > l && o(t, e[n + r + l]) >= 0;) a = l, l = (l << 1) + 1, 0 >= l && (l = s); l > s && (l = s), a += r, l += r } for (a++; l > a;) { var h = a + (l - a >>> 1); o(t, e[n + h]) < 0 ? l = h : a = h + 1 } return l } function zn(t, e) { function n(t, e) { l[c] = t, u[c] = e, c += 1 } function i() { for (; c > 1;) { var t = c - 2; if (t >= 1 && u[t - 1] <= u[t] + u[t + 1] || t >= 2 && u[t - 2] <= u[t] + u[t - 1]) u[t - 1] < u[t + 1] && t--; else if (u[t] > u[t + 1]) break; o(t) } } function r() { for (; c > 1;) { var t = c - 2; t > 0 && u[t - 1] < u[t + 1] && t--, o(t) } } function o(n) { var i = l[n], r = u[n], o = l[n + 1], h = u[n + 1]; u[n] = r + h, n === c - 3 && (l[n + 1] = l[n + 2], u[n + 1] = u[n + 2]), c--; var d = Ln(t[o], t, i, r, 0, e); i += d, r -= d, 0 !== r && (h = On(t[i + r - 1], t, o, h, h - 1, e), 0 !== h && (h >= r ? a(i, r, o, h) : s(i, r, o, h))) } function a(n, i, r, o) { var a = 0; for (a = 0; i > a; a++) d[a] = t[n + a]; var s = 0, l = r, u = n; if (t[u++] = t[l++], 0 !== --o) { if (1 === i) { for (a = 0; o > a; a++) t[u + a] = t[l + a]; return void(t[u + o] = d[s]) } for (var c, f, p, g = h;;) { c = 0, f = 0, p = !1; do if (e(t[l], d[s]) < 0) { if (t[u++] = t[l++], f++, c = 0, 0 === --o) { p = !0; break } } else if (t[u++] = d[s++], c++, f = 0, 1 === --i) { p = !0; break } while (g > (c | f)); if (p) break; do { if (c = Ln(t[l], d, s, i, 0, e), 0 !== c) { for (a = 0; c > a; a++) t[u + a] = d[s + a]; if (u += c, s += c, i -= c, 1 >= i) { p = !0; break } } if (t[u++] = t[l++], 0 === --o) { p = !0; break } if (f = On(d[s], t, l, o, 0, e), 0 !== f) { for (a = 0; f > a; a++) t[u + a] = t[l + a]; if (u += f, l += f, o -= f, 0 === o) { p = !0; break } } if (t[u++] = d[s++], 1 === --i) { p = !0; break } g-- } while (c >= Ag || f >= Ag); if (p) break; 0 > g && (g = 0), g += 2 } if (h = g, 1 > h && (h = 1), 1 === i) { for (a = 0; o > a; a++) t[u + a] = t[l + a]; t[u + o] = d[s] } else { if (0 === i) throw new Error; for (a = 0; i > a; a++) t[u + a] = d[s + a] } } else for (a = 0; i > a; a++) t[u + a] = d[s + a] } function s(n, i, r, o) { var a = 0; for (a = 0; o > a; a++) d[a] = t[r + a]; var s = n + i - 1, l = o - 1, u = r + o - 1, c = 0, f = 0; if (t[u--] = t[s--], 0 !== --i) { if (1 === o) { for (u -= i, s -= i, f = u + 1, c = s + 1, a = i - 1; a >= 0; a--) t[f + a] = t[c + a]; return void(t[u] = d[l]) } for (var p = h;;) { var g = 0, v = 0, m = !1; do if (e(d[l], t[s]) < 0) { if (t[u--] = t[s--], g++, v = 0, 0 === --i) { m = !0; break } } else if (t[u--] = d[l--], v++, g = 0, 1 === --o) { m = !0; break } while (p > (g | v)); if (m) break; do { if (g = i - Ln(d[l], t, n, i, i - 1, e), 0 !== g) { for (u -= g, s -= g, i -= g, f = u + 1, c = s + 1, a = g - 1; a >= 0; a--) t[f + a] = t[ c + a]; if (0 === i) { m = !0; break } } if (t[u--] = d[l--], 1 === --o) { m = !0; break } if (v = o - On(t[s], d, 0, o, o - 1, e), 0 !== v) { for (u -= v, l -= v, o -= v, f = u + 1, c = l + 1, a = 0; v > a; a++) t[f + a] = d[c + a]; if (1 >= o) { m = !0; break } } if (t[u--] = t[s--], 0 === --i) { m = !0; break } p-- } while (g >= Ag || v >= Ag); if (m) break; 0 > p && (p = 0), p += 2 } if (h = p, 1 > h && (h = 1), 1 === o) { for (u -= i, s -= i, f = u + 1, c = s + 1, a = i - 1; a >= 0; a--) t[f + a] = t[c + a]; t[u] = d[l] } else { if (0 === o) throw new Error; for (c = u - (o - 1), a = 0; o > a; a++) t[c + a] = d[a] } } else for (c = u - (o - 1), a = 0; o > a; a++) t[c + a] = d[a] } var l, u, h = Ag, c = 0, d = []; l = [], u = [], this.mergeRuns = i, this.forceMergeRuns = r, this.pushRun = n } function En(t, e, n, i) { n || (n = 0), i || (i = t.length); var r = i - n; if (!(2 > r)) { var o = 0; if (Tg > r) return o = Dn(t, n, i, e), void Pn(t, n, i, n + o, e); var a = new zn(t, e), s = An(r); do { if (o = Dn(t, n, i, e), s > o) { var l = r; l > s && (l = s), Pn(t, n, n + l, n + o, e), o = l } a.pushRun(n, o), a.mergeRuns(), r -= o, n += o } while (0 !== r); a.forceMergeRuns() } } function Bn(t, e) { return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel } function Rn(t, e, n) { var i = null == e.x ? 0 : e.x, r = null == e.x2 ? 1 : e.x2, o = null == e.y ? 0 : e.y, a = null == e.y2 ? 0 : e.y2; e.global || (i = i * n.width + n.x, r = r * n.width + n.x, o = o * n.height + n.y, a = a * n.height + n.y), i = isNaN(i) ? 0 : i, r = isNaN(r) ? 1 : r, o = isNaN(o) ? 0 : o, a = isNaN(a) ? 0 : a; var s = t.createLinearGradient(i, o, r, a); return s } function Nn(t, e, n) { var i = n.width, r = n.height, o = Math.min(i, r), a = null == e.x ? .5 : e.x, s = null == e.y ? .5 : e.y, l = null == e.r ? .5 : e.r; e.global || (a = a * i + n.x, s = s * r + n.y, l *= o); var u = t.createRadialGradient(a, s, 0, a, s, l); return u } function Fn() { return !1 } function Vn(t, e, n) { var i = Sp(), r = e.getWidth(), o = e.getHeight(), a = i.style; return a && (a.position = "absolute", a.left = 0, a.top = 0, a.width = r + "px", a.height = o + "px", i .setAttribute("data-zr-dom-id", t)), i.width = r * n, i.height = o * n, i } function Wn(t) { if ("string" == typeof t) { var e = Hg.get(t); return e && e.image } return t } function Hn(t, e, n, i, r) { if (t) { if ("string" == typeof t) { if (e && e.__zrImageSrc === t || !n) return e; var o = Hg.get(t), a = { hostEl: n, cb: i, cbPayload: r }; return o ? (e = o.image, !Zn(e) && o.pending.push(a)) : (e = new Image, e.onload = e.onerror = Gn, Hg.put(t, e.__cachedImgObj = { image: e, pending: [a] }), e.src = e.__zrImageSrc = t), e } return t } return e } function Gn() { var t = this.__cachedImgObj; this.onload = this.onerror = this.__cachedImgObj = null; for (var e = 0; e < t.pending.length; e++) { var n = t.pending[e], i = n.cb; i && i(this, n.cbPayload), n.hostEl.dirty() } t.pending.length = 0 } function Zn(t) { return t && t.width && t.height } function Xn(t, e) { e = e || Ug; var n = t + ":" + e; if (Gg[n]) return Gg[n]; for (var i = (t + "").split("\n"), r = 0, o = 0, a = i.length; a > o; o++) r = Math.max(ii(i[o], e).width, r); return Zg > Xg && (Zg = 0, Gg = {}), Zg++, Gg[n] = r, r } function Yn(t, e, n, i, r, o, a, s) { return a ? jn(t, e, n, i, r, o, a, s) : Un(t, e, n, i, r, o, s) } function Un(t, e, n, i, r, o, a) { var s = ri(t, e, r, o, a), l = Xn(t, e); r && (l += r[1] + r[3]); var u = s.outerHeight, h = qn(0, l, n), c = Kn(0, u, i), d = new Tn(h, c, l, u); return d.lineHeight = s.lineHeight, d } function jn(t, e, n, i, r, o, a, s) { var l = oi(t, { rich: a, truncate: s, font: e, textAlign: n, textPadding: r, textLineHeight: o }), u = l.outerWidth, h = l.outerHeight, c = qn(0, u, n), d = Kn(0, h, i); return new Tn(c, d, u, h) } function qn(t, e, n) { return "right" === n ? t -= e : "center" === n && (t -= e / 2), t } function Kn(t, e, n) { return "middle" === n ? t -= e / 2 : "bottom" === n && (t -= e), t } function $n(t, e, n) { var i = e.textPosition, r = e.textDistance, o = n.x, a = n.y; r = r || 0; var s = n.height, l = n.width, u = s / 2, h = "left", c = "top"; switch (i) { case "left": o -= r, a += u, h = "right", c = "middle"; break; case "right": o += r + l, a += u, c = "middle"; break; case "top": o += l / 2, a -= r, h = "center", c = "bottom"; break; case "bottom": o += l / 2, a += s + r, h = "center"; break; case "inside": o += l / 2, a += u, h = "center", c = "middle"; break; case "insideLeft": o += r, a += u, c = "middle"; break; case "insideRight": o += l - r, a += u, h = "right", c = "middle"; break; case "insideTop": o += l / 2, a += r, h = "center"; break; case "insideBottom": o += l / 2, a += s - r, h = "center", c = "bottom"; break; case "insideTopLeft": o += r, a += r; break; case "insideTopRight": o += l - r, a += r, h = "right"; break; case "insideBottomLeft": o += r, a += s - r, c = "bottom"; break; case "insideBottomRight": o += l - r, a += s - r, h = "right", c = "bottom" } return t = t || {}, t.x = o, t.y = a, t.textAlign = h, t.textVerticalAlign = c, t } function Qn(t, e, n, i, r) { if (!e) return ""; var o = (t + "").split("\n"); r = Jn(e, n, i, r); for (var a = 0, s = o.length; s > a; a++) o[a] = ti(o[a], r); return o.join("\n") } function Jn(t, e, n, i) { i = a({}, i), i.font = e; var n = D(n, "..."); i.maxIterations = D(i.maxIterations, 2); var r = i.minChar = D(i.minChar, 0); i.cnCharWidth = Xn("国", e); var o = i.ascCharWidth = Xn("a", e); i.placeholder = D(i.placeholder, ""); for (var s = t = Math.max(0, t - 1), l = 0; r > l && s >= o; l++) s -= o; var u = Xn(n, e); return u > s && (n = "", u = 0), s = t - u, i.ellipsis = n, i.ellipsisWidth = u, i.contentWidth = s, i .containerWidth = t, i } function ti(t, e) { var n = e.containerWidth, i = e.font, r = e.contentWidth; if (!n) return ""; var o = Xn(t, i); if (n >= o) return t; for (var a = 0;; a++) { if (r >= o || a >= e.maxIterations) { t += e.ellipsis; break } var s = 0 === a ? ei(t, r, e.ascCharWidth, e.cnCharWidth) : o > 0 ? Math.floor(t.length * r / o) : 0; t = t.substr(0, s), o = Xn(t, i) } return "" === t && (t = e.placeholder), t } function ei(t, e, n, i) { for (var r = 0, o = 0, a = t.length; a > o && e > r; o++) { var s = t.charCodeAt(o); r += s >= 0 && 127 >= s ? n : i } return o } function ni(t) { return Xn("国", t) } function ii(t, e) { return jg.measureText(t, e) } function ri(t, e, n, i, r) { null != t && (t += ""); var o = D(i, ni(e)), a = t ? t.split("\n") : [], s = a.length * o, l = s, u = !0; if (n && (l += n[0] + n[2]), t && r) { u = !1; var h = r.outerHeight, c = r.outerWidth; if (null != h && l > h) t = "", a = []; else if (null != c) for (var d = Jn(c - (n ? n[1] + n[3] : 0), e, r.ellipsis, { minChar: r.minChar, placeholder: r.placeholder }), f = 0, p = a.length; p > f; f++) a[f] = ti(a[f], d) } return { lines: a, height: s, outerHeight: l, lineHeight: o, canCacheByTextString: u } } function oi(t, e) { var n = { lines: [], width: 0, height: 0 }; if (null != t && (t += ""), !t) return n; for (var i, r = Yg.lastIndex = 0; null != (i = Yg.exec(t));) { var o = i.index; o > r && ai(n, t.substring(r, o)), ai(n, i[2], i[1]), r = Yg.lastIndex } r < t.length && ai(n, t.substring(r, t.length)); var a = n.lines, s = 0, l = 0, u = [], h = e.textPadding, c = e.truncate, d = c && c.outerWidth, f = c && c.outerHeight; h && (null != d && (d -= h[1] + h[3]), null != f && (f -= h[0] + h[2])); for (var p = 0; p < a.length; p++) { for (var g = a[p], v = 0, m = 0, y = 0; y < g.tokens.length; y++) { var x = g.tokens[y], _ = x.styleName && e.rich[x.styleName] || {}, w = x.textPadding = _.textPadding, b = x.font = _.font || e.font, S = x.textHeight = D(_.textHeight, ni(b)); if (w && (S += w[0] + w[2]), x.height = S, x.lineHeight = k(_.textLineHeight, e.textLineHeight, S), x.textAlign = _ && _.textAlign || e.textAlign, x.textVerticalAlign = _ && _.textVerticalAlign || "middle", null != f && s + x.lineHeight > f) return { lines: [], width: 0, height: 0 }; x.textWidth = Xn(x.text, b); var M = _.textWidth, I = null == M || "auto" === M; if ("string" == typeof M && "%" === M.charAt(M.length - 1)) x.percentWidth = M, u.push(x), M = 0; else { if (I) { M = x.textWidth; var C = _.textBackgroundColor, T = C && C.image; T && (T = Wn(T), Zn(T) && (M = Math.max(M, T.width * S / T.height))) } var A = w ? w[1] + w[3] : 0; M += A; var P = null != d ? d - m : null; null != P && M > P && (!I || A > P ? (x.text = "", x.textWidth = M = 0) : (x.text = Qn(x.text, P - A, b, c.ellipsis, { minChar: c.minChar }), x.textWidth = Xn(x.text, b), M = x.textWidth + A)) } m += x.width = M, _ && (v = Math.max(v, x.lineHeight)) } g.width = m, g.lineHeight = v, s += v, l = Math.max(l, m) } n.outerWidth = n.width = D(e.textWidth, l), n.outerHeight = n.height = D(e.textHeight, s), h && (n .outerWidth += h[1] + h[3], n.outerHeight += h[0] + h[2]); for (var p = 0; p < u.length; p++) { var x = u[p], O = x.percentWidth; x.width = parseInt(O, 10) / 100 * l } return n } function ai(t, e, n) { for (var i = "" === e, r = e.split("\n"), o = t.lines, a = 0; a < r.length; a++) { var s = r[a], l = { styleName: n, text: s, isLineHolder: !s && !i }; if (a) o.push({ tokens: [l] }); else { var u = (o[o.length - 1] || (o[0] = { tokens: [] })).tokens, h = u.length; 1 === h && u[0].isLineHolder ? u[0] = l : (s || !h || i) && u.push(l) } } } function si(t) { var e = (t.fontSize || t.fontFamily) && [t.fontStyle, t.fontWeight, (t.fontSize || 12) + "px", t .fontFamily || "sans-serif" ].join(" "); return e && z(e) || t.textFont || t.font } function li(t, e) { var n, i, r, o, a = e.x, s = e.y, l = e.width, u = e.height, h = e.r; 0 > l && (a += l, l = -l), 0 > u && (s += u, u = -u), "number" == typeof h ? n = i = r = o = h : h instanceof Array ? 1 === h.length ? n = i = r = o = h[0] : 2 === h.length ? (n = r = h[0], i = o = h[ 1]) : 3 === h.length ? (n = h[0], i = o = h[1], r = h[2]) : (n = h[0], i = h[1], r = h[2], o = h[ 3]) : n = i = r = o = 0; var c; n + i > l && (c = n + i, n *= l / c, i *= l / c), r + o > l && (c = r + o, r *= l / c, o *= l / c), i + r > u && (c = i + r, i *= u / c, r *= u / c), n + o > u && (c = n + o, n *= u / c, o *= u / c), t.moveTo(a + n, s), t.lineTo(a + l - i, s), 0 !== i && t.arc(a + l - i, s + i, i, -Math.PI / 2, 0), t.lineTo(a + l, s + u - r), 0 !== r && t.arc(a + l - r, s + u - r, r, 0, Math.PI / 2), t.lineTo(a + o, s + u), 0 !== o && t.arc(a + o, s + u - o, o, Math.PI / 2, Math.PI), t.lineTo(a, s + n), 0 !== n && t.arc(a + n, s + n, n, Math.PI, 1.5 * Math.PI) } function ui(t) { return hi(t), f(t.rich, hi), t } function hi(t) { if (t) { t.font = si(t); var e = t.textAlign; "middle" === e && (e = "center"), t.textAlign = null == e || Kg[e] ? e : "left"; var n = t.textVerticalAlign || t.textBaseline; "center" === n && (n = "middle"), t.textVerticalAlign = null == n || $g[n] ? n : "top"; var i = t.textPadding; i && (t.textPadding = O(t.textPadding)) } } function ci(t, e, n, i, r, o) { i.rich ? fi(t, e, n, i, r, o) : di(t, e, n, i, r, o) } function di(t, e, n, i, r, o) { var a, s = mi(i), l = !1, u = e.__attrCachedBy === Og.PLAIN_TEXT; o !== Lg ? (o && (a = o.style, l = !s && u && a), e.__attrCachedBy = s ? Og.NONE : Og.PLAIN_TEXT) : u && (e .__attrCachedBy = Og.NONE); var h = i.font || qg; l && h === (a.font || qg) || (e.font = h); var c = t.__computedFont; t.__styleFont !== h && (t.__styleFont = h, c = t.__computedFont = e.font); var d = i.textPadding, f = i.textLineHeight, p = t.__textCotentBlock; (!p || t.__dirtyText) && (p = t.__textCotentBlock = ri(n, c, d, f, i.truncate)); var g = p.outerHeight, v = p.lines, m = p.lineHeight, y = _i(tv, t, i, r), x = y.baseX, _ = y.baseY, w = y.textAlign || "left", b = y.textVerticalAlign; gi(e, i, r, x, _); var S = Kn(_, g, b), M = x, I = S; if (s || d) { var C = Xn(n, c), T = C; d && (T += d[1] + d[3]); var A = qn(x, T, w); s && yi(t, e, i, A, S, T, g), d && (M = Ii(x, w, d), I += d[0]) } e.textAlign = w, e.textBaseline = "middle", e.globalAlpha = i.opacity || 1; for (var D = 0; D < Qg.length; D++) { var k = Qg[D], P = k[0], O = k[1], L = i[P]; l && L === a[P] || (e[O] = Pg(e, O, L || k[2])) } I += m / 2; var z = i.textStrokeWidth, E = l ? a.textStrokeWidth : null, B = !l || z !== E, R = !l || B || i.textStroke !== a.textStroke, N = bi(i.textStroke, z), F = Si(i.textFill); if (N && (B && (e.lineWidth = z), R && (e.strokeStyle = N)), F && (l && i.textFill === a.textFill || (e .fillStyle = F)), 1 === v.length) N && e.strokeText(v[0], M, I), F && e.fillText(v[0], M, I); else for (var D = 0; D < v.length; D++) N && e.strokeText(v[D], M, I), F && e.fillText(v[D], M, I), I += m } function fi(t, e, n, i, r, o) { o !== Lg && (e.__attrCachedBy = Og.NONE); var a = t.__textCotentBlock; (!a || t.__dirtyText) && (a = t.__textCotentBlock = oi(n, i)), pi(t, e, a, i, r) } function pi(t, e, n, i, r) { var o = n.width, a = n.outerWidth, s = n.outerHeight, l = i.textPadding, u = _i(tv, t, i, r), h = u.baseX, c = u.baseY, d = u.textAlign, f = u.textVerticalAlign; gi(e, i, r, h, c); var p = qn(h, a, d), g = Kn(c, s, f), v = p, m = g; l && (v += l[3], m += l[0]); var y = v + o; mi(i) && yi(t, e, i, p, g, a, s); for (var x = 0; x < n.lines.length; x++) { for (var _, w = n.lines[x], b = w.tokens, S = b.length, M = w.lineHeight, I = w.width, C = 0, T = v, A = y, D = S - 1; S > C && (_ = b[C], !_.textAlign || "left" === _.textAlign);) vi(t, e, _, i, M, m, T, "left"), I -= _.width, T += _.width, C++; for (; D >= 0 && (_ = b[D], "right" === _.textAlign);) vi(t, e, _, i, M, m, A, "right"), I -= _.width, A -= _.width, D--; for (T += (o - (T - v) - (y - A) - I) / 2; D >= C;) _ = b[C], vi(t, e, _, i, M, m, T + _.width / 2, "center"), T += _.width, C++; m += M } } function gi(t, e, n, i, r) { if (n && e.textRotation) { var o = e.textOrigin; "center" === o ? (i = n.width / 2 + n.x, r = n.height / 2 + n.y) : o && (i = o[0] + n.x, r = o[1] + n .y), t.translate(i, r), t.rotate(-e.textRotation), t.translate(-i, -r) } } function vi(t, e, n, i, r, o, a, s) { var l = i.rich[n.styleName] || {}; l.text = n.text; var u = n.textVerticalAlign, h = o + r / 2; "top" === u ? h = o + n.height / 2 : "bottom" === u && (h = o + r - n.height / 2), !n.isLineHolder && mi( l) && yi(t, e, l, "right" === s ? a - n.width : "center" === s ? a - n.width / 2 : a, h - n.height / 2, n.width, n.height); var c = n.textPadding; c && (a = Ii(a, s, c), h -= n.height / 2 - c[2] - n.textHeight / 2), wi(e, "shadowBlur", k(l.textShadowBlur, i.textShadowBlur, 0)), wi(e, "shadowColor", l.textShadowColor || i.textShadowColor || "transparent"), wi(e, "shadowOffsetX", k(l.textShadowOffsetX, i.textShadowOffsetX, 0)), wi(e, "shadowOffsetY", k(l.textShadowOffsetY, i.textShadowOffsetY, 0)), wi(e, "textAlign", s), wi(e, "textBaseline", "middle"), wi(e, "font", n.font || qg); var d = bi(l.textStroke || i.textStroke, p), f = Si(l.textFill || i.textFill), p = D(l.textStrokeWidth, i.textStrokeWidth); d && (wi(e, "lineWidth", p), wi(e, "strokeStyle", d), e.strokeText(n.text, a, h)), f && (wi(e, "fillStyle", f), e.fillText(n.text, a, h)) } function mi(t) { return !!(t.textBackgroundColor || t.textBorderWidth && t.textBorderColor) } function yi(t, e, n, i, r, o, a) { var s = n.textBackgroundColor, l = n.textBorderWidth, u = n.textBorderColor, h = b(s); if (wi(e, "shadowBlur", n.textBoxShadowBlur || 0), wi(e, "shadowColor", n.textBoxShadowColor || "transparent"), wi(e, "shadowOffsetX", n.textBoxShadowOffsetX || 0), wi(e, "shadowOffsetY", n .textBoxShadowOffsetY || 0), h || l && u) { e.beginPath(); var c = n.textBorderRadius; c ? li(e, { x: i, y: r, width: o, height: a, r: c }) : e.rect(i, r, o, a), e.closePath() } if (h) if (wi(e, "fillStyle", s), null != n.fillOpacity) { var d = e.globalAlpha; e.globalAlpha = n.fillOpacity * n.opacity, e.fill(), e.globalAlpha = d } else e.fill(); else if (S(s)) { var f = s.image; f = Hn(f, null, t, xi, s), f && Zn(f) && e.drawImage(f, i, r, o, a) } if (l && u) if (wi(e, "lineWidth", l), wi(e, "strokeStyle", u), null != n.strokeOpacity) { var d = e.globalAlpha; e.globalAlpha = n.strokeOpacity * n.opacity, e.stroke(), e.globalAlpha = d } else e.stroke() } function xi(t, e) { e.image = t } function _i(t, e, n, i) { var r = n.x || 0, o = n.y || 0, a = n.textAlign, s = n.textVerticalAlign; if (i) { var l = n.textPosition; if (l instanceof Array) r = i.x + Mi(l[0], i.width), o = i.y + Mi(l[1], i.height); else { var u = e && e.calculateTextPosition ? e.calculateTextPosition(Jg, n, i) : $n(Jg, n, i); r = u.x, o = u.y, a = a || u.textAlign, s = s || u.textVerticalAlign } var h = n.textOffset; h && (r += h[0], o += h[1]) } return t = t || {}, t.baseX = r, t.baseY = o, t.textAlign = a, t.textVerticalAlign = s, t } function wi(t, e, n) { return t[e] = Pg(t, e, n), t[e] } function bi(t, e) { return null == t || 0 >= e || "transparent" === t || "none" === t ? null : t.image || t.colorStops ? "#000" : t } function Si(t) { return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t } function Mi(t, e) { return "string" == typeof t ? t.lastIndexOf("%") >= 0 ? parseFloat(t) / 100 * e : parseFloat(t) : t } function Ii(t, e, n) { return "right" === e ? t - n[1] : "center" === e ? t + n[3] / 2 - n[1] / 2 : t + n[3] } function Ci(t, e) { return null != t && (t || e.textBackgroundColor || e.textBorderWidth && e.textBorderColor || e.textPadding) } function Ti(t) { t = t || {}, bg.call(this, t); for (var e in t) t.hasOwnProperty(e) && "style" !== e && (this[e] = t[e]); this.style = new Eg(t.style, this), this._rect = null, this.__clipPaths = null } function Ai(t) { Ti.call(this, t) } function Di(t) { return parseInt(t, 10) } function ki(t) { return t ? t.__builtin__ ? !0 : "function" != typeof t.resize || "function" != typeof t.refresh ? !1 : !0 : !1 } function Pi(t, e, n) { return sv.copy(t.getBoundingRect()), t.transform && sv.applyTransform(t.transform), lv.width = e, lv .height = n, !sv.intersect(lv) } function Oi(t, e) { if (t === e) return !1; if (!t || !e || t.length !== e.length) return !0; for (var n = 0; n < t.length; n++) if (t[n] !== e[n]) return !0; return !1 } function Li(t, e) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.setTransform(e), e.beginPath(), i.buildPath(e, i.shape), e.clip(), i.restoreTransform(e) } } function zi(t, e) { var n = document.createElement("div"); return n.style.cssText = ["position:relative", "width:" + t + "px", "height:" + e + "px", "padding:0", "margin:0", "border-width:0" ].join(";") + ";", n } function Ei(t) { return "mousewheel" === t && dp.browser.firefox ? "DOMMouseScroll" : t } function Bi(t) { var e = t.pointerType; return "pen" === e || "touch" === e } function Ri(t) { t.touching = !0, null != t.touchTimer && (clearTimeout(t.touchTimer), t.touchTimer = null), t.touchTimer = setTimeout(function() { t.touching = !1, t.touchTimer = null }, 700) } function Ni(t) { t && (t.zrByTouch = !0) } function Fi(t, e) { return be(t.dom, new Wi(t, e), !0) } function Vi(t, e) { for (var n = e, i = !1; n && 9 !== n.nodeType && !(i = n.domBelongToZr || n !== e && n === t.painterRoot);) n = n.parentNode; return i } function Wi(t, e) { this.type = e.type, this.target = this.currentTarget = t.dom, this.pointerType = e.pointerType, this .clientX = e.clientX, this.clientY = e.clientY } function Hi(t, e) { var n = e.domHandlers; dp.pointerEventsSupported ? f(fv.pointer, function(i) { Zi(e, i, function(e) { n[i].call(t, e) }) }) : (dp.touchEventsSupported && f(fv.touch, function(i) { Zi(e, i, function(r) { n[i].call(t, r), Ri(e) }) }), f(fv.mouse, function(i) { Zi(e, i, function(r) { r = we(r), e.touching || n[i].call(t, r) }) })) } function Gi(t, e) { function n(n) { function i(i) { i = we(i), Vi(t, i.target) || (i = Fi(t, i), e.domHandlers[n].call(t, i)) } Zi(e, n, i, { capture: !0 }) } dp.pointerEventsSupported ? f(pv.pointer, n) : dp.touchEventsSupported || f(pv.mouse, n) } function Zi(t, e, n, i) { t.mounted[e] = n, t.listenerOpts[e] = i, Se(t.domTarget, Ei(e), n, i) } function Xi(t) { var e = t.mounted; for (var n in e) e.hasOwnProperty(n) && Me(t.domTarget, Ei(n), e[n], t.listenerOpts[n]); t.mounted = {} } function Yi(t, e) { if (t._mayPointerCapture = null, dv && t._pointerCapturing ^ e) { t._pointerCapturing = e; var n = t._globalHandlerScope; e ? Gi(t, n) : Xi(n) } } function Ui(t, e) { this.domTarget = t, this.domHandlers = e, this.mounted = {}, this.listenerOpts = {}, this.touchTimer = null, this.touching = !1 } function ji(t, e) { zp.call(this), this.dom = t, this.painterRoot = e, this._localHandlerScope = new Ui(t, vv), dv && (this ._globalHandlerScope = new Ui(document, mv)), this._pointerCapturing = !1, this._mayPointerCapture = null, Hi(this, this._localHandlerScope) } function qi(t, e) { var n = new Sv(hp(), t, e); return wv[n.id] = n, n } function Ki(t) { if (t) t.dispose(); else { for (var e in wv) wv.hasOwnProperty(e) && wv[e].dispose(); wv = {} } return this } function $i(t) { return wv[t] } function Qi(t, e) { _v[t] = e } function Ji(t) { delete wv[t] } function tr(t) { return t instanceof Array ? t : null == t ? [] : [t] } function er(t, e, n) { if (t) { t[e] = t[e] || {}, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {}; for (var i = 0, r = n.length; r > i; i++) { var o = n[i]; !t.emphasis[e].hasOwnProperty(o) && t[e].hasOwnProperty(o) && (t.emphasis[e][o] = t[e][o]) } } } function nr(t) { return !Cv(t) || Tv(t) || t instanceof Date ? t : t.value } function ir(t) { return Cv(t) && !(t instanceof Array) } function rr(t, e) { e = (e || []).slice(); var n = p(t || [], function(t) { return { exist: t } }); return Iv(e, function(t, i) { if (Cv(t)) { for (var r = 0; r < n.length; r++) if (!n[r].option && null != t.id && n[r].exist.id === t.id + "") return n[r].option = t, void(e[i] = null); for (var r = 0; r < n.length; r++) { var o = n[r].exist; if (!(n[r].option || null != o.id && null != t.id || null == t.name || sr(t) || sr(o) || o.name !== t.name + "")) return n[r].option = t, void(e[i] = null) } } }), Iv(e, function(t) { if (Cv(t)) { for (var e = 0; e < n.length; e++) { var i = n[e].exist; if (!n[e].option && !sr(i) && null == t.id) { n[e].option = t; break } } e >= n.length && n.push({ option: t }) } }), n } function or(t) { var e = N(); Iv(t, function(t) { var n = t.exist; n && e.set(n.id, t) }), Iv(t, function(t) { var n = t.option; L(!n || null == n.id || !e.get(n.id) || e.get(n.id) === t, "id duplicates: " + (n && n.id)), n && null != n.id && e.set(n.id, t), !t.keyInfo && (t.keyInfo = {}) }), Iv(t, function(t, n) { var i = t.exist, r = t.option, o = t.keyInfo; if (Cv(r)) { if (o.name = null != r.name ? r.name + "" : i ? i.name : Av + n, i) o.id = i.id; else if (null != r.id) o.id = r.id + ""; else { var a = 0; do o.id = "\x00" + o.name + "\x00" + a++; while (e.get(o.id)) } e.set(o.id, t) } }) } function ar(t) { var e = t.name; return !(!e || !e.indexOf(Av)) } function sr(t) { return Cv(t) && t.id && 0 === (t.id + "").indexOf("\x00_ec_\x00") } function lr(t, e) { return null != e.dataIndexInside ? e.dataIndexInside : null != e.dataIndex ? _(e.dataIndex) ? p(e.dataIndex, function(e) { return t.indexOfRawIndex(e) }) : t.indexOfRawIndex(e.dataIndex) : null != e.name ? _(e.name) ? p(e.name, function(e) { return t.indexOfName(e) }) : t.indexOfName(e.name) : void 0 } function ur() { var t = "__\x00ec_inner_" + kv++ + "_" + Math.random().toFixed(5); return function(e) { return e[t] || (e[t] = {}) } } function hr(t, e, n) { if (b(e)) { var i = {}; i[e + "Index"] = 0, e = i } var r = n && n.defaultMainType; !r || cr(e, r + "Index") || cr(e, r + "Id") || cr(e, r + "Name") || (e[r + "Index"] = 0); var o = {}; return Iv(e, function(i, r) { var i = e[r]; if ("dataIndex" === r || "dataIndexInside" === r) return void(o[r] = i); var a = r.match(/^(\w+)(Index|Id|Name)$/) || [], s = a[1], l = (a[2] || "").toLowerCase(); if (!(!s || !l || null == i || "index" === l && "none" === i || n && n.includeMainTypes && u(n .includeMainTypes, s) < 0)) { var h = { mainType: s }; ("index" !== l || "all" !== i) && (h[l] = i); var c = t.queryComponents(h); o[s + "Models"] = c, o[s + "Model"] = c[0] } }), o } function cr(t, e) { return t && t.hasOwnProperty(e) } function dr(t, e, n) { t.setAttribute ? t.setAttribute(e, n) : t[e] = n } function fr(t, e) { return t.getAttribute ? t.getAttribute(e) : t[e] } function pr(t) { return "auto" === t ? dp.domSupported ? "html" : "richText" : t || "html" } function gr(t) { var e = { main: "", sub: "" }; return t && (t = t.split(Pv), e.main = t[0] || "", e.sub = t[1] || ""), e } function vr(t) { L(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t), 'componentType "' + t + '" illegal') } function mr(t, e) { t.$constructor = t, t.extend = function(t) { lp && f(e, function(e) { t[e] || console.warn("Method `" + e + "` should be implemented" + (t.type ? " in " + t .type : "") + ".") }); var n = this, i = function() { t.$constructor ? t.$constructor.apply(this, arguments) : n.apply(this, arguments) }; return a(i.prototype, t), i.extend = this.extend, i.superCall = xr, i.superApply = _r, h(i, this), i .superClass = n, i } } function yr(t) { var e = ["__\x00is_clz", Lv++, Math.random().toFixed(3)].join("_"); t.prototype[e] = !0, lp && L(!t.isInstance, 'The method "is" can not be defined.'), t.isInstance = function( t) { return !(!t || !t[e]) } } function xr(t, e) { var n = P(arguments, 2); return this.superClass.prototype[e].apply(t, n) } function _r(t, e, n) { return this.superClass.prototype[e].apply(t, n) } function wr(t, e) { function n(t) { var e = i[t.main]; return e && e[Ov] || (e = i[t.main] = {}, e[Ov] = !0), e } e = e || {}; var i = {}; if (t.registerClass = function(t, e) { if (e) if (vr(e), e = gr(e), e.sub) { if (e.sub !== Ov) { var r = n(e); r[e.sub] = t } } else lp && i[e.main] && console.warn(e.main + " exists."), i[e.main] = t; return t }, t.getClass = function(t, e, n) { var r = i[t]; if (r && r[Ov] && (r = e ? r[e] : null), n && !r) throw new Error(e ? "Component " + t + "." + (e || "") + " not exists. Load it first." : t + ".type should be specified."); return r }, t.getClassesByMainType = function(t) { t = gr(t); var e = [], n = i[t.main]; return n && n[Ov] ? f(n, function(t, n) { n !== Ov && e.push(t) }) : e.push(n), e }, t.hasClass = function(t) { return t = gr(t), !!i[t.main] }, t.getAllClassMainTypes = function() { var t = []; return f(i, function(e, n) { t.push(n) }), t }, t.hasSubTypes = function(t) { t = gr(t); var e = i[t.main]; return e && e[Ov] }, t.parseClassType = gr, e.registerWhenExtend) { var r = t.extend; r && (t.extend = function(e) { var n = r.call(this, e); return t.registerClass(n, e.type) }) } return t } function br(t) { return t > -Wv && Wv > t } function Sr(t) { return t > Wv || -Wv > t } function Mr(t, e, n, i, r) { var o = 1 - r; return o * o * (o * t + 3 * r * e) + r * r * (r * i + 3 * o * n) } function Ir(t, e, n, i, r) { var o = 1 - r; return 3 * (((e - t) * o + 2 * (n - e) * r) * o + (i - n) * r * r) } function Cr(t, e, n, i, r, o) { var a = i + 3 * (e - n) - t, s = 3 * (n - 2 * e + t), l = 3 * (e - t), u = t - r, h = s * s - 3 * a * l, c = s * l - 9 * a * u, d = l * l - 3 * s * u, f = 0; if (br(h) && br(c)) if (br(s)) o[0] = 0; else { var p = -l / s; p >= 0 && 1 >= p && (o[f++] = p) } else { var g = c * c - 4 * h * d; if (br(g)) { var v = c / h, p = -s / a + v, m = -v / 2; p >= 0 && 1 >= p && (o[f++] = p), m >= 0 && 1 >= m && (o[f++] = m) } else if (g > 0) { var y = Vv(g), x = h * s + 1.5 * a * (-c + y), _ = h * s + 1.5 * a * (-c - y); x = 0 > x ? -Fv(-x, Zv) : Fv(x, Zv), _ = 0 > _ ? -Fv(-_, Zv) : Fv(_, Zv); var p = (-s - (x + _)) / (3 * a); p >= 0 && 1 >= p && (o[f++] = p) } else { var w = (2 * h * s - 3 * a * c) / (2 * Vv(h * h * h)), b = Math.acos(w) / 3, S = Vv(h), M = Math.cos(b), p = (-s - 2 * S * M) / (3 * a), m = (-s + S * (M + Gv * Math.sin(b))) / (3 * a), I = (-s + S * (M - Gv * Math.sin(b))) / (3 * a); p >= 0 && 1 >= p && (o[f++] = p), m >= 0 && 1 >= m && (o[f++] = m), I >= 0 && 1 >= I && (o[f++] = I) } } return f } function Tr(t, e, n, i, r) { var o = 6 * n - 12 * e + 6 * t, a = 9 * e + 3 * i - 3 * t - 9 * n, s = 3 * e - 3 * t, l = 0; if (br(a)) { if (Sr(o)) { var u = -s / o; u >= 0 && 1 >= u && (r[l++] = u) } } else { var h = o * o - 4 * a * s; if (br(h)) r[0] = -o / (2 * a); else if (h > 0) { var c = Vv(h), u = (-o + c) / (2 * a), d = (-o - c) / (2 * a); u >= 0 && 1 >= u && (r[l++] = u), d >= 0 && 1 >= d && (r[l++] = d) } } return l } function Ar(t, e, n, i, r, o) { var a = (e - t) * r + t, s = (n - e) * r + e, l = (i - n) * r + n, u = (s - a) * r + a, h = (l - s) * r + s, c = (h - u) * r + u; o[0] = t, o[1] = a, o[2] = u, o[3] = c, o[4] = c, o[5] = h, o[6] = l, o[7] = i } function Dr(t, e, n, i, r, o, a, s, l, u, h) { var c, d, f, p, g, v = .005, m = 1 / 0; Xv[0] = l, Xv[1] = u; for (var y = 0; 1 > y; y += .05) Yv[0] = Mr(t, n, r, a, y), Yv[1] = Mr(e, i, o, s, y), p = Pp(Xv, Yv), m > p && (c = y, m = p); m = 1 / 0; for (var x = 0; 32 > x && !(Hv > v); x++) d = c - v, f = c + v, Yv[0] = Mr(t, n, r, a, d), Yv[1] = Mr(e, i, o, s, d), p = Pp(Yv, Xv), d >= 0 && m > p ? (c = d, m = p) : (Uv[0] = Mr(t, n, r, a, f), Uv[1] = Mr( e, i, o, s, f), g = Pp(Uv, Xv), 1 >= f && m > g ? (c = f, m = g) : v *= .5); return h && (h[0] = Mr(t, n, r, a, c), h[1] = Mr(e, i, o, s, c)), Vv(m) } function kr(t, e, n, i) { var r = 1 - i; return r * (r * t + 2 * i * e) + i * i * n } function Pr(t, e, n, i) { return 2 * ((1 - i) * (e - t) + i * (n - e)) } function Or(t, e, n, i, r) { var o = t - 2 * e + n, a = 2 * (e - t), s = t - i, l = 0; if (br(o)) { if (Sr(a)) { var u = -s / a; u >= 0 && 1 >= u && (r[l++] = u) } } else { var h = a * a - 4 * o * s; if (br(h)) { var u = -a / (2 * o); u >= 0 && 1 >= u && (r[l++] = u) } else if (h > 0) { var c = Vv(h), u = (-a + c) / (2 * o), d = (-a - c) / (2 * o); u >= 0 && 1 >= u && (r[l++] = u), d >= 0 && 1 >= d && (r[l++] = d) } } return l } function Lr(t, e, n) { var i = t + n - 2 * e; return 0 === i ? .5 : (t - e) / i } function zr(t, e, n, i, r) { var o = (e - t) * i + t, a = (n - e) * i + e, s = (a - o) * i + o; r[0] = t, r[1] = o, r[2] = s, r[3] = s, r[4] = a, r[5] = n } function Er(t, e, n, i, r, o, a, s, l) { var u, h = .005, c = 1 / 0; Xv[0] = a, Xv[1] = s; for (var d = 0; 1 > d; d += .05) { Yv[0] = kr(t, n, r, d), Yv[1] = kr(e, i, o, d); var f = Pp(Xv, Yv); c > f && (u = d, c = f) } c = 1 / 0; for (var p = 0; 32 > p && !(Hv > h); p++) { var g = u - h, v = u + h; Yv[0] = kr(t, n, r, g), Yv[1] = kr(e, i, o, g); var f = Pp(Yv, Xv); if (g >= 0 && c > f) u = g, c = f; else { Uv[0] = kr(t, n, r, v), Uv[1] = kr(e, i, o, v); var m = Pp(Uv, Xv); 1 >= v && c > m ? (u = v, c = m) : h *= .5 } } return l && (l[0] = kr(t, n, r, u), l[1] = kr(e, i, o, u)), Vv(c) } function Br(t, e, n) { if (0 !== t.length) { var i, r = t[0], o = r[0], a = r[0], s = r[1], l = r[1]; for (i = 1; i < t.length; i++) r = t[i], o = jv(o, r[0]), a = qv(a, r[0]), s = jv(s, r[1]), l = qv(l, r[ 1]); e[0] = o, e[1] = s, n[0] = a, n[1] = l } } function Rr(t, e, n, i, r, o) { r[0] = jv(t, n), r[1] = jv(e, i), o[0] = qv(t, n), o[1] = qv(e, i) } function Nr(t, e, n, i, r, o, a, s, l, u) { var h, c = Tr, d = Mr, f = c(t, n, r, a, nm); for (l[0] = 1 / 0, l[1] = 1 / 0, u[0] = -1 / 0, u[1] = -1 / 0, h = 0; f > h; h++) { var p = d(t, n, r, a, nm[h]); l[0] = jv(p, l[0]), u[0] = qv(p, u[0]) } for (f = c(e, i, o, s, im), h = 0; f > h; h++) { var g = d(e, i, o, s, im[h]); l[1] = jv(g, l[1]), u[1] = qv(g, u[1]) } l[0] = jv(t, l[0]), u[0] = qv(t, u[0]), l[0] = jv(a, l[0]), u[0] = qv(a, u[0]), l[1] = jv(e, l[1]), u[1] = qv(e, u[1]), l[1] = jv(s, l[1]), u[1] = qv(s, u[1]) } function Fr(t, e, n, i, r, o, a, s) { var l = Lr, u = kr, h = qv(jv(l(t, n, r), 1), 0), c = qv(jv(l(e, i, o), 1), 0), d = u(t, n, r, h), f = u(e, i, o, c); a[0] = jv(t, r, d), a[1] = jv(e, o, f), s[0] = qv(t, r, d), s[1] = qv(e, o, f) } function Vr(t, e, n, i, r, o, a, s, l) { var u = ae, h = se, c = Math.abs(r - o); if (1e-4 > c % Qv && c > 1e-4) return s[0] = t - n, s[1] = e - i, l[0] = t + n, void(l[1] = e + i); if (Jv[0] = $v(r) * n + t, Jv[1] = Kv(r) * i + e, tm[0] = $v(o) * n + t, tm[1] = Kv(o) * i + e, u(s, Jv, tm), h(l, Jv, tm), r %= Qv, 0 > r && (r += Qv), o %= Qv, 0 > o && (o += Qv), r > o && !a ? o += Qv : o > r && a && (r += Qv), a) { var d = o; o = r, r = d } for (var f = 0; o > f; f += Math.PI / 2) f > r && (em[0] = $v(f) * n + t, em[1] = Kv(f) * i + e, u(s, em, s), h(l, em, l)) } function Wr(t, e, n, i, r, o, a) { if (0 === r) return !1; var s = r, l = 0, u = t; if (a > e + s && a > i + s || e - s > a && i - s > a || o > t + s && o > n + s || t - s > o && n - s > o) return !1; if (t === n) return Math.abs(o - t) <= s / 2; l = (e - i) / (t - n), u = (t * i - n * e) / (t - n); var h = l * o - a + u, c = h * h / (l * l + 1); return s / 2 * s / 2 >= c } function Hr(t, e, n, i, r, o, a, s, l, u, h) { if (0 === l) return !1; var c = l; if (h > e + c && h > i + c && h > o + c && h > s + c || e - c > h && i - c > h && o - c > h && s - c > h || u > t + c && u > n + c && u > r + c && u > a + c || t - c > u && n - c > u && r - c > u && a - c > u) return !1; var d = Dr(t, e, n, i, r, o, a, s, u, h, null); return c / 2 >= d } function Gr(t, e, n, i, r, o, a, s, l) { if (0 === a) return !1; var u = a; if (l > e + u && l > i + u && l > o + u || e - u > l && i - u > l && o - u > l || s > t + u && s > n + u && s > r + u || t - u > s && n - u > s && r - u > s) return !1; var h = Er(t, e, n, i, r, o, s, l, null); return u / 2 >= h } function Zr(t) { return t %= mm, 0 > t && (t += mm), t } function Xr(t, e, n, i, r, o, a, s, l) { if (0 === a) return !1; var u = a; s -= t, l -= e; var h = Math.sqrt(s * s + l * l); if (h - u > n || n > h + u) return !1; if (Math.abs(i - r) % ym < 1e-4) return !0; if (o) { var c = i; i = Zr(r), r = Zr(c) } else i = Zr(i), r = Zr(r); i > r && (r += ym); var d = Math.atan2(l, s); return 0 > d && (d += ym), d >= i && r >= d || d + ym >= i && r >= d + ym } function Yr(t, e, n, i, r, o) { if (o > e && o > i || e > o && i > o) return 0; if (i === e) return 0; var a = e > i ? 1 : -1, s = (o - e) / (i - e); (1 === s || 0 === s) && (a = e > i ? .5 : -.5); var l = s * (n - t) + t; return l === r ? 1 / 0 : l > r ? a : 0 } function Ur(t, e) { return Math.abs(t - e) < wm } function jr() { var t = Sm[0]; Sm[0] = Sm[1], Sm[1] = t } function qr(t, e, n, i, r, o, a, s, l, u) { if (u > e && u > i && u > o && u > s || e > u && i > u && o > u && s > u) return 0; var h = Cr(e, i, o, s, u, bm); if (0 === h) return 0; for (var c, d, f = 0, p = -1, g = 0; h > g; g++) { var v = bm[g], m = 0 === v || 1 === v ? .5 : 1, y = Mr(t, n, r, a, v); l > y || (0 > p && (p = Tr(e, i, o, s, Sm), Sm[1] < Sm[0] && p > 1 && jr(), c = Mr(e, i, o, s, Sm[0]), p > 1 && (d = Mr(e, i, o, s, Sm[1]))), f += 2 === p ? v < Sm[0] ? e > c ? m : -m : v < Sm[ 1] ? c > d ? m : -m : d > s ? m : -m : v < Sm[0] ? e > c ? m : -m : c > s ? m : -m) } return f } function Kr(t, e, n, i, r, o, a, s) { if (s > e && s > i && s > o || e > s && i > s && o > s) return 0; var l = Or(e, i, o, s, bm); if (0 === l) return 0; var u = Lr(e, i, o); if (u >= 0 && 1 >= u) { for (var h = 0, c = kr(e, i, o, u), d = 0; l > d; d++) { var f = 0 === bm[d] || 1 === bm[d] ? .5 : 1, p = kr(t, n, r, bm[d]); a > p || (h += bm[d] < u ? e > c ? f : -f : c > o ? f : -f) } return h } var f = 0 === bm[0] || 1 === bm[0] ? .5 : 1, p = kr(t, n, r, bm[0]); return a > p ? 0 : e > o ? f : -f } function $r(t, e, n, i, r, o, a, s) { if (s -= e, s > n || -n > s) return 0; var l = Math.sqrt(n * n - s * s); bm[0] = -l, bm[1] = l; var u = Math.abs(i - r); if (1e-4 > u) return 0; if (1e-4 > u % _m) { i = 0, r = _m; var h = o ? 1 : -1; return a >= bm[0] + t && a <= bm[1] + t ? h : 0 } if (o) { var l = i; i = Zr(r), r = Zr(l) } else i = Zr(i), r = Zr(r); i > r && (r += _m); for (var c = 0, d = 0; 2 > d; d++) { var f = bm[d]; if (f + t > a) { var p = Math.atan2(s, f), h = o ? 1 : -1; 0 > p && (p = _m + p), (p >= i && r >= p || p + _m >= i && r >= p + _m) && (p > Math.PI / 2 && p < 1.5 * Math.PI && (h = -h), c += h) } } return c } function Qr(t, e, n, i, r) { for (var o = 0, a = 0, s = 0, l = 0, u = 0, h = 0; h < t.length;) { var c = t[h++]; switch (c === xm.M && h > 1 && (n || (o += Yr(a, s, l, u, i, r))), 1 === h && (a = t[h], s = t[h + 1], l = a, u = s), c) { case xm.M: l = t[h++], u = t[h++], a = l, s = u; break; case xm.L: if (n) { if (Wr(a, s, t[h], t[h + 1], e, i, r)) return !0 } else o += Yr(a, s, t[h], t[h + 1], i, r) || 0; a = t[h++], s = t[h++]; break; case xm.C: if (n) { if (Hr(a, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], e, i, r)) return !0 } else o += qr(a, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], i, r) || 0; a = t[h++], s = t[h++]; break; case xm.Q: if (n) { if (Gr(a, s, t[h++], t[h++], t[h], t[h + 1], e, i, r)) return !0 } else o += Kr(a, s, t[h++], t[h++], t[h], t[h + 1], i, r) || 0; a = t[h++], s = t[h++]; break; case xm.A: var d = t[h++], f = t[h++], p = t[h++], g = t[h++], v = t[h++], m = t[h++]; h += 1; var y = 1 - t[h++], x = Math.cos(v) * p + d, _ = Math.sin(v) * g + f; h > 1 ? o += Yr(a, s, x, _, i, r) : (l = x, u = _); var w = (i - d) * g / p + d; if (n) { if (Xr(d, f, g, v, v + m, y, e, w, r)) return !0 } else o += $r(d, f, g, v, v + m, y, w, r); a = Math.cos(v + m) * p + d, s = Math.sin(v + m) * g + f; break; case xm.R: l = a = t[h++], u = s = t[h++]; var b = t[h++], S = t[h++], x = l + b, _ = u + S; if (n) { if (Wr(l, u, x, u, e, i, r) || Wr(x, u, x, _, e, i, r) || Wr(x, _, l, _, e, i, r) || Wr(l, _, l, u, e, i, r)) return !0 } else o += Yr(x, u, x, _, i, r), o += Yr(l, _, l, u, i, r); break; case xm.Z: if (n) { if (Wr(a, s, l, u, e, i, r)) return !0 } else o += Yr(a, s, l, u, i, r); a = l, s = u } } return n || Ur(s, u) || (o += Yr(a, s, l, u, i, r) || 0), 0 !== o } function Jr(t, e, n) { return Qr(t, 0, !1, e, n) } function to(t, e, n, i) { return Qr(t, e, !0, n, i) } function eo(t) { Ti.call(this, t), this.path = null } function no(t, e, n, i, r, o, a, s, l, u, h) { var c = l * (Em / 180), d = zm(c) * (t - n) / 2 + Lm(c) * (e - i) / 2, f = -1 * Lm(c) * (t - n) / 2 + zm(c) * (e - i) / 2, p = d * d / (a * a) + f * f / (s * s); p > 1 && (a *= Om(p), s *= Om(p)); var g = (r === o ? -1 : 1) * Om((a * a * s * s - a * a * f * f - s * s * d * d) / (a * a * f * f + s * s * d * d)) || 0, v = g * a * f / s, m = g * -s * d / a, y = (t + n) / 2 + zm(c) * v - Lm(c) * m, x = (e + i) / 2 + Lm(c) * v + zm(c) * m, _ = Nm([1, 0], [(d - v) / a, (f - m) / s]), w = [(d - v) / a, (f - m) / s], b = [(-1 * d - v) / a, (-1 * f - m) / s], S = Nm(w, b); Rm(w, b) <= -1 && (S = Em), Rm(w, b) >= 1 && (S = 0), 0 === o && S > 0 && (S -= 2 * Em), 1 === o && 0 > S && (S += 2 * Em), h.addData(u, y, x, a, s, _, S, c, o) } function io(t) { if (!t) return new vm; for (var e, n = 0, i = 0, r = n, o = i, a = new vm, s = vm.CMD, l = t.match(Fm), u = 0; u < l.length; u++) { for (var h, c = l[u], d = c.charAt(0), f = c.match(Vm) || [], p = f.length, g = 0; p > g; g++) f[g] = parseFloat(f[g]); for (var v = 0; p > v;) { var m, y, x, _, w, b, S, M = n, I = i; switch (d) { case "l": n += f[v++], i += f[v++], h = s.L, a.addData(h, n, i); break; case "L": n = f[v++], i = f[v++], h = s.L, a.addData(h, n, i); break; case "m": n += f[v++], i += f[v++], h = s.M, a.addData(h, n, i), r = n, o = i, d = "l"; break; case "M": n = f[v++], i = f[v++], h = s.M, a.addData(h, n, i), r = n, o = i, d = "L"; break; case "h": n += f[v++], h = s.L, a.addData(h, n, i); break; case "H": n = f[v++], h = s.L, a.addData(h, n, i); break; case "v": i += f[v++], h = s.L, a.addData(h, n, i); break; case "V": i = f[v++], h = s.L, a.addData(h, n, i); break; case "C": h = s.C, a.addData(h, f[v++], f[v++], f[v++], f[v++], f[v++], f[v++]), n = f[v - 2], i = f[ v - 1]; break; case "c": h = s.C, a.addData(h, f[v++] + n, f[v++] + i, f[v++] + n, f[v++] + i, f[v++] + n, f[v++] + i), n += f[v - 2], i += f[v - 1]; break; case "S": m = n, y = i; var C = a.len(), T = a.data; e === s.C && (m += n - T[C - 4], y += i - T[C - 3]), h = s.C, M = f[v++], I = f[v++], n = f[ v++], i = f[v++], a.addData(h, m, y, M, I, n, i); break; case "s": m = n, y = i; var C = a.len(), T = a.data; e === s.C && (m += n - T[C - 4], y += i - T[C - 3]), h = s.C, M = n + f[v++], I = i + f[ v++], n += f[v++], i += f[v++], a.addData(h, m, y, M, I, n, i); break; case "Q": M = f[v++], I = f[v++], n = f[v++], i = f[v++], h = s.Q, a.addData(h, M, I, n, i); break; case "q": M = f[v++] + n, I = f[v++] + i, n += f[v++], i += f[v++], h = s.Q, a.addData(h, M, I, n, i); break; case "T": m = n, y = i; var C = a.len(), T = a.data; e === s.Q && (m += n - T[C - 4], y += i - T[C - 3]), n = f[v++], i = f[v++], h = s.Q, a .addData(h, m, y, n, i); break; case "t": m = n, y = i; var C = a.len(), T = a.data; e === s.Q && (m += n - T[C - 4], y += i - T[C - 3]), n += f[v++], i += f[v++], h = s.Q, a .addData(h, m, y, n, i); break; case "A": x = f[v++], _ = f[v++], w = f[v++], b = f[v++], S = f[v++], M = n, I = i, n = f[v++], i = f[ v++], h = s.A, no(M, I, n, i, b, S, x, _, w, h, a); break; case "a": x = f[v++], _ = f[v++], w = f[v++], b = f[v++], S = f[v++], M = n, I = i, n += f[v++], i += f[v++], h = s.A, no(M, I, n, i, b, S, x, _, w, h, a) } }("z" === d || "Z" === d) && (h = s.Z, a.addData(h), n = r, i = o), e = h } return a.toStatic(), a } function ro(t, e) { var n = io(t); return e = e || {}, e.buildPath = function(t) { if (t.setData) { t.setData(n.data); var e = t.getContext(); e && t.rebuildPath(e) } else { var e = t; n.rebuildPath(e) } }, e.applyTransform = function(t) { Pm(n, t), this.dirty(!0) }, e } function oo(t, e) { return new eo(ro(t, e)) } function ao(t, e) { return eo.extend(ro(t, e)) } function so(t, e) { for (var n = [], i = t.length, r = 0; i > r; r++) { var o = t[r]; o.path || o.createPathProxy(), o.__dirtyPath && o.buildPath(o.path, o.shape, !0), n.push(o.path) } var a = new eo(e); return a.createPathProxy(), a.buildPath = function(t) { t.appendPath(n); var e = t.getContext(); e && t.rebuildPath(e) }, a } function lo(t, e, n, i, r, o, a) { var s = .5 * (n - t), l = .5 * (i - e); return (2 * (e - n) + s + l) * a + (-3 * (e - n) - 2 * s - l) * o + s * r + e } function uo(t, e, n) { var i = e.points, r = e.smooth; if (i && i.length >= 2) { if (r && "spline" !== r) { var o = jm(i, r, n, e.smoothConstraint); t.moveTo(i[0][0], i[0][1]); for (var a = i.length, s = 0; (n ? a : a - 1) > s; s++) { var l = o[2 * s], u = o[2 * s + 1], h = i[(s + 1) % a]; t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1]) } } else { "spline" === r && (i = Um(i, n)), t.moveTo(i[0][0], i[0][1]); for (var s = 1, c = i.length; c > s; s++) t.lineTo(i[s][0], i[s][1]) } n && t.closePath() } } function ho(t, e, n) { if (e) { var i = e.x1, r = e.x2, o = e.y1, a = e.y2; t.x1 = i, t.x2 = r, t.y1 = o, t.y2 = a; var s = n && n.lineWidth; s && ($m(2 * i) === $m(2 * r) && (t.x1 = t.x2 = fo(i, s, !0)), $m(2 * o) === $m(2 * a) && (t.y1 = t.y2 = fo(o, s, !0))) } } function co(t, e, n) { if (e) { var i = e.x, r = e.y, o = e.width, a = e.height; t.x = i, t.y = r, t.width = o, t.height = a; var s = n && n.lineWidth; s && (t.x = fo(i, s, !0), t.y = fo(r, s, !0), t.width = Math.max(fo(i + o, s, !1) - t.x, 0 === o ? 0 : 1), t.height = Math.max(fo(r + a, s, !1) - t.y, 0 === a ? 0 : 1)) } } function fo(t, e, n) { if (!e) return t; var i = $m(2 * t); return (i + $m(e)) % 2 === 0 ? i / 2 : (i + (n ? 1 : -1)) / 2 } function po(t, e, n) { var i = t.cpx2, r = t.cpy2; return null === i || null === r ? [(n ? Ir : Mr)(t.x1, t.cpx1, t.cpx2, t.x2, e), (n ? Ir : Mr)(t.y1, t.cpy1, t.cpy2, t.y2, e)] : [(n ? Pr : kr)(t.x1, t.cpx1, t.x2, e), (n ? Pr : kr)(t.y1, t.cpy1, t.y2, e)] } function go(t) { Ti.call(this, t), this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this .notClear = !0 } function vo(t) { return eo.extend(t) } function mo(t, e) { return ao(t, e) } function yo(t, e) { xy[t] = e } function xo(t) { return xy.hasOwnProperty(t) ? xy[t] : void 0 } function _o(t, e, n, i) { var r = oo(t, e); return n && ("center" === i && (n = bo(n, r.getBoundingRect())), So(r, n)), r } function wo(t, e, n) { var i = new Ai({ style: { image: t, x: e.x, y: e.y, width: e.width, height: e.height }, onload: function(t) { if ("center" === n) { var r = { width: t.width, height: t.height }; i.setStyle(bo(e, r)) } } }); return i } function bo(t, e) { var n, i = e.width / e.height, r = t.height * i; r <= t.width ? n = t.height : (r = t.width, n = r / i); var o = t.x + t.width / 2, a = t.y + t.height / 2; return { x: o - r / 2, y: a - n / 2, width: r, height: n } } function So(t, e) { if (t.applyTransform) { var n = t.getBoundingRect(), i = n.calculateTransform(e); t.applyTransform(i) } } function Mo(t) { return ho(t.shape, t.shape, t.style), t } function Io(t) { return co(t.shape, t.shape, t.style), t } function Co(t) { return null != t && "none" !== t } function To(t) { if ("string" != typeof t) return t; var e = by.get(t); return e || (e = rn(t, -.1), 1e4 > Sy && (by.set(t, e), Sy++)), e } function Ao(t) { if (t.__hoverStlDirty) { t.__hoverStlDirty = !1; var e = t.__hoverStl; if (!e) return void(t.__cachedNormalStl = t.__cachedNormalZ2 = null); var n = t.__cachedNormalStl = {}; t.__cachedNormalZ2 = t.z2; var i = t.style; for (var r in e) null != e[r] && (n[r] = i[r]); n.fill = i.fill, n.stroke = i.stroke } } function Do(t) { var e = t.__hoverStl; if (e && !t.__highlighted) { var n = t.__zr, i = t.useHoverLayer && n && "canvas" === n.painter.type; if (t.__highlighted = i ? "layer" : "plain", !(t.isGroup || !n && t.useHoverLayer)) { var r = t, o = t.style; i && (r = n.addHover(t), o = r.style), Qo(o), i || Ao(r), o.extendFrom(e), ko(o, e, "fill"), ko(o, e, "stroke"), $o(o), i || (t.dirty(!1), t.z2 += fy) } } } function ko(t, e, n) { !Co(e[n]) && Co(t[n]) && (t[n] = To(t[n])) } function Po(t) { var e = t.__highlighted; if (e && (t.__highlighted = !1, !t.isGroup)) if ("layer" === e) t.__zr && t.__zr.removeHover(t); else { var n = t.style, i = t.__cachedNormalStl; i && (Qo(n), t.setStyle(i), $o(n)); var r = t.__cachedNormalZ2; null != r && t.z2 - r === fy && (t.z2 = r) } } function Oo(t, e, n) { var i, r = vy, o = vy; t.__highlighted && (r = gy, i = !0), e(t, n), t.__highlighted && (o = gy, i = !0), t.isGroup && t.traverse( function(t) { !t.isGroup && e(t, n) }), i && t.__highDownOnUpdate && t.__highDownOnUpdate(r, o) } function Lo(t, e) { e = t.__hoverStl = e !== !1 && (t.hoverStyle || e || {}), t.__hoverStlDirty = !0, t.__highlighted && (t .__cachedNormalStl = null, Po(t), Do(t)) } function zo(t) { !No(this, t) && !this.__highByOuter && Oo(this, Do) } function Eo(t) { !No(this, t) && !this.__highByOuter && Oo(this, Po) } function Bo(t) { this.__highByOuter |= 1 << (t || 0), Oo(this, Do) } function Ro(t) { !(this.__highByOuter &= ~(1 << (t || 0))) && Oo(this, Po) } function No(t, e) { return t.__highDownSilentOnTouch && e.zrByTouch } function Fo(t, e) { Vo(t, !0), Oo(t, Lo, e) } function Vo(t, e) { var n = e === !1; if (t.__highDownSilentOnTouch = t.highDownSilentOnTouch, t.__highDownOnUpdate = t.highDownOnUpdate, !n || t .__highDownDispatcher) { var i = n ? "off" : "on"; t[i]("mouseover", zo)[i]("mouseout", Eo), t[i]("emphasis", Bo)[i]("normal", Ro), t.__highByOuter = t .__highByOuter || 0, t.__highDownDispatcher = !n } } function Wo(t) { return !(!t || !t.__highDownDispatcher) } function Ho(t) { var e = yy[t]; return null == e && 32 >= my && (e = yy[t] = my++), e } function Go(t, e, n, i, r, o, a) { r = r || dy; var s, l = r.labelFetcher, u = r.labelDataIndex, h = r.labelDimIndex, c = r.labelProp, d = n.getShallow("show"), f = i.getShallow("show"); (d || f) && (l && (s = l.getFormattedLabel(u, "normal", null, h, c)), null == s && (s = w(r.defaultText) ? r .defaultText(u, r) : r.defaultText)); var p = d ? s : null, g = f ? D(l ? l.getFormattedLabel(u, "emphasis", null, h, c) : null, s) : null; (null != p || null != g) && (Xo(t, n, o, r), Xo(e, i, a, r, !0)), t.text = p, e.text = g } function Zo(t, e, n) { var i = t.style; e && (Qo(i), t.setStyle(e), $o(i)), i = t.__hoverStl, n && i && (Qo(i), a(i, n), $o(i)) } function Xo(t, e, n, i, r) { return Uo(t, e, i, r), n && a(t, n), t } function Yo(t, e, n) { var i, r = { isRectText: !0 }; n === !1 ? i = !0 : r.autoColor = n, Uo(t, e, r, i) } function Uo(t, e, n, i) { if (n = n || dy, n.isRectText) { var r; n.getTextPosition ? r = n.getTextPosition(e, i) : (r = e.getShallow("position") || (i ? null : "inside"), "outside" === r && (r = "top")), t.textPosition = r, t.textOffset = e.getShallow( "offset"); var o = e.getShallow("rotate"); null != o && (o *= Math.PI / 180), t.textRotation = o, t.textDistance = D(e.getShallow("distance"), i ? null : 5) } var a, s = e.ecModel, l = s && s.option.textStyle, u = jo(e); if (u) { a = {}; for (var h in u) if (u.hasOwnProperty(h)) { var c = e.getModel(["rich", h]); qo(a[h] = {}, c, l, n, i) } } return t.rich = a, qo(t, e, l, n, i, !0), n.forceRich && !n.textStyle && (n.textStyle = {}), t } function jo(t) { for (var e; t && t !== t.ecModel;) { var n = (t.option || dy).rich; if (n) { e = e || {}; for (var i in n) n.hasOwnProperty(i) && (e[i] = 1) } t = t.parentModel } return e } function qo(t, e, n, i, r, o) { n = !r && n || dy, t.textFill = Ko(e.getShallow("color"), i) || n.color, t.textStroke = Ko(e.getShallow( "textBorderColor"), i) || n.textBorderColor, t.textStrokeWidth = D(e.getShallow("textBorderWidth"), n.textBorderWidth), r || (o && (t.insideRollbackOpt = i, $o(t)), null == t.textFill && (t.textFill = i.autoColor)), t.fontStyle = e.getShallow("fontStyle") || n.fontStyle, t.fontWeight = e.getShallow( "fontWeight") || n.fontWeight, t.fontSize = e.getShallow("fontSize") || n.fontSize, t.fontFamily = e .getShallow("fontFamily") || n.fontFamily, t.textAlign = e.getShallow("align"), t.textVerticalAlign = e .getShallow("verticalAlign") || e.getShallow("baseline"), t.textLineHeight = e.getShallow("lineHeight"), t.textWidth = e.getShallow("width"), t.textHeight = e.getShallow("height"), t.textTag = e.getShallow( "tag"), o && i.disableBox || (t.textBackgroundColor = Ko(e.getShallow("backgroundColor"), i), t .textPadding = e.getShallow("padding"), t.textBorderColor = Ko(e.getShallow("borderColor"), i), t .textBorderWidth = e.getShallow("borderWidth"), t.textBorderRadius = e.getShallow("borderRadius"), t .textBoxShadowColor = e.getShallow("shadowColor"), t.textBoxShadowBlur = e.getShallow("shadowBlur"), t.textBoxShadowOffsetX = e.getShallow("shadowOffsetX"), t.textBoxShadowOffsetY = e.getShallow( "shadowOffsetY")), t.textShadowColor = e.getShallow("textShadowColor") || n.textShadowColor, t .textShadowBlur = e.getShallow("textShadowBlur") || n.textShadowBlur, t.textShadowOffsetX = e .getShallow("textShadowOffsetX") || n.textShadowOffsetX, t.textShadowOffsetY = e.getShallow( "textShadowOffsetY") || n.textShadowOffsetY } function Ko(t, e) { return "auto" !== t ? t : e && e.autoColor ? e.autoColor : null } function $o(t) { var e, n = t.textPosition, i = t.insideRollbackOpt; if (i && null == t.textFill) { var r = i.autoColor, o = i.isRectText, a = i.useInsideStyle, s = a !== !1 && (a === !0 || o && n && "string" == typeof n && n.indexOf("inside") >= 0), l = !s && null != r; (s || l) && (e = { textFill: t.textFill, textStroke: t.textStroke, textStrokeWidth: t.textStrokeWidth }), s && (t.textFill = "#fff", null == t.textStroke && (t.textStroke = r, null == t.textStrokeWidth && ( t.textStrokeWidth = 2))), l && (t.textFill = r) } t.insideRollback = e } function Qo(t) { var e = t.insideRollback; e && (t.textFill = e.textFill, t.textStroke = e.textStroke, t.textStrokeWidth = e.textStrokeWidth, t .insideRollback = null) } function Jo(t, e) { var n = e && e.getModel("textStyle"); return z([t.fontStyle || n && n.getShallow("fontStyle") || "", t.fontWeight || n && n.getShallow( "fontWeight") || "", (t.fontSize || n && n.getShallow("fontSize") || 12) + "px", t .fontFamily || n && n.getShallow("fontFamily") || "sans-serif" ].join(" ")) } function ta(t, e, n, i, r, o) { "function" == typeof r && (o = r, r = null); var a = i && i.isAnimationEnabled(); if (a) { var s = t ? "Update" : "", l = i.getShallow("animationDuration" + s), u = i.getShallow("animationEasing" + s), h = i.getShallow("animationDelay" + s); "function" == typeof h && (h = h(r, i.getAnimationDelayParams ? i.getAnimationDelayParams(e, r) : null)), "function" == typeof l && (l = l(r)), l > 0 ? e.animateTo(n, l, h || 0, u, o, !!o) : (e .stopAnimation(), e.attr(n), o && o()) } else e.stopAnimation(), e.attr(n), o && o() } function ea(t, e, n, i, r) { ta(!0, t, e, n, i, r) } function na(t, e, n, i, r) { ta(!1, t, e, n, i, r) } function ia(t, e) { for (var n = ze([]); t && t !== e;) Be(n, t.getLocalTransform(), n), t = t.parent; return n } function ra(t, e, n) { return e && !d(e) && (e = $p.getLocalTransform(e)), n && (e = Ve([], e)), oe([], t, e) } function oa(t, e, n) { var i = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0]), r = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2]), o = ["left" === t ? -i : "right" === t ? i : 0, "top" === t ? -r : "bottom" === t ? r : 0]; return o = ra(o, e, n), Math.abs(o[0]) > Math.abs(o[1]) ? o[0] > 0 ? "right" : "left" : o[1] > 0 ? "bottom" : "top" } function aa(t, e, n) { function i(t) { var e = {}; return t.traverse(function(t) { !t.isGroup && t.anid && (e[t.anid] = t) }), e } function r(t) { var e = { position: G(t.position), rotation: t.rotation }; return t.shape && (e.shape = a({}, t.shape)), e } if (t && e) { var o = i(t); e.traverse(function(t) { if (!t.isGroup && t.anid) { var e = o[t.anid]; if (e) { var i = r(t); t.attr(r(e)), ea(t, i, n, t.dataIndex) } } }) } } function sa(t, e) { return p(t, function(t) { var n = t[0]; n = hy(n, e.x), n = cy(n, e.x + e.width); var i = t[1]; return i = hy(i, e.y), i = cy(i, e.y + e.height), [n, i] }) } function la(t, e) { var n = hy(t.x, e.x), i = cy(t.x + t.width, e.x + e.width), r = hy(t.y, e.y), o = cy(t.y + t.height, e.y + e.height); return i >= n && o >= r ? { x: n, y: r, width: i - n, height: o - r } : void 0 } function ua(t, e, n) { e = a({ rectHover: !0 }, e); var i = e.style = { strokeNoScale: !0 }; return n = n || { x: -1, y: -1, width: 2, height: 2 }, t ? 0 === t.indexOf("image://") ? (i.image = t.slice(8), s(i, n), new Ai(e)) : _o(t.replace( "path://", ""), e, n, "center") : void 0 } function ha(t, e, n, i, r) { for (var o = 0, a = r[r.length - 1]; o < r.length; o++) { var s = r[o]; if (ca(t, e, n, i, s[0], s[1], a[0], a[1])) return !0; a = s } } function ca(t, e, n, i, r, o, a, s) { var l = n - t, u = i - e, h = a - r, c = s - o, d = da(h, c, l, u); if (fa(d)) return !1; var f = t - r, p = e - o, g = da(f, p, l, u) / d; if (0 > g || g > 1) return !1; var v = da(f, p, h, c) / d; return 0 > v || v > 1 ? !1 : !0 } function da(t, e, n, i) { return t * i - n * e } function fa(t) { return 1e-6 >= t && t >= -1e-6 } function pa(t, e, n) { this.parentModel = e, this.ecModel = n, this.option = t } function ga(t, e, n) { for (var i = 0; i < e.length && (!e[i] || (t = t && "object" == typeof t ? t[e[i]] : null, null != t)); i++) ; return null == t && n && (t = n.get(e)), t } function va(t, e) { var n = ky(t).getParent; return n ? n.call(t, e) : t.parentModel } function ma(t) { return [t || "", Py++, Math.random().toFixed(5)].join("_") } function ya(t) { var e = {}; return t.registerSubTypeDefaulter = function(t, n) { t = gr(t), e[t.main] = n }, t.determineSubType = function(n, i) { var r = i.type; if (!r) { var o = gr(n).main; t.hasSubTypes(n) && e[o] && (r = e[o](i)) } return r }, t } function xa(t, e) { function n(t) { var n = {}, o = []; return f(t, function(a) { var s = i(n, a), l = s.originalDeps = e(a), h = r(l, t); s.entryCount = h.length, 0 === s.entryCount && o.push(a), f(h, function(t) { u(s.predecessor, t) < 0 && s.predecessor.push(t); var e = i(n, t); u(e.successor, t) < 0 && e.successor.push(a) }) }), { graph: n, noEntryList: o } } function i(t, e) { return t[e] || (t[e] = { predecessor: [], successor: [] }), t[e] } function r(t, e) { var n = []; return f(t, function(t) { u(e, t) >= 0 && n.push(t) }), n } t.topologicalTravel = function(t, e, i, r) { function o(t) { l[t].entryCount--, 0 === l[t].entryCount && u.push(t) } function a(t) { h[t] = !0, o(t) } if (t.length) { var s = n(e), l = s.graph, u = s.noEntryList, h = {}; for (f(t, function(t) { h[t] = !0 }); u.length;) { var c = u.pop(), d = l[c], p = !!h[c]; p && (i.call(r, c, d.originalDeps.slice()), delete h[c]), f(d.successor, p ? a : o) } f(h, function() { throw new Error("Circle dependency may exists") }) } } } function _a(t) { return t.replace(/^\s+|\s+$/g, "") } function wa(t, e, n, i) { var r = e[1] - e[0], o = n[1] - n[0]; if (0 === r) return 0 === o ? n[0] : (n[0] + n[1]) / 2; if (i) if (r > 0) { if (t <= e[0]) return n[0]; if (t >= e[1]) return n[1] } else { if (t >= e[0]) return n[0]; if (t <= e[1]) return n[1] } else { if (t === e[0]) return n[0]; if (t === e[1]) return n[1] } return (t - e[0]) / r * o + n[0] } function ba(t, e) { switch (t) { case "center": case "middle": t = "50%"; break; case "left": case "top": t = "0%"; break; case "right": case "bottom": t = "100%" } return "string" == typeof t ? _a(t).match(/%$/) ? parseFloat(t) / 100 * e : parseFloat(t) : null == t ? 0 / 0 : +t } function Sa(t, e, n) { return null == e && (e = 10), e = Math.min(Math.max(0, e), 20), t = (+t).toFixed(e), n ? t : +t } function Ma(t) { return t.sort(function(t, e) { return t - e }), t } function Ia(t) { if (t = +t, isNaN(t)) return 0; for (var e = 1, n = 0; Math.round(t * e) / e !== t;) e *= 10, n++; return n } function Ca(t) { var e = t.toString(), n = e.indexOf("e"); if (n > 0) { var i = +e.slice(n + 1); return 0 > i ? -i : 0 } var r = e.indexOf("."); return 0 > r ? 0 : e.length - 1 - r } function Ta(t, e) { var n = Math.log, i = Math.LN10, r = Math.floor(n(t[1] - t[0]) / i), o = Math.round(n(Math.abs(e[1] - e[0])) / i), a = Math.min(Math.max(-r + o, 0), 20); return isFinite(a) ? a : 20 } function Aa(t, e, n) { if (!t[e]) return 0; var i = g(t, function(t, e) { return t + (isNaN(e) ? 0 : e) }, 0); if (0 === i) return 0; for (var r = Math.pow(10, n), o = p(t, function(t) { return (isNaN(t) ? 0 : t) / i * r * 100 }), a = 100 * r, s = p(o, function(t) { return Math.floor(t) }), l = g(s, function(t, e) { return t + e }, 0), u = p(o, function(t, e) { return t - s[e] }); a > l;) { for (var h = Number.NEGATIVE_INFINITY, c = null, d = 0, f = u.length; f > d; ++d) u[d] > h && (h = u[d], c = d); ++s[c], u[c] = 0, ++l } return s[e] / r } function Da(t) { var e = 2 * Math.PI; return (t % e + e) % e } function ka(t) { return t > -Oy && Oy > t } function Pa(t) { if (t instanceof Date) return t; if ("string" == typeof t) { var e = zy.exec(t); if (!e) return new Date(0 / 0); if (e[8]) { var n = +e[4] || 0; return "Z" !== e[8].toUpperCase() && (n -= e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, n, +(e[5] || 0), +e[6] || 0, +e[7] || 0)) } return new Date(+e[1], +(e[2] || 1) - 1, +e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, +e[7] || 0) } return new Date(null == t ? 0 / 0 : Math.round(t)) } function Oa(t) { return Math.pow(10, La(t)) } function La(t) { if (0 === t) return 0; var e = Math.floor(Math.log(t) / Math.LN10); return t / Math.pow(10, e) >= 10 && e++, e } function za(t, e) { var n, i = La(t), r = Math.pow(10, i), o = t / r; return n = e ? 1.5 > o ? 1 : 2.5 > o ? 2 : 4 > o ? 3 : 7 > o ? 5 : 10 : 1 > o ? 1 : 2 > o ? 2 : 3 > o ? 3 : 5 > o ? 5 : 10, t = n * r, i >= -20 ? +t.toFixed(0 > i ? -i : 0) : t } function Ea(t, e) { var n = (t.length - 1) * e + 1, i = Math.floor(n), r = +t[i - 1], o = n - i; return o ? r + o * (t[i] - r) : r } function Ba(t) { function e(t, n, i) { return t.interval[i] < n.interval[i] || t.interval[i] === n.interval[i] && (t.close[i] - n.close[i] === (i ? -1 : 1) || !i && e(t, n, 1)) } t.sort(function(t, n) { return e(t, n, 0) ? -1 : 1 }); for (var n = -1 / 0, i = 1, r = 0; r < t.length;) { for (var o = t[r].interval, a = t[r].close, s = 0; 2 > s; s++) o[s] <= n && (o[s] = n, a[s] = s ? 1 : 1 - i), n = o[s], i = a[s]; o[0] === o[1] && a[0] * a[1] !== 1 ? t.splice(r, 1) : r++ } return t } function Ra(t) { return t - parseFloat(t) >= 0 } function Na(t) { return isNaN(t) ? "-" : (t = (t + "").split("."), t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (t .length > 1 ? "." + t[1] : "")) } function Fa(t, e) { return t = (t || "").toLowerCase().replace(/-(.)/g, function(t, e) { return e.toUpperCase() }), e && t && (t = t.charAt(0).toUpperCase() + t.slice(1)), t } function Va(t) { return null == t ? "" : (t + "").replace(Ry, function(t, e) { return Ny[e] }) } function Wa(t, e, n) { _(e) || (e = [e]); var i = e.length; if (!i) return ""; for (var r = e[0].$vars || [], o = 0; o < r.length; o++) { var a = Fy[o]; t = t.replace(Vy(a), Vy(a, 0)) } for (var s = 0; i > s; s++) for (var l = 0; l < r.length; l++) { var u = e[s][r[l]]; t = t.replace(Vy(Fy[l], s), n ? Va(u) : u) } return t } function Ha(t, e, n) { return f(e, function(e, i) { t = t.replace("{" + i + "}", n ? Va(e) : e) }), t } function Ga(t, e) { t = b(t) ? { color: t, extraCssText: e } : t || {}; var n = t.color, i = t.type, e = t.extraCssText, r = t.renderMode || "html", o = t.markerId || "X"; return n ? "html" === r ? "subItem" === i ? '' : '' : { renderMode: r, content: "{marker" + o + "|} ", style: { color: n } } : "" } function Za(t, e) { return t += "", "0000".substr(0, e - t.length) + t } function Xa(t, e, n) { ("week" === t || "month" === t || "quarter" === t || "half-year" === t || "year" === t) && (t = "MM-dd\nyyyy"); var i = Pa(e), r = n ? "UTC" : "", o = i["get" + r + "FullYear"](), a = i["get" + r + "Month"]() + 1, s = i["get" + r + "Date"](), l = i["get" + r + "Hours"](), u = i["get" + r + "Minutes"](), h = i["get" + r + "Seconds"](), c = i["get" + r + "Milliseconds"](); return t = t.replace("MM", Za(a, 2)).replace("M", a).replace("yyyy", o).replace("yy", o % 100).replace("dd", Za(s, 2)).replace("d", s).replace("hh", Za(l, 2)).replace("h", l).replace("mm", Za(u, 2)).replace( "m", u).replace("ss", Za(h, 2)).replace("s", h).replace("SSS", Za(c, 3)) } function Ya(t) { return t ? t.charAt(0).toUpperCase() + t.substr(1) : t } function Ua(t) { return Yn(t.text, t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich, t .truncate) } function ja(t, e, n, i, r, o, a, s) { return Yn(t, e, n, i, r, s, o, a) } function qa(t, e) { if ("_blank" === e || "blank" === e) { var n = window.open(); n.opener = null, n.location = t } else window.open(t, e) } function Ka(t, e, n, i, r) { var o = 0, a = 0; null == i && (i = 1 / 0), null == r && (r = 1 / 0); var s = 0; e.eachChild(function(l, u) { var h, c, d = l.position, f = l.getBoundingRect(), p = e.childAt(u + 1), g = p && p.getBoundingRect(); if ("horizontal" === t) { var v = f.width + (g ? -g.x + f.x : 0); h = o + v, h > i || l.newline ? (o = 0, h = v, a += s + n, s = f.height) : s = Math.max(s, f .height) } else { var m = f.height + (g ? -g.y + f.y : 0); c = a + m, c > r || l.newline ? (o += s + n, a = 0, c = m, s = f.width) : s = Math.max(s, f .width) } l.newline || (d[0] = o, d[1] = a, "horizontal" === t ? o = h + n : a = c + n) }) } function $a(t, e, n) { n = By(n || 0); var i = e.width, r = e.height, o = ba(t.left, i), a = ba(t.top, r), s = ba(t.right, i), l = ba(t.bottom, r), u = ba(t.width, i), h = ba(t.height, r), c = n[2] + n[0], d = n[1] + n[3], f = t.aspect; switch (isNaN(u) && (u = i - s - d - o), isNaN(h) && (h = r - l - c - a), null != f && (isNaN(u) && isNaN( h) && (f > i / r ? u = .8 * i : h = .8 * r), isNaN(u) && (u = f * h), isNaN(h) && (h = u / f)), isNaN(o) && (o = i - s - u - d), isNaN(a) && (a = r - l - h - c), t.left || t.right) { case "center": o = i / 2 - u / 2 - n[3]; break; case "right": o = i - u - d } switch (t.top || t.bottom) { case "middle": case "center": a = r / 2 - h / 2 - n[0]; break; case "bottom": a = r - h - c } o = o || 0, a = a || 0, isNaN(u) && (u = i - d - o - (s || 0)), isNaN(h) && (h = r - c - a - (l || 0)); var p = new Tn(o + n[3], a + n[0], u, h); return p.margin = n, p } function Qa(t, e, n) { function i(n, i) { var a = {}, l = 0, u = {}, h = 0, c = 2; if (Gy(n, function(e) { u[e] = t[e] }), Gy(n, function(t) { r(e, t) && (a[t] = u[t] = e[t]), o(a, t) && l++, o(u, t) && h++ }), s[i]) return o(e, n[1]) ? u[n[2]] = null : o(e, n[2]) && (u[n[1]] = null), u; if (h !== c && l) { if (l >= c) return a; for (var d = 0; d < n.length; d++) { var f = n[d]; if (!r(a, f) && r(t, f)) { a[f] = t[f]; break } } return a } return u } function r(t, e) { return t.hasOwnProperty(e) } function o(t, e) { return null != t[e] && "auto" !== t[e] } function a(t, e, n) { Gy(t, function(t) { e[t] = n[t] }) }!S(n) && (n = {}); var s = n.ignoreSize; !_(s) && (s = [s, s]); var l = i(Xy[0], 0), u = i(Xy[1], 1); a(Xy[0], t, l), a(Xy[1], t, u) } function Ja(t) { return ts({}, t) } function ts(t, e) { return e && t && Gy(Zy, function(n) { e.hasOwnProperty(n) && (t[n] = e[n]) }), t } function es(t) { var e = []; return f(qy.getClassesByMainType(t), function(t) { e = e.concat(t.prototype.dependencies || []) }), e = p(e, function(t) { return gr(t).main }), "dataset" !== t && u(e, "dataset") <= 0 && e.unshift("dataset"), e } function ns(t, e) { for (var n = t.length, i = 0; n > i; i++) if (t[i].length > e) return t[i]; return t[n - 1] } function is(t) { this.fromDataset = t.fromDataset, this.data = t.data || (t.sourceFormat === ix ? {} : []), this .sourceFormat = t.sourceFormat || rx, this.seriesLayoutBy = t.seriesLayoutBy || ax, this .dimensionsDefine = t.dimensionsDefine, this.encodeDefine = t.encodeDefine && N(t.encodeDefine), this .startIndex = t.startIndex || 0, this.dimensionsDetectCount = t.dimensionsDetectCount } function rs(t) { var e = t.option.source, n = rx; if (I(e)) n = ox; else if (_(e)) { 0 === e.length && (n = ex); for (var i = 0, r = e.length; r > i; i++) { var o = e[i]; if (null != o) { if (_(o)) { n = ex; break } if (S(o)) { n = nx; break } } } } else if (S(e)) { for (var a in e) if (e.hasOwnProperty(a) && d(e[a])) { n = ix; break } } else if (null != e) throw new Error("Invalid data"); ux(t).sourceFormat = n } function os(t) { return ux(t).source } function as(t) { ux(t).datasetMap = N() } function ss(t) { var e = t.option, n = e.data, i = I(n) ? ox : tx, r = !1, o = e.seriesLayoutBy, a = e.sourceHeader, s = e.dimensions, l = fs(t); if (l) { var u = l.option; n = u.source, i = ux(l).sourceFormat, r = !0, o = o || u.seriesLayoutBy, null == a && (a = u .sourceHeader), s = s || u.dimensions } var h = ls(n, i, o, a, s); ux(t).source = new is({ data: n, fromDataset: r, seriesLayoutBy: o, sourceFormat: i, dimensionsDefine: h.dimensionsDefine, startIndex: h.startIndex, dimensionsDetectCount: h.dimensionsDetectCount, encodeDefine: e.encode }) } function ls(t, e, n, i, r) { if (!t) return { dimensionsDefine: us(r) }; var o, a; if (e === ex) "auto" === i || null == i ? hs(function(t) { null != t && "-" !== t && (b(t) ? null == a && (a = 1) : a = 0) }, n, t, 10) : a = i ? 1 : 0, r || 1 !== a || (r = [], hs(function(t, e) { r[e] = null != t ? t : "" }, n, t)), o = r ? r.length : n === sx ? t.length : t[0] ? t[0].length : null; else if (e === nx) r || (r = cs(t)); else if (e === ix) r || (r = [], f(t, function(t, e) { r.push(e) })); else if (e === tx) { var s = nr(t[0]); o = _(s) && s.length || 1 } else e === ox && lp && L(!!r, "dimensions must be given if data is TypedArray."); return { startIndex: a, dimensionsDefine: us(r), dimensionsDetectCount: o } } function us(t) { if (t) { var e = N(); return p(t, function(t) { if (t = a({}, S(t) ? t : { name: t }), null == t.name) return t; t.name += "", null == t.displayName && (t.displayName = t.name); var n = e.get(t.name); return n ? t.name += "-" + n.count++ : e.set(t.name, { count: 1 }), t }) } } function hs(t, e, n, i) { if (null == i && (i = 1 / 0), e === sx) for (var r = 0; r < n.length && i > r; r++) t(n[r] ? n[r][0] : null, r); else for (var o = n[0] || [], r = 0; r < o.length && i > r; r++) t(o[r], r) } function cs(t) { for (var e, n = 0; n < t.length && !(e = t[n++]);); if (e) { var i = []; return f(e, function(t, e) { i.push(e) }), i } } function ds(t, e, n) { function i(t, e, n) { for (var i = 0; n > i; i++) t.push(e + i) } function r(t) { var e = t.dimsDef; return e ? e.length : 1 } var o = {}, a = fs(e); if (!a || !t) return o; var s, l, u = [], h = [], c = e.ecModel, d = ux(c).datasetMap, p = a.uid + "_" + n.seriesLayoutBy; t = t.slice(), f(t, function(e, n) { !S(e) && (t[n] = { name: e }), "ordinal" === e.type && null == s && (s = n, l = r(t[n])), o[e.name] = [] }); var g = d.get(p) || d.set(p, { categoryWayDim: l, valueWayDim: 0 }); return f(t, function(t, e) { var n = t.name, a = r(t); if (null == s) { var l = g.valueWayDim; i(o[n], l, a), i(h, l, a), g.valueWayDim += a } else if (s === e) i(o[n], 0, a), i(u, 0, a); else { var l = g.categoryWayDim; i(o[n], l, a), i(h, l, a), g.categoryWayDim += a } }), u.length && (o.itemName = u), h.length && (o.seriesName = h), o } function fs(t) { var e = t.option, n = e.data; return n ? void 0 : t.ecModel.getComponent("dataset", e.datasetIndex || 0) } function ps(t, e) { return gs(t.data, t.sourceFormat, t.seriesLayoutBy, t.dimensionsDefine, t.startIndex, e) } function gs(t, e, n, i, r, o) { function a(t) { var e = b(t); return null != t && isFinite(t) && "" !== t ? e ? lx.Might : lx.Not : e && "-" !== t ? lx.Must : void 0 } var s, l = 5; if (I(t)) return lx.Not; var u, h; if (i) { var c = i[o]; S(c) ? (u = c.name, h = c.type) : b(c) && (u = c) } if (null != h) return "ordinal" === h ? lx.Must : lx.Not; if (e === ex) if (n === sx) { for (var d = t[o], f = 0; f < (d || []).length && l > f; f++) if (null != (s = a(d[r + f]))) return s } else for (var f = 0; f < t.length && l > f; f++) { var p = t[r + f]; if (p && null != (s = a(p[o]))) return s } else if (e === nx) { if (!u) return lx.Not; for (var f = 0; f < t.length && l > f; f++) { var g = t[f]; if (g && null != (s = a(g[u]))) return s } } else if (e === ix) { if (!u) return lx.Not; var d = t[u]; if (!d || I(d)) return lx.Not; for (var f = 0; f < d.length && l > f; f++) if (null != (s = a(d[f]))) return s } else if (e === tx) for (var f = 0; f < t.length && l > f; f++) { var g = t[f], v = nr(g); if (!_(v)) return lx.Not; if (null != (s = a(v[o]))) return s } return lx.Not } function vs(t, e) { if (e) { var n = e.seiresIndex, i = e.seriesId, r = e.seriesName; return null != n && t.componentIndex !== n || null != i && t.id !== i || null != r && t.name !== r } } function ms(t, e) { var n = t.color && !t.colorLayer; f(e, function(e, o) { "colorLayer" === o && n || qy.hasClass(o) || ("object" == typeof e ? t[o] = t[o] ? r(t[o], e, ! 1) : i(e) : null == t[o] && (t[o] = e)) }) } function ys(t) { t = t, this.option = {}, this.option[hx] = 1, this._componentsMap = N({ series: [] }), this._seriesIndices, this._seriesIndicesMap, ms(t, this._theme.option), r(t, $y, !1), this .mergeOption(t) } function xs(t, e) { _(e) || (e = e ? [e] : []); var n = {}; return f(e, function(e) { n[e] = (t.get(e) || []).slice() }), n } function _s(t, e, n) { var i = e.type ? e.type : n ? n.subType : qy.determineSubType(t, e); return i } function ws(t, e) { t._seriesIndicesMap = N(t._seriesIndices = p(e, function(t) { return t.componentIndex }) || []) } function bs(t, e) { return e.hasOwnProperty("subType") ? v(t, function(t) { return t.subType === e.subType }) : t } function Ss(t) { if (lp && !t._seriesIndices) throw new Error("Option should contains series.") } function Ms(t) { f(dx, function(e) { this[e] = y(t[e], t) }, this) } function Is() { this._coordinateSystems = [] } function Cs(t) { this._api = t, this._timelineOptions = [], this._mediaList = [], this._mediaDefault, this ._currentMediaIndices = [], this._optionBackup, this._newBaseOption } function Ts(t, e, n) { var i, r, o = [], a = [], s = t.timeline; if (t.baseOption && (r = t.baseOption), (s || t.options) && (r = r || {}, o = (t.options || []).slice()), t .media) { r = r || {}; var l = t.media; px(l, function(t) { t && t.option && (t.query ? a.push(t) : i || (i = t)) }) } return r || (r = t), r.timeline || (r.timeline = s), px([r].concat(o).concat(p(a, function(t) { return t.option })), function(t) { px(e, function(e) { e(t, n) }) }), { baseOption: r, timelineOptions: o, mediaDefault: i, mediaList: a } } function As(t, e, n) { var i = { width: e, height: n, aspectratio: e / n }, r = !0; return f(t, function(t, e) { var n = e.match(yx); if (n && n[1] && n[2]) { var o = n[1], a = n[2].toLowerCase(); Ds(i[a], t, o) || (r = !1) } }), r } function Ds(t, e, n) { return "min" === n ? t >= e : "max" === n ? e >= t : t === e } function ks(t, e) { return t.join(",") === e.join(",") } function Ps(t, e) { e = e || {}, px(e, function(e, n) { if (null != e) { var i = t[n]; if (qy.hasClass(n)) { e = tr(e), i = tr(i); var r = rr(i, e); t[n] = vx(r, function(t) { return t.option && t.exist ? mx(t.exist, t.option, !0) : t.exist || t.option }) } else t[n] = mx(i, e, !0) } }) } function Os(t) { var e = t && t.itemStyle; if (e) for (var n = 0, i = bx.length; i > n; n++) { var o = bx[n], a = e.normal, s = e.emphasis; a && a[o] && (t[o] = t[o] || {}, t[o].normal ? r(t[o].normal, a[o]) : t[o].normal = a[o], a[o] = null), s && s[o] && (t[o] = t[o] || {}, t[o].emphasis ? r(t[o].emphasis, s[o]) : t[o] .emphasis = s[o], s[o] = null) } } function Ls(t, e, n) { if (t && t[e] && (t[e].normal || t[e].emphasis)) { var i = t[e].normal, r = t[e].emphasis; i && (n ? (t[e].normal = t[e].emphasis = null, s(t[e], i)) : t[e] = i), r && (t.emphasis = t.emphasis || {}, t.emphasis[e] = r) } } function zs(t) { Ls(t, "itemStyle"), Ls(t, "lineStyle"), Ls(t, "areaStyle"), Ls(t, "label"), Ls(t, "labelLine"), Ls(t, "upperLabel"), Ls(t, "edgeLabel") } function Es(t, e) { var n = _x(t) && t[e], i = _x(n) && n.textStyle; if (i) for (var r = 0, o = Dv.length; o > r; r++) { var e = Dv[r]; i.hasOwnProperty(e) && (n[e] = i[e]) } } function Bs(t) { t && (zs(t), Es(t, "label"), t.emphasis && Es(t.emphasis, "label")) } function Rs(t) { if (_x(t)) { Os(t), zs(t), Es(t, "label"), Es(t, "upperLabel"), Es(t, "edgeLabel"), t.emphasis && (Es(t.emphasis, "label"), Es(t.emphasis, "upperLabel"), Es(t.emphasis, "edgeLabel")); var e = t.markPoint; e && (Os(e), Bs(e)); var n = t.markLine; n && (Os(n), Bs(n)); var i = t.markArea; i && Bs(i); var r = t.data; if ("graph" === t.type) { r = r || t.nodes; var o = t.links || t.edges; if (o && !I(o)) for (var a = 0; a < o.length; a++) Bs(o[a]); f(t.categories, function(t) { zs(t) }) } if (r && !I(r)) for (var a = 0; a < r.length; a++) Bs(r[a]); var e = t.markPoint; if (e && e.data) for (var s = e.data, a = 0; a < s.length; a++) Bs(s[a]); var n = t.markLine; if (n && n.data) for (var l = n.data, a = 0; a < l.length; a++) _(l[a]) ? (Bs(l[a][0]), Bs(l[a][1])) : Bs(l[a]); "gauge" === t.type ? (Es(t, "axisLabel"), Es(t, "title"), Es(t, "detail")) : "treemap" === t.type ? (Ls( t.breadcrumb, "itemStyle"), f(t.levels, function(t) { zs(t) })) : "tree" === t.type && zs(t.leaves) } } function Ns(t) { return _(t) ? t : t ? [t] : [] } function Fs(t) { return (_(t) ? t[0] : t) || {} } function Vs(t, e) { e = e.split(","); for (var n = t, i = 0; i < e.length && (n = n && n[e[i]], null != n); i++); return n } function Ws(t, e, n, i) { e = e.split(","); for (var r, o = t, a = 0; a < e.length - 1; a++) r = e[a], null == o[r] && (o[r] = {}), o = o[r]; (i || null == o[e[a]]) && (o[e[a]] = n) } function Hs(t) { f(Mx, function(e) { e[0] in t && !(e[1] in t) && (t[e[1]] = t[e[0]]) }) } function Gs(t) { f(t, function(e, n) { var i = [], r = [0 / 0, 0 / 0], o = [e.stackResultDimension, e.stackedOverDimension], a = e.data, s = e.isStackedByIndex, l = a.map(o, function(o, l, u) { var h = a.get(e.stackedDimension, u); if (isNaN(h)) return r; var c, d; s ? d = a.getRawIndex(u) : c = a.get(e.stackedByDimension, u); for (var f = 0 / 0, p = n - 1; p >= 0; p--) { var g = t[p]; if (s || (d = g.data.rawIndexOf(g.stackedByDimension, c)), d >= 0) { var v = g.data.getByRawIndex(g.stackResultDimension, d); if (h >= 0 && v > 0 || 0 >= h && 0 > v) { h += v, f = v; break } } } return i[0] = h, i[1] = f, i }); a.hostModel.setData(l), e.data = l }) } function Zs(t, e) { is.isInstance(t) || (t = is.seriesDataToSource(t)), this._source = t; var n = this._data = t.data, i = t.sourceFormat; if (i === ox) { if (lp && null == e) throw new Error("Typed array data must specify dimension size"); this._offset = 0, this._dimSize = e, this._data = n } var r = Dx[i === ex ? i + "_" + t.seriesLayoutBy : i]; lp && L(r, "Invalide sourceFormat: " + i), a(this, r) } function Xs() { return this._data.length } function Ys(t) { return this._data[t] } function Us(t) { for (var e = 0; e < t.length; e++) this._data.push(t[e]) } function js(t, e, n) { return null != n ? t[n] : t } function qs(t, e, n, i) { return Ks(t[i], this._dimensionInfos[e]) } function Ks(t, e) { var n = e && e.type; if ("ordinal" === n) { var i = e && e.ordinalMeta; return i ? i.parseAndCollect(t) : t } return "time" === n && "number" != typeof t && null != t && "-" !== t && (t = +Pa(t)), null == t || "" === t ? 0 / 0 : +t } function $s(t, e, n) { if (t) { var i = t.getRawDataItem(e); if (null != i) { var r, o, a = t.getProvider().getSource().sourceFormat, s = t.getDimensionInfo(n); return s && (r = s.name, o = s.index), kx[a](i, e, o, r) } } } function Qs(t) { return new Js(t) } function Js(t) { t = t || {}, this._reset = t.reset, this._plan = t.plan, this._count = t.count, this._onDirty = t.onDirty, this._dirty = !0, this.context } function tl(t, e, n, i, r, o) { Ex.reset(n, i, r, o), t._callingProgress = e, t._callingProgress({ start: n, end: i, count: i - n, next: Ex.next }, t.context) } function el(t, e) { t._dueIndex = t._outputDueEnd = t._dueEnd = 0, t._settedOutputEnd = null; var n, i; !e && t._reset && (n = t._reset(t.context), n && n.progress && (i = n.forceFirstProgress, n = n.progress), _(n) && !n.length && (n = null)), t._progress = n, t._modBy = t._modDataCount = null; var r = t._downstream; return r && r.dirty(), i } function nl(t) { var e = t.name; ar(t) || (t.name = il(t) || e) } function il(t) { var e = t.getRawData(), n = e.mapDimension("seriesName", !0), i = []; return f(n, function(t) { var n = e.getDimensionInfo(t); n.displayName && i.push(n.displayName) }), i.join(" ") } function rl(t) { return t.model.getRawData().count() } function ol(t) { var e = t.model; return e.setData(e.getRawData().cloneShallow()), al } function al(t, e) { e.outputData && t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData) } function sl(t, e) { f(t.CHANGABLE_METHODS, function(n) { t.wrapMethod(n, x(ll, e)) }) } function ll(t) { var e = ul(t); e && e.setOutputEnd(this.count()) } function ul(t) { var e = (t.ecModel || {}).scheduler, n = e && e.getPipeline(t.uid); if (n) { var i = n.currentTask; if (i) { var r = i.agentStubMap; r && (i = r.get(t.uid)) } return i } } function hl() { this.group = new Cg, this.uid = ma("viewChart"), this.renderTask = Qs({ plan: fl, reset: pl }), this.renderTask.context = { view: this } } function cl(t, e, n) { if (t && (t.trigger(e, n), t.isGroup && !Wo(t))) for (var i = 0, r = t.childCount(); r > i; i++) cl(t.childAt(i), e, n) } function dl(t, e, n) { var i = lr(t, e), r = e && null != e.highlightKey ? Ho(e.highlightKey) : null; null != i ? f(tr(i), function(e) { cl(t.getItemGraphicEl(e), n, r) }) : t.eachItemGraphicEl(function(t) { cl(t, n, r) }) } function fl(t) { return Hx(t.model) } function pl(t) { var e = t.model, n = t.ecModel, i = t.api, r = t.payload, o = e.pipelineContext.progressiveRender, a = t.view, s = r && Wx(r).updateMethod, l = o ? "incrementalPrepareRender" : s && a[s] ? s : "render"; return "render" !== l && a[l](e, n, i, r), Zx[l] } function gl(t, e, n) { function i() { h = (new Date).getTime(), c = null, t.apply(a, s || []) } var r, o, a, s, l, u = 0, h = 0, c = null; e = e || 0; var d = function() { r = (new Date).getTime(), a = this, s = arguments; var t = l || e, d = l || n; l = null, o = r - (d ? u : h) - t, clearTimeout(c), d ? c = setTimeout(i, t) : o >= 0 ? i() : c = setTimeout(i, -o), u = r }; return d.clear = function() { c && (clearTimeout(c), c = null) }, d.debounceNextCall = function(t) { l = t }, d } function vl(t, e, n, i) { var r = t[e]; if (r) { var o = r[Xx] || r, a = r[Ux], s = r[Yx]; if (s !== n || a !== i) { if (null == n || !i) return t[e] = o; r = t[e] = gl(o, n, "debounce" === i), r[Xx] = o, r[Ux] = i, r[Yx] = n } return r } } function ml(t, e) { var n = t[e]; n && n[Xx] && (t[e] = n[Xx]) } function yl(t, e, n, i) { this.ecInstance = t, this.api = e, this.unfinished; var n = this._dataProcessorHandlers = n.slice(), i = this._visualHandlers = i.slice(); this._allHandlers = n.concat(i), this._stageTaskMap = N() } function xl(t, e, n, i, r) { function o(t, e) { return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id)) } r = r || {}; var a; f(e, function(e) { if (!r.visualType || r.visualType === e.visualType) { var s = t._stageTaskMap.get(e.uid), l = s.seriesTaskMap, u = s.overallTask; if (u) { var h, c = u.agentStubMap; c.each(function(t) { o(r, t) && (t.dirty(), h = !0) }), h && u.dirty(), t_(u, i); var d = t.getPerformArgs(u, r.block); c.each(function(t) { t.perform(d) }), a |= u.perform(d) } else l && l.each(function(s) { o(r, s) && s.dirty(); var l = t.getPerformArgs(s, r.block); l.skip = !e.performRawSeries && n.isSeriesFiltered(s.context.model), t_(s, i), a |= s.perform(l) }) } }), t.unfinished |= a } function _l(t, e, n, i, r) { function o(n) { var o = n.uid, s = a.get(o) || a.set(o, Qs({ plan: Cl, reset: Tl, count: Dl })); s.context = { model: n, ecModel: i, api: r, useClearVisual: e.isVisual && !e.isLayout, plan: e.plan, reset: e.reset, scheduler: t }, kl(t, n, s) } var a = n.seriesTaskMap || (n.seriesTaskMap = N()), s = e.seriesType, l = e.getTargetSeries; e.createOnAllSeries ? i.eachRawSeries(o) : s ? i.eachRawSeriesByType(s, o) : l && l(i, r).each(o); var u = t._pipelineMap; a.each(function(t, e) { u.get(e) || (t.dispose(), a.removeKey(e)) }) } function wl(t, e, n, i, r) { function o(e) { var n = e.uid, i = s.get(n); i || (i = s.set(n, Qs({ reset: Sl, onDirty: Il })), a.dirty()), i.context = { model: e, overallProgress: h, modifyOutputEnd: c }, i.agent = a, i.__block = h, kl(t, e, i) } var a = n.overallTask = n.overallTask || Qs({ reset: bl }); a.context = { ecModel: i, api: r, overallReset: e.overallReset, scheduler: t }; var s = a.agentStubMap = a.agentStubMap || N(), l = e.seriesType, u = e.getTargetSeries, h = !0, c = e.modifyOutputEnd; l ? i.eachRawSeriesByType(l, o) : u ? u(i, r).each(o) : (h = !1, f(i.getSeries(), o)); var d = t._pipelineMap; s.each(function(t, e) { d.get(e) || (t.dispose(), a.dirty(), s.removeKey(e)) }) } function bl(t) { t.overallReset(t.ecModel, t.api, t.payload) } function Sl(t) { return t.overallProgress && Ml } function Ml() { this.agent.dirty(), this.getDownstream().dirty() } function Il() { this.agent && this.agent.dirty() } function Cl(t) { return t.plan && t.plan(t.model, t.ecModel, t.api, t.payload) } function Tl(t) { t.useClearVisual && t.data.clearAllVisual(); var e = t.resetDefines = tr(t.reset(t.model, t.ecModel, t.api, t.payload)); return e.length > 1 ? p(e, function(t, e) { return Al(e) }) : e_ } function Al(t) { return function(e, n) { var i = n.data, r = n.resetDefines[t]; if (r && r.dataEach) for (var o = e.start; o < e.end; o++) r.dataEach(i, o); else r && r.progress && r.progress(e, i) } } function Dl(t) { return t.data.count() } function kl(t, e, n) { var i = e.uid, r = t._pipelineMap.get(i); !r.head && (r.head = n), r.tail && r.tail.pipe(n), r.tail = n, n.__idxInPipeline = r.count++, n.__pipeline = r } function Pl(t) { n_ = null; try { t(i_, r_) } catch (e) {} return n_ } function Ol(t, e) { for (var n in e.prototype) t[n] = V } function Ll(t) { if (b(t)) { var e = new DOMParser; t = e.parseFromString(t, "text/xml") } for (9 === t.nodeType && (t = t.firstChild); "svg" !== t.nodeName.toLowerCase() || 1 !== t.nodeType;) t = t.nextSibling; return t } function zl() { this._defs = {}, this._root = null, this._isDefine = !1, this._isText = !1 } function El(t, e) { for (var n = t.firstChild; n;) { if (1 === n.nodeType) { var i = n.getAttribute("offset"); i = i.indexOf("%") > 0 ? parseInt(i, 10) / 100 : i ? parseFloat(i) : 0; var r = n.getAttribute("stop-color") || "#000000"; e.addColorStop(i, r) } n = n.nextSibling } } function Bl(t, e) { t && t.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}), s(e.__inheritedStyle, t .__inheritedStyle)) } function Rl(t) { for (var e = z(t).split(d_), n = [], i = 0; i < e.length; i += 2) { var r = parseFloat(e[i]), o = parseFloat(e[i + 1]); n.push([r, o]) } return n } function Nl(t, e, n, i) { var r = e.__inheritedStyle || {}, o = "text" === e.type; if (1 === t.nodeType && (Vl(t, e), a(r, Wl(t)), !i)) for (var s in g_) if (g_.hasOwnProperty(s)) { var l = t.getAttribute(s); null != l && (r[g_[s]] = l) } var u = o ? "textFill" : "fill", h = o ? "textStroke" : "stroke"; e.style = e.style || new Eg; var c = e.style; null != r.fill && c.set(u, Fl(r.fill, n)), null != r.stroke && c.set(h, Fl(r.stroke, n)), f(["lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize" ], function(t) { var e = "lineWidth" === t && o ? "textStrokeWidth" : t; null != r[t] && c.set(e, parseFloat(r[t])) }), r.textBaseline && "auto" !== r.textBaseline || (r.textBaseline = "alphabetic"), "alphabetic" === r .textBaseline && (r.textBaseline = "bottom"), "start" === r.textAlign && (r.textAlign = "left"), "end" === r.textAlign && (r.textAlign = "right"), f(["lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign", "textBaseline" ], function(t) { null != r[t] && c.set(t, r[t]) }), r.lineDash && (e.style.lineDash = z(r.lineDash).split(d_)), c[h] && "none" !== c[h] && (e[h] = !0), e.__inheritedStyle = r } function Fl(t, e) { var n = e && t && t.match(v_); if (n) { var i = z(n[1]), r = e[i]; return r } return t } function Vl(t, e) { var n = t.getAttribute("transform"); if (n) { n = n.replace(/,/g, " "); var i = null, r = []; n.replace(m_, function(t, e, n) { r.push(e, n) }); for (var o = r.length - 1; o > 0; o -= 2) { var a = r[o], s = r[o - 1]; switch (i = i || Le(), s) { case "translate": a = z(a).split(d_), Re(i, i, [parseFloat(a[0]), parseFloat(a[1] || 0)]); break; case "scale": a = z(a).split(d_), Fe(i, i, [parseFloat(a[0]), parseFloat(a[1] || a[0])]); break; case "rotate": a = z(a).split(d_), Ne(i, i, parseFloat(a[0])); break; case "skew": a = z(a).split(d_), console.warn("Skew transform is not supported yet"); break; case "matrix": var a = z(a).split(d_); i[0] = parseFloat(a[0]), i[1] = parseFloat(a[1]), i[2] = parseFloat(a[2]), i[3] = parseFloat(a[3]), i[4] = parseFloat(a[4]), i[5] = parseFloat(a[5]) } } e.setLocalTransform(i) } } function Wl(t) { var e = t.getAttribute("style"), n = {}; if (!e) return n; var i = {}; y_.lastIndex = 0; for (var r; null != (r = y_.exec(e));) i[r[1]] = r[2]; for (var o in g_) g_.hasOwnProperty(o) && null != i[o] && (n[g_[o]] = i[o]); return n } function Hl(t, e, n) { var i = e / t.width, r = n / t.height, o = Math.min(i, r), a = [o, o], s = [-(t.x + t.width / 2) * o + e / 2, -(t.y + t.height / 2) * o + n / 2]; return { scale: a, position: s } } function Gl(t, e) { return function(n, i, r) { return !e && this._disposed ? void au(this.id) : (n = n && n.toLowerCase(), void zp.prototype[t] .call(this, n, i, r)) } } function Zl() { zp.call(this) } function Xl(t, e, n) { function r(t, e) { return t.__prio - e.__prio } n = n || {}, "string" == typeof e && (e = tw[e]), this.id, this.group, this._dom = t; var o = "canvas"; lp && (o = ("undefined" == typeof window ? global : window).__ECHARTS__DEFAULT__RENDERER__ || o); var a = this._zr = qi(t, { renderer: n.renderer || o, devicePixelRatio: n.devicePixelRatio, width: n.width, height: n.height }); this._throttledZrFlush = gl(y(a.flush, a), 17); var e = i(e); e && Cx(e, !0), this._theme = e, this._chartsViews = [], this._chartsMap = {}, this._componentsViews = [], this._componentsMap = {}, this._coordSysMgr = new Is; var s = this._api = hu(this); En(J_, r), En(K_, r), this._scheduler = new yl(this, s, K_, J_), zp.call(this, this._ecEventProcessor = new cu), this._messageCenter = new Zl, this._initEvents(), this.resize = y(this.resize, this), this ._pendingActions = [], a.animation.on("frame", this._onframe, this), Jl(a, this), E(this) } function Yl(t, e, n) { if (this._disposed) return void au(this.id); var i, r = this._model, o = this._coordSysMgr.getCoordinateSystems(); e = hr(r, e); for (var a = 0; a < o.length; a++) { var s = o[a]; if (s[t] && null != (i = s[t](r, e, n))) return i } lp && console.warn("No coordinate system that supports " + t + " found by the given finder.") } function Ul(t) { var e = t._model, n = t._scheduler; n.restorePipelines(e), n.prepareStageTasks(), tu(t, "component", e, n), tu(t, "chart", e, n), n.plan() } function jl(t, e, n, i, r) { function o(i) { i && i.__alive && i[e] && i[e](i.__model, a, t._api, n) } var a = t._model; if (!i) return void S_(t._componentsViews.concat(t._chartsViews), o); var s = {}; s[i + "Id"] = n[i + "Id"], s[i + "Index"] = n[i + "Index"], s[i + "Name"] = n[i + "Name"]; var l = { mainType: i, query: s }; r && (l.subType = r); var u = n.excludeSeriesId; null != u && (u = N(tr(u))), a && a.eachComponent(l, function(e) { u && null != u.get(e.id) || o(t["series" === i ? "_chartsMap" : "_componentsMap"][e.__viewId]) }, t) } function ql(t, e) { var n = t._chartsMap, i = t._scheduler; e.eachSeries(function(t) { i.updateStreamModes(t, n[t.__viewId]) }) } function Kl(t, e) { var n = t.type, i = t.escapeConnect, r = j_[n], o = r.actionInfo, l = (o.update || "update").split(":"), u = l.pop(); l = null != l[0] && C_(l[0]), this[H_] = !0; var h = [t], c = !1; t.batch && (c = !0, h = p(t.batch, function(e) { return e = s(a({}, e), t), e.batch = null, e })); var d, f = [], g = "highlight" === n || "downplay" === n; S_(h, function(t) { d = r.action(t, this._model, this._api), d = d || a({}, t), d.type = o.event || d.type, f.push( d), g ? jl(this, u, t, "series") : l && jl(this, u, t, l.main, l.sub) }, this), "none" === u || g || l || (this[G_] ? (Ul(this), Y_.update.call(this, t), this[G_] = !1) : Y_[ u].call(this, t)), d = c ? { type: o.event || n, escapeConnect: i, batch: f } : f[0], this[H_] = !1, !e && this._messageCenter.trigger(d.type, d) } function $l(t) { for (var e = this._pendingActions; e.length;) { var n = e.shift(); Kl.call(this, n, t) } } function Ql(t) { !t && this.trigger("updated") } function Jl(t, e) { t.on("rendered", function() { e.trigger("rendered"), !t.animation.isFinished() || e[G_] || e._scheduler.unfinished || e ._pendingActions.length || e.trigger("finished") }) } function tu(t, e, n, i) { function r(t) { var e = "_ec_" + t.id + "_" + t.type, r = s[e]; if (!r) { var h = C_(t.type), c = o ? Nx.getClass(h.main, h.sub) : hl.getClass(h.sub); lp && b_(c, h.sub + " does not exist."), r = new c, r.init(n, u), s[e] = r, a.push(r), l.add(r .group) } t.__viewId = r.__id = e, r.__alive = !0, r.__model = t, r.group.__ecComponentInfo = { mainType: t.mainType, index: t.componentIndex }, !o && i.prepareView(r, t, n, u) } for (var o = "component" === e, a = o ? t._componentsViews : t._chartsViews, s = o ? t._componentsMap : t ._chartsMap, l = t._zr, u = t._api, h = 0; h < a.length; h++) a[h].__alive = !1; o ? n.eachComponent(function(t, e) { "series" !== t && r(e) }) : n.eachSeries(r); for (var h = 0; h < a.length;) { var c = a[h]; c.__alive ? h++ : (!o && c.renderTask.dispose(), l.remove(c.group), c.dispose(n, u), a.splice(h, 1), delete s[c.__id], c.__id = c.group.__ecComponentInfo = null) } } function eu(t) { t.clearColorPalette(), t.eachSeries(function(t) { t.clearColorPalette() }) } function nu(t, e, n, i) { iu(t, e, n, i), S_(t._chartsViews, function(t) { t.__alive = !1 }), ru(t, e, n, i), S_(t._chartsViews, function(t) { t.__alive || t.remove(e, n) }) } function iu(t, e, n, i, r) { S_(r || t._componentsViews, function(t) { var r = t.__model; t.render(r, e, n, i), uu(r, t) }) } function ru(t, e, n, i, r) { var o, a = t._scheduler; e.eachSeries(function(e) { var n = t._chartsMap[e.__viewId]; n.__alive = !0; var s = n.renderTask; a.updatePayload(s, i), r && r.get(e.uid) && s.dirty(), o |= s.perform(a.getPerformArgs(s)), n .group.silent = !!e.get("silent"), uu(e, n), lu(e, n) }), a.unfinished |= o, su(t, e), Kx(t._zr.dom, e) } function ou(t, e) { S_(Q_, function(n) { n(t, e) }) } function au(t) { lp && console.warn("Instance " + t + " has been disposed") } function su(t, e) { var n = t._zr, i = n.storage, r = 0; i.traverse(function() { r++ }), r > e.get("hoverLayerThreshold") && !dp.node && e.eachSeries(function(e) { if (!e.preventUsingHoverLayer) { var n = t._chartsMap[e.__viewId]; n.__alive && n.group.traverse(function(t) { t.useHoverLayer = !0 }) } }) } function lu(t, e) { var n = t.get("blendMode") || null; lp && !dp.canvasSupported && n && "source-over" !== n && console.warn("Only canvas support blendMode"), e .group.traverse(function(t) { t.isGroup || t.style.blend !== n && t.setStyle("blend", n), t.eachPendingDisplayable && t .eachPendingDisplayable(function(t) { t.setStyle("blend", n) }) }) } function uu(t, e) { var n = t.get("z"), i = t.get("zlevel"); e.group.traverse(function(t) { "group" !== t.type && (null != n && (t.z = n), null != i && (t.zlevel = i)) }) } function hu(t) { var e = t._coordSysMgr; return a(new Ms(t), { getCoordinateSystems: y(e.getCoordinateSystems, e), getComponentByElement: function(e) { for (; e;) { var n = e.__ecComponentInfo; if (null != n) return t._model.getComponent(n.mainType, n.index); e = e.parent } } }) } function cu() { this.eventInfo } function du(t) { function e(t, e) { for (var n = 0; n < t.length; n++) { var i = t[n]; i[o] = e } } var n = 0, i = 1, r = 2, o = "__connectUpdateStatus"; S_(q_, function(a, s) { t._messageCenter.on(s, function(a) { if (iw[t.group] && t[o] !== n) { if (a && a.escapeConnect) return; var s = t.makeActionFromEvent(a), l = []; S_(nw, function(e) { e !== t && e.group === t.group && l.push(e) }), e(l, n), S_(l, function(t) { t[o] !== i && t.dispatchAction(s) }), e(l, r) } }) }) } function fu(t, e, n) { if (lp) { if (bv.replace(".", "") - 0 < A_.zrender.replace(".", "") - 0) throw new Error("zrender/src " + bv + " is too old for ECharts " + T_ + ". Current version need ZRender " + A_.zrender + "+"); if (!t) throw new Error("Initialize failed: invalid dom.") } var i = mu(t); if (i) return lp && console.warn("There is a chart instance already initialized on the dom."), i; lp && (!C(t) || "CANVAS" === t.nodeName.toUpperCase() || (t.clientWidth || n && null != n.width) && (t .clientHeight || n && null != n.height) || console.warn( "Can't get DOM width or height. Please check dom.clientWidth and dom.clientHeight. They should not be 0.For example, you may need to call this in the callback of window.onload." )); var r = new Xl(t, e, n); return r.id = "ec_" + rw++, nw[r.id] = r, dr(t, aw, r.id), du(r), r } function pu(t) { if (_(t)) { var e = t; t = null, S_(e, function(e) { null != e.group && (t = e.group) }), t = t || "g_" + ow++, S_(e, function(e) { e.group = t }) } return iw[t] = !0, t } function gu(t) { iw[t] = !1 } function vu(t) { "string" == typeof t ? t = nw[t] : t instanceof Xl || (t = mu(t)), t instanceof Xl && !t.isDisposed() && t .dispose() } function mu(t) { return nw[fr(t, aw)] } function yu(t) { return nw[t] } function xu(t, e) { tw[t] = e } function _u(t) { $_.push(t) } function wu(t, e) { Au(K_, t, e, k_) } function bu(t) { Q_.push(t) } function Su(t, e, n) { "function" == typeof e && (n = e, e = ""); var i = I_(t) ? t.type : [t, t = { event: e }][0]; t.event = (t.event || i).toLowerCase(), e = t.event, b_(Z_.test(i) && Z_.test(e)), j_[i] || (j_[i] = { action: n, actionInfo: t }), q_[e] = i } function Mu(t, e) { Is.register(t, e) } function Iu(t) { var e = Is.get(t); return e ? e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice() : void 0 } function Cu(t, e) { Au(J_, t, e, z_, "layout") } function Tu(t, e) { Au(J_, t, e, R_, "visual") } function Au(t, e, n, i, r) { if ((M_(e) || I_(e)) && (n = e, e = i), lp) { if (isNaN(e) || null == e) throw new Error("Illegal priority"); S_(t, function(t) { b_(t.__raw !== n) }) } var o = yl.wrapStageHandler(n, r); return o.__prio = e, o.__raw = n, t.push(o), o } function Du(t, e) { ew[t] = e } function ku(t) { return qy.extend(t) } function Pu(t) { return Nx.extend(t) } function Ou(t) { return Rx.extend(t) } function Lu(t) { return hl.extend(t) } function zu(t) { n("createCanvas", t) } function Eu(t, e, n) { __.registerMap(t, e, n) } function Bu(t) { var e = __.retrieveMap(t); return e && e[0] && { geoJson: e[0].geoJSON, specialAreas: e[0].specialAreas } } function Ru(t) { return t } function Nu(t, e, n, i, r) { this._old = t, this._new = e, this._oldKeyGetter = n || Ru, this._newKeyGetter = i || Ru, this.context = r } function Fu(t, e, n, i, r) { for (var o = 0; o < t.length; o++) { var a = "_ec_" + r[i](t[o], o), s = e[a]; null == s ? (n.push(a), e[a] = o) : (s.length || (e[a] = s = [s]), s.push(o)) } } function Vu(t) { var e = {}, n = e.encode = {}, i = N(), r = [], o = [], a = e.userOutput = { dimensionNames: t.dimensions.slice(), encode: {} }; f(t.dimensions, function(e) { var s = t.getDimensionInfo(e), l = s.coordDim; if (l) { lp && L(null == uw.get(l)); var u = s.coordDimIndex; Wu(n, l)[u] = e, s.isExtraCoord || (i.set(l, 1), Gu(s.type) && (r[0] = e), Wu(a.encode, l)[ u] = s.index), s.defaultTooltip && o.push(e) } uw.each(function(t, e) { var i = Wu(n, e), r = s.otherDims[e]; null != r && r !== !1 && (i[r] = s.name) }) }); var s = [], l = {}; i.each(function(t, e) { var i = n[e]; l[e] = i[0], s = s.concat(i) }), e.dataDimsOnCoord = s, e.encodeFirstDimNotExtra = l; var u = n.label; u && u.length && (r = u.slice()); var h = n.tooltip; return h && h.length ? o = h.slice() : o.length || (o = r.slice()), n.defaultedLabel = r, n .defaultedTooltip = o, e } function Wu(t, e) { return t.hasOwnProperty(e) || (t[e] = []), t[e] } function Hu(t) { return "category" === t ? "ordinal" : "time" === t ? "time" : "float" } function Gu(t) { return !("ordinal" === t || "time" === t) } function Zu(t) { null != t && a(this, t), this.otherDims = {} } function Xu(t) { return t._rawCount > 65535 ? gw : mw } function Yu(t) { var e = t.constructor; return e === Array ? t.slice() : new e(t) } function Uu(t, e) { f(yw.concat(e.__wrappedMethods || []), function(n) { e.hasOwnProperty(n) && (t[n] = e[n]) }), t.__wrappedMethods = e.__wrappedMethods, f(xw, function(n) { t[n] = i(e[n]) }), t._calculationInfo = a(e._calculationInfo) } function ju(t, e, n, i, r) { var o = pw[e.type], a = i - 1, s = e.name, l = t[s][a]; if (l && l.length < n) { for (var u = new o(Math.min(r - a * n, n)), h = 0; h < l.length; h++) u[h] = l[h]; t[s][a] = u } for (var c = i * n; r > c; c += n) t[s].push(new o(Math.min(r - c, n))) } function qu(t) { var e = t._invertedIndicesMap; f(e, function(n, i) { var r = t._dimensionInfos[i], o = r.ordinalMeta; if (o) { n = e[i] = new vw(o.categories.length); for (var a = 0; a < n.length; a++) n[a] = dw; for (var a = 0; a < t._count; a++) n[t.get(i, a)] = a } }) } function Ku(t, e, n) { var i; if (null != e) { var r = t._chunkSize, o = Math.floor(n / r), a = n % r, s = t.dimensions[e], l = t._storage[s][o]; if (l) { i = l[a]; var u = t._dimensionInfos[s].ordinalMeta; u && u.categories.length && (i = u.categories[i]) } } return i } function $u(t) { return t } function Qu(t) { return t < this._count && t >= 0 ? this._indices[t] : -1 } function Ju(t, e) { var n = t._idList[e]; return null == n && (n = Ku(t, t._idDimIdx, e)), null == n && (n = fw + e), n } function th(t) { return _(t) || (t = [t]), t } function eh(t, e) { for (var n = 0; n < e.length; n++) t._dimensionInfos[e[n]] || console.error("Unkown dimension " + e[n]) } function nh(t, e) { var n = t.dimensions, i = new _w(p(n, t.getDimensionInfo, t), t.hostModel); Uu(i, t); for (var r = i._storage = {}, o = t._storage, a = 0; a < n.length; a++) { var s = n[a]; o[s] && (u(e, s) >= 0 ? (r[s] = ih(o[s]), i._rawExtent[s] = rh(), i._extent[s] = null) : r[s] = o[s]) } return i } function ih(t) { for (var e = new Array(t.length), n = 0; n < t.length; n++) e[n] = Yu(t[n]); return e } function rh() { return [1 / 0, -1 / 0] } function oh(t, e, n) { function r(t, e, n) { null != uw.get(e) ? t.otherDims[e] = n : (t.coordDim = e, t.coordDimIndex = n, u.set(e, !0)) } is.isInstance(e) || (e = is.seriesDataToSource(e)), n = n || {}, t = (t || []).slice(); for (var o = (n.dimsDef || []).slice(), l = N(), u = N(), h = [], c = ah(e, t, o, n.dimCount), d = 0; c > d; d++) { var p = o[d] = a({}, S(o[d]) ? o[d] : { name: o[d] }), g = p.name, v = h[d] = new Zu; null != g && null == l.get(g) && (v.name = v.displayName = g, l.set(g, d)), null != p.type && (v.type = p.type), null != p.displayName && (v.displayName = p.displayName) } var m = n.encodeDef; !m && n.encodeDefaulter && (m = n.encodeDefaulter(e, c)), m = N(m), m.each(function(t, e) { if (t = tr(t).slice(), 1 === t.length && !b(t[0]) && t[0] < 0) return void m.set(e, !1); var n = m.set(e, []); f(t, function(t, i) { b(t) && (t = l.get(t)), null != t && c > t && (n[i] = t, r(h[t], e, i)) }) }); var y = 0; f(t, function(t) { var e, t, n, o; if (b(t)) e = t, t = {}; else { e = t.name; var a = t.ordinalMeta; t.ordinalMeta = null, t = i(t), t.ordinalMeta = a, n = t.dimsDef, o = t.otherDims, t.name = t.coordDim = t.coordDimIndex = t.dimsDef = t.otherDims = null } var l = m.get(e); if (l !== !1) { var l = tr(l); if (!l.length) for (var u = 0; u < (n && n.length || 1); u++) { for (; y < h.length && null != h[y].coordDim;) y++; y < h.length && l.push(y++) } f(l, function(i, a) { var l = h[i]; if (r(s(l, t), e, a), null == l.name && n) { var u = n[a]; !S(u) && (u = { name: u }), l.name = l.displayName = u.name, l.defaultTooltip = u.defaultTooltip } o && s(l.otherDims, o) }) } }); var x = n.generateCoord, _ = n.generateCoordCount, w = null != _; _ = x ? _ || 1 : 0; for (var M = x || "value", I = 0; c > I; I++) { var v = h[I] = h[I] || new Zu, C = v.coordDim; null == C && (v.coordDim = sh(M, u, w), v.coordDimIndex = 0, (!x || 0 >= _) && (v.isExtraCoord = !0), _--), null == v.name && (v.name = sh(v.coordDim, l)), null != v.type || ps(e, I, v.name) !== lx .Must && (!v.isExtraCoord || null == v.otherDims.itemName && null == v.otherDims.seriesName) || (v .type = "ordinal") } return h } function ah(t, e, n, i) { var r = Math.max(t.dimensionsDetectCount || 1, e.length, n.length, i || 0); return f(e, function(t) { var e = t.dimsDef; e && (r = Math.max(r, e.length)) }), r } function sh(t, e, n) { if (n || null != e.get(t)) { for (var i = 0; null != e.get(t + i);) i++; t += i } return e.set(t, !0), t } function lh(t) { this.coordSysName = t, this.coordSysDims = [], this.axisMap = N(), this.categoryAxisMap = N(), this .firstCategoryDimIndex = null } function uh(t) { var e = t.get("coordinateSystem"), n = new lh(e), i = Mw[e]; return i ? (i(t, n, n.axisMap, n.categoryAxisMap), n) : void 0 } function hh(t) { return "category" === t.get("type") } function ch(t, e, n) { n = n || {}; var i, r, o, a, s = n.byIndex, l = n.stackedCoordDimension, u = !(!t || !t.get("stack")); if (f(e, function(t, n) { b(t) && (e[n] = t = { name: t }), u && !t.isExtraCoord && (s || i || !t.ordinalMeta || (i = t), r || "ordinal" === t .type || "time" === t.type || l && l !== t.coordDim || (r = t)) }), !r || s || i || (s = !0), r) { o = "__\x00ecstackresult", a = "__\x00ecstackedover", i && (i.createInvertedIndices = !0); var h = r.coordDim, c = r.type, d = 0; f(e, function(t) { t.coordDim === h && d++ }), e.push({ name: o, coordDim: h, coordDimIndex: d, type: c, isExtraCoord: !0, isCalculationCoord: !0 }), d++, e.push({ name: a, coordDim: a, coordDimIndex: d, type: c, isExtraCoord: !0, isCalculationCoord: !0 }) } return { stackedDimension: r && r.name, stackedByDimension: i && i.name, isStackedByIndex: s, stackedOverDimension: a, stackResultDimension: o } } function dh(t, e) { return !!e && e === t.getCalculationInfo("stackedDimension") } function fh(t, e) { return dh(t, e) ? t.getCalculationInfo("stackResultDimension") : e } function ph(t, e, n) { n = n || {}, is.isInstance(t) || (t = is.seriesDataToSource(t)); var i, r = e.get("coordinateSystem"), o = Is.get(r), a = uh(e); a && (i = p(a.coordSysDims, function(t) { var e = { name: t }, n = a.axisMap.get(t); if (n) { var i = n.get("type"); e.type = Hu(i) } return e })), i || (i = o && (o.getDimensionsInfo ? o.getDimensionsInfo() : o.dimensions.slice()) || ["x", "y"]); var s, l, u = Sw(t, { coordDimensions: i, generateCoord: n.generateCoord, encodeDefaulter: n.useEncodeDefaulter ? x(ds, i, e) : null }); a && f(u, function(t, e) { var n = t.coordDim, i = a.categoryAxisMap.get(n); i && (null == s && (s = e), t.ordinalMeta = i.getOrdinalMeta()), null != t.otherDims.itemName && (l = !0) }), l || null == s || (u[s].otherDims.itemName = 0); var h = ch(e, u), c = new _w(u, e); c.setCalculationInfo(h); var d = null != s && gh(t) ? function(t, e, n, i) { return i === s ? n : this.defaultDimValueGetter(t, e, n, i) } : null; return c.hasItemOption = !1, c.initData(t, null, d), c } function gh(t) { if (t.sourceFormat === tx) { var e = vh(t.data || []); return null != e && !_(nr(e)) } } function vh(t) { for (var e = 0; e < t.length && null == t[e];) e++; return t[e] } function mh(t) { this._setting = t || {}, this._extent = [1 / 0, -1 / 0], this._interval = 0, this.init && this.init.apply( this, arguments) } function yh(t) { this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t .deduplication, this._map } function xh(t) { return t._map || (t._map = N(t.categories)) } function _h(t) { return S(t) && null != t.value ? t.value : t + "" } function wh(t, e, n, i) { var r = {}, o = t[1] - t[0], a = r.interval = za(o / e, !0); null != n && n > a && (a = r.interval = n), null != i && a > i && (a = r.interval = i); var s = r.intervalPrecision = bh(a), l = r.niceTickExtent = [Aw(Math.ceil(t[0] / a) * a, s), Aw(Math.floor(t[1] / a) * a, s)]; return Mh(l, t), r } function bh(t) { return Ca(t) + 2 } function Sh(t, e, n) { t[e] = Math.max(Math.min(t[e], n[1]), n[0]) } function Mh(t, e) { !isFinite(t[0]) && (t[0] = e[0]), !isFinite(t[1]) && (t[1] = e[1]), Sh(t, 0, e), Sh(t, 1, e), t[0] > t[1] && (t[0] = t[1]) } function Ih(t) { return t.get("stack") || Pw + t.seriesIndex } function Ch(t) { return t.dim + t.index } function Th(t, e) { var n = []; return e.eachSeriesByType(t, function(t) { Oh(t) && !Lh(t) && n.push(t) }), n } function Ah(t) { var e = {}; f(t, function(t) { var n = t.coordinateSystem, i = n.getBaseAxis(); if ("time" === i.type || "value" === i.type) for (var r = t.getData(), o = i.dim + "_" + i.index, a = r.mapDimension(i.dim), s = 0, l = r .count(); l > s; ++s) { var u = r.get(a, s); e[o] ? e[o].push(u) : e[o] = [u] } }); var n = []; for (var i in e) if (e.hasOwnProperty(i)) { var r = e[i]; if (r) { r.sort(function(t, e) { return t - e }); for (var o = null, a = 1; a < r.length; ++a) { var s = r[a] - r[a - 1]; s > 0 && (o = null === o ? s : Math.min(o, s)) } n[i] = o } } return n } function Dh(t) { var e = Ah(t), n = []; return f(t, function(t) { var i, r = t.coordinateSystem, o = r.getBaseAxis(), a = o.getExtent(); if ("category" === o.type) i = o.getBandWidth(); else if ("value" === o.type || "time" === o.type) { var s = o.dim + "_" + o.index, l = e[s], u = Math.abs(a[1] - a[0]), h = o.scale.getExtent(), c = Math.abs(h[1] - h[0]); i = l ? u / c * l : u } else { var d = t.getData(); i = Math.abs(a[1] - a[0]) / d.count() } var f = ba(t.get("barWidth"), i), p = ba(t.get("barMaxWidth"), i), g = ba(t.get("barMinWidth") || 1, i), v = t.get("barGap"), m = t.get("barCategoryGap"); n.push({ bandWidth: i, barWidth: f, barMaxWidth: p, barMinWidth: g, barGap: v, barCategoryGap: m, axisKey: Ch(o), stackId: Ih(t) }) }), kh(n) } function kh(t) { var e = {}; f(t, function(t) { var n = t.axisKey, i = t.bandWidth, r = e[n] || { bandWidth: i, remainedWidth: i, autoWidthCount: 0, categoryGap: "20%", gap: "30%", stacks: {} }, o = r.stacks; e[n] = r; var a = t.stackId; o[a] || r.autoWidthCount++, o[a] = o[a] || { width: 0, maxWidth: 0 }; var s = t.barWidth; s && !o[a].width && (o[a].width = s, s = Math.min(r.remainedWidth, s), r.remainedWidth -= s); var l = t.barMaxWidth; l && (o[a].maxWidth = l); var u = t.barMinWidth; u && (o[a].minWidth = u); var h = t.barGap; null != h && (r.gap = h); var c = t.barCategoryGap; null != c && (r.categoryGap = c) }); var n = {}; return f(e, function(t, e) { n[e] = {}; var i = t.stacks, r = t.bandWidth, o = ba(t.categoryGap, r), a = ba(t.gap, 1), s = t.remainedWidth, l = t.autoWidthCount, u = (s - o) / (l + (l - 1) * a); u = Math.max(u, 0), f(i, function(t) { var e = t.maxWidth, n = t.minWidth; if (t.width) { var i = t.width; e && (i = Math.min(i, e)), n && (i = Math.max(i, n)), t.width = i, s -= i + a * i, l-- } else { var i = u; e && i > e && (i = Math.min(e, s)), n && n > i && (i = n), i !== u && (t.width = i, s -= i + a * i, l--) } }), u = (s - o) / (l + (l - 1) * a), u = Math.max(u, 0); var h, c = 0; f(i, function(t) { t.width || (t.width = u), h = t, c += t.width * (1 + a) }), h && (c -= h.width * a); var d = -c / 2; f(i, function(t, i) { n[e][i] = n[e][i] || { bandWidth: r, offset: d, width: t.width }, d += t.width * (1 + a) }) }), n } function Ph(t, e, n) { if (t && e) { var i = t[Ch(e)]; return null != i && null != n && (i = i[Ih(n)]), i } } function Oh(t) { return t.coordinateSystem && "cartesian2d" === t.coordinateSystem.type } function Lh(t) { return t.pipelineContext && t.pipelineContext.large } function zh(t, e) { return e.toGlobalCoord(e.dataToCoord("log" === e.type ? 1 : 0)) } function Eh(t, e) { return Uw(t, Yw(e)) } function Bh(t, e) { var n, i, r, o = t.type, a = e.getMin(), s = e.getMax(), l = t.getExtent(); "ordinal" === o ? n = e.getCategories().length : (i = e.get("boundaryGap"), _(i) || (i = [i || 0, i || 0]), "boolean" == typeof i[0] && (lp && console.warn( 'Boolean type for boundaryGap is only allowed for ordinal axis. Please use string in percentage instead, e.g., "20%". Currently, boundaryGap is set to be 0.' ), i = [0, 0]), i[0] = ba(i[0], 1), i[1] = ba(i[1], 1), r = l[1] - l[0] || Math.abs(l[0])), "dataMin" === a ? a = l[0] : "function" == typeof a && (a = a({ min: l[0], max: l[1] })), "dataMax" === s ? s = l[1] : "function" == typeof s && (s = s({ min: l[0], max: l[1] })); var u = null != a, h = null != s; null == a && (a = "ordinal" === o ? n ? 0 : 0 / 0 : l[0] - i[0] * r), null == s && (s = "ordinal" === o ? n ? n - 1 : 0 / 0 : l[1] + i[1] * r), (null == a || !isFinite(a)) && (a = 0 / 0), (null == s || ! isFinite(s)) && (s = 0 / 0), t.setBlank(T(a) || T(s) || "ordinal" === o && !t.getOrdinalMeta() .categories.length), e.getNeedCrossZero() && (a > 0 && s > 0 && !u && (a = 0), 0 > a && 0 > s && ! h && (s = 0)); var c = e.ecModel; if (c && "time" === o) { var d, p = Th("bar", c); if (f(p, function(t) { d |= t.getBaseAxis() === e.axis }), d) { var g = Dh(p), v = Rh(a, s, e, g); a = v.min, s = v.max } } return { extent: [a, s], fixMin: u, fixMax: h } } function Rh(t, e, n, i) { var r = n.axis.getExtent(), o = r[1] - r[0], a = Ph(i, n.axis); if (void 0 === a) return { min: t, max: e }; var s = 1 / 0; f(a, function(t) { s = Math.min(t.offset, s) }); var l = -1 / 0; f(a, function(t) { l = Math.max(t.offset + t.width, l) }), s = Math.abs(s), l = Math.abs(l); var u = s + l, h = e - t, c = 1 - (s + l) / o, d = h / c - h; return e += d * (l / u), t -= d * (s / u), { min: t, max: e } } function Nh(t, e) { var n = Bh(t, e), i = n.extent, r = e.get("splitNumber"); "log" === t.type && (t.base = e.get("logBase")); var o = t.type; t.setExtent(i[0], i[1]), t.niceExtent({ splitNumber: r, fixMin: n.fixMin, fixMax: n.fixMax, minInterval: "interval" === o || "time" === o ? e.get("minInterval") : null, maxInterval: "interval" === o || "time" === o ? e.get("maxInterval") : null }); var a = e.get("interval"); null != a && t.setInterval && t.setInterval(a) } function Fh(t, e) { if (e = e || t.get("type")) switch (e) { case "category": return new Tw(t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(), [1 / 0, -1 / 0]); case "value": return new kw; default: return (mh.getClass(e) || kw).create(t) } } function Vh(t) { var e = t.scale.getExtent(), n = e[0], i = e[1]; return !(n > 0 && i > 0 || 0 > n && 0 > i) } function Wh(t) { var e = t.getLabelModel().get("formatter"), n = "category" === t.type ? t.scale.getExtent()[0] : null; return "string" == typeof e ? e = function(e) { return function(n) { return n = t.scale.getLabel(n), e.replace("{value}", null != n ? n : "") } }(e) : "function" == typeof e ? function(i, r) { return null != n && (r = i - n), e(Hh(t, i), r) } : function(e) { return t.scale.getLabel(e) } } function Hh(t, e) { return "category" === t.type ? t.scale.getLabel(e) : e } function Gh(t) { var e = t.model, n = t.scale; if (e.get("axisLabel.show") && !n.isBlank()) { var i, r, o = "category" === t.type, a = n.getExtent(); o ? r = n.count() : (i = n.getTicks(), r = i.length); var s, l = t.getLabelModel(), u = Wh(t), h = 1; r > 40 && (h = Math.ceil(r / 40)); for (var c = 0; r > c; c += h) { var d = i ? i[c] : a[0] + c, f = u(d), p = l.getTextRect(f), g = Zh(p, l.get("rotate") || 0); s ? s.union(g) : s = g } return s } } function Zh(t, e) { var n = e * Math.PI / 180, i = t.plain(), r = i.width, o = i.height, a = r * Math.cos(n) + o * Math.sin(n), s = r * Math.sin(n) + o * Math.cos(n), l = new Tn(i.x, i.y, a, s); return l } function Xh(t) { var e = t.get("interval"); return null == e ? "auto" : e } function Yh(t) { return "category" === t.type && 0 === Xh(t.getLabelModel()) } function Uh(t, e) { if ("image" !== this.type) { var n = this.style, i = this.shape; i && "line" === i.symbolType ? n.stroke = t : this.__isEmptyBrush ? (n.stroke = t, n.fill = e || "#fff") : (n.fill && (n.fill = t), n.stroke && (n.stroke = t)), this.dirty(!1) } } function jh(t, e, n, i, r, o, a) { var s = 0 === t.indexOf("empty"); s && (t = t.substr(5, 1).toLowerCase() + t.substr(6)); var l; return l = 0 === t.indexOf("image://") ? wo(t.slice(8), new Tn(e, n, i, r), a ? "center" : "cover") : 0 === t.indexOf("path://") ? _o(t.slice(7), {}, new Tn(e, n, i, r), a ? "center" : "cover") : new sb({ shape: { symbolType: t, x: e, y: n, width: i, height: r } }), l.__isEmptyBrush = s, l.setColor = Uh, l.setColor(o), l } function qh(t) { return ph(t.getSource(), t) } function Kh(t, e) { var n = e; pa.isInstance(e) || (n = new pa(e), c(n, Jw)); var i = Fh(n); return i.setExtent(t[0], t[1]), Nh(i, n), i } function $h(t) { c(t, Jw) } function Qh(t, e) { return Math.abs(t - e) < hb } function Jh(t, e, n) { var i = 0, r = t[0]; if (!r) return !1; for (var o = 1; o < t.length; o++) { var a = t[o]; i += Yr(r[0], r[1], a[0], a[1], e, n), r = a } var s = t[0]; return Qh(r[0], s[0]) && Qh(r[1], s[1]) || (i += Yr(r[0], r[1], s[0], s[1], e, n)), 0 !== i } function tc(t, e, n) { if (this.name = t, this.geometries = e, n) n = [n[0], n[1]]; else { var i = this.getBoundingRect(); n = [i.x + i.width / 2, i.y + i.height / 2] } this.center = n } function ec(t) { if (!t.UTF8Encoding) return t; var e = t.UTF8Scale; null == e && (e = 1024); for (var n = t.features, i = 0; i < n.length; i++) for (var r = n[i], o = r.geometry, a = o.coordinates, s = o.encodeOffsets, l = 0; l < a.length; l++) { var u = a[l]; if ("Polygon" === o.type) a[l] = nc(u, s[l], e); else if ("MultiPolygon" === o.type) for (var h = 0; h < u.length; h++) { var c = u[h]; u[h] = nc(c, s[l][h], e) } } return t.UTF8Encoding = !1, t } function nc(t, e, n) { for (var i = [], r = e[0], o = e[1], a = 0; a < t.length; a += 2) { var s = t.charCodeAt(a) - 64, l = t.charCodeAt(a + 1) - 64; s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), s += r, l += o, r = s, o = l, i.push([s / n, l / n]) } return i } function ic(t) { return "category" === t.type ? oc(t) : lc(t) } function rc(t, e) { return "category" === t.type ? sc(t, e) : { ticks: t.scale.getTicks() } } function oc(t) { var e = t.getLabelModel(), n = ac(t, e); return !e.get("show") || t.scale.isBlank() ? { labels: [], labelCategoryInterval: n.labelCategoryInterval } : n } function ac(t, e) { var n = uc(t, "labels"), i = Xh(e), r = hc(n, i); if (r) return r; var o, a; return w(i) ? o = vc(t, i) : (a = "auto" === i ? dc(t) : i, o = gc(t, a)), cc(n, i, { labels: o, labelCategoryInterval: a }) } function sc(t, e) { var n = uc(t, "ticks"), i = Xh(e), r = hc(n, i); if (r) return r; var o, a; if ((!e.get("show") || t.scale.isBlank()) && (o = []), w(i)) o = vc(t, i, !0); else if ("auto" === i) { var s = ac(t, t.getLabelModel()); a = s.labelCategoryInterval, o = p(s.labels, function(t) { return t.tickValue }) } else a = i, o = gc(t, a, !0); return cc(n, i, { ticks: o, tickCategoryInterval: a }) } function lc(t) { var e = t.scale.getTicks(), n = Wh(t); return { labels: p(e, function(e, i) { return { formattedLabel: n(e, i), rawLabel: t.scale.getLabel(e), tickValue: e } }) } } function uc(t, e) { return db(t)[e] || (db(t)[e] = []) } function hc(t, e) { for (var n = 0; n < t.length; n++) if (t[n].key === e) return t[n].value } function cc(t, e, n) { return t.push({ key: e, value: n }), n } function dc(t) { var e = db(t).autoInterval; return null != e ? e : db(t).autoInterval = t.calculateCategoryInterval() } function fc(t) { var e = pc(t), n = Wh(t), i = (e.axisRotate - e.labelRotate) / 180 * Math.PI, r = t.scale, o = r.getExtent(), a = r.count(); if (o[1] - o[0] < 1) return 0; var s = 1; a > 40 && (s = Math.max(1, Math.floor(a / 40))); for (var l = o[0], u = t.dataToCoord(l + 1) - t.dataToCoord(l), h = Math.abs(u * Math.cos(i)), c = Math.abs( u * Math.sin(i)), d = 0, f = 0; l <= o[1]; l += s) { var p = 0, g = 0, v = Yn(n(l), e.font, "center", "top"); p = 1.3 * v.width, g = 1.3 * v.height, d = Math.max(d, p, 7), f = Math.max(f, g, 7) } var m = d / h, y = f / c; isNaN(m) && (m = 1 / 0), isNaN(y) && (y = 1 / 0); var x = Math.max(0, Math.floor(Math.min(m, y))), _ = db(t.model), w = t.getExtent(), b = _.lastAutoInterval, S = _.lastTickCount; return null != b && null != S && Math.abs(b - x) <= 1 && Math.abs(S - a) <= 1 && b > x && _.axisExtend0 === w[0] && _.axisExtend1 === w[1] ? x = b : (_.lastTickCount = a, _.lastAutoInterval = x, _.axisExtend0 = w[0], _.axisExtend1 = w[1]), x } function pc(t) { var e = t.getLabelModel(); return { axisRotate: t.getRotate ? t.getRotate() : t.isHorizontal && !t.isHorizontal() ? 90 : 0, labelRotate: e.get("rotate") || 0, font: e.getFont() } } function gc(t, e, n) { function i(t) { l.push(n ? t : { formattedLabel: r(t), rawLabel: o.getLabel(t), tickValue: t }) } var r = Wh(t), o = t.scale, a = o.getExtent(), s = t.getLabelModel(), l = [], u = Math.max((e || 0) + 1, 1), h = a[0], c = o.count(); 0 !== h && u > 1 && c / u > 2 && (h = Math.round(Math.ceil(h / u) * u)); var d = Yh(t), f = s.get("showMinLabel") || d, p = s.get("showMaxLabel") || d; f && h !== a[0] && i(a[0]); for (var g = h; g <= a[1]; g += u) i(g); return p && g - u !== a[1] && i(a[1]), l } function vc(t, e, n) { var i = t.scale, r = Wh(t), o = []; return f(i.getTicks(), function(t) { var a = i.getLabel(t); e(t, a) && o.push(n ? t : { formattedLabel: r(t), rawLabel: a, tickValue: t }) }), o } function mc(t, e) { var n = t[1] - t[0], i = e, r = n / i / 2; t[0] += r, t[1] -= r } function yc(t, e, n, i) { function r(t, e) { return t = Sa(t), e = Sa(e), d ? t > e : e > t } var o = e.length; if (t.onBand && !n && o) { var a, s, l = t.getExtent(); if (1 === o) e[0].coord = l[0], a = e[1] = { coord: l[0] }; else { var u = e[o - 1].tickValue - e[0].tickValue, h = (e[o - 1].coord - e[0].coord) / u; f(e, function(t) { t.coord -= h / 2 }); var c = t.scale.getExtent(); s = 1 + c[1] - e[o - 1].tickValue, a = { coord: e[o - 1].coord + h * s }, e.push(a) } var d = l[0] > l[1]; r(e[0].coord, l[0]) && (i ? e[0].coord = l[0] : e.shift()), i && r(l[0], e[0].coord) && e.unshift({ coord: l[0] }), r(l[1], a.coord) && (i ? a.coord = l[1] : e.pop()), i && r(a.coord, l[1]) && e.push({ coord: l[1] }) } } function xc(t, e) { var n = t.mapDimension("defaultedLabel", !0), i = n.length; if (1 === i) return $s(t, e, n[0]); if (i) { for (var r = [], o = 0; o < n.length; o++) { var a = $s(t, e, n[o]); r.push(a) } return r.join(" ") } } function _c(t, e, n) { Cg.call(this), this.updateData(t, e, n) } function wc(t) { return [t[0] / 2, t[1] / 2] } function bc(t, e) { this.parent.drift(t, e) } function Sc(t, e) { if (!this.incremental && !this.useHoverLayer) if ("emphasis" === e) { var n = this.__symbolOriginalScale, i = n[1] / n[0], r = { scale: [Math.max(1.1 * n[0], n[0] + 3), Math.max(1.1 * n[1], n[1] + 3 * i)] }; this.animateTo(r, 400, "elasticOut") } else "normal" === e && this.animateTo({ scale: this.__symbolOriginalScale }, 400, "elasticOut") } function Mc(t) { this.group = new Cg, this._symbolCtor = t || _c } function Ic(t, e, n, i) { return !(!e || isNaN(e[0]) || isNaN(e[1]) || i.isIgnore && i.isIgnore(n) || i.clipShape && !i.clipShape .contain(e[0], e[1]) || "none" === t.getItemVisual(n, "symbol")) } function Cc(t) { return null == t || S(t) || (t = { isIgnore: t }), t || {} } function Tc(t) { var e = t.hostModel; return { itemStyle: e.getModel("itemStyle").getItemStyle(["color"]), hoverItemStyle: e.getModel("emphasis.itemStyle").getItemStyle(), symbolRotate: e.get("symbolRotate"), symbolOffset: e.get("symbolOffset"), hoverAnimation: e.get("hoverAnimation"), labelModel: e.getModel("label"), hoverLabelModel: e.getModel("emphasis.label"), cursorStyle: e.get("cursor") } } function Ac(t, e, n) { var i, r = t.getBaseAxis(), o = t.getOtherAxis(r), a = Dc(o, n), s = r.dim, l = o.dim, u = e.mapDimension(l), h = e.mapDimension(s), c = "x" === l || "radius" === l ? 1 : 0, d = p(t.dimensions, function(t) { return e.mapDimension(t) }), f = e.getCalculationInfo("stackResultDimension"); return (i |= dh(e, d[0])) && (d[0] = f), (i |= dh(e, d[1])) && (d[1] = f), { dataDimsForPoint: d, valueStart: a, valueAxisDim: l, baseAxisDim: s, stacked: !!i, valueDim: u, baseDim: h, baseDataOffset: c, stackedOverDimension: e.getCalculationInfo("stackedOverDimension") } } function Dc(t, e) { var n = 0, i = t.scale.getExtent(); return "start" === e ? n = i[0] : "end" === e ? n = i[1] : i[0] > 0 ? n = i[0] : i[1] < 0 && (n = i[1]), n } function kc(t, e, n, i) { var r = 0 / 0; t.stacked && (r = n.get(n.getCalculationInfo("stackedOverDimension"), i)), isNaN(r) && (r = t.valueStart); var o = t.baseDataOffset, a = []; return a[o] = n.get(t.baseDim, i), a[1 - o] = r, e.dataToPoint(a) } function Pc(t, e) { var n = []; return e.diff(t).add(function(t) { n.push({ cmd: "+", idx: t }) }).update(function(t, e) { n.push({ cmd: "=", idx: e, idx1: t }) }).remove(function(t) { n.push({ cmd: "-", idx: t }) }).execute(), n } function Oc(t) { return isNaN(t[0]) || isNaN(t[1]) } function Lc(t, e, n, i, r, o, a, s, l, u) { return "none" !== u && u ? zc.apply(this, arguments) : Ec.apply(this, arguments) } function zc(t, e, n, i, r, o, a, s, l, u, h) { for (var c = 0, d = n, f = 0; i > f; f++) { var p = e[d]; if (d >= r || 0 > d) break; if (Oc(p)) { if (h) { d += o; continue } break } if (d === n) t[o > 0 ? "moveTo" : "lineTo"](p[0], p[1]); else if (l > 0) { var g = e[c], v = "y" === u ? 1 : 0, m = (p[v] - g[v]) * l; Db(Pb, g), Pb[v] = g[v] + m, Db(Ob, p), Ob[v] = p[v] - m, t.bezierCurveTo(Pb[0], Pb[1], Ob[0], Ob[ 1], p[0], p[1]) } else t.lineTo(p[0], p[1]); c = d, d += o } return f } function Ec(t, e, n, i, r, o, a, s, l, u, h) { for (var c = 0, d = n, f = 0; i > f; f++) { var p = e[d]; if (d >= r || 0 > d) break; if (Oc(p)) { if (h) { d += o; continue } break } if (d === n) t[o > 0 ? "moveTo" : "lineTo"](p[0], p[1]), Db(Pb, p); else if (l > 0) { var g = d + o, v = e[g]; if (h) for (; v && Oc(e[g]);) g += o, v = e[g]; var m = .5, y = e[c], v = e[g]; if (!v || Oc(v)) Db(Ob, p); else { Oc(v) && !h && (v = p), U(kb, v, y); var x, _; if ("x" === u || "y" === u) { var w = "x" === u ? 0 : 1; x = Math.abs(p[w] - y[w]), _ = Math.abs(p[w] - v[w]) } else x = kp(p, y), _ = kp(p, v); m = _ / (_ + x), Ab(Ob, p, kb, -l * (1 - m)) } Cb(Pb, Pb, s), Tb(Pb, Pb, a), Cb(Ob, Ob, s), Tb(Ob, Ob, a), t.bezierCurveTo(Pb[0], Pb[1], Ob[0], Ob[ 1], p[0], p[1]), Ab(Pb, p, kb, l * m) } else t.lineTo(p[0], p[1]); c = d, d += o } return f } function Bc(t, e) { var n = [1 / 0, 1 / 0], i = [-1 / 0, -1 / 0]; if (e) for (var r = 0; r < t.length; r++) { var o = t[r]; o[0] < n[0] && (n[0] = o[0]), o[1] < n[1] && (n[1] = o[1]), o[0] > i[0] && (i[0] = o[0]), o[1] > i[ 1] && (i[1] = o[1]) } return { min: e ? n : i, max: e ? i : n } } function Rc(t, e, n) { var i = t.getArea(), r = t.getBaseAxis().isHorizontal(), o = i.x, a = i.y, s = i.width, l = i.height, u = n.get("lineStyle.width") || 2; o -= u / 2, a -= u / 2, s += u, l += u, o = Math.floor(o), s = Math.round(s); var h = new Jm({ shape: { x: o, y: a, width: s, height: l } }); return e && (h.shape[r ? "width" : "height"] = 0, na(h, { shape: { width: s, height: l } }, n)), h } function Nc(t, e, n) { var i = t.getArea(), r = new Xm({ shape: { cx: Sa(t.cx, 1), cy: Sa(t.cy, 1), r0: Sa(i.r0, 1), r: Sa(i.r, 1), startAngle: i.startAngle, endAngle: i.endAngle, clockwise: i.clockwise } }); return e && (r.shape.endAngle = i.startAngle, na(r, { shape: { endAngle: i.endAngle } }, n)), r } function Fc(t, e) { if (t.length === e.length) { for (var n = 0; n < t.length; n++) { var i = t[n], r = e[n]; if (i[0] !== r[0] || i[1] !== r[1]) return } return !0 } } function Vc(t, e) { var n = [], i = [], r = [], o = []; return Br(t, n, i), Br(e, r, o), Math.max(Math.abs(n[0] - r[0]), Math.abs(n[1] - r[1]), Math.abs(i[0] - o[ 0]), Math.abs(i[1] - o[1])) } function Wc(t) { return "number" == typeof t ? t : t ? .5 : 0 } function Hc(t, e, n) { if (!n.valueDim) return []; for (var i = [], r = 0, o = e.count(); o > r; r++) i.push(kc(n, t, e, r)); return i } function Gc(t, e, n) { for (var i = e.getBaseAxis(), r = "x" === i.dim || "radius" === i.dim ? 0 : 1, o = [], a = 0; a < t.length - 1; a++) { var s = t[a + 1], l = t[a]; o.push(l); var u = []; switch (n) { case "end": u[r] = s[r], u[1 - r] = l[1 - r], o.push(u); break; case "middle": var h = (l[r] + s[r]) / 2, c = []; u[r] = c[r] = h, u[1 - r] = l[1 - r], c[1 - r] = s[1 - r], o.push(u), o.push(c); break; default: u[r] = l[r], u[1 - r] = s[1 - r], o.push(u) } } return t[a] && o.push(t[a]), o } function Zc(t, e) { var n = t.getVisual("visualMeta"); if (n && n.length && t.count()) { if ("cartesian2d" !== e.type) return void(lp && console.warn( "Visual map on line style is only supported on cartesian2d.")); for (var i, r, o = n.length - 1; o >= 0; o--) { var a = n[o].dimension, s = t.dimensions[a], l = t.getDimensionInfo(s); if (i = l && l.coordDim, "x" === i || "y" === i) { r = n[o]; break } } if (!r) return void(lp && console.warn("Visual map on line style only support x or y dimension.")); var u = e.getAxis(i), h = p(r.stops, function(t) { return { coord: u.toGlobalCoord(u.dataToCoord(t.value)), color: t.color } }), c = h.length, d = r.outerColors.slice(); c && h[0].coord > h[c - 1].coord && (h.reverse(), d.reverse()); var g = 10, v = h[0].coord - g, m = h[c - 1].coord + g, y = m - v; if (.001 > y) return "transparent"; f(h, function(t) { t.offset = (t.coord - v) / y }), h.push({ offset: c ? h[c - 1].offset : .5, color: d[1] || "transparent" }), h.unshift({ offset: c ? h[0].offset : .5, color: d[0] || "transparent" }); var x = new sy(0, 0, 0, 0, h, !0); return x[i] = v, x[i + "2"] = m, x } } function Xc(t, e, n) { var i = t.get("showAllSymbol"), r = "auto" === i; if (!i || r) { var o = n.getAxesByScale("ordinal")[0]; if (o && (!r || !Yc(o, e))) { var a = e.mapDimension(o.dim), s = {}; return f(o.getViewLabels(), function(t) { s[t.tickValue] = 1 }), function(t) { return !s.hasOwnProperty(e.get(a, t)) } } } } function Yc(t, e) { var n = t.getExtent(), i = Math.abs(n[1] - n[0]) / t.scale.count(); isNaN(i) && (i = 0); for (var r = e.count(), o = Math.max(1, Math.round(r / 5)), a = 0; r > a; a += o) if (1.5 * _c.getSymbolSize(e, a)[t.isHorizontal() ? 1 : 0] > i) return !1; return !0 } function Uc(t, e, n) { if ("cartesian2d" === t.type) { var i = t.getBaseAxis().isHorizontal(), r = Rc(t, e, n); if (!n.get("clip", !0)) { var o = r.shape, a = Math.max(o.width, o.height); i ? (o.y -= a, o.height += 2 * a) : (o.x -= a, o.width += 2 * a) } return r } return Nc(t, e, n) } function jc(t) { return this._axes[t] } function qc(t) { Vb.call(this, t) } function Kc(t, e) { return e.type || (e.data ? "category" : "value") } function $c(t, e) { return t.getCoordSysModel() === e } function Qc(t, e, n) { this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this._initCartesian(t, e, n), this.model = t } function Jc(t, e, n, i) { function r(t) { return t.dim + "_" + t.index } n.getAxesOnZeroOf = function() { return o ? [o] : [] }; var o, a = t[e], s = n.model, l = s.get("axisLine.onZero"), u = s.get("axisLine.onZeroAxisIndex"); if (l) { if (null != u) td(a[u]) && (o = a[u]); else for (var h in a) if (a.hasOwnProperty(h) && td(a[h]) && !i[r(a[h])]) { o = a[h]; break } o && (i[r(o)] = !0) } } function td(t) { return t && "category" !== t.type && "time" !== t.type && Vh(t) } function ed(t, e) { var n = t.getExtent(), i = n[0] + n[1]; t.toGlobalCoord = "x" === t.dim ? function(t) { return t + e } : function(t) { return i - t + e }, t.toLocalCoord = "x" === t.dim ? function(t) { return t - e } : function(t) { return i - t + e } } function nd(t) { return p(qb, function(e) { var n = t.getReferringComponents(e)[0]; if (lp && !n) throw new Error(e + ' "' + A(t.get(e + "Index"), t.get(e + "Id"), 0) + '" not found'); return n }) } function id(t) { return "cartesian2d" === t.get("coordinateSystem") } function rd(t, e, n, i) { var r, o, a = Da(n - t.rotation), s = i[0] > i[1], l = "start" === e && !s || "start" !== e && s; return ka(a - Kb / 2) ? (o = l ? "bottom" : "top", r = "center") : ka(a - 1.5 * Kb) ? (o = l ? "top" : "bottom", r = "center") : (o = "middle", r = 1.5 * Kb > a && a > Kb / 2 ? l ? "left" : "right" : l ? "right" : "left"), { rotation: a, textAlign: r, textVerticalAlign: o } } function od(t, e, n) { if (!Yh(t.axis)) { var i = t.get("axisLabel.showMinLabel"), r = t.get("axisLabel.showMaxLabel"); e = e || [], n = n || []; var o = e[0], a = e[1], s = e[e.length - 1], l = e[e.length - 2], u = n[0], h = n[1], c = n[n.length - 1], d = n[n.length - 2]; i === !1 ? (ad(o), ad(u)) : sd(o, a) && (i ? (ad(a), ad(h)) : (ad(o), ad(u))), r === !1 ? (ad(s), ad( c)) : sd(l, s) && (r ? (ad(l), ad(d)) : (ad(s), ad(c))) } } function ad(t) { t && (t.ignore = !0) } function sd(t, e) { var n = t && t.getBoundingRect().clone(), i = e && e.getBoundingRect().clone(); if (n && i) { var r = ze([]); return Ne(r, r, -t.rotation), n.applyTransform(Be([], r, t.getLocalTransform())), i.applyTransform(Be( [], r, e.getLocalTransform())), n.intersect(i) } } function ld(t) { return "middle" === t || "center" === t } function ud(t, e, n, i, r) { for (var o = [], a = [], s = [], l = 0; l < t.length; l++) { var u = t[l].coord; a[0] = u, a[1] = 0, s[0] = u, s[1] = n, e && (oe(a, a, e), oe(s, s, e)); var h = new ey({ anid: r + "_" + t[l].tickValue, subPixelOptimize: !0, shape: { x1: a[0], y1: a[1], x2: s[0], y2: s[1] }, style: i, z2: 2, silent: !0 }); o.push(h) } return o } function hd(t, e, n) { var i = e.axis, r = e.getModel("axisTick"); if (r.get("show") && !i.scale.isBlank()) { for (var o = r.getModel("lineStyle"), a = n.tickDirection * r.get("length"), l = i.getTicksCoords(), u = ud(l, t._transform, a, s(o.getLineStyle(), { stroke: e.get("axisLine.lineStyle.color") }), "ticks"), h = 0; h < u.length; h++) t.group.add(u[h]); return u } } function cd(t, e, n) { var i = e.axis, r = e.getModel("minorTick"); if (r.get("show") && !i.scale.isBlank()) { var o = i.getMinorTicksCoords(); if (o.length) for (var a = r.getModel("lineStyle"), l = n.tickDirection * r.get("length"), u = s(a.getLineStyle(), s(e.getModel("axisTick").getLineStyle(), { stroke: e.get("axisLine.lineStyle.color") })), h = 0; h < o.length; h++) for (var c = ud(o[h], t._transform, l, u, "minorticks_" + h), d = 0; d < c.length; d++) t.group .add(c[d]) } } function dd(t, e, n) { var i = e.axis, r = A(n.axisLabelShow, e.get("axisLabel.show")); if (r && !i.scale.isBlank()) { var o = e.getModel("axisLabel"), a = o.get("margin"), s = i.getViewLabels(), l = (A(n.labelRotate, o.get("rotate")) || 0) * Kb / 180, u = tS(n.rotation, l, n.labelDirection), h = e.getCategories && e.getCategories(!0), c = [], d = eS(e), p = e.get("triggerEvent"); return f(s, function(r, s) { var l = r.tickValue, f = r.formattedLabel, g = r.rawLabel, v = o; h && h[l] && h[l].textStyle && (v = new pa(h[l].textStyle, o, e.ecModel)); var m = v.getTextColor() || e.get("axisLine.lineStyle.color"), y = i.dataToCoord(l), x = [y, n.labelOffset + n.labelDirection * a], _ = new Wm({ anid: "label_" + l, position: x, rotation: u.rotation, silent: d, z2: 10 }); Xo(_.style, v, { text: f, textAlign: v.getShallow("align", !0) || u.textAlign, textVerticalAlign: v.getShallow("verticalAlign", !0) || v.getShallow("baseline", !0) || u.textVerticalAlign, textFill: "function" == typeof m ? m("category" === i.type ? g : "value" === i .type ? l + "" : l, s) : m }), p && (_.eventData = Jb(e), _.eventData.targetType = "axisLabel", _.eventData.value = g), t._dumbGroup.add(_), _.updateTransform(), c.push(_), t.group.add(_), _ .decomposeTransform() }), c } } function fd(t, e) { var n = { axesInfo: {}, seriesInvolved: !1, coordSysAxesInfo: {}, coordSysMap: {} }; return pd(n, t, e), n.seriesInvolved && vd(n, t), n } function pd(t, e, n) { var i = e.getComponent("tooltip"), r = e.getComponent("axisPointer"), o = r.get("link", !0) || [], a = []; nS(n.getCoordinateSystems(), function(n) { function s(i, s, l) { var h = l.model.getModel("axisPointer", r), d = h.get("show"); if (d && ("auto" !== d || i || bd(h))) { null == s && (s = h.get("triggerTooltip")), h = i ? gd(l, c, r, e, i, s) : h; var f = h.get("snap"), p = Sd(l.model), g = s || f || "category" === l.type, v = t.axesInfo[p] = { key: p, axis: l, coordSys: n, axisPointerModel: h, triggerTooltip: s, involveSeries: g, snap: f, useHandle: bd(h), seriesModels: [] }; u[p] = v, t.seriesInvolved |= g; var m = md(o, l); if (null != m) { var y = a[m] || (a[m] = { axesInfo: {} }); y.axesInfo[p] = v, y.mapper = o[m].mapper, v.linkGroup = y } } } if (n.axisPointerEnabled) { var l = Sd(n.model), u = t.coordSysAxesInfo[l] = {}; t.coordSysMap[l] = n; var h = n.model, c = h.getModel("tooltip", i); if (nS(n.getAxes(), iS(s, !1, null)), n.getTooltipAxes && i && c.get("show")) { var d = "axis" === c.get("trigger"), f = "cross" === c.get("axisPointer.type"), p = n.getTooltipAxes(c.get("axisPointer.axis")); (d || f) && nS(p.baseAxes, iS(s, f ? "cross" : !0, d)), f && nS(p.otherAxes, iS(s, "cross", !1)) } } }) } function gd(t, e, n, r, o, a) { var l = e.getModel("axisPointer"), u = {}; nS(["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z" ], function(t) { u[t] = i(l.get(t)) }), u.snap = "category" !== t.type && !!a, "cross" === l.get("type") && (u.type = "line"); var h = u.label || (u.label = {}); if (null == h.show && (h.show = !1), "cross" === o) { var c = l.get("label.show"); if (h.show = null != c ? c : !0, !a) { var d = u.lineStyle = l.get("crossStyle"); d && s(h, d.textStyle) } } return t.model.getModel("axisPointer", new pa(u, n, r)) } function vd(t, e) { e.eachSeries(function(e) { var n = e.coordinateSystem, i = e.get("tooltip.trigger", !0), r = e.get("tooltip.show", !0); n && "none" !== i && i !== !1 && "item" !== i && r !== !1 && e.get("axisPointer.show", !0) !== ! 1 && nS(t.coordSysAxesInfo[Sd(n.model)], function(t) { var i = t.axis; n.getAxis(i.dim) === i && (t.seriesModels.push(e), null == t.seriesDataCount && (t .seriesDataCount = 0), t.seriesDataCount += e.getData().count()) }) }, this) } function md(t, e) { for (var n = e.model, i = e.dim, r = 0; r < t.length; r++) { var o = t[r] || {}; if (yd(o[i + "AxisId"], n.id) || yd(o[i + "AxisIndex"], n.componentIndex) || yd(o[i + "AxisName"], n .name)) return r } } function yd(t, e) { return "all" === t || _(t) && u(t, e) >= 0 || t === e } function xd(t) { var e = _d(t); if (e) { var n = e.axisPointerModel, i = e.axis.scale, r = n.option, o = n.get("status"), a = n.get("value"); null != a && (a = i.parse(a)); var s = bd(n); null == o && (r.status = s ? "show" : "hide"); var l = i.getExtent().slice(); l[0] > l[1] && l.reverse(), (null == a || a > l[1]) && (a = l[1]), a < l[0] && (a = l[0]), r.value = a, s && (r.status = e.axis.scale.isBlank() ? "hide" : "show") } } function _d(t) { var e = (t.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo; return e && e.axesInfo[Sd(t)] } function wd(t) { var e = _d(t); return e && e.axisPointerModel } function bd(t) { return !!t.get("handle.show") } function Sd(t) { return t.type + "||" + t.id } function Md(t, e, n, i, r, o) { var a = rS.getAxisPointerClass(t.axisPointerClass); if (a) { var s = wd(e); s ? (t._axisPointer || (t._axisPointer = new a)).render(e, s, i, o) : Id(t, i) } } function Id(t, e, n) { var i = t._axisPointer; i && i.dispose(e, n), t._axisPointer = null } function Cd(t, e, n) { n = n || {}; var i = t.coordinateSystem, r = e.axis, o = {}, a = r.getAxesOnZeroOf()[0], s = r.position, l = a ? "onZero" : s, u = r.dim, h = i.getRect(), c = [h.x, h.x + h.width, h.y, h.y + h.height], d = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 }, f = e.get("offset") || 0, p = "x" === u ? [c[2] - f, c[3] + f] : [c[0] - f, c[1] + f]; if (a) { var g = a.toGlobalCoord(a.dataToCoord(0)); p[d.onZero] = Math.max(Math.min(g, p[1]), p[0]) } o.position = ["y" === u ? p[d[l]] : c[0], "x" === u ? p[d[l]] : c[3]], o.rotation = Math.PI / 2 * ("x" === u ? 0 : 1); var v = { top: -1, bottom: 1, left: -1, right: 1 }; o.labelDirection = o.tickDirection = o.nameDirection = v[s], o.labelOffset = a ? p[d[s]] - p[d.onZero] : 0, e.get("axisTick.inside") && (o.tickDirection = -o.tickDirection), A(n.labelInside, e.get( "axisLabel.inside")) && (o.labelDirection = -o.labelDirection); var m = e.get("axisLabel.rotate"); return o.labelRotate = "top" === l ? -m : m, o.z2 = 1, o } function Td(t, e, n, i) { var r = n.axis; if (!r.scale.isBlank()) { var o = n.getModel("splitArea"), a = o.getModel("areaStyle"), l = a.get("color"), u = i.coordinateSystem.getRect(), h = r.getTicksCoords({ tickModel: o, clamp: !0 }); if (h.length) { var c = l.length, d = t.__splitAreaColors, f = N(), p = 0; if (d) for (var g = 0; g < h.length; g++) { var v = d.get(h[g].tickValue); if (null != v) { p = (v + (c - 1) * g) % c; break } } var m = r.toGlobalCoord(h[0].coord), y = a.getAreaStyle(); l = _(l) ? l : [l]; for (var g = 1; g < h.length; g++) { var x, w, b, S, M = r.toGlobalCoord(h[g].coord); r.isHorizontal() ? (x = m, w = u.y, b = M - x, S = u.height, m = x + b) : (x = u.x, w = m, b = u .width, S = M - w, m = w + S); var I = h[g - 1].tickValue; null != I && f.set(I, p), e.add(new Jm({ anid: null != I ? "area_" + I : null, shape: { x: x, y: w, width: b, height: S }, style: s({ fill: l[p] }, y), silent: !0 })), p = (p + 1) % c } t.__splitAreaColors = f } } } function Ad(t) { t.__splitAreaColors = null } function Dd(t, e, n) { var i, r = {}, o = "toggleSelected" === t; return n.eachComponent("legend", function(n) { o && null != i ? n[i ? "select" : "unSelect"](e.name) : "allSelect" === t || "inverseSelect" === t ? n[t]() : (n[t](e.name), i = n.isSelected(e.name)); var a = n.getData(); f(a, function(t) { var e = t.get("name"); if ("\n" !== e && "" !== e) { var i = n.isSelected(e); r[e] = r.hasOwnProperty(e) ? r[e] && i : i } }) }), "allSelect" === t || "inverseSelect" === t ? { selected: r } : { name: e.name, selected: r } } function kd(t, e) { var n = By(e.get("padding")), i = e.getItemStyle(["color", "opacity"]); i.fill = e.get("backgroundColor"); var t = new Jm({ shape: { x: t.x - n[3], y: t.y - n[0], width: t.width + n[1] + n[3], height: t.height + n[0] + n[2], r: e.get("borderRadius") }, style: i, silent: !0, z2: -1 }); return t } function Pd(t, e, n, i, r, o) { var a; return "line" !== e && e.indexOf("empty") < 0 ? (a = n.getItemStyle(), t.style.stroke = i, o || (a.stroke = r)) : a = n.getItemStyle(["borderWidth", "borderColor"]), t.setStyle(a) } function Od(t, e, n, i) { zd(t, e, n, i), n.dispatchAction({ type: "legendToggleSelect", name: null != t ? t : e }), Ld(t, e, n, i) } function Ld(t, e, n, i) { var r = n.getZr().storage.getDisplayList()[0]; r && r.useHoverLayer || n.dispatchAction({ type: "highlight", seriesName: t, name: e, excludeSeriesId: i }) } function zd(t, e, n, i) { var r = n.getZr().storage.getDisplayList()[0]; r && r.useHoverLayer || n.dispatchAction({ type: "downplay", seriesName: t, name: e, excludeSeriesId: i }) } function Ed(t, e, n) { var i = t.getOrient(), r = [1, 1]; r[i.index] = 0, Qa(e, n, { type: "box", ignoreSize: r }) } function Bd(t, e, n, i, r) { var o = t.axis; if (!o.scale.isBlank() && o.containData(e)) { if (!t.involveSeries) return void n.showPointer(t, e); var s = Rd(e, t), l = s.payloadBatch, u = s.snapToValue; l[0] && null == r.seriesIndex && a(r, l[0]), !i && t.snap && o.containData(u) && null != u && (e = u), n .showPointer(t, e, l, r), n.showTooltip(t, s, u) } } function Rd(t, e) { var n = e.axis, i = n.dim, r = t, o = [], a = Number.MAX_VALUE, s = -1; return SS(e.seriesModels, function(e) { var l, u, h = e.getData().mapDimension(i, !0); if (e.getAxisTooltipData) { var c = e.getAxisTooltipData(h, t, n); u = c.dataIndices, l = c.nestestValue } else { if (u = e.getData().indicesOfNearest(h[0], t, "category" === n.type ? .5 : null), !u.length) return; l = e.getData().get(h[0], u[0]) } if (null != l && isFinite(l)) { var d = t - l, f = Math.abs(d); a >= f && ((a > f || d >= 0 && 0 > s) && (a = f, s = d, r = l, o.length = 0), SS(u, function(t) { o.push({ seriesIndex: e.seriesIndex, dataIndexInside: t, dataIndex: e.getData().getRawIndex(t) }) })) } }), { payloadBatch: o, snapToValue: r } } function Nd(t, e, n, i) { t[e.key] = { value: n, payloadBatch: i } } function Fd(t, e, n, i) { var r = n.payloadBatch, o = e.axis, a = o.model, s = e.axisPointerModel; if (e.triggerTooltip && r.length) { var l = e.coordSys.model, u = Sd(l), h = t.map[u]; h || (h = t.map[u] = { coordSysId: l.id, coordSysIndex: l.componentIndex, coordSysType: l.type, coordSysMainType: l.mainType, dataByAxis: [] }, t.list.push(h)), h.dataByAxis.push({ axisDim: o.dim, axisIndex: a.componentIndex, axisType: a.type, axisId: a.id, value: i, valueLabelOpt: { precision: s.get("label.precision"), formatter: s.get("label.formatter") }, seriesDataIndices: r.slice() }) } } function Vd(t, e, n) { var i = n.axesInfo = []; SS(e, function(e, n) { var r = e.axisPointerModel.option, o = t[n]; o ? (!e.useHandle && (r.status = "show"), r.value = o.value, r.seriesDataIndices = (o .payloadBatch || []).slice()) : !e.useHandle && (r.status = "hide"), "show" === r .status && i.push({ axisDim: e.axis.dim, axisIndex: e.axis.model.componentIndex, value: r.value }) }) } function Wd(t, e, n, i) { if (Xd(e) || !t.list.length) return void i({ type: "hideTip" }); var r = ((t.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; i({ type: "showTip", escapeConnect: !0, x: e[0], y: e[1], tooltipOption: n.tooltipOption, position: n.position, dataIndexInside: r.dataIndexInside, dataIndex: r.dataIndex, seriesIndex: r.seriesIndex, dataByCoordSys: t.list }) } function Hd(t, e, n) { var i = n.getZr(), r = "axisPointerLastHighlights", o = IS(i)[r] || {}, a = IS(i)[r] = {}; SS(t, function(t) { var e = t.axisPointerModel.option; "show" === e.status && SS(e.seriesDataIndices, function(t) { var e = t.seriesIndex + " | " + t.dataIndex; a[e] = t }) }); var s = [], l = []; f(o, function(t, e) { !a[e] && l.push(t) }), f(a, function(t, e) { !o[e] && s.push(t) }), l.length && n.dispatchAction({ type: "downplay", escapeConnect: !0, batch: l }), s.length && n.dispatchAction({ type: "highlight", escapeConnect: !0, batch: s }) } function Gd(t, e) { for (var n = 0; n < (t || []).length; n++) { var i = t[n]; if (e.axis.dim === i.axisDim && e.axis.model.componentIndex === i.axisIndex) return i } } function Zd(t) { var e = t.axis.model, n = {}, i = n.axisDim = t.axis.dim; return n.axisIndex = n[i + "AxisIndex"] = e.componentIndex, n.axisName = n[i + "AxisName"] = e.name, n .axisId = n[i + "AxisId"] = e.id, n } function Xd(t) { return !t || null == t[0] || isNaN(t[0]) || null == t[1] || isNaN(t[1]) } function Yd(t, e, n) { if (!dp.node) { var i = e.getZr(); TS(i).records || (TS(i).records = {}), Ud(i, e); var r = TS(i).records[t] || (TS(i).records[t] = {}); r.handler = n } } function Ud(t, e) { function n(n, i) { t.on(n, function(n) { var r = $d(e); AS(TS(t).records, function(t) { t && i(t, n, r.dispatchAction) }), jd(r.pendings, e) }) } TS(t).initialized || (TS(t).initialized = !0, n("click", x(Kd, "click")), n("mousemove", x(Kd, "mousemove")), n("globalout", qd)) } function jd(t, e) { var n, i = t.showTip.length, r = t.hideTip.length; i ? n = t.showTip[i - 1] : r && (n = t.hideTip[r - 1]), n && (n.dispatchAction = null, e.dispatchAction(n)) } function qd(t, e, n) { t.handler("leave", null, n) } function Kd(t, e, n, i) { e.handler(t, n, i) } function $d(t) { var e = { showTip: [], hideTip: [] }, n = function(i) { var r = e[i.type]; r ? r.push(i) : (i.dispatchAction = n, t.dispatchAction(i)) }; return { dispatchAction: n, pendings: e } } function Qd(t, e) { if (!dp.node) { var n = e.getZr(), i = (TS(n).records || {})[t]; i && (TS(n).records[t] = null) } } function Jd() {} function tf(t, e, n, i) { ef(kS(n).lastProp, i) || (kS(n).lastProp = i, e ? ea(n, i, t) : (n.stopAnimation(), n.attr(i))) } function ef(t, e) { if (S(t) && S(e)) { var n = !0; return f(e, function(e, i) { n = n && ef(t[i], e) }), !!n } return t === e } function nf(t, e) { t[e.get("label.show") ? "show" : "hide"]() } function rf(t) { return { position: t.position.slice(), rotation: t.rotation || 0 } } function of(t, e, n) { var i = e.get("z"), r = e.get("zlevel"); t && t.traverse(function(t) { "group" !== t.type && (null != i && (t.z = i), null != r && (t.zlevel = r), t.silent = n) }) } function af(t) { var e, n = t.get("type"), i = t.getModel(n + "Style"); return "line" === n ? (e = i.getLineStyle(), e.fill = null) : "shadow" === n && (e = i.getAreaStyle(), e .stroke = null), e } function sf(t, e, n, i, r) { var o = n.get("value"), a = uf(o, e.axis, e.ecModel, n.get("seriesDataIndices"), { precision: n.get("label.precision"), formatter: n.get("label.formatter") }), s = n.getModel("label"), l = By(s.get("padding") || 0), u = s.getFont(), h = Yn(a, u), c = r.position, d = h.width + l[1] + l[3], f = h.height + l[0] + l[2], p = r.align; "right" === p && (c[0] -= d), "center" === p && (c[0] -= d / 2); var g = r.verticalAlign; "bottom" === g && (c[1] -= f), "middle" === g && (c[1] -= f / 2), lf(c, d, f, i); var v = s.get("backgroundColor"); v && "auto" !== v || (v = e.get("axisLine.lineStyle.color")), t.label = { shape: { x: 0, y: 0, width: d, height: f, r: s.get("borderRadius") }, position: c.slice(), style: { text: a, textFont: u, textFill: s.getTextColor(), textPosition: "inside", textPadding: l, fill: v, stroke: s.get("borderColor") || "transparent", lineWidth: s.get("borderWidth") || 0, shadowBlur: s.get("shadowBlur"), shadowColor: s.get("shadowColor"), shadowOffsetX: s.get("shadowOffsetX"), shadowOffsetY: s.get("shadowOffsetY") }, z2: 10 } } function lf(t, e, n, i) { var r = i.getWidth(), o = i.getHeight(); t[0] = Math.min(t[0] + e, r) - e, t[1] = Math.min(t[1] + n, o) - n, t[0] = Math.max(t[0], 0), t[1] = Math .max(t[1], 0) } function uf(t, e, n, i, r) { t = e.scale.parse(t); var o = e.scale.getLabel(t, { precision: r.precision }), a = r.formatter; if (a) { var s = { value: Hh(e, t), axisDimension: e.dim, axisIndex: e.index, seriesData: [] }; f(i, function(t) { var e = n.getSeriesByIndex(t.seriesIndex), i = t.dataIndexInside, r = e && e.getDataParams(i); r && s.seriesData.push(r) }), b(a) ? o = a.replace("{value}", o) : w(a) && (o = a(s)) } return o } function hf(t, e, n) { var i = Le(); return Ne(i, i, n.rotation), Re(i, i, n.position), ra([t.dataToCoord(e), (n.labelOffset || 0) + (n .labelDirection || 1) * (n.labelMargin || 0)], i) } function cf(t, e, n, i, r, o) { var a = $b.innerTextLayout(n.rotation, 0, n.labelDirection); n.labelMargin = r.get("label.margin"), sf(e, i, r, o, { position: hf(i.axis, t, n), align: a.textAlign, verticalAlign: a.textVerticalAlign }) } function df(t, e, n) { return n = n || 0, { x1: t[n], y1: t[1 - n], x2: e[n], y2: e[1 - n] } } function ff(t, e, n) { return n = n || 0, { x: t[n], y: t[1 - n], width: e[n], height: e[1 - n] } } function pf(t, e) { var n = {}; return n[e.dim + "AxisIndex"] = e.index, t.getCartesian(n) } function gf(t) { return "x" === t.dim ? 0 : 1 } function vf(t) { var e = "cubic-bezier(0.23, 1, 0.32, 1)", n = "left " + t + "s " + e + ",top " + t + "s " + e; return p(RS, function(t) { return t + "transition:" + n }).join(";") } function mf(t) { var e = [], n = t.get("fontSize"), i = t.getTextColor(); return i && e.push("color:" + i), e.push("font:" + t.getFont()), n && e.push("line-height:" + Math.round(3 * n / 2) + "px"), ES(["decoration", "align"], function(n) { var i = t.get(n); i && e.push("text-" + n + ":" + i) }), e.join(";") } function yf(t) { var e = [], n = t.get("transitionDuration"), i = t.get("backgroundColor"), r = t.getModel("textStyle"), o = t.get("padding"); return n && e.push(vf(n)), i && (dp.canvasSupported ? e.push("background-Color:" + i) : (e.push( "background-Color:#" + on(i)), e.push("filter:alpha(opacity=70)"))), ES(["width", "color", "radius"], function(n) { var i = "border-" + n, r = BS(i), o = t.get(r); null != o && e.push(i + ":" + o + ("color" === n ? "" : "px")) }), e.push(mf(r)), null != o && e.push("padding:" + By(o).join("px ") + "px"), e.join(";") + ";" } function xf(t, e, n, i, r) { var o = e && e.painter; if (n) { var a = o && o.getViewportRoot(); a && pe(t, a, document.body, i, r) } else { t[0] = i, t[1] = r; var s = o && o.getViewportRootOffset(); s && (t[0] += s.offsetLeft, t[1] += s.offsetTop) } } function _f(t, e, n) { if (dp.wxa) return null; var i = document.createElement("div"); i.domBelongToZr = !0, this.el = i; var r = this._zr = e.getZr(), o = this._appendToBody = n && n.appendToBody; this._styleCoord = [0, 0], xf(this._styleCoord, r, o, e.getWidth() / 2, e.getHeight() / 2), o ? document .body.appendChild(i) : t.appendChild(i), this._container = t, this._show = !1, this._hideTimeout; var a = this; i.onmouseenter = function() { a._enterable && (clearTimeout(a._hideTimeout), a._show = !0), a._inContent = !0 }, i.onmousemove = function(t) { if (t = t || window.event, !a._enterable) { var e = r.handler, n = r.painter.getViewportRoot(); be(n, t, !0), e.dispatch("mousemove", t) } }, i.onmouseleave = function() { a._enterable && a._show && a.hideLater(a._hideDelay), a._inContent = !1 } } function wf(t) { this._zr = t.getZr(), this._show = !1, this._hideTimeout } function bf(t) { for (var e = t.pop(); t.length;) { var n = t.pop(); n && (pa.isInstance(n) && (n = n.get("tooltip", !0)), "string" == typeof n && (n = { formatter: n }), e = new pa(n, e, e.ecModel)) } return e } function Sf(t, e) { return t.dispatchAction || y(e.dispatchAction, e) } function Mf(t, e, n, i, r, o, a) { var s = n.getOuterSize(), l = s.width, u = s.height; return null != o && (t + l + o > i ? t -= l + o : t += o), null != a && (e + u + a > r ? e -= u + a : e += a), [t, e] } function If(t, e, n, i, r) { var o = n.getOuterSize(), a = o.width, s = o.height; return t = Math.min(t + a, i) - a, e = Math.min(e + s, r) - s, t = Math.max(t, 0), e = Math.max(e, 0), [t, e] } function Cf(t, e, n) { var i = n[0], r = n[1], o = 5, a = 0, s = 0, l = e.width, u = e.height; switch (t) { case "inside": a = e.x + l / 2 - i / 2, s = e.y + u / 2 - r / 2; break; case "top": a = e.x + l / 2 - i / 2, s = e.y - r - o; break; case "bottom": a = e.x + l / 2 - i / 2, s = e.y + u + o; break; case "left": a = e.x - i - o, s = e.y + u / 2 - r / 2; break; case "right": a = e.x + l + o, s = e.y + u / 2 - r / 2 } return [a, s] } function Tf(t) { return "center" === t || "middle" === t } function Af(t) { return u(ZS, t) >= 0 } function Df(t, e) { t = t.slice(); var n = p(t, Ya); e = (e || []).slice(); var i = p(e, Ya); return function(r, o) { f(t, function(t, a) { for (var s = { name: t, capital: n[a] }, l = 0; l < e.length; l++) s[e[l]] = t + i[l]; r.call(o, s) }) } } function kf(t, e, n) { function i(t, e) { return u(e.nodes, t) >= 0 } function r(t, i) { var r = !1; return e(function(e) { f(n(t, e) || [], function(t) { i.records[e.name][t] && (r = !0) }) }), r } function o(t, i) { i.nodes.push(t), e(function(e) { f(n(t, e) || [], function(t) { i.records[e.name][t] = !0 }) }) } return function(n) { function a(t) { !i(t, s) && r(t, s) && (o(t, s), l = !0) } var s = { nodes: [], records: {} }; if (e(function(t) { s.records[t.name] = {} }), !n) return s; o(n, s); var l; do l = !1, t(a); while (l); return s } } function Pf(t, e) { var n = t[e] - t[1 - e]; return { span: Math.abs(n), sign: n > 0 ? -1 : 0 > n ? 1 : e ? -1 : 1 } } function Of(t, e) { return Math.min(null != e[1] ? e[1] : 1 / 0, Math.max(null != e[0] ? e[0] : -1 / 0, t)) } function Lf(t, e, n) { var i = [1 / 0, -1 / 0]; return US(n, function(t) { var n = t.getData(); n && US(n.mapDimension(e, !0), function(t) { var e = n.getApproximateExtent(t); e[0] < i[0] && (i[0] = e[0]), e[1] > i[1] && (i[1] = e[1]) }) }), i[1] < i[0] && (i = [0 / 0, 0 / 0]), zf(t, i), i } function zf(t, e) { var n = t.getAxisModel(), i = n.getMin(!0), r = "category" === n.get("type"), o = r && n.getCategories().length; null != i && "dataMin" !== i && "function" != typeof i ? e[0] = i : r && (e[0] = o > 0 ? 0 : 0 / 0); var a = n.getMax(!0); return null != a && "dataMax" !== a && "function" != typeof a ? e[1] = a : r && (e[1] = o > 0 ? o - 1 : 0 / 0), n.get("scale", !0) || (e[0] > 0 && (e[0] = 0), e[1] < 0 && (e[1] = 0)), e } function Ef(t, e) { var n = t.getAxisModel(), i = t._percentWindow, r = t._valueWindow; if (i) { var o = Ta(r, [0, 500]); o = Math.min(o, 20); var a = e || 0 === i[0] && 100 === i[1]; n.setRange(a ? null : +r[0].toFixed(o), a ? null : +r[1].toFixed(o)) } } function Bf(t) { var e = t._minMaxSpan = {}, n = t._dataZoomModel, i = t._dataExtent; US(["min", "max"], function(r) { var o = n.get(r + "Span"), a = n.get(r + "ValueSpan"); null != a && (a = t.getAxisModel().axis.scale.parse(a)), null != a ? o = wa(i[0] + a, i, [0, 100], !0) : null != o && (a = wa(o, [0, 100], i, !0) - i[0]), e[r + "Span"] = o, e[r + "ValueSpan"] = a }) } function Rf(t) { var e = {}; return KS(["start", "end", "startValue", "endValue", "throttle"], function(n) { t.hasOwnProperty(n) && (e[n] = t[n]) }), e } function Nf(t, e) { var n = t._rangePropMode, i = t.get("rangeMode"); KS([ ["start", "startValue"], ["end", "endValue"] ], function(t, r) { var o = null != e[t[0]], a = null != e[t[1]]; o && !a ? n[r] = "percent" : !o && a ? n[r] = "value" : i ? n[r] = i[r] : o && (n[r] = "percent") }) } function Ff(t) { var e = { x: "y", y: "x", radius: "angle", angle: "radius" }; return e[t] } function Vf(t) { return "vertical" === t ? "ns-resize" : "ew-resize" } function Wf(t, e) { return !!Hf(t)[e] } function Hf(t) { return t[fM] || (t[fM] = {}) } function Gf(t) { this.pointerChecker, this._zr = t, this._opt = {}; var e = y, n = e(Zf, this), r = e(Xf, this), o = e(Yf, this), a = e(Uf, this), l = e(jf, this); zp.call(this), this.setPointerChecker = function(t) { this.pointerChecker = t }, this.enable = function(e, u) { this.disable(), this._opt = s(i(u) || {}, { zoomOnMouseWheel: !0, moveOnMouseMove: !0, moveOnMouseWheel: !1, preventDefaultMouseMove: !0 }), null == e && (e = !0), (e === !0 || "move" === e || "pan" === e) && (t.on("mousedown", n), t .on("mousemove", r), t.on("mouseup", o)), (e === !0 || "scale" === e || "zoom" === e) && (t .on("mousewheel", a), t.on("pinch", l)) }, this.disable = function() { t.off("mousedown", n), t.off("mousemove", r), t.off("mouseup", o), t.off("mousewheel", a), t.off( "pinch", l) }, this.dispose = this.disable, this.isDragging = function() { return this._dragging }, this.isPinching = function() { return this._pinching } } function Zf(t) { if (!(Ie(t) || t.target && t.target.draggable)) { var e = t.offsetX, n = t.offsetY; this.pointerChecker && this.pointerChecker(t, e, n) && (this._x = e, this._y = n, this._dragging = !0) } } function Xf(t) { if (this._dragging && $f("moveOnMouseMove", t, this._opt) && "pinch" !== t.gestureEvent && !Wf(this._zr, "globalPan")) { var e = t.offsetX, n = t.offsetY, i = this._x, r = this._y, o = e - i, a = n - r; this._x = e, this._y = n, this._opt.preventDefaultMouseMove && Wp(t.event), Kf(this, "pan", "moveOnMouseMove", t, { dx: o, dy: a, oldX: i, oldY: r, newX: e, newY: n }) } } function Yf(t) { Ie(t) || (this._dragging = !1) } function Uf(t) { var e = $f("zoomOnMouseWheel", t, this._opt), n = $f("moveOnMouseWheel", t, this._opt), i = t.wheelDelta, r = Math.abs(i), o = t.offsetX, a = t.offsetY; if (0 !== i && (e || n)) { if (e) { var s = r > 3 ? 1.4 : r > 1 ? 1.2 : 1.1, l = i > 0 ? s : 1 / s; qf(this, "zoom", "zoomOnMouseWheel", t, { scale: l, originX: o, originY: a }) } if (n) { var u = Math.abs(i), h = (i > 0 ? 1 : -1) * (u > 3 ? .4 : u > 1 ? .15 : .05); qf(this, "scrollMove", "moveOnMouseWheel", t, { scrollDelta: h, originX: o, originY: a }) } } } function jf(t) { if (!Wf(this._zr, "globalPan")) { var e = t.pinchScale > 1 ? 1.1 : 1 / 1.1; qf(this, "zoom", null, t, { scale: e, originX: t.pinchX, originY: t.pinchY }) } } function qf(t, e, n, i, r) { t.pointerChecker && t.pointerChecker(i, r.originX, r.originY) && (Wp(i.event), Kf(t, e, n, i, r)) } function Kf(t, e, n, i, r) { r.isAvailableBehavior = y($f, null, n, i), t.trigger(e, r) } function $f(t, e, n) { var i = n[t]; return !t || i && (!b(i) || e.event[i + "Key"]) } function Qf(t, e) { var n = ep(t), i = e.dataZoomId, r = e.coordId; f(n, function(t) { var n = t.dataZoomInfos; n[i] && u(e.allCoordIds, r) < 0 && (delete n[i], t.count--) }), ip(n); var o = n[r]; o || (o = n[r] = { coordId: r, dataZoomInfos: {}, count: 0 }, o.controller = np(t, o), o.dispatchAction = x(rp, t)), !o.dataZoomInfos[i] && o.count++, o .dataZoomInfos[i] = e; var a = op(o.dataZoomInfos); o.controller.enable(a.controlType, a.opt), o.controller.setPointerChecker(e.containsPoint), vl(o, "dispatchAction", e.dataZoomModel.get("throttle", !0), "fixRate") } function Jf(t, e) { var n = ep(t); f(n, function(t) { t.controller.dispose(); var n = t.dataZoomInfos; n[e] && (delete n[e], t.count--) }), ip(n) } function tp(t) { return t.type + "\x00_" + t.id } function ep(t) { var e = t.getZr(); return e[pM] || (e[pM] = {}) } function np(t, e) { var n = new Gf(t.getZr()); return f(["pan", "zoom", "scrollMove"], function(t) { n.on(t, function(n) { var i = []; f(e.dataZoomInfos, function(r) { if (n.isAvailableBehavior(r.dataZoomModel.option)) { var o = (r.getRange || {})[t], a = o && o(e.controller, n); !r.dataZoomModel.get("disabled", !0) && a && i.push({ dataZoomId: r.dataZoomId, start: a[0], end: a[1] }) } }), i.length && e.dispatchAction(i) }) }), n } function ip(t) { f(t, function(e, n) { e.count || (e.controller.dispose(), delete t[n]) }) } function rp(t, e) { t.dispatchAction({ type: "dataZoom", batch: e }) } function op(t) { var e, n = "type_", i = { type_true: 2, type_move: 1, type_false: 0, type_undefined: -1 }, r = !0; return f(t, function(t) { var o = t.dataZoomModel, a = o.get("disabled", !0) ? !1 : o.get("zoomLock", !0) ? "move" : !0; i[n + a] > i[n + e] && (e = a), r &= o.get("preventDefaultMouseMove", !0) }), { controlType: e, opt: { zoomOnMouseWheel: !0, moveOnMouseMove: !0, moveOnMouseWheel: !0, preventDefaultMouseMove: !!r } } } function ap(t) { return function(e, n, i, r) { var o = this._range, a = o.slice(), s = e.axisModels[0]; if (s) { var l = t(a, s, e, n, i, r); return YS(l, a, [0, 100], "all"), this._range = a, o[0] !== a[0] || o[1] !== a[1] ? a : void 0 } } } var sp; "undefined" != typeof window ? sp = window.__DEV__ : "undefined" != typeof global && (sp = global.__DEV__), "undefined" == typeof sp && (sp = !0); var lp = sp, up = 2311, hp = function() { return up++ }, cp = {}; cp = "object" == typeof wx && "function" == typeof wx.getSystemInfoSync ? { browser: {}, os: {}, node: !1, wxa: !0, canvasSupported: !0, svgSupported: !1, touchEventsSupported: !0, domSupported: !1 } : "undefined" == typeof document && "undefined" != typeof self ? { browser: {}, os: {}, node: !1, worker: !0, canvasSupported: !0, domSupported: !1 } : "undefined" == typeof navigator ? { browser: {}, os: {}, node: !0, worker: !1, canvasSupported: !0, svgSupported: !0, domSupported: !1 } : e(navigator.userAgent); var dp = cp, fp = { "[object Function]": 1, "[object RegExp]": 1, "[object Date]": 1, "[object Error]": 1, "[object CanvasGradient]": 1, "[object CanvasPattern]": 1, "[object Image]": 1, "[object Canvas]": 1 }, pp = { "[object Int8Array]": 1, "[object Uint8Array]": 1, "[object Uint8ClampedArray]": 1, "[object Int16Array]": 1, "[object Uint16Array]": 1, "[object Int32Array]": 1, "[object Uint32Array]": 1, "[object Float32Array]": 1, "[object Float64Array]": 1 }, gp = Object.prototype.toString, vp = Array.prototype, mp = vp.forEach, yp = vp.filter, xp = vp.slice, _p = vp.map, wp = vp.reduce, bp = {}, Sp = function() { return bp.createCanvas() }; bp.createCanvas = function() { return document.createElement("canvas") }; var Mp, Ip = "__ec_primitive__"; R.prototype = { constructor: R, get: function(t) { return this.data.hasOwnProperty(t) ? this.data[t] : null }, set: function(t, e) { return this.data[t] = e }, each: function(t, e) { void 0 !== e && (t = y(t, e)); for (var n in this.data) this.data.hasOwnProperty(n) && t(this.data[n], n) }, removeKey: function(t) { delete this.data[t] } }; var Cp = (Object.freeze || Object)({ $override: n, clone: i, merge: r, mergeAll: o, extend: a, defaults: s, createCanvas: Sp, getContext: l, indexOf: u, inherits: h, mixin: c, isArrayLike: d, each: f, map: p, reduce: g, filter: v, find: m, bind: y, curry: x, isArray: _, isFunction: w, isString: b, isObject: S, isBuiltInObject: M, isTypedArray: I, isDom: C, eqNaN: T, retrieve: A, retrieve2: D, retrieve3: k, slice: P, normalizeCssArray: O, assert: L, trim: z, setAsPrimitive: E, isPrimitive: B, createHashMap: N, concatArray: F, noop: V }), Tp = "undefined" == typeof Float32Array ? Array : Float32Array, Ap = j, Dp = q, kp = ee, Pp = ne, Op = (Object.freeze || Object)({ create: W, copy: H, clone: G, set: Z, add: X, scaleAndAdd: Y, sub: U, len: j, length: Ap, lenSquare: q, lengthSquare: Dp, mul: K, div: $, dot: Q, scale: J, normalize: te, distance: ee, dist: kp, distanceSquare: ne, distSquare: Pp, negate: ie, lerp: re, applyTransform: oe, min: ae, max: se }); le.prototype = { constructor: le, _dragStart: function(t) { for (var e = t.target; e && !e.draggable;) e = e.parent; e && (this._draggingTarget = e, e.dragging = !0, this._x = t.offsetX, this._y = t.offsetY, this .dispatchToElement(ue(e, t), "dragstart", t.event)) }, _drag: function(t) { var e = this._draggingTarget; if (e) { var n = t.offsetX, i = t.offsetY, r = n - this._x, o = i - this._y; this._x = n, this._y = i, e.drift(r, o, t), this.dispatchToElement(ue(e, t), "drag", t .event); var a = this.findHover(n, i, e).target, s = this._dropTarget; this._dropTarget = a, e !== a && (s && a !== s && this.dispatchToElement(ue(s, t), "dragleave", t.event), a && a !== s && this.dispatchToElement(ue(a, t), "dragenter", t.event)) } }, _dragEnd: function(t) { var e = this._draggingTarget; e && (e.dragging = !1), this.dispatchToElement(ue(e, t), "dragend", t.event), this ._dropTarget && this.dispatchToElement(ue(this._dropTarget, t), "drop", t.event), this ._draggingTarget = null, this._dropTarget = null } }; var Lp = Array.prototype.slice, zp = function(t) { this._$handlers = {}, this._$eventProcessor = t }; zp.prototype = { constructor: zp, one: function(t, e, n, i) { return ce(this, t, e, n, i, !0) }, on: function(t, e, n, i) { return ce(this, t, e, n, i, !1) }, isSilent: function(t) { var e = this._$handlers; return !e[t] || !e[t].length }, off: function(t, e) { var n = this._$handlers; if (!t) return this._$handlers = {}, this; if (e) { if (n[t]) { for (var i = [], r = 0, o = n[t].length; o > r; r++) n[t][r].h !== e && i.push(n[t][r]); n[t] = i } n[t] && 0 === n[t].length && delete n[t] } else delete n[t]; return this }, trigger: function(t) { var e = this._$handlers[t], n = this._$eventProcessor; if (e) { var i = arguments, r = i.length; r > 3 && (i = Lp.call(i, 1)); for (var o = e.length, a = 0; o > a;) { var s = e[a]; if (n && n.filter && null != s.query && !n.filter(t, s.query)) a++; else { switch (r) { case 1: s.h.call(s.ctx); break; case 2: s.h.call(s.ctx, i[1]); break; case 3: s.h.call(s.ctx, i[1], i[2]); break; default: s.h.apply(s.ctx, i) } s.one ? (e.splice(a, 1), o--) : a++ } } } return n && n.afterTrigger && n.afterTrigger(t), this }, triggerWithContext: function(t) { var e = this._$handlers[t], n = this._$eventProcessor; if (e) { var i = arguments, r = i.length; r > 4 && (i = Lp.call(i, 1, i.length - 1)); for (var o = i[i.length - 1], a = e.length, s = 0; a > s;) { var l = e[s]; if (n && n.filter && null != l.query && !n.filter(t, l.query)) s++; else { switch (r) { case 1: l.h.call(o); break; case 2: l.h.call(o, i[1]); break; case 3: l.h.call(o, i[1], i[2]); break; default: l.h.apply(o, i) } l.one ? (e.splice(s, 1), a--) : s++ } } } return n && n.afterTrigger && n.afterTrigger(t), this } }; var Ep = Math.log(2), Bp = "___zrEVENTSAVED", Rp = [], Np = "undefined" != typeof window && !!window.addEventListener, Fp = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, Vp = [], Wp = Np ? function(t) { t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0 } : function(t) { t.returnValue = !1, t.cancelBubble = !0 }, Hp = function() { this._track = [] }; Hp.prototype = { constructor: Hp, recognize: function(t, e, n) { return this._doTrack(t, e, n), this._recognize(t) }, clear: function() { return this._track.length = 0, this }, _doTrack: function(t, e, n) { var i = t.touches; if (i) { for (var r = { points: [], touches: [], target: e, event: t }, o = 0, a = i.length; a > o; o++) { var s = i[o], l = xe(n, s, {}); r.points.push([l.zrX, l.zrY]), r.touches.push(s) } this._track.push(r) } }, _recognize: function(t) { for (var e in Gp) if (Gp.hasOwnProperty(e)) { var n = Gp[e](this._track, t); if (n) return n } } }; var Gp = { pinch: function(t, e) { var n = t.length; if (n) { var i = (t[n - 1] || {}).points, r = (t[n - 2] || {}).points || i; if (r && r.length > 1 && i && i.length > 1) { var o = Ce(i) / Ce(r); !isFinite(o) && (o = 1), e.pinchScale = o; var a = Te(i); return e.pinchX = a[0], e.pinchY = a[1], { type: "pinch", target: t[0].target, event: e } } } } }, Zp = "silent"; ke.prototype.dispose = function() {}; var Xp = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"], Yp = function(t, e, n, i) { zp.call(this), this.storage = t, this.painter = e, this.painterRoot = i, n = n || new ke, this.proxy = null, this._hovered = {}, this._lastTouchMoment, this._lastX, this._lastY, this._gestureMgr, le .call(this), this.setHandlerProxy(n) }; Yp.prototype = { constructor: Yp, setHandlerProxy: function(t) { this.proxy && this.proxy.dispose(), t && (f(Xp, function(e) { t.on && t.on(e, this[e], this) }, this), t.handler = this), this.proxy = t }, mousemove: function(t) { var e = t.zrX, n = t.zrY, i = Oe(this, e, n), r = this._hovered, o = r.target; o && !o.__zr && (r = this.findHover(r.x, r.y), o = r.target); var a = this._hovered = i ? { x: e, y: n } : this.findHover(e, n), s = a.target, l = this.proxy; l.setCursor && l.setCursor(s ? s.cursor : "default"), o && s !== o && this.dispatchToElement(r, "mouseout", t), this.dispatchToElement(a, "mousemove", t), s && s !== o && this .dispatchToElement(a, "mouseover", t) }, mouseout: function(t) { var e = t.zrEventControl, n = t.zrIsToLocalDOM; "only_globalout" !== e && this.dispatchToElement(this._hovered, "mouseout", t), "no_globalout" !== e && !n && this.trigger("globalout", { type: "globalout", event: t }) }, resize: function() { this._hovered = {} }, dispatch: function(t, e) { var n = this[t]; n && n.call(this, e) }, dispose: function() { this.proxy.dispose(), this.storage = this.proxy = this.painter = null }, setCursorStyle: function(t) { var e = this.proxy; e.setCursor && e.setCursor(t) }, dispatchToElement: function(t, e, n) { t = t || {}; var i = t.target; if (!i || !i.silent) { for (var r = "on" + e, o = Ae(e, t, n); i && (i[r] && (o.cancelBubble = i[r].call(i, o)), i .trigger(e, o), i = i.parent, !o.cancelBubble);); o.cancelBubble || (this.trigger(e, o), this.painter && this.painter.eachOtherLayer(function( t) { "function" == typeof t[r] && t[r].call(t, o), t.trigger && t.trigger(e, o) })) } }, findHover: function(t, e, n) { for (var i = this.storage.getDisplayList(), r = { x: t, y: e }, o = i.length - 1; o >= 0; o--) { var a; if (i[o] !== n && !i[o].ignore && (a = Pe(i[o], t, e)) && (!r.topTarget && (r.topTarget = i[ o]), a !== Zp)) { r.target = i[o]; break } } return r }, processGesture: function(t, e) { this._gestureMgr || (this._gestureMgr = new Hp); var n = this._gestureMgr; "start" === e && n.clear(); var i = n.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this.proxy.dom); if ("end" === e && n.clear(), i) { var r = i.type; t.gestureEvent = r, this.dispatchToElement({ target: i.target }, r, i.event) } } }, f(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(t) { Yp.prototype[t] = function(e) { var n, i, r = e.zrX, o = e.zrY, a = Oe(this, r, o); if ("mouseup" === t && a || (n = this.findHover(r, o), i = n.target), "mousedown" === t) this._downEl = i, this._downPoint = [e.zrX, e.zrY], this._upEl = i; else if ("mouseup" === t) this._upEl = i; else if ("click" === t) { if (this._downEl !== this._upEl || !this._downPoint || kp(this._downPoint, [e.zrX, e .zrY]) > 4) return; this._downPoint = null } this.dispatchToElement(n, t, e) } }), c(Yp, zp), c(Yp, le); var Up = "undefined" == typeof Float32Array ? Array : Float32Array, jp = (Object.freeze || Object)({ create: Le, identity: ze, copy: Ee, mul: Be, translate: Re, rotate: Ne, scale: Fe, invert: Ve, clone: We }), qp = ze, Kp = 5e-5, $p = function(t) { t = t || {}, t.position || (this.position = [0, 0]), null == t.rotation && (this.rotation = 0), t .scale || (this.scale = [1, 1]), this.origin = this.origin || null }, Qp = $p.prototype; Qp.transform = null, Qp.needLocalTransform = function() { return He(this.rotation) || He(this.position[0]) || He(this.position[1]) || He(this.scale[0] - 1) || He( this.scale[1] - 1) }; var Jp = []; Qp.updateTransform = function() { var t = this.parent, e = t && t.transform, n = this.needLocalTransform(), i = this.transform; if (!n && !e) return void(i && qp(i)); i = i || Le(), n ? this.getLocalTransform(i) : qp(i), e && (n ? Be(i, t.transform, i) : Ee(i, t .transform)), this.transform = i; var r = this.globalScaleRatio; if (null != r && 1 !== r) { this.getGlobalScale(Jp); var o = Jp[0] < 0 ? -1 : 1, a = Jp[1] < 0 ? -1 : 1, s = ((Jp[0] - o) * r + o) / Jp[0] || 0, l = ((Jp[1] - a) * r + a) / Jp[1] || 0; i[0] *= s, i[1] *= s, i[2] *= l, i[3] *= l } this.invTransform = this.invTransform || Le(), Ve(this.invTransform, i) }, Qp.getLocalTransform = function(t) { return $p.getLocalTransform(this, t) }, Qp.setTransform = function(t) { var e = this.transform, n = t.dpr || 1; e ? t.setTransform(n * e[0], n * e[1], n * e[2], n * e[3], n * e[4], n * e[5]) : t.setTransform(n, 0, 0, n, 0, 0) }, Qp.restoreTransform = function(t) { var e = t.dpr || 1; t.setTransform(e, 0, 0, e, 0, 0) }; var tg = [], eg = Le(); Qp.setLocalTransform = function(t) { if (t) { var e = t[0] * t[0] + t[1] * t[1], n = t[2] * t[2] + t[3] * t[3], i = this.position, r = this.scale; He(e - 1) && (e = Math.sqrt(e)), He(n - 1) && (n = Math.sqrt(n)), t[0] < 0 && (e = -e), t[3] < 0 && (n = -n), i[0] = t[4], i[1] = t[5], r[0] = e, r[1] = n, this.rotation = Math.atan2(-t[1] / n, t[ 0] / e) } }, Qp.decomposeTransform = function() { if (this.transform) { var t = this.parent, e = this.transform; t && t.transform && (Be(tg, t.invTransform, e), e = tg); var n = this.origin; n && (n[0] || n[1]) && (eg[4] = n[0], eg[5] = n[1], Be(tg, e, eg), tg[4] -= n[0], tg[5] -= n[1], e = tg), this.setLocalTransform(e) } }, Qp.getGlobalScale = function(t) { var e = this.transform; return t = t || [], e ? (t[0] = Math.sqrt(e[0] * e[0] + e[1] * e[1]), t[1] = Math.sqrt(e[2] * e[2] + e[ 3] * e[3]), e[0] < 0 && (t[0] = -t[0]), e[3] < 0 && (t[1] = -t[1]), t) : (t[0] = 1, t[1] = 1, t) }, Qp.transformCoordToLocal = function(t, e) { var n = [t, e], i = this.invTransform; return i && oe(n, n, i), n }, Qp.transformCoordToGlobal = function(t, e) { var n = [t, e], i = this.transform; return i && oe(n, n, i), n }, $p.getLocalTransform = function(t, e) { e = e || [], qp(e); var n = t.origin, i = t.scale || [1, 1], r = t.rotation || 0, o = t.position || [0, 0]; return n && (e[4] -= n[0], e[5] -= n[1]), Fe(e, e, i), r && Ne(e, e, r), n && (e[4] += n[0], e[5] += n[ 1]), e[4] += o[0], e[5] += o[1], e }; var ng = { linear: function(t) { return t }, quadraticIn: function(t) { return t * t }, quadraticOut: function(t) { return t * (2 - t) }, quadraticInOut: function(t) { return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1) }, cubicIn: function(t) { return t * t * t }, cubicOut: function(t) { return --t * t * t + 1 }, cubicInOut: function(t) { return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2) }, quarticIn: function(t) { return t * t * t * t }, quarticOut: function(t) { return 1 - --t * t * t * t }, quarticInOut: function(t) { return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2) }, quinticIn: function(t) { return t * t * t * t * t }, quinticOut: function(t) { return --t * t * t * t * t + 1 }, quinticInOut: function(t) { return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2) }, sinusoidalIn: function(t) { return 1 - Math.cos(t * Math.PI / 2) }, sinusoidalOut: function(t) { return Math.sin(t * Math.PI / 2) }, sinusoidalInOut: function(t) { return .5 * (1 - Math.cos(Math.PI * t)) }, exponentialIn: function(t) { return 0 === t ? 0 : Math.pow(1024, t - 1) }, exponentialOut: function(t) { return 1 === t ? 1 : 1 - Math.pow(2, -10 * t) }, exponentialInOut: function(t) { return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (-Math.pow( 2, -10 * (t - 1)) + 2) }, circularIn: function(t) { return 1 - Math.sqrt(1 - t * t) }, circularOut: function(t) { return Math.sqrt(1 - --t * t) }, circularInOut: function(t) { return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1) }, elasticIn: function(t) { var e, n = .1, i = .4; return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), -(n * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i))) }, elasticOut: function(t) { var e, n = .1, i = .4; return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), n * Math.pow(2, -10 * t) * Math.sin(2 * (t - e) * Math.PI / i) + 1) }, elasticInOut: function(t) { var e, n = .1, i = .4; return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), (t *= 2) < 1 ? -.5 * n * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * ( t - e) * Math.PI / i) : n * Math.pow(2, -10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i) * .5 + 1) }, backIn: function(t) { var e = 1.70158; return t * t * ((e + 1) * t - e) }, backOut: function(t) { var e = 1.70158; return --t * t * ((e + 1) * t + e) + 1 }, backInOut: function(t) { var e = 2.5949095; return (t *= 2) < 1 ? .5 * t * t * ((e + 1) * t - e) : .5 * ((t -= 2) * t * ((e + 1) * t + e) + 2) }, bounceIn: function(t) { return 1 - ng.bounceOut(1 - t) }, bounceOut: function(t) { return 1 / 2.75 > t ? 7.5625 * t * t : 2 / 2.75 > t ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : 2.5 / 2.75 > t ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375 }, bounceInOut: function(t) { return .5 > t ? .5 * ng.bounceIn(2 * t) : .5 * ng.bounceOut(2 * t - 1) + .5 } }; Ge.prototype = { constructor: Ge, step: function(t, e) { if (this._initialized || (this._startTime = t + this._delay, this._initialized = !0), this ._paused) return void(this._pausedTime += e); var n = (t - this._startTime - this._pausedTime) / this._life; if (!(0 > n)) { n = Math.min(n, 1); var i = this.easing, r = "string" == typeof i ? ng[i] : i, o = "function" == typeof r ? r(n) : n; return this.fire("frame", o), 1 === n ? this.loop ? (this.restart(t), "restart") : (this ._needsRemove = !0, "destroy") : null } }, restart: function(t) { var e = (t - this._startTime - this._pausedTime) % this._life; this._startTime = t - e + this.gap, this._pausedTime = 0, this._needsRemove = !1 }, fire: function(t, e) { t = "on" + t, this[t] && this[t](this._target, e) }, pause: function() { this._paused = !0 }, resume: function() { this._paused = !1 } }; var ig = function() { this.head = null, this.tail = null, this._len = 0 }, rg = ig.prototype; rg.insert = function(t) { var e = new og(t); return this.insertEntry(e), e }, rg.insertEntry = function(t) { this.head ? (this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t) : this.head = this .tail = t, this._len++ }, rg.remove = function(t) { var e = t.prev, n = t.next; e ? e.next = n : this.head = n, n ? n.prev = e : this.tail = e, t.next = t.prev = null, this._len-- }, rg.len = function() { return this._len }, rg.clear = function() { this.head = this.tail = null, this._len = 0 }; var og = function(t) { this.value = t, this.next, this.prev }, ag = function(t) { this._list = new ig, this._map = {}, this._maxSize = t || 10, this._lastRemovedEntry = null }, sg = ag.prototype; sg.put = function(t, e) { var n = this._list, i = this._map, r = null; if (null == i[t]) { var o = n.len(), a = this._lastRemovedEntry; if (o >= this._maxSize && o > 0) { var s = n.head; n.remove(s), delete i[s.key], r = s.value, this._lastRemovedEntry = s } a ? a.value = e : a = new og(e), a.key = t, n.insertEntry(a), i[t] = a } return r }, sg.get = function(t) { var e = this._map[t], n = this._list; return null != e ? (e !== n.tail && (n.remove(e), n.insertEntry(e)), e.value) : void 0 }, sg.clear = function() { this._list.clear(), this._map = {} }; var lg = { transparent: [0, 0, 0, 0], aliceblue: [240, 248, 255, 1], antiquewhite: [250, 235, 215, 1], aqua: [0, 255, 255, 1], aquamarine: [127, 255, 212, 1], azure: [240, 255, 255, 1], beige: [245, 245, 220, 1], bisque: [255, 228, 196, 1], black: [0, 0, 0, 1], blanchedalmond: [255, 235, 205, 1], blue: [0, 0, 255, 1], blueviolet: [138, 43, 226, 1], brown: [165, 42, 42, 1], burlywood: [222, 184, 135, 1], cadetblue: [95, 158, 160, 1], chartreuse: [127, 255, 0, 1], chocolate: [210, 105, 30, 1], coral: [255, 127, 80, 1], cornflowerblue: [100, 149, 237, 1], cornsilk: [255, 248, 220, 1], crimson: [220, 20, 60, 1], cyan: [0, 255, 255, 1], darkblue: [0, 0, 139, 1], darkcyan: [0, 139, 139, 1], darkgoldenrod: [184, 134, 11, 1], darkgray: [169, 169, 169, 1], darkgreen: [0, 100, 0, 1], darkgrey: [169, 169, 169, 1], darkkhaki: [189, 183, 107, 1], darkmagenta: [139, 0, 139, 1], darkolivegreen: [85, 107, 47, 1], darkorange: [255, 140, 0, 1], darkorchid: [153, 50, 204, 1], darkred: [139, 0, 0, 1], darksalmon: [233, 150, 122, 1], darkseagreen: [143, 188, 143, 1], darkslateblue: [72, 61, 139, 1], darkslategray: [47, 79, 79, 1], darkslategrey: [47, 79, 79, 1], darkturquoise: [0, 206, 209, 1], darkviolet: [148, 0, 211, 1], deeppink: [255, 20, 147, 1], deepskyblue: [0, 191, 255, 1], dimgray: [105, 105, 105, 1], dimgrey: [105, 105, 105, 1], dodgerblue: [30, 144, 255, 1], firebrick: [178, 34, 34, 1], floralwhite: [255, 250, 240, 1], forestgreen: [34, 139, 34, 1], fuchsia: [255, 0, 255, 1], gainsboro: [220, 220, 220, 1], ghostwhite: [248, 248, 255, 1], gold: [255, 215, 0, 1], goldenrod: [218, 165, 32, 1], gray: [128, 128, 128, 1], green: [0, 128, 0, 1], greenyellow: [173, 255, 47, 1], grey: [128, 128, 128, 1], honeydew: [240, 255, 240, 1], hotpink: [255, 105, 180, 1], indianred: [205, 92, 92, 1], indigo: [75, 0, 130, 1], ivory: [255, 255, 240, 1], khaki: [240, 230, 140, 1], lavender: [230, 230, 250, 1], lavenderblush: [255, 240, 245, 1], lawngreen: [124, 252, 0, 1], lemonchiffon: [255, 250, 205, 1], lightblue: [173, 216, 230, 1], lightcoral: [240, 128, 128, 1], lightcyan: [224, 255, 255, 1], lightgoldenrodyellow: [250, 250, 210, 1], lightgray: [211, 211, 211, 1], lightgreen: [144, 238, 144, 1], lightgrey: [211, 211, 211, 1], lightpink: [255, 182, 193, 1], lightsalmon: [255, 160, 122, 1], lightseagreen: [32, 178, 170, 1], lightskyblue: [135, 206, 250, 1], lightslategray: [119, 136, 153, 1], lightslategrey: [119, 136, 153, 1], lightsteelblue: [176, 196, 222, 1], lightyellow: [255, 255, 224, 1], lime: [0, 255, 0, 1], limegreen: [50, 205, 50, 1], linen: [250, 240, 230, 1], magenta: [255, 0, 255, 1], maroon: [128, 0, 0, 1], mediumaquamarine: [102, 205, 170, 1], mediumblue: [0, 0, 205, 1], mediumorchid: [186, 85, 211, 1], mediumpurple: [147, 112, 219, 1], mediumseagreen: [60, 179, 113, 1], mediumslateblue: [123, 104, 238, 1], mediumspringgreen: [0, 250, 154, 1], mediumturquoise: [72, 209, 204, 1], mediumvioletred: [199, 21, 133, 1], midnightblue: [25, 25, 112, 1], mintcream: [245, 255, 250, 1], mistyrose: [255, 228, 225, 1], moccasin: [255, 228, 181, 1], navajowhite: [255, 222, 173, 1], navy: [0, 0, 128, 1], oldlace: [253, 245, 230, 1], olive: [128, 128, 0, 1], olivedrab: [107, 142, 35, 1], orange: [255, 165, 0, 1], orangered: [255, 69, 0, 1], orchid: [218, 112, 214, 1], palegoldenrod: [238, 232, 170, 1], palegreen: [152, 251, 152, 1], paleturquoise: [175, 238, 238, 1], palevioletred: [219, 112, 147, 1], papayawhip: [255, 239, 213, 1], peachpuff: [255, 218, 185, 1], peru: [205, 133, 63, 1], pink: [255, 192, 203, 1], plum: [221, 160, 221, 1], powderblue: [176, 224, 230, 1], purple: [128, 0, 128, 1], red: [255, 0, 0, 1], rosybrown: [188, 143, 143, 1], royalblue: [65, 105, 225, 1], saddlebrown: [139, 69, 19, 1], salmon: [250, 128, 114, 1], sandybrown: [244, 164, 96, 1], seagreen: [46, 139, 87, 1], seashell: [255, 245, 238, 1], sienna: [160, 82, 45, 1], silver: [192, 192, 192, 1], skyblue: [135, 206, 235, 1], slateblue: [106, 90, 205, 1], slategray: [112, 128, 144, 1], slategrey: [112, 128, 144, 1], snow: [255, 250, 250, 1], springgreen: [0, 255, 127, 1], steelblue: [70, 130, 180, 1], tan: [210, 180, 140, 1], teal: [0, 128, 128, 1], thistle: [216, 191, 216, 1], tomato: [255, 99, 71, 1], turquoise: [64, 224, 208, 1], violet: [238, 130, 238, 1], wheat: [245, 222, 179, 1], white: [255, 255, 255, 1], whitesmoke: [245, 245, 245, 1], yellow: [255, 255, 0, 1], yellowgreen: [154, 205, 50, 1] }, ug = new ag(20), hg = null, cg = an, dg = sn, fg = (Object.freeze || Object)({ parse: tn, lift: rn, toHex: on, fastLerp: an, fastMapToColor: cg, lerp: sn, mapToColor: dg, modifyHSL: ln, modifyAlpha: un, stringify: hn }), pg = Array.prototype.slice, gg = function(t, e, n, i) { this._tracks = {}, this._target = t, this._loop = e || !1, this._getter = n || cn, this._setter = i || dn, this._clipCount = 0, this._delay = 0, this._doneList = [], this._onframeList = [], this ._clipList = [] }; gg.prototype = { when: function(t, e) { var n = this._tracks; for (var i in e) if (e.hasOwnProperty(i)) { if (!n[i]) { n[i] = []; var r = this._getter(this._target, i); if (null == r) continue; 0 !== t && n[i].push({ time: 0, value: _n(r) }) } n[i].push({ time: t, value: e[i] }) } return this }, during: function(t) { return this._onframeList.push(t), this }, pause: function() { for (var t = 0; t < this._clipList.length; t++) this._clipList[t].pause(); this._paused = !0 }, resume: function() { for (var t = 0; t < this._clipList.length; t++) this._clipList[t].resume(); this._paused = !1 }, isPaused: function() { return !!this._paused }, _doneCallback: function() { this._tracks = {}, this._clipList.length = 0; for (var t = this._doneList, e = t.length, n = 0; e > n; n++) t[n].call(this) }, start: function(t, e) { var n, i = this, r = 0, o = function() { r--, r || i._doneCallback() }; for (var a in this._tracks) if (this._tracks.hasOwnProperty(a)) { var s = Sn(this, t, o, this._tracks[a], a, e); s && (this._clipList.push(s), r++, this.animation && this.animation.addClip(s), n = s) } if (n) { var l = n.onframe; n.onframe = function(t, e) { l(t, e); for (var n = 0; n < i._onframeList.length; n++) i._onframeList[n](t, e) } } return r || this._doneCallback(), this }, stop: function(t) { for (var e = this._clipList, n = this.animation, i = 0; i < e.length; i++) { var r = e[i]; t && r.onframe(this._target, 1), n && n.removeClip(r) } e.length = 0 }, delay: function(t) { return this._delay = t, this }, done: function(t) { return t && this._doneList.push(t), this }, getClips: function() { return this._clipList } }; var vg = 1; "undefined" != typeof window && (vg = Math.max(window.devicePixelRatio || 1, 1)); var mg = 0, yg = vg, xg = function() {}; 1 === mg && (xg = console.error); var _g = xg, wg = function() { this.animators = [] }; wg.prototype = { constructor: wg, animate: function(t, e) { var n, i = !1, r = this, o = this.__zr; if (t) { var a = t.split("."), s = r; i = "shape" === a[0]; for (var l = 0, h = a.length; h > l; l++) s && (s = s[a[l]]); s && (n = s) } else n = r; if (!n) return void _g('Property "' + t + '" is not existed in element ' + r.id); var c = r.animators, d = new gg(n, e); return d.during(function() { r.dirty(i) }).done(function() { c.splice(u(c, d), 1) }), c.push(d), o && o.animation.addAnimator(d), d }, stopAnimation: function(t) { for (var e = this.animators, n = e.length, i = 0; n > i; i++) e[i].stop(t); return e.length = 0, this }, animateTo: function(t, e, n, i, r, o) { Mn(this, t, e, n, i, r, o) }, animateFrom: function(t, e, n, i, r, o) { Mn(this, t, e, n, i, r, o, !0) } }; var bg = function(t) { $p.call(this, t), zp.call(this, t), wg.call(this, t), this.id = t.id || hp() }; bg.prototype = { type: "element", name: "", __zr: null, ignore: !1, clipPath: null, isGroup: !1, drift: function(t, e) { switch (this.draggable) { case "horizontal": e = 0; break; case "vertical": t = 0 } var n = this.transform; n || (n = this.transform = [1, 0, 0, 1, 0, 0]), n[4] += t, n[5] += e, this.decomposeTransform(), this.dirty(!1) }, beforeUpdate: function() {}, afterUpdate: function() {}, update: function() { this.updateTransform() }, traverse: function() {}, attrKV: function(t, e) { if ("position" === t || "scale" === t || "origin" === t) { if (e) { var n = this[t]; n || (n = this[t] = []), n[0] = e[0], n[1] = e[1] } } else this[t] = e }, hide: function() { this.ignore = !0, this.__zr && this.__zr.refresh() }, show: function() { this.ignore = !1, this.__zr && this.__zr.refresh() }, attr: function(t, e) { if ("string" == typeof t) this.attrKV(t, e); else if (S(t)) for (var n in t) t.hasOwnProperty(n) && this.attrKV(n, t[n]); return this.dirty(!1), this }, setClipPath: function(t) { var e = this.__zr; e && t.addSelfToZr(e), this.clipPath && this.clipPath !== t && this.removeClipPath(), this .clipPath = t, t.__zr = e, t.__clipTarget = this, this.dirty(!1) }, removeClipPath: function() { var t = this.clipPath; t && (t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__clipTarget = null, this .clipPath = null, this.dirty(!1)) }, addSelfToZr: function(t) { this.__zr = t; var e = this.animators; if (e) for (var n = 0; n < e.length; n++) t.animation.addAnimator(e[n]); this.clipPath && this.clipPath.addSelfToZr(t) }, removeSelfFromZr: function(t) { this.__zr = null; var e = this.animators; if (e) for (var n = 0; n < e.length; n++) t.animation.removeAnimator(e[n]); this.clipPath && this.clipPath.removeSelfFromZr(t) } }, c(bg, wg), c(bg, $p), c(bg, zp); var Sg = oe, Mg = Math.min, Ig = Math.max; Tn.prototype = { constructor: Tn, union: function(t) { var e = Mg(t.x, this.x), n = Mg(t.y, this.y); this.width = Ig(t.x + t.width, this.x + this.width) - e, this.height = Ig(t.y + t.height, this .y + this.height) - n, this.x = e, this.y = n }, applyTransform: function() { var t = [], e = [], n = [], i = []; return function(r) { if (r) { t[0] = n[0] = this.x, t[1] = i[1] = this.y, e[0] = i[0] = this.x + this.width, e[ 1] = n[1] = this.y + this.height, Sg(t, t, r), Sg(e, e, r), Sg(n, n, r), Sg(i, i, r), this.x = Mg(t[0], e[0], n[0], i[0]), this.y = Mg(t[1], e[1], n[1], i[ 1]); var o = Ig(t[0], e[0], n[0], i[0]), a = Ig(t[1], e[1], n[1], i[1]); this.width = o - this.x, this.height = a - this.y } } }(), calculateTransform: function(t) { var e = this, n = t.width / e.width, i = t.height / e.height, r = Le(); return Re(r, r, [-e.x, -e.y]), Fe(r, r, [n, i]), Re(r, r, [t.x, t.y]), r }, intersect: function(t) { if (!t) return !1; t instanceof Tn || (t = Tn.create(t)); var e = this, n = e.x, i = e.x + e.width, r = e.y, o = e.y + e.height, a = t.x, s = t.x + t.width, l = t.y, u = t.y + t.height; return !(a > i || n > s || l > o || r > u) }, contain: function(t, e) { var n = this; return t >= n.x && t <= n.x + n.width && e >= n.y && e <= n.y + n.height }, clone: function() { return new Tn(this.x, this.y, this.width, this.height) }, copy: function(t) { this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height }, plain: function() { return { x: this.x, y: this.y, width: this.width, height: this.height } } }, Tn.create = function(t) { return new Tn(t.x, t.y, t.width, t.height) }; var Cg = function(t) { t = t || {}, bg.call(this, t); for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); this._children = [], this.__storage = null, this.__dirty = !0 }; Cg.prototype = { constructor: Cg, isGroup: !0, type: "group", silent: !1, children: function() { return this._children.slice() }, childAt: function(t) { return this._children[t] }, childOfName: function(t) { for (var e = this._children, n = 0; n < e.length; n++) if (e[n].name === t) return e[n] }, childCount: function() { return this._children.length }, add: function(t) { return t && t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), this }, addBefore: function(t, e) { if (t && t !== this && t.parent !== this && e && e.parent === this) { var n = this._children, i = n.indexOf(e); i >= 0 && (n.splice(i, 0, t), this._doAdd(t)) } return this }, _doAdd: function(t) { t.parent && t.parent.remove(t), t.parent = this; var e = this.__storage, n = this.__zr; e && e !== t.__storage && (e.addToStorage(t), t instanceof Cg && t.addChildrenToStorage(e)), n && n.refresh() }, remove: function(t) { var e = this.__zr, n = this.__storage, i = this._children, r = u(i, t); return 0 > r ? this : (i.splice(r, 1), t.parent = null, n && (n.delFromStorage(t), t instanceof Cg && t.delChildrenFromStorage(n)), e && e.refresh(), this) }, removeAll: function() { var t, e, n = this._children, i = this.__storage; for (e = 0; e < n.length; e++) t = n[e], i && (i.delFromStorage(t), t instanceof Cg && t .delChildrenFromStorage(i)), t.parent = null; return n.length = 0, this }, eachChild: function(t, e) { for (var n = this._children, i = 0; i < n.length; i++) { var r = n[i]; t.call(e, r, i) } return this }, traverse: function(t, e) { for (var n = 0; n < this._children.length; n++) { var i = this._children[n]; t.call(e, i), "group" === i.type && i.traverse(t, e) } return this }, addChildrenToStorage: function(t) { for (var e = 0; e < this._children.length; e++) { var n = this._children[e]; t.addToStorage(n), n instanceof Cg && n.addChildrenToStorage(t) } }, delChildrenFromStorage: function(t) { for (var e = 0; e < this._children.length; e++) { var n = this._children[e]; t.delFromStorage(n), n instanceof Cg && n.delChildrenFromStorage(t) } }, dirty: function() { return this.__dirty = !0, this.__zr && this.__zr.refresh(), this }, getBoundingRect: function(t) { for (var e = null, n = new Tn(0, 0, 0, 0), i = t || this._children, r = [], o = 0; o < i .length; o++) { var a = i[o]; if (!a.ignore && !a.invisible) { var s = a.getBoundingRect(), l = a.getLocalTransform(r); l ? (n.copy(s), n.applyTransform(l), e = e || n.clone(), e.union(n)) : (e = e || s .clone(), e.union(s)) } } return e || n } }, h(Cg, bg); var Tg = 32, Ag = 7, Dg = function() { this._roots = [], this._displayList = [], this._displayListLen = 0 }; Dg.prototype = { constructor: Dg, traverse: function(t, e) { for (var n = 0; n < this._roots.length; n++) this._roots[n].traverse(t, e) }, getDisplayList: function(t, e) { return e = e || !1, t && this.updateDisplayList(e), this._displayList }, updateDisplayList: function(t) { this._displayListLen = 0; for (var e = this._roots, n = this._displayList, i = 0, r = e.length; r > i; i++) this ._updateAndAddDisplayable(e[i], null, t); n.length = this._displayListLen, dp.canvasSupported && En(n, Bn) }, _updateAndAddDisplayable: function(t, e, n) { if (!t.ignore || n) { t.beforeUpdate(), t.__dirty && t.update(), t.afterUpdate(); var i = t.clipPath; if (i) { e = e ? e.slice() : []; for (var r = i, o = t; r;) r.parent = o, r.updateTransform(), e.push(r), o = r, r = r .clipPath } if (t.isGroup) { for (var a = t._children, s = 0; s < a.length; s++) { var l = a[s]; t.__dirty && (l.__dirty = !0), this._updateAndAddDisplayable(l, e, n) } t.__dirty = !1 } else t.__clipPaths = e, this._displayList[this._displayListLen++] = t } }, addRoot: function(t) { t.__storage !== this && (t instanceof Cg && t.addChildrenToStorage(this), this.addToStorage(t), this._roots.push(t)) }, delRoot: function(t) { if (null == t) { for (var e = 0; e < this._roots.length; e++) { var n = this._roots[e]; n instanceof Cg && n.delChildrenFromStorage(this) } return this._roots = [], this._displayList = [], void(this._displayListLen = 0) } if (t instanceof Array) for (var e = 0, i = t.length; i > e; e++) this.delRoot(t[e]); else { var r = u(this._roots, t); r >= 0 && (this.delFromStorage(t), this._roots.splice(r, 1), t instanceof Cg && t .delChildrenFromStorage(this)) } }, addToStorage: function(t) { return t && (t.__storage = this, t.dirty(!1)), this }, delFromStorage: function(t) { return t && (t.__storage = null), this }, dispose: function() { this._renderList = this._roots = null }, displayableSortFunc: Bn }; var kg = { shadowBlur: 1, shadowOffsetX: 1, shadowOffsetY: 1, textShadowBlur: 1, textShadowOffsetX: 1, textShadowOffsetY: 1, textBoxShadowBlur: 1, textBoxShadowOffsetX: 1, textBoxShadowOffsetY: 1 }, Pg = function(t, e, n) { return kg.hasOwnProperty(e) ? n *= t.dpr : n }, Og = { NONE: 0, STYLE_BIND: 1, PLAIN_TEXT: 2 }, Lg = 9, zg = [ ["shadowBlur", 0], ["shadowOffsetX", 0], ["shadowOffsetY", 0], ["shadowColor", "#000"], ["lineCap", "butt"], ["lineJoin", "miter"], ["miterLimit", 10] ], Eg = function(t) { this.extendFrom(t, !1) }; Eg.prototype = { constructor: Eg, fill: "#000", stroke: null, opacity: 1, fillOpacity: null, strokeOpacity: null, lineDash: null, lineDashOffset: 0, shadowBlur: 0, shadowOffsetX: 0, shadowOffsetY: 0, lineWidth: 1, strokeNoScale: !1, text: null, font: null, textFont: null, fontStyle: null, fontWeight: null, fontSize: null, fontFamily: null, textTag: null, textFill: "#000", textStroke: null, textWidth: null, textHeight: null, textStrokeWidth: 0, textLineHeight: null, textPosition: "inside", textRect: null, textOffset: null, textAlign: null, textVerticalAlign: null, textDistance: 5, textShadowColor: "transparent", textShadowBlur: 0, textShadowOffsetX: 0, textShadowOffsetY: 0, textBoxShadowColor: "transparent", textBoxShadowBlur: 0, textBoxShadowOffsetX: 0, textBoxShadowOffsetY: 0, transformText: !1, textRotation: 0, textOrigin: null, textBackgroundColor: null, textBorderColor: null, textBorderWidth: 0, textBorderRadius: 0, textPadding: null, rich: null, truncate: null, blend: null, bind: function(t, e, n) { var i = this, r = n && n.style, o = !r || t.__attrCachedBy !== Og.STYLE_BIND; t.__attrCachedBy = Og.STYLE_BIND; for (var a = 0; a < zg.length; a++) { var s = zg[a], l = s[0]; (o || i[l] !== r[l]) && (t[l] = Pg(t, l, i[l] || s[1])) } if ((o || i.fill !== r.fill) && (t.fillStyle = i.fill), (o || i.stroke !== r.stroke) && (t .strokeStyle = i.stroke), (o || i.opacity !== r.opacity) && (t.globalAlpha = null == i .opacity ? 1 : i.opacity), (o || i.blend !== r.blend) && (t.globalCompositeOperation = i .blend || "source-over"), this.hasStroke()) { var u = i.lineWidth; t.lineWidth = u / (this.strokeNoScale && e && e.getLineScale ? e.getLineScale() : 1) } }, hasFill: function() { var t = this.fill; return null != t && "none" !== t }, hasStroke: function() { var t = this.stroke; return null != t && "none" !== t && this.lineWidth > 0 }, extendFrom: function(t, e) { if (t) for (var n in t) !t.hasOwnProperty(n) || e !== !0 && (e === !1 ? this.hasOwnProperty(n) : null == t[n]) || (this[n] = t[n]) }, set: function(t, e) { "string" == typeof t ? this[t] = e : this.extendFrom(t, !0) }, clone: function() { var t = new this.constructor; return t.extendFrom(this, !0), t }, getGradient: function(t, e, n) { for (var i = "radial" === e.type ? Nn : Rn, r = i(t, e, n), o = e.colorStops, a = 0; a < o .length; a++) r.addColorStop(o[a].offset, o[a].color); return r } }; for (var Bg = Eg.prototype, Rg = 0; Rg < zg.length; Rg++) { var Ng = zg[Rg]; Ng[0] in Bg || (Bg[Ng[0]] = Ng[1]) } Eg.getGradient = Bg.getGradient; var Fg = function(t, e) { this.image = t, this.repeat = e, this.type = "pattern" }; Fg.prototype.getCanvasPattern = function(t) { return t.createPattern(this.image, this.repeat || "repeat") }; var Vg = function(t, e, n) { var i; n = n || yg, "string" == typeof t ? i = Vn(t, e, n) : S(t) && (i = t, t = i.id), this.id = t, this.dom = i; var r = i.style; r && (i.onselectstart = Fn, r["-webkit-user-select"] = "none", r["user-select"] = "none", r[ "-webkit-touch-callout"] = "none", r["-webkit-tap-highlight-color"] = "rgba(0,0,0,0)", r .padding = 0, r.margin = 0, r["border-width"] = 0), this.domBack = null, this.ctxBack = null, this.painter = e, this.config = null, this.clearColor = 0, this.motionBlur = !1, this .lastFrameAlpha = .7, this.dpr = n }; Vg.prototype = { constructor: Vg, __dirty: !0, __used: !1, __drawIndex: 0, __startIndex: 0, __endIndex: 0, incremental: !1, getElementCount: function() { return this.__endIndex - this.__startIndex }, initContext: function() { this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr }, createBackBuffer: function() { var t = this.dpr; this.domBack = Vn("back-" + this.id, this.painter, t), this.ctxBack = this.domBack.getContext( "2d"), 1 !== t && this.ctxBack.scale(t, t) }, resize: function(t, e) { var n = this.dpr, i = this.dom, r = i.style, o = this.domBack; r && (r.width = t + "px", r.height = e + "px"), i.width = t * n, i.height = e * n, o && (o .width = t * n, o.height = e * n, 1 !== n && this.ctxBack.scale(n, n)) }, clear: function(t, e) { var n = this.dom, i = this.ctx, r = n.width, o = n.height, e = e || this.clearColor, a = this.motionBlur && !t, s = this.lastFrameAlpha, l = this.dpr; if (a && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", this.ctxBack.drawImage(n, 0, 0, r / l, o / l)), i.clearRect(0, 0, r, o), e && "transparent" !== e) { var u; e.colorStops ? (u = e.__canvasGradient || Eg.getGradient(i, e, { x: 0, y: 0, width: r, height: o }), e.__canvasGradient = u) : e.image && (u = Fg.prototype.getCanvasPattern.call(e, i)), i.save(), i.fillStyle = u || e, i.fillRect(0, 0, r, o), i.restore() } if (a) { var h = this.domBack; i.save(), i.globalAlpha = s, i.drawImage(h, 0, 0, r, o), i.restore() } } }; var Wg = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind( window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window .mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(t) { setTimeout(t, 16) }, Hg = new ag(50), Gg = {}, Zg = 0, Xg = 5e3, Yg = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g, Ug = "12px sans-serif", jg = {}; jg.measureText = function(t, e) { var n = l(); return n.font = e || Ug, n.measureText(t) }; var qg = Ug, Kg = { left: 1, right: 1, center: 1 }, $g = { top: 1, bottom: 1, middle: 1 }, Qg = [ ["textShadowBlur", "shadowBlur", 0], ["textShadowOffsetX", "shadowOffsetX", 0], ["textShadowOffsetY", "shadowOffsetY", 0], ["textShadowColor", "shadowColor", "transparent"] ], Jg = {}, tv = {}, ev = new Tn, nv = function() {}; nv.prototype = { constructor: nv, drawRectText: function(t, e) { var n = this.style; e = n.textRect || e, this.__dirty && ui(n, !0); var i = n.text; if (null != i && (i += ""), Ci(i, n)) { t.save(); var r = this.transform; n.transformText ? this.setTransform(t) : r && (ev.copy(e), ev.applyTransform(r), e = ev), ci(this, t, i, n, e, Lg), t.restore() } } }, Ti.prototype = { constructor: Ti, type: "displayable", __dirty: !0, invisible: !1, z: 0, z2: 0, zlevel: 0, draggable: !1, dragging: !1, silent: !1, culling: !1, cursor: "pointer", rectHover: !1, progressive: !1, incremental: !1, globalScaleRatio: 1, beforeBrush: function() {}, afterBrush: function() {}, brush: function() {}, getBoundingRect: function() {}, contain: function(t, e) { return this.rectContain(t, e) }, traverse: function(t, e) { t.call(e, this) }, rectContain: function(t, e) { var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect(); return i.contain(n[0], n[1]) }, dirty: function() { this.__dirty = this.__dirtyText = !0, this._rect = null, this.__zr && this.__zr.refresh() }, animateStyle: function(t) { return this.animate("style", t) }, attrKV: function(t, e) { "style" !== t ? bg.prototype.attrKV.call(this, t, e) : this.style.set(e) }, setStyle: function(t, e) { return this.style.set(t, e), this.dirty(!1), this }, useStyle: function(t) { return this.style = new Eg(t, this), this.dirty(!1), this }, calculateTextPosition: null }, h(Ti, bg), c(Ti, nv), Ai.prototype = { constructor: Ai, type: "image", brush: function(t, e) { var n = this.style, i = n.image; n.bind(t, this, e); var r = this._image = Hn(i, this._image, this, this.onload); if (r && Zn(r)) { var o = n.x || 0, a = n.y || 0, s = n.width, l = n.height, u = r.width / r.height; if (null == s && null != l ? s = l * u : null == l && null != s ? l = s / u : null == s && null == l && (s = r.width, l = r.height), this.setTransform(t), n.sWidth && n.sHeight) { var h = n.sx || 0, c = n.sy || 0; t.drawImage(r, h, c, n.sWidth, n.sHeight, o, a, s, l) } else if (n.sx && n.sy) { var h = n.sx, c = n.sy, d = s - h, f = l - c; t.drawImage(r, h, c, d, f, o, a, s, l) } else t.drawImage(r, o, a, s, l); null != n.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect())) } }, getBoundingRect: function() { var t = this.style; return this._rect || (this._rect = new Tn(t.x || 0, t.y || 0, t.width || 0, t.height || 0)), this._rect } }, h(Ai, Ti); var iv = 1e5, rv = 314159, ov = .01, av = .001, sv = new Tn(0, 0, 0, 0), lv = new Tn(0, 0, 0, 0), uv = function(t, e, n) { this.type = "canvas"; var i = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase(); this._opts = n = a({}, n || {}), this.dpr = n.devicePixelRatio || yg, this._singleCanvas = i, this .root = t; var r = t.style; r && (r["-webkit-tap-highlight-color"] = "transparent", r["-webkit-user-select"] = r["user-select"] = r[ "-webkit-touch-callout"] = "none", t.innerHTML = ""), this.storage = e; var o = this._zlevelList = [], s = this._layers = {}; if (this._layerConfig = {}, this._needsManuallyCompositing = !1, i) { var l = t.width, u = t.height; null != n.width && (l = n.width), null != n.height && (u = n.height), this.dpr = n .devicePixelRatio || 1, t.width = l * this.dpr, t.height = u * this.dpr, this._width = l, this ._height = u; var h = new Vg(t, this, this.dpr); h.__builtin__ = !0, h.initContext(), s[rv] = h, h.zlevel = rv, o.push(rv), this._domRoot = t } else { this._width = this._getSize(0), this._height = this._getSize(1); var c = this._domRoot = zi(this._width, this._height); t.appendChild(c) } this._hoverlayer = null, this._hoverElements = [] }; uv.prototype = { constructor: uv, getType: function() { return "canvas" }, isSingleCanvas: function() { return this._singleCanvas }, getViewportRoot: function() { return this._domRoot }, getViewportRootOffset: function() { var t = this.getViewportRoot(); return t ? { offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0 } : void 0 }, refresh: function(t) { var e = this.storage.getDisplayList(!0), n = this._zlevelList; this._redrawId = Math.random(), this._paintList(e, t, this._redrawId); for (var i = 0; i < n.length; i++) { var r = n[i], o = this._layers[r]; if (!o.__builtin__ && o.refresh) { var a = 0 === i ? this._backgroundColor : null; o.refresh(a) } } return this.refreshHover(), this }, addHover: function(t, e) { if (!t.__hoverMir) { var n = new t.constructor({ style: t.style, shape: t.shape, z: t.z, z2: t.z2, silent: t.silent }); return n.__from = t, t.__hoverMir = n, e && n.setStyle(e), this._hoverElements.push(n), n } }, removeHover: function(t) { var e = t.__hoverMir, n = this._hoverElements, i = u(n, e); i >= 0 && n.splice(i, 1), t.__hoverMir = null }, clearHover: function() { for (var t = this._hoverElements, e = 0; e < t.length; e++) { var n = t[e].__from; n && (n.__hoverMir = null) } t.length = 0 }, refreshHover: function() { var t = this._hoverElements, e = t.length, n = this._hoverlayer; if (n && n.clear(), e) { En(t, this.storage.displayableSortFunc), n || (n = this._hoverlayer = this.getLayer(iv)); var i = {}; n.ctx.save(); for (var r = 0; e > r;) { var o = t[r], a = o.__from; a && a.__zr ? (r++, a.invisible || (o.transform = a.transform, o.invTransform = a .invTransform, o.__clipPaths = a.__clipPaths, this._doPaintEl(o, n, !0, i))) : ( t.splice(r, 1), a.__hoverMir = null, e--) } n.ctx.restore() } }, getHoverLayer: function() { return this.getLayer(iv) }, _paintList: function(t, e, n) { if (this._redrawId === n) { e = e || !1, this._updateLayerStatus(t); var i = this._doPaintList(t, e); if (this._needsManuallyCompositing && this._compositeManually(), !i) { var r = this; Wg(function() { r._paintList(t, e, n) }) } } }, _compositeManually: function() { var t = this.getLayer(rv).ctx, e = this._domRoot.width, n = this._domRoot.height; t.clearRect(0, 0, e, n), this.eachBuiltinLayer(function(i) { i.virtual && t.drawImage(i.dom, 0, 0, e, n) }) }, _doPaintList: function(t, e) { for (var n = [], i = 0; i < this._zlevelList.length; i++) { var r = this._zlevelList[i], o = this._layers[r]; o.__builtin__ && o !== this._hoverlayer && (o.__dirty || e) && n.push(o) } for (var a = !0, s = 0; s < n.length; s++) { var o = n[s], l = o.ctx, u = {}; l.save(); var h = e ? o.__startIndex : o.__drawIndex, c = !e && o.incremental && Date.now, d = c && Date.now(), p = o.zlevel === this._zlevelList[0] ? this._backgroundColor : null; if (o.__startIndex === o.__endIndex) o.clear(!1, p); else if (h === o.__startIndex) { var g = t[h]; g.incremental && g.notClear && !e || o.clear(!1, p) } - 1 === h && (console.error("For some unknown reason. drawIndex is -1"), h = o .__startIndex); for (var v = h; v < o.__endIndex; v++) { var m = t[v]; if (this._doPaintEl(m, o, e, u), m.__dirty = m.__dirtyText = !1, c) { var y = Date.now() - d; if (y > 15) break } } o.__drawIndex = v, o.__drawIndex < o.__endIndex && (a = !1), u.prevElClipPaths && l .restore(), l.restore() } return dp.wxa && f(this._layers, function(t) { t && t.ctx && t.ctx.draw && t.ctx.draw() }), a }, _doPaintEl: function(t, e, n, i) { var r = e.ctx, o = t.transform; if (!(!e.__dirty && !n || t.invisible || 0 === t.style.opacity || o && !o[0] && !o[3] || t .culling && Pi(t, this._width, this._height))) { var a = t.__clipPaths, s = i.prevElClipPaths; (!s || Oi(a, s)) && (s && (r.restore(), i.prevElClipPaths = null, i.prevEl = null), a && (r .save(), Li(a, r), i.prevElClipPaths = a)), t.beforeBrush && t.beforeBrush(r), t.brush( r, i.prevEl || null), i.prevEl = t, t.afterBrush && t.afterBrush(r) } }, getLayer: function(t, e) { this._singleCanvas && !this._needsManuallyCompositing && (t = rv); var n = this._layers[t]; return n || (n = new Vg("zr_" + t, this, this.dpr), n.zlevel = t, n.__builtin__ = !0, this ._layerConfig[t] ? r(n, this._layerConfig[t], !0) : this._layerConfig[t - ov] && r(n, this._layerConfig[t - ov], !0), e && (n.virtual = e), this.insertLayer(t, n), n .initContext()), n }, insertLayer: function(t, e) { var n = this._layers, i = this._zlevelList, r = i.length, o = null, a = -1, s = this._domRoot; if (n[t]) return void _g("ZLevel " + t + " has been used already"); if (!ki(e)) return void _g("Layer of zlevel " + t + " is not valid"); if (r > 0 && t > i[0]) { for (a = 0; r - 1 > a && !(i[a] < t && i[a + 1] > t); a++); o = n[i[a]] } if (i.splice(a + 1, 0, t), n[t] = e, !e.virtual) if (o) { var l = o.dom; l.nextSibling ? s.insertBefore(e.dom, l.nextSibling) : s.appendChild(e.dom) } else s.firstChild ? s.insertBefore(e.dom, s.firstChild) : s.appendChild(e.dom) }, eachLayer: function(t, e) { var n, i, r = this._zlevelList; for (i = 0; i < r.length; i++) n = r[i], t.call(e, this._layers[n], n) }, eachBuiltinLayer: function(t, e) { var n, i, r, o = this._zlevelList; for (r = 0; r < o.length; r++) i = o[r], n = this._layers[i], n.__builtin__ && t.call(e, n, i) }, eachOtherLayer: function(t, e) { var n, i, r, o = this._zlevelList; for (r = 0; r < o.length; r++) i = o[r], n = this._layers[i], n.__builtin__ || t.call(e, n, i) }, getLayers: function() { return this._layers }, _updateLayerStatus: function(t) { function e(t) { o && (o.__endIndex !== t && (o.__dirty = !0), o.__endIndex = t) } if (this.eachBuiltinLayer(function(t) { t.__dirty = t.__used = !1 }), this._singleCanvas) for (var n = 1; n < t.length; n++) { var i = t[n]; if (i.zlevel !== t[n - 1].zlevel || i.incremental) { this._needsManuallyCompositing = !0; break } } for (var r, o = null, a = 0, n = 0; n < t.length; n++) { var s, i = t[n], l = i.zlevel; r !== l && (r = l, a = 0), i.incremental ? (s = this.getLayer(l + av, this ._needsManuallyCompositing), s.incremental = !0, a = 1) : s = this.getLayer(l + (a > 0 ? ov : 0), this._needsManuallyCompositing), s.__builtin__ || _g("ZLevel " + l + " has been used by unkown layer " + s.id), s !== o && (s.__used = !0, s .__startIndex !== n && (s.__dirty = !0), s.__startIndex = n, s.__drawIndex = s .incremental ? -1 : n, e(n), o = s), i.__dirty && (s.__dirty = !0, s.incremental && s.__drawIndex < 0 && (s.__drawIndex = n)) } e(n), this.eachBuiltinLayer(function(t) { !t.__used && t.getElementCount() > 0 && (t.__dirty = !0, t.__startIndex = t .__endIndex = t.__drawIndex = 0), t.__dirty && t.__drawIndex < 0 && (t .__drawIndex = t.__startIndex) }) }, clear: function() { return this.eachBuiltinLayer(this._clearLayer), this }, _clearLayer: function(t) { t.clear() }, setBackgroundColor: function(t) { this._backgroundColor = t }, configLayer: function(t, e) { if (e) { var n = this._layerConfig; n[t] ? r(n[t], e, !0) : n[t] = e; for (var i = 0; i < this._zlevelList.length; i++) { var o = this._zlevelList[i]; if (o === t || o === t + ov) { var a = this._layers[o]; r(a, n[t], !0) } } } }, delLayer: function(t) { var e = this._layers, n = this._zlevelList, i = e[t]; i && (i.dom.parentNode.removeChild(i.dom), delete e[t], n.splice(u(n, t), 1)) }, resize: function(t, e) { if (this._domRoot.style) { var n = this._domRoot; n.style.display = "none"; var i = this._opts; if (null != t && (i.width = t), null != e && (i.height = e), t = this._getSize(0), e = this ._getSize(1), n.style.display = "", this._width !== t || e !== this._height) { n.style.width = t + "px", n.style.height = e + "px"; for (var r in this._layers) this._layers.hasOwnProperty(r) && this._layers[r].resize(t, e); f(this._progressiveLayers, function(n) { n.resize(t, e) }), this.refresh(!0) } this._width = t, this._height = e } else { if (null == t || null == e) return; this._width = t, this._height = e, this.getLayer(rv).resize(t, e) } return this }, clearLayer: function(t) { var e = this._layers[t]; e && e.clear() }, dispose: function() { this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null }, getRenderedCanvas: function(t) { if (t = t || {}, this._singleCanvas && !this._compositeManually) return this._layers[rv].dom; var e = new Vg("image", this, t.pixelRatio || this.dpr); if (e.initContext(), e.clear(!1, t.backgroundColor || this._backgroundColor), t.pixelRatio <= this.dpr) { this.refresh(); var n = e.dom.width, i = e.dom.height, r = e.ctx; this.eachLayer(function(t) { t.__builtin__ ? r.drawImage(t.dom, 0, 0, n, i) : t.renderToCanvas && (e.ctx .save(), t.renderToCanvas(e.ctx), e.ctx.restore()) }) } else for (var o = {}, a = this.storage.getDisplayList(!0), s = 0; s < a.length; s++) { var l = a[s]; this._doPaintEl(l, e, !0, o) } return e.dom }, getWidth: function() { return this._width }, getHeight: function() { return this._height }, _getSize: function(t) { var e = this._opts, n = ["width", "height"][t], i = ["clientWidth", "clientHeight"][t], r = ["paddingLeft", "paddingTop"][t], o = ["paddingRight", "paddingBottom"][t]; if (null != e[n] && "auto" !== e[n]) return parseFloat(e[n]); var a = this.root, s = document.defaultView.getComputedStyle(a); return (a[i] || Di(s[n]) || Di(a.style[n])) - (Di(s[r]) || 0) - (Di(s[o]) || 0) | 0 }, pathToImage: function(t, e) { e = e || this.dpr; var n = document.createElement("canvas"), i = n.getContext("2d"), r = t.getBoundingRect(), o = t.style, a = o.shadowBlur * e, s = o.shadowOffsetX * e, l = o.shadowOffsetY * e, u = o.hasStroke() ? o.lineWidth : 0, h = Math.max(u / 2, -s + a), c = Math.max(u / 2, s + a), d = Math.max(u / 2, -l + a), f = Math.max(u / 2, l + a), p = r.width + h + c, g = r.height + d + f; n.width = p * e, n.height = g * e, i.scale(e, e), i.clearRect(0, 0, p, g), i.dpr = e; var v = { position: t.position, rotation: t.rotation, scale: t.scale }; t.position = [h - r.x, d - r.y], t.rotation = 0, t.scale = [1, 1], t.updateTransform(), t && t .brush(i); var m = Ai, y = new m({ style: { x: 0, y: 0, image: n } }); return null != v.position && (y.position = t.position = v.position), null != v.rotation && (y .rotation = t.rotation = v.rotation), null != v.scale && (y.scale = t.scale = v.scale), y } }; var hv = function(t) { t = t || {}, this.stage = t.stage || {}, this.onframe = t.onframe || function() {}, this._clips = [], this._running = !1, this._time, this._pausedTime, this._pauseStart, this._paused = !1, zp.call(this) }; hv.prototype = { constructor: hv, addClip: function(t) { this._clips.push(t) }, addAnimator: function(t) { t.animation = this; for (var e = t.getClips(), n = 0; n < e.length; n++) this.addClip(e[n]) }, removeClip: function(t) { var e = u(this._clips, t); e >= 0 && this._clips.splice(e, 1) }, removeAnimator: function(t) { for (var e = t.getClips(), n = 0; n < e.length; n++) this.removeClip(e[n]); t.animation = null }, _update: function() { for (var t = (new Date).getTime() - this._pausedTime, e = t - this._time, n = this._clips, i = n .length, r = [], o = [], a = 0; i > a; a++) { var s = n[a], l = s.step(t, e); l && (r.push(l), o.push(s)) } for (var a = 0; i > a;) n[a]._needsRemove ? (n[a] = n[i - 1], n.pop(), i--) : a++; i = r.length; for (var a = 0; i > a; a++) o[a].fire(r[a]); this._time = t, this.onframe(e), this.trigger("frame", e), this.stage.update && this.stage .update() }, _startLoop: function() { function t() { e._running && (Wg(t), !e._paused && e._update()) } var e = this; this._running = !0, Wg(t) }, start: function() { this._time = (new Date).getTime(), this._pausedTime = 0, this._startLoop() }, stop: function() { this._running = !1 }, pause: function() { this._paused || (this._pauseStart = (new Date).getTime(), this._paused = !0) }, resume: function() { this._paused && (this._pausedTime += (new Date).getTime() - this._pauseStart, this._paused = !1) }, clear: function() { this._clips = [] }, isFinished: function() { return !this._clips.length }, animate: function(t, e) { e = e || {}; var n = new gg(t, e.loop, e.getter, e.setter); return this.addAnimator(n), n } }, c(hv, zp); var cv = 300, dv = dp.domSupported, fv = function() { var t = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu" ], e = ["touchstart", "touchend", "touchmove"], n = { pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1 }, i = p(t, function(t) { var e = t.replace("mouse", "pointer"); return n.hasOwnProperty(e) ? e : t }); return { mouse: t, touch: e, pointer: i } }(), pv = { mouse: ["mousemove", "mouseup"], pointer: ["pointermove", "pointerup"] }, gv = Wi.prototype; gv.stopPropagation = gv.stopImmediatePropagation = gv.preventDefault = V; var vv = { mousedown: function(t) { t = be(this.dom, t), this._mayPointerCapture = [t.zrX, t.zrY], this.trigger("mousedown", t) }, mousemove: function(t) { t = be(this.dom, t); var e = this._mayPointerCapture; !e || t.zrX === e[0] && t.zrY === e[1] || Yi(this, !0), this.trigger("mousemove", t) }, mouseup: function(t) { t = be(this.dom, t), Yi(this, !1), this.trigger("mouseup", t) }, mouseout: function(t) { t = be(this.dom, t), this._pointerCapturing && (t.zrEventControl = "no_globalout"); var e = t.toElement || t.relatedTarget; t.zrIsToLocalDOM = Vi(this, e), this.trigger("mouseout", t) }, touchstart: function(t) { t = be(this.dom, t), Ni(t), this._lastTouchMoment = new Date, this.handler.processGesture(t, "start"), vv.mousemove.call(this, t), vv.mousedown.call(this, t) }, touchmove: function(t) { t = be(this.dom, t), Ni(t), this.handler.processGesture(t, "change"), vv.mousemove.call(this, t) }, touchend: function(t) { t = be(this.dom, t), Ni(t), this.handler.processGesture(t, "end"), vv.mouseup.call(this, t), + new Date - this._lastTouchMoment < cv && vv.click.call(this, t) }, pointerdown: function(t) { vv.mousedown.call(this, t) }, pointermove: function(t) { Bi(t) || vv.mousemove.call(this, t) }, pointerup: function(t) { vv.mouseup.call(this, t) }, pointerout: function(t) { Bi(t) || vv.mouseout.call(this, t) } }; f(["click", "mousewheel", "dblclick", "contextmenu"], function(t) { vv[t] = function(e) { e = be(this.dom, e), this.trigger(t, e) } }); var mv = { pointermove: function(t) { Bi(t) || mv.mousemove.call(this, t) }, pointerup: function(t) { mv.mouseup.call(this, t) }, mousemove: function(t) { this.trigger("mousemove", t) }, mouseup: function(t) { var e = this._pointerCapturing; Yi(this, !1), this.trigger("mouseup", t), e && (t.zrEventControl = "only_globalout", this .trigger("mouseout", t)) } }, yv = ji.prototype; yv.dispose = function() { Xi(this._localHandlerScope), dv && Xi(this._globalHandlerScope) }, yv.setCursor = function(t) { this.dom.style && (this.dom.style.cursor = t || "default") }, c(ji, zp); var xv = !dp.canvasSupported, _v = { canvas: uv }, wv = {}, bv = "4.3.1", Sv = function(t, e, n) { n = n || {}, this.dom = e, this.id = t; var i = this, r = new Dg, o = n.renderer; if (xv) { if (!_v.vml) throw new Error("You need to require 'zrender/vml/vml' to support IE8"); o = "vml" } else o && _v[o] || (o = "canvas"); var a = new _v[o](e, r, n, t); this.storage = r, this.painter = a; var s = dp.node || dp.worker ? null : new ji(a.getViewportRoot(), a.root); this.handler = new Yp(r, a, s, a.root), this.animation = new hv({ stage: { update: y(this.flush, this) } }), this.animation.start(), this._needsRefresh; var l = r.delFromStorage, u = r.addToStorage; r.delFromStorage = function(t) { l.call(r, t), t && t.removeSelfFromZr(i) }, r.addToStorage = function(t) { u.call(r, t), t.addSelfToZr(i) } }; Sv.prototype = { constructor: Sv, getId: function() { return this.id }, add: function(t) { this.storage.addRoot(t), this._needsRefresh = !0 }, remove: function(t) { this.storage.delRoot(t), this._needsRefresh = !0 }, configLayer: function(t, e) { this.painter.configLayer && this.painter.configLayer(t, e), this._needsRefresh = !0 }, setBackgroundColor: function(t) { this.painter.setBackgroundColor && this.painter.setBackgroundColor(t), this._needsRefresh = !0 }, refreshImmediately: function() { this._needsRefresh = this._needsRefreshHover = !1, this.painter.refresh(), this._needsRefresh = this._needsRefreshHover = !1 }, refresh: function() { this._needsRefresh = !0 }, flush: function() { var t; this._needsRefresh && (t = !0, this.refreshImmediately()), this._needsRefreshHover && (t = !0, this.refreshHoverImmediately()), t && this.trigger("rendered") }, addHover: function(t, e) { if (this.painter.addHover) { var n = this.painter.addHover(t, e); return this.refreshHover(), n } }, removeHover: function(t) { this.painter.removeHover && (this.painter.removeHover(t), this.refreshHover()) }, clearHover: function() { this.painter.clearHover && (this.painter.clearHover(), this.refreshHover()) }, refreshHover: function() { this._needsRefreshHover = !0 }, refreshHoverImmediately: function() { this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.refreshHover() }, resize: function(t) { t = t || {}, this.painter.resize(t.width, t.height), this.handler.resize() }, clearAnimation: function() { this.animation.clear() }, getWidth: function() { return this.painter.getWidth() }, getHeight: function() { return this.painter.getHeight() }, pathToImage: function(t, e) { return this.painter.pathToImage(t, e) }, setCursorStyle: function(t) { this.handler.setCursorStyle(t) }, findHover: function(t, e) { return this.handler.findHover(t, e) }, on: function(t, e, n) { this.handler.on(t, e, n) }, off: function(t, e) { this.handler.off(t, e) }, trigger: function(t, e) { this.handler.trigger(t, e) }, clear: function() { this.storage.delRoot(), this.painter.clear() }, dispose: function() { this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this .handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, Ji( this.id) } }; var Mv = (Object.freeze || Object)({ version: bv, init: qi, dispose: Ki, getInstance: $i, registerPainter: Qi }), Iv = f, Cv = S, Tv = _, Av = "series\x00", Dv = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding" ], kv = 0, Pv = ".", Ov = "___EC__COMPONENT__CONTAINER___", Lv = 0, zv = function(t) { for (var e = 0; e < t.length; e++) t[e][1] || (t[e][1] = t[e][0]); return function(e, n, i) { for (var r = {}, o = 0; o < t.length; o++) { var a = t[o][1]; if (!(n && u(n, a) >= 0 || i && u(i, a) < 0)) { var s = e.getShallow(a); null != s && (r[t[o][0]] = s) } } return r } }, Ev = zv([ ["lineWidth", "width"], ["stroke", "color"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"] ]), Bv = { getLineStyle: function(t) { var e = Ev(this, t); return e.lineDash = this.getLineDash(e.lineWidth), e }, getLineDash: function(t) { null == t && (t = 1); var e = this.get("type"), n = Math.max(t, 2), i = 4 * t; return "solid" === e || null == e ? !1 : "dashed" === e ? [i, i] : [n, n] } }, Rv = zv([ ["fill", "color"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["opacity"], ["shadowColor"] ]), Nv = { getAreaStyle: function(t, e) { return Rv(this, t, e) } }, Fv = Math.pow, Vv = Math.sqrt, Wv = 1e-8, Hv = 1e-4, Gv = Vv(3), Zv = 1 / 3, Xv = W(), Yv = W(), Uv = W(), jv = Math.min, qv = Math.max, Kv = Math.sin, $v = Math.cos, Qv = 2 * Math.PI, Jv = W(), tm = W(), em = W(), nm = [], im = [], rm = { M: 1, L: 2, C: 3, Q: 4, A: 5, Z: 6, R: 7 }, om = [], am = [], sm = [], lm = [], um = Math.min, hm = Math.max, cm = Math.cos, dm = Math.sin, fm = Math.sqrt, pm = Math.abs, gm = "undefined" != typeof Float32Array, vm = function(t) { this._saveData = !t, this._saveData && (this.data = []), this._ctx = null }; vm.prototype = { constructor: vm, _xi: 0, _yi: 0, _x0: 0, _y0: 0, _ux: 0, _uy: 0, _len: 0, _lineDash: null, _dashOffset: 0, _dashIdx: 0, _dashSum: 0, setScale: function(t, e, n) { n = n || 0, this._ux = pm(n / yg / t) || 0, this._uy = pm(n / yg / e) || 0 }, getContext: function() { return this._ctx }, beginPath: function(t) { return this._ctx = t, t && t.beginPath(), t && (this.dpr = t.dpr), this._saveData && (this ._len = 0), this._lineDash && (this._lineDash = null, this._dashOffset = 0), this }, moveTo: function(t, e) { return this.addData(rm.M, t, e), this._ctx && this._ctx.moveTo(t, e), this._x0 = t, this._y0 = e, this._xi = t, this._yi = e, this }, lineTo: function(t, e) { var n = pm(t - this._xi) > this._ux || pm(e - this._yi) > this._uy || this._len < 5; return this.addData(rm.L, t, e), this._ctx && n && (this._needsDash() ? this._dashedLineTo(t, e) : this._ctx.lineTo(t, e)), n && (this._xi = t, this._yi = e), this }, bezierCurveTo: function(t, e, n, i, r, o) { return this.addData(rm.C, t, e, n, i, r, o), this._ctx && (this._needsDash() ? this ._dashedBezierTo(t, e, n, i, r, o) : this._ctx.bezierCurveTo(t, e, n, i, r, o)), this ._xi = r, this._yi = o, this }, quadraticCurveTo: function(t, e, n, i) { return this.addData(rm.Q, t, e, n, i), this._ctx && (this._needsDash() ? this ._dashedQuadraticTo(t, e, n, i) : this._ctx.quadraticCurveTo(t, e, n, i)), this._xi = n, this._yi = i, this }, arc: function(t, e, n, i, r, o) { return this.addData(rm.A, t, e, n, n, i, r - i, 0, o ? 0 : 1), this._ctx && this._ctx.arc(t, e, n, i, r, o), this._xi = cm(r) * n + t, this._yi = dm(r) * n + e, this }, arcTo: function(t, e, n, i, r) { return this._ctx && this._ctx.arcTo(t, e, n, i, r), this }, rect: function(t, e, n, i) { return this._ctx && this._ctx.rect(t, e, n, i), this.addData(rm.R, t, e, n, i), this }, closePath: function() { this.addData(rm.Z); var t = this._ctx, e = this._x0, n = this._y0; return t && (this._needsDash() && this._dashedLineTo(e, n), t.closePath()), this._xi = e, this ._yi = n, this }, fill: function(t) { t && t.fill(), this.toStatic() }, stroke: function(t) { t && t.stroke(), this.toStatic() }, setLineDash: function(t) { if (t instanceof Array) { this._lineDash = t, this._dashIdx = 0; for (var e = 0, n = 0; n < t.length; n++) e += t[n]; this._dashSum = e } return this }, setLineDashOffset: function(t) { return this._dashOffset = t, this }, len: function() { return this._len }, setData: function(t) { var e = t.length; this.data && this.data.length === e || !gm || (this.data = new Float32Array(e)); for (var n = 0; e > n; n++) this.data[n] = t[n]; this._len = e }, appendPath: function(t) { t instanceof Array || (t = [t]); for (var e = t.length, n = 0, i = this._len, r = 0; e > r; r++) n += t[r].len(); gm && this.data instanceof Float32Array && (this.data = new Float32Array(i + n)); for (var r = 0; e > r; r++) for (var o = t[r].data, a = 0; a < o.length; a++) this.data[i++] = o[a]; this._len = i }, addData: function(t) { if (this._saveData) { var e = this.data; this._len + arguments.length > e.length && (this._expandData(), e = this.data); for (var n = 0; n < arguments.length; n++) e[this._len++] = arguments[n]; this._prevCmd = t } }, _expandData: function() { if (!(this.data instanceof Array)) { for (var t = [], e = 0; e < this._len; e++) t[e] = this.data[e]; this.data = t } }, _needsDash: function() { return this._lineDash }, _dashedLineTo: function(t, e) { var n, i, r = this._dashSum, o = this._dashOffset, a = this._lineDash, s = this._ctx, l = this._xi, u = this._yi, h = t - l, c = e - u, d = fm(h * h + c * c), f = l, p = u, g = a.length; for (h /= d, c /= d, 0 > o && (o = r + o), o %= r, f -= o * h, p -= o * c; h > 0 && t >= f || 0 > h && f >= t || 0 === h && (c > 0 && e >= p || 0 > c && p >= e);) i = this._dashIdx, n = a[i], f += h * n, p += c * n, this._dashIdx = (i + 1) % g, h > 0 && l > f || 0 > h && f > l || c > 0 && u > p || 0 > c && p > u || s[i % 2 ? "moveTo" : "lineTo"](h >= 0 ? um(f, t) : hm(f, t), c >= 0 ? um(p, e) : hm(p, e)); h = f - t, c = p - e, this._dashOffset = -fm(h * h + c * c) }, _dashedBezierTo: function(t, e, n, i, r, o) { var a, s, l, u, h, c = this._dashSum, d = this._dashOffset, f = this._lineDash, p = this._ctx, g = this._xi, v = this._yi, m = Mr, y = 0, x = this._dashIdx, _ = f.length, w = 0; for (0 > d && (d = c + d), d %= c, a = 0; 1 > a; a += .1) s = m(g, t, n, r, a + .1) - m(g, t, n, r, a), l = m(v, e, i, o, a + .1) - m(v, e, i, o, a), y += fm(s * s + l * l); for (; _ > x && (w += f[x], !(w > d)); x++); for (a = (w - d) / y; 1 >= a;) u = m(g, t, n, r, a), h = m(v, e, i, o, a), x % 2 ? p.moveTo(u, h) : p.lineTo(u, h), a += f[x] / y, x = (x + 1) % _; x % 2 !== 0 && p.lineTo(r, o), s = r - u, l = o - h, this._dashOffset = -fm(s * s + l * l) }, _dashedQuadraticTo: function(t, e, n, i) { var r = n, o = i; n = (n + 2 * t) / 3, i = (i + 2 * e) / 3, t = (this._xi + 2 * t) / 3, e = (this._yi + 2 * e) / 3, this._dashedBezierTo(t, e, n, i, r, o) }, toStatic: function() { var t = this.data; t instanceof Array && (t.length = this._len, gm && (this.data = new Float32Array(t))) }, getBoundingRect: function() { om[0] = om[1] = sm[0] = sm[1] = Number.MAX_VALUE, am[0] = am[1] = lm[0] = lm[1] = -Number .MAX_VALUE; for (var t = this.data, e = 0, n = 0, i = 0, r = 0, o = 0; o < t.length;) { var a = t[o++]; switch (1 === o && (e = t[o], n = t[o + 1], i = e, r = n), a) { case rm.M: i = t[o++], r = t[o++], e = i, n = r, sm[0] = i, sm[1] = r, lm[0] = i, lm[1] = r; break; case rm.L: Rr(e, n, t[o], t[o + 1], sm, lm), e = t[o++], n = t[o++]; break; case rm.C: Nr(e, n, t[o++], t[o++], t[o++], t[o++], t[o], t[o + 1], sm, lm), e = t[o++], n = t[ o++]; break; case rm.Q: Fr(e, n, t[o++], t[o++], t[o], t[o + 1], sm, lm), e = t[o++], n = t[o++]; break; case rm.A: var s = t[o++], l = t[o++], u = t[o++], h = t[o++], c = t[o++], d = t[o++] + c; o += 1; var f = 1 - t[o++]; 1 === o && (i = cm(c) * u + s, r = dm(c) * h + l), Vr(s, l, u, h, c, d, f, sm, lm), e = cm(d) * u + s, n = dm(d) * h + l; break; case rm.R: i = e = t[o++], r = n = t[o++]; var p = t[o++], g = t[o++]; Rr(i, r, i + p, r + g, sm, lm); break; case rm.Z: e = i, n = r } ae(om, om, sm), se(am, am, lm) } return 0 === o && (om[0] = om[1] = am[0] = am[1] = 0), new Tn(om[0], om[1], am[0] - om[0], am[ 1] - om[1]) }, rebuildPath: function(t) { for (var e, n, i, r, o, a, s = this.data, l = this._ux, u = this._uy, h = this._len, c = 0; h > c;) { var d = s[c++]; switch (1 === c && (i = s[c], r = s[c + 1], e = i, n = r), d) { case rm.M: e = i = s[c++], n = r = s[c++], t.moveTo(i, r); break; case rm.L: o = s[c++], a = s[c++], (pm(o - i) > l || pm(a - r) > u || c === h - 1) && (t .lineTo(o, a), i = o, r = a); break; case rm.C: t.bezierCurveTo(s[c++], s[c++], s[c++], s[c++], s[c++], s[c++]), i = s[c - 2], r = s[c - 1]; break; case rm.Q: t.quadraticCurveTo(s[c++], s[c++], s[c++], s[c++]), i = s[c - 2], r = s[c - 1]; break; case rm.A: var f = s[c++], p = s[c++], g = s[c++], v = s[c++], m = s[c++], y = s[c++], x = s[c++], _ = s[c++], w = g > v ? g : v, b = g > v ? 1 : g / v, S = g > v ? v / g : 1, M = Math.abs(g - v) > .001, I = m + y; M ? (t.translate(f, p), t.rotate(x), t.scale(b, S), t.arc(0, 0, w, m, I, 1 - _), t .scale(1 / b, 1 / S), t.rotate(-x), t.translate(-f, -p)) : t.arc(f, p, w, m, I, 1 - _), 1 === c && (e = cm(m) * g + f, n = dm(m) * v + p), i = cm(I) * g + f, r = dm(I) * v + p; break; case rm.R: e = i = s[c], n = r = s[c + 1], t.rect(s[c++], s[c++], s[c++], s[c++]); break; case rm.Z: t.closePath(), i = e, r = n } } } }, vm.CMD = rm; var mm = 2 * Math.PI, ym = 2 * Math.PI, xm = vm.CMD, _m = 2 * Math.PI, wm = 1e-4, bm = [-1, -1, -1], Sm = [-1, -1], Mm = Fg.prototype.getCanvasPattern, Im = Math.abs, Cm = new vm(!0); eo.prototype = { constructor: eo, type: "path", __dirtyPath: !0, strokeContainThreshold: 5, segmentIgnoreThreshold: 0, subPixelOptimize: !1, brush: function(t, e) { var n = this.style, i = this.path || Cm, r = n.hasStroke(), o = n.hasFill(), a = n.fill, s = n.stroke, l = o && !!a.colorStops, u = r && !!s.colorStops, h = o && !!a.image, c = r && !!s.image; if (n.bind(t, this, e), this.setTransform(t), this.__dirty) { var d; l && (d = d || this.getBoundingRect(), this._fillGradient = n.getGradient(t, a, d)), u && ( d = d || this.getBoundingRect(), this._strokeGradient = n.getGradient(t, s, d)) } l ? t.fillStyle = this._fillGradient : h && (t.fillStyle = Mm.call(a, t)), u ? t.strokeStyle = this._strokeGradient : c && (t.strokeStyle = Mm.call(s, t)); var f = n.lineDash, p = n.lineDashOffset, g = !!t.setLineDash, v = this.getGlobalScale(); if (i.setScale(v[0], v[1], this.segmentIgnoreThreshold), this.__dirtyPath || f && !g && r ? (i .beginPath(t), f && !g && (i.setLineDash(f), i.setLineDashOffset(p)), this.buildPath(i, this.shape, !1), this.path && (this.__dirtyPath = !1)) : (t.beginPath(), this.path .rebuildPath(t)), o) if (null != n.fillOpacity) { var m = t.globalAlpha; t.globalAlpha = n.fillOpacity * n.opacity, i.fill(t), t.globalAlpha = m } else i.fill(t); if (f && g && (t.setLineDash(f), t.lineDashOffset = p), r) if (null != n.strokeOpacity) { var m = t.globalAlpha; t.globalAlpha = n.strokeOpacity * n.opacity, i.stroke(t), t.globalAlpha = m } else i.stroke(t); f && g && t.setLineDash([]), null != n.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect())) }, buildPath: function() {}, createPathProxy: function() { this.path = new vm }, getBoundingRect: function() { var t = this._rect, e = this.style, n = !t; if (n) { var i = this.path; i || (i = this.path = new vm), this.__dirtyPath && (i.beginPath(), this.buildPath(i, this .shape, !1)), t = i.getBoundingRect() } if (this._rect = t, e.hasStroke()) { var r = this._rectWithStroke || (this._rectWithStroke = t.clone()); if (this.__dirty || n) { r.copy(t); var o = e.lineWidth, a = e.strokeNoScale ? this.getLineScale() : 1; e.hasFill() || (o = Math.max(o, this.strokeContainThreshold || 4)), a > 1e-10 && (r .width += o / a, r.height += o / a, r.x -= o / a / 2, r.y -= o / a / 2) } return r } return t }, contain: function(t, e) { var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect(), r = this.style; if (t = n[0], e = n[1], i.contain(t, e)) { var o = this.path.data; if (r.hasStroke()) { var a = r.lineWidth, s = r.strokeNoScale ? this.getLineScale() : 1; if (s > 1e-10 && (r.hasFill() || (a = Math.max(a, this.strokeContainThreshold)), to(o, a / s, t, e))) return !0 } if (r.hasFill()) return Jr(o, t, e) } return !1 }, dirty: function(t) { null == t && (t = !0), t && (this.__dirtyPath = t, this._rect = null), this.__dirty = this .__dirtyText = !0, this.__zr && this.__zr.refresh(), this.__clipTarget && this.__clipTarget .dirty() }, animateShape: function(t) { return this.animate("shape", t) }, attrKV: function(t, e) { "shape" === t ? (this.setShape(e), this.__dirtyPath = !0, this._rect = null) : Ti.prototype .attrKV.call(this, t, e) }, setShape: function(t, e) { var n = this.shape; if (n) { if (S(t)) for (var i in t) t.hasOwnProperty(i) && (n[i] = t[i]); else n[t] = e; this.dirty(!0) } return this }, getLineScale: function() { var t = this.transform; return t && Im(t[0] - 1) > 1e-10 && Im(t[3] - 1) > 1e-10 ? Math.sqrt(Im(t[0] * t[3] - t[2] * t[ 1])) : 1 } }, eo.extend = function(t) { var e = function(e) { eo.call(this, e), t.style && this.style.extendFrom(t.style, !1); var n = t.shape; if (n) { this.shape = this.shape || {}; var i = this.shape; for (var r in n) !i.hasOwnProperty(r) && n.hasOwnProperty(r) && (i[r] = n[r]) } t.init && t.init.call(this, e) }; h(e, eo); for (var n in t) "style" !== n && "shape" !== n && (e.prototype[n] = t[n]); return e }, h(eo, Ti); var Tm = vm.CMD, Am = [ [], [], [] ], Dm = Math.sqrt, km = Math.atan2, Pm = function(t, e) { var n, i, r, o, a, s, l = t.data, u = Tm.M, h = Tm.C, c = Tm.L, d = Tm.R, f = Tm.A, p = Tm.Q; for (r = 0, o = 0; r < l.length;) { switch (n = l[r++], o = r, i = 0, n) { case u: i = 1; break; case c: i = 1; break; case h: i = 3; break; case p: i = 2; break; case f: var g = e[4], v = e[5], m = Dm(e[0] * e[0] + e[1] * e[1]), y = Dm(e[2] * e[2] + e[3] * e[3]), x = km(-e[1] / y, e[0] / m); l[r] *= m, l[r++] += g, l[r] *= y, l[r++] += v, l[r++] *= m, l[r++] *= y, l[r++] += x, l[ r++] += x, r += 2, o = r; break; case d: s[0] = l[r++], s[1] = l[r++], oe(s, s, e), l[o++] = s[0], l[o++] = s[1], s[0] += l[r++], s[ 1] += l[r++], oe(s, s, e), l[o++] = s[0], l[o++] = s[1] } for (a = 0; i > a; a++) { var s = Am[a]; s[0] = l[r++], s[1] = l[r++], oe(s, s, e), l[o++] = s[0], l[o++] = s[1] } } }, Om = Math.sqrt, Lm = Math.sin, zm = Math.cos, Em = Math.PI, Bm = function(t) { return Math.sqrt(t[0] * t[0] + t[1] * t[1]) }, Rm = function(t, e) { return (t[0] * e[0] + t[1] * e[1]) / (Bm(t) * Bm(e)) }, Nm = function(t, e) { return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(Rm(t, e)) }, Fm = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi, Vm = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g, Wm = function(t) { Ti.call(this, t) }; Wm.prototype = { constructor: Wm, type: "text", brush: function(t, e) { var n = this.style; this.__dirty && ui(n, !0), n.fill = n.stroke = n.shadowBlur = n.shadowColor = n.shadowOffsetX = n.shadowOffsetY = null; var i = n.text; return null != i && (i += ""), Ci(i, n) ? (this.setTransform(t), ci(this, t, i, n, null, e), void this.restoreTransform(t)) : void(t.__attrCachedBy = Og.NONE) }, getBoundingRect: function() { var t = this.style; if (this.__dirty && ui(t, !0), !this._rect) { var e = t.text; null != e ? e += "" : e = ""; var n = Yn(t.text + "", t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t .textLineHeight, t.rich); if (n.x += t.x || 0, n.y += t.y || 0, bi(t.textStroke, t.textStrokeWidth)) { var i = t.textStrokeWidth; n.x -= i / 2, n.y -= i / 2, n.width += i, n.height += i } this._rect = n } return this._rect } }, h(Wm, Ti); var Hm = eo.extend({ type: "circle", shape: { cx: 0, cy: 0, r: 0 }, buildPath: function(t, e, n) { n && t.moveTo(e.cx + e.r, e.cy), t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI, !0) } }), Gm = [ ["shadowBlur", 0], ["shadowColor", "#000"], ["shadowOffsetX", 0], ["shadowOffsetY", 0] ], Zm = function(t) { return dp.browser.ie && dp.browser.version >= 11 ? function() { var e, n = this.__clipPaths, i = this.style; if (n) for (var r = 0; r < n.length; r++) { var o = n[r], a = o && o.shape, s = o && o.type; if (a && ("sector" === s && a.startAngle === a.endAngle || "rect" === s && (!a.width || !a.height))) { for (var l = 0; l < Gm.length; l++) Gm[l][2] = i[Gm[l][0]], i[Gm[l][0]] = Gm[l][1]; e = !0; break } } if (t.apply(this, arguments), e) for (var l = 0; l < Gm.length; l++) i[Gm[l][0]] = Gm[l][2] } : t }, Xm = eo.extend({ type: "sector", shape: { cx: 0, cy: 0, r0: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0 }, brush: Zm(eo.prototype.brush), buildPath: function(t, e) { var n = e.cx, i = e.cy, r = Math.max(e.r0 || 0, 0), o = Math.max(e.r, 0), a = e.startAngle, s = e.endAngle, l = e.clockwise, u = Math.cos(a), h = Math.sin(a); t.moveTo(u * r + n, h * r + i), t.lineTo(u * o + n, h * o + i), t.arc(n, i, o, a, s, !l), t .lineTo(Math.cos(s) * r + n, Math.sin(s) * r + i), 0 !== r && t.arc(n, i, r, s, a, l), t .closePath() } }), Ym = eo.extend({ type: "ring", shape: { cx: 0, cy: 0, r: 0, r0: 0 }, buildPath: function(t, e) { var n = e.cx, i = e.cy, r = 2 * Math.PI; t.moveTo(n + e.r, i), t.arc(n, i, e.r, 0, r, !1), t.moveTo(n + e.r0, i), t.arc(n, i, e.r0, 0, r, !0) } }), Um = function(t, e) { for (var n = t.length, i = [], r = 0, o = 1; n > o; o++) r += ee(t[o - 1], t[o]); var a = r / 2; a = n > a ? n : a; for (var o = 0; a > o; o++) { var s, l, u, h = o / (a - 1) * (e ? n : n - 1), c = Math.floor(h), d = h - c, f = t[c % n]; e ? (s = t[(c - 1 + n) % n], l = t[(c + 1) % n], u = t[(c + 2) % n]) : (s = t[0 === c ? c : c - 1], l = t[c > n - 2 ? n - 1 : c + 1], u = t[c > n - 3 ? n - 1 : c + 2]); var p = d * d, g = d * p; i.push([lo(s[0], f[0], l[0], u[0], d, p, g), lo(s[1], f[1], l[1], u[1], d, p, g)]) } return i }, jm = function(t, e, n, i) { var r, o, a, s, l = [], u = [], h = [], c = []; if (i) { a = [1 / 0, 1 / 0], s = [-1 / 0, -1 / 0]; for (var d = 0, f = t.length; f > d; d++) ae(a, a, t[d]), se(s, s, t[d]); ae(a, a, i[0]), se(s, s, i[1]) } for (var d = 0, f = t.length; f > d; d++) { var p = t[d]; if (n) r = t[d ? d - 1 : f - 1], o = t[(d + 1) % f]; else { if (0 === d || d === f - 1) { l.push(G(t[d])); continue } r = t[d - 1], o = t[d + 1] } U(u, o, r), J(u, u, e); var g = ee(p, r), v = ee(p, o), m = g + v; 0 !== m && (g /= m, v /= m), J(h, u, -g), J(c, u, v); var y = X([], p, h), x = X([], p, c); i && (se(y, y, a), ae(y, y, s), se(x, x, a), ae(x, x, s)), l.push(y), l.push(x) } return n && l.push(l.shift()), l }, qm = eo.extend({ type: "polygon", shape: { points: null, smooth: !1, smoothConstraint: null }, buildPath: function(t, e) { uo(t, e, !0) } }), Km = eo.extend({ type: "polyline", shape: { points: null, smooth: !1, smoothConstraint: null }, style: { stroke: "#000", fill: null }, buildPath: function(t, e) { uo(t, e, !1) } }), $m = Math.round, Qm = {}, Jm = eo.extend({ type: "rect", shape: { r: 0, x: 0, y: 0, width: 0, height: 0 }, buildPath: function(t, e) { var n, i, r, o; this.subPixelOptimize ? (co(Qm, e, this.style), n = Qm.x, i = Qm.y, r = Qm.width, o = Qm .height, Qm.r = e.r, e = Qm) : (n = e.x, i = e.y, r = e.width, o = e.height), e.r ? li(t, e) : t.rect(n, i, r, o), t.closePath() } }), ty = {}, ey = eo.extend({ type: "line", shape: { x1: 0, y1: 0, x2: 0, y2: 0, percent: 1 }, style: { stroke: "#000", fill: null }, buildPath: function(t, e) { var n, i, r, o; this.subPixelOptimize ? (ho(ty, e, this.style), n = ty.x1, i = ty.y1, r = ty.x2, o = ty .y2) : (n = e.x1, i = e.y1, r = e.x2, o = e.y2); var a = e.percent; 0 !== a && (t.moveTo(n, i), 1 > a && (r = n * (1 - a) + r * a, o = i * (1 - a) + o * a), t .lineTo(r, o)) }, pointAt: function(t) { var e = this.shape; return [e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t] } }), ny = [], iy = eo.extend({ type: "bezier-curve", shape: { x1: 0, y1: 0, x2: 0, y2: 0, cpx1: 0, cpy1: 0, percent: 1 }, style: { stroke: "#000", fill: null }, buildPath: function(t, e) { var n = e.x1, i = e.y1, r = e.x2, o = e.y2, a = e.cpx1, s = e.cpy1, l = e.cpx2, u = e.cpy2, h = e.percent; 0 !== h && (t.moveTo(n, i), null == l || null == u ? (1 > h && (zr(n, a, r, h, ny), a = ny[ 1], r = ny[2], zr(i, s, o, h, ny), s = ny[1], o = ny[2]), t .quadraticCurveTo(a, s, r, o)) : (1 > h && (Ar(n, a, l, r, h, ny), a = ny[1], l = ny[2], r = ny[3], Ar(i, s, u, o, h, ny), s = ny[1], u = ny[2], o = ny[3] ), t.bezierCurveTo(a, s, l, u, r, o))) }, pointAt: function(t) { return po(this.shape, t, !1) }, tangentAt: function(t) { var e = po(this.shape, t, !0); return te(e, e) } }), ry = eo.extend({ type: "arc", shape: { cx: 0, cy: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0 }, style: { stroke: "#000", fill: null }, buildPath: function(t, e) { var n = e.cx, i = e.cy, r = Math.max(e.r, 0), o = e.startAngle, a = e.endAngle, s = e.clockwise, l = Math.cos(o), u = Math.sin(o); t.moveTo(l * r + n, u * r + i), t.arc(n, i, r, o, a, !s) } }), oy = eo.extend({ type: "compound", shape: { paths: null }, _updatePathDirty: function() { for (var t = this.__dirtyPath, e = this.shape.paths, n = 0; n < e.length; n++) t = t || e[n] .__dirtyPath; this.__dirtyPath = t, this.__dirty = this.__dirty || t }, beforeBrush: function() { this._updatePathDirty(); for (var t = this.shape.paths || [], e = this.getGlobalScale(), n = 0; n < t.length; n++) t[ n].path || t[n].createPathProxy(), t[n].path.setScale(e[0], e[1], t[n] .segmentIgnoreThreshold) }, buildPath: function(t, e) { for (var n = e.paths || [], i = 0; i < n.length; i++) n[i].buildPath(t, n[i].shape, !0) }, afterBrush: function() { for (var t = this.shape.paths || [], e = 0; e < t.length; e++) t[e].__dirtyPath = !1 }, getBoundingRect: function() { return this._updatePathDirty(), eo.prototype.getBoundingRect.call(this) } }), ay = function(t) { this.colorStops = t || [] }; ay.prototype = { constructor: ay, addColorStop: function(t, e) { this.colorStops.push({ offset: t, color: e }) } }; var sy = function(t, e, n, i, r, o) { this.x = null == t ? 0 : t, this.y = null == e ? 0 : e, this.x2 = null == n ? 1 : n, this.y2 = null == i ? 0 : i, this.type = "linear", this.global = o || !1, ay.call(this, r) }; sy.prototype = { constructor: sy }, h(sy, ay); var ly = function(t, e, n, i, r) { this.x = null == t ? .5 : t, this.y = null == e ? .5 : e, this.r = null == n ? .5 : n, this.type = "radial", this.global = r || !1, ay.call(this, i) }; ly.prototype = { constructor: ly }, h(ly, ay), go.prototype.incremental = !0, go.prototype.clearDisplaybles = function() { this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.dirty(), this .notClear = !1 }, go.prototype.addDisplayable = function(t, e) { e ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.dirty() }, go.prototype.addDisplayables = function(t, e) { e = e || !1; for (var n = 0; n < t.length; n++) this.addDisplayable(t[n], e) }, go.prototype.eachPendingDisplayable = function(t) { for (var e = this._cursor; e < this._displayables.length; e++) t && t(this._displayables[e]); for (var e = 0; e < this._temporaryDisplayables.length; e++) t && t(this._temporaryDisplayables[e]) }, go.prototype.update = function() { this.updateTransform(); for (var t = this._cursor; t < this._displayables.length; t++) { var e = this._displayables[t]; e.parent = this, e.update(), e.parent = null } for (var t = 0; t < this._temporaryDisplayables.length; t++) { var e = this._temporaryDisplayables[t]; e.parent = this, e.update(), e.parent = null } }, go.prototype.brush = function(t) { for (var e = this._cursor; e < this._displayables.length; e++) { var n = this._displayables[e]; n.beforeBrush && n.beforeBrush(t), n.brush(t, e === this._cursor ? null : this._displayables[e - 1]), n.afterBrush && n.afterBrush(t) } this._cursor = e; for (var e = 0; e < this._temporaryDisplayables.length; e++) { var n = this._temporaryDisplayables[e]; n.beforeBrush && n.beforeBrush(t), n.brush(t, 0 === e ? null : this._temporaryDisplayables[e - 1]), n.afterBrush && n.afterBrush(t) } this._temporaryDisplayables = [], this.notClear = !0 }; var uy = []; go.prototype.getBoundingRect = function() { if (!this._rect) { for (var t = new Tn(1 / 0, 1 / 0, -1 / 0, -1 / 0), e = 0; e < this._displayables.length; e++) { var n = this._displayables[e], i = n.getBoundingRect().clone(); n.needLocalTransform() && i.applyTransform(n.getLocalTransform(uy)), t.union(i) } this._rect = t } return this._rect }, go.prototype.contain = function(t, e) { var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect(); if (i.contain(n[0], n[1])) for (var r = 0; r < this._displayables.length; r++) { var o = this._displayables[r]; if (o.contain(t, e)) return !0 } return !1 }, h(go, Ti); var hy = Math.max, cy = Math.min, dy = {}, fy = 1, py = { color: "textFill", textBorderColor: "textStroke", textBorderWidth: "textStrokeWidth" }, gy = "emphasis", vy = "normal", my = 1, yy = {}, xy = {}, _y = so, wy = fo, by = N(), Sy = 0; yo("circle", Hm), yo("sector", Xm), yo("ring", Ym), yo("polygon", qm), yo("polyline", Km), yo("rect", Jm), yo( "line", ey), yo("bezierCurve", iy), yo("arc", ry); var My = (Object.freeze || Object)({ Z2_EMPHASIS_LIFT: fy, CACHED_LABEL_STYLE_PROPERTIES: py, extendShape: vo, extendPath: mo, registerShape: yo, getShapeClass: xo, makePath: _o, makeImage: wo, mergePath: _y, resizePath: So, subPixelOptimizeLine: Mo, subPixelOptimizeRect: Io, subPixelOptimize: wy, setElementHoverStyle: Lo, setHoverStyle: Fo, setAsHighDownDispatcher: Vo, isHighDownDispatcher: Wo, getHighlightDigit: Ho, setLabelStyle: Go, modifyLabelStyle: Zo, setTextStyle: Xo, setText: Yo, getFont: Jo, updateProps: ea, initProps: na, getTransform: ia, applyTransform: ra, transformDirection: oa, groupTransition: aa, clipPointsByRect: sa, clipRectByRect: la, createIcon: ua, linePolygonIntersect: ha, lineLineIntersect: ca, Group: Cg, Image: Ai, Text: Wm, Circle: Hm, Sector: Xm, Ring: Ym, Polygon: qm, Polyline: Km, Rect: Jm, Line: ey, BezierCurve: iy, Arc: ry, IncrementalDisplayable: go, CompoundPath: oy, LinearGradient: sy, RadialGradient: ly, BoundingRect: Tn }), Iy = ["textStyle", "color"], Cy = { getTextColor: function(t) { var e = this.ecModel; return this.getShallow("color") || (!t && e ? e.get(Iy) : null) }, getFont: function() { return Jo({ fontStyle: this.getShallow("fontStyle"), fontWeight: this.getShallow("fontWeight"), fontSize: this.getShallow("fontSize"), fontFamily: this.getShallow("fontFamily") }, this.ecModel) }, getTextRect: function(t) { return Yn(t, this.getFont(), this.getShallow("align"), this.getShallow("verticalAlign") || this .getShallow("baseline"), this.getShallow("padding"), this.getShallow("lineHeight"), this .getShallow("rich"), this.getShallow("truncateText")) } }, Ty = zv([ ["fill", "color"], ["stroke", "borderColor"], ["lineWidth", "borderWidth"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"], ["textPosition"], ["textAlign"] ]), Ay = { getItemStyle: function(t, e) { var n = Ty(this, t, e), i = this.getBorderLineDash(); return i && (n.lineDash = i), n }, getBorderLineDash: function() { var t = this.get("borderType"); return "solid" === t || null == t ? null : "dashed" === t ? [5, 5] : [1, 1] } }, Dy = c, ky = ur(); pa.prototype = { constructor: pa, init: null, mergeOption: function(t) { r(this.option, t, !0) }, get: function(t, e) { return null == t ? this.option : ga(this.option, this.parsePath(t), !e && va(this, t)) }, getShallow: function(t, e) { var n = this.option, i = null == n ? n : n[t], r = !e && va(this, t); return null == i && r && (i = r.getShallow(t)), i }, getModel: function(t, e) { var n, i = null == t ? this.option : ga(this.option, t = this.parsePath(t)); return e = e || (n = va(this, t)) && n.getModel(t), new pa(i, e, this.ecModel) }, isEmpty: function() { return null == this.option }, restoreData: function() {}, clone: function() { var t = this.constructor; return new t(i(this.option)) }, setReadOnly: function() {}, parsePath: function(t) { return "string" == typeof t && (t = t.split(".")), t }, customizeGetParent: function(t) { ky(this).getParent = t }, isAnimationEnabled: function() { if (!dp.node) { if (null != this.option.animation) return !!this.option.animation; if (this.parentModel) return this.parentModel.isAnimationEnabled() } } }, mr(pa), yr(pa), Dy(pa, Bv), Dy(pa, Nv), Dy(pa, Cy), Dy(pa, Ay); var Py = 0, Oy = 1e-4, Ly = 9007199254740991, zy = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/, Ey = (Object.freeze || Object)({ linearMap: wa, parsePercent: ba, round: Sa, asc: Ma, getPrecision: Ia, getPrecisionSafe: Ca, getPixelPrecision: Ta, getPercentWithPrecision: Aa, MAX_SAFE_INTEGER: Ly, remRadian: Da, isRadianAroundZero: ka, parseDate: Pa, quantity: Oa, quantityExponent: La, nice: za, quantile: Ea, reformIntervals: Ba, isNumeric: Ra }), By = O, Ry = /([&<>"'])/g, Ny = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, Fy = ["a", "b", "c", "d", "e", "f", "g"], Vy = function(t, e) { return "{" + t + (null == e ? "" : e) + "}" }, Wy = Qn, Hy = (Object.freeze || Object)({ addCommas: Na, toCamelCase: Fa, normalizeCssArray: By, encodeHTML: Va, formatTpl: Wa, formatTplSimple: Ha, getTooltipMarker: Ga, formatTime: Xa, capitalFirst: Ya, truncateText: Wy, getTextBoundingRect: Ua, getTextRect: ja, windowOpen: qa }), Gy = f, Zy = ["left", "right", "top", "bottom", "width", "height"], Xy = [ ["width", "left", "right"], ["height", "top", "bottom"] ], Yy = Ka, Uy = (x(Ka, "vertical"), x(Ka, "horizontal"), { getBoxLayoutParams: function() { return { left: this.get("left"), top: this.get("top"), right: this.get("right"), bottom: this.get("bottom"), width: this.get("width"), height: this.get("height") } } }), jy = ur(), qy = pa.extend({ type: "component", id: "", name: "", mainType: "", subType: "", componentIndex: 0, defaultOption: null, ecModel: null, dependentModels: [], uid: null, layoutMode: null, $constructor: function(t, e, n, i) { pa.call(this, t, e, n, i), this.uid = ma("ec_cpt_model") }, init: function(t, e, n) { this.mergeDefaultAndTheme(t, n) }, mergeDefaultAndTheme: function(t, e) { var n = this.layoutMode, i = n ? Ja(t) : {}, o = e.getTheme(); r(t, o.get(this.mainType)), r(t, this.getDefaultOption()), n && Qa(t, i, n) }, mergeOption: function(t) { r(this.option, t, !0); var e = this.layoutMode; e && Qa(this.option, t, e) }, optionUpdated: function() {}, getDefaultOption: function() { var t = jy(this); if (!t.defaultOption) { for (var e = [], n = this.constructor; n;) { var i = n.prototype.defaultOption; i && e.push(i), n = n.superClass } for (var o = {}, a = e.length - 1; a >= 0; a--) o = r(o, e[a], !0); t.defaultOption = o } return t.defaultOption }, getReferringComponents: function(t) { return this.ecModel.queryComponents({ mainType: t, index: this.get(t + "Index", !0), id: this.get(t + "Id", !0) }) } }); wr(qy, { registerWhenExtend: !0 }), ya(qy), xa(qy, es), c(qy, Uy); var Ky = ""; "undefined" != typeof navigator && (Ky = navigator.platform || ""); var $y = { color: ["#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae", "#749f83", "#ca8622", "#bda29a", "#6e7074", "#546570", "#c4ccd3" ], gradientColor: ["#f6efa6", "#d88273", "#bf444c"], textStyle: { fontFamily: Ky.match(/^Win/) ? "Microsoft YaHei" : "sans-serif", fontSize: 12, fontStyle: "normal", fontWeight: "normal" }, blendMode: null, animation: "auto", animationDuration: 1e3, animationDurationUpdate: 300, animationEasing: "exponentialOut", animationEasingUpdate: "cubicOut", animationThreshold: 2e3, progressiveThreshold: 3e3, progressive: 400, hoverLayerThreshold: 3e3, useUTC: !1 }, Qy = ur(), Jy = { clearColorPalette: function() { Qy(this).colorIdx = 0, Qy(this).colorNameMap = {} }, getColorFromPalette: function(t, e, n) { e = e || this; var i = Qy(e), r = i.colorIdx || 0, o = i.colorNameMap = i.colorNameMap || {}; if (o.hasOwnProperty(t)) return o[t]; var a = tr(this.get("color", !0)), s = this.get("colorLayer", !0), l = null != n && s ? ns(s, n) : a; if (l = l || a, l && l.length) { var u = l[r]; return t && (o[t] = u), i.colorIdx = (r + 1) % l.length, u } } }, tx = "original", ex = "arrayRows", nx = "objectRows", ix = "keyedColumns", rx = "unknown", ox = "typedArray", ax = "column", sx = "row"; is.seriesDataToSource = function(t) { return new is({ data: t, sourceFormat: I(t) ? ox : tx, fromDataset: !1 }) }, yr(is); var lx = { Must: 1, Might: 2, Not: 3 }, ux = ur(), hx = "\x00_ec_inner", cx = pa.extend({ init: function(t, e, n, i) { n = n || {}, this.option = null, this._theme = new pa(n), this._optionManager = i }, setOption: function(t, e) { L(!(hx in t), "please use chart.getOption()"), this._optionManager.setOption(t, e), this .resetOption(null) }, resetOption: function(t) { var e = !1, n = this._optionManager; if (!t || "recreate" === t) { var i = n.mountOption("recreate" === t); this.option && "recreate" !== t ? (this.restoreData(), this.mergeOption(i)) : ys.call( this, i), e = !0 } if (("timeline" === t || "media" === t) && this.restoreData(), !t || "recreate" === t || "timeline" === t) { var r = n.getTimelineOption(this); r && (this.mergeOption(r), e = !0) } if (!t || "recreate" === t || "media" === t) { var o = n.getMediaOption(this, this._api); o.length && f(o, function(t) { this.mergeOption(t, e = !0) }, this) } return e }, mergeOption: function(t) { function e(e, i) { var r = tr(t[e]), s = rr(o.get(e), r); or(s), f(s, function(t) { var n = t.option; S(n) && (t.keyInfo.mainType = e, t.keyInfo.subType = _s(e, n, t.exist)) }); var l = xs(o, i); n[e] = [], o.set(e, []), f(s, function(t, i) { var r = t.exist, s = t.option; if (L(S(s) || r, "Empty component definition"), s) { var u = qy.getClass(e, t.keyInfo.subType, !0); if (r && r.constructor === u) r.name = t.keyInfo.name, r.mergeOption(s, this), r.optionUpdated(s, !1); else { var h = a({ dependentModels: l, componentIndex: i }, t.keyInfo); r = new u(s, this, this, h), a(r, h), r.init(s, this, this, h), r .optionUpdated(null, !0) } } else r.mergeOption({}, this), r.optionUpdated({}, !1); o.get(e)[i] = r, n[e][i] = r.option }, this), "series" === e && ws(this, o.get("series")) } var n = this.option, o = this._componentsMap, s = []; as(this), f(t, function(t, e) { null != t && (qy.hasClass(e) ? e && s.push(e) : n[e] = null == n[e] ? i(t) : r( n[e], t, !0)) }), qy.topologicalTravel(s, qy.getAllClassMainTypes(), e, this), this ._seriesIndicesMap = N(this._seriesIndices = this._seriesIndices || []) }, getOption: function() { var t = i(this.option); return f(t, function(e, n) { if (qy.hasClass(n)) { for (var e = tr(e), i = e.length - 1; i >= 0; i--) sr(e[i]) && e.splice(i, 1); t[n] = e } }), delete t[hx], t }, getTheme: function() { return this._theme }, getComponent: function(t, e) { var n = this._componentsMap.get(t); return n ? n[e || 0] : void 0 }, queryComponents: function(t) { var e = t.mainType; if (!e) return []; var n = t.index, i = t.id, r = t.name, o = this._componentsMap.get(e); if (!o || !o.length) return []; var a; if (null != n) _(n) || (n = [n]), a = v(p(n, function(t) { return o[t] }), function(t) { return !!t }); else if (null != i) { var s = _(i); a = v(o, function(t) { return s && u(i, t.id) >= 0 || !s && t.id === i }) } else if (null != r) { var l = _(r); a = v(o, function(t) { return l && u(r, t.name) >= 0 || !l && t.name === r }) } else a = o.slice(); return bs(a, t) }, findComponents: function(t) { function e(t) { var e = r + "Index", n = r + "Id", i = r + "Name"; return !t || null == t[e] && null == t[n] && null == t[i] ? null : { mainType: r, index: t[e], id: t[n], name: t[i] } } function n(e) { return t.filter ? v(e, t.filter) : e } var i = t.query, r = t.mainType, o = e(i), a = o ? this.queryComponents(o) : this._componentsMap.get(r); return n(bs(a, t)) }, eachComponent: function(t, e, n) { var i = this._componentsMap; if ("function" == typeof t) n = e, e = t, i.each(function(t, i) { f(t, function(t, r) { e.call(n, i, t, r) }) }); else if (b(t)) f(i.get(t), e, n); else if (S(t)) { var r = this.findComponents(t); f(r, e, n) } }, getSeriesByName: function(t) { var e = this._componentsMap.get("series"); return v(e, function(e) { return e.name === t }) }, getSeriesByIndex: function(t) { return this._componentsMap.get("series")[t] }, getSeriesByType: function(t) { var e = this._componentsMap.get("series"); return v(e, function(e) { return e.subType === t }) }, getSeries: function() { return this._componentsMap.get("series").slice() }, getSeriesCount: function() { return this._componentsMap.get("series").length }, eachSeries: function(t, e) { Ss(this), f(this._seriesIndices, function(n) { var i = this._componentsMap.get("series")[n]; t.call(e, i, n) }, this) }, eachRawSeries: function(t, e) { f(this._componentsMap.get("series"), t, e) }, eachSeriesByType: function(t, e, n) { Ss(this), f(this._seriesIndices, function(i) { var r = this._componentsMap.get("series")[i]; r.subType === t && e.call(n, r, i) }, this) }, eachRawSeriesByType: function(t, e, n) { return f(this.getSeriesByType(t), e, n) }, isSeriesFiltered: function(t) { return Ss(this), null == this._seriesIndicesMap.get(t.componentIndex) }, getCurrentSeriesIndices: function() { return (this._seriesIndices || []).slice() }, filterSeries: function(t, e) { Ss(this); var n = v(this._componentsMap.get("series"), t, e); ws(this, n) }, restoreData: function(t) { var e = this._componentsMap; ws(this, e.get("series")); var n = []; e.each(function(t, e) { n.push(e) }), qy.topologicalTravel(n, qy.getAllClassMainTypes(), function(n) { f(e.get(n), function(e) { ("series" !== n || !vs(e, t)) && e.restoreData() }) }) } }); c(cx, Jy); var dx = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getModel", "getOption", "getViewOfComponentModel", "getViewOfSeriesModel" ], fx = {}; Is.prototype = { constructor: Is, create: function(t, e) { var n = []; f(fx, function(i) { var r = i.create(t, e); n = n.concat(r || []) }), this._coordinateSystems = n }, update: function(t, e) { f(this._coordinateSystems, function(n) { n.update && n.update(t, e) }) }, getCoordinateSystems: function() { return this._coordinateSystems.slice() } }, Is.register = function(t, e) { fx[t] = e }, Is.get = function(t) { return fx[t] }; var px = f, gx = i, vx = p, mx = r, yx = /^(min|max)?(.+)$/; Cs.prototype = { constructor: Cs, setOption: function(t, e) { t && f(tr(t.series), function(t) { t && t.data && I(t.data) && E(t.data) }), t = gx(t); var n = this._optionBackup, i = Ts.call(this, t, e, !n); this._newBaseOption = i.baseOption, n ? (Ps(n.baseOption, i.baseOption), i.timelineOptions .length && (n.timelineOptions = i.timelineOptions), i.mediaList.length && (n.mediaList = i.mediaList), i.mediaDefault && (n.mediaDefault = i.mediaDefault)) : this ._optionBackup = i }, mountOption: function(t) { var e = this._optionBackup; return this._timelineOptions = vx(e.timelineOptions, gx), this._mediaList = vx(e.mediaList, gx), this._mediaDefault = gx(e.mediaDefault), this._currentMediaIndices = [], gx(t ? e .baseOption : this._newBaseOption) }, getTimelineOption: function(t) { var e, n = this._timelineOptions; if (n.length) { var i = t.getComponent("timeline"); i && (e = gx(n[i.getCurrentIndex()], !0)) } return e }, getMediaOption: function() { var t = this._api.getWidth(), e = this._api.getHeight(), n = this._mediaList, i = this._mediaDefault, r = [], o = []; if (!n.length && !i) return o; for (var a = 0, s = n.length; s > a; a++) As(n[a].query, t, e) && r.push(a); return !r.length && i && (r = [-1]), r.length && !ks(r, this._currentMediaIndices) && (o = vx(r, function(t) { return gx(-1 === t ? i.option : n[t].option) })), this._currentMediaIndices = r, o } }; var xx = f, _x = S, bx = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"], Sx = function(t, e) { xx(Ns(t.series), function(t) { _x(t) && Rs(t) }); var n = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"]; e && n.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), xx(n, function(e) { xx(Ns(t[e]), function(t) { t && (Es(t, "axisLabel"), Es(t.axisPointer, "label")) }) }), xx(Ns(t.parallel), function(t) { var e = t && t.parallelAxisDefault; Es(e, "axisLabel"), Es(e && e.axisPointer, "label") }), xx(Ns(t.calendar), function(t) { Ls(t, "itemStyle"), Es(t, "dayLabel"), Es(t, "monthLabel"), Es(t, "yearLabel") }), xx(Ns(t.radar), function(t) { Es(t, "name") }), xx(Ns(t.geo), function(t) { _x(t) && (Bs(t), xx(Ns(t.regions), function(t) { Bs(t) })) }), xx(Ns(t.timeline), function(t) { Bs(t), Ls(t, "label"), Ls(t, "itemStyle"), Ls(t, "controlStyle", !0); var e = t.data; _(e) && f(e, function(t) { S(t) && (Ls(t, "label"), Ls(t, "itemStyle")) }) }), xx(Ns(t.toolbox), function(t) { Ls(t, "iconStyle"), xx(t.feature, function(t) { Ls(t, "iconStyle") }) }), Es(Fs(t.axisPointer), "label"), Es(Fs(t.tooltip).axisPointer, "label") }, Mx = [ ["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"] ], Ix = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"], Cx = function(t, e) { Sx(t, e), t.series = tr(t.series), f(t.series, function(t) { if (S(t)) { var e = t.type; if ("line" === e) null != t.clipOverflow && (t.clip = t.clipOverflow); else if ("pie" === e || "gauge" === e) null != t.clockWise && (t.clockwise = t .clockWise); else if ("gauge" === e) { var n = Vs(t, "pointer.color"); null != n && Ws(t, "itemStyle.color", n) } Hs(t) } }), t.dataRange && (t.visualMap = t.dataRange), f(Ix, function(e) { var n = t[e]; n && (_(n) || (n = [n]), f(n, function(t) { Hs(t) })) }) }, Tx = function(t) { var e = N(); t.eachSeries(function(t) { var n = t.get("stack"); if (n) { var i = e.get(n) || e.set(n, []), r = t.getData(), o = { stackResultDimension: r.getCalculationInfo("stackResultDimension"), stackedOverDimension: r.getCalculationInfo("stackedOverDimension"), stackedDimension: r.getCalculationInfo("stackedDimension"), stackedByDimension: r.getCalculationInfo("stackedByDimension"), isStackedByIndex: r.getCalculationInfo("isStackedByIndex"), data: r, seriesModel: t }; if (!o.stackedDimension || !o.isStackedByIndex && !o.stackedByDimension) return; i.length && r.setCalculationInfo("stackedOnSeries", i[i.length - 1].seriesModel), i .push(o) } }), e.each(Gs) }, Ax = Zs.prototype; Ax.pure = !1, Ax.persistent = !0, Ax.getSource = function() { return this._source }; var Dx = { arrayRows_column: { pure: !0, count: function() { return Math.max(0, this._data.length - this._source.startIndex) }, getItem: function(t) { return this._data[t + this._source.startIndex] }, appendData: Us }, arrayRows_row: { pure: !0, count: function() { var t = this._data[0]; return t ? Math.max(0, t.length - this._source.startIndex) : 0 }, getItem: function(t) { t += this._source.startIndex; for (var e = [], n = this._data, i = 0; i < n.length; i++) { var r = n[i]; e.push(r ? r[t] : null) } return e }, appendData: function() { throw new Error('Do not support appendData when set seriesLayoutBy: "row".') } }, objectRows: { pure: !0, count: Xs, getItem: Ys, appendData: Us }, keyedColumns: { pure: !0, count: function() { var t = this._source.dimensionsDefine[0].name, e = this._data[t]; return e ? e.length : 0 }, getItem: function(t) { for (var e = [], n = this._source.dimensionsDefine, i = 0; i < n.length; i++) { var r = this._data[n[i].name]; e.push(r ? r[t] : null) } return e }, appendData: function(t) { var e = this._data; f(t, function(t, n) { for (var i = e[n] || (e[n] = []), r = 0; r < (t || []).length; r++) i.push(t[r]) }) } }, original: { count: Xs, getItem: Ys, appendData: Us }, typedArray: { persistent: !1, pure: !0, count: function() { return this._data ? this._data.length / this._dimSize : 0 }, getItem: function(t, e) { t -= this._offset, e = e || []; for (var n = this._dimSize * t, i = 0; i < this._dimSize; i++) e[i] = this._data[n + i]; return e }, appendData: function(t) { lp && L(I(t), "Added data must be TypedArray if data in initialization is TypedArray"), this ._data = t }, clean: function() { this._offset += this.count(), this._data = null } } }, kx = { arrayRows: js, objectRows: function(t, e, n, i) { return null != n ? t[i] : t }, keyedColumns: js, original: function(t, e, n) { var i = nr(t); return null != n && i instanceof Array ? i[n] : i }, typedArray: js }, Px = { arrayRows: qs, objectRows: function(t, e) { return Ks(t[e], this._dimensionInfos[e]) }, keyedColumns: qs, original: function(t, e, n, i) { var r = t && (null == t.value ? t : t.value); return !this._rawData.pure && ir(t) && (this.hasItemOption = !0), Ks(r instanceof Array ? r[i] : r, this._dimensionInfos[e]) }, typedArray: function(t, e, n, i) { return t[i] } }, Ox = /\{@(.+?)\}/g, Lx = { getDataParams: function(t, e) { var n = this.getData(e), i = this.getRawValue(t, e), r = n.getRawIndex(t), o = n.getName(t), a = n.getRawDataItem(t), s = n.getItemVisual(t, "color"), l = n.getItemVisual(t, "borderColor"), u = this.ecModel.getComponent("tooltip"), h = u && u.get("renderMode"), c = pr(h), d = this.mainType, f = "series" === d, p = n.userOutput; return { componentType: d, componentSubType: this.subType, componentIndex: this.componentIndex, seriesType: f ? this.subType : null, seriesIndex: this.seriesIndex, seriesId: f ? this.id : null, seriesName: f ? this.name : null, name: o, dataIndex: r, data: a, dataType: e, value: i, color: s, borderColor: l, dimensionNames: p ? p.dimensionNames : null, encode: p ? p.encode : null, marker: Ga({ color: s, renderMode: c }), $vars: ["seriesName", "name", "value"] } }, getFormattedLabel: function(t, e, n, i, r) { e = e || "normal"; var o = this.getData(n), a = o.getItemModel(t), s = this.getDataParams(t, n); null != i && s.value instanceof Array && (s.value = s.value[i]); var l = a.get("normal" === e ? [r || "label", "formatter"] : [e, r || "label", "formatter"]); if ("function" == typeof l) return s.status = e, s.dimensionIndex = i, l(s); if ("string" == typeof l) { var u = Wa(l, s); return u.replace(Ox, function(e, n) { var i = n.length; return "[" === n.charAt(0) && "]" === n.charAt(i - 1) && (n = +n.slice(1, i - 1)), $s(o, t, n) }) } }, getRawValue: function(t, e) { return $s(this.getData(e), t) }, formatTooltip: function() {} }, zx = Js.prototype; zx.perform = function(t) { function e(t) { return !(t >= 1) && (t = 1), t } var n = this._upstream, i = t && t.skip; if (this._dirty && n) { var r = this.context; r.data = r.outputData = n.context.outputData } this.__pipeline && (this.__pipeline.currentTask = this); var o; this._plan && !i && (o = this._plan(this.context)); var a = e(this._modBy), s = this._modDataCount || 0, l = e(t && t.modBy), u = t && t.modDataCount || 0; (a !== l || s !== u) && (o = "reset"); var h; (this._dirty || "reset" === o) && (this._dirty = !1, h = el(this, i)), this._modBy = l, this ._modDataCount = u; var c = t && t.step; if (n ? (lp && L(null != n._outputDueEnd), this._dueEnd = n._outputDueEnd) : (lp && L(!this._progress || this._count), this._dueEnd = this._count ? this._count(this.context) : 1 / 0), this._progress) { var d = this._dueIndex, f = Math.min(null != c ? this._dueIndex + c : 1 / 0, this._dueEnd); if (!i && (h || f > d)) { var p = this._progress; if (_(p)) for (var g = 0; g < p.length; g++) tl(this, p[g], d, f, l, u); else tl(this, p, d, f, l, u) } this._dueIndex = f; var v = null != this._settedOutputEnd ? this._settedOutputEnd : f; lp && L(v >= this._outputDueEnd), this._outputDueEnd = v } else this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd : this._dueEnd; return this.unfinished() }; var Ex = function() { function t() { return n > i ? i++ : null } function e() { var t = i % a * r + Math.ceil(i / a), e = i >= n ? null : o > t ? t : i; return i++, e } var n, i, r, o, a, s = { reset: function(l, u, h, c) { i = l, n = u, r = h, o = c, a = Math.ceil(o / r), s.next = r > 1 && o > 0 ? e : t } }; return s }(); zx.dirty = function() { this._dirty = !0, this._onDirty && this._onDirty(this.context) }, zx.unfinished = function() { return this._progress && this._dueIndex < this._dueEnd }, zx.pipe = function(t) { lp && L(t && !t._disposed && t !== this), (this._downstream !== t || this._dirty) && (this._downstream = t, t._upstream = this, t.dirty()) }, zx.dispose = function() { this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this ._downstream._upstream = null), this._dirty = !1, this._disposed = !0) }, zx.getUpstream = function() { return this._upstream }, zx.getDownstream = function() { return this._downstream }, zx.setOutputEnd = function(t) { this._outputDueEnd = this._settedOutputEnd = t }; var Bx = ur(), Rx = qy.extend({ type: "series.__base__", seriesIndex: 0, coordinateSystem: null, defaultOption: null, legendVisualProvider: null, visualColorAccessPath: "itemStyle.color", visualBorderColorAccessPath: "itemStyle.borderColor", layoutMode: null, init: function(t, e, n) { this.seriesIndex = this.componentIndex, this.dataTask = Qs({ count: rl, reset: ol }), this.dataTask.context = { model: this }, this.mergeDefaultAndTheme(t, n), ss(this); var i = this.getInitialData(t, n); sl(i, this), this.dataTask.context.data = i, lp && L(i, "getInitialData returned invalid data."), Bx(this).dataBeforeProcessed = i, nl(this) }, mergeDefaultAndTheme: function(t, e) { var n = this.layoutMode, i = n ? Ja(t) : {}, o = this.subType; qy.hasClass(o) && (o += "Series"), r(t, e.getTheme().get(this.subType)), r(t, this .getDefaultOption()), er(t, "label", ["show"]), this.fillDataTextStyle(t.data), n && Qa(t, i, n) }, mergeOption: function(t, e) { t = r(this.option, t, !0), this.fillDataTextStyle(t.data); var n = this.layoutMode; n && Qa(this.option, t, n), ss(this); var i = this.getInitialData(t, e); sl(i, this), this.dataTask.dirty(), this.dataTask.context.data = i, Bx(this) .dataBeforeProcessed = i, nl(this) }, fillDataTextStyle: function(t) { if (t && !I(t)) for (var e = ["show"], n = 0; n < t.length; n++) t[n] && t[n].label && er(t[n], "label", e) }, getInitialData: function() {}, appendData: function(t) { var e = this.getRawData(); e.appendData(t.data) }, getData: function(t) { var e = ul(this); if (e) { var n = e.context.data; return null == t ? n : n.getLinkedData(t) } return Bx(this).data }, setData: function(t) { var e = ul(this); if (e) { var n = e.context; n.data !== t && e.modifyOutputEnd && e.setOutputEnd(t.count()), n.outputData = t, e !== this.dataTask && (n.data = t) } Bx(this).data = t }, getSource: function() { return os(this) }, getRawData: function() { return Bx(this).dataBeforeProcessed }, getBaseAxis: function() { var t = this.coordinateSystem; return t && t.getBaseAxis && t.getBaseAxis() }, formatTooltip: function(t, e, n, i) { function r(n) { function r(t, n) { var r = c.getDimensionInfo(n); if (r && r.otherDims.tooltip !== !1) { var d = r.type, f = "sub" + a.seriesIndex + "at" + h, p = Ga({ color: y, type: "subItem", renderMode: i, markerId: f }), g = "string" == typeof p ? p : p.content, v = (o ? g + Va(r.displayName || "-") + ": " : "") + Va("ordinal" === d ? t + "" : "time" === d ? e ? "" : Xa("yyyy/MM/dd hh:mm:ss", t) : Na(t)); v && s.push(v), l && (u[f] = y, ++h) } } var o = g(n, function(t, e, n) { var i = c.getDimensionInfo(n); return t |= i && i.tooltip !== !1 && null != i.displayName }, 0), s = []; d.length ? f(d, function(e) { r($s(c, t, e), e) }) : f(n, r); var p = o ? l ? "\n" : "
" : "", v = p + s.join(p || ", "); return { renderMode: i, content: v, style: u } } function o(t) { return { renderMode: i, content: Va(Na(t)), style: u } } var a = this; i = i || "html"; var s = "html" === i ? "
" : "\n", l = "richText" === i, u = {}, h = 0, c = this.getData(), d = c.mapDimension("defaultedTooltip", !0), p = d.length, v = this.getRawValue(t), m = _(v), y = c.getItemVisual(t, "color"); S(y) && y.colorStops && (y = (y.colorStops[0] || {}).color), y = y || "transparent"; var x = p > 1 || m && !p ? r(v) : o(p ? $s(c, t, d[0]) : m ? v[0] : v), w = x.content, b = a.seriesIndex + "at" + h, M = Ga({ color: y, type: "item", renderMode: i, markerId: b }); u[b] = y, ++h; var I = c.getName(t), C = this.name; ar(this) || (C = ""), C = C ? Va(C) + (e ? ": " : s) : ""; var T = "string" == typeof M ? M : M.content, A = e ? T + C + w : C + T + (I ? Va(I) + ": " + w : w); return { html: A, markers: u } }, isAnimationEnabled: function() { if (dp.node) return !1; var t = this.getShallow("animation"); return t && this.getData().count() > this.getShallow("animationThreshold") && (t = !1), t }, restoreData: function() { this.dataTask.dirty() }, getColorFromPalette: function(t, e, n) { var i = this.ecModel, r = Jy.getColorFromPalette.call(this, t, e, n); return r || (r = i.getColorFromPalette(t, e, n)), r }, coordDimToDataDim: function(t) { return this.getRawData().mapDimension(t, !0) }, getProgressive: function() { return this.get("progressive") }, getProgressiveThreshold: function() { return this.get("progressiveThreshold") }, getAxisTooltipData: null, getTooltipPosition: null, pipeTask: null, preventIncremental: null, pipelineContext: null }); c(Rx, Lx), c(Rx, Jy); var Nx = function() { this.group = new Cg, this.uid = ma("viewComponent") }; Nx.prototype = { constructor: Nx, init: function() {}, render: function() {}, dispose: function() {}, filterForExposedEvent: null }; var Fx = Nx.prototype; Fx.updateView = Fx.updateLayout = Fx.updateVisual = function() {}, mr(Nx), wr(Nx, { registerWhenExtend: !0 }); var Vx = function() { var t = ur(); return function(e) { var n = t(e), i = e.pipelineContext, r = n.large, o = n.progressiveRender, a = n.large = i && i.large, s = n.progressiveRender = i && i.progressiveRender; return !!(r ^ a || o ^ s) && "reset" } }, Wx = ur(), Hx = Vx(); hl.prototype = { type: "chart", init: function() {}, render: function() {}, highlight: function(t, e, n, i) { dl(t.getData(), i, "emphasis") }, downplay: function(t, e, n, i) { dl(t.getData(), i, "normal") }, remove: function() { this.group.removeAll() }, dispose: function() {}, incrementalPrepareRender: null, incrementalRender: null, updateTransform: null, filterForExposedEvent: null }; var Gx = hl.prototype; Gx.updateView = Gx.updateLayout = Gx.updateVisual = function(t, e, n, i) { this.render(t, e, n, i) }, mr(hl, ["dispose"]), wr(hl, { registerWhenExtend: !0 }), hl.markUpdateMethod = function(t, e) { Wx(t).updateMethod = e }; var Zx = { incrementalPrepareRender: { progress: function(t, e) { e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload) } }, render: { forceFirstProgress: !0, progress: function(t, e) { e.view.render(e.model, e.ecModel, e.api, e.payload) } } }, Xx = "\x00__throttleOriginMethod", Yx = "\x00__throttleRate", Ux = "\x00__throttleType", jx = { createOnAllSeries: !0, performRawSeries: !0, reset: function(t, e) { var n = t.getData(), i = (t.visualColorAccessPath || "itemStyle.color").split("."), r = t.get(i), o = !w(r) || r instanceof ay ? null : r; (!r || o) && (r = t.getColorFromPalette(t.name, null, e.getSeriesCount())), n.setVisual("color", r); var a = (t.visualBorderColorAccessPath || "itemStyle.borderColor").split("."), s = t.get(a); if (n.setVisual("borderColor", s), !e.isSeriesFiltered(t)) { o && n.each(function(e) { n.setItemVisual(e, "color", o(t.getDataParams(e))) }); var l = function(t, e) { var n = t.getItemModel(e), r = n.get(i, !0), o = n.get(a, !0); null != r && t.setItemVisual(e, "color", r), null != o && t.setItemVisual(e, "borderColor", o) }; return { dataEach: n.hasItemOption ? l : null } } } }, qx = { legend: { selector: { all: "全选", inverse: "反选" } }, toolbox: { brush: { title: { rect: "矩形选择", polygon: "圈选", lineX: "横向选择", lineY: "纵向选择", keep: "保持选择", clear: "清除选择" } }, dataView: { title: "数据视图", lang: ["数据视图", "关闭", "刷新"] }, dataZoom: { title: { zoom: "区域缩放", back: "区域缩放还原" } }, magicType: { title: { line: "切换为折线图", bar: "切换为柱状图", stack: "切换为堆叠", tiled: "切换为平铺" } }, restore: { title: "还原" }, saveAsImage: { title: "保存为图片", lang: ["右键另存为图片"] } }, series: { typeNames: { pie: "饼图", bar: "柱状图", line: "折线图", scatter: "散点图", effectScatter: "涟漪散点图", radar: "雷达图", tree: "树图", treemap: "矩形树图", boxplot: "箱型图", candlestick: "K线图", k: "K线图", heatmap: "热力图", map: "地图", parallel: "平行坐标图", lines: "线图", graph: "关系图", sankey: "桑基图", funnel: "漏斗图", gauge: "仪表盘图", pictorialBar: "象形柱图", themeRiver: "主题河流图", sunburst: "旭日图" } }, aria: { general: { withTitle: "这是一个关于“{title}”的图表。", withoutTitle: "这是一个图表," }, series: { single: { prefix: "", withName: "图表类型是{seriesType},表示{seriesName}。", withoutName: "图表类型是{seriesType}。" }, multiple: { prefix: "它由{seriesCount}个图表系列组成。", withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType},", withoutName: "第{seriesId}个系列是一个{seriesType},", separator: { middle: ";", end: "。" } } }, data: { allData: "其数据是——", partialData: "其中,前{displayCnt}项是——", withName: "{name}的数据是{value}", withoutName: "{value}", separator: { middle: ",", end: "" } } } }, Kx = function(t, e) { function n(t, e) { if ("string" != typeof t) return t; var n = t; return f(e, function(t, e) { n = n.replace(new RegExp("\\{\\s*" + e + "\\s*\\}", "g"), t) }), n } function i(t) { var e = a.get(t); if (null == e) { for (var n = t.split("."), i = qx.aria, r = 0; r < n.length; ++r) i = i[n[r]]; return i } return e } function r() { var t = e.getModel("title").option; return t && t.length && (t = t[0]), t && t.text } function o(t) { return qx.series.typeNames[t] || "自定义图" } var a = e.getModel("aria"); if (a.get("show")) { if (a.get("description")) return void t.setAttribute("aria-label", a.get("description")); var s = 0; e.eachSeries(function() { ++s }, this); var l, u = a.get("data.maxCount") || 10, h = a.get("series.maxCount") || 10, c = Math.min(s, h); if (!(1 > s)) { var d = r(); l = d ? n(i("general.withTitle"), { title: d }) : i("general.withoutTitle"); var p = [], g = s > 1 ? "series.multiple.prefix" : "series.single.prefix"; l += n(i(g), { seriesCount: s }), e.eachSeries(function(t, e) { if (c > e) { var r, a = t.get("name"), l = "series." + (s > 1 ? "multiple" : "single") + "."; r = i(a ? l + "withName" : l + "withoutName"), r = n(r, { seriesId: t.seriesIndex, seriesName: t.get("name"), seriesType: o(t.subType) }); var h = t.getData(); window.data = h, r += h.count() > u ? n(i("data.partialData"), { displayCnt: u }) : i("data.allData"); for (var d = [], f = 0; f < h.count(); f++) if (u > f) { var g = h.getName(f), v = $s(h, f); d.push(n(i(g ? "data.withName" : "data.withoutName"), { name: g, value: v })) } r += d.join(i("data.separator.middle")) + i("data.separator.end"), p.push( r) } }), l += p.join(i("series.multiple.separator.middle")) + i("series.multiple.separator.end"), t.setAttribute("aria-label", l) } } }, $x = Math.PI, Qx = function(t, e) { e = e || {}, s(e, { text: "loading", textColor: "#000", fontSize: "12px", maskColor: "rgba(255, 255, 255, 0.8)", showSpinner: !0, color: "#c23531", spinnerRadius: 10, lineWidth: 5, zlevel: 0 }); var n = new Cg, i = new Jm({ style: { fill: e.maskColor }, zlevel: e.zlevel, z: 1e4 }); n.add(i); var r = e.fontSize + " sans-serif", o = new Jm({ style: { fill: "none", text: e.text, font: r, textPosition: "right", textDistance: 10, textFill: e.textColor }, zlevel: e.zlevel, z: 10001 }); if (n.add(o), e.showSpinner) { var a = new ry({ shape: { startAngle: -$x / 2, endAngle: -$x / 2 + .1, r: e.spinnerRadius }, style: { stroke: e.color, lineCap: "round", lineWidth: e.lineWidth }, zlevel: e.zlevel, z: 10001 }); a.animateShape(!0).when(1e3, { endAngle: 3 * $x / 2 }).start("circularInOut"), a.animateShape(!0).when(1e3, { startAngle: 3 * $x / 2 }).delay(300).start("circularInOut"), n.add(a) } return n.resize = function() { var n = Xn(e.text, r), s = e.showSpinner ? e.spinnerRadius : 0, l = (t.getWidth() - 2 * s - (e.showSpinner && n ? 10 : 0) - n) / 2 - (e.showSpinner ? 0 : n / 2), u = t.getHeight() / 2; e.showSpinner && a.setShape({ cx: l, cy: u }), o.setShape({ x: l - s, y: u - s, width: 2 * s, height: 2 * s }), i.setShape({ x: 0, y: 0, width: t.getWidth(), height: t.getHeight() }) }, n.resize(), n }, Jx = yl.prototype; Jx.restoreData = function(t, e) { t.restoreData(e), this._stageTaskMap.each(function(t) { var e = t.overallTask; e && e.dirty() }) }, Jx.getPerformArgs = function(t, e) { if (t.__pipeline) { var n = this._pipelineMap.get(t.__pipeline.id), i = n.context, r = !e && n.progressiveEnabled && (!i || i.progressiveRender) && t.__idxInPipeline > n .blockIndex, o = r ? n.step : null, a = i && i.modDataCount, s = null != a ? Math.ceil(a / o) : null; return { step: o, modBy: s, modDataCount: a } } }, Jx.getPipeline = function(t) { return this._pipelineMap.get(t) }, Jx.updateStreamModes = function(t, e) { var n = this._pipelineMap.get(t.uid), i = t.getData(), r = i.count(), o = n.progressiveEnabled && e.incrementalPrepareRender && r >= n.threshold, a = t.get("large") && r >= t.get("largeThreshold"), s = "mod" === t.get("progressiveChunkMode") ? r : null; t.pipelineContext = n.context = { progressiveRender: o, modDataCount: s, large: a } }, Jx.restorePipelines = function(t) { var e = this, n = e._pipelineMap = N(); t.eachSeries(function(t) { var i = t.getProgressive(), r = t.uid; n.set(r, { id: r, head: null, tail: null, threshold: t.getProgressiveThreshold(), progressiveEnabled: i && !(t.preventIncremental && t.preventIncremental()), blockIndex: -1, step: Math.round(i || 700), count: 0 }), kl(e, t, t.dataTask) }) }, Jx.prepareStageTasks = function() { var t = this._stageTaskMap, e = this.ecInstance.getModel(), n = this.api; f(this._allHandlers, function(i) { var r = t.get(i.uid) || t.set(i.uid, []); i.reset && _l(this, i, r, e, n), i.overallReset && wl(this, i, r, e, n) }, this) }, Jx.prepareView = function(t, e, n, i) { var r = t.renderTask, o = r.context; o.model = e, o.ecModel = n, o.api = i, r.__block = !t.incrementalPrepareRender, kl(this, e, r) }, Jx.performDataProcessorTasks = function(t, e) { xl(this, this._dataProcessorHandlers, t, e, { block: !0 }) }, Jx.performVisualTasks = function(t, e, n) { xl(this, this._visualHandlers, t, e, n) }, Jx.performSeriesTasks = function(t) { var e; t.eachSeries(function(t) { e |= t.dataTask.perform() }), this.unfinished |= e }, Jx.plan = function() { this._pipelineMap.each(function(t) { var e = t.tail; do { if (e.__block) { t.blockIndex = e.__idxInPipeline; break } e = e.getUpstream() } while (e) }) }; var t_ = Jx.updatePayload = function(t, e) { "remain" !== e && (t.context.payload = e) }, e_ = Al(0); yl.wrapStageHandler = function(t, e) { return w(t) && (t = { overallReset: t, seriesType: Pl(t) }), t.uid = ma("stageHandler"), e && (t.visualType = e), t }; var n_, i_ = {}, r_ = {}; Ol(i_, cx), Ol(r_, Ms), i_.eachSeriesByType = i_.eachRawSeriesByType = function(t) { n_ = t }, i_.eachComponent = function(t) { "series" === t.mainType && t.subType && (n_ = t.subType) }; var o_ = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF" ], a_ = { color: o_, colorLayer: [ ["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF" ], o_ ] }, s_ = "#eee", l_ = function() { return { axisLine: { lineStyle: { color: s_ } }, axisTick: { lineStyle: { color: s_ } }, axisLabel: { textStyle: { color: s_ } }, splitLine: { lineStyle: { type: "dashed", color: "#aaa" } }, splitArea: { areaStyle: { color: s_ } } } }, u_ = ["#dd6b66", "#759aa0", "#e69d87", "#8dc1a9", "#ea7e53", "#eedd78", "#73a373", "#73b9bc", "#7289ab", "#91ca8c", "#f49f42" ], h_ = { color: u_, backgroundColor: "#333", tooltip: { axisPointer: { lineStyle: { color: s_ }, crossStyle: { color: s_ }, label: { color: "#000" } } }, legend: { textStyle: { color: s_ } }, textStyle: { color: s_ }, title: { textStyle: { color: s_ } }, toolbox: { iconStyle: { normal: { borderColor: s_ } } }, dataZoom: { textStyle: { color: s_ } }, visualMap: { textStyle: { color: s_ } }, timeline: { lineStyle: { color: s_ }, itemStyle: { normal: { color: u_[1] } }, label: { normal: { textStyle: { color: s_ } } }, controlStyle: { normal: { color: s_, borderColor: s_ } } }, timeAxis: l_(), logAxis: l_(), valueAxis: l_(), categoryAxis: l_(), line: { symbol: "circle" }, graph: { color: u_ }, gauge: { title: { textStyle: { color: s_ } } }, candlestick: { itemStyle: { normal: { color: "#FD1050", color0: "#0CF49B", borderColor: "#FD1050", borderColor0: "#0CF49B" } } } }; h_.categoryAxis.splitLine.show = !1, qy.extend({ type: "dataset", defaultOption: { seriesLayoutBy: ax, sourceHeader: null, dimensions: null, source: null }, optionUpdated: function() { rs(this) } }), Nx.extend({ type: "dataset" }); var c_ = eo.extend({ type: "ellipse", shape: { cx: 0, cy: 0, rx: 0, ry: 0 }, buildPath: function(t, e) { var n = .5522848, i = e.cx, r = e.cy, o = e.rx, a = e.ry, s = o * n, l = a * n; t.moveTo(i - o, r), t.bezierCurveTo(i - o, r - l, i - s, r - a, i, r - a), t.bezierCurveTo( i + s, r - a, i + o, r - l, i + o, r), t.bezierCurveTo(i + o, r + l, i + s, r + a, i, r + a), t.bezierCurveTo(i - s, r + a, i - o, r + l, i - o, r), t.closePath() } }), d_ = /[\s,]+/; zl.prototype.parse = function(t, e) { e = e || {}; var n = Ll(t); if (!n) throw new Error("Illegal svg"); var i = new Cg; this._root = i; var r = n.getAttribute("viewBox") || "", o = parseFloat(n.getAttribute("width") || e.width), a = parseFloat(n.getAttribute("height") || e.height); isNaN(o) && (o = null), isNaN(a) && (a = null), Nl(n, i, null, !0); for (var s = n.firstChild; s;) this._parseNode(s, i), s = s.nextSibling; var l, u; if (r) { var h = z(r).split(d_); h.length >= 4 && (l = { x: parseFloat(h[0] || 0), y: parseFloat(h[1] || 0), width: parseFloat(h[2]), height: parseFloat(h[3]) }) } if (l && null != o && null != a && (u = Hl(l, o, a), !e.ignoreViewBox)) { var c = i; i = new Cg, i.add(c), c.scale = u.scale.slice(), c.position = u.position.slice() } return e.ignoreRootClip || null == o || null == a || i.setClipPath(new Jm({ shape: { x: 0, y: 0, width: o, height: a } })), { root: i, width: o, height: a, viewBoxRect: l, viewBoxTransform: u } }, zl.prototype._parseNode = function(t, e) { var n = t.nodeName.toLowerCase(); "defs" === n ? this._isDefine = !0 : "text" === n && (this._isText = !0); var i; if (this._isDefine) { var r = p_[n]; if (r) { var o = r.call(this, t), a = t.getAttribute("id"); a && (this._defs[a] = o) } } else { var r = f_[n]; r && (i = r.call(this, t, e), e.add(i)) } for (var s = t.firstChild; s;) 1 === s.nodeType && this._parseNode(s, i), 3 === s.nodeType && this ._isText && this._parseText(s, i), s = s.nextSibling; "defs" === n ? this._isDefine = !1 : "text" === n && (this._isText = !1) }, zl.prototype._parseText = function(t, e) { if (1 === t.nodeType) { var n = t.getAttribute("dx") || 0, i = t.getAttribute("dy") || 0; this._textX += parseFloat(n), this._textY += parseFloat(i) } var r = new Wm({ style: { text: t.textContent, transformText: !0 }, position: [this._textX || 0, this._textY || 0] }); Bl(e, r), Nl(t, r, this._defs); var o = r.style.fontSize; o && 9 > o && (r.style.fontSize = 9, r.scale = r.scale || [1, 1], r.scale[0] *= o / 9, r.scale[1] *= o / 9); var a = r.getBoundingRect(); return this._textX += a.width, e.add(r), r }; var f_ = { g: function(t, e) { var n = new Cg; return Bl(e, n), Nl(t, n, this._defs), n }, rect: function(t, e) { var n = new Jm; return Bl(e, n), Nl(t, n, this._defs), n.setShape({ x: parseFloat(t.getAttribute("x") || 0), y: parseFloat(t.getAttribute("y") || 0), width: parseFloat(t.getAttribute("width") || 0), height: parseFloat(t.getAttribute("height") || 0) }), n }, circle: function(t, e) { var n = new Hm; return Bl(e, n), Nl(t, n, this._defs), n.setShape({ cx: parseFloat(t.getAttribute("cx") || 0), cy: parseFloat(t.getAttribute("cy") || 0), r: parseFloat(t.getAttribute("r") || 0) }), n }, line: function(t, e) { var n = new ey; return Bl(e, n), Nl(t, n, this._defs), n.setShape({ x1: parseFloat(t.getAttribute("x1") || 0), y1: parseFloat(t.getAttribute("y1") || 0), x2: parseFloat(t.getAttribute("x2") || 0), y2: parseFloat(t.getAttribute("y2") || 0) }), n }, ellipse: function(t, e) { var n = new c_; return Bl(e, n), Nl(t, n, this._defs), n.setShape({ cx: parseFloat(t.getAttribute("cx") || 0), cy: parseFloat(t.getAttribute("cy") || 0), rx: parseFloat(t.getAttribute("rx") || 0), ry: parseFloat(t.getAttribute("ry") || 0) }), n }, polygon: function(t, e) { var n = t.getAttribute("points"); n && (n = Rl(n)); var i = new qm({ shape: { points: n || [] } }); return Bl(e, i), Nl(t, i, this._defs), i }, polyline: function(t, e) { var n = new eo; Bl(e, n), Nl(t, n, this._defs); var i = t.getAttribute("points"); i && (i = Rl(i)); var r = new Km({ shape: { points: i || [] } }); return r }, image: function(t, e) { var n = new Ai; return Bl(e, n), Nl(t, n, this._defs), n.setStyle({ image: t.getAttribute("xlink:href"), x: t.getAttribute("x"), y: t.getAttribute("y"), width: t.getAttribute("width"), height: t.getAttribute("height") }), n }, text: function(t, e) { var n = t.getAttribute("x") || 0, i = t.getAttribute("y") || 0, r = t.getAttribute("dx") || 0, o = t.getAttribute("dy") || 0; this._textX = parseFloat(n) + parseFloat(r), this._textY = parseFloat(i) + parseFloat(o); var a = new Cg; return Bl(e, a), Nl(t, a, this._defs), a }, tspan: function(t, e) { var n = t.getAttribute("x"), i = t.getAttribute("y"); null != n && (this._textX = parseFloat(n)), null != i && (this._textY = parseFloat(i)); var r = t.getAttribute("dx") || 0, o = t.getAttribute("dy") || 0, a = new Cg; return Bl(e, a), Nl(t, a, this._defs), this._textX += r, this._textY += o, a }, path: function(t, e) { var n = t.getAttribute("d") || "", i = oo(n); return Bl(e, i), Nl(t, i, this._defs), i } }, p_ = { lineargradient: function(t) { var e = parseInt(t.getAttribute("x1") || 0, 10), n = parseInt(t.getAttribute("y1") || 0, 10), i = parseInt(t.getAttribute("x2") || 10, 10), r = parseInt(t.getAttribute("y2") || 0, 10), o = new sy(e, n, i, r); return El(t, o), o }, radialgradient: function() {} }, g_ = { fill: "fill", stroke: "stroke", "stroke-width": "lineWidth", opacity: "opacity", "fill-opacity": "fillOpacity", "stroke-opacity": "strokeOpacity", "stroke-dasharray": "lineDash", "stroke-dashoffset": "lineDashOffset", "stroke-linecap": "lineCap", "stroke-linejoin": "lineJoin", "stroke-miterlimit": "miterLimit", "font-family": "fontFamily", "font-size": "fontSize", "font-style": "fontStyle", "font-weight": "fontWeight", "text-align": "textAlign", "alignment-baseline": "textBaseline" }, v_ = /url\(\s*#(.*?)\)/, m_ = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g, y_ = /([^\s:;]+)\s*:\s*([^:;]+)/g, x_ = N(), __ = { registerMap: function(t, e, n) { var i; return _(e) ? i = e : e.svg ? i = [{ type: "svg", source: e.svg, specialAreas: e.specialAreas }] : (e.geoJson && !e.features && (n = e.specialAreas, e = e.geoJson), i = [{ type: "geoJSON", source: e, specialAreas: n }]), f(i, function(t) { var e = t.type; "geoJson" === e && (e = t.type = "geoJSON"); var n = w_[e]; lp && L(n, "Illegal map type: " + e), n(t) }), x_.set(t, i) }, retrieveMap: function(t) { return x_.get(t) } }, w_ = { geoJSON: function(t) { var e = t.source; t.geoJSON = b(e) ? "undefined" != typeof JSON && JSON.parse ? JSON.parse(e) : new Function( "return (" + e + ");")() : e }, svg: function(t) { t.svgXML = Ll(t.source) } }, b_ = L, S_ = f, M_ = w, I_ = S, C_ = qy.parseClassType, T_ = "4.8.0", A_ = { zrender: "4.3.1" }, D_ = 1, k_ = 1e3, P_ = 800, O_ = 900, L_ = 5e3, z_ = 1e3, E_ = 1100, B_ = 2e3, R_ = 3e3, N_ = 3500, F_ = 4e3, V_ = 5e3, W_ = { PROCESSOR: { FILTER: k_, SERIES_FILTER: P_, STATISTIC: L_ }, VISUAL: { LAYOUT: z_, PROGRESSIVE_LAYOUT: E_, GLOBAL: B_, CHART: R_, POST_CHART_LAYOUT: N_, COMPONENT: F_, BRUSH: V_ } }, H_ = "__flagInMainProcess", G_ = "__optionUpdated", Z_ = /^[a-zA-Z0-9_]+$/; Zl.prototype.on = Gl("on", !0), Zl.prototype.off = Gl("off", !0), Zl.prototype.one = Gl("one", !0), c(Zl, zp); var X_ = Xl.prototype; X_._onframe = function() { if (!this._disposed) { var t = this._scheduler; if (this[G_]) { var e = this[G_].silent; this[H_] = !0, Ul(this), Y_.update.call(this), this[H_] = !1, this[G_] = !1, $l.call(this, e), Ql.call(this, e) } else if (t.unfinished) { var n = D_, i = this._model, r = this._api; t.unfinished = !1; do { var o = +new Date; t.performSeriesTasks(i), t.performDataProcessorTasks(i), ql(this, i), t.performVisualTasks( i), ru(this, this._model, r, "remain"), n -= +new Date - o } while (n > 0 && t.unfinished); t.unfinished || this._zr.flush() } } }, X_.getDom = function() { return this._dom }, X_.getZr = function() { return this._zr }, X_.setOption = function(t, e, n) { if (lp && b_(!this[H_], "`setOption` should not be called during main process."), this._disposed) return void au(this.id); var i; if (I_(e) && (n = e.lazyUpdate, i = e.silent, e = e.notMerge), this[H_] = !0, !this._model || e) { var r = new Cs(this._api), o = this._theme, a = this._model = new cx; a.scheduler = this._scheduler, a.init(null, null, o, r) } this._model.setOption(t, $_), n ? (this[G_] = { silent: i }, this[H_] = !1) : (Ul(this), Y_.update.call(this), this._zr.flush(), this[G_] = !1, this[H_] = !1, $l.call(this, i), Ql.call(this, i)) }, X_.setTheme = function() { console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0") }, X_.getModel = function() { return this._model }, X_.getOption = function() { return this._model && this._model.getOption() }, X_.getWidth = function() { return this._zr.getWidth() }, X_.getHeight = function() { return this._zr.getHeight() }, X_.getDevicePixelRatio = function() { return this._zr.painter.dpr || window.devicePixelRatio || 1 }, X_.getRenderedCanvas = function(t) { if (dp.canvasSupported) { t = t || {}, t.pixelRatio = t.pixelRatio || 1, t.backgroundColor = t.backgroundColor || this._model .get("backgroundColor"); var e = this._zr; return e.painter.getRenderedCanvas(t) } }, X_.getSvgDataURL = function() { if (dp.svgSupported) { var t = this._zr, e = t.storage.getDisplayList(); return f(e, function(t) { t.stopAnimation(!0) }), t.painter.toDataURL() } }, X_.getDataURL = function(t) { if (this._disposed) return void au(this.id); t = t || {}; var e = t.excludeComponents, n = this._model, i = [], r = this; S_(e, function(t) { n.eachComponent({ mainType: t }, function(t) { var e = r._componentsMap[t.__viewId]; e.group.ignore || (i.push(e), e.group.ignore = !0) }) }); var o = "svg" === this._zr.painter.getType() ? this.getSvgDataURL() : this.getRenderedCanvas(t) .toDataURL("image/" + (t && t.type || "png")); return S_(i, function(t) { t.group.ignore = !1 }), o }, X_.getConnectedDataURL = function(t) { if (this._disposed) return void au(this.id); if (dp.canvasSupported) { var e = "svg" === t.type, n = this.group, r = Math.min, o = Math.max, a = 1 / 0; if (iw[n]) { var s = a, l = a, u = -a, h = -a, c = [], d = t && t.pixelRatio || 1; f(nw, function(a) { if (a.group === n) { var d = e ? a.getZr().painter.getSvgDom().innerHTML : a.getRenderedCanvas(i(t)), f = a.getDom().getBoundingClientRect(); s = r(f.left, s), l = r(f.top, l), u = o(f.right, u), h = o(f.bottom, h), c .push({ dom: d, left: f.left, top: f.top }) } }), s *= d, l *= d, u *= d, h *= d; var p = u - s, g = h - l, v = Sp(), m = qi(v, { renderer: e ? "svg" : "canvas" }); if (m.resize({ width: p, height: g }), e) { var y = ""; return S_(c, function(t) { var e = t.left - s, n = t.top - l; y += '' + t.dom + "" }), m.painter.getSvgRoot().innerHTML = y, t.connectedBackgroundColor && m.painter .setBackgroundColor(t.connectedBackgroundColor), m.refreshImmediately(), m.painter .toDataURL() } return t.connectedBackgroundColor && m.add(new Jm({ shape: { x: 0, y: 0, width: p, height: g }, style: { fill: t.connectedBackgroundColor } })), S_(c, function(t) { var e = new Ai({ style: { x: t.left * d - s, y: t.top * d - l, image: t.dom } }); m.add(e) }), m.refreshImmediately(), v.toDataURL("image/" + (t && t.type || "png")) } return this.getDataURL(t) } }, X_.convertToPixel = x(Yl, "convertToPixel"), X_.convertFromPixel = x(Yl, "convertFromPixel"), X_ .containPixel = function(t, e) { if (this._disposed) return void au(this.id); var n, i = this._model; return t = hr(i, t), f(t, function(t, i) { i.indexOf("Models") >= 0 && f(t, function(t) { var r = t.coordinateSystem; if (r && r.containPoint) n |= !!r.containPoint(e); else if ("seriesModels" === i) { var o = this._chartsMap[t.__viewId]; o && o.containPoint ? n |= o.containPoint(e, t) : lp && console.warn(i + ": " + (o ? "The found component do not support containPoint." : "No view mapping to the found component.")) } else lp && console.warn(i + ": containPoint is not supported") }, this) }, this), !!n }, X_.getVisual = function(t, e) { var n = this._model; t = hr(n, t, { defaultMainType: "series" }); var i = t.seriesModel; lp && (i || console.warn("There is no specified seires model")); var r = i.getData(), o = t.hasOwnProperty("dataIndexInside") ? t.dataIndexInside : t.hasOwnProperty("dataIndex") ? r .indexOfRawIndex(t.dataIndex) : null; return null != o ? r.getItemVisual(o, e) : r.getVisual(e) }, X_.getViewOfComponentModel = function(t) { return this._componentsMap[t.__viewId] }, X_.getViewOfSeriesModel = function(t) { return this._chartsMap[t.__viewId] }; var Y_ = { prepareAndUpdate: function(t) { Ul(this), Y_.update.call(this, t) }, update: function(t) { var e = this._model, n = this._api, i = this._zr, r = this._coordSysMgr, o = this._scheduler; if (e) { o.restoreData(e, t), o.performSeriesTasks(e), r.create(e, n), o.performDataProcessorTasks(e, t), ql(this, e), r.update(e, n), eu(e), o.performVisualTasks(e, t), nu(this, e, n, t); var a = e.get("backgroundColor") || "transparent"; if (dp.canvasSupported) i.setBackgroundColor(a); else { var s = tn(a); a = hn(s, "rgb"), 0 === s[3] && (a = "transparent") } ou(e, n) } }, updateTransform: function(t) { var e = this._model, n = this, i = this._api; if (e) { var r = []; e.eachComponent(function(o, a) { var s = n.getViewOfComponentModel(a); if (s && s.__alive) if (s.updateTransform) { var l = s.updateTransform(a, e, i, t); l && l.update && r.push(s) } else r.push(s) }); var o = N(); e.eachSeries(function(r) { var a = n._chartsMap[r.__viewId]; if (a.updateTransform) { var s = a.updateTransform(r, e, i, t); s && s.update && o.set(r.uid, 1) } else o.set(r.uid, 1) }), eu(e), this._scheduler.performVisualTasks(e, t, { setDirty: !0, dirtyMap: o }), ru(n, e, i, t, o), ou(e, this._api) } }, updateView: function(t) { var e = this._model; e && (hl.markUpdateMethod(t, "updateView"), eu(e), this._scheduler.performVisualTasks(e, t, { setDirty: !0 }), nu(this, this._model, this._api, t), ou(e, this._api)) }, updateVisual: function(t) { Y_.update.call(this, t) }, updateLayout: function(t) { Y_.update.call(this, t) } }; X_.resize = function(t) { if (lp && b_(!this[H_], "`resize` should not be called during main process."), this._disposed) return void au(this.id); this._zr.resize(t); var e = this._model; if (this._loadingFX && this._loadingFX.resize(), e) { var n = e.resetOption("media"), i = t && t.silent; this[H_] = !0, n && Ul(this), Y_.update.call(this), this[H_] = !1, $l.call(this, i), Ql.call(this, i) } }, X_.showLoading = function(t, e) { if (this._disposed) return void au(this.id); if (I_(t) && (e = t, t = ""), t = t || "default", this.hideLoading(), !ew[t]) return void(lp && console .warn("Loading effects " + t + " not exists.")); var n = ew[t](this._api, e), i = this._zr; this._loadingFX = n, i.add(n) }, X_.hideLoading = function() { return this._disposed ? void au(this.id) : (this._loadingFX && this._zr.remove(this._loadingFX), void( this._loadingFX = null)) }, X_.makeActionFromEvent = function(t) { var e = a({}, t); return e.type = q_[t.type], e }, X_.dispatchAction = function(t, e) { if (this._disposed) return void au(this.id); if (I_(e) || (e = { silent: !!e }), j_[t.type] && this._model) { if (this[H_]) return void this._pendingActions.push(t); Kl.call(this, t, e.silent), e.flush ? this._zr.flush(!0) : e.flush !== !1 && dp.browser.weChat && this._throttledZrFlush(), $l.call(this, e.silent), Ql.call(this, e.silent) } }, X_.appendData = function(t) { if (this._disposed) return void au(this.id); var e = t.seriesIndex, n = this.getModel(), i = n.getSeriesByIndex(e); lp && b_(t.data && i), i.appendData(t), this._scheduler.unfinished = !0 }, X_.on = Gl("on", !1), X_.off = Gl("off", !1), X_.one = Gl("one", !1); var U_ = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu" ]; X_._initEvents = function() { S_(U_, function(t) { var e = function(e) { var n, i = this.getModel(), r = e.target, o = "globalout" === t; if (o) n = {}; else if (r && null != r.dataIndex) { var s = r.dataModel || i.getSeriesByIndex(r.seriesIndex); n = s && s.getDataParams(r.dataIndex, r.dataType, r) || {} } else r && r.eventData && (n = a({}, r.eventData)); if (n) { var l = n.componentType, u = n.componentIndex; ("markLine" === l || "markPoint" === l || "markArea" === l) && (l = "series", u = n.seriesIndex); var h = l && null != u && i.getComponent(l, u), c = h && this["series" === h.mainType ? "_chartsMap" : "_componentsMap"][h .__viewId ]; lp && (o || h && c || console.warn("model or view can not be found by params")), n.event = e, n.type = t, this._ecEventProcessor.eventInfo = { targetEl: r, packedEvent: n, model: h, view: c }, this.trigger(t, n) } }; e.zrEventfulCallAtLast = !0, this._zr.on(t, e, this) }, this), S_(q_, function(t, e) { this._messageCenter.on(e, function(t) { this.trigger(e, t) }, this) }, this) }, X_.isDisposed = function() { return this._disposed }, X_.clear = function() { return this._disposed ? void au(this.id) : void this.setOption({ series: [] }, !0) }, X_.dispose = function() { if (this._disposed) return void au(this.id); this._disposed = !0, dr(this.getDom(), aw, ""); var t = this._api, e = this._model; S_(this._componentsViews, function(n) { n.dispose(e, t) }), S_(this._chartsViews, function(n) { n.dispose(e, t) }), this._zr.dispose(), delete nw[this.id] }, c(Xl, zp), cu.prototype = { constructor: cu, normalizeQuery: function(t) { var e = {}, n = {}, i = {}; if (b(t)) { var r = C_(t); e.mainType = r.main || null, e.subType = r.sub || null } else { var o = ["Index", "Name", "Id"], a = { name: 1, dataIndex: 1, dataType: 1 }; f(t, function(t, r) { for (var s = !1, l = 0; l < o.length; l++) { var u = o[l], h = r.lastIndexOf(u); if (h > 0 && h === r.length - u.length) { var c = r.slice(0, h); "data" !== c && (e.mainType = c, e[u.toLowerCase()] = t, s = !0) } } a.hasOwnProperty(r) && (n[r] = t, s = !0), s || (i[r] = t) }) } return { cptQuery: e, dataQuery: n, otherQuery: i } }, filter: function(t, e) { function n(t, e, n, i) { return null == t[n] || e[i || n] === t[n] } var i = this.eventInfo; if (!i) return !0; var r = i.targetEl, o = i.packedEvent, a = i.model, s = i.view; if (!a || !s) return !0; var l = e.cptQuery, u = e.dataQuery; return n(l, a, "mainType") && n(l, a, "subType") && n(l, a, "index", "componentIndex") && n(l, a, "name") && n(l, a, "id") && n(u, o, "name") && n(u, o, "dataIndex") && n(u, o, "dataType") && (!s.filterForExposedEvent || s.filterForExposedEvent(t, e.otherQuery, r, o)) }, afterTrigger: function() { this.eventInfo = null } }; var j_ = {}, q_ = {}, K_ = [], $_ = [], Q_ = [], J_ = [], tw = {}, ew = {}, nw = {}, iw = {}, rw = new Date - 0, ow = new Date - 0, aw = "_echarts_instance_", sw = gu; Tu(B_, jx), _u(Cx), wu(O_, Tx), Du("default", Qx), Su({ type: "highlight", event: "highlight", update: "highlight" }, V), Su({ type: "downplay", event: "downplay", update: "downplay" }, V), xu("light", a_), xu("dark", h_); var lw = {}; Nu.prototype = { constructor: Nu, add: function(t) { return this._add = t, this }, update: function(t) { return this._update = t, this }, remove: function(t) { return this._remove = t, this }, execute: function() { var t, e = this._old, n = this._new, i = {}, r = {}, o = [], a = []; for (Fu(e, i, o, "_oldKeyGetter", this), Fu(n, r, a, "_newKeyGetter", this), t = 0; t < e .length; t++) { var s = o[t], l = r[s]; if (null != l) { var u = l.length; u ? (1 === u && (r[s] = null), l = l.shift()) : r[s] = null, this._update && this ._update(l, t) } else this._remove && this._remove(t) } for (var t = 0; t < a.length; t++) { var s = a[t]; if (r.hasOwnProperty(s)) { var l = r[s]; if (null == l) continue; if (l.length) for (var h = 0, u = l.length; u > h; h++) this._add && this._add(l[h]); else this._add && this._add(l) } } } }; var uw = N(["tooltip", "label", "itemName", "itemId", "seriesName"]), hw = S, cw = "undefined", dw = -1, fw = "e\x00\x00", pw = { "float": typeof Float64Array === cw ? Array : Float64Array, "int": typeof Int32Array === cw ? Array : Int32Array, ordinal: Array, number: Array, time: Array }, gw = typeof Uint32Array === cw ? Array : Uint32Array, vw = typeof Int32Array === cw ? Array : Int32Array, mw = typeof Uint16Array === cw ? Array : Uint16Array, yw = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_rawData", "_chunkSize", "_chunkCount", "_dimValueGetter", "_count", "_rawCount", "_nameDimIdx", "_idDimIdx" ], xw = ["_extent", "_approximateExtent", "_rawExtent"], _w = function(t, e) { t = t || ["x", "y"]; for (var n = {}, i = [], r = {}, o = 0; o < t.length; o++) { var a = t[o]; b(a) ? a = new Zu({ name: a }) : a instanceof Zu || (a = new Zu(a)); var s = a.name; a.type = a.type || "float", a.coordDim || (a.coordDim = s, a.coordDimIndex = 0), a.otherDims = a .otherDims || {}, i.push(s), n[s] = a, a.index = o, a.createInvertedIndices && (r[s] = []) } this.dimensions = i, this._dimensionInfos = n, this.hostModel = e, this.dataType, this._indices = null, this._count = 0, this._rawCount = 0, this._storage = {}, this._nameList = [], this._idList = [], this._optionModels = [], this._visual = {}, this._layout = {}, this._itemVisuals = [], this .hasItemVisual = {}, this._itemLayouts = [], this._graphicEls = [], this._chunkSize = 1e5, this ._chunkCount = 0, this._rawData, this._rawExtent = {}, this._extent = {}, this ._approximateExtent = {}, this._dimensionsSummary = Vu(this), this._invertedIndicesMap = r, this ._calculationInfo = {}, this.userOutput = this._dimensionsSummary.userOutput }, ww = _w.prototype; ww.type = "list", ww.hasItemOption = !0, ww.getDimension = function(t) { return ("number" == typeof t || !isNaN(t) && !this._dimensionInfos.hasOwnProperty(t)) && (t = this .dimensions[t]), t }, ww.getDimensionInfo = function(t) { return this._dimensionInfos[this.getDimension(t)] }, ww.getDimensionsOnCoord = function() { return this._dimensionsSummary.dataDimsOnCoord.slice() }, ww.mapDimension = function(t, e) { var n = this._dimensionsSummary; if (null == e) return n.encodeFirstDimNotExtra[t]; var i = n.encode[t]; return e === !0 ? (i || []).slice() : i && i[e] }, ww.initData = function(t, e, n) { var i = is.isInstance(t) || d(t); if (i && (t = new Zs(t, this.dimensions.length)), lp && !i && ("function" != typeof t.getItem || "function" != typeof t.count)) throw new Error("Inavlid data provider."); this._rawData = t, this._storage = {}, this._indices = null, this._nameList = e || [], this ._idList = [], this._nameRepeatCount = {}, n || (this.hasItemOption = !1), this.defaultDimValueGetter = Px[this._rawData.getSource().sourceFormat], this._dimValueGetter = n = n || this .defaultDimValueGetter, this._dimValueGetterArrayRows = Px.arrayRows, this._rawExtent = {}, this ._initDataFromProvider(0, t.count()), t.pure && (this.hasItemOption = !1) }, ww.getProvider = function() { return this._rawData }, ww.appendData = function(t) { lp && L(!this._indices, "appendData can only be called on raw data."); var e = this._rawData, n = this.count(); e.appendData(t); var i = e.count(); e.persistent || (i += n), this._initDataFromProvider(n, i) }, ww.appendValues = function(t, e) { for (var n = this._chunkSize, i = this._storage, r = this.dimensions, o = r.length, a = this._rawExtent, s = this.count(), l = s + Math.max(t.length, e ? e.length : 0), u = this._chunkCount, h = 0; o > h; h++) { var c = r[h]; a[c] || (a[c] = rh()), i[c] || (i[c] = []), ju(i, this._dimensionInfos[c], n, u, l), this ._chunkCount = i[c].length } for (var d = new Array(o), f = s; l > f; f++) { for (var p = f - s, g = Math.floor(f / n), v = f % n, m = 0; o > m; m++) { var c = r[m], y = this._dimValueGetterArrayRows(t[p] || d, c, p, m); i[c][g][v] = y; var x = a[c]; y < x[0] && (x[0] = y), y > x[1] && (x[1] = y) } e && (this._nameList[f] = e[p]) } this._rawCount = this._count = l, this._extent = {}, qu(this) }, ww._initDataFromProvider = function(t, e) { if (!(t >= e)) { for (var n, i = this._chunkSize, r = this._rawData, o = this._storage, a = this.dimensions, s = a .length, l = this._dimensionInfos, u = this._nameList, h = this._idList, c = this ._rawExtent, d = this._nameRepeatCount = {}, f = this._chunkCount, p = 0; s > p; p++) { var g = a[p]; c[g] || (c[g] = rh()); var v = l[g]; 0 === v.otherDims.itemName && (n = this._nameDimIdx = p), 0 === v.otherDims.itemId && (this ._idDimIdx = p), o[g] || (o[g] = []), ju(o, v, i, f, e), this._chunkCount = o[g].length } for (var m = new Array(s), y = t; e > y; y++) { m = r.getItem(y, m); for (var x = Math.floor(y / i), _ = y % i, w = 0; s > w; w++) { var g = a[w], b = o[g][x], S = this._dimValueGetter(m, g, y, w); b[_] = S; var M = c[g]; S < M[0] && (M[0] = S), S > M[1] && (M[1] = S) } if (!r.pure) { var I = u[y]; if (m && null == I) if (null != m.name) u[y] = I = m.name; else if (null != n) { var C = a[n], T = o[C][x]; if (T) { I = T[_]; var A = l[C].ordinalMeta; A && A.categories.length && (I = A.categories[I]) } } var D = null == m ? null : m.id; null == D && null != I && (d[I] = d[I] || 0, D = I, d[I] > 0 && (D += "__ec__" + d[I]), d[ I]++), null != D && (h[y] = D) } }!r.persistent && r.clean && r.clean(), this._rawCount = this._count = e, this._extent = {}, qu( this) } }, ww.count = function() { return this._count }, ww.getIndices = function() { var t, e = this._indices; if (e) { var n = e.constructor, i = this._count; if (n === Array) { t = new n(i); for (var r = 0; i > r; r++) t[r] = e[r] } else t = new n(e.buffer, 0, i) } else for (var n = Xu(this), t = new n(this.count()), r = 0; r < t.length; r++) t[r] = r; return t }, ww.get = function(t, e) { if (!(e >= 0 && e < this._count)) return 0 / 0; var n = this._storage; if (!n[t]) return 0 / 0; e = this.getRawIndex(e); var i = Math.floor(e / this._chunkSize), r = e % this._chunkSize, o = n[t][i], a = o[r]; return a }, ww.getByRawIndex = function(t, e) { if (!(e >= 0 && e < this._rawCount)) return 0 / 0; var n = this._storage[t]; if (!n) return 0 / 0; var i = Math.floor(e / this._chunkSize), r = e % this._chunkSize, o = n[i]; return o[r] }, ww._getFast = function(t, e) { var n = Math.floor(e / this._chunkSize), i = e % this._chunkSize, r = this._storage[t][n]; return r[i] }, ww.getValues = function(t, e) { var n = []; _(t) || (e = t, t = this.dimensions); for (var i = 0, r = t.length; r > i; i++) n.push(this.get(t[i], e)); return n }, ww.hasValue = function(t) { for (var e = this._dimensionsSummary.dataDimsOnCoord, n = 0, i = e.length; i > n; n++) if (isNaN(this.get(e[n], t))) return !1; return !0 }, ww.getDataExtent = function(t) { t = this.getDimension(t); var e = this._storage[t], n = rh(); if (!e) return n; var i, r = this.count(), o = !this._indices; if (o) return this._rawExtent[t].slice(); if (i = this._extent[t]) return i.slice(); i = n; for (var a = i[0], s = i[1], l = 0; r > l; l++) { var u = this._getFast(t, this.getRawIndex(l)); a > u && (a = u), u > s && (s = u) } return i = [a, s], this._extent[t] = i, i }, ww.getApproximateExtent = function(t) { return t = this.getDimension(t), this._approximateExtent[t] || this.getDataExtent(t) }, ww.setApproximateExtent = function(t, e) { e = this.getDimension(e), this._approximateExtent[e] = t.slice() }, ww.getCalculationInfo = function(t) { return this._calculationInfo[t] }, ww.setCalculationInfo = function(t, e) { hw(t) ? a(this._calculationInfo, t) : this._calculationInfo[t] = e }, ww.getSum = function(t) { var e = this._storage[t], n = 0; if (e) for (var i = 0, r = this.count(); r > i; i++) { var o = this.get(t, i); isNaN(o) || (n += o) } return n }, ww.getMedian = function(t) { var e = []; this.each(t, function(t) { isNaN(t) || e.push(t) }); var n = [].concat(e).sort(function(t, e) { return t - e }), i = this.count(); return 0 === i ? 0 : i % 2 === 1 ? n[(i - 1) / 2] : (n[i / 2] + n[i / 2 - 1]) / 2 }, ww.rawIndexOf = function(t, e) { var n = t && this._invertedIndicesMap[t]; if (lp && !n) throw new Error("Do not supported yet"); var i = n[e]; return null == i || isNaN(i) ? dw : i }, ww.indexOfName = function(t) { for (var e = 0, n = this.count(); n > e; e++) if (this.getName(e) === t) return e; return -1 }, ww.indexOfRawIndex = function(t) { if (t >= this._rawCount || 0 > t) return -1; if (!this._indices) return t; var e = this._indices, n = e[t]; if (null != n && n < this._count && n === t) return t; for (var i = 0, r = this._count - 1; r >= i;) { var o = (i + r) / 2 | 0; if (e[o] < t) i = o + 1; else { if (!(e[o] > t)) return o; r = o - 1 } } return -1 }, ww.indicesOfNearest = function(t, e, n) { var i = this._storage, r = i[t], o = []; if (!r) return o; null == n && (n = 1 / 0); for (var a = 1 / 0, s = -1, l = 0, u = 0, h = this.count(); h > u; u++) { var c = e - this.get(t, u), d = Math.abs(c); n >= d && ((a > d || d === a && c >= 0 && 0 > s) && (a = d, s = c, l = 0), c === s && (o[l++] = u)) } return o.length = l, o }, ww.getRawIndex = $u, ww.getRawDataItem = function(t) { if (this._rawData.persistent) return this._rawData.getItem(this.getRawIndex(t)); for (var e = [], n = 0; n < this.dimensions.length; n++) { var i = this.dimensions[n]; e.push(this.get(i, t)) } return e }, ww.getName = function(t) { var e = this.getRawIndex(t); return this._nameList[e] || Ku(this, this._nameDimIdx, e) || "" }, ww.getId = function(t) { return Ju(this, this.getRawIndex(t)) }, ww.each = function(t, e, n, i) { if (this._count) { "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this, t = p(th(t), this .getDimension, this), lp && eh(this, t); for (var r = t.length, o = 0; o < this.count(); o++) switch (r) { case 0: e.call(n, o); break; case 1: e.call(n, this.get(t[0], o), o); break; case 2: e.call(n, this.get(t[0], o), this.get(t[1], o), o); break; default: for (var a = 0, s = []; r > a; a++) s[a] = this.get(t[a], o); s[a] = o, e.apply(n, s) } } }, ww.filterSelf = function(t, e, n, i) { if (this._count) { "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this, t = p(th(t), this .getDimension, this), lp && eh(this, t); for (var r = this.count(), o = Xu(this), a = new o(r), s = [], l = t.length, u = 0, h = t[0], c = 0; r > c; c++) { var d, f = this.getRawIndex(c); if (0 === l) d = e.call(n, c); else if (1 === l) { var g = this._getFast(h, f); d = e.call(n, g, c) } else { for (var v = 0; l > v; v++) s[v] = this._getFast(h, f); s[v] = c, d = e.apply(n, s) } d && (a[u++] = f) } return r > u && (this._indices = a), this._count = u, this._extent = {}, this.getRawIndex = this ._indices ? Qu : $u, this } }, ww.selectRange = function(t) { if (this._count) { var e = []; for (var n in t) t.hasOwnProperty(n) && e.push(n); lp && eh(this, e); var i = e.length; if (i) { var r = this.count(), o = Xu(this), a = new o(r), s = 0, l = e[0], u = t[l][0], h = t[l][1], c = !1; if (!this._indices) { var d = 0; if (1 === i) { for (var f = this._storage[e[0]], p = 0; p < this._chunkCount; p++) for (var g = f[p], v = Math.min(this._count - p * this._chunkSize, this._chunkSize), m = 0; v > m; m++) { var y = g[m]; (y >= u && h >= y || isNaN(y)) && (a[s++] = d), d++ } c = !0 } else if (2 === i) { for (var f = this._storage[l], x = this._storage[e[1]], _ = t[e[1]][0], w = t[e[1]][1], p = 0; p < this._chunkCount; p++) for (var g = f[p], b = x[p], v = Math.min(this._count - p * this._chunkSize, this ._chunkSize), m = 0; v > m; m++) { var y = g[m], S = b[m]; (y >= u && h >= y || isNaN(y)) && (S >= _ && w >= S || isNaN(S)) && (a[s++] = d), d++ } c = !0 } } if (!c) if (1 === i) for (var m = 0; r > m; m++) { var M = this.getRawIndex(m), y = this._getFast(l, M); (y >= u && h >= y || isNaN(y)) && (a[s++] = M) } else for (var m = 0; r > m; m++) { for (var I = !0, M = this.getRawIndex(m), p = 0; i > p; p++) { var C = e[p], y = this._getFast(n, M); (y < t[C][0] || y > t[C][1]) && (I = !1) } I && (a[s++] = this.getRawIndex(m)) } return r > s && (this._indices = a), this._count = s, this._extent = {}, this.getRawIndex = this ._indices ? Qu : $u, this } } }, ww.mapArray = function(t, e, n, i) { "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this; var r = []; return this.each(t, function() { r.push(e && e.apply(this, arguments)) }, n), r }, ww.map = function(t, e, n, i) { n = n || i || this, t = p(th(t), this.getDimension, this), lp && eh(this, t); var r = nh(this, t); r._indices = this._indices, r.getRawIndex = r._indices ? Qu : $u; for (var o = r._storage, a = [], s = this._chunkSize, l = t.length, u = this.count(), h = [], c = r ._rawExtent, d = 0; u > d; d++) { for (var f = 0; l > f; f++) h[f] = this.get(t[f], d); h[l] = d; var g = e && e.apply(n, h); if (null != g) { "object" != typeof g && (a[0] = g, g = a); for (var v = this.getRawIndex(d), m = Math.floor(v / s), y = v % s, x = 0; x < g.length; x++) { var _ = t[x], w = g[x], b = c[_], S = o[_]; S && (S[m][y] = w), w < b[0] && (b[0] = w), w > b[1] && (b[1] = w) } } } return r }, ww.downSample = function(t, e, n, i) { for (var r = nh(this, [t]), o = r._storage, a = [], s = Math.floor(1 / e), l = o[t], u = this.count(), h = this._chunkSize, c = r._rawExtent[t], d = new(Xu(this))(u), f = 0, p = 0; u > p; p += s) { s > u - p && (s = u - p, a.length = s); for (var g = 0; s > g; g++) { var v = this.getRawIndex(p + g), m = Math.floor(v / h), y = v % h; a[g] = l[m][y] } var x = n(a), _ = this.getRawIndex(Math.min(p + i(a, x) || 0, u - 1)), w = Math.floor(_ / h), b = _ % h; l[w][b] = x, x < c[0] && (c[0] = x), x > c[1] && (c[1] = x), d[f++] = _ } return r._count = f, r._indices = d, r.getRawIndex = Qu, r }, ww.getItemModel = function(t) { var e = this.hostModel; return new pa(this.getRawDataItem(t), e, e && e.ecModel) }, ww.diff = function(t) { var e = this; return new Nu(t ? t.getIndices() : [], this.getIndices(), function(e) { return Ju(t, e) }, function(t) { return Ju(e, t) }) }, ww.getVisual = function(t) { var e = this._visual; return e && e[t] }, ww.setVisual = function(t, e) { if (hw(t)) for (var n in t) t.hasOwnProperty(n) && this.setVisual(n, t[n]); else this._visual = this._visual || {}, this._visual[t] = e }, ww.setLayout = function(t, e) { if (hw(t)) for (var n in t) t.hasOwnProperty(n) && this.setLayout(n, t[n]); else this._layout[t] = e }, ww.getLayout = function(t) { return this._layout[t] }, ww.getItemLayout = function(t) { return this._itemLayouts[t] }, ww.setItemLayout = function(t, e, n) { this._itemLayouts[t] = n ? a(this._itemLayouts[t] || {}, e) : e }, ww.clearItemLayouts = function() { this._itemLayouts.length = 0 }, ww.getItemVisual = function(t, e, n) { var i = this._itemVisuals[t], r = i && i[e]; return null != r || n ? r : this.getVisual(e) }, ww.setItemVisual = function(t, e, n) { var i = this._itemVisuals[t] || {}, r = this.hasItemVisual; if (this._itemVisuals[t] = i, hw(e)) for (var o in e) e.hasOwnProperty(o) && (i[o] = e[o], r[o] = !0); else i[e] = n, r[e] = !0 }, ww.clearAllVisual = function() { this._visual = {}, this._itemVisuals = [], this.hasItemVisual = {} }; var bw = function(t) { t.seriesIndex = this.seriesIndex, t.dataIndex = this.dataIndex, t.dataType = this.dataType }; ww.setItemGraphicEl = function(t, e) { var n = this.hostModel; e && (e.dataIndex = t, e.dataType = this.dataType, e.seriesIndex = n && n.seriesIndex, "group" === e .type && e.traverse(bw, e)), this._graphicEls[t] = e }, ww.getItemGraphicEl = function(t) { return this._graphicEls[t] }, ww.eachItemGraphicEl = function(t, e) { f(this._graphicEls, function(n, i) { n && t && t.call(e, n, i) }) }, ww.cloneShallow = function(t) { if (!t) { var e = p(this.dimensions, this.getDimensionInfo, this); t = new _w(e, this.hostModel) } if (t._storage = this._storage, Uu(t, this), this._indices) { var n = this._indices.constructor; t._indices = new n(this._indices) } else t._indices = null; return t.getRawIndex = t._indices ? Qu : $u, t }, ww.wrapMethod = function(t, e) { var n = this[t]; "function" == typeof n && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods .push(t), this[t] = function() { var t = n.apply(this, arguments); return e.apply(this, [t].concat(P(arguments))) }) }, ww.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "map"], ww.CHANGABLE_METHODS = ["filterSelf", "selectRange" ]; var Sw = function(t, e) { return e = e || {}, oh(e.coordDimensions || [], t, { dimsDef: e.dimensionsDefine || t.dimensionsDefine, encodeDef: e.encodeDefine || t.encodeDefine, dimCount: e.dimensionsCount, encodeDefaulter: e.encodeDefaulter, generateCoord: e.generateCoord, generateCoordCount: e.generateCoordCount }) }, Mw = { cartesian2d: function(t, e, n, i) { var r = t.getReferringComponents("xAxis")[0], o = t.getReferringComponents("yAxis")[0]; if (lp) { if (!r) throw new Error('xAxis "' + A(t.get("xAxisIndex"), t.get("xAxisId"), 0) + '" not found'); if (!o) throw new Error('yAxis "' + A(t.get("xAxisIndex"), t.get("yAxisId"), 0) + '" not found') } e.coordSysDims = ["x", "y"], n.set("x", r), n.set("y", o), hh(r) && (i.set("x", r), e .firstCategoryDimIndex = 0), hh(o) && (i.set("y", o), null == e.firstCategoryDimIndex & (e.firstCategoryDimIndex = 1)) }, singleAxis: function(t, e, n, i) { var r = t.getReferringComponents("singleAxis")[0]; if (lp && !r) throw new Error("singleAxis should be specified."); e.coordSysDims = ["single"], n.set("single", r), hh(r) && (i.set("single", r), e .firstCategoryDimIndex = 0) }, polar: function(t, e, n, i) { var r = t.getReferringComponents("polar")[0], o = r.findAxisModel("radiusAxis"), a = r.findAxisModel("angleAxis"); if (lp) { if (!a) throw new Error("angleAxis option not found"); if (!o) throw new Error("radiusAxis option not found") } e.coordSysDims = ["radius", "angle"], n.set("radius", o), n.set("angle", a), hh(o) && (i.set( "radius", o), e.firstCategoryDimIndex = 0), hh(a) && (i.set("angle", a), null == e .firstCategoryDimIndex && (e.firstCategoryDimIndex = 1)) }, geo: function(t, e) { e.coordSysDims = ["lng", "lat"] }, parallel: function(t, e, n, i) { var r = t.ecModel, o = r.getComponent("parallel", t.get("parallelIndex")), a = e.coordSysDims = o.dimensions.slice(); f(o.parallelAxisIndex, function(t, o) { var s = r.getComponent("parallelAxis", t), l = a[o]; n.set(l, s), hh(s) && null == e.firstCategoryDimIndex && (i.set(l, s), e .firstCategoryDimIndex = o) }) } }; mh.prototype.parse = function(t) { return t }, mh.prototype.getSetting = function(t) { return this._setting[t] }, mh.prototype.contain = function(t) { var e = this._extent; return t >= e[0] && t <= e[1] }, mh.prototype.normalize = function(t) { var e = this._extent; return e[1] === e[0] ? .5 : (t - e[0]) / (e[1] - e[0]) }, mh.prototype.scale = function(t) { var e = this._extent; return t * (e[1] - e[0]) + e[0] }, mh.prototype.unionExtent = function(t) { var e = this._extent; t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]) }, mh.prototype.unionExtentFromData = function(t, e) { this.unionExtent(t.getApproximateExtent(e)) }, mh.prototype.getExtent = function() { return this._extent.slice() }, mh.prototype.setExtent = function(t, e) { var n = this._extent; isNaN(t) || (n[0] = t), isNaN(e) || (n[1] = e) }, mh.prototype.isBlank = function() { return this._isBlank }, mh.prototype.setBlank = function(t) { this._isBlank = t }, mh.prototype.getLabel = null, mr(mh), wr(mh, { registerWhenExtend: !0 }), yh.createByAxisModel = function(t) { var e = t.option, n = e.data, i = n && p(n, _h); return new yh({ categories: i, needCollect: !i, deduplication: e.dedplication !== !1 }) }; var Iw = yh.prototype; Iw.getOrdinal = function(t) { return xh(this).get(t) }, Iw.parseAndCollect = function(t) { var e, n = this._needCollect; if ("string" != typeof t && !n) return t; if (n && !this._deduplication) return e = this.categories.length, this.categories[e] = t, e; var i = xh(this); return e = i.get(t), null == e && (n ? (e = this.categories.length, this.categories[e] = t, i.set(t, e)) : e = 0 / 0), e }; var Cw = mh.prototype, Tw = mh.extend({ type: "ordinal", init: function(t, e) { (!t || _(t)) && (t = new yh({ categories: t })), this._ordinalMeta = t, this._extent = e || [0, t.categories.length - 1] }, parse: function(t) { return "string" == typeof t ? this._ordinalMeta.getOrdinal(t) : Math.round(t) }, contain: function(t) { return t = this.parse(t), Cw.contain.call(this, t) && null != this._ordinalMeta.categories[ t] }, normalize: function(t) { return Cw.normalize.call(this, this.parse(t)) }, scale: function(t) { return Math.round(Cw.scale.call(this, t)) }, getTicks: function() { for (var t = [], e = this._extent, n = e[0]; n <= e[1];) t.push(n), n++; return t }, getLabel: function(t) { return this.isBlank() ? void 0 : this._ordinalMeta.categories[t] }, count: function() { return this._extent[1] - this._extent[0] + 1 }, unionExtentFromData: function(t, e) { this.unionExtent(t.getApproximateExtent(e)) }, getOrdinalMeta: function() { return this._ordinalMeta }, niceTicks: V, niceExtent: V }); Tw.create = function() { return new Tw }; var Aw = Sa, Dw = Sa, kw = mh.extend({ type: "interval", _interval: 0, _intervalPrecision: 2, setExtent: function(t, e) { var n = this._extent; isNaN(t) || (n[0] = parseFloat(t)), isNaN(e) || (n[1] = parseFloat(e)) }, unionExtent: function(t) { var e = this._extent; t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), kw.prototype.setExtent.call( this, e[0], e[1]) }, getInterval: function() { return this._interval }, setInterval: function(t) { this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = bh(t) }, getTicks: function(t) { var e = this._interval, n = this._extent, i = this._niceExtent, r = this._intervalPrecision, o = []; if (!e) return o; var a = 1e4; n[0] < i[0] && o.push(t ? Dw(i[0] - e, r) : n[0]); for (var s = i[0]; s <= i[1] && (o.push(s), s = Dw(s + e, r), s !== o[o.length - 1]);) if (o.length > a) return []; var l = o.length ? o[o.length - 1] : i[1]; return n[1] > l && o.push(t ? Dw(l + e, r) : n[1]), o }, getMinorTicks: function(t) { for (var e = this.getTicks(!0), n = [], i = this.getExtent(), r = 1; r < e.length; r++) { for (var o = e[r], a = e[r - 1], s = 0, l = [], u = o - a, h = u / t; t - 1 > s;) { var c = Sa(a + (s + 1) * h); c > i[0] && c < i[1] && l.push(c), s++ } n.push(l) } return n }, getLabel: function(t, e) { if (null == t) return ""; var n = e && e.precision; return null == n ? n = Ca(t) || 0 : "auto" === n && (n = this._intervalPrecision), t = Dw(t, n, !0), Na(t) }, niceTicks: function(t, e, n) { t = t || 5; var i = this._extent, r = i[1] - i[0]; if (isFinite(r)) { 0 > r && (r = -r, i.reverse()); var o = wh(i, t, e, n); this._intervalPrecision = o.intervalPrecision, this._interval = o.interval, this ._niceExtent = o.niceTickExtent } }, niceExtent: function(t) { var e = this._extent; if (e[0] === e[1]) if (0 !== e[0]) { var n = e[0]; t.fixMax ? e[0] -= n / 2 : (e[1] += n / 2, e[0] -= n / 2) } else e[1] = 1; var i = e[1] - e[0]; isFinite(i) || (e[0] = 0, e[1] = 1), this.niceTicks(t.splitNumber, t.minInterval, t .maxInterval); var r = this._interval; t.fixMin || (e[0] = Dw(Math.floor(e[0] / r) * r)), t.fixMax || (e[1] = Dw(Math.ceil(e[1] / r) * r)) } }); kw.create = function() { return new kw }; var Pw = "__ec_stack_", Ow = .5, Lw = "undefined" != typeof Float32Array ? Float32Array : Array, zw = ({ seriesType: "bar", plan: Vx(), reset: function(t) { function e(t, e) { for (var n, d = t.count, f = new Lw(2 * d), p = new Lw(2 * d), g = new Lw(d), v = [], m = [], y = 0, x = 0; null != (n = t.next());) m[h] = e.get(s, n), m[1 - h] = e .get(l, n), v = i.dataToPoint(m, null, v), p[y] = u ? r.x + r.width : v[0], f[y++] = v[0], p[y] = u ? v[1] : r.y + r.height, f[y++] = v[1], g[x++] = n; e.setLayout({ largePoints: f, largeDataIndices: g, largeBackgroundPoints: p, barWidth: c, valueAxisStart: zh(o, a, !1), backgroundStart: u ? r.x : r.y, valueAxisHorizontal: u }) } if (Oh(t) && Lh(t)) { var n = t.getData(), i = t.coordinateSystem, r = i.grid.getRect(), o = i.getBaseAxis(), a = i.getOtherAxis(o), s = n.mapDimension(a.dim), l = n.mapDimension(o.dim), u = a.isHorizontal(), h = u ? 0 : 1, c = Ph(Dh([t]), o, t).width; return c > Ow || (c = Ow), { progress: e } } } }, kw.prototype), Ew = Math.ceil, Bw = Math.floor, Rw = 1e3, Nw = 60 * Rw, Fw = 60 * Nw, Vw = 24 * Fw, Ww = function(t, e, n, i) { for (; i > n;) { var r = n + i >>> 1; t[r][1] < e ? n = r + 1 : i = r } return n }, Hw = kw.extend({ type: "time", getLabel: function(t) { var e = this._stepLvl, n = new Date(t); return Xa(e[0], n, this.getSetting("useUTC")) }, niceExtent: function(t) { var e = this._extent; if (e[0] === e[1] && (e[0] -= Vw, e[1] += Vw), e[1] === -1 / 0 && 1 / 0 === e[0]) { var n = new Date; e[1] = +new Date(n.getFullYear(), n.getMonth(), n.getDate()), e[0] = e[1] - Vw } this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval); var i = this._interval; t.fixMin || (e[0] = Sa(Bw(e[0] / i) * i)), t.fixMax || (e[1] = Sa(Ew(e[1] / i) * i)) }, niceTicks: function(t, e, n) { t = t || 10; var i = this._extent, r = i[1] - i[0], o = r / t; null != e && e > o && (o = e), null != n && o > n && (o = n); var a = Gw.length, s = Ww(Gw, o, 0, a), l = Gw[Math.min(s, a - 1)], u = l[1]; if ("year" === l[0]) { var h = r / u, c = za(h / t, !0); u *= c } var d = this.getSetting("useUTC") ? 0 : 60 * new Date(+i[0] || +i[1]).getTimezoneOffset() * 1e3, f = [Math.round(Ew((i[0] - d) / u) * u + d), Math.round(Bw((i[1] - d) / u) * u + d)]; Mh(f, i), this._stepLvl = l, this._interval = u, this._niceExtent = f }, parse: function(t) { return +Pa(t) } }); f(["contain", "normalize"], function(t) { Hw.prototype[t] = function(e) { return zw[t].call(this, this.parse(e)) } }); var Gw = [ ["hh:mm:ss", Rw], ["hh:mm:ss", 5 * Rw], ["hh:mm:ss", 10 * Rw], ["hh:mm:ss", 15 * Rw], ["hh:mm:ss", 30 * Rw], ["hh:mm\nMM-dd", Nw], ["hh:mm\nMM-dd", 5 * Nw], ["hh:mm\nMM-dd", 10 * Nw], ["hh:mm\nMM-dd", 15 * Nw], ["hh:mm\nMM-dd", 30 * Nw], ["hh:mm\nMM-dd", Fw], ["hh:mm\nMM-dd", 2 * Fw], ["hh:mm\nMM-dd", 6 * Fw], ["hh:mm\nMM-dd", 12 * Fw], ["MM-dd\nyyyy", Vw], ["MM-dd\nyyyy", 2 * Vw], ["MM-dd\nyyyy", 3 * Vw], ["MM-dd\nyyyy", 4 * Vw], ["MM-dd\nyyyy", 5 * Vw], ["MM-dd\nyyyy", 6 * Vw], ["week", 7 * Vw], ["MM-dd\nyyyy", 10 * Vw], ["week", 14 * Vw], ["week", 21 * Vw], ["month", 31 * Vw], ["week", 42 * Vw], ["month", 62 * Vw], ["week", 70 * Vw], ["quarter", 95 * Vw], ["month", 31 * Vw * 4], ["month", 31 * Vw * 5], ["half-year", 380 * Vw / 2], ["month", 31 * Vw * 8], ["month", 31 * Vw * 10], ["year", 380 * Vw] ]; Hw.create = function(t) { return new Hw({ useUTC: t.ecModel.get("useUTC") }) }; var Zw = mh.prototype, Xw = kw.prototype, Yw = Ca, Uw = Sa, jw = Math.floor, qw = Math.ceil, Kw = Math.pow, $w = Math.log, Qw = mh.extend({ type: "log", base: 10, $constructor: function() { mh.apply(this, arguments), this._originalScale = new kw }, getTicks: function(t) { var e = this._originalScale, n = this._extent, i = e.getExtent(); return p(Xw.getTicks.call(this, t), function(t) { var r = Sa(Kw(this.base, t)); return r = t === n[0] && e.__fixMin ? Eh(r, i[0]) : r, r = t === n[1] && e .__fixMax ? Eh(r, i[1]) : r }, this) }, getMinorTicks: Xw.getMinorTicks, getLabel: Xw.getLabel, scale: function(t) { return t = Zw.scale.call(this, t), Kw(this.base, t) }, setExtent: function(t, e) { var n = this.base; t = $w(t) / $w(n), e = $w(e) / $w(n), Xw.setExtent.call(this, t, e) }, getExtent: function() { var t = this.base, e = Zw.getExtent.call(this); e[0] = Kw(t, e[0]), e[1] = Kw(t, e[1]); var n = this._originalScale, i = n.getExtent(); return n.__fixMin && (e[0] = Eh(e[0], i[0])), n.__fixMax && (e[1] = Eh(e[1], i[1])), e }, unionExtent: function(t) { this._originalScale.unionExtent(t); var e = this.base; t[0] = $w(t[0]) / $w(e), t[1] = $w(t[1]) / $w(e), Zw.unionExtent.call(this, t) }, unionExtentFromData: function(t, e) { this.unionExtent(t.getApproximateExtent(e)) }, niceTicks: function(t) { t = t || 10; var e = this._extent, n = e[1] - e[0]; if (!(1 / 0 === n || 0 >= n)) { var i = Oa(n), r = t / n * i; for (.5 >= r && (i *= 10); !isNaN(i) && Math.abs(i) < 1 && Math.abs(i) > 0;) i *= 10; var o = [Sa(qw(e[0] / i) * i), Sa(jw(e[1] / i) * i)]; this._interval = i, this._niceExtent = o } }, niceExtent: function(t) { Xw.niceExtent.call(this, t); var e = this._originalScale; e.__fixMin = t.fixMin, e.__fixMax = t.fixMax } }); f(["contain", "normalize"], function(t) { Qw.prototype[t] = function(e) { return e = $w(e) / $w(this.base), Zw[t].call(this, e) } }), Qw.create = function() { return new Qw }; var Jw = { getMin: function(t) { var e = this.option, n = t || null == e.rangeStart ? e.min : e.rangeStart; return this.axis && null != n && "dataMin" !== n && "function" != typeof n && !T(n) && (n = this .axis.scale.parse(n)), n }, getMax: function(t) { var e = this.option, n = t || null == e.rangeEnd ? e.max : e.rangeEnd; return this.axis && null != n && "dataMax" !== n && "function" != typeof n && !T(n) && (n = this .axis.scale.parse(n)), n }, getNeedCrossZero: function() { var t = this.option; return null != t.rangeStart || null != t.rangeEnd ? !1 : !t.scale }, getCoordSysModel: V, setRange: function(t, e) { this.option.rangeStart = t, this.option.rangeEnd = e }, resetRange: function() { this.option.rangeStart = this.option.rangeEnd = null } }, tb = vo({ type: "triangle", shape: { cx: 0, cy: 0, width: 0, height: 0 }, buildPath: function(t, e) { var n = e.cx, i = e.cy, r = e.width / 2, o = e.height / 2; t.moveTo(n, i - o), t.lineTo(n + r, i + o), t.lineTo(n - r, i + o), t.closePath() } }), eb = vo({ type: "diamond", shape: { cx: 0, cy: 0, width: 0, height: 0 }, buildPath: function(t, e) { var n = e.cx, i = e.cy, r = e.width / 2, o = e.height / 2; t.moveTo(n, i - o), t.lineTo(n + r, i), t.lineTo(n, i + o), t.lineTo(n - r, i), t .closePath() } }), nb = vo({ type: "pin", shape: { x: 0, y: 0, width: 0, height: 0 }, buildPath: function(t, e) { var n = e.x, i = e.y, r = e.width / 5 * 3, o = Math.max(r, e.height), a = r / 2, s = a * a / (o - a), l = i - o + a + s, u = Math.asin(s / a), h = Math.cos(u) * a, c = Math.sin(u), d = Math.cos(u), f = .6 * a, p = .7 * a; t.moveTo(n - h, l + s), t.arc(n, l, a, Math.PI - u, 2 * Math.PI + u), t.bezierCurveTo(n + h - c * f, l + s + d * f, n, i - p, n, i), t.bezierCurveTo(n, i - p, n - h + c * f, l + s + d * f, n - h, l + s), t.closePath() } }), ib = vo({ type: "arrow", shape: { x: 0, y: 0, width: 0, height: 0 }, buildPath: function(t, e) { var n = e.height, i = e.width, r = e.x, o = e.y, a = i / 3 * 2; t.moveTo(r, o), t.lineTo(r + a, o + n), t.lineTo(r, o + n / 4 * 3), t.lineTo(r - a, o + n), t.lineTo(r, o), t.closePath() } }), rb = { line: ey, rect: Jm, roundRect: Jm, square: Jm, circle: Hm, diamond: eb, pin: nb, arrow: ib, triangle: tb }, ob = { line: function(t, e, n, i, r) { r.x1 = t, r.y1 = e + i / 2, r.x2 = t + n, r.y2 = e + i / 2 }, rect: function(t, e, n, i, r) { r.x = t, r.y = e, r.width = n, r.height = i }, roundRect: function(t, e, n, i, r) { r.x = t, r.y = e, r.width = n, r.height = i, r.r = Math.min(n, i) / 4 }, square: function(t, e, n, i, r) { var o = Math.min(n, i); r.x = t, r.y = e, r.width = o, r.height = o }, circle: function(t, e, n, i, r) { r.cx = t + n / 2, r.cy = e + i / 2, r.r = Math.min(n, i) / 2 }, diamond: function(t, e, n, i, r) { r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i }, pin: function(t, e, n, i, r) { r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i }, arrow: function(t, e, n, i, r) { r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i }, triangle: function(t, e, n, i, r) { r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i } }, ab = {}; f(rb, function(t, e) { ab[e] = new t }); var sb = vo({ type: "symbol", shape: { symbolType: "", x: 0, y: 0, width: 0, height: 0 }, calculateTextPosition: function(t, e, n) { var i = $n(t, e, n), r = this.shape; return r && "pin" === r.symbolType && "inside" === e.textPosition && (i.y = n.y + .4 * n .height), i }, buildPath: function(t, e, n) { var i = e.symbolType; if ("none" !== i) { var r = ab[i]; r || (i = "rect", r = ab[i]), ob[i](e.x, e.y, e.width, e.height, r.shape), r.buildPath( t, r.shape, n) } } }), lb = { isDimensionStacked: dh, enableDataStack: ch, getStackedDimension: fh }, ub = (Object.freeze || Object)({ createList: qh, getLayoutRect: $a, dataStack: lb, createScale: Kh, mixinAxisModelCommonMethods: $h, completeDimensions: oh, createDimensions: Sw, createSymbol: jh }), hb = 1e-8; tc.prototype = { constructor: tc, properties: null, getBoundingRect: function() { var t = this._rect; if (t) return t; for (var e = Number.MAX_VALUE, n = [e, e], i = [-e, -e], r = [], o = [], a = this.geometries, s = 0; s < a.length; s++) if ("polygon" === a[s].type) { var l = a[s].exterior; Br(l, r, o), ae(n, n, r), se(i, i, o) } return 0 === s && (n[0] = n[1] = i[0] = i[1] = 0), this._rect = new Tn(n[0], n[1], i[0] - n[0], i[1] - n[1]) }, contain: function(t) { var e = this.getBoundingRect(), n = this.geometries; if (!e.contain(t[0], t[1])) return !1; t: for (var i = 0, r = n.length; r > i; i++) if ("polygon" === n[i].type) { var o = n[i].exterior, a = n[i].interiors; if (Jh(o, t[0], t[1])) { for (var s = 0; s < (a ? a.length : 0); s++) if (Jh(a[s])) continue t; return !0 } } return !1 }, transformTo: function(t, e, n, i) { var r = this.getBoundingRect(), o = r.width / r.height; n ? i || (i = n / o) : n = o * i; for (var a = new Tn(t, e, n, i), s = r.calculateTransform(a), l = this.geometries, u = 0; u < l .length; u++) if ("polygon" === l[u].type) { for (var h = l[u].exterior, c = l[u].interiors, d = 0; d < h.length; d++) oe(h[d], h[d], s); for (var f = 0; f < (c ? c.length : 0); f++) for (var d = 0; d < c[f].length; d++) oe(c[f][d], c[f][d], s) } r = this._rect, r.copy(a), this.center = [r.x + r.width / 2, r.y + r.height / 2] }, cloneShallow: function(t) { null == t && (t = this.name); var e = new tc(t, this.geometries, this.center); return e._rect = this._rect, e.transformTo = null, e } }; var cb = function(t, e) { return ec(t), p(v(t.features, function(t) { return t.geometry && t.properties && t.geometry.coordinates.length > 0 }), function(t) { var n = t.properties, i = t.geometry, r = i.coordinates, o = []; "Polygon" === i.type && o.push({ type: "polygon", exterior: r[0], interiors: r.slice(1) }), "MultiPolygon" === i.type && f(r, function(t) { t[0] && o.push({ type: "polygon", exterior: t[0], interiors: t.slice(1) }) }); var a = new tc(n[e || "name"], o, n.cp); return a.properties = n, a }) }, db = ur(), fb = [0, 1], pb = function(t, e, n) { this.dim = t, this.scale = e, this._extent = n || [0, 0], this.inverse = !1, this.onBand = !1 }; pb.prototype = { constructor: pb, contain: function(t) { var e = this._extent, n = Math.min(e[0], e[1]), i = Math.max(e[0], e[1]); return t >= n && i >= t }, containData: function(t) { return this.scale.contain(t) }, getExtent: function() { return this._extent.slice() }, getPixelPrecision: function(t) { return Ta(t || this.scale.getExtent(), this._extent) }, setExtent: function(t, e) { var n = this._extent; n[0] = t, n[1] = e }, dataToCoord: function(t, e) { var n = this._extent, i = this.scale; return t = i.normalize(t), this.onBand && "ordinal" === i.type && (n = n.slice(), mc(n, i .count())), wa(t, fb, n, e) }, coordToData: function(t, e) { var n = this._extent, i = this.scale; this.onBand && "ordinal" === i.type && (n = n.slice(), mc(n, i.count())); var r = wa(t, n, fb, e); return this.scale.scale(r) }, pointToData: function() {}, getTicksCoords: function(t) { t = t || {}; var e = t.tickModel || this.getTickModel(), n = rc(this, e), i = n.ticks, r = p(i, function(t) { return { coord: this.dataToCoord(t), tickValue: t } }, this), o = e.get("alignWithLabel"); return yc(this, r, o, t.clamp), r }, getMinorTicksCoords: function() { if ("ordinal" === this.scale.type) return []; var t = this.model.getModel("minorTick"), e = t.get("splitNumber"); e > 0 && 100 > e || (e = 5); var n = this.scale.getMinorTicks(e), i = p(n, function(t) { return p(t, function(t) { return { coord: this.dataToCoord(t), tickValue: t } }, this) }, this); return i }, getViewLabels: function() { return ic(this).labels }, getLabelModel: function() { return this.model.getModel("axisLabel") }, getTickModel: function() { return this.model.getModel("axisTick") }, getBandWidth: function() { var t = this._extent, e = this.scale.getExtent(), n = e[1] - e[0] + (this.onBand ? 1 : 0); 0 === n && (n = 1); var i = Math.abs(t[1] - t[0]); return Math.abs(i) / n }, isHorizontal: null, getRotate: null, calculateCategoryInterval: function() { return fc(this) } }; var gb = cb, vb = {}; f(["map", "each", "filter", "indexOf", "inherits", "reduce", "filter", "bind", "curry", "isArray", "isString", "isObject", "isFunction", "extend", "defaults", "clone", "merge" ], function(t) { vb[t] = Cp[t] }); var mb = {}; f(["extendShape", "extendPath", "makePath", "makeImage", "mergePath", "resizePath", "createIcon", "setHoverStyle", "setLabelStyle", "setTextStyle", "setText", "getFont", "updateProps", "initProps", "getTransform", "clipPointsByRect", "clipRectByRect", "registerShape", "getShapeClass", "Group", "Image", "Text", "Circle", "Sector", "Ring", "Polygon", "Polyline", "Rect", "Line", "BezierCurve", "Arc", "IncrementalDisplayable", "CompoundPath", "LinearGradient", "RadialGradient", "BoundingRect" ], function(t) { mb[t] = My[t] }), Rx.extend({ type: "series.line", dependencies: ["grid", "polar"], getInitialData: function(t) { if (lp) { var e = t.coordinateSystem; if ("polar" !== e && "cartesian2d" !== e) throw new Error( "Line not support coordinateSystem besides cartesian and polar") } return ph(this.getSource(), this, { useEncodeDefaulter: !0 }) }, defaultOption: { zlevel: 0, z: 2, coordinateSystem: "cartesian2d", legendHoverLink: !0, hoverAnimation: !0, clip: !0, label: { position: "top" }, lineStyle: { width: 2, type: "solid" }, step: !1, smooth: !1, smoothMonotone: null, symbol: "emptyCircle", symbolSize: 4, symbolRotate: null, showSymbol: !0, showAllSymbol: "auto", connectNulls: !1, sampling: "none", animationEasing: "linear", progressive: 0, hoverLayerThreshold: 1 / 0 } }); var yb = _c.prototype, xb = _c.getSymbolSize = function(t, e) { var n = t.getItemVisual(e, "symbolSize"); return n instanceof Array ? n.slice() : [+n, +n] }; yb._createSymbol = function(t, e, n, i, r) { this.removeAll(); var o = e.getItemVisual(n, "color"), a = jh(t, -1, -1, 2, 2, o, r); a.attr({ z2: 100, culling: !0, scale: wc(i) }), a.drift = bc, this._symbolType = t, this.add(a) }, yb.stopSymbolAnimation = function(t) { this.childAt(0).stopAnimation(t) }, yb.getSymbolPath = function() { return this.childAt(0) }, yb.getScale = function() { return this.childAt(0).scale }, yb.highlight = function() { this.childAt(0).trigger("emphasis") }, yb.downplay = function() { this.childAt(0).trigger("normal") }, yb.setZ = function(t, e) { var n = this.childAt(0); n.zlevel = t, n.z = e }, yb.setDraggable = function(t) { var e = this.childAt(0); e.draggable = t, e.cursor = t ? "move" : e.cursor }, yb.updateData = function(t, e, n) { this.silent = !1; var i = t.getItemVisual(e, "symbol") || "circle", r = t.hostModel, o = xb(t, e), a = i !== this._symbolType; if (a) { var s = t.getItemVisual(e, "symbolKeepAspect"); this._createSymbol(i, t, e, o, s) } else { var l = this.childAt(0); l.silent = !1, ea(l, { scale: wc(o) }, r, e) } if (this._updateCommon(t, e, o, n), a) { var l = this.childAt(0), u = n && n.fadeIn, h = { scale: l.scale.slice() }; u && (h.style = { opacity: l.style.opacity }), l.scale = [0, 0], u && (l.style.opacity = 0), na(l, h, r, e) } this._seriesModel = r }; var _b = ["itemStyle"], wb = ["emphasis", "itemStyle"], bb = ["label"], Sb = ["emphasis", "label"]; yb._updateCommon = function(t, e, n, i) { function r(e) { return b ? t.getName(e) : xc(t, e) } var o = this.childAt(0), s = t.hostModel, l = t.getItemVisual(e, "color"); "image" !== o.type ? o.useStyle({ strokeNoScale: !0 }) : o.setStyle({ opacity: null, shadowBlur: null, shadowOffsetX: null, shadowOffsetY: null, shadowColor: null }); var u = i && i.itemStyle, h = i && i.hoverItemStyle, c = i && i.symbolOffset, d = i && i.labelModel, f = i && i.hoverLabelModel, p = i && i.hoverAnimation, g = i && i.cursorStyle; if (!i || t.hasItemOption) { var v = i && i.itemModel ? i.itemModel : t.getItemModel(e); u = v.getModel(_b).getItemStyle(["color"]), h = v.getModel(wb).getItemStyle(), c = v.getShallow( "symbolOffset"), d = v.getModel(bb), f = v.getModel(Sb), p = v.getShallow("hoverAnimation"), g = v.getShallow("cursor") } else h = a({}, h); var m = o.style, y = t.getItemVisual(e, "symbolRotate"); o.attr("rotation", (y || 0) * Math.PI / 180 || 0), c && o.attr("position", [ba(c[0], n[0]), ba(c[1], n[ 1])]), g && o.attr("cursor", g), o.setColor(l, i && i.symbolInnerColor), o.setStyle(u); var x = t.getItemVisual(e, "opacity"); null != x && (m.opacity = x); var _ = t.getItemVisual(e, "liftZ"), w = o.__z2Origin; null != _ ? null == w && (o.__z2Origin = o.z2, o.z2 += _) : null != w && (o.z2 = w, o.__z2Origin = null); var b = i && i.useNameLabel; Go(m, h, d, f, { labelFetcher: s, labelDataIndex: e, defaultText: r, isRectText: !0, autoColor: l }), o.__symbolOriginalScale = wc(n), o.hoverStyle = h, o.highDownOnUpdate = p && s .isAnimationEnabled() ? Sc : null, Fo(o) }, yb.fadeOut = function(t, e) { var n = this.childAt(0); this.silent = n.silent = !0, !(e && e.keepLabel) && (n.style.text = null), ea(n, { style: { opacity: 0 }, scale: [0, 0] }, this._seriesModel, this.dataIndex, t) }, h(_c, Cg); var Mb = Mc.prototype; Mb.updateData = function(t, e) { e = Cc(e); var n = this.group, i = t.hostModel, r = this._data, o = this._symbolCtor, a = Tc(t); r || n.removeAll(), t.diff(r).add(function(i) { var r = t.getItemLayout(i); if (Ic(t, r, i, e)) { var s = new o(t, i, a); s.attr("position", r), t.setItemGraphicEl(i, s), n.add(s) } }).update(function(s, l) { var u = r.getItemGraphicEl(l), h = t.getItemLayout(s); return Ic(t, h, s, e) ? (u ? (u.updateData(t, s, a), ea(u, { position: h }, i)) : (u = new o(t, s), u.attr("position", h)), n.add(u), void t .setItemGraphicEl(s, u)) : void n.remove(u) }).remove(function(t) { var e = r.getItemGraphicEl(t); e && e.fadeOut(function() { n.remove(e) }) }).execute(), this._data = t }, Mb.isPersistent = function() { return !0 }, Mb.updateLayout = function() { var t = this._data; t && t.eachItemGraphicEl(function(e, n) { var i = t.getItemLayout(n); e.attr("position", i) }) }, Mb.incrementalPrepareUpdate = function(t) { this._seriesScope = Tc(t), this._data = null, this.group.removeAll() }, Mb.incrementalUpdate = function(t, e, n) { function i(t) { t.isGroup || (t.incremental = t.useHoverLayer = !0) } n = Cc(n); for (var r = t.start; r < t.end; r++) { var o = e.getItemLayout(r); if (Ic(e, o, r, n)) { var a = new this._symbolCtor(e, r, this._seriesScope); a.traverse(i), a.attr("position", o), this.group.add(a), e.setItemGraphicEl(r, a) } } }, Mb.remove = function(t) { var e = this.group, n = this._data; n && t ? n.eachItemGraphicEl(function(t) { t.fadeOut(function() { e.remove(t) }) }) : e.removeAll() }; var Ib = function(t, e, n, i, r, o, a, s) { for (var l = Pc(t, e), u = [], h = [], c = [], d = [], f = [], p = [], g = [], v = Ac(r, e, a), m = Ac( o, t, s), y = 0; y < l.length; y++) { var x = l[y], _ = !0; switch (x.cmd) { case "=": var w = t.getItemLayout(x.idx), b = e.getItemLayout(x.idx1); (isNaN(w[0]) || isNaN(w[1])) && (w = b.slice()), u.push(w), h.push(b), c.push(n[x.idx]), d .push(i[x.idx1]), g.push(e.getRawIndex(x.idx1)); break; case "+": var S = x.idx; u.push(r.dataToPoint([e.get(v.dataDimsForPoint[0], S), e.get(v.dataDimsForPoint[1], S)])), h .push(e.getItemLayout(S).slice()), c.push(kc(v, r, e, S)), d.push(i[S]), g.push(e .getRawIndex(S)); break; case "-": var S = x.idx, M = t.getRawIndex(S); M !== S ? (u.push(t.getItemLayout(S)), h.push(o.dataToPoint([t.get(m.dataDimsForPoint[0], S), t.get(m.dataDimsForPoint[1], S) ])), c.push(n[S]), d.push(kc(m, o, t, S)), g.push(M)) : _ = !1 } _ && (f.push(x), p.push(p.length)) } p.sort(function(t, e) { return g[t] - g[e] }); for (var I = [], C = [], T = [], A = [], D = [], y = 0; y < p.length; y++) { var S = p[y]; I[y] = u[S], C[y] = h[S], T[y] = c[S], A[y] = d[S], D[y] = f[S] } return { current: I, next: C, stackedOnCurrent: T, stackedOnNext: A, status: D } }, Cb = ae, Tb = se, Ab = Y, Db = H, kb = [], Pb = [], Ob = [], Lb = eo.extend({ type: "ec-polyline", shape: { points: [], smooth: 0, smoothConstraint: !0, smoothMonotone: null, connectNulls: !1 }, style: { fill: null, stroke: "#000" }, brush: Zm(eo.prototype.brush), buildPath: function(t, e) { var n = e.points, i = 0, r = n.length, o = Bc(n, e.smoothConstraint); if (e.connectNulls) { for (; r > 0 && Oc(n[r - 1]); r--); for (; r > i && Oc(n[i]); i++); } for (; r > i;) i += Lc(t, n, i, r, r, 1, o.min, o.max, e.smooth, e.smoothMonotone, e .connectNulls) + 1 } }), zb = eo.extend({ type: "ec-polygon", shape: { points: [], stackedOnPoints: [], smooth: 0, stackedOnSmooth: 0, smoothConstraint: !0, smoothMonotone: null, connectNulls: !1 }, brush: Zm(eo.prototype.brush), buildPath: function(t, e) { var n = e.points, i = e.stackedOnPoints, r = 0, o = n.length, a = e.smoothMonotone, s = Bc(n, e.smoothConstraint), l = Bc(i, e.smoothConstraint); if (e.connectNulls) { for (; o > 0 && Oc(n[o - 1]); o--); for (; o > r && Oc(n[r]); r++); } for (; o > r;) { var u = Lc(t, n, r, o, o, 1, s.min, s.max, e.smooth, a, e.connectNulls); Lc(t, i, r + u - 1, u, o, -1, l.min, l.max, e.stackedOnSmooth, a, e.connectNulls), r += u + 1, t.closePath() } } }); hl.extend({ type: "line", init: function() { var t = new Cg, e = new Mc; this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t }, render: function(t, e, n) { var i = t.coordinateSystem, r = this.group, o = t.getData(), a = t.getModel("lineStyle"), l = t.getModel("areaStyle"), u = o.mapArray(o.getItemLayout), h = "polar" === i.type, c = this._coordSys, d = this._symbolDraw, f = this._polyline, p = this._polygon, g = this._lineGroup, v = t.get("animation"), m = !l.isEmpty(), y = l.get("origin"), x = Ac(i, o, y), _ = Hc(i, o, x), w = t.get("showSymbol"), b = w && !h && Xc(t, o, i), S = this._data; S && S.eachItemGraphicEl(function(t, e) { t.__temp && (r.remove(t), S.setItemGraphicEl(e, null)) }), w || d.remove(), r.add(g); var M, I = !h && t.get("step"); i && i.getArea && t.get("clip", !0) && (M = i.getArea(), null != M.width ? (M.x -= .1, M .y -= .1, M.width += .2, M.height += .2) : M.r0 && (M.r0 -= .5, M.r1 += .5)), this ._clipShapeForSymbol = M, f && c.type === i.type && I === this._step ? (m && !p ? p = this._newPolygon(u, _, i, v) : p && !m && (g.remove(p), p = this._polygon = null), g .setClipPath(Uc(i, !1, t)), w && d.updateData(o, { isIgnore: b, clipShape: M }), o.eachItemGraphicEl(function(t) { t.stopAnimation(!0) }), Fc(this._stackedOnPoints, _) && Fc(this._points, u) || (v ? this ._updateAnimation(o, _, i, n, I, y) : (I && (u = Gc(u, i, I), _ = Gc(_, i, I)), f.setShape({ points: u }), p && p.setShape({ points: u, stackedOnPoints: _ })))) : (w && d.updateData(o, { isIgnore: b, clipShape: M }), I && (u = Gc(u, i, I), _ = Gc(_, i, I)), f = this._newPolyline(u, i, v), m && ( p = this._newPolygon(u, _, i, v)), g.setClipPath(Uc(i, !0, t))); var C = Zc(o, i) || o.getVisual("color"); f.useStyle(s(a.getLineStyle(), { fill: "none", stroke: C, lineJoin: "bevel" })); var T = t.get("smooth"); if (T = Wc(t.get("smooth")), f.setShape({ smooth: T, smoothMonotone: t.get("smoothMonotone"), connectNulls: t.get("connectNulls") }), p) { var A = o.getCalculationInfo("stackedOnSeries"), D = 0; p.useStyle(s(l.getAreaStyle(), { fill: C, opacity: .7, lineJoin: "bevel" })), A && (D = Wc(A.get("smooth"))), p.setShape({ smooth: T, stackedOnSmooth: D, smoothMonotone: t.get("smoothMonotone"), connectNulls: t.get("connectNulls") }) } this._data = o, this._coordSys = i, this._stackedOnPoints = _, this._points = u, this ._step = I, this._valueOrigin = y }, dispose: function() {}, highlight: function(t, e, n, i) { var r = t.getData(), o = lr(r, i); if (!(o instanceof Array) && null != o && o >= 0) { var a = r.getItemGraphicEl(o); if (!a) { var s = r.getItemLayout(o); if (!s) return; if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(s[0], s[1])) return; a = new _c(r, o), a.position = s, a.setZ(t.get("zlevel"), t.get("z")), a.ignore = isNaN(s[0]) || isNaN(s[1]), a.__temp = !0, r.setItemGraphicEl(o, a), a .stopSymbolAnimation(!0), this.group.add(a) } a.highlight() } else hl.prototype.highlight.call(this, t, e, n, i) }, downplay: function(t, e, n, i) { var r = t.getData(), o = lr(r, i); if (null != o && o >= 0) { var a = r.getItemGraphicEl(o); a && (a.__temp ? (r.setItemGraphicEl(o, null), this.group.remove(a)) : a.downplay()) } else hl.prototype.downplay.call(this, t, e, n, i) }, _newPolyline: function(t) { var e = this._polyline; return e && this._lineGroup.remove(e), e = new Lb({ shape: { points: t }, silent: !0, z2: 10 }), this._lineGroup.add(e), this._polyline = e, e }, _newPolygon: function(t, e) { var n = this._polygon; return n && this._lineGroup.remove(n), n = new zb({ shape: { points: t, stackedOnPoints: e }, silent: !0 }), this._lineGroup.add(n), this._polygon = n, n }, _updateAnimation: function(t, e, n, i, r, o) { var a = this._polyline, s = this._polygon, l = t.hostModel, u = Ib(this._data, t, this._stackedOnPoints, e, this._coordSys, n, this._valueOrigin, o), h = u.current, c = u.stackedOnCurrent, d = u.next, f = u.stackedOnNext; if (r && (h = Gc(u.current, n, r), c = Gc(u.stackedOnCurrent, n, r), d = Gc(u.next, n, r), f = Gc(u.stackedOnNext, n, r)), Vc(h, d) > 3e3 || s && Vc(c, f) > 3e3) return a .setShape({ points: d }), void(s && s.setShape({ points: d, stackedOnPoints: f })); a.shape.__points = u.current, a.shape.points = h, ea(a, { shape: { points: d } }, l), s && (s.setShape({ points: h, stackedOnPoints: c }), ea(s, { shape: { points: d, stackedOnPoints: f } }, l)); for (var p = [], g = u.status, v = 0; v < g.length; v++) { var m = g[v].cmd; if ("=" === m) { var y = t.getItemGraphicEl(g[v].idx1); y && p.push({ el: y, ptIdx: v }) } } a.animators && a.animators.length && a.animators[0].during(function() { for (var t = 0; t < p.length; t++) { var e = p[t].el; e.attr("position", a.shape.__points[p[t].ptIdx]) } }) }, remove: function() { var t = this.group, e = this._data; this._lineGroup.removeAll(), this._symbolDraw.remove(!0), e && e.eachItemGraphicEl(function( n, i) { n.__temp && (t.remove(n), e.setItemGraphicEl(i, null)) }), this._polyline = this._polygon = this._coordSys = this._points = this ._stackedOnPoints = this._data = null } }); var Eb = function(t, e, n) { return { seriesType: t, performRawSeries: !0, reset: function(t, i) { function r(e, n) { if (f) { var i = t.getRawValue(n), r = t.getDataParams(n); h && e.setItemVisual(n, "symbol", a(i, r)), c && e.setItemVisual(n, "symbolSize", s( i, r)), d && e.setItemVisual(n, "symbolRotate", u(i, r)) } if (e.hasItemOption) { var o = e.getItemModel(n), l = o.getShallow("symbol", !0), p = o.getShallow("symbolSize", !0), g = o.getShallow("symbolRotate", !0), v = o.getShallow("symbolKeepAspect", !0); null != l && e.setItemVisual(n, "symbol", l), null != p && e.setItemVisual(n, "symbolSize", p), null != g && e.setItemVisual(n, "symbolRotate", g), null != v && e.setItemVisual(n, "symbolKeepAspect", v) } } var o = t.getData(), a = t.get("symbol"), s = t.get("symbolSize"), l = t.get("symbolKeepAspect"), u = t.get("symbolRotate"), h = w(a), c = w(s), d = w(u), f = h || c || d, p = !h && a ? a : e, g = c ? null : s; return o.setVisual({ legendSymbol: n || p, symbol: p, symbolSize: g, symbolKeepAspect: l, symbolRotate: u }), i.isSeriesFiltered(t) ? void 0 : { dataEach: o.hasItemOption || f ? r : null } } } }, Bb = function(t) { return { seriesType: t, plan: Vx(), reset: function(t) { function e(t, e) { for (var n = t.end - t.start, r = o && new Float32Array(n * s), l = t.start, u = 0, h = [], c = []; l < t.end; l++) { var d; if (1 === s) { var f = e.get(a[0], l); d = !isNaN(f) && i.dataToPoint(f, null, c) } else { var f = h[0] = e.get(a[0], l), p = h[1] = e.get(a[1], l); d = !isNaN(f) && !isNaN(p) && i.dataToPoint(h, null, c) } o ? (r[u++] = d ? d[0] : 0 / 0, r[u++] = d ? d[1] : 0 / 0) : e.setItemLayout(l, d && d.slice() || [0 / 0, 0 / 0]) } o && e.setLayout("symbolPoints", r) } var n = t.getData(), i = t.coordinateSystem, r = t.pipelineContext, o = r.large; if (i) { var a = p(i.dimensions, function(t) { return n.mapDimension(t) }).slice(0, 2), s = a.length, l = n.getCalculationInfo("stackResultDimension"); return dh(n, a[0]) && (a[0] = l), dh(n, a[1]) && (a[1] = l), s && { progress: e } } } } }, Rb = { average: function(t) { for (var e = 0, n = 0, i = 0; i < t.length; i++) isNaN(t[i]) || (e += t[i], n++); return 0 === n ? 0 / 0 : e / n }, sum: function(t) { for (var e = 0, n = 0; n < t.length; n++) e += t[n] || 0; return e }, max: function(t) { for (var e = -1 / 0, n = 0; n < t.length; n++) t[n] > e && (e = t[n]); return isFinite(e) ? e : 0 / 0 }, min: function(t) { for (var e = 1 / 0, n = 0; n < t.length; n++) t[n] < e && (e = t[n]); return isFinite(e) ? e : 0 / 0 }, nearest: function(t) { return t[0] } }, Nb = function(t) { return Math.round(t.length / 2) }, Fb = function(t) { return { seriesType: t, modifyOutputEnd: !0, reset: function(t) { var e = t.getData(), n = t.get("sampling"), i = t.coordinateSystem; if ("cartesian2d" === i.type && n) { var r = i.getBaseAxis(), o = i.getOtherAxis(r), a = r.getExtent(), s = a[1] - a[0], l = Math.round(e.count() / s); if (l > 1) { var u; "string" == typeof n ? u = Rb[n] : "function" == typeof n && (u = n), u && t .setData(e.downSample(e.mapDimension(o.dim), 1 / l, u, Nb)) } } } } }, Vb = function(t) { this._axes = {}, this._dimList = [], this.name = t || "" }; Vb.prototype = { constructor: Vb, type: "cartesian", getAxis: function(t) { return this._axes[t] }, getAxes: function() { return p(this._dimList, jc, this) }, getAxesByScale: function(t) { return t = t.toLowerCase(), v(this.getAxes(), function(e) { return e.scale.type === t }) }, addAxis: function(t) { var e = t.dim; this._axes[e] = t, this._dimList.push(e) }, dataToCoord: function(t) { return this._dataCoordConvert(t, "dataToCoord") }, coordToData: function(t) { return this._dataCoordConvert(t, "coordToData") }, _dataCoordConvert: function(t, e) { for (var n = this._dimList, i = t instanceof Array ? [] : {}, r = 0; r < n.length; r++) { var o = n[r], a = this._axes[o]; i[o] = a[e](t[o]) } return i } }, qc.prototype = { constructor: qc, type: "cartesian2d", dimensions: ["x", "y"], getBaseAxis: function() { return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x") }, containPoint: function(t) { var e = this.getAxis("x"), n = this.getAxis("y"); return e.contain(e.toLocalCoord(t[0])) && n.contain(n.toLocalCoord(t[1])) }, containData: function(t) { return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1]) }, dataToPoint: function(t, e, n) { var i = this.getAxis("x"), r = this.getAxis("y"); return n = n || [], n[0] = i.toGlobalCoord(i.dataToCoord(t[0])), n[1] = r.toGlobalCoord(r .dataToCoord(t[1])), n }, clampData: function(t, e) { var n = this.getAxis("x").scale, i = this.getAxis("y").scale, r = n.getExtent(), o = i.getExtent(), a = n.parse(t[0]), s = i.parse(t[1]); return e = e || [], e[0] = Math.min(Math.max(Math.min(r[0], r[1]), a), Math.max(r[0], r[1])), e[ 1] = Math.min(Math.max(Math.min(o[0], o[1]), s), Math.max(o[0], o[1])), e }, pointToData: function(t, e) { var n = this.getAxis("x"), i = this.getAxis("y"); return e = e || [], e[0] = n.coordToData(n.toLocalCoord(t[0])), e[1] = i.coordToData(i .toLocalCoord(t[1])), e }, getOtherAxis: function(t) { return this.getAxis("x" === t.dim ? "y" : "x") }, getArea: function() { var t = this.getAxis("x").getGlobalExtent(), e = this.getAxis("y").getGlobalExtent(), n = Math.min(t[0], t[1]), i = Math.min(e[0], e[1]), r = Math.max(t[0], t[1]) - n, o = Math.max(e[0], e[1]) - i, a = new Tn(n, i, r, o); return a } }, h(qc, Vb); var Wb = function(t, e, n, i, r) { pb.call(this, t, e, n), this.type = i || "value", this.position = r || "bottom" }; Wb.prototype = { constructor: Wb, index: 0, getAxesOnZeroOf: null, model: null, isHorizontal: function() { var t = this.position; return "top" === t || "bottom" === t }, getGlobalExtent: function(t) { var e = this.getExtent(); return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e .reverse(), e }, getOtherAxis: function() { this.grid.getOtherAxis() }, pointToData: function(t, e) { return this.coordToData(this.toLocalCoord(t["x" === this.dim ? 0 : 1]), e) }, toLocalCoord: null, toGlobalCoord: null }, h(Wb, pb); var Hb = { show: !0, zlevel: 0, z: 0, inverse: !1, name: "", nameLocation: "end", nameRotate: null, nameTruncate: { maxWidth: null, ellipsis: "...", placeholder: "." }, nameTextStyle: {}, nameGap: 15, silent: !1, triggerEvent: !1, tooltip: { show: !1 }, axisPointer: {}, axisLine: { show: !0, onZero: !0, onZeroAxisIndex: null, lineStyle: { color: "#333", width: 1, type: "solid" }, symbol: ["none", "none"], symbolSize: [10, 15] }, axisTick: { show: !0, inside: !1, length: 5, lineStyle: { width: 1 } }, axisLabel: { show: !0, inside: !1, rotate: 0, showMinLabel: null, showMaxLabel: null, margin: 8, fontSize: 12 }, splitLine: { show: !0, lineStyle: { color: ["#ccc"], width: 1, type: "solid" } }, splitArea: { show: !1, areaStyle: { color: ["rgba(250,250,250,0.3)", "rgba(200,200,200,0.3)"] } } }, Gb = {}; Gb.categoryAxis = r({ boundaryGap: !0, deduplication: null, splitLine: { show: !1 }, axisTick: { alignWithLabel: !1, interval: "auto" }, axisLabel: { interval: "auto" } }, Hb), Gb.valueAxis = r({ boundaryGap: [0, 0], splitNumber: 5, minorTick: { show: !1, splitNumber: 5, length: 3, lineStyle: {} }, minorSplitLine: { show: !1, lineStyle: { color: "#eee", width: 1 } } }, Hb), Gb.timeAxis = s({ scale: !0, min: "dataMin", max: "dataMax" }, Gb.valueAxis), Gb.logAxis = s({ scale: !0, logBase: 10 }, Gb.valueAxis); var Zb = ["value", "category", "time", "log"], Xb = function(t, e, n, i) { f(Zb, function(a) { e.extend({ type: t + "Axis." + a, mergeDefaultAndTheme: function(e, i) { var o = this.layoutMode, s = o ? Ja(e) : {}, l = i.getTheme(); r(e, l.get(a + "Axis")), r(e, this.getDefaultOption()), e.type = n(t, e), o && Qa(e, s, o) }, optionUpdated: function() { var t = this.option; "category" === t.type && (this.__ordinalMeta = yh.createByAxisModel( this)) }, getCategories: function(t) { var e = this.option; return "category" === e.type ? t ? e.data : this.__ordinalMeta .categories : void 0 }, getOrdinalMeta: function() { return this.__ordinalMeta }, defaultOption: o([{}, Gb[a + "Axis"], i], !0) }) }), qy.registerSubTypeDefaulter(t + "Axis", x(n, t)) }, Yb = qy.extend({ type: "cartesian2dAxis", axis: null, init: function() { Yb.superApply(this, "init", arguments), this.resetRange() }, mergeOption: function() { Yb.superApply(this, "mergeOption", arguments), this.resetRange() }, restoreData: function() { Yb.superApply(this, "restoreData", arguments), this.resetRange() }, getCoordSysModel: function() { return this.ecModel.queryComponents({ mainType: "grid", index: this.option.gridIndex, id: this.option.gridId })[0] } }); r(Yb.prototype, Jw); var Ub = { offset: 0 }; Xb("x", Yb, Kc, Ub), Xb("y", Yb, Kc, Ub), qy.extend({ type: "grid", dependencies: ["xAxis", "yAxis"], layoutMode: "box", coordinateSystem: null, defaultOption: { show: !1, zlevel: 0, z: 0, left: "10%", top: 60, right: "10%", bottom: 60, containLabel: !1, backgroundColor: "rgba(0,0,0,0)", borderWidth: 1, borderColor: "#ccc" } }); var jb = Qc.prototype; jb.type = "grid", jb.axisPointerEnabled = !0, jb.getRect = function() { return this._rect }, jb.update = function(t, e) { var n = this._axesMap; this._updateScale(t, this.model), f(n.x, function(t) { Nh(t.scale, t.model) }), f(n.y, function(t) { Nh(t.scale, t.model) }); var i = {}; f(n.x, function(t) { Jc(n, "y", t, i) }), f(n.y, function(t) { Jc(n, "x", t, i) }), this.resize(this.model, e) }, jb.resize = function(t, e, n) { function i() { f(o, function(t) { var e = t.isHorizontal(), n = e ? [0, r.width] : [0, r.height], i = t.inverse ? 1 : 0; t.setExtent(n[i], n[1 - i]), ed(t, e ? r.x : r.y) }) } var r = $a(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }); this._rect = r; var o = this._axesList; i(), !n && t.get("containLabel") && (f(o, function(t) { if (!t.model.get("axisLabel.inside")) { var e = Gh(t); if (e) { var n = t.isHorizontal() ? "height" : "width", i = t.model.get("axisLabel.margin"); r[n] -= e[n] + i, "top" === t.position ? r.y += e.height + i : "left" === t .position && (r.x += e.width + i) } } }), i()) }, jb.getAxis = function(t, e) { var n = this._axesMap[t]; if (null != n) { if (null == e) for (var i in n) if (n.hasOwnProperty(i)) return n[i]; return n[e] } }, jb.getAxes = function() { return this._axesList.slice() }, jb.getCartesian = function(t, e) { if (null != t && null != e) { var n = "x" + t + "y" + e; return this._coordsMap[n] } S(t) && (e = t.yAxisIndex, t = t.xAxisIndex); for (var i = 0, r = this._coordsList; i < r.length; i++) if (r[i].getAxis("x").index === t || r[i].getAxis("y").index === e) return r[i] }, jb.getCartesians = function() { return this._coordsList.slice() }, jb.convertToPixel = function(t, e, n) { var i = this._findConvertTarget(t, e); return i.cartesian ? i.cartesian.dataToPoint(n) : i.axis ? i.axis.toGlobalCoord(i.axis.dataToCoord(n)) : null }, jb.convertFromPixel = function(t, e, n) { var i = this._findConvertTarget(t, e); return i.cartesian ? i.cartesian.pointToData(n) : i.axis ? i.axis.coordToData(i.axis.toLocalCoord(n)) : null }, jb._findConvertTarget = function(t, e) { var n, i, r = e.seriesModel, o = e.xAxisModel || r && r.getReferringComponents("xAxis")[0], a = e.yAxisModel || r && r.getReferringComponents("yAxis")[0], s = e.gridModel, l = this._coordsList; if (r) n = r.coordinateSystem, u(l, n) < 0 && (n = null); else if (o && a) n = this.getCartesian(o.componentIndex, a.componentIndex); else if (o) i = this.getAxis("x", o.componentIndex); else if (a) i = this.getAxis("y", a.componentIndex); else if (s) { var h = s.coordinateSystem; h === this && (n = this._coordsList[0]) } return { cartesian: n, axis: i } }, jb.containPoint = function(t) { var e = this._coordsList[0]; return e ? e.containPoint(t) : void 0 }, jb._initCartesian = function(t, e) { function n(n) { return function(a, s) { if ($c(a, t, e)) { var l = a.get("position"); "x" === n ? "top" !== l && "bottom" !== l && (l = i.bottom ? "top" : "bottom") : "left" !== l && "right" !== l && (l = i.left ? "right" : "left"), i[l] = !0; var u = new Wb(n, Fh(a), [0, 0], a.get("type"), l), h = "category" === u.type; u.onBand = h && a.get("boundaryGap"), u.inverse = a.get("inverse"), a.axis = u, u .model = a, u.grid = this, u.index = s, this._axesList.push(u), r[n][s] = u, o[n]++ } } } var i = { left: !1, right: !1, top: !1, bottom: !1 }, r = { x: {}, y: {} }, o = { x: 0, y: 0 }; return e.eachComponent("xAxis", n("x"), this), e.eachComponent("yAxis", n("y"), this), o.x && o.y ? ( this._axesMap = r, void f(r.x, function(e, n) { f(r.y, function(i, r) { var o = "x" + n + "y" + r, a = new qc(o); a.grid = this, a.model = t, this._coordsMap[o] = a, this._coordsList.push( a), a.addAxis(e), a.addAxis(i) }, this) }, this)) : (this._axesMap = {}, void(this._axesList = [])) }, jb._updateScale = function(t, e) { function n(t, e) { f(t.mapDimension(e.dim, !0), function(n) { e.scale.unionExtentFromData(t, fh(t, n)) }) } f(this._axesList, function(t) { t.scale.setExtent(1 / 0, -1 / 0) }), t.eachSeries(function(i) { if (id(i)) { var r = nd(i, t), o = r[0], a = r[1]; if (!$c(o, e, t) || !$c(a, e, t)) return; var s = this.getCartesian(o.componentIndex, a.componentIndex), l = i.getData(), u = s.getAxis("x"), h = s.getAxis("y"); "list" === l.type && (n(l, u, i), n(l, h, i)) } }, this) }, jb.getTooltipAxes = function(t) { var e = [], n = []; return f(this.getCartesians(), function(i) { var r = null != t && "auto" !== t ? i.getAxis(t) : i.getBaseAxis(), o = i.getOtherAxis(r); u(e, r) < 0 && e.push(r), u(n, o) < 0 && n.push(o) }), { baseAxes: e, otherAxes: n } }; var qb = ["xAxis", "yAxis"]; Qc.create = function(t, e) { var n = []; return t.eachComponent("grid", function(i, r) { var o = new Qc(i, t, e); o.name = "grid_" + r, o.resize(i, e, !0), i.coordinateSystem = o, n.push(o) }), t.eachSeries(function(e) { if (id(e)) { var n = nd(e, t), i = n[0], r = n[1], o = i.getCoordSysModel(); if (lp) { if (!o) throw new Error('Grid "' + A(i.get("gridIndex"), i.get("gridId"), 0) + '" not found'); if (i.getCoordSysModel() !== r.getCoordSysModel()) throw new Error( "xAxis and yAxis must use the same grid") } var a = o.coordinateSystem; e.coordinateSystem = a.getCartesian(i.componentIndex, r.componentIndex) } }), n }, Qc.dimensions = Qc.prototype.dimensions = qc.prototype.dimensions, Is.register("cartesian2d", Qc); var Kb = Math.PI, $b = function(t, e) { this.opt = e, this.axisModel = t, s(e, { labelOffset: 0, nameDirection: 1, tickDirection: 1, labelDirection: 1, silent: !0 }), this.group = new Cg; var n = new Cg({ position: e.position.slice(), rotation: e.rotation }); n.updateTransform(), this._transform = n.transform, this._dumbGroup = n }; $b.prototype = { constructor: $b, hasBuilder: function(t) { return !!Qb[t] }, add: function(t) { Qb[t].call(this) }, getGroup: function() { return this.group } }; var Qb = { axisLine: function() { var t = this.opt, e = this.axisModel; if (e.get("axisLine.show")) { var n = this.axisModel.axis.getExtent(), i = this._transform, r = [n[0], 0], o = [n[1], 0]; i && (oe(r, r, i), oe(o, o, i)); var s = a({ lineCap: "round" }, e.getModel("axisLine.lineStyle").getLineStyle()); this.group.add(new ey({ anid: "line", subPixelOptimize: !0, shape: { x1: r[0], y1: r[1], x2: o[0], y2: o[1] }, style: s, strokeContainThreshold: t.strokeContainThreshold || 5, silent: !0, z2: 1 })); var l = e.get("axisLine.symbol"), u = e.get("axisLine.symbolSize"), h = e.get("axisLine.symbolOffset") || 0; if ("number" == typeof h && (h = [h, h]), null != l) { "string" == typeof l && (l = [l, l]), ("string" == typeof u || "number" == typeof u) && (u = [u, u]); var c = u[0], d = u[1]; f([{ rotate: t.rotation + Math.PI / 2, offset: h[0], r: 0 }, { rotate: t.rotation - Math.PI / 2, offset: h[1], r: Math.sqrt((r[0] - o[0]) * (r[0] - o[0]) + (r[1] - o[1]) * (r[1] - o[ 1])) }], function(e, n) { if ("none" !== l[n] && null != l[n]) { var i = jh(l[n], -c / 2, -d / 2, c, d, s.stroke, !0), o = e.r + e.offset, a = [r[0] + o * Math.cos(t.rotation), r[1] - o * Math.sin(t .rotation)]; i.attr({ rotation: e.rotate, position: a, silent: !0, z2: 11 }), this.group.add(i) } }, this) } } }, axisTickLabel: function() { var t = this.axisModel, e = this.opt, n = hd(this, t, e), i = dd(this, t, e); od(t, i, n), cd(this, t, e) }, axisName: function() { var t = this.opt, e = this.axisModel, n = A(t.axisName, e.get("name")); if (n) { var i, r = e.get("nameLocation"), o = t.nameDirection, s = e.getModel("nameTextStyle"), l = e.get("nameGap") || 0, u = this.axisModel.axis.getExtent(), h = u[0] > u[1] ? -1 : 1, c = ["start" === r ? u[0] - h * l : "end" === r ? u[1] + h * l : (u[0] + u[1]) / 2, ld( r) ? t.labelOffset + o * l : 0], d = e.get("nameRotate"); null != d && (d = d * Kb / 180); var f; ld(r) ? i = tS(t.rotation, null != d ? d : t.rotation, o) : (i = rd(t, r, d || 0, u), f = t .axisNameAvailableWidth, null != f && (f = Math.abs(f / Math.sin(i.rotation)), ! isFinite(f) && (f = null))); var p = s.getFont(), g = e.get("nameTruncate", !0) || {}, v = g.ellipsis, m = A(t.nameTruncateMaxWidth, g.maxWidth, f), y = null != v && null != m ? Wy(n, m, p, v, { minChar: 2, placeholder: g.placeholder }) : n, x = e.get("tooltip", !0), _ = e.mainType, w = { componentType: _, name: n, $vars: ["name"] }; w[_ + "Index"] = e.componentIndex; var b = new Wm({ anid: "name", __fullText: n, __truncatedText: y, position: c, rotation: i.rotation, silent: eS(e), z2: 1, tooltip: x && x.show ? a({ content: n, formatter: function() { return n }, formatterParams: w }, x) : null }); Xo(b.style, s, { text: y, textFont: p, textFill: s.getTextColor() || e.get("axisLine.lineStyle.color"), textAlign: s.get("align") || i.textAlign, textVerticalAlign: s.get("verticalAlign") || i.textVerticalAlign }), e.get("triggerEvent") && (b.eventData = Jb(e), b.eventData.targetType = "axisName", b.eventData.name = n), this._dumbGroup.add(b), b.updateTransform(), this.group.add( b), b.decomposeTransform() } } }, Jb = $b.makeAxisEventDataBase = function(t) { var e = { componentType: t.mainType, componentIndex: t.componentIndex }; return e[t.mainType + "Index"] = t.componentIndex, e }, tS = $b.innerTextLayout = function(t, e, n) { var i, r, o = Da(e - t); return ka(o) ? (r = n > 0 ? "top" : "bottom", i = "center") : ka(o - Kb) ? (r = n > 0 ? "bottom" : "top", i = "center") : (r = "middle", i = o > 0 && Kb > o ? n > 0 ? "right" : "left" : n > 0 ? "left" : "right"), { rotation: o, textAlign: i, textVerticalAlign: r } }, eS = $b.isLabelSilent = function(t) { var e = t.get("tooltip"); return t.get("silent") || !(t.get("triggerEvent") || e && e.show) }, nS = f, iS = x, rS = Pu({ type: "axis", _axisPointer: null, axisPointerClass: null, render: function(t, e, n, i) { this.axisPointerClass && xd(t), rS.superApply(this, "render", arguments), Md(this, t, e, n, i, !0) }, updateAxisPointer: function(t, e, n, i) { Md(this, t, e, n, i, !1) }, remove: function(t, e) { var n = this._axisPointer; n && n.remove(e), rS.superApply(this, "remove", arguments) }, dispose: function(t, e) { Id(this, e), rS.superApply(this, "dispose", arguments) } }), oS = []; rS.registerAxisPointerClass = function(t, e) { if (lp && oS[t]) throw new Error("axisPointer " + t + " exists"); oS[t] = e }, rS.getAxisPointerClass = function(t) { return t && oS[t] }; var aS = ["axisLine", "axisTickLabel", "axisName"], sS = ["splitArea", "splitLine", "minorSplitLine"], lS = rS.extend({ type: "cartesianAxis", axisPointerClass: "CartesianAxisPointer", render: function(t, e, n, i) { this.group.removeAll(); var r = this._axisGroup; if (this._axisGroup = new Cg, this.group.add(this._axisGroup), t.get("show")) { var o = t.getCoordSysModel(), a = Cd(o, t), s = new $b(t, a); f(aS, s.add, s), this._axisGroup.add(s.getGroup()), f(sS, function(e) { t.get(e + ".show") && this["_" + e](t, o) }, this), aa(r, this._axisGroup, t), lS.superCall(this, "render", t, e, n, i) } }, remove: function() { Ad(this) }, _splitLine: function(t, e) { var n = t.axis; if (!n.scale.isBlank()) { var i = t.getModel("splitLine"), r = i.getModel("lineStyle"), o = r.get("color"); o = _(o) ? o : [o]; for (var a = e.coordinateSystem.getRect(), l = n.isHorizontal(), u = 0, h = n .getTicksCoords({ tickModel: i }), c = [], d = [], f = r.getLineStyle(), p = 0; p < h.length; p++) { var g = n.toGlobalCoord(h[p].coord); l ? (c[0] = g, c[1] = a.y, d[0] = g, d[1] = a.y + a.height) : (c[0] = a.x, c[1] = g, d[0] = a.x + a.width, d[1] = g); var v = u++ % o.length, m = h[p].tickValue; this._axisGroup.add(new ey({ anid: null != m ? "line_" + h[p].tickValue : null, subPixelOptimize: !0, shape: { x1: c[0], y1: c[1], x2: d[0], y2: d[1] }, style: s({ stroke: o[v] }, f), silent: !0 })) } } }, _minorSplitLine: function(t, e) { var n = t.axis, i = t.getModel("minorSplitLine"), r = i.getModel("lineStyle"), o = e.coordinateSystem.getRect(), a = n.isHorizontal(), s = n.getMinorTicksCoords(); if (s.length) for (var l = [], u = [], h = r.getLineStyle(), c = 0; c < s.length; c++) for (var d = 0; d < s[c].length; d++) { var f = n.toGlobalCoord(s[c][d].coord); a ? (l[0] = f, l[1] = o.y, u[0] = f, u[1] = o.y + o.height) : (l[0] = o.x, l[ 1] = f, u[0] = o.x + o.width, u[1] = f), this._axisGroup.add(new ey({ anid: "minor_line_" + s[c][d].tickValue, subPixelOptimize: !0, shape: { x1: l[0], y1: l[1], x2: u[0], y2: u[1] }, style: h, silent: !0 })) } }, _splitArea: function(t, e) { Td(this, this._axisGroup, t, e) } }); lS.extend({ type: "xAxis" }), lS.extend({ type: "yAxis" }), Pu({ type: "grid", render: function(t) { this.group.removeAll(), t.get("show") && this.group.add(new Jm({ shape: t.coordinateSystem.getRect(), style: s({ fill: t.get("backgroundColor") }, t.getItemStyle()), silent: !0, z2: -1 })) } }), _u(function(t) { t.xAxis && t.yAxis && !t.grid && (t.grid = {}) }), Tu(Eb("line", "circle", "line")), Cu(Bb("line")), wu(W_.PROCESSOR.STATISTIC, Fb("line")), ku({ type: "title", layoutMode: { type: "box", ignoreSize: !0 }, defaultOption: { zlevel: 0, z: 6, show: !0, text: "", target: "blank", subtext: "", subtarget: "blank", left: 0, top: 0, backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", borderWidth: 0, padding: 5, itemGap: 10, textStyle: { fontSize: 18, fontWeight: "bolder", color: "#333" }, subtextStyle: { color: "#aaa" } } }), Pu({ type: "title", render: function(t, e, n) { if (this.group.removeAll(), t.get("show")) { var i = this.group, r = t.getModel("textStyle"), o = t.getModel("subtextStyle"), a = t.get("textAlign"), s = D(t.get("textBaseline"), t.get("textVerticalAlign")), l = new Wm({ style: Xo({}, r, { text: t.get("text"), textFill: r.getTextColor() }, { disableBox: !0 }), z2: 10 }), u = l.getBoundingRect(), h = t.get("subtext"), c = new Wm({ style: Xo({}, o, { text: h, textFill: o.getTextColor(), y: u.height + t.get("itemGap"), textVerticalAlign: "top" }, { disableBox: !0 }), z2: 10 }), d = t.get("link"), f = t.get("sublink"), p = t.get("triggerEvent", !0); l.silent = !d && !p, c.silent = !f && !p, d && l.on("click", function() { qa(d, "_" + t.get("target")) }), f && c.on("click", function() { qa(d, "_" + t.get("subtarget")) }), l.eventData = c.eventData = p ? { componentType: "title", componentIndex: t.componentIndex } : null, i.add(l), h && i.add(c); var g = i.getBoundingRect(), v = t.getBoxLayoutParams(); v.width = g.width, v.height = g.height; var m = $a(v, { width: n.getWidth(), height: n.getHeight() }, t.get("padding")); a || (a = t.get("left") || t.get("right"), "middle" === a && (a = "center"), "right" === a ? m.x += m.width : "center" === a && (m.x += m.width / 2)), s || (s = t.get( "top") || t.get("bottom"), "center" === s && (s = "middle"), "bottom" === s ? m.y += m.height : "middle" === s && (m.y += m.height / 2), s = s || "top"), i.attr("position", [m.x, m.y]); var y = { textAlign: a, textVerticalAlign: s }; l.setStyle(y), c.setStyle(y), g = i.getBoundingRect(); var x = m.margin, _ = t.getItemStyle(["color", "opacity"]); _.fill = t.get("backgroundColor"); var w = new Jm({ shape: { x: g.x - x[3], y: g.y - x[0], width: g.width + x[1] + x[3], height: g.height + x[0] + x[2], r: t.get("borderRadius") }, style: _, subPixelOptimize: !0, silent: !0 }); i.add(w) } } }); var uS = qx.legend.selector, hS = { all: { type: "all", title: i(uS.all) }, inverse: { type: "inverse", title: i(uS.inverse) } }, cS = ku({ type: "legend.plain", dependencies: ["series"], layoutMode: { type: "box", ignoreSize: !0 }, init: function(t, e, n) { this.mergeDefaultAndTheme(t, n), t.selected = t.selected || {}, this._updateSelector(t) }, mergeOption: function(t) { cS.superCall(this, "mergeOption", t), this._updateSelector(t) }, _updateSelector: function(t) { var e = t.selector; e === !0 && (e = t.selector = ["all", "inverse"]), _(e) && f(e, function(t, n) { b(t) && (t = { type: t }), e[n] = r(t, hS[t.type]) }) }, optionUpdated: function() { this._updateData(this.ecModel); var t = this._data; if (t[0] && "single" === this.get("selectedMode")) { for (var e = !1, n = 0; n < t.length; n++) { var i = t[n].get("name"); if (this.isSelected(i)) { this.select(i), e = !0; break } }!e && this.select(t[0].get("name")) } }, _updateData: function(t) { var e = [], n = []; t.eachRawSeries(function(i) { var r = i.name; n.push(r); var o; if (i.legendVisualProvider) { var a = i.legendVisualProvider, s = a.getAllNames(); t.isSeriesFiltered(i) || (n = n.concat(s)), s.length ? e = e.concat(s) : o = !0 } else o = !0; o && ar(i) && e.push(i.name) }), this._availableNames = n; var i = this.get("data") || e, r = p(i, function(t) { return ("string" == typeof t || "number" == typeof t) && (t = { name: t }), new pa(t, this, this.ecModel) }, this); this._data = r }, getData: function() { return this._data }, select: function(t) { var e = this.option.selected, n = this.get("selectedMode"); if ("single" === n) { var i = this._data; f(i, function(t) { e[t.get("name")] = !1 }) } e[t] = !0 }, unSelect: function(t) { "single" !== this.get("selectedMode") && (this.option.selected[t] = !1) }, toggleSelected: function(t) { var e = this.option.selected; e.hasOwnProperty(t) || (e[t] = !0), this[e[t] ? "unSelect" : "select"](t) }, allSelect: function() { var t = this._data, e = this.option.selected; f(t, function(t) { e[t.get("name", !0)] = !0 }) }, inverseSelect: function() { var t = this._data, e = this.option.selected; f(t, function(t) { var n = t.get("name", !0); e.hasOwnProperty(n) || (e[n] = !0), e[n] = !e[n] }) }, isSelected: function(t) { var e = this.option.selected; return !(e.hasOwnProperty(t) && !e[t]) && u(this._availableNames, t) >= 0 }, getOrient: function() { return "vertical" === this.get("orient") ? { index: 1, name: "vertical" } : { index: 0, name: "horizontal" } }, defaultOption: { zlevel: 0, z: 4, show: !0, orient: "horizontal", left: "center", top: 0, align: "auto", backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", borderRadius: 0, borderWidth: 0, padding: 5, itemGap: 10, itemWidth: 25, itemHeight: 14, inactiveColor: "#ccc", inactiveBorderColor: "#ccc", itemStyle: { borderWidth: 0 }, textStyle: { color: "#333" }, selectedMode: !0, selector: !1, selectorLabel: { show: !0, borderRadius: 10, padding: [3, 5, 3, 5], fontSize: 12, fontFamily: " sans-serif", color: "#666", borderWidth: 1, borderColor: "#666" }, emphasis: { selectorLabel: { show: !0, color: "#eee", backgroundColor: "#666" } }, selectorPosition: "auto", selectorItemGap: 7, selectorButtonGap: 10, tooltip: { show: !1 } } }); Su("legendToggleSelect", "legendselectchanged", x(Dd, "toggleSelected")), Su("legendAllSelect", "legendselectall", x(Dd, "allSelect")), Su("legendInverseSelect", "legendinverseselect", x(Dd, "inverseSelect")), Su("legendSelect", "legendselected", x(Dd, "select")), Su("legendUnSelect", "legendunselected", x(Dd, "unSelect")); var dS = x, fS = f, pS = Cg, gS = Pu({ type: "legend.plain", newlineDisabled: !1, init: function() { this.group.add(this._contentGroup = new pS), this._backgroundEl, this.group.add(this ._selectorGroup = new pS), this._isFirstRender = !0 }, getContentGroup: function() { return this._contentGroup }, getSelectorGroup: function() { return this._selectorGroup }, render: function(t, e, n) { var i = this._isFirstRender; if (this._isFirstRender = !1, this.resetInner(), t.get("show", !0)) { var r = t.get("align"), o = t.get("orient"); r && "auto" !== r || (r = "right" === t.get("left") && "vertical" === o ? "right" : "left"); var a = t.get("selector", !0), l = t.get("selectorPosition", !0); !a || l && "auto" !== l || (l = "horizontal" === o ? "end" : "start"), this.renderInner( r, t, e, n, a, o, l); var u = t.getBoxLayoutParams(), h = { width: n.getWidth(), height: n.getHeight() }, c = t.get("padding"), d = $a(u, h, c), f = this.layoutInner(t, r, d, i, a, l), p = $a(s({ width: f.width, height: f.height }, u), h, c); this.group.attr("position", [p.x - f.x, p.y - f.y]), this.group.add(this._backgroundEl = kd(f, t)) } }, resetInner: function() { this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this ._backgroundEl), this.getSelectorGroup().removeAll() }, renderInner: function(t, e, n, i, r, o, a) { var s = this.getContentGroup(), l = N(), u = e.get("selectedMode"), h = []; n.eachRawSeries(function(t) { !t.get("legendHoverLink") && h.push(t.id) }), fS(e.getData(), function(r, o) { var a = r.get("name"); if (!this.newlineDisabled && ("" === a || "\n" === a)) return void s.add( new pS({ newline: !0 })); var c = n.getSeriesByName(a)[0]; if (!l.get(a)) { if (c) { var d = c.getData(), f = d.getVisual("color"), p = d.getVisual("borderColor"); "function" == typeof f && (f = f(c.getDataParams(0))), "function" == typeof p && (p = p(c.getDataParams(0))); var g = d.getVisual("legendSymbol") || "roundRect", v = d.getVisual("symbol"), m = this._createItem(a, o, r, e, g, v, t, f, p, u); m.on("click", dS(Od, a, null, i, h)).on("mouseover", dS(Ld, c.name, null, i, h)).on("mouseout", dS(zd, c.name, null, i, h)), l.set( a, !0) } else n.eachRawSeries(function(n) { if (!l.get(a) && n.legendVisualProvider) { var s = n.legendVisualProvider; if (!s.containName(a)) return; var c = s.indexOfName(a), d = s.getItemVisual(c, "color"), f = s.getItemVisual(c, "borderColor"), p = "roundRect", g = this._createItem(a, o, r, e, p, null, t, d, f, u); g.on("click", dS(Od, null, a, i, h)).on("mouseover", dS(Ld, null, a, i, h)).on("mouseout", dS(zd, null, a, i, h)), l.set(a, !0) } }, this); lp && (l.get(a) || console.warn(a + " series not exists. Legend data should be same with series name or data name." )) } }, this), r && this._createSelector(r, e, i, o, a) }, _createSelector: function(t, e, n) { function i(t) { var i = t.type, o = new Wm({ style: { x: 0, y: 0, align: "center", verticalAlign: "middle" }, onclick: function() { n.dispatchAction({ type: "all" === i ? "legendAllSelect" : "legendInverseSelect" }) } }); r.add(o); var a = e.getModel("selectorLabel"), s = e.getModel("emphasis.selectorLabel"); Go(o.style, o.hoverStyle = {}, a, s, { defaultText: t.title, isRectText: !1 }), Fo(o) } var r = this.getSelectorGroup(); fS(t, function(t) { i(t) }) }, _createItem: function(t, e, n, i, r, o, s, l, u, h) { var c = i.get("itemWidth"), d = i.get("itemHeight"), f = i.get("inactiveColor"), p = i.get("inactiveBorderColor"), g = i.get("symbolKeepAspect"), v = i.getModel("itemStyle"), m = i.isSelected(t), y = new pS, x = n.getModel("textStyle"), _ = n.get("icon"), w = n.getModel("tooltip"), b = w.parentModel; r = _ || r; var S = jh(r, 0, 0, c, d, m ? l : f, null == g ? !0 : g); if (y.add(Pd(S, r, v, u, p, m)), !_ && o && (o !== r || "none" === o)) { var M = .8 * d; "none" === o && (o = "circle"); var I = jh(o, (c - M) / 2, (d - M) / 2, M, M, m ? l : f, null == g ? !0 : g); y.add(Pd(I, o, v, u, p, m)) } var C = "left" === s ? c + 5 : -5, T = s, A = i.get("formatter"), D = t; "string" == typeof A && A ? D = A.replace("{name}", null != t ? t : "") : "function" == typeof A && (D = A(t)), y.add(new Wm({ style: Xo({}, x, { text: D, x: C, y: d / 2, textFill: m ? x.getTextColor() : f, textAlign: T, textVerticalAlign: "middle" }) })); var k = new Jm({ shape: y.getBoundingRect(), invisible: !0, tooltip: w.get("show") ? a({ content: t, formatter: b.get("formatter", !0) || function() { return t }, formatterParams: { componentType: "legend", legendIndex: i.componentIndex, name: t, $vars: ["name"] } }, w.option) : null }); return y.add(k), y.eachChild(function(t) { t.silent = !0 }), k.silent = !h, this.getContentGroup().add(y), Fo(y), y.__legendDataIndex = e, y }, layoutInner: function(t, e, n, i, r, o) { var a = this.getContentGroup(), s = this.getSelectorGroup(); Yy(t.get("orient"), a, t.get("itemGap"), n.width, n.height); var l = a.getBoundingRect(), u = [-l.x, -l.y]; if (r) { Yy("horizontal", s, t.get("selectorItemGap", !0)); var h = s.getBoundingRect(), c = [-h.x, -h.y], d = t.get("selectorButtonGap", !0), f = t.getOrient().index, p = 0 === f ? "width" : "height", g = 0 === f ? "height" : "width", v = 0 === f ? "y" : "x"; "end" === o ? c[f] += l[p] + d : u[f] += h[p] + d, c[1 - f] += l[g] / 2 - h[g] / 2, s .attr("position", c), a.attr("position", u); var m = { x: 0, y: 0 }; return m[p] = l[p] + d + h[p], m[g] = Math.max(l[g], h[g]), m[v] = Math.min(0, h[v] + c[ 1 - f]), m } return a.attr("position", u), this.group.getBoundingRect() }, remove: function() { this.getContentGroup().removeAll(), this._isFirstRender = !0 } }), vS = function(t) { var e = t.findComponents({ mainType: "legend" }); e && e.length && t.filterSeries(function(t) { for (var n = 0; n < e.length; n++) if (!e[n].isSelected(t.name)) return !1; return !0 }) }; wu(W_.PROCESSOR.SERIES_FILTER, vS), qy.registerSubTypeDefaulter("legend", function() { return "plain" }); var mS = cS.extend({ type: "legend.scroll", setScrollDataIndex: function(t) { this.option.scrollDataIndex = t }, defaultOption: { scrollDataIndex: 0, pageButtonItemGap: 5, pageButtonGap: null, pageButtonPosition: "end", pageFormatter: "{current}/{total}", pageIcons: { horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"], vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"] }, pageIconColor: "#2f4554", pageIconInactiveColor: "#aaa", pageIconSize: 15, pageTextStyle: { color: "#333" }, animationDurationUpdate: 800 }, init: function(t, e, n, i) { var r = Ja(t); mS.superCall(this, "init", t, e, n, i), Ed(this, t, r) }, mergeOption: function(t, e) { mS.superCall(this, "mergeOption", t, e), Ed(this, this.option, t) } }), yS = Cg, xS = ["width", "height"], _S = ["x", "y"], wS = gS.extend({ type: "legend.scroll", newlineDisabled: !0, init: function() { wS.superCall(this, "init"), this._currentIndex = 0, this.group.add(this._containerGroup = new yS), this._containerGroup.add(this.getContentGroup()), this.group.add(this ._controllerGroup = new yS), this._showController }, resetInner: function() { wS.superCall(this, "resetInner"), this._controllerGroup.removeAll(), this._containerGroup .removeClipPath(), this._containerGroup.__rectSize = null }, renderInner: function(t, e, n, i, r, o, a) { function s(t, n) { var r = t + "DataIndex", o = ua(e.get("pageIcons", !0)[e.getOrient().name][n], { onclick: y(l._pageGo, l, r, e, i) }, { x: -h[0] / 2, y: -h[1] / 2, width: h[0], height: h[1] }); o.name = t, u.add(o) } var l = this; wS.superCall(this, "renderInner", t, e, n, i, r, o, a); var u = this._controllerGroup, h = e.get("pageIconSize", !0); _(h) || (h = [h, h]), s("pagePrev", 0); var c = e.getModel("pageTextStyle"); u.add(new Wm({ name: "pageText", style: { textFill: c.getTextColor(), font: c.getFont(), textVerticalAlign: "middle", textAlign: "center" }, silent: !0 })), s("pageNext", 1) }, layoutInner: function(t, e, n, r, o, a) { var s = this.getSelectorGroup(), l = t.getOrient().index, u = xS[l], h = _S[l], c = xS[1 - l], d = _S[1 - l]; o && Yy("horizontal", s, t.get("selectorItemGap", !0)); var f = t.get("selectorButtonGap", !0), p = s.getBoundingRect(), g = [-p.x, -p.y], v = i(n); o && (v[u] = n[u] - p[u] - f); var m = this._layoutContentAndController(t, r, v, l, u, c, d); if (o) { if ("end" === a) g[l] += m[u] + f; else { var y = p[u] + f; g[l] -= y, m[h] -= y } m[u] += p[u] + f, g[1 - l] += m[d] + m[c] / 2 - p[c] / 2, m[c] = Math.max(m[c], p[c]), m[d] = Math.min(m[d], p[d] + g[1 - l]), s.attr("position", g) } return m }, _layoutContentAndController: function(t, e, n, i, r, o, a) { var s = this.getContentGroup(), l = this._containerGroup, u = this._controllerGroup; Yy(t.get("orient"), s, t.get("itemGap"), i ? n.width : null, i ? null : n.height), Yy( "horizontal", u, t.get("pageButtonItemGap", !0)); var h = s.getBoundingRect(), c = u.getBoundingRect(), d = this._showController = h[r] > n[r], f = [-h.x, -h.y]; e || (f[i] = s.position[i]); var p = [0, 0], g = [-c.x, -c.y], v = D(t.get("pageButtonGap", !0), t.get("itemGap", !0)); if (d) { var m = t.get("pageButtonPosition", !0); "end" === m ? g[i] += n[r] - c[r] : p[i] += c[r] + v } g[1 - i] += h[o] / 2 - c[o] / 2, s.attr("position", f), l.attr("position", p), u.attr( "position", g); var y = { x: 0, y: 0 }; if (y[r] = d ? n[r] : h[r], y[o] = Math.max(h[o], c[o]), y[a] = Math.min(0, c[a] + g[1 - i]), l.__rectSize = n[r], d) { var x = { x: 0, y: 0 }; x[r] = Math.max(n[r] - c[r] - v, 0), x[o] = y[o], l.setClipPath(new Jm({ shape: x })), l.__rectSize = x[r] } else u.eachChild(function(t) { t.attr({ invisible: !0, silent: !0 }) }); var _ = this._getPageInfo(t); return null != _.pageIndex && ea(s, { position: _.contentPosition }, d ? t : !1), this._updatePageInfoView(t, _), y }, _pageGo: function(t, e, n) { var i = this._getPageInfo(e)[t]; null != i && n.dispatchAction({ type: "legendScroll", scrollDataIndex: i, legendId: e.id }) }, _updatePageInfoView: function(t, e) { var n = this._controllerGroup; f(["pagePrev", "pageNext"], function(i) { var r = null != e[i + "DataIndex"], o = n.childOfName(i); o && (o.setStyle("fill", r ? t.get("pageIconColor", !0) : t.get( "pageIconInactiveColor", !0)), o.cursor = r ? "pointer" : "default") }); var i = n.childOfName("pageText"), r = t.get("pageFormatter"), o = e.pageIndex, a = null != o ? o + 1 : 0, s = e.pageCount; i && r && i.setStyle("text", b(r) ? r.replace("{current}", a).replace("{total}", s) : r({ current: a, total: s })) }, _getPageInfo: function(t) { function e(t) { if (t) { var e = t.getBoundingRect(), n = e[l] + t.position[a]; return { s: n, e: n + e[s], i: t.__legendDataIndex } } } function n(t, e) { return t.e >= e && t.s <= e + o } var i = t.get("scrollDataIndex", !0), r = this.getContentGroup(), o = this._containerGroup.__rectSize, a = t.getOrient().index, s = xS[a], l = _S[a], u = this._findTargetItemIndex(i), h = r.children(), c = h[u], d = h.length, f = d ? 1 : 0, p = { contentPosition: r.position.slice(), pageCount: f, pageIndex: f - 1, pagePrevDataIndex: null, pageNextDataIndex: null }; if (!c) return p; var g = e(c); p.contentPosition[a] = -g.s; for (var v = u + 1, m = g, y = g, x = null; d >= v; ++v) x = e(h[v]), (!x && y.e > m.s + o || x && !n(x, m.s)) && (m = y.i > m.i ? y : x, m && (null == p .pageNextDataIndex && (p.pageNextDataIndex = m.i), ++p.pageCount)), y = x; for (var v = u - 1, m = g, y = g, x = null; v >= -1; --v) x = e(h[v]), x && n(y, x.s) || !(m .i < y.i) || (y = m, null == p.pagePrevDataIndex && (p.pagePrevDataIndex = m.i), ++p .pageCount, ++p.pageIndex), m = x; return p }, _findTargetItemIndex: function(t) { if (!this._showController) return 0; var e, n, i = this.getContentGroup(); return i.eachChild(function(i, r) { var o = i.__legendDataIndex; null == n && null != o && (n = r), o === t && (e = r) }), null != e ? e : n } }); Su("legendScroll", "legendscroll", function(t, e) { var n = t.scrollDataIndex; null != n && e.eachComponent({ mainType: "legend", subType: "scroll", query: t }, function(t) { t.setScrollDataIndex(n) }) }); var bS = function(t, e) { var n, i = [], r = t.seriesIndex; if (null == r || !(n = e.getSeriesByIndex(r))) return { point: [] }; var o = n.getData(), a = lr(o, t); if (null == a || 0 > a || _(a)) return { point: [] }; var s = o.getItemGraphicEl(a), l = n.coordinateSystem; if (n.getTooltipPosition) i = n.getTooltipPosition(a) || []; else if (l && l.dataToPoint) i = l.dataToPoint(o.getValues(p(l.dimensions, function(t) { return o.mapDimension(t) }), a, !0)) || []; else if (s) { var u = s.getBoundingRect().clone(); u.applyTransform(s.transform), i = [u.x + u.width / 2, u.y + u.height / 2] } return { point: i, el: s } }, SS = f, MS = x, IS = ur(), CS = function(t, e, n) { var i = t.currTrigger, r = [t.x, t.y], o = t, a = t.dispatchAction || y(n.dispatchAction, n), s = e.getComponent("axisPointer").coordSysAxesInfo; if (s) { Xd(r) && (r = bS({ seriesIndex: o.seriesIndex, dataIndex: o.dataIndex }, e).point); var l = Xd(r), u = o.axesInfo, h = s.axesInfo, c = "leave" === i || Xd(r), d = {}, f = {}, p = { list: [], map: {} }, g = { showPointer: MS(Nd, f), showTooltip: MS(Fd, p) }; SS(s.coordSysMap, function(t, e) { var n = l || t.containPoint(r); SS(s.coordSysAxesInfo[e], function(t) { var e = t.axis, i = Gd(u, t); if (!c && n && (!u || i)) { var o = i && i.value; null != o || l || (o = e.pointToData(r)), null != o && Bd(t, o, g, !1, d) } }) }); var v = {}; return SS(h, function(t, e) { var n = t.linkGroup; n && !f[e] && SS(n.axesInfo, function(e, i) { var r = f[i]; if (e !== t && r) { var o = r.value; n.mapper && (o = t.axis.scale.parse(n.mapper(o, Zd(e), Zd(t)))), v[t .key] = o } }) }), SS(v, function(t, e) { Bd(h[e], t, g, !0, d) }), Vd(f, h, d), Wd(p, r, t, a), Hd(h, a, n), d } }, TS = (ku({ type: "axisPointer", coordSysAxesInfo: null, defaultOption: { show: "auto", triggerOn: null, zlevel: 0, z: 50, type: "line", snap: !1, triggerTooltip: !0, value: null, status: null, link: [], animation: null, animationDurationUpdate: 200, lineStyle: { color: "#aaa", width: 1, type: "solid" }, shadowStyle: { color: "rgba(150,150,150,0.3)" }, label: { show: !0, formatter: null, precision: "auto", margin: 3, color: "#fff", padding: [5, 7, 5, 7], backgroundColor: "auto", borderColor: null, borderWidth: 0, shadowBlur: 3, shadowColor: "#aaa" }, handle: { show: !1, icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z", size: 45, margin: 50, color: "#333", shadowBlur: 3, shadowColor: "#aaa", shadowOffsetX: 0, shadowOffsetY: 2, throttle: 40 } } }), ur()), AS = f, DS = Pu({ type: "axisPointer", render: function(t, e, n) { var i = e.getComponent("tooltip"), r = t.get("triggerOn") || i && i.get("triggerOn") || "mousemove|click"; Yd("axisPointer", n, function(t, e, n) { "none" !== r && ("leave" === t || r.indexOf(t) >= 0) && n({ type: "updateAxisPointer", currTrigger: t, x: e && e.offsetX, y: e && e.offsetY }) }) }, remove: function(t, e) { Qd(e.getZr(), "axisPointer"), DS.superApply(this._model, "remove", arguments) }, dispose: function(t, e) { Qd("axisPointer", e), DS.superApply(this._model, "dispose", arguments) } }), kS = ur(), PS = i, OS = y; Jd.prototype = { _group: null, _lastGraphicKey: null, _handle: null, _dragging: !1, _lastValue: null, _lastStatus: null, _payloadInfo: null, animationThreshold: 15, render: function(t, e, n, i) { var r = e.get("value"), o = e.get("status"); if (this._axisModel = t, this._axisPointerModel = e, this._api = n, i || this._lastValue !== r || this._lastStatus !== o) { this._lastValue = r, this._lastStatus = o; var a = this._group, s = this._handle; if (!o || "hide" === o) return a && a.hide(), void(s && s.hide()); a && a.show(), s && s.show(); var l = {}; this.makeElOption(l, r, t, e, n); var u = l.graphicKey; u !== this._lastGraphicKey && this.clear(n), this._lastGraphicKey = u; var h = this._moveAnimation = this.determineAnimation(t, e); if (a) { var c = x(tf, e, h); this.updatePointerEl(a, l, c, e), this.updateLabelEl(a, l, c, e) } else a = this._group = new Cg, this.createPointerEl(a, l, t, e), this.createLabelEl(a, l, t, e), n.getZr().add(a); of(a, e, !0), this._renderHandle(r) } }, remove: function(t) { this.clear(t) }, dispose: function(t) { this.clear(t) }, determineAnimation: function(t, e) { var n = e.get("animation"), i = t.axis, r = "category" === i.type, o = e.get("snap"); if (!o && !r) return !1; if ("auto" === n || null == n) { var a = this.animationThreshold; if (r && i.getBandWidth() > a) return !0; if (o) { var s = _d(t).seriesDataCount, l = i.getExtent(); return Math.abs(l[0] - l[1]) / s > a } return !1 } return n === !0 }, makeElOption: function() {}, createPointerEl: function(t, e) { var n = e.pointer; if (n) { var i = kS(t).pointerEl = new My[n.type](PS(e.pointer)); t.add(i) } }, createLabelEl: function(t, e, n, i) { if (e.label) { var r = kS(t).labelEl = new Jm(PS(e.label)); t.add(r), nf(r, i) } }, updatePointerEl: function(t, e, n) { var i = kS(t).pointerEl; i && e.pointer && (i.setStyle(e.pointer.style), n(i, { shape: e.pointer.shape })) }, updateLabelEl: function(t, e, n, i) { var r = kS(t).labelEl; r && (r.setStyle(e.label.style), n(r, { shape: e.label.shape, position: e.label.position }), nf(r, i)) }, _renderHandle: function(t) { if (!this._dragging && this.updateHandleTransform) { var e = this._axisPointerModel, n = this._api.getZr(), i = this._handle, r = e.getModel("handle"), o = e.get("status"); if (!r.get("show") || !o || "hide" === o) return i && n.remove(i), void(this._handle = null); var a; this._handle || (a = !0, i = this._handle = ua(r.get("icon"), { cursor: "move", draggable: !0, onmousemove: function(t) { Wp(t.event) }, onmousedown: OS(this._onHandleDragMove, this, 0, 0), drift: OS(this._onHandleDragMove, this), ondragend: OS(this._onHandleDragEnd, this) }), n.add(i)), of(i, e, !1); var s = ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY" ]; i.setStyle(r.getItemStyle(null, s)); var l = r.get("size"); _(l) || (l = [l, l]), i.attr("scale", [l[0] / 2, l[1] / 2]), vl(this, "_doDispatchAxisPointer", r.get("throttle") || 0, "fixRate"), this ._moveHandleToValue(t, a) } }, _moveHandleToValue: function(t, e) { tf(this._axisPointerModel, !e && this._moveAnimation, this._handle, rf(this.getHandleTransform( t, this._axisModel, this._axisPointerModel))) }, _onHandleDragMove: function(t, e) { var n = this._handle; if (n) { this._dragging = !0; var i = this.updateHandleTransform(rf(n), [t, e], this._axisModel, this._axisPointerModel); this._payloadInfo = i, n.stopAnimation(), n.attr(rf(i)), kS(n).lastProp = null, this ._doDispatchAxisPointer() } }, _doDispatchAxisPointer: function() { var t = this._handle; if (t) { var e = this._payloadInfo, n = this._axisModel; this._api.dispatchAction({ type: "updateAxisPointer", x: e.cursorPoint[0], y: e.cursorPoint[1], tooltipOption: e.tooltipOption, axesInfo: [{ axisDim: n.axis.dim, axisIndex: n.componentIndex }] }) } }, _onHandleDragEnd: function() { this._dragging = !1; var t = this._handle; if (t) { var e = this._axisPointerModel.get("value"); this._moveHandleToValue(e), this._api.dispatchAction({ type: "hideTip" }) } }, getHandleTransform: null, updateHandleTransform: null, clear: function(t) { this._lastValue = null, this._lastStatus = null; var e = t.getZr(), n = this._group, i = this._handle; e && n && (this._lastGraphicKey = null, n && e.remove(n), i && e.remove(i), this._group = null, this._handle = null, this._payloadInfo = null) }, doClear: function() {}, buildLabel: function(t, e, n) { return n = n || 0, { x: t[n], y: t[1 - n], width: e[n], height: e[1 - n] } } }, Jd.prototype.constructor = Jd, mr(Jd); var LS = Jd.extend({ makeElOption: function(t, e, n, i, r) { var o = n.axis, a = o.grid, s = i.get("type"), l = pf(a, o).getOtherAxis(o).getGlobalExtent(), u = o.toGlobalCoord(o.dataToCoord(e, !0)); if (s && "none" !== s) { var h = af(i), c = zS[s](o, u, l); c.style = h, t.graphicKey = c.type, t.pointer = c } var d = Cd(a.model, n); cf(e, t, d, n, i, r) }, getHandleTransform: function(t, e, n) { var i = Cd(e.axis.grid.model, e, { labelInside: !1 }); return i.labelMargin = n.get("handle.margin"), { position: hf(e.axis, t, i), rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0) } }, updateHandleTransform: function(t, e, n) { var i = n.axis, r = i.grid, o = i.getGlobalExtent(!0), a = pf(r, i).getOtherAxis(i).getGlobalExtent(), s = "x" === i.dim ? 0 : 1, l = t.position; l[s] += e[s], l[s] = Math.min(o[1], l[s]), l[s] = Math.max(o[0], l[s]); var u = (a[1] + a[0]) / 2, h = [u, u]; h[s] = l[s]; var c = [{ verticalAlign: "middle" }, { align: "center" }]; return { position: l, rotation: t.rotation, cursorPoint: h, tooltipOption: c[s] } } }), zS = { line: function(t, e, n) { var i = df([e, n[0]], [e, n[1]], gf(t)); return { type: "Line", subPixelOptimize: !0, shape: i } }, shadow: function(t, e, n) { var i = Math.max(1, t.getBandWidth()), r = n[1] - n[0]; return { type: "Rect", shape: ff([e - i / 2, n[0]], [i, r], gf(t)) } } }; rS.registerAxisPointerClass("CartesianAxisPointer", LS), _u(function(t) { if (t) { (!t.axisPointer || 0 === t.axisPointer.length) && (t.axisPointer = {}); var e = t.axisPointer.link; e && !_(e) && (t.axisPointer.link = [e]) } }), wu(W_.PROCESSOR.STATISTIC, function(t, e) { t.getComponent("axisPointer").coordSysAxesInfo = fd(t, e) }), Su({ type: "updateAxisPointer", event: "updateAxisPointer", update: ":updateAxisPointer" }, CS), ku({ type: "tooltip", dependencies: ["axisPointer"], defaultOption: { zlevel: 0, z: 60, show: !0, showContent: !0, trigger: "item", triggerOn: "mousemove|click", alwaysShowContent: !1, displayMode: "single", renderMode: "auto", confine: !1, showDelay: 0, hideDelay: 100, transitionDuration: .4, enterable: !1, backgroundColor: "rgba(50,50,50,0.7)", borderColor: "#333", borderRadius: 4, borderWidth: 0, padding: 5, extraCssText: "", axisPointer: { type: "line", axis: "auto", animation: "auto", animationDurationUpdate: 200, animationEasingUpdate: "exponentialOut", crossStyle: { color: "#999", width: 1, type: "dashed", textStyle: {} } }, textStyle: { color: "#fff", fontSize: 14 } } }); var ES = f, BS = Fa, RS = ["", "-webkit-", "-moz-", "-o-"], NS = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"; _f.prototype = { constructor: _f, _enterable: !0, update: function() { var t = this._container, e = t.currentStyle || document.defaultView.getComputedStyle(t), n = t.style; "absolute" !== n.position && "absolute" !== e.position && (n.position = "relative") }, show: function(t) { clearTimeout(this._hideTimeout); var e = this.el, n = this._styleCoord; e.style.cssText = NS + yf(t) + ";left:" + n[0] + "px;top:" + n[1] + "px;" + (t.get( "extraCssText") || ""), e.style.display = e.innerHTML ? "block" : "none", e.style .pointerEvents = this._enterable ? "auto" : "none", this._show = !0 }, setContent: function(t) { this.el.innerHTML = null == t ? "" : t }, setEnterable: function(t) { this._enterable = t }, getSize: function() { var t = this.el; return [t.clientWidth, t.clientHeight] }, moveTo: function(t, e) { var n = this._styleCoord; xf(n, this._zr, this._appendToBody, t, e); var i = this.el.style; i.left = n[0] + "px", i.top = n[1] + "px" }, hide: function() { this.el.style.display = "none", this._show = !1 }, hideLater: function(t) { !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(y(this.hide, this), t)) : this.hide()) }, isShow: function() { return this._show }, dispose: function() { this.el.parentNode.removeChild(this.el) }, getOuterSize: function() { var t = this.el.clientWidth, e = this.el.clientHeight; if (document.defaultView && document.defaultView.getComputedStyle) { var n = document.defaultView.getComputedStyle(this.el); n && (t += parseInt(n.borderLeftWidth, 10) + parseInt(n.borderRightWidth, 10), e += parseInt(n.borderTopWidth, 10) + parseInt(n.borderBottomWidth, 10)) } return { width: t, height: e } } }, wf.prototype = { constructor: wf, _enterable: !0, update: function() {}, show: function() { this._hideTimeout && clearTimeout(this._hideTimeout), this.el.attr("show", !0), this._show = !0 }, setContent: function(t, e, n) { this.el && this._zr.remove(this.el); for (var i = {}, r = t, o = "{marker", a = "|}", s = r.indexOf(o); s >= 0;) { var l = r.indexOf(a), u = r.substr(s + o.length, l - s - o.length); i["marker" + u] = u.indexOf("sub") > -1 ? { textWidth: 4, textHeight: 4, textBorderRadius: 2, textBackgroundColor: e[u], textOffset: [3, 0] } : { textWidth: 10, textHeight: 10, textBorderRadius: 5, textBackgroundColor: e[u] }, r = r.substr(l + 1), s = r.indexOf("{marker") } this.el = new Wm({ style: { rich: i, text: t, textLineHeight: 20, textBackgroundColor: n.get("backgroundColor"), textBorderRadius: n.get("borderRadius"), textFill: n.get("textStyle.color"), textPadding: n.get("padding") }, z: n.get("z") }), this._zr.add(this.el); var h = this; this.el.on("mouseover", function() { h._enterable && (clearTimeout(h._hideTimeout), h._show = !0), h._inContent = !0 }), this.el.on("mouseout", function() { h._enterable && h._show && h.hideLater(h._hideDelay), h._inContent = !1 }) }, setEnterable: function(t) { this._enterable = t }, getSize: function() { var t = this.el.getBoundingRect(); return [t.width, t.height] }, moveTo: function(t, e) { this.el && this.el.attr("position", [t, e]) }, hide: function() { this.el && this.el.hide(), this._show = !1 }, hideLater: function(t) { !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(y(this.hide, this), t)) : this.hide()) }, isShow: function() { return this._show }, getOuterSize: function() { var t = this.getSize(); return { width: t[0], height: t[1] } } }; var FS = y, VS = f, WS = ba, HS = new Jm({ shape: { x: -1, y: -1, width: 2, height: 2 } }); Pu({ type: "tooltip", init: function(t, e) { if (!dp.node) { var n = t.getComponent("tooltip"), i = n.get("renderMode"); this._renderMode = pr(i); var r; "html" === this._renderMode ? (r = new _f(e.getDom(), e, { appendToBody: n.get("appendToBody", !0) }), this._newLine = "
") : (r = new wf(e), this._newLine = "\n"), this ._tooltipContent = r } }, render: function(t, e, n) { if (!dp.node) { this.group.removeAll(), this._tooltipModel = t, this._ecModel = e, this._api = n, this ._lastDataByCoordSys = null, this._alwaysShowContent = t.get("alwaysShowContent"); var i = this._tooltipContent; i.update(), i.setEnterable(t.get("enterable")), this._initGlobalListener(), this ._keepShow() } }, _initGlobalListener: function() { var t = this._tooltipModel, e = t.get("triggerOn"); Yd("itemTooltip", this._api, FS(function(t, n, i) { "none" !== e && (e.indexOf(t) >= 0 ? this._tryShow(n, i) : "leave" === t && this._hide(i)) }, this)) }, _keepShow: function() { var t = this._tooltipModel, e = this._ecModel, n = this._api; if (null != this._lastX && null != this._lastY && "none" !== t.get("triggerOn")) { var i = this; clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout( function() { !n.isDisposed() && i.manuallyShowTip(t, e, n, { x: i._lastX, y: i._lastY }) }) } }, manuallyShowTip: function(t, e, n, i) { if (i.from !== this.uid && !dp.node) { var r = Sf(i, n); this._ticket = ""; var o = i.dataByCoordSys; if (i.tooltip && null != i.x && null != i.y) { var a = HS; a.position = [i.x, i.y], a.update(), a.tooltip = i.tooltip, this._tryShow({ offsetX: i.x, offsetY: i.y, target: a }, r) } else if (o) this._tryShow({ offsetX: i.x, offsetY: i.y, position: i.position, dataByCoordSys: i.dataByCoordSys, tooltipOption: i.tooltipOption }, r); else if (null != i.seriesIndex) { if (this._manuallyAxisShowTip(t, e, n, i)) return; var s = bS(i, e), l = s.point[0], u = s.point[1]; null != l && null != u && this._tryShow({ offsetX: l, offsetY: u, position: i.position, target: s.el }, r) } else null != i.x && null != i.y && (n.dispatchAction({ type: "updateAxisPointer", x: i.x, y: i.y }), this._tryShow({ offsetX: i.x, offsetY: i.y, position: i.position, target: n.getZr().findHover(i.x, i.y).target }, r)) } }, manuallyHideTip: function(t, e, n, i) { var r = this._tooltipContent; !this._alwaysShowContent && this._tooltipModel && r.hideLater(this._tooltipModel.get( "hideDelay")), this._lastX = this._lastY = null, i.from !== this.uid && this._hide( Sf(i, n)) }, _manuallyAxisShowTip: function(t, e, n, i) { var r = i.seriesIndex, o = i.dataIndex, a = e.getComponent("axisPointer").coordSysAxesInfo; if (null != r && null != o && null != a) { var s = e.getSeriesByIndex(r); if (s) { var l = s.getData(), t = bf([l.getItemModel(o), s, (s.coordinateSystem || {}).model, t]); if ("axis" === t.get("trigger")) return n.dispatchAction({ type: "updateAxisPointer", seriesIndex: r, dataIndex: o, position: i.position }), !0 } } }, _tryShow: function(t, e) { var n = t.target, i = this._tooltipModel; if (i) { this._lastX = t.offsetX, this._lastY = t.offsetY; var r = t.dataByCoordSys; r && r.length ? this._showAxisTooltip(r, t) : n && null != n.dataIndex ? (this ._lastDataByCoordSys = null, this._showSeriesItemTooltip(t, n, e)) : n && n .tooltip ? (this._lastDataByCoordSys = null, this._showComponentItemTooltip(t, n, e)) : (this._lastDataByCoordSys = null, this._hide(e)) } }, _showOrMove: function(t, e) { var n = t.get("showDelay"); e = y(e, this), clearTimeout(this._showTimout), n > 0 ? this._showTimout = setTimeout(e, n) : e() }, _showAxisTooltip: function(t, e) { var n = this._ecModel, i = this._tooltipModel, o = [e.offsetX, e.offsetY], a = [], s = [], l = bf([e.tooltipOption, i]), u = this._renderMode, h = this._newLine, c = {}; VS(t, function(t) { VS(t.dataByAxis, function(t) { var e = n.getComponent(t.axisDim + "Axis", t.axisIndex), i = t.value, o = []; if (e && null != i) { var l = uf(i, e.axis, n, t.seriesDataIndices, t.valueLabelOpt); f(t.seriesDataIndices, function(a) { var h = n.getSeriesByIndex(a.seriesIndex), d = a.dataIndexInside, f = h && h.getDataParams(d); if (f.axisDim = t.axisDim, f.axisIndex = t .axisIndex, f.axisType = t.axisType, f.axisId = t.axisId, f.axisValue = Hh(e.axis, i), f .axisValueLabel = l, f) { s.push(f); var p, g = h.formatTooltip(d, !0, null, u); if (S(g)) { p = g.html; var v = g.markers; r(c, v) } else p = g; o.push(p) } }); var d = l; a.push("html" !== u ? o.join(h) : (d ? Va(d) + h : "") + o.join( h)) } }) }, this), a.reverse(), a = a.join(this._newLine + this._newLine); var d = e.position; this._showOrMove(l, function() { this._updateContentNotChangedOnAxis(t) ? this._updatePosition(l, d, o[0], o[1], this._tooltipContent, s) : this._showTooltipContent(l, a, s, Math .random(), o[0], o[1], d, void 0, c) }) }, _showSeriesItemTooltip: function(t, e, n) { var i = this._ecModel, r = e.seriesIndex, o = i.getSeriesByIndex(r), a = e.dataModel || o, s = e.dataIndex, l = e.dataType, u = a.getData(l), h = bf([u.getItemModel(s), a, o && (o.coordinateSystem || {}).model, this ._tooltipModel]), c = h.get("trigger"); if (null == c || "item" === c) { var d, f, p = a.getDataParams(s, l), g = a.formatTooltip(s, !1, l, this._renderMode); S(g) ? (d = g.html, f = g.markers) : (d = g, f = null); var v = "item_" + a.name + "_" + s; this._showOrMove(h, function() { this._showTooltipContent(h, d, p, v, t.offsetX, t.offsetY, t.position, t .target, f) }), n({ type: "showTip", dataIndexInside: s, dataIndex: u.getRawIndex(s), seriesIndex: r, from: this.uid }) } }, _showComponentItemTooltip: function(t, e, n) { var i = e.tooltip; if ("string" == typeof i) { var r = i; i = { content: r, formatter: r } } var o = new pa(i, this._tooltipModel, this._ecModel), a = o.get("content"), s = Math.random(); this._showOrMove(o, function() { this._showTooltipContent(o, a, o.get("formatterParams") || {}, s, t.offsetX, t .offsetY, t.position, e) }), n({ type: "showTip", from: this.uid }) }, _showTooltipContent: function(t, e, n, i, r, o, a, s, l) { if (this._ticket = "", t.get("showContent") && t.get("show")) { var u = this._tooltipContent, h = t.get("formatter"); a = a || t.get("position"); var c = e; if (h && "string" == typeof h) c = Wa(h, n, !0); else if ("function" == typeof h) { var d = FS(function(e, i) { e === this._ticket && (u.setContent(i, l, t), this._updatePosition(t, a, r, o, u, n, s)) }, this); this._ticket = i, c = h(n, i, d) } u.setContent(c, l, t), u.show(t), this._updatePosition(t, a, r, o, u, n, s) } }, _updatePosition: function(t, e, n, i, r, o, a) { var s = this._api.getWidth(), l = this._api.getHeight(); e = e || t.get("position"); var u = r.getSize(), h = t.get("align"), c = t.get("verticalAlign"), d = a && a.getBoundingRect().clone(); if (a && d.applyTransform(a.transform), "function" == typeof e && (e = e([n, i], o, r.el, d, { viewSize: [s, l], contentSize: u.slice() })), _(e)) n = WS(e[0], s), i = WS(e[1], l); else if (S(e)) { e.width = u[0], e.height = u[1]; var f = $a(e, { width: s, height: l }); n = f.x, i = f.y, h = null, c = null } else if ("string" == typeof e && a) { var p = Cf(e, d, u); n = p[0], i = p[1] } else { var p = Mf(n, i, r, s, l, h ? null : 20, c ? null : 20); n = p[0], i = p[1] } if (h && (n -= Tf(h) ? u[0] / 2 : "right" === h ? u[0] : 0), c && (i -= Tf(c) ? u[1] / 2 : "bottom" === c ? u[1] : 0), t.get("confine")) { var p = If(n, i, r, s, l); n = p[0], i = p[1] } r.moveTo(n, i) }, _updateContentNotChangedOnAxis: function(t) { var e = this._lastDataByCoordSys, n = !!e && e.length === t.length; return n && VS(e, function(e, i) { var r = e.dataByAxis || {}, o = t[i] || {}, a = o.dataByAxis || []; n &= r.length === a.length, n && VS(r, function(t, e) { var i = a[e] || {}, r = t.seriesDataIndices || [], o = i.seriesDataIndices || []; n &= t.value === i.value && t.axisType === i.axisType && t .axisId === i.axisId && r.length === o.length, n && VS(r, function(t, e) { var i = o[e]; n &= t.seriesIndex === i.seriesIndex && t.dataIndex === i.dataIndex }) }) }), this._lastDataByCoordSys = t, !!n }, _hide: function(t) { this._lastDataByCoordSys = null, t({ type: "hideTip", from: this.uid }) }, dispose: function(t, e) { dp.node || (this._tooltipContent.dispose(), Qd("itemTooltip", e)) } }), Su({ type: "showTip", event: "showTip", update: "tooltip:manuallyShowTip" }, function() {}), Su({ type: "hideTip", event: "hideTip", update: "tooltip:manuallyHideTip" }, function() {}), qy.registerSubTypeDefaulter("dataZoom", function() { return "slider" }); var GS = ["x", "y", "z", "radius", "angle", "single"], ZS = ["cartesian2d", "polar", "singleAxis"], XS = Df(GS, ["axisIndex", "axis", "index", "id"]), YS = function(t, e, n, i, r, o) { t = t || 0; var a = n[1] - n[0]; if (null != r && (r = Of(r, [0, a])), null != o && (o = Math.max(o, null != r ? r : 0)), "all" === i) { var s = Math.abs(e[1] - e[0]); s = Of(s, [0, a]), r = o = Of(s, [r, o]), i = 0 } e[0] = Of(e[0], n), e[1] = Of(e[1], n); var l = Pf(e, i); e[i] += t; var u = r || 0, h = n.slice(); l.sign < 0 ? h[0] += u : h[1] -= u, e[i] = Of(e[i], h); var c = Pf(e, i); null != r && (c.sign !== l.sign || c.span < r) && (e[1 - i] = e[i] + l.sign * r); var c = Pf(e, i); return null != o && c.span > o && (e[1 - i] = e[i] + c.sign * o), e }, US = f, jS = Ma, qS = function(t, e, n, i) { this._dimName = t, this._axisIndex = e, this._valueWindow, this._percentWindow, this._dataExtent, this ._minMaxSpan, this.ecModel = i, this._dataZoomModel = n }; qS.prototype = { constructor: qS, hostedBy: function(t) { return this._dataZoomModel === t }, getDataValueWindow: function() { return this._valueWindow.slice() }, getDataPercentWindow: function() { return this._percentWindow.slice() }, getTargetSeriesModels: function() { var t = [], e = this.ecModel; return e.eachSeries(function(n) { if (Af(n.get("coordinateSystem"))) { var i = this._dimName, r = e.queryComponents({ mainType: i + "Axis", index: n.get(i + "AxisIndex"), id: n.get(i + "AxisId") })[0]; this._axisIndex === (r && r.componentIndex) && t.push(n) } }, this), t }, getAxisModel: function() { return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex) }, getOtherAxisModel: function() { var t, e, n = this._dimName, i = this.ecModel, r = this.getAxisModel(), o = "x" === n || "y" === n; o ? (e = "gridIndex", t = "x" === n ? "y" : "x") : (e = "polarIndex", t = "angle" === n ? "radius" : "angle"); var a; return i.eachComponent(t + "Axis", function(t) { (t.get(e) || 0) === (r.get(e) || 0) && (a = t) }), a }, getMinMaxSpan: function() { return i(this._minMaxSpan) }, calculateDataWindow: function(t) { function e(t, e, n, i, r) { var a = r ? "Span" : "ValueSpan"; YS(0, t, n, "all", h["min" + a], h["max" + a]); for (var s = 0; 2 > s; s++) e[s] = wa(t[s], n, i, !0), r && (e[s] = o.parse(e[s])) } var n, i = this._dataExtent, r = this.getAxisModel(), o = r.axis.scale, a = this._dataZoomModel.getRangePropMode(), s = [0, 100], l = [], u = []; US(["start", "end"], function(e, r) { var h = t[e], c = t[e + "Value"]; "percent" === a[r] ? (null == h && (h = s[r]), c = o.parse(wa(h, s, i))) : (n = !0, c = null == c ? i[r] : o.parse(c), h = wa(c, i, s)), u[r] = c, l[r] = h }), jS(u), jS(l); var h = this._minMaxSpan; return n ? e(u, l, i, s, !1) : e(l, u, s, i, !0), { valueWindow: u, percentWindow: l } }, reset: function(t) { if (t === this._dataZoomModel) { var e = this.getTargetSeriesModels(); this._dataExtent = Lf(this, this._dimName, e), Bf(this); var n = this.calculateDataWindow(t.settledOption); this._valueWindow = n.valueWindow, this._percentWindow = n.percentWindow, Ef(this) } }, restore: function(t) { t === this._dataZoomModel && (this._valueWindow = this._percentWindow = null, Ef(this, !0)) }, filterData: function(t) { function e(t) { return t >= o[0] && t <= o[1] } if (t === this._dataZoomModel) { var n = this._dimName, i = this.getTargetSeriesModels(), r = t.get("filterMode"), o = this._valueWindow; "none" !== r && US(i, function(t) { var i = t.getData(), a = i.mapDimension(n, !0); a.length && ("weakFilter" === r ? i.filterSelf(function(t) { for (var e, n, r, s = 0; s < a.length; s++) { var l = i.get(a[s], t), u = !isNaN(l), h = l < o[0], c = l > o[1]; if (u && !h && !c) return !0; u && (r = !0), h && (e = !0), c && (n = !0) } return r && e && n }) : US(a, function(n) { if ("empty" === r) t.setData(i = i.map(n, function(t) { return e(t) ? t : 0 / 0 })); else { var a = {}; a[n] = o, i.selectRange(a) } }), US(a, function(t) { i.setApproximateExtent(o, t) })) }) } } }; var KS = f, $S = XS, QS = ku({ type: "dataZoom", dependencies: ["xAxis", "yAxis", "zAxis", "radiusAxis", "angleAxis", "singleAxis", "series"], defaultOption: { zlevel: 0, z: 4, orient: null, xAxisIndex: null, yAxisIndex: null, filterMode: "filter", throttle: null, start: 0, end: 100, startValue: null, endValue: null, minSpan: null, maxSpan: null, minValueSpan: null, maxValueSpan: null, rangeMode: null }, init: function(t, e, n) { this._dataIntervalByAxis = {}, this._dataInfo = {}, this._axisProxies = {}, this .textStyleModel, this._autoThrottle = !0, this._rangePropMode = ["percent", "percent"]; var i = Rf(t); this.settledOption = i, this.mergeDefaultAndTheme(t, n), this.doInit(i) }, mergeOption: function(t) { var e = Rf(t); r(this.option, t, !0), r(this.settledOption, e, !0), this.doInit(e) }, doInit: function(t) { var e = this.option; dp.canvasSupported || (e.realtime = !1), this._setDefaultThrottle(t), Nf(this, t); var n = this.settledOption; KS([ ["start", "startValue"], ["end", "endValue"] ], function(t, i) { "value" === this._rangePropMode[i] && (e[t[0]] = n[t[0]] = null) }, this), this.textStyleModel = this.getModel("textStyle"), this._resetTarget(), this ._giveAxisProxies() }, _giveAxisProxies: function() { var t = this._axisProxies; this.eachTargetAxis(function(e, n, i, r) { var o = this.dependentModels[e.axis][n], a = o.__dzAxisProxy || (o.__dzAxisProxy = new qS(e.name, n, this, r)); t[e.name + "_" + n] = a }, this) }, _resetTarget: function() { var t = this.option, e = this._judgeAutoMode(); $S(function(e) { var n = e.axisIndex; t[n] = tr(t[n]) }, this), "axisIndex" === e ? this._autoSetAxisIndex() : "orient" === e && this ._autoSetOrient() }, _judgeAutoMode: function() { var t = this.option, e = !1; $S(function(n) { null != t[n.axisIndex] && (e = !0) }, this); var n = t.orient; return null == n && e ? "orient" : e ? void 0 : (null == n && (t.orient = "horizontal"), "axisIndex") }, _autoSetAxisIndex: function() { var t = !0, e = this.get("orient", !0), n = this.option, i = this.dependentModels; if (t) { var r = "vertical" === e ? "y" : "x"; i[r + "Axis"].length ? (n[r + "AxisIndex"] = [0], t = !1) : KS(i.singleAxis, function( i) { t && i.get("orient", !0) === e && (n.singleAxisIndex = [i.componentIndex], t = !1) }) } t && $S(function(e) { if (t) { var i = [], r = this.dependentModels[e.axis]; if (r.length && !i.length) for (var o = 0, a = r.length; a > o; o++) "category" === r[o].get( "type") && i.push(o); n[e.axisIndex] = i, i.length && (t = !1) } }, this), t && this.ecModel.eachSeries(function(t) { this._isSeriesHasAllAxesTypeOf(t, "value") && $S(function(e) { var i = n[e.axisIndex], r = t.get(e.axisIndex), o = t.get(e.axisId), a = t.ecModel.queryComponents({ mainType: e.axis, index: r, id: o })[0]; if (lp && !a) throw new Error(e.axis + ' "' + A(r, o, 0) + '" not found'); r = a.componentIndex, u(i, r) < 0 && i.push(r) }) }, this) }, _autoSetOrient: function() { var t; this.eachTargetAxis(function(e) { !t && (t = e.name) }, this), this.option.orient = "y" === t ? "vertical" : "horizontal" }, _isSeriesHasAllAxesTypeOf: function(t, e) { var n = !0; return $S(function(i) { var r = t.get(i.axisIndex), o = this.dependentModels[i.axis][r]; o && o.get("type") === e || (n = !1) }, this), n }, _setDefaultThrottle: function(t) { if (t.hasOwnProperty("throttle") && (this._autoThrottle = !1), this._autoThrottle) { var e = this.ecModel.option; this.option.throttle = e.animation && e.animationDurationUpdate > 0 ? 100 : 20 } }, getFirstTargetAxisModel: function() { var t; return $S(function(e) { if (null == t) { var n = this.get(e.axisIndex); n.length && (t = this.dependentModels[e.axis][n[0]]) } }, this), t }, eachTargetAxis: function(t, e) { var n = this.ecModel; $S(function(i) { KS(this.get(i.axisIndex), function(r) { t.call(e, i, r, this, n) }, this) }, this) }, getAxisProxy: function(t, e) { return this._axisProxies[t + "_" + e] }, getAxisModel: function(t, e) { var n = this.getAxisProxy(t, e); return n && n.getAxisModel() }, setRawRange: function(t) { var e = this.option, n = this.settledOption; KS([ ["start", "startValue"], ["end", "endValue"] ], function(i) { (null != t[i[0]] || null != t[i[1]]) && (e[i[0]] = n[i[0]] = t[i[0]], e[i[1]] = n[i[1]] = t[i[1]]) }, this), Nf(this, t) }, setCalculatedRange: function(t) { var e = this.option; KS(["start", "startValue", "end", "endValue"], function(n) { e[n] = t[n] }) }, getPercentRange: function() { var t = this.findRepresentativeAxisProxy(); return t ? t.getDataPercentWindow() : void 0 }, getValueRange: function(t, e) { if (null != t || null != e) return this.getAxisProxy(t, e).getDataValueWindow(); var n = this.findRepresentativeAxisProxy(); return n ? n.getDataValueWindow() : void 0 }, findRepresentativeAxisProxy: function(t) { if (t) return t.__dzAxisProxy; var e = this._axisProxies; for (var n in e) if (e.hasOwnProperty(n) && e[n].hostedBy(this)) return e[n]; for (var n in e) if (e.hasOwnProperty(n) && !e[n].hostedBy(this)) return e[n] }, getRangePropMode: function() { return this._rangePropMode.slice() } }), JS = Nx.extend({ type: "dataZoom", render: function(t, e, n) { this.dataZoomModel = t, this.ecModel = e, this.api = n }, getTargetCoordInfo: function() { function t(t, e, n, i) { for (var r, o = 0; o < n.length; o++) if (n[o].model === t) { r = n[o]; break } r || n.push(r = { model: t, axisModels: [], coordIndex: i }), r.axisModels.push(e) } var e = this.dataZoomModel, n = this.ecModel, i = {}; return e.eachTargetAxis(function(e, r) { var o = n.getComponent(e.axis, r); if (o) { var a = o.getCoordSysModel(); a && t(a, o, i[a.mainType] || (i[a.mainType] = []), a.componentIndex) } }, this), i } }), tM = (QS.extend({ type: "dataZoom.slider", layoutMode: "box", defaultOption: { show: !0, right: "ph", top: "ph", width: "ph", height: "ph", left: null, bottom: null, backgroundColor: "rgba(47,69,84,0)", dataBackground: { lineStyle: { color: "#2f4554", width: .5, opacity: .3 }, areaStyle: { color: "rgba(47,69,84,0.3)", opacity: .3 } }, borderColor: "#ddd", fillerColor: "rgba(167,183,204,0.4)", handleIcon: "M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z", handleSize: "100%", handleStyle: { color: "#a7b7cc" }, labelPrecision: null, labelFormatter: null, showDetail: !0, showDataShadow: "auto", realtime: !0, zoomLock: !1, textStyle: { color: "#333" } } }), Jm), eM = wa, nM = Ma, iM = y, rM = f, oM = 7, aM = 1, sM = 30, lM = "horizontal", uM = "vertical", hM = 5, cM = ["line", "bar", "candlestick", "scatter"], dM = JS.extend({ type: "dataZoom.slider", init: function(t, e) { this._displayables = {}, this._orient, this._range, this._handleEnds, this._size, this ._handleWidth, this._handleHeight, this._location, this._dragging, this._dataShadowInfo, this.api = e }, render: function(t, e, n, i) { return dM.superApply(this, "render", arguments), vl(this, "_dispatchZoomAction", this .dataZoomModel.get("throttle"), "fixRate"), this._orient = t.get("orient"), this .dataZoomModel.get("show") === !1 ? void this.group.removeAll() : (i && "dataZoom" === i .type && i.from === this.uid || this._buildView(), void this._updateView()) }, remove: function() { dM.superApply(this, "remove", arguments), ml(this, "_dispatchZoomAction") }, dispose: function() { dM.superApply(this, "dispose", arguments), ml(this, "_dispatchZoomAction") }, _buildView: function() { var t = this.group; t.removeAll(), this._resetLocation(), this._resetInterval(); var e = this._displayables.barGroup = new Cg; this._renderBackground(), this._renderHandle(), this._renderDataShadow(), t.add(e), this ._positionGroup() }, _resetLocation: function() { var t = this.dataZoomModel, e = this.api, n = this._findCoordRect(), i = { width: e.getWidth(), height: e.getHeight() }, r = this._orient === lM ? { right: i.width - n.x - n.width, top: i.height - sM - oM, width: n.width, height: sM } : { right: oM, top: n.y, width: sM, height: n.height }, o = Ja(t.option); f(["right", "top", "width", "height"], function(t) { "ph" === o[t] && (o[t] = r[t]) }); var a = $a(o, i, t.padding); this._location = { x: a.x, y: a.y }, this._size = [a.width, a.height], this._orient === uM && this._size.reverse() }, _positionGroup: function() { var t = this.group, e = this._location, n = this._orient, i = this.dataZoomModel.getFirstTargetAxisModel(), r = i && i.get("inverse"), o = this._displayables.barGroup, a = (this._dataShadowInfo || {}).otherAxisInverse; o.attr(n !== lM || r ? n === lM && r ? { scale: a ? [-1, 1] : [-1, -1] } : n !== uM || r ? { scale: a ? [-1, -1] : [-1, 1], rotation: Math.PI / 2 } : { scale: a ? [1, -1] : [1, 1], rotation: Math.PI / 2 } : { scale: a ? [1, 1] : [1, -1] }); var s = t.getBoundingRect([o]); t.attr("position", [e.x - s.x, e.y - s.y]) }, _getViewExtent: function() { return [0, this._size[0]] }, _renderBackground: function() { var t = this.dataZoomModel, e = this._size, n = this._displayables.barGroup; n.add(new tM({ silent: !0, shape: { x: 0, y: 0, width: e[0], height: e[1] }, style: { fill: t.get("backgroundColor") }, z2: -40 })), n.add(new tM({ shape: { x: 0, y: 0, width: e[0], height: e[1] }, style: { fill: "transparent" }, z2: 0, onclick: y(this._onClickPanelClick, this) })) }, _renderDataShadow: function() { var t = this._dataShadowInfo = this._prepareDataShadowInfo(); if (t) { var e = this._size, n = t.series, i = n.getRawData(), r = n.getShadowDim ? n.getShadowDim() : t.otherDim; if (null != r) { var o = i.getDataExtent(r), a = .3 * (o[1] - o[0]); o = [o[0] - a, o[1] + a]; var l, u = [0, e[1]], h = [0, e[0]], c = [ [e[0], 0], [0, 0] ], d = [], f = h[1] / (i.count() - 1), p = 0, g = Math.round(i.count() / e[0]); i.each([r], function(t, e) { if (g > 0 && e % g) return void(p += f); var n = null == t || isNaN(t) || "" === t, i = n ? 0 : eM(t, o, u, !0); n && !l && e ? (c.push([c[c.length - 1][0], 0]), d.push([d[d.length - 1] [0], 0 ])) : !n && l && (c.push([p, 0]), d.push([p, 0])), c.push([p, i]), d .push([p, i]), p += f, l = n }); var v = this.dataZoomModel; this._displayables.barGroup.add(new qm({ shape: { points: c }, style: s({ fill: v.get("dataBackgroundColor") }, v.getModel("dataBackground.areaStyle").getAreaStyle()), silent: !0, z2: -20 })), this._displayables.barGroup.add(new Km({ shape: { points: d }, style: v.getModel("dataBackground.lineStyle").getLineStyle(), silent: !0, z2: -19 })) } } }, _prepareDataShadowInfo: function() { var t = this.dataZoomModel, e = t.get("showDataShadow"); if (e !== !1) { var n, i = this.ecModel; return t.eachTargetAxis(function(r, o) { var a = t.getAxisProxy(r.name, o).getTargetSeriesModels(); f(a, function(t) { if (!(n || e !== !0 && u(cM, t.get("type")) < 0)) { var a, s = i.getComponent(r.axis, o).axis, l = Ff(r.name), h = t.coordinateSystem; null != l && h.getOtherAxis && (a = h.getOtherAxis(s) .inverse), l = t.getData().mapDimension(l), n = { thisAxis: s, series: t, thisDim: r.name, otherDim: l, otherAxisInverse: a } } }, this) }, this), n } }, _renderHandle: function() { var t = this._displayables, e = t.handles = [], n = t.handleLabels = [], i = this._displayables.barGroup, r = this._size, o = this.dataZoomModel; i.add(t.filler = new tM({ draggable: !0, cursor: Vf(this._orient), drift: iM(this._onDragMove, this, "all"), ondragstart: iM(this._showDataInfo, this, !0), ondragend: iM(this._onDragEnd, this), onmouseover: iM(this._showDataInfo, this, !0), onmouseout: iM(this._showDataInfo, this, !1), style: { fill: o.get("fillerColor"), textPosition: "inside" } })), i.add(new tM({ silent: !0, subPixelOptimize: !0, shape: { x: 0, y: 0, width: r[0], height: r[1] }, style: { stroke: o.get("dataBackgroundColor") || o.get("borderColor"), lineWidth: aM, fill: "rgba(0,0,0,0)" } })), rM([0, 1], function(t) { var r = ua(o.get("handleIcon"), { cursor: Vf(this._orient), draggable: !0, drift: iM(this._onDragMove, this, t), ondragend: iM(this._onDragEnd, this), onmouseover: iM(this._showDataInfo, this, !0), onmouseout: iM(this._showDataInfo, this, !1) }, { x: -1, y: 0, width: 2, height: 2 }), a = r.getBoundingRect(); this._handleHeight = ba(o.get("handleSize"), this._size[1]), this._handleWidth = a.width / a.height * this._handleHeight, r.setStyle(o.getModel( "handleStyle").getItemStyle()); var s = o.get("handleColor"); null != s && (r.style.fill = s), i.add(e[t] = r); var l = o.textStyleModel; this.group.add(n[t] = new Wm({ silent: !0, invisible: !0, style: { x: 0, y: 0, text: "", textVerticalAlign: "middle", textAlign: "center", textFill: l.getTextColor(), textFont: l.getFont() }, z2: 10 })) }, this) }, _resetInterval: function() { var t = this._range = this.dataZoomModel.getPercentRange(), e = this._getViewExtent(); this._handleEnds = [eM(t[0], [0, 100], e, !0), eM(t[1], [0, 100], e, !0)] }, _updateInterval: function(t, e) { var n = this.dataZoomModel, i = this._handleEnds, r = this._getViewExtent(), o = n.findRepresentativeAxisProxy().getMinMaxSpan(), a = [0, 100]; YS(e, i, r, n.get("zoomLock") ? "all" : t, null != o.minSpan ? eM(o.minSpan, a, r, !0) : null, null != o.maxSpan ? eM(o.maxSpan, a, r, !0) : null); var s = this._range, l = this._range = nM([eM(i[0], r, a, !0), eM(i[1], r, a, !0)]); return !s || s[0] !== l[0] || s[1] !== l[1] }, _updateView: function(t) { var e = this._displayables, n = this._handleEnds, i = nM(n.slice()), r = this._size; rM([0, 1], function(t) { var i = e.handles[t], o = this._handleHeight; i.attr({ scale: [o / 2, o / 2], position: [n[t], r[1] / 2 - o / 2] }) }, this), e.filler.setShape({ x: i[0], y: 0, width: i[1] - i[0], height: r[1] }), this._updateDataInfo(t) }, _updateDataInfo: function(t) { function e(t) { var e = ia(i.handles[t].parent, this.group), n = oa(0 === t ? "right" : "left", e), s = this._handleWidth / 2 + hM, l = ra([c[t] + (0 === t ? -s : s), this._size[1] / 2], e); r[t].setStyle({ x: l[0], y: l[1], textVerticalAlign: o === lM ? "middle" : n, textAlign: o === lM ? n : "center", text: a[t] }) } var n = this.dataZoomModel, i = this._displayables, r = i.handleLabels, o = this._orient, a = ["", ""]; if (n.get("showDetail")) { var s = n.findRepresentativeAxisProxy(); if (s) { var l = s.getAxisModel().axis, u = this._range, h = t ? s.calculateDataWindow({ start: u[0], end: u[1] }).valueWindow : s.getDataValueWindow(); a = [this._formatLabel(h[0], l), this._formatLabel(h[1], l)] } } var c = nM(this._handleEnds.slice()); e.call(this, 0), e.call(this, 1) }, _formatLabel: function(t, e) { var n = this.dataZoomModel, i = n.get("labelFormatter"), r = n.get("labelPrecision"); (null == r || "auto" === r) && (r = e.getPixelPrecision()); var o = null == t || isNaN(t) ? "" : "category" === e.type || "time" === e.type ? e.scale .getLabel(Math.round(t)) : t.toFixed(Math.min(r, 20)); return w(i) ? i(t, o) : b(i) ? i.replace("{value}", o) : o }, _showDataInfo: function(t) { t = this._dragging || t; var e = this._displayables.handleLabels; e[0].attr("invisible", !t), e[1].attr("invisible", !t) }, _onDragMove: function(t, e, n, i) { this._dragging = !0, Wp(i.event); var r = this._displayables.barGroup.getLocalTransform(), o = ra([e, n], r, !0), a = this._updateInterval(t, o[0]), s = this.dataZoomModel.get("realtime"); this._updateView(!s), a && s && this._dispatchZoomAction() }, _onDragEnd: function() { this._dragging = !1, this._showDataInfo(!1); var t = this.dataZoomModel.get("realtime"); !t && this._dispatchZoomAction() }, _onClickPanelClick: function(t) { var e = this._size, n = this._displayables.barGroup.transformCoordToLocal(t.offsetX, t.offsetY); if (!(n[0] < 0 || n[0] > e[0] || n[1] < 0 || n[1] > e[1])) { var i = this._handleEnds, r = (i[0] + i[1]) / 2, o = this._updateInterval("all", n[0] - r); this._updateView(), o && this._dispatchZoomAction() } }, _dispatchZoomAction: function() { var t = this._range; this.api.dispatchAction({ type: "dataZoom", from: this.uid, dataZoomId: this.dataZoomModel.id, start: t[0], end: t[1] }) }, _findCoordRect: function() { var t; if (rM(this.getTargetCoordInfo(), function(e) { if (!t && e.length) { var n = e[0].model.coordinateSystem; t = n.getRect && n.getRect() } }), !t) { var e = this.api.getWidth(), n = this.api.getHeight(); t = { x: .2 * e, y: .2 * n, width: .6 * e, height: .6 * n } } return t } }); wu({ getTargetSeries: function(t) { var e = N(); return t.eachComponent("dataZoom", function(t) { t.eachTargetAxis(function(t, n, i) { var r = i.getAxisProxy(t.name, n); f(r.getTargetSeriesModels(), function(t) { e.set(t.uid, t) }) }) }), e }, modifyOutputEnd: !0, overallReset: function(t, e) { t.eachComponent("dataZoom", function(t) { t.eachTargetAxis(function(t, n, i) { i.getAxisProxy(t.name, n).reset(i, e) }), t.eachTargetAxis(function(t, n, i) { i.getAxisProxy(t.name, n).filterData(i, e) }) }), t.eachComponent("dataZoom", function(t) { var e = t.findRepresentativeAxisProxy(), n = e.getDataPercentWindow(), i = e.getDataValueWindow(); t.setCalculatedRange({ start: n[0], end: n[1], startValue: i[0], endValue: i[1] }) }) } }), Su("dataZoom", function(t, e) { var n = kf(y(e.eachComponent, e, "dataZoom"), XS, function(t, e) { return t.get(e.axisIndex) }), i = []; e.eachComponent({ mainType: "dataZoom", query: t }, function(t) { i.push.apply(i, n(t).nodes) }), f(i, function(e) { e.setRawRange({ start: t.start, end: t.end, startValue: t.startValue, endValue: t.endValue }) }) }), QS.extend({ type: "dataZoom.inside", defaultOption: { disabled: !1, zoomLock: !1, zoomOnMouseWheel: !0, moveOnMouseMove: !0, moveOnMouseWheel: !1, preventDefaultMouseMove: !0 } }); var fM = "\x00_ec_interaction_mutex"; Su({ type: "takeGlobalCursor", event: "globalCursorTaken", update: "update" }, function() {}), c(Gf, zp); var pM = "\x00_ec_dataZoom_roams", gM = y, vM = JS.extend({ type: "dataZoom.inside", init: function() { this._range }, render: function(t, e, n) { vM.superApply(this, "render", arguments), this._range = t.getPercentRange(), f(this .getTargetCoordInfo(), function(e, i) { var r = p(e, function(t) { return tp(t.model) }); f(e, function(e) { var o = e.model, a = {}; f(["pan", "zoom", "scrollMove"], function(t) { a[t] = gM(mM[t], this, e, i) }, this), Qf(n, { coordId: tp(o), allCoordIds: r, containsPoint: function(t, e, n) { return o.coordinateSystem.containPoint([e, n]) }, dataZoomId: t.id, dataZoomModel: t, getRange: a }) }, this) }, this) }, dispose: function() { Jf(this.api, this.dataZoomModel.id), vM.superApply(this, "dispose", arguments), this ._range = null } }), mM = { zoom: function(t, e, n, i) { var r = this._range, o = r.slice(), a = t.axisModels[0]; if (a) { var s = yM[e](null, [i.originX, i.originY], a, n, t), l = (s.signal > 0 ? s.pixelStart + s.pixelLength - s.pixel : s.pixel - s.pixelStart) / s .pixelLength * (o[1] - o[0]) + o[0], u = Math.max(1 / i.scale, 0); o[0] = (o[0] - l) * u + l, o[1] = (o[1] - l) * u + l; var h = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); return YS(0, o, [0, 100], 0, h.minSpan, h.maxSpan), this._range = o, r[0] !== o[0] || r[ 1] !== o[1] ? o : void 0 } }, pan: ap(function(t, e, n, i, r, o) { var a = yM[i]([o.oldX, o.oldY], [o.newX, o.newY], e, r, n); return a.signal * (t[1] - t[0]) * a.pixel / a.pixelLength }), scrollMove: ap(function(t, e, n, i, r, o) { var a = yM[i]([0, 0], [o.scrollDelta, o.scrollDelta], e, r, n); return a.signal * (t[1] - t[0]) * o.scrollDelta }) }, yM = { grid: function(t, e, n, i, r) { var o = n.axis, a = {}, s = r.model.coordinateSystem.getRect(); return t = t || [0, 0], "x" === o.dim ? (a.pixel = e[0] - t[0], a.pixelLength = s.width, a .pixelStart = s.x, a.signal = o.inverse ? 1 : -1) : (a.pixel = e[1] - t[1], a .pixelLength = s.height, a.pixelStart = s.y, a.signal = o.inverse ? -1 : 1), a }, polar: function(t, e, n, i, r) { var o = n.axis, a = {}, s = r.model.coordinateSystem, l = s.getRadiusAxis().getExtent(), u = s.getAngleAxis().getExtent(); return t = t ? s.pointToCoord(t) : [0, 0], e = s.pointToCoord(e), "radiusAxis" === n.mainType ? (a.pixel = e[0] - t[0], a.pixelLength = l[1] - l[0], a.pixelStart = l[0], a.signal = o .inverse ? 1 : -1) : (a.pixel = e[1] - t[1], a.pixelLength = u[1] - u[0], a.pixelStart = u[0], a.signal = o.inverse ? -1 : 1), a }, singleAxis: function(t, e, n, i, r) { var o = n.axis, a = r.model.coordinateSystem.getRect(), s = {}; return t = t || [0, 0], "horizontal" === o.orient ? (s.pixel = e[0] - t[0], s.pixelLength = a .width, s.pixelStart = a.x, s.signal = o.inverse ? 1 : -1) : (s.pixel = e[1] - t[1], s .pixelLength = a.height, s.pixelStart = a.y, s.signal = o.inverse ? -1 : 1), s } }; t.version = T_, t.dependencies = A_, t.PRIORITY = W_, t.init = fu, t.connect = pu, t.disConnect = gu, t .disconnect = sw, t.dispose = vu, t.getInstanceByDom = mu, t.getInstanceById = yu, t.registerTheme = xu, t .registerPreprocessor = _u, t.registerProcessor = wu, t.registerPostUpdate = bu, t.registerAction = Su, t .registerCoordinateSystem = Mu, t.getCoordinateSystemDimensions = Iu, t.registerLayout = Cu, t .registerVisual = Tu, t.registerLoading = Du, t.extendComponentModel = ku, t.extendComponentView = Pu, t .extendSeriesModel = Ou, t.extendChartView = Lu, t.setCanvasCreator = zu, t.registerMap = Eu, t.getMap = Bu, t.dataTool = lw, t.zrender = Mv, t.number = Ey, t.format = Hy, t.throttle = gl, t.helper = ub, t.matrix = jp, t.vector = Op, t.color = fg, t.parseGeoJSON = cb, t.parseGeoJson = gb, t.util = vb, t.graphic = mb, t .List = _w, t.Model = pa, t.Axis = pb, t.env = dp });