/*
 * jscharting.js v3.0.2.20210127
 * (c) 2009-2021 Corporate Web Solutions Ltd.
 * All client side / JavaScript code may not be used in any way without a valid JSCharting license.
 * License holder usage is governed by the license.txt terms included with the distribution.
 * To license JSCharting for your own use, please visit jscharting.com
 */
"use strict";
(function (aa, K) {
    "object" === typeof exports && "undefined" !== typeof module ? K(exports) : "function" === typeof define && define.amd ? define(["exports"], K) : ((aa = aa || self), K((aa.JSC = {})));
})(this, function (aa) {
    function K(a, c) {
        function b() {
            this.constructor = a;
        }
        nj(a, c);
        a.prototype = null === c ? Object.create(c) : ((b.prototype = c.prototype), new b());
    }
    function Eb(a, c, b, d) {
        var e = arguments.length,
            f = 3 > e ? c : null === d ? (d = Object.getOwnPropertyDescriptor(c, b)) : d,
            g;
        if ("object" === typeof Reflect && "function" === typeof Reflect.decorate) f = Reflect.decorate(a, c, b, d);
        else for (var h = a.length - 1; 0 <= h; h--) if ((g = a[h])) f = (3 > e ? g(f) : 3 < e ? g(c, b, f) : g(c, b)) || f;
        return 3 < e && f && Object.defineProperty(c, b, f), f;
    }
    function ya(a) {
        var c = "function" === typeof Symbol && a[Symbol.iterator],
            b = 0;
        return c
            ? c.call(a)
            : {
                  next: function () {
                      a && b >= a.length && (a = void 0);
                      return { value: a && a[b++], done: !a };
                  },
              };
    }
    function G(a, c) {
        var b = "function" === typeof Symbol && a[Symbol.iterator];
        if (!b) return a;
        a = b.call(a);
        var d,
            e = [];
        try {
            for (; (void 0 === c || 0 < c--) && !(d = a.next()).done; ) e.push(d.value);
        } catch (g) {
            var f = { error: g };
        } finally {
            try {
                d && !d.done && (b = a["return"]) && b.call(a);
            } finally {
                if (f) throw f.error;
            }
        }
        return e;
    }
    function H() {
        for (var a = [], c = 0; c < arguments.length; c++) a = a.concat(G(arguments[c]));
        return a;
    }
    function t(a) {
        return void 0 !== a;
    }
    function J(a, c) {
        return ou.call(a, c);
    }
    function pb(a, c) {
        c = a && a.indexOf(c);
        -1 < c && a.splice(c, 1);
        return c;
    }
    function C(a, c) {
        if (c) {
            c = c.split(".");
            for (var b = 0; void 0 !== a && b < c.length; b++) a = a[c[b]];
        }
        return a;
    }
    function N(a, c) {
        if (c) for (var b = 0; void 0 !== a && b < c.length; b++) a = a[c[b]];
        return a;
    }
    function an(a) {
        return null === a;
    }
    function I(a) {
        var c = typeof a;
        if ("undefined" !== c) {
            if ("boolean" === c) return "boolean";
            if ("number" === c) return "number";
            if ("function" === c) return "function";
            if (a && a.pop) return "array";
            if ("string" === c) return "string";
            if (null === a) return "null";
            if ("object" === c) return a && a.getUTCMilliseconds ? "date" : "object";
        }
        return "undefined";
    }
    function ud(a) {
        return null == a ? (void 0 === a ? "[object Undefined]" : "[object Null]") : pu.call(a);
    }
    function bn(a, c) {
        return function (b) {
            return a(c(b));
        };
    }
    function Pc(a) {
        return null != a && "object" == typeof a;
    }
    function Ke(a) {
        return null == a ? "" : Mf(a);
    }
    function Wg(a) {
        if (!Pc(a) || "[object Object]" != ud(a)) return !1;
        a = oj(a);
        if (null === a) return !0;
        a = qb.call(a, "constructor") && a.constructor;
        return "function" == typeof a && a instanceof a && Xg.call(a) == qu;
    }
    function pj(a, c) {
        for (var b = -1, d = null == a ? 0 : a.length, e = 0, f = []; ++b < d; ) {
            var g = a[b];
            c(g, b, a) && (f[e++] = g);
        }
        return f;
    }
    function qj(a, c) {
        for (var b = -1, d = Array(a); ++b < a; ) d[b] = c(b);
        return d;
    }
    function cn(a) {
        return Pc(a) && "[object Arguments]" == ud(a);
    }
    function ru() {
        return !1;
    }
    function Yg(a, c) {
        c = null == c ? 9007199254740991 : c;
        return !!c && ("number" == typeof a || su.test(a)) && -1 < a && 0 == a % 1 && a < c;
    }
    function rj(a) {
        return "number" == typeof a && -1 < a && 0 == a % 1 && 9007199254740991 >= a;
    }
    function tu(a) {
        return Pc(a) && rj(a.length) && !!Ca[ud(a)];
    }
    function dn(a) {
        return function (c) {
            return a(c);
        };
    }
    function en(a, c) {
        var b = Za(a),
            d = !b && Le(a),
            e = !b && !d && Me(a),
            f = !b && !d && !e && Zg(a);
        d = (b = b || d || e || f) ? qj(a.length, String) : [];
        var g = d.length,
            h;
        for (h in a) (!c && !qb.call(a, h)) || (b && ("length" == h || (e && ("offset" == h || "parent" == h)) || (f && ("buffer" == h || "byteLength" == h || "byteOffset" == h)) || Yg(h, g))) || d.push(h);
        return d;
    }
    function $g(a) {
        var c = a && a.constructor;
        return a === (("function" == typeof c && c.prototype) || Nf);
    }
    function fn(a) {
        if (!$g(a)) return uu(a);
        var c = [],
            b;
        for (b in Object(a)) qb.call(a, b) && "constructor" != b && c.push(b);
        return c;
    }
    function xb(a) {
        var c = typeof a;
        return null != a && ("object" == c || "function" == c);
    }
    function Fb(a) {
        if (!xb(a)) return !1;
        a = ud(a);
        return "[object Function]" == a || "[object GeneratorFunction]" == a || "[object AsyncFunction]" == a || "[object Proxy]" == a;
    }
    function vd(a) {
        return null != a && rj(a.length) && !Fb(a);
    }
    function Ne(a) {
        return vd(a) ? en(a) : fn(a);
    }
    function vu(a, c) {
        var b = [];
        ah(a, function (a, e, f) {
            c(a, e, f) && b.push(a);
        });
        return b;
    }
    function Pd(a, c) {
        return a === c || (a !== a && c !== c);
    }
    function bh(a, c) {
        for (var b = a.length; b--; ) if (Pd(a[b][0], c)) return b;
        return -1;
    }
    function Qc(a) {
        var c = -1,
            b = null == a ? 0 : a.length;
        for (this.clear(); ++c < b; ) {
            var d = a[c];
            this.set(d[0], d[1]);
        }
    }
    function Qd(a) {
        if (null != a) {
            try {
                return Xg.call(a);
            } catch (c) {}
            return a + "";
        }
        return "";
    }
    function Rd(a, c) {
        a = null == a ? void 0 : a[c];
        return (c = !xb(a) || (gn && gn in a) ? !1 : (Fb(a) ? wu : xu).test(Qd(a))) ? a : void 0;
    }
    function Sd(a) {
        var c = -1,
            b = null == a ? 0 : a.length;
        for (this.clear(); ++c < b; ) {
            var d = a[c];
            this.set(d[0], d[1]);
        }
    }
    function ch(a, c) {
        a = a.__data__;
        var b = typeof c;
        return ("string" == b || "number" == b || "symbol" == b || "boolean" == b ? "__proto__" !== c : null === c) ? a["string" == typeof c ? "string" : "hash"] : a.map;
    }
    function Rc(a) {
        var c = -1,
            b = null == a ? 0 : a.length;
        for (this.clear(); ++c < b; ) {
            var d = a[c];
            this.set(d[0], d[1]);
        }
    }
    function kc(a) {
        this.size = (this.__data__ = new Qc(a)).size;
    }
    function Td(a) {
        var c = -1,
            b = null == a ? 0 : a.length;
        for (this.__data__ = new Rc(); ++c < b; ) this.add(a[c]);
    }
    function yu(a, c) {
        for (var b = -1, d = null == a ? 0 : a.length; ++b < d; ) if (c(a[b], b, a)) return !0;
        return !1;
    }
    function hn(a, c) {
        return a.has(c);
    }
    function jn(a, c, b, d, e, f) {
        var g = b & 1,
            h = a.length,
            k = c.length;
        if (h != k && !(g && k > h)) return !1;
        if ((k = f.get(a)) && f.get(c)) return k == c;
        k = -1;
        var l = !0,
            m = b & 2 ? new Td() : void 0;
        f.set(a, c);
        for (f.set(c, a); ++k < h; ) {
            var n = a[k],
                p = c[k];
            if (d) var q = g ? d(p, n, k, c, a, f) : d(n, p, k, a, c, f);
            if (void 0 !== q) {
                if (q) continue;
                l = !1;
                break;
            }
            if (m) {
                if (
                    !yu(c, function (c, a) {
                        if (!m.has(a) && (n === c || e(n, c, b, d, f))) return m.push(a);
                    })
                ) {
                    l = !1;
                    break;
                }
            } else if (n !== p && !e(n, p, b, d, f)) {
                l = !1;
                break;
            }
        }
        f["delete"](a);
        f["delete"](c);
        return l;
    }
    function sj(a) {
        var c = -1,
            b = Array(a.size);
        a.forEach(function (a, e) {
            b[++c] = [e, a];
        });
        return b;
    }
    function Of(a) {
        var c = -1,
            b = Array(a.size);
        a.forEach(function (a) {
            b[++c] = a;
        });
        return b;
    }
    function zu(a, c, b, d, e, f, g) {
        switch (b) {
            case "[object DataView]":
                if (a.byteLength != c.byteLength || a.byteOffset != c.byteOffset) break;
                a = a.buffer;
                c = c.buffer;
            case "[object ArrayBuffer]":
                if (a.byteLength != c.byteLength || !f(new dh(a), new dh(c))) break;
                return !0;
            case "[object Boolean]":
            case "[object Date]":
            case "[object Number]":
                return Pd(+a, +c);
            case "[object Error]":
                return a.name == c.name && a.message == c.message;
            case "[object RegExp]":
            case "[object String]":
                return a == c + "";
            case "[object Map]":
                var h = sj;
            case "[object Set]":
                h || (h = Of);
                if (a.size != c.size && !(d & 1)) break;
                if ((b = g.get(a))) return b == c;
                d |= 2;
                g.set(a, c);
                c = jn(h(a), h(c), d, e, f, g);
                g["delete"](a);
                return c;
            case "[object Symbol]":
                if (Pf) return Pf.call(a) == Pf.call(c);
        }
        return !1;
    }
    function tj(a, c) {
        for (var b = -1, d = c.length, e = a.length; ++b < d; ) a[e + b] = c[b];
        return a;
    }
    function kn(a, c, b) {
        c = c(a);
        return Za(a) ? c : tj(c, b(a));
    }
    function ln() {
        return [];
    }
    function uj(a) {
        return kn(a, Ne, vj);
    }
    function vc(a, c, b, d, e) {
        if (a === c) return !0;
        if (null == a || null == c || (!Pc(a) && !Pc(c))) return a !== a && c !== c;
        a: {
            var f = Za(a),
                g = Za(c),
                h = f ? "[object Array]" : wc(a),
                k = g ? "[object Array]" : wc(c);
            h = "[object Arguments]" == h ? "[object Object]" : h;
            k = "[object Arguments]" == k ? "[object Object]" : k;
            var l = "[object Object]" == h;
            g = "[object Object]" == k;
            if ((k = h == k) && Me(a)) {
                if (!Me(c)) {
                    c = !1;
                    break a;
                }
                f = !0;
                l = !1;
            }
            if (k && !l) e || (e = new kc()), (c = f || Zg(a) ? jn(a, c, b, d, vc, e) : zu(a, c, h, b, d, vc, e));
            else if (b & 1 || ((f = l && qb.call(a, "__wrapped__")), (h = g && qb.call(c, "__wrapped__")), !f && !h))
                if (k)
                    b: if ((e || (e = new kc()), (f = b & 1), (h = uj(a)), (g = h.length), (k = uj(c).length), g == k || f)) {
                        for (l = g; l--; ) {
                            var m = h[l];
                            if (!(f ? m in c : qb.call(c, m))) {
                                c = !1;
                                break b;
                            }
                        }
                        if ((k = e.get(a)) && e.get(c)) c = k == c;
                        else {
                            k = !0;
                            e.set(a, c);
                            e.set(c, a);
                            for (var n = f; ++l < g; ) {
                                m = h[l];
                                var p = a[m],
                                    q = c[m];
                                if (d) var r = f ? d(q, p, m, c, a, e) : d(p, q, m, a, c, e);
                                if (void 0 === r ? p !== q && !vc(p, q, b, d, e) : !r) {
                                    k = !1;
                                    break;
                                }
                                n || (n = "constructor" == m);
                            }
                            k && !n && ((b = a.constructor), (d = c.constructor), b != d && "constructor" in a && "constructor" in c && !("function" == typeof b && b instanceof b && "function" == typeof d && d instanceof d) && (k = !1));
                            e["delete"](a);
                            e["delete"](c);
                            c = k;
                        }
                    } else c = !1;
                else c = !1;
            else (a = f ? a.value() : a), (c = h ? c.value() : c), e || (e = new kc()), (c = vc(a, c, b, d, e));
        }
        return c;
    }
    function Au(a, c, b, d) {
        var e = b.length,
            f = e,
            g = !d;
        if (null == a) return !f;
        for (a = Object(a); e--; ) {
            var h = b[e];
            if (g && h[2] ? h[1] !== a[h[0]] : !(h[0] in a)) return !1;
        }
        for (; ++e < f; ) {
            h = b[e];
            var k = h[0],
                l = a[k],
                m = h[1];
            if (g && h[2]) {
                if (void 0 === l && !(k in a)) return !1;
            } else {
                h = new kc();
                if (d) var n = d(l, m, k, a, c, h);
                if (void 0 === n ? !vc(m, l, 3, d, h) : !n) return !1;
            }
        }
        return !0;
    }
    function Bu(a) {
        for (var c = Ne(a), b = c.length; b--; ) {
            var d = c[b],
                e = a[d];
            c[b] = [d, e, e === e && !xb(e)];
        }
        return c;
    }
    function mn(a, c) {
        return function (b) {
            return null == b ? !1 : b[a] === c && (void 0 !== c || a in Object(b));
        };
    }
    function Cu(a) {
        var c = Bu(a);
        return 1 == c.length && c[0][2]
            ? mn(c[0][0], c[0][1])
            : function (b) {
                  return b === a || Au(b, a, c);
              };
    }
    function Ud(a) {
        return "symbol" == typeof a || (Pc(a) && "[object Symbol]" == ud(a));
    }
    function wj(a, c) {
        if (Za(a)) return !1;
        var b = typeof a;
        return "number" == b || "symbol" == b || "boolean" == b || null == a || Ud(a) ? !0 : Du.test(a) || !Eu.test(a) || (null != c && a in Object(c));
    }
    function Vd(a, c) {
        for (var b = -1, d = null == a ? 0 : a.length, e = Array(d); ++b < d; ) e[b] = c(a[b], b, a);
        return e;
    }
    function Mf(a) {
        if ("string" == typeof a) return a;
        if (Za(a)) return Vd(a, Mf) + "";
        if (Ud(a)) return nn ? nn.call(a) : "";
        var c = a + "";
        return "0" == c && 1 / a == -Qf ? "-0" : c;
    }
    function eh(a, c) {
        return Za(a) ? a : wj(a, c) ? [a] : Fu(Ke(a));
    }
    function Rf(a) {
        if ("string" == typeof a || Ud(a)) return a;
        var c = a + "";
        return "0" == c && 1 / a == -Qf ? "-0" : c;
    }
    function xj(a, c) {
        c = eh(c, a);
        for (var b = 0, d = c.length; null != a && b < d; ) a = a[Rf(c[b++])];
        return b && b == d ? a : void 0;
    }
    function Gu(a, c) {
        return wj(a) && c === c && !xb(c)
            ? mn(Rf(a), c)
            : function (b) {
                  var d = null == b ? void 0 : xj(b, a);
                  d = void 0 === d ? void 0 : d;
                  if (void 0 === d && d === c) {
                      if ((d = null != b)) {
                          d = a;
                          d = eh(d, b);
                          for (var e = -1, f = d.length, g = !1; ++e < f; ) {
                              var h = Rf(d[e]);
                              if (!(g = null != b && null != b && h in Object(b))) break;
                              b = b[h];
                          }
                          g || ++e != f ? (d = g) : ((f = null == b ? 0 : b.length), (d = !!f && rj(f) && Yg(h, f) && (Za(b) || Le(b))));
                      }
                      h = d;
                  } else h = vc(c, d, 3);
                  return h;
              };
    }
    function Wd(a) {
        return a;
    }
    function on(a) {
        return function (c) {
            return null == c ? void 0 : c[a];
        };
    }
    function Hu(a) {
        return function (c) {
            return xj(c, a);
        };
    }
    function Xd(a, c) {
        return "function" == typeof a ? a : null == a ? Wd : "object" == typeof a ? (Za(a) ? Gu(a[0], a[1]) : Cu(a)) : wj(a) ? on(Rf(a)) : Hu(a);
    }
    function pn(a, c, b, d) {
        var e = a.length;
        for (b += d ? 1 : -1; d ? b-- : ++b < e; ) if (c(a[b], b, a)) return b;
        return -1;
    }
    function fh(a) {
        if ("number" == typeof a) return a;
        if (Ud(a)) return yj;
        xb(a) && ((a = "function" == typeof a.valueOf ? a.valueOf() : a), (a = xb(a) ? a + "" : a));
        if ("string" != typeof a) return 0 === a ? a : +a;
        a = a.replace(qn, "");
        var c = Iu.test(a);
        return c || Ju.test(a) ? Ku(a.slice(2), c ? 2 : 8) : Lu.test(a) ? yj : +a;
    }
    function Oe(a) {
        a ? ((a = fh(a)), (a = a === Qf || a === -Qf ? 1.7976931348623157e308 * (0 > a ? -1 : 1) : a === a ? a : 0)) : (a = 0 === a ? a : 0);
        var c = a % 1;
        return a === a ? (c ? a - c : a) : 0;
    }
    function Sf(a, c, b) {
        var d = null == a ? 0 : a.length;
        if (!d) return -1;
        b = null == b ? 0 : Oe(b);
        0 > b && (b = gh(d + b, 0));
        return pn(a, Xd(c), b);
    }
    function zj(a, c, b) {
        switch (b.length) {
            case 0:
                return a.call(c);
            case 1:
                return a.call(c, b[0]);
            case 2:
                return a.call(c, b[0], b[1]);
            case 3:
                return a.call(c, b[0], b[1], b[2]);
        }
        return a.apply(c, b);
    }
    function Aj(a, c, b) {
        "__proto__" == c && hh ? hh(a, c, { configurable: !0, enumerable: !0, value: b, writable: !0 }) : (a[c] = b);
    }
    function rn(a, c, b) {
        var d = a[c];
        (qb.call(a, c) && Pd(d, b) && (void 0 !== b || c in a)) || Aj(a, c, b);
    }
    function Yd(a, c, b, d) {
        var e = !b;
        b || (b = {});
        for (var f = -1, g = c.length; ++f < g; ) {
            var h = c[f],
                k = d ? d(b[h], a[h], h, b, a) : void 0;
            void 0 === k && (k = a[h]);
            e ? Aj(b, h, k) : rn(b, h, k);
        }
        return b;
    }
    function sn(a, c, b) {
        c = gh(void 0 === c ? a.length - 1 : c, 0);
        return function () {
            for (var d = arguments, e = -1, f = gh(d.length - c, 0), g = Array(f); ++e < f; ) g[e] = d[c + e];
            e = -1;
            for (f = Array(c + 1); ++e < c; ) f[e] = d[e];
            f[c] = b(g);
            return zj(a, this, f);
        };
    }
    function Mu(a) {
        return function () {
            return a;
        };
    }
    function Zd(a, c) {
        return tn(sn(a, c, Wd), a + "");
    }
    function ih(a, c, b) {
        if (!xb(b)) return !1;
        var d = typeof c;
        return ("number" == d ? vd(b) && Yg(c, b.length) : "string" == d && c in b) ? Pd(b[c], a) : !1;
    }
    function Bj(a) {
        return Zd(function (c, b) {
            var d = -1,
                e = b.length,
                f = 1 < e ? b[e - 1] : void 0,
                g = 2 < e ? b[2] : void 0;
            f = 3 < a.length && "function" == typeof f ? (e--, f) : void 0;
            g && ih(b[0], b[1], g) && ((f = 3 > e ? void 0 : f), (e = 1));
            for (c = Object(c); ++d < e; ) (g = b[d]) && a(c, g, d, f);
            return c;
        });
    }
    function $d(a) {
        if (vd(a)) a = en(a, !0);
        else if (xb(a)) {
            var c = $g(a),
                b = [];
            for (d in a) ("constructor" != d || (!c && qb.call(a, d))) && b.push(d);
            a = b;
        } else {
            var d = [];
            if (null != a) for (c in Object(a)) d.push(c);
            a = d;
        }
        return a;
    }
    function Nu(a, c, b, d) {
        return void 0 === a || (Pd(a, Nf[b]) && !qb.call(d, b)) ? c : a;
    }
    function un(a, c, b) {
        ((void 0 === b || Pd(a[c], b)) && (void 0 !== b || c in a)) || Aj(a, c, b);
    }
    function vn(a, c) {
        if (c) return a.slice();
        c = a.length;
        c = wn ? wn(c) : new a.constructor(c);
        a.copy(c);
        return c;
    }
    function Cj(a) {
        var c = new a.constructor(a.byteLength);
        new dh(c).set(new dh(a));
        return c;
    }
    function xn(a, c) {
        c = c ? Cj(a.buffer) : a.buffer;
        return new a.constructor(c, a.byteOffset, a.length);
    }
    function yn(a, c) {
        var b = -1,
            d = a.length;
        for (c || (c = Array(d)); ++b < d; ) c[b] = a[b];
        return c;
    }
    function zn(a) {
        return "function" != typeof a.constructor || $g(a) ? {} : Ou(oj(a));
    }
    function Tf(a) {
        return Pc(a) && vd(a);
    }
    function jh(a, c, b, d, e) {
        a !== c &&
            Dj(
                c,
                function (f, g) {
                    if (xb(f)) {
                        e || (e = new kc());
                        f = e;
                        var h = a[g],
                            k = c[g],
                            l = f.get(k);
                        if (!l) {
                            l = d ? d(h, k, g + "", a, c, f) : void 0;
                            var m = void 0 === l;
                            if (m) {
                                var n = Za(k),
                                    p = !n && Me(k),
                                    q = !n && !p && Zg(k);
                                l = k;
                                if (n || p || q) Za(h) ? (l = h) : Tf(h) ? (l = yn(h)) : p ? ((m = !1), (l = vn(k, !0))) : q ? ((m = !1), (l = xn(k, !0))) : (l = []);
                                else if (Wg(k) || Le(k))
                                    if (((l = h), Le(h))) l = Yd(h, $d(h));
                                    else {
                                        if (!xb(h) || (b && Fb(h))) l = zn(k);
                                    }
                                else m = !1;
                            }
                            m && (f.set(k, l), jh(l, k, b, d, f), f["delete"](k));
                        }
                        un(a, g, l);
                    } else (h = d ? d(a[g], f, g + "", a, c, e) : void 0), void 0 === h && (h = f), un(a, g, h);
                },
                $d
            );
    }
    function An(a, c, b, d, e, f) {
        xb(a) && xb(c) && (f.set(c, a), jh(a, c, void 0, An, f), f["delete"](c));
        return a;
    }
    function Bn(a, c) {
        for (var b = -1, d = null == a ? 0 : a.length; ++b < d && !1 !== c(a[b], b, a); );
        return a;
    }
    function Pu(a, c) {
        return a && Yd(c, Ne(c), a);
    }
    function Qu(a, c) {
        return a && Yd(c, $d(c), a);
    }
    function Ru(a, c) {
        return Yd(a, vj(a), c);
    }
    function Su(a, c) {
        return Yd(a, Cn(a), c);
    }
    function Dn(a) {
        return kn(a, $d, Cn);
    }
    function Tu(a) {
        var c = a.length,
            b = a.constructor(c);
        c && "string" == typeof a[0] && qb.call(a, "index") && ((b.index = a.index), (b.input = a.input));
        return b;
    }
    function Uu(a, c) {
        a.set(c[0], c[1]);
        return a;
    }
    function Ej(a, c, b, d) {
        var e = -1,
            f = null == a ? 0 : a.length;
        for (d && f && (b = a[++e]); ++e < f; ) b = c(b, a[e], e, a);
        return b;
    }
    function Vu(a, c) {
        a.add(c);
        return a;
    }
    function Wu(a, c, b, d) {
        var e = a.constructor;
        switch (c) {
            case "[object ArrayBuffer]":
                return Cj(a);
            case "[object Boolean]":
            case "[object Date]":
                return new e(+a);
            case "[object DataView]":
                return (c = d ? Cj(a.buffer) : a.buffer), new a.constructor(c, a.byteOffset, a.byteLength);
            case "[object Float32Array]":
            case "[object Float64Array]":
            case "[object Int8Array]":
            case "[object Int16Array]":
            case "[object Int32Array]":
            case "[object Uint8Array]":
            case "[object Uint8ClampedArray]":
            case "[object Uint16Array]":
            case "[object Uint32Array]":
                return xn(a, d);
            case "[object Map]":
                return (c = d ? b(sj(a), 1) : sj(a)), Ej(c, Uu, new a.constructor());
            case "[object Number]":
            case "[object String]":
                return new e(a);
            case "[object RegExp]":
                return (c = new a.constructor(a.source, Xu.exec(a))), (c.lastIndex = a.lastIndex), c;
            case "[object Set]":
                return (c = d ? b(Of(a), 1) : Of(a)), Ej(c, Vu, new a.constructor());
            case "[object Symbol]":
                return Pf ? Object(Pf.call(a)) : {};
        }
    }
    function Uf(a, c, b, d, e, f) {
        var g,
            h = c & 1,
            k = c & 2,
            l = c & 4;
        b && (g = e ? b(a, d, e, f) : b(a));
        if (void 0 !== g) return g;
        if (!xb(a)) return a;
        if ((d = Za(a))) {
            if (((g = Tu(a)), !h)) return yn(a, g);
        } else {
            var m = wc(a),
                n = "[object Function]" == m || "[object GeneratorFunction]" == m;
            if (Me(a)) return vn(a, h);
            if ("[object Object]" == m || "[object Arguments]" == m || (n && !e)) {
                if (((g = k || n ? {} : zn(a)), !h)) return k ? Su(a, Qu(g, a)) : Ru(a, Pu(g, a));
            } else {
                if (!za[m]) return e ? a : {};
                g = Wu(a, m, Uf, h);
            }
        }
        f || (f = new kc());
        if ((e = f.get(a))) return e;
        f.set(a, g);
        k = l ? (k ? Dn : uj) : k ? $d : Ne;
        var p = d ? void 0 : k(a);
        Bn(p || a, function (d, e) {
            p && ((e = d), (d = a[e]));
            rn(g, e, Uf(d, c, b, e, a, f));
        });
        return g;
    }
    function Fj(a) {
        return "function" == typeof a ? a : Wd;
    }
    function En(a, c) {
        var b = -1,
            d = vd(a) ? Array(a.length) : [];
        ah(a, function (a, f, g) {
            d[++b] = c(a, f, g);
        });
        return d;
    }
    function Yu(a, c, b, d, e) {
        e(a, function (a, e, h) {
            b = d ? ((d = !1), a) : c(b, a, e, h);
        });
        return b;
    }
    function Zu(a) {
        return a !== a;
    }
    function Gj(a, c, b) {
        if (c === c)
            a: {
                --b;
                for (var d = a.length; ++b < d; )
                    if (a[b] === c) {
                        a = b;
                        break a;
                    }
                a = -1;
            }
        else a = pn(a, Zu, b);
        return a;
    }
    function kh(a, c) {
        return !(null == a || !a.length) && -1 < Gj(a, c, 0);
    }
    function $u() {}
    function av(a) {
        return Za(a) || Le(a) || !!(Fn && a && a[Fn]);
    }
    function lh(a, c, b, d, e) {
        var f = -1,
            g = a.length;
        b || (b = av);
        for (e || (e = []); ++f < g; ) {
            var h = a[f];
            0 < c && b(h) ? (1 < c ? lh(h, c - 1, b, d, e) : tj(e, h)) : d || (e[e.length] = h);
        }
        return e;
    }
    function bv(a, c) {
        var b = a.length;
        for (a.sort(c); b--; ) a[b] = a[b].value;
        return a;
    }
    function cv(a, c, b) {
        var d = -1;
        c = Vd(c.length ? c : [Wd], dn(Xd));
        a = En(a, function (b, a, g) {
            return {
                criteria: Vd(c, function (a) {
                    return a(b);
                }),
                index: ++d,
                value: b,
            };
        });
        return bv(a, function (a, c) {
            a: {
                for (var d = -1, e = a.criteria, f = c.criteria, l = e.length, m = b.length; ++d < l; ) {
                    b: {
                        var n = e[d],
                            p = f[d];
                        if (n !== p) {
                            var q = void 0 !== n,
                                r = null === n,
                                u = n === n,
                                x = Ud(n),
                                v = void 0 !== p,
                                y = null === p,
                                D = p === p,
                                E = Ud(p);
                            if ((!y && !E && !x && n > p) || (x && v && D && !y && !E) || (r && v && D) || (!q && D) || !u) {
                                n = 1;
                                break b;
                            }
                            if ((!r && !x && !E && n < p) || (E && q && u && !r && !x) || (y && q && u) || (!v && u) || !D) {
                                n = -1;
                                break b;
                            }
                        }
                        n = 0;
                    }
                    if (n) {
                        if (d >= m) {
                            a = n;
                            break a;
                        }
                        a = n * ("desc" == b[d] ? -1 : 1);
                        break a;
                    }
                }
                a = a.index - c.index;
            }
            return a;
        });
    }
    function Hj(a, c, b) {
        var d = -1,
            e = a.length;
        0 > c && (c = -c > e ? 0 : e + c);
        b = b > e ? e : b;
        0 > b && (b += e);
        e = c > b ? 0 : (b - c) >>> 0;
        c >>>= 0;
        for (b = Array(e); ++d < e; ) b[d] = a[d + c];
        return b;
    }
    function Gn(a, c) {
        c = eh(c, a);
        a = 2 > c.length ? a : xj(a, Hj(c, 0, -1));
        var b;
        (b = null == a) || ((b = null == c ? 0 : c.length), (b = delete a[Rf(b ? c[b - 1] : void 0)]));
        return b;
    }
    function dv(a) {
        return Tf(a) ? a : [];
    }
    function ev(a) {
        return Wg(a) ? void 0 : a;
    }
    function fv(a) {
        return (null == a ? 0 : a.length) ? lh(a, 1) : [];
    }
    function Ij(a, c, b) {
        a === a && (void 0 !== b && (a = a <= b ? a : b), void 0 !== c && (a = a >= c ? a : c));
        return a;
    }
    function Hn(a, c) {
        for (var b, d = -1, e = a.length; ++d < e; ) {
            var f = c(a[d]);
            void 0 !== f && (b = void 0 === b ? f : b + f);
        }
        return b;
    }
    function In(a, c) {
        for (var b = {}, d = 0; d < a.length; d++) {
            var e = a[d],
                f = c(e, d);
            t(f) && (b[f] = e);
        }
        return b;
    }
    function Ub(a, c, b, d, e, f, g) {
        if (b && (a.length || c.length)) {
            var h = function (a) {
                    (a = b(a)) && c.push(a);
                },
                k = function (b) {
                    pb(c, b);
                    e && e(b);
                    b.destroy && b.destroy();
                };
            if (!c.length) return w(a, h), c;
            a = In(a, f || Jn);
            g = In(c, g || Jn);
            for (var l in a) J(g, l) ? d && d(a[l], g[l]) : h(a[l]);
            for (l in g) !J(a, l) && k(g[l]);
            return c;
        }
    }
    function gv(a) {
        return "number" === typeof a && isNaN(a);
    }
    function xc(a, c, b) {}
    function Gb(a, c, b) {
        return a;
    }
    function ae(a, c) {
        return a.indexOf ? -1 < a.indexOf(c) : J(a, c);
    }
    function mh(a, c) {
        var b;
        if (a) {
            if (J(a, c)) return c;
            a = pa(a);
            c = c.toLowerCase();
            try {
                for (var d = ya(a), e = d.next(); !e.done; e = d.next()) {
                    var f = e.value;
                    if (f.toLowerCase() === c) return f;
                }
            } catch (h) {
                var g = { error: h };
            } finally {
                try {
                    e && !e.done && (b = d.return) && b.call(d);
                } finally {
                    if (g) throw g.error;
                }
            }
        }
    }
    function Da(a, c) {
        for (var b in a) c(b);
    }
    function L(a, c) {
        for (var b in c) a[b] = c[b];
        return a;
    }
    function W(a, c) {
        return L(L({}, a), c);
    }
    function Oa(a, c) {
        return Na({}, a, c);
    }
    function Na(a, c, b) {
        if (!b) return L(a, c);
        for (var d in c) wd.call(b, d) && (a[d] = c[d]);
        return a;
    }
    function Sc(a, c, b) {
        if (!b) return L(a, c);
        for (var d in c) wd.call(b, d) || (a[d] = c[d]);
        return a;
    }
    function be(a, c, b) {
        return Sc(L({}, a), c, b);
    }
    function Pe(a, c, b) {
        return Na(L({}, a), c, b);
    }
    function Hb(a, c) {
        var b = {},
            d;
        for (d in a) wd.call(c, d) || (b[d] = a[d]);
        return b;
    }
    function fa(a) {
        for (var c = {}, b = 0; b < a.length; b++) c[a[b]] = void 0;
        return c;
    }
    function Tc(a) {
        return a.length ? (1 === a.length ? a[0] : hv.apply([], a)) : [];
    }
    function Jj(a) {
        return fa(a.split(","));
    }
    function Kj(a, c) {
        return B(a, function (b, a) {
            return b + c[a];
        });
    }
    function P(a) {
        return a[a.length - 1];
    }
    function Lj(a, c, b, d, e) {
        var f = null,
            g;
        for (g in c) {
            var h = null;
            if (!wd.call(a, g) || (b && wd.call(b, g) ? (h = !vc(a[g], c[g])) : a[g] !== c[g])) (f = f || {}), (f[g] = h ? qa(c[g]) : c[g]), d || (a[g] = f[g]);
        }
        if (e) for (g in a) wd.call(c, g) || ((f = f || {}), (f[g] = null), d || delete a[g]);
        return f;
    }
    function z(a, c, b, d, e) {
        a = arguments;
        var f,
            g = a.length;
        for (f = 0; f < g; f++) {
            var h = a[f];
            if (t(h) && null !== h) return h;
        }
    }
    function O(a) {
        return "string" === typeof a;
    }
    function Pa(a) {
        return a && "object" === typeof a;
    }
    function Q(a) {
        return void 0 === a;
    }
    function lc(a) {
        return null === a || Q(a);
    }
    function pa(a) {
        return Object.keys(a);
    }
    function Kn(a, c) {
        void 0 === c && (c = ".");
        var b = function (a, e, f) {
            void 0 === f && (f = []);
            if ("object" !== typeof a) return e && f.push(e), f;
            for (var d = Object.keys(a), h = 0, k = d.length; h < k; h++) {
                var l = d[h];
                b(a[l], (e ? e + c : "") + l, f);
            }
            return f;
        };
        return b(a);
    }
    function yc(a, c) {
        return S(a, function (b) {
            return t(c[b]);
        })
            ? !0
            : !1;
    }
    function Ln(a, c) {
        for (var b in a) if (wd.call(c, b)) return !0;
        return !1;
    }
    function Mj(a, c) {
        var b = {},
            d;
        w(c, function (c) {
            if ((d = C(a, c))) b[c] = d;
        });
        return b;
    }
    function Z(a, c, b) {
        if (a && c && "undefined" !== typeof b) {
            c = c.split(".");
            var d = c.length - 1,
                e;
            for (e = 0; e < d; e++) {
                var f = c[e];
                a = void 0 === a[f] ? (a[f] = {}) : a[f];
            }
            return (a[c[d]] = b);
        }
    }
    function Vf(a, c, b) {
        if (a && c && "undefined" !== typeof b) {
            var d = c.length - 1,
                e;
            for (e = 0; e < d; e++) {
                var f = c[e];
                a = void 0 === a[f] ? (a[f] = {}) : a[f];
            }
            return (a[c[d]] = b);
        }
    }
    function zc(a, c, b, d, e, f) {
        c = C(c, d);
        if (t(c)) return (c = e ? e(c) : c), "function" === typeof b ? b(a, c) : Z(a, b, c), !0;
    }
    function Mn(a, c, b, d) {
        c = N(c, d);
        if (t(c)) return Vf(a, b, c), !0;
    }
    function nh(a, c, b) {
        for (var d = 0, e = a.length; d < e; d++) if (a[d][c] === b) return a[d];
    }
    function Qe(a, c) {
        if (!a || c.length !== a.length) return !1;
        for (var b = 0, d = c.length; b < d; b++)
            if (c[b] instanceof Array && a[b] instanceof Array) {
                if (!c[b].equals(a[b])) return !1;
            } else if (c[b] != a[b]) return !1;
        return !0;
    }
    function Nn(a) {
        var c = a.name;
        c || (c = (a = a.toString().match(iv)) && a[1]);
        return c;
    }
    function Nj(a) {
        return window.eval(a);
    }
    function On(a) {
        if (!a) return a;
        for (var c = [], b = 0; b < a.length; b++) {
            var d = a[b],
                e = d.toLowerCase(),
                f = " " === d;
            0 < b && (f || d !== e) && c.push("-");
            !f && c.push(e);
        }
        return c.join("");
    }
    function Re(a, c, b) {
        a = oh(a);
        return a.split(c, b);
    }
    function Ib(a, c) {
        return w(Re(a, ","), c);
    }
    function Ac(a) {
        if (!a) return [0, 0, 0, 0];
        if (4 === a.length && a.push) return a;
        switch (I(a)) {
            case "number":
                return [a, a, a, a];
            case "object":
                return [a.top || 0, a.right || 0, a.bottom || 0, a.left || 0];
            case "array":
                return jv(a);
            case "string":
                return Ac(Oj(a));
        }
        return a;
    }
    function jv(a) {
        switch (a.length) {
            case 1:
                var c = a[0] || 0;
                return [c, c, c, c];
            case 2:
                return (c = a[0]), (a = a[1]), [c, a, c, a];
            case 3:
                return (c = a[1]), [a[0], c, a[2], c];
        }
        return a;
    }
    function Oj(a) {
        return B(a.match(kv), function (a) {
            return Number(a);
        });
    }
    function Pn(a, c) {
        for (var b = [], d = 0; d < a; d++) b.push(c(d));
        return b;
    }
    function Sa(a, c, b) {
        var d;
        (d = c) && O(d) && (d = d.split(","));
        var e = d
            ? function (b) {
                  if (-1 < d.indexOf(b)) return !0;
              }
            : function (b) {
                  return !1;
              };
        Qn(a, function (a, c, h) {
            if (!e(c)) {
                var f = -1 < c.indexOf("_") ? c.replace(lv, "$1.") : c,
                    g = I(a);
                if (-1 < f.indexOf(".")) {
                    var m = C(h, f);
                    Q(m) ? Z(h, f, a) : "object" === g && Pa(m) && (a = A(m, a));
                    delete h[c];
                }
                "object" === g
                    ? Sa(a, b && d)
                    : "array" === g &&
                      w(a, function (a) {
                          return Sa(a, b && d);
                      });
            }
        });
        return a;
    }
    function ce(a) {
        return 0 < a ? 1 : 0 > a ? -1 : 0;
    }
    function na(a, c) {
        void 0 === c && (c = 0);
        return Math.round(a * Math.pow(10, c)) / Math.pow(10, c);
    }
    function ph(a) {
        a = a.slice();
        var c = ea;
        return a
            .sort(function (b, d) {
                return (
                    c(a, function (a) {
                        return a === b;
                    }).length -
                    c(a, function (b) {
                        return b === d;
                    }).length
                );
            })
            .pop();
    }
    function qh(a) {
        a = a.slice();
        a.sort(function (b, a) {
            return b - a;
        });
        var c = Vb.floor(a.length / 2);
        return a.length % 2 ? a[c] : (a[c - 1] + a[c]) / 2;
    }
    function mv(a, c) {
        var b,
            d = c.length;
        if (0 === d) return 0;
        a.pop && (a = Ta(a) / a.length);
        c = c.slice();
        c.sort(function (b, a) {
            return b - a;
        });
        for (b = 0; b < d && !(c[b] > a); b++);
        return (b / d) * 100;
    }
    function Wf(a) {
        return a.length && Ta(a) / a.length;
    }
    function Pj(a, c) {
        return Math.round(a * Math.pow(10, c)) / Math.pow(10, c);
    }
    function Y(a, c, b, d, e) {
        return Qj(b, d) ? a : a + ((e - b) / (d - b)) * (c - a);
    }
    function Rj(a) {
        if (null === a) return "00";
        a = parseInt(a);
        if (0 === a || Ha(a)) return "00";
        a = Math.round(a);
        return "0123456789ABCDEF".charAt((a - (a % 16)) / 16) + "0123456789ABCDEF".charAt(a % 16);
    }
    function Rn(a) {
        var c = function (b) {
            return !Ha(b) && t(b) && null !== b;
        };
        if (a.pop) {
            for (var b = 0, d = a.length; b < d; b++) if (!c(a[b])) return !1;
            return !0;
        }
        return c(a);
    }
    function Sj(a, c) {
        return a < c ? -1 : a > c ? 1 : 0;
    }
    function la(a, c) {
        return a > c ? a - c : c - a;
    }
    function Sn(a) {
        return a * a * Math.PI;
    }
    function Xf(a) {
        return Vb.max.apply(
            Vb,
            H(
                B(a, function (a) {
                    return Yf(a);
                })
            )
        );
    }
    function Tn(a, c) {
        var b = a,
            d = [],
            e = function () {
                b = (9301 * b + 49297) % 233280;
                return b / 233280;
            };
        -1 === a &&
            (e = function () {
                return Math.random();
            });
        for (a = 0; a < c; a++) d[a] = e();
        return d;
    }
    function Qj(a, c, b) {
        void 0 === b && (b = Tj);
        return la(a, c) < b;
    }
    function Se(a) {
        var c = a.charCodeAt(0);
        return 64 < c && 91 > c ? String.fromCharCode(c + 32).concat(a.substr(1)) : a;
    }
    function de(a) {
        void 0 === a && (a = 7);
        for (var c = ""; a--; ) c += "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"[Math.floor(51 * Math.random())];
        return c;
    }
    function Un(a) {
        return !Ha(parseFloat(a)) && isFinite(parseFloat(a));
    }
    function Vn(a) {
        return (180 * a) / Math.PI;
    }
    function yb(a) {
        return (a * Math.PI) / 180;
    }
    function rh(a) {
        return 360 === a ? a : (a + 36e3) % 360;
    }
    function ee(a, c, b, d) {
        return { x: a + d * Math.cos(b), y: c + d * Math.sin(b) };
    }
    function Uc(a, c, b, d) {
        return ee(a, c, yb(b), d);
    }
    function ra(a, c, b) {
        return Jb(a, yb(c), b);
    }
    function Jb(a, c, b) {
        return [a[0] + b * Math.cos(c), a[1] + b * Math.sin(c)];
    }
    function Uj(a, c) {
        return [(a[0] + c[0]) / 2, (a[1] + c[1]) / 2];
    }
    function Vj(a, c, b) {
        void 0 === b && (b = 0.5);
        return [a[0] + (c[0] - a[0]) * b, a[1] + (c[1] - a[1]) * b];
    }
    function Ia(a, c) {
        a = Wb(a);
        c = Wb(c);
        return ((180 * Math.atan2(c.y - a.y, c.x - a.x)) / Math.PI + 360) % 360;
    }
    function Xb(a, c) {
        a = Wb(a);
        c = Wb(c);
        var b = c.x - a.x;
        a = c.y - a.y;
        return Math.sqrt(b * b + a * a);
    }
    function mc(a, c) {
        var b = c[0] - a[0];
        a = c[1] - a[1];
        return Math.sqrt(b * b + a * a);
    }
    function Te(a, c, b, d) {
        a = Wb(a);
        c = Wb(c);
        b = Wb(b);
        d = Wb(d);
        var e = a.x;
        a = a.y;
        var f = b.x,
            g = b.y;
        b = { x: null, y: null, onLine1: !1, onLine2: !1 };
        var h = d.x - f;
        d = d.y - g;
        var k = c.x - e,
            l = c.y - a;
        c = d * k - h * l;
        if (0 == c)
            return !Bc(d) || !Bc(h) || (Bc(k) && Bc(l)) || !Bc((f - e) * l - (g - a) * k)
                ? !Bc(l) || !Bc(k) || (Bc(h) && Bc(d)) || !Bc((e - f) * d - (a - g) * h)
                    ? b
                    : { x: e, y: a, onLine1: !0, onLine2: !0 }
                : { x: f, y: g, onLine1: !0, onLine2: !0 };
        g = a - g;
        f = e - f;
        var m = k * g - l * f;
        g = (h * g - d * f) / c;
        f = m / c;
        b.x = e + g * k;
        b.y = a + g * l;
        0 < g && 1 > g && (b.onLine1 = !0);
        0 < f && 1 > f && (b.onLine2 = !0);
        return b;
    }
    function Wn(a, c, b) {
        var d = Ia(a, c);
        b = Wb(b);
        d = ee(b.x, b.y, yb(d + 90), 5);
        d = Te(a, c, b, d);
        return Xb(b, d);
    }
    function Zf(a, c) {
        var b = a[0];
        a = a[1];
        for (var d = !1, e = 0, f = c.length - 1; e < c.length; f = e++) {
            var g = c[e][0],
                h = c[e][1],
                k = c[f][0];
            f = c[f][1];
            h > a != f > a && b < ((k - g) * (a - h)) / (f - h) + g && (d = !d);
        }
        return d;
    }
    function nv(a, c) {
        var b;
        try {
            for (var d = ya(a), e = d.next(); !e.done; e = d.next()) if (Zf(e.value, c)) return !0;
        } catch (g) {
            var f = { error: g };
        } finally {
            try {
                e && !e.done && (b = d.return) && b.call(d);
            } finally {
                if (f) throw f.error;
            }
        }
    }
    function Xn(a, c, b) {
        a = Wb(a);
        c = Wb(c);
        b = Wb(b);
        a = (c.x - a.x) * (b.y - a.y) - (c.y - a.y) * (b.x - a.x);
        return -1e-11 > a ? -1 : 1e-11 < a ? 1 : 0;
    }
    function $f(a, c, b, d) {
        return function (e) {
            if (0 >= e) {
                var f = 0;
                0 < a ? (f = c / a) : !c && 0 < b && (f = d / b);
                return f * e;
            }
            if (1 <= e) return (f = 0), 1 > b ? (f = (d - 1) / (b - 1)) : 1 === b && 1 > a && (f = (c - 1) / (a - 1)), 1 + f * (e - 1);
            f = 0;
            for (var g = 1, h = 0; f < g; ) {
                h = (f + g) / 2;
                var k = 3 * a * (1 - h) * (1 - h) * h + 3 * b * (1 - h) * h * h + h * h * h;
                if (1e-5 > Math.abs(e - k)) break;
                k < e ? (f = h) : (g = h);
            }
            return 3 * c * (1 - h) * (1 - h) * h + 3 * d * (1 - h) * h * h + h * h * h;
        };
    }
    function Wj(a, c) {
        void 0 === c && (c = 1);
        var b = G(a[0], 2),
            d = b[0];
        b = b[1];
        var e = G(a[1], 2),
            f = e[0];
        e = e[1];
        var g = G(a[2], 2),
            h = g[0];
        g = g[1];
        var k = G(a[3], 2);
        a = k[0];
        k = k[1];
        c /= 2;
        for (
            var l = [-0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816], m = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472], n = 0, p = 0;
            12 > p;
            p++
        ) {
            var q = c * l[p] + c,
                r = q * (q * (-3 * d + 9 * f - 9 * h + 3 * a) + 6 * d - 12 * f + 6 * h) - 3 * d + 3 * f;
            q = q * (q * (-3 * b + 9 * e - 9 * g + 3 * k) + 6 * b - 12 * e + 6 * g) - 3 * b + 3 * e;
            n += m[p] * Math.sqrt(r * r + q * q);
        }
        return c * n;
    }
    function Xj(a, c) {
        var b = G(a[0], 2),
            d = b[0];
        b = b[1];
        var e = G(a[1], 2),
            f = e[0],
            g = e[1];
        e = G(a[2], 2);
        var h = e[0],
            k = e[1];
        e = G(a[3], 2);
        a = e[0];
        e = e[1];
        var l = (f - d) * c + d,
            m = (g - b) * c + b;
        f = (h - f) * c + f;
        g = (k - g) * c + g;
        h = (a - h) * c + h;
        k = (e - k) * c + k;
        var n = (f - l) * c + l,
            p = (g - m) * c + m;
        f = (h - f) * c + f;
        g = (k - g) * c + g;
        return [
            [d, b],
            [l, m],
            [n, p],
            [(f - n) * c + n, (g - p) * c + p],
            [f, g],
            [h, k],
            [a, e],
        ];
    }
    function ov(a, c, b, d, e, f) {
        var g = [];
        a: {
            var h = a[0];
            a = a[1];
            var k = c[0];
            c = c[1];
            var l = b[0];
            b = b[1];
            var m = d[0];
            d = d[1];
            var n = e[0];
            e = e[1];
            var p = f[0];
            f = f[1];
            var q = Math.min(n, p),
                r = Math.min(e, f),
                u = Math.max(n, p),
                x = Math.max(e, f),
                v,
                y = e - f,
                D = p - n;
            y = [y * (-1 * h + 3 * k + -3 * l + m) + D * (-1 * a + 3 * c + -3 * b + d), y * (3 * h + -6 * k + 3 * l) + D * (3 * a + -6 * c + 3 * b), y * (-3 * h + 3 * k) + D * (-3 * a + 3 * c), y * h + D * a + (n * f - p * e)];
            D = v = y.length - 1;
            var E = [];
            for (var F = 0; F <= v; F++)
                if (1e-8 >= Math.abs(y[F])) v--;
                else break;
            switch (v) {
                case 1:
                    v = y[D - 1];
                    F = E;
                    void 0 === F && (F = []);
                    0 !== v && F.push(-y[D] / v);
                    break;
                case 2:
                    var t = y[D - 2];
                    v = E;
                    void 0 === v && (v = []);
                    F = y[D - 1] / t;
                    y = F * F - (y[D] / t) * 4;
                    0 < y ? ((y = Math.sqrt(y)), v.push(0.5 * (-F + y)), v.push(0.5 * (-F - y))) : 0 === y && v.push(0.5 * -F);
                    break;
                case 3:
                    var w = y[D - 3];
                    v = E;
                    void 0 === v && (v = []);
                    t = y[D - 2] / w;
                    var wa = y[D - 1] / w;
                    F = (3 * wa - t * t) / 3;
                    D = (2 * t * t * t - 9 * wa * t + (y[D] / w) * 27) / 27;
                    y = t / 3;
                    t = (D * D) / 4 + (F * F * F) / 27;
                    D /= 2;
                    1e-6 >= Math.abs(t) && (t = 0);
                    0 < t
                        ? ((w = Math.sqrt(t)), (F = -D + w), (t = 0 <= F ? Math.pow(F, 1 / 3) : -Math.pow(-F, 1 / 3)), (F = -D - w), (t = 0 <= F ? t + Math.pow(F, 1 / 3) : t - Math.pow(-F, 1 / 3)), v.push(t - y))
                        : 0 > t
                        ? ((F = Math.sqrt(-F / 3)), (t = Math.atan2(Math.sqrt(-t), -D) / 3), (D = Math.cos(t)), (t = Math.sin(t)), (w = Math.sqrt(3)), v.push(2 * F * D - y), v.push(-F * (D + w * t) - y), v.push(-F * (D - w * t) - y))
                        : ((F = 0 <= D ? -Math.pow(D, 1 / 3) : Math.pow(-D, 1 / 3)), v.push(2 * F - y), v.push(-F - y));
            }
            for (v = 0; v < E.length; v++)
                if (((y = E[v]), 0 <= y && 1 >= y))
                    if (
                        ((w = h + (k - h) * y),
                        (t = a + (c - a) * y),
                        (F = k + (l - k) * y),
                        (D = c + (b - c) * y),
                        (w += (F - w) * y),
                        (t += (D - t) * y),
                        (F = w + (F + (l + (m - l) * y - F) * y - w) * y),
                        (y = t + (D + (b + (d - b) * y - D) * y - t) * y),
                        1e-7 > Math.abs(n - p))
                    ) {
                        if (r <= y && y <= x)
                            if (g) g.push([F, y]);
                            else break a;
                    } else if (1e-7 > Math.abs(e - f)) {
                        if (q <= F && F <= u)
                            if (g) g.push([F, y]);
                            else break a;
                    } else if (F >= q && y >= r && F <= u && y <= x)
                        if (g) g.push([F, y]);
                        else break a;
        }
        return g;
    }
    function pv() {
        for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
        var b = G(a[0], 2);
        c = b[0];
        b = b[1];
        var d = G(a[1], 2),
            e = d[0];
        d = d[1];
        var f = G(a[2], 2),
            g = f[0];
        f = f[1];
        a = G(a[3], 2);
        var h = a[0],
            k = a[1],
            l,
            m,
            n = (l = Number.POSITIVE_INFINITY),
            p = (m = Number.NEGATIVE_INFINITY);
        a = e - c;
        var q = d - b,
            r = g - e,
            u = f - d;
        h -= g;
        k -= f;
        for (var x = 0; 1.001 > x; x += 0.025) {
            var v = c + x * a,
                y = b + x * q,
                D = e + x * r,
                E = d + x * u,
                F = g + x * h,
                t = f + x * k,
                w = D - v,
                wa = E - y;
            F -= D;
            t -= E;
            v += x * w;
            y += x * wa;
            D += x * F;
            E += x * t;
            D -= v;
            E -= y;
            D = v + x * D;
            E = y + x * E;
            n = Math.min(n, D);
            l = Math.min(l, E);
            p = Math.max(p, D);
            m = Math.max(m, E);
        }
        return [n, l, p - n, m - l];
    }
    function Wb(a) {
        a.pop && (a = { x: a[0], y: a[1] });
        return a;
    }
    function qv(a, c, b, d, e, f) {
        void 0 === f && (f = 0);
        f = ((0 > e ? b : d)[1] - f) / Math.abs(Math.sin(yb(e)));
        f = Math.min(f, (0 <= e ? b : d)[0]);
        return c - a < f;
    }
    function Yn(a) {
        var c = rh(a);
        return 90 < c && 270 > c ? rh(c + 180) : a;
    }
    function Bc(a) {
        return 1e-7 > Math.abs(a);
    }
    function ag(a, c) {
        return S(a, function (b) {
            return Kb(b, c);
        });
    }
    function Ue(a, c) {
        c = G(Zn([Ve(a), Ve(c)]), 2);
        a = c[0];
        c = c[1];
        if ($n(a, c)) return c;
        if ($n(c, a)) return a;
        if (c[0] < a[1]) return [c[0], a[1]];
    }
    function bg(a, c) {
        var b = [];
        We(a, function (a) {
            return Xe(b, Ue(a, c));
        });
        return b;
    }
    function Yj(a, c) {
        var b = 0,
            d = c[0] - a[0],
            e = a[1] - c[1],
            f = (a[1] + a[0]) / 2,
            g = (c[1] + c[0]) / 2;
        c[1] - c[0] > a[1] - a[0] ? (b = f - g) : 0 > d ? (b = -d) : 0 > e && (b = e);
        c[0] += b;
        c[1] += b;
        return c;
    }
    function ao(a, c) {
        for (var b = 0; b < a.length; b++) if (Kb(Ve(a[b]), c)) return b;
        return -1;
    }
    function rv(a, c) {
        We(c, function (b) {
            var c;
            try {
                for (var e = ya(a), f = e.next(); !f.done; f = e.next()) {
                    var g = f.value,
                        h = g,
                        k = b;
                    if (fe(h, k[0]) || fe(h, k[1])) {
                        h = g;
                        k = b;
                        if (fe(h, k[0]) && fe(h, k[1]))
                            var l = g,
                                m = [
                                    [g[0], b[0]],
                                    [b[1], g[1]],
                                ];
                        else var n = g;
                        break;
                    }
                }
            } catch (q) {
                var p = { error: q };
            } finally {
                try {
                    f && !f.done && (c = e.return) && c.call(e);
                } finally {
                    if (p) throw p.error;
                }
            }
            l && ((p = a.indexOf(l)), a.splice.apply(a, H([p, 1], m)));
            n && ((m = a.indexOf(n)), (b = fe(n, b[0]) ? [n[0], b[0]] : fe(n, b[1]) ? [b[1], n[1]] : void 0), (a[m] = b));
            return a;
        });
        return a;
    }
    function Zj(a, c, b) {
        var d;
        b /= 2;
        var e = [];
        try {
            for (var f = ya(a), g = f.next(); !g.done; g = f.next()) {
                var h = g.value;
                e.push([ua(h - b, c[0], c[1]), ua(h + b, c[0], c[1])]);
            }
        } catch (l) {
            var k = { error: l };
        } finally {
            try {
                g && !g.done && (d = f.return) && d.call(f);
            } finally {
                if (k) throw k.error;
            }
        }
        return e;
    }
    function cg(a, c) {
        var b = [],
            d;
        a = bo(a) ? a : Zn(a.slice(0));
        if (bo(a))
            return (
                (c = c || sv(a)),
                We(a, function (a, f, g) {
                    !f && a[0] > c[0] ? b.push([c[0], Math.min(a[0], c[1])]) : f && a[0] > c[0] && d[1] !== a[0] && b.push([Math.max(d[1], c[0]), Math.min(a[0], c[1])]);
                    g && a[1] < c[1] && b.push([Math.max(c[0], a[1]), c[1]]);
                    d = a;
                }),
                b
            );
    }
    function sv(a) {
        a = co(a);
        return [Math.min.apply(Math, H(a)), Math.max.apply(Math, H(a))];
    }
    function tv(a) {
        var c;
        We(a, function (b) {
            return (c = c && la(c[0], c[1]) > la(b[0], b[1]) ? c : b);
        });
        return c;
    }
    function co(a) {
        var c = [];
        We(a, function (b) {
            return c.push.apply(c, H(b));
        });
        return c;
    }
    function eo(a) {
        var c = 0;
        We(a, function (b) {
            return (c += b[1] - b[0]);
        });
        return c;
    }
    function Zn(a, c) {
        void 0 === c && (c = !1);
        return a.sort(function (b, a) {
            return c ? a[0] - b[0] : b[0] - a[0];
        });
    }
    function We(a, c) {
        for (var b = 0, d = a.length; b < d && !1 !== c(a[b], b, b === a.length - 1, b ? a[b - 1] : void 0); b++);
    }
    function bo(a) {
        for (var c = 0, b = a.length; c < b; c++) if (c && a[c][0] < a[c - 1][0]) return !1;
        return !0;
    }
    function fo(a, c, b) {
        b && ((a = go(a, b)), (c = go(c, b)));
        b = a;
        var d = c;
        b = b[2] * b[3] === d[2] * d[3] && b[2] === d[2] ? 0 : b < d ? -1 : b > d ? 1 : 0;
        return 0 === b && a[0] === c[0] && a[1] === c[1] ? 0 : 0 === b ? -1 : b;
    }
    function go(a, c) {
        return B(a, function (b) {
            return na(b, c);
        });
    }
    function rb(a, c) {
        return [a[0] + c, a[1] + c, a[2] - 2 * c, a[3] - 2 * c];
    }
    function Ye(a, c) {
        return mb(va(a), c);
    }
    function Ea(a) {
        var c = [],
            b;
        if (a && a.length) {
            for (var d = 0, e = a.length; d < e; d++) if ((b = a[d])) c.push([b[0], b[1]]), c.push([b[0] + b[2], b[1] + b[3]]);
            return Ua(c);
        }
    }
    function ho(a) {
        for (var c = a[0], b = 1, d = a.length; b < d; b++)
            if (((c = sh(c, a[b])), 0 >= c[2] || 0 >= c[3])) {
                c = null;
                break;
            }
        return c;
    }
    function Ua(a) {
        if (!a.length) return [0, 0, 0, 0];
        var c = a[0],
            b = c[0],
            d = c[0],
            e = c[1];
        c = c[1];
        for (var f, g, h = 0, k = a.length; h < k; h++) {
            var l = a[h];
            (f = l[0]) > d && (d = f);
            f < b && (b = f);
            (g = l[1]) > c && (c = g);
            g < e && (e = g);
        }
        return [b, e, d - b, c - e];
    }
    function uv(a, c) {
        return Ea([a, Ua(c)]);
    }
    function th(a, c) {
        return mb(va(a), [Math.max(a[2], c[0]), Math.max(a[3], c[1])]);
    }
    function vv(a, c) {
        var b = G(a, 4);
        a = b[2];
        b = b[3];
        c = G(c, 4);
        c = Math.min(c[3] / b, c[2] / a);
        return [a * c, b * c];
    }
    function va(a) {
        return [Vc(a), Wc(a)];
    }
    function sh(a, c) {
        a = a.slice(0);
        c = Yb(c);
        a = ak(a, c[0]);
        a = bk(a, c[1]);
        a = ck(a, c[2]);
        return dk(a, c[3]);
    }
    function ak(a, c) {
        var b = Va(a);
        a[0] = a[0] < c ? c : a[0];
        a[2] = b < c ? c - a[0] : b - a[0];
        return a;
    }
    function bk(a, c) {
        var b = Wa(a);
        a[1] = a[1] < c ? c : a[1];
        a[3] = b < c ? c - a[1] : b - a[1];
        return a;
    }
    function ck(a, c) {
        var b = Va(a);
        a[0] = a[0] > c ? c : a[0];
        a[2] = b > c ? c - a[0] : b - a[0];
        return a;
    }
    function dk(a, c) {
        var b = Wa(a);
        a[1] = a[1] > c ? c : a[1];
        a[3] = b > c ? c - a[1] : b - a[1];
        return a;
    }
    function io(a, c) {
        return Ye(a, [a[2] + c[0] + c[2], a[3] + c[1] + c[3]]);
    }
    function jo(a, c) {
        return io(
            a,
            c.map(function (b) {
                return -b;
            })
        );
    }
    function ha(a) {
        return [a.x, a.y, a.width, a.height];
    }
    function mb(a, c) {
        return [a[0] - c[0] / 2, a[1] - c[1] / 2, c[0], c[1]];
    }
    function Cc(a) {
        var c;
        a.length &&
            (c = a[0].pop
                ? B(a, function (b) {
                      return ko(b);
                  }).join(" ")
                : ko(a));
        return c;
    }
    function wv(a, c) {
        var b = c[0][1] == c[1][1];
        if (c[0][0] > c[1][0] || c[0][1] > c[1][1]) c = [c[1], c[0]];
        var d = [],
            e,
            f;
        b ? (c[0][0] < a[0] && (e = [c[0], [a[0], c[0][1]]]), c[1][0] > a[0] + a[2] && (f = [[a[0] + a[2], c[1][1]], c[1]])) : (c[0][1] < a[1] && (e = [c[0], [c[0][0], a[1]]]), c[1][1] > a[1] + a[3] && (f = [[c[1][0], a[1] + a[3]], c[1]]));
        e && d.push(e);
        f && d.push(f);
        return d;
    }
    function lo(a, c, b, d, e, f) {
        c = ek(a, c, [ge.x(b), ge.x(d), ge.y(e), ge.y(f)]);
        return Xc(a, c);
    }
    function he(a, c, b, d) {
        b = nc.x(b);
        d = nc.y(d);
        return { box: Xc(a, ek(a, c, [b[0], b[1], d[0], d[1]])), contentAlignment: [b[2], d[2]] };
    }
    function ek(a, c, b) {
        var d = b[0];
        d = (0, b[1])(c) - d(a);
        var e = b[2];
        a = (0, b[3])(c) - e(a);
        return [d, a];
    }
    function fk(a, c) {
        return [a[0] - c[0], a[1] - c[1]];
    }
    function mo(a, c) {
        a = uh(a.slice(0), c);
        for (var b = [], d = 0, e = a.length; d < e; d++) {
            var f = a[d];
            if (d) {
                var g = vh(f, b, c);
                f[0] = g[0];
                f[1] = g[1];
            }
            b.push(f);
        }
        return b;
    }
    function vh(a, c, b) {
        if (!Yc(c, a)) return a;
        var d = [],
            e = !1,
            f = "v" === { u: "v", d: "v", l: "h", r: "h" }[b],
            g = f ? xd : yd;
        f = f ? Va : Wa;
        for (var h = g(a), k = f(a), l = 0, m = c.length; l < m; l++) {
            var n = c[l];
            g(n) > k || f(n) < h || d.push(n);
        }
        d = uh(d, b);
        c = 0;
        for (a = a.slice(0); !e; ) {
            g = d[c++];
            if (zd(a, g) && ((e = a), (g = [g]), (f = b), (h = 1 < g.length ? Ea(g) : g[0]), Yc(g, e)))
                switch (f) {
                    case "u":
                        e[1] = h[1] - e[3];
                        break;
                    case "l":
                        e[0] = h[0] - e[2];
                        break;
                    case "d":
                        e[1] = Wa(h);
                        break;
                    case "r":
                        e[0] = Va(h);
                }
            e = !Yc(d.slice(c), a) || c >= d.length;
        }
        return a;
    }
    function gk(a, c) {
        var b = va(a),
            d = Yb(a);
        w(c, function (a) {
            if (zd(Ze(d), a)) {
                var c = va(a);
                c = fk(b, c);
                1 < Math.abs(c[1]) ? (0 < c[1] ? (d[1] = Wa(a)) : (d[3] = a[1])) : 1 < Math.abs(c[0]) && (0 > c[0] ? (d[2] = a[0]) : (d[0] = Va(a)));
            }
        });
        return Ze(d);
    }
    function uh(a, c) {
        c = { u: { getter: Wa, dir: "desc" }, d: { getter: yd }, l: { getter: Va, dir: "desc" }, r: { getter: xd } }[c];
        var b = c.getter,
            d = function (a, c) {
                a = b(a);
                c = b(c);
                return a < c ? -1 : a > c ? 1 : 0;
            };
        a.sort(
            "desc" === c.dir
                ? function (b, a) {
                      return d(a, b);
                  }
                : d
        );
        return a;
    }
    function Zc(a, c) {
        a = no(a, c);
        return oo(a, c);
    }
    function no(a, c) {
        c = Yj([c[0], Va(c)], [a[0], Va(a)]);
        return [c[0], a[1], c[1] - c[0], a[3]];
    }
    function oo(a, c) {
        c = Yj([c[1], Wa(c)], [a[1], Wa(a)]);
        return [a[0], c[0], a[2], c[1] - c[0]];
    }
    function $c(a, c) {
        var b = a[0],
            d = c[0];
        if ((b = !(d < b || d + c[2] > b + a[2]))) (b = a[1]), (d = c[1]), (b = !(d < b || d + c[3] > b + a[3]));
        return b;
    }
    function Ad(a, c) {
        return c[0] > a[0] && c[0] < a[0] + a[2] && c[1] > a[1] && c[1] < a[1] + a[3];
    }
    function po(a, c, b) {
        return c[0] - a[0] > b && a[0] + a[2] - c[0] > b && c[1] - a[1] > b && a[1] + a[3] - c[1] > b;
    }
    function zd(a, c) {
        var b = a[0],
            d = c[0];
        return b + 0.01 < d + c[2] && b + a[2] > d + 0.01 && a[1] + 0.01 < c[1] + c[3] && a[1] + a[3] > c[1] + 0.01;
    }
    function xv(a, c) {
        if (!zd(a, c)) return 0;
        var b = Math.max(a[0], c[0]) - Math.min(Va(a), Va(c)),
            d = Math.max(a[1], c[1]) - Math.min(Wa(a), Wa(c));
        b *= d;
        return b / (a[2] * a[3] + c[2] * c[3] - b);
    }
    function Yc(a, c, b) {
        for (var d = 0, e = a.length; d < e; d++) if ((!b || a[d].id !== b) && zd(a[d], c)) return !0;
    }
    function qo(a) {
        for (var c = 0, b = a.length; c < b; c++) for (var d = c; d < b; d++) if (d !== c && zd(a[c], a[d])) return !0;
    }
    function ro(a, c) {
        var b = [],
            d = function (a) {
                a = Te(a[0], a[1], c[0], c[1]);
                a.onLine1 && a.onLine2 && b.push([a.x, a.y]);
            },
            e = ie(a, "bl,br"),
            f = ie(a, "tl,tr"),
            g = ie(a, "tr,br");
        a = ie(a, "tl,bl");
        d(f);
        d(g);
        d(e);
        d(a);
        return b.length ? b : void 0;
    }
    function hk(a, c, b) {
        return Ua(ik(a, c, b));
    }
    function ik(a, c, b) {
        var d = c[0],
            e = G(a, 4);
        a = e[0];
        var f = e[1],
            g = a + e[2];
        e = f + e[3];
        var h = [a + c[1], f + c[2]];
        c = [a, f];
        f = [g, f];
        g = [g, e];
        a = [a, e];
        b = B(b ? [c, a] : [c, f, g, a], function (b) {
            return { x: b[0], y: b[1], angle: Ia(h, b), len: Xb(h, b) };
        });
        return (b = B(b, function (b) {
            b = Uc(h[0], h[1], b.angle + d, b.len);
            return [b.x, b.y];
        }));
    }
    function yv(a, c) {
        w(a, function (b) {
            sa(b, function (b) {
                return b[3];
            });
            b.reverse();
        });
        return zv(a, c);
    }
    function zv(a, c) {
        var b = c.limitBox,
            d,
            e,
            f = Math.max.apply(
                Math,
                H(
                    B(a, function (b) {
                        return P(b)[2];
                    })
                )
            );
        if (t(c.masterSet))
            var g = B(a[c.masterSet], function (b) {
                return [2];
            });
        else
            (g = []),
                w(a, function (b) {
                    g.push.apply(
                        g,
                        H(
                            B(b, function (b) {
                                return b[2];
                            })
                        )
                    );
                });
        g = ad(
            ea(g, function (b) {
                return b >= f;
            }).sort(function (b, a) {
                return b > a ? 1 : -1;
            })
        );
        var h = function (b) {
            var c = [],
                d = B(a, function (a) {
                    a = a.slice(0);
                    a = S(a, function (a) {
                        return a[2] <= b;
                    });
                    c.push(a[2]);
                    return a;
                }),
                e = 0;
            w(d, function (b) {
                return (e += b[3]);
            });
            var f = [0, 0, Math.max.apply(Math, H(c)), e];
            f.ids = B(d, function (b) {
                return b.id;
            });
            return f;
        };
        w(g, function (a) {
            a = h(a);
            if (a[3] < b[3]) return (d = a), !1;
            e = a;
        });
        return d || e;
    }
    function Av(a) {
        for (var c = [], b = 1, d = Math.round(Math.sqrt(a)); b <= d; b++) c.push([b, Math.ceil(a / b)]);
        a = B(c, function (b) {
            return [b[1], b[0]];
        }).reverse();
        c.push.apply(c, H(a));
        return c;
    }
    function Bv(a) {
        return B(Av(a), function (a) {
            return a[0];
        });
    }
    function so() {
        if (jk) return jk;
        for (var a = ba.getElementsByTagName("script"), c = 0; c < a.length; c++) {
            var b = a[c],
                d = b.getAttribute("src");
            if (d && 0 !== b.src.indexOf("file://") && ((b = d.split("?")[0]), (d = b.split("/").slice(-1)[0].toLowerCase()), "jscharting.js" === d || (0 === d.indexOf("jscharting") && d.indexOf(".js") === d.length - 3)))
                return (jk = b.split("/").slice(0, -1).join("/"));
        }
    }
    function je() {
        return kk ? kk : (kk = so() || "https://code.jscharting.com/3.0.2");
    }
    function to() {
        var a = T.JSC;
        return !so() && (!a || !a.chart);
    }
    function lk(a, c, b, d) {
        wh(a, c, b, d, Cv);
    }
    function Dv(a, c, b, d) {
        wh(a, c, b, d, function (b) {
            return b;
        });
    }
    function wh(a, c, b, d, e) {
        Ev(a, {
            success: function (d) {
                var f = d.responseText;
                if (f)
                    try {
                        f = e(f);
                    } catch (h) {
                        b && b({ path: a, data: f, status: d.status, state: "parsererror", error: h });
                    }
                c && c({ path: a, status: d.status, data: f });
            },
            error: function (c) {
                b && b({ path: a, status: c.status });
            },
            async: !d,
        });
    }
    function Fv(a) {
        return "object" === typeof HTMLElement ? a instanceof HTMLElement : a && "object" === typeof a && null !== a && 1 === a.nodeType && "string" === typeof a.nodeName;
    }
    function Cv(a) {
        var c = ba.createElement("script");
        c.type = "text/javascript";
        c.text = a;
        ba.head.appendChild(c).parentNode.removeChild(c);
    }
    function Ev(a, c) {
        var b = new XMLHttpRequest(),
            d = c || {};
        c = d.data;
        var e = d.success,
            f = d.error,
            g = I(c);
        d = !1 !== d.async;
        if (b) {
            if ("function" === g) (e = c), (c = null);
            else if ("object" === g) {
                g = [];
                for (var h in c) c.hasOwnProperty(h) && g.push(encodeURIComponent(h) + "=" + encodeURIComponent(c[h]));
                c = g.join("&");
            }
            b.open(c ? "POST" : "GET", a, d);
            c && (b.setRequestHeader("X-Requested-With", "XMLHttpRequest"), b.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), b.setRequestHeader("Api-Key", "foobar"));
            b.onreadystatechange = function () {
                if (4 === b.readyState) {
                    var a = b.status;
                    a = (200 <= a && 300 > a) || 304 === a;
                    e && a && e(b);
                    if (f && !a) return f(b);
                }
            };
            if (4 === b.readyState) return b;
            b.send(c);
            return b;
        }
    }
    function Gv(a, c) {
        function b() {
            new Date().getTime() - d >= c ? a.call() : (e.value = T.requestAnimationFrame(b));
        }
        var d = new Date().getTime(),
            e = {};
        e.value = T.requestAnimationFrame(b);
        return e;
    }
    function Hv(a) {
        a && a.value && T.cancelAnimationFrame(a.value);
    }
    function uo(a, c) {
        void 0 === c && (c = 1);
        var b = c,
            d = function () {
                1 > b ? setTimeout(a, 0) : (b--, T.requestAnimationFrame(d));
            };
        d();
    }
    function Iv(a, c) {
        return new T.Intl.DateTimeFormat(a, c);
    }
    function Jv(a, c) {
        return new T.Intl.NumberFormat(a, c);
    }
    function Kv(a, c) {
        var b = T.Intl.Collator;
        return b ? new b(a, c) : null;
    }
    function Lv(a, c, b) {
        var d = b._getNumberFormat(b.locale, b.options);
        if (d) {
            if (c || b.formatString) {
                var e = c || b.formatString;
                c = Ka.None;
                var f = Mv.exec(e)[0];
                switch (f.toLowerCase()) {
                    case "c":
                        c = Ka.Currency;
                        break;
                    case "n":
                        c = Ka.Number;
                        break;
                    case "p":
                        c = Ka.Percent;
                        break;
                    case "f":
                        c = Ka.Float;
                        break;
                    case "d":
                        c = Ka.Decimal;
                        break;
                    case "e":
                        c = Ka.Exponential;
                        break;
                    case "g":
                        c = Ka.General;
                        break;
                    case "a":
                        c = Ka.NumericSymbol;
                        break;
                    case "t":
                        c = Ka.PowersOfTen;
                        break;
                    case "x":
                        c = Ka.Hexadecimal;
                        var g = f === f.toLowerCase() ? "lower" : "upper";
                }
                e = Nv.exec(e);
                e = null === e ? null : parseInt(e[0]);
                g = { type: c, specifier: e, charCase: g };
                if (g.type) return Ov(g, a, b);
            }
            return d.format(a);
        }
        return null !== a ? a.toLocaleString() : "";
    }
    function Pv(a, c, b) {
        void 0 === c && (c = {});
        if (!a) return "";
        var d = O(c),
            e = d ? c : c.formatString || b.formatString,
            f = Qv[e];
        if (f) {
            var g = f.options;
            if (!g && f.formatString) return vo(a, f.formatString, b);
            if (!g && f.handler) return f.handler(a);
            c = W(d ? {} : c, g || {});
            c = b._getDateTimeFormat(b.locale, c);
        } else c = b._getDateTimeFormat(b.locale, b.options);
        return c ? (e && !f ? vo(a, e, b) : c.format(a)) : a.toLocaleDateString();
    }
    function Ov(a, c, b) {
        var d = function (b, a) {
                return function (c) {
                    return Math.min(Math.max(parseInt(c || 0), b), a);
                };
            },
            e = function (b) {
                return d(0, 20)(b);
            },
            f = function (b) {
                return d(1, 21)(b);
            },
            g = W({ minimumFractionDigits: 0, maximumFractionDigits: 2 }, b.options),
            h = !0,
            k = T.Intl.NumberFormat;
        if (!k) return c;
        switch (a.type) {
            case Ka.Number:
            case Ka.Float:
                g.style = "decimal";
                null !== a.specifier && ((g.maximumFractionDigits = e(a.specifier)), (g.minimumFractionDigits = e(a.specifier)));
                break;
            case Ka.Currency:
                g.style = "currency";
                g.currency = Rv(b.locale);
                a = lc(a.specifier) ? 2 : a.specifier;
                g.minimumFractionDigits = e(a);
                g.maximumFractionDigits = e(a);
                break;
            case Ka.Percent:
                g.style = "percent";
                a.specifier && (g.minimumFractionDigits = e(a.specifier));
                break;
            case Ka.Decimal:
                g.style = "decimal";
                g.useGrouping = g.useGrouping || !1;
                null !== a.specifier && ((g.maximumFractionDigits = e(a.specifier)), (g.minimumFractionDigits = e(a.specifier)));
                break;
            case Ka.Exponential:
                c = c.toExponential(a.specifier);
                h = !1;
                break;
            case Ka.General:
                g.style = "decimal";
                a.specifier && (g.maximumSignificantDigits = f(a.specifier));
                break;
            case Ka.Hexadecimal:
                c = c.toString(16);
                a.specifier && (c = Zb(c, a.specifier));
                "upper" === a.charCase && (c = c.toUpperCase());
                h = !1;
                break;
            case Ka.NumericSymbol:
                c = Sv(c, a.specifier);
                h = !1;
                break;
            case Ka.PowersOfTen:
                if (c) {
                    h = Math.floor(Pj(Math.log(Math.abs(c)) / Math.log(10), 6));
                    e = c / Math.pow(10, h);
                    var l = a.specifier || 0;
                    a = 1e-5 > Math.abs(Math.abs(e) - 1);
                    f = e % 1 ? 2 : 0;
                    if (Math.abs(c) >= Math.pow(10, l) || Math.abs(c) <= Math.pow(10, -l)) (c = "10<sup>" + h + "</sup>"), (c = (a ? (0 > e ? "-" : "") : e.toFixed(f) + "\u22c5") + c);
                }
                h = !1;
        }
        if (!h) return c.toString();
        delete g.specifier;
        return new k(b.locale, g).format(c);
    }
    function vo(a, c, b) {
        var d = function (a, c) {
            b.dateTimeFormatters[c] || (b.dateTimeFormatters[c] = b._getDateTimeFormat(b.locale, a));
        };
        return c.replace(Tv, function (c) {
            if (!c) return "";
            switch (c) {
                case "h":
                case "hh":
                case "t":
                case "tt":
                    d({ hour12: !0, hour: "numeric" }, c);
                    break;
                case "MMM":
                    d({ month: "short" }, c);
                    break;
                case "MMMM":
                    d({ month: "long" }, c);
                    break;
                case "g":
                    d({ era: "short" }, c);
                    break;
                case "gg":
                    d({ era: "long" }, c);
                    break;
                case "ddd":
                    d({ weekday: "short" }, c);
                    break;
                case "dddd":
                    d({ weekday: "long" }, c);
            }
            return $b[c](a, b.dateTimeFormatters[c]);
        });
    }
    function Uv(a, c, b) {
        var d = c.reverse(),
            e = function () {
                if (0 === d.length) b();
                else {
                    var c = d.pop();
                    a(function () {
                        c();
                        e();
                    });
                }
            };
        e();
    }
    function Xa(a, c, b, d) {
        function e(a) {
            var d = I(a),
                e = c();
            if ("undefined" === d) return f();
            if ("array" === d) b && b(a);
            else {
                if ("number" === d) return 0 > a && e.length ? e[e.length + a] : e[a];
                if ("string" === d)
                    return S(e, function (b) {
                        return (b.currentOptions && (b.currentOptions.name === a || b.currentOptions.id === a || b.currentOptions.key === a)) || b.id === a || b.key === a || b.prefix === a;
                    });
                if ("object" === d || "function" === d) return f().filter(a);
            }
        }
        var f = function () {
            return new a(c(), d);
        };
        e.add = d
            ? function () {
                  for (var b = [], a = 0; a < arguments.length; a++) b[a] = arguments[a];
                  d.push.apply(d, H(b));
                  return f();
              }
            : f;
        e.splice = d
            ? function () {
                  for (var b = [], a = 0; a < arguments.length; a++) b[a] = arguments[a];
                  d.splice.apply(d, H(b));
                  return f();
              }
            : f;
        e.remove = d
            ? function () {
                  for (var b = [], a = 0; a < arguments.length; a++) b[a] = arguments[a];
                  d.remove.apply(d, H(b));
                  return f();
              }
            : f;
        return e;
    }
    function wo(a, c) {
        return function () {
            var b = [];
            a.each(function (a) {
                b.push.apply(b, H(c(a)));
            });
            return b;
        };
    }
    function mk(a, c) {
        return function (b) {
            c(a, b);
        };
    }
    function Vv(a) {
        if (!$e) {
            var c = dg ? dg + "icons/" : void 0;
            c || ((c = je()) ? ("/" !== c[c.length - 1] && (c += "/"), (c += "icons/")) : (c = null));
            $e = c || "/dist/icons/";
        }
        "/" !== $e[$e.length - 1] && ($e += "/");
        return $e + a + ".js";
    }
    function xo(a, c, b) {
        void 0 === c && (c = null);
        void 0 === b && (b = null);
        if (a && "none" !== a) {
            var d = a.replace("{os}", Wv),
                e = af[d];
            if (t(e)) return e;
            af[d] = null;
            void 0 === e &&
                lk(
                    Vv(a),
                    function (b) {
                        if (c) {
                            var a = !dg && to();
                            b.displayCdnWarning = a;
                            c(b);
                        }
                    },
                    function (a) {
                        af[d] = null;
                        b && b(a);
                    },
                    !0
                );
            return af[d];
        }
    }
    function nk(a, c) {
        void 0 === c && (c = !1);
        if (a)
            for (var b = pa(a), d = 0; d < b.length; d++) {
                var e = b[d];
                if (!af[e] || c) af[e] = a[e];
            }
    }
    function eg(a, c) {
        return L(fa(a), c);
    }
    function Xv(a, c, b, d) {
        var e = d ? d.noKerning : !1,
            f = d ? d.delimiter : " ";
        d = new RegExp("([^" + f + "]+)");
        var g = c.fontSize || b.fontSize,
            h = Yv(c, b);
        O(g) && (g = parseInt(g));
        var k = g * h.height;
        g = { descent: h.descent * k, leading: (h.height - h.descent) * k, height: k, fontSize: g };
        h = fg(a, c, b, e);
        k = String.fromCharCode(8230);
        f = { width: h, metrics: g, text: a, style: c, delimiter: { text: f, width: fg(f, c, b, e) }, ellipsis: { text: k, width: fg(k, c, b, e) } };
        a = a.split(d);
        if ((d = a.length)) for (f.parts = [], g = 0; g < d; g++) (h = a[g]), void 0 !== h && f.parts.push({ text: h, width: fg(h, c, b, e) });
        return f;
    }
    function yo(a, c) {
        var b = { font: a.fontFamily },
            d = [].concat(xh).concat(ok);
        d.push(". .");
        d = pk(d, a, c);
        for (var e = {}, f = {}, g = 0, h = xh.length; g < h; g++) e[xh[g]] = d[xh[g]];
        e[" "] = d[". ."] - 2 * d["."];
        var k = !1;
        g = 0;
        for (h = ok.length; g < h; g++) {
            var l = ok[g],
                m = d[l[0]] + d[l[1]];
            m -= d[l];
            0.001 < m && (k = !0);
        }
        if (k) for (a = pk(qk, a, c), g = 0, h = qk.length; g < h; g++) (l = qk[g]), (m = d[l[0]] + d[l[1]]), (m -= a[l]), 0.001 < m && (f[l] = m);
        b.stringWidths = e;
        b.kerning = f;
        return b;
    }
    function yh(a) {
        return a.getComputedTextLength ? a.getComputedTextLength() : 0;
    }
    function pk(a, c, b) {
        var d = {},
            e = ba.createElementNS("http://www.w3.org/2000/svg", "svg");
        b.fontFamily && e.setAttribute("font-family", b.fontFamily);
        b.fontWeight && e.setAttribute("font-weight", b.fontWeight);
        b.textRendering && e.setAttribute("text-rendering", b.textRendering);
        b = ba.createDocumentFragment();
        var f = ba.createElementNS("http://www.w3.org/2000/svg", "g");
        f.setAttribute("font-size", "100px");
        c.fontFamily && f.setAttribute("font-family", c.fontFamily);
        c.fontWeight && f.setAttribute("font-weight", c.fontWeight);
        b.appendChild(f);
        c = 0;
        for (var g = a.length; c < g; c++) f.appendChild(rk(a[c]));
        e.appendChild(b);
        ba.body.appendChild(e);
        b = e.childNodes[0].childNodes;
        c = 0;
        for (g = b.length; c < g; c++) d[a[c]] = yh(b[c]);
        e.parentNode.removeChild(e);
        return d;
    }
    function rk(a) {
        var c = ba.createElementNS("http://www.w3.org/2000/svg", "text");
        c.textContent = a;
        return c;
    }
    function sk(a, c) {
        if (!tk) {
            uk || (uk = Zv());
            var b = uk,
                d =
                    "fontSize" === b.roundTarget
                        ? function (a) {
                              return Math.round(a / b.roundStep) * b.roundStep;
                          }
                        : function (b) {
                              return b;
                          };
            tk = function (a, c) {
                c = d(c);
                a *= c / 100;
                return "width" === b.roundTarget && (!b.roundThreshold || c < b.roundThreshold) ? Math.round(a / b.roundStep) * b.roundStep : a;
            };
        }
        return tk(a, c);
    }
    function Zv() {
        var a = 1,
            c = 0,
            b = ba.createElementNS("http://www.w3.org/2000/svg", "svg"),
            d = ba.createDocumentFragment(),
            e = function (b) {
                var a = rk("m");
                a.setAttribute("font-size", b + "px");
                d.appendChild(a);
            };
        b.setAttribute("text-rendering", "geometricPrecision");
        e(100);
        for (var f = [100], g = 10; 11 >= g; ) e(g), f.push(g), (g += 0.25);
        for (g = 13; 20 > g; ) e(g), f.push(g), (g += 1);
        b.appendChild(d);
        ba.body.appendChild(b);
        e = !0;
        var h = !1;
        h = 0;
        g = b.childNodes;
        for (var k = [], l = [], m = yh(g[0]), n = 1; 6 > n; n++) {
            var p = yh(g[n]),
                q = (f[n] * m) / 100,
                r = k.length ? +!(0.01 >= Math.abs(k[k.length - 1] - p)) : 0;
            0.1 >= Math.abs(q - p) || (e = !1);
            0.01 >= Math.abs(q - p) && h++;
            k.push(p);
            l.push(r);
        }
        h = 2 <= h;
        if (!e)
            if (h) {
                var u = "fontSize";
                f = l.join("");
                "01010" === f ? (a = 0.5) : "00100" === f && (a = 1);
            } else
                for (c = f[6], u = "width", a = 1, n = 6; 13 > n; n++)
                    if (((p = yh(g[n])), (q = (f[n] * m) / 100), 0.1 >= Math.abs(q - p))) {
                        c = f[n];
                        break;
                    }
        b.parentNode.removeChild(b);
        return { roundTarget: u, roundStep: a, roundThreshold: c };
    }
    function ke(a) {
        a = {
            chartType: {
                type: "enum",
                members: {
                    vertical: { isDefault: !0, chain: "enum_seriesType" },
                    horizontal: { chain: "enum_seriesType" },
                    pie: { chain: "enum_pieType", enumAttributes: { seriesLayout: "visualShape", behavior: "colorByPoint,labelConnector,noNameGrouping" } },
                    gauge: { chain: "enum_gaugeType", enumAttributes: { seriesLayout: "visualShape", behavior: "colorByPoint,noNameGrouping,snapToZero" } },
                    radar: { chain: "enum_radarType", enumAttributes: { seriesLayout: "visualShape" } },
                    funnel: { chain: "enum_funnelShapeType", enumAttributes: { seriesLayout: "visualShape", funnelNozzleType: "nozzle", behavior: "colorByPoint,labelConnector,noNameGrouping" } },
                    pyramid: { chain: "enum_funnelOrientationType", enumAttributes: { funnelShapeType: "square", seriesLayout: "visualShape", behavior: "colorByPoint,labelConnector,noNameGrouping" } },
                    cone: { chain: "enum_funnelOrientationType", enumAttributes: { funnelShapeType: "round", seriesLayout: "visualShape", behavior: "colorByPoint,labelConnector,noNameGrouping" } },
                    heatmap: { chain: "enum_columnType", enumAttributes: { behavior: "colorByPoint" } },
                    calendar: { chain: "enum_calendarType", enumAttributes: {} },
                    treemap: { chain: "enum_treemapMode", enumAttributes: { behavior: "noNameGrouping,tree" } },
                    map: { chain: "enum_columnType", enumAttributes: { behavior: "noNameGrouping" } },
                    organization: { chain: "enum_organizationType", enumAttributes: { behavior: "annotation,tree,noNameGrouping,noLegend" } },
                    venn: { chain: "enum_vennType", enumAttributes: { seriesLayout: "visualShape", behavior: "colorByPoint,noLegend" } },
                },
                terminateAt: "enum_seriesType",
            },
            treemapMode: { members: { squarify: { isDefault: !0, chain: "enum_treemapDirection" }, sliceanddice: { chain: "enum_treemapDirection" }, stripes: { chain: "enum_treemapDirection" } } },
            treemapDirection: { members: { horizontal: { isDefault: !0, chain: "enum_columnType" }, vertical: { chain: "enum_columnType" } } },
            radarType: { type: "enum", members: { auto: { isDefault: !0, chain: "enum_seriesType" }, polar: { chain: "enum_seriesType" }, spider: { chain: "enum_seriesType" } } },
            gaugeType: { type: "enum", members: { circular: { isDefault: !0, chain: "enum_circularGaugeType" }, linear: { chain: "enum_linearGaugeType" } } },
            linearGaugeType: { type: "enum", members: { vertical: { isDefault: !0, chain: "enum_seriesType" }, horizontal: { chain: "enum_seriesType" } } },
            seriesType: {
                type: "enum",
                members: {
                    column: { chain: "enum_columnType", enumAttributes: { behavior: "snapToZero,clusters,drawRect" } },
                    line: { isDefault: !0, chain: "enum_lineSeriesType", enumAttributes: { behavior: "drawMarker,drawLine" } },
                    area: { chain: "enum_areaShadingType", enumAttributes: { behavior: "drawMarker,drawLine,drawArea,snapToZero" } },
                    marker: { enumAttributes: { behavior: "drawMarker" } },
                    bubble: { chain: "enum_bubbleSizingType", enumAttributes: { behavior: "" } },
                    ohlc: { enumAttributes: { behavior: "clusters" } },
                    candlestick: { chain: "enum_columnType", enumAttributes: { behavior: "clusters,drawRect" } },
                    map: { chain: "enum_columnType", enumAttributes: { behavior: "varyPalette" } },
                    heatmap: { chain: "enum_columnType", enumAttributes: {} },
                    calendar: { chain: "enum_calendarType", enumAttributes: {} },
                    variwide: { chain: "enum_variwideType", enumAttributes: { behavior: "snapToZero,clusters,drawRect" } },
                },
            },
            bubbleSizingType: { type: "enum", members: { area: { isDefault: !0 }, width: {} } },
            areaShadingType: { type: "enum", members: { subtle: { isDefault: !0, chain: "enum_lineSeriesType" }, none: { chain: "enum_lineSeriesType" } } },
            lineSeriesType: { type: "enum", members: { normal: { isDefault: !0 }, spline: {}, step: {} } },
            circularGaugeType: { type: "enum", members: { clip: { isDefault: !0, chain: "enum_seriesType" }, circle: { chain: "enum_seriesType" }, arc: { chain: "enum_seriesType" } } },
            columnType: { type: "enum", members: { subtle: { isDefault: !0 }, solid: {}, aqua: {}, rounded: {}, roundCaps: {}, cushion: {} } },
            pieType: { type: "enum", members: { normal: { isDefault: !0 }, donut: {} } },
            vennType: { type: "enum", members: { normal: { isDefault: !0 }, colorbypoint: {} } },
            funnelOrientationType: { type: "enum", members: { normal: { isDefault: !0 }, inverted: {} } },
            funnelShapeType: { type: "enum", members: { round: { isDefault: !0, chain: "enum_funnelOrientationType" }, square: { chain: "enum_funnelOrientationType" } } },
            organizationType: { type: "enum", members: { down: { isDefault: !0 }, left: {}, up: {}, right: {} } },
            calendarType: {
                type: "enum",
                members: {
                    auto: { isDefault: !0, chain: "enum_columnType" },
                    decade: { chain: "enum_columnType" },
                    years: { chain: "enum_columnType" },
                    year: { chain: "enum_columnType" },
                    quarter: { chain: "enum_columnType" },
                    month: { chain: "enum_columnType" },
                    week30min: { chain: "enum_columnType" },
                    week: { chain: "enum_columnType" },
                    dayminutes: { chain: "enum_columnType" },
                    dayhours: { chain: "enum_columnType" },
                    day30min: { chain: "enum_columnType" },
                    day15min: { chain: "enum_columnType" },
                    day5min: { chain: "enum_columnType" },
                    day: { chain: "enum_columnType" },
                    hourseconds: { chain: "enum_columnType" },
                    hour30sec: { chain: "enum_columnType" },
                    hour10sec: { chain: "enum_columnType" },
                    hourminutes: { chain: "enum_columnType" },
                    hour: { chain: "enum_columnType" },
                    minute: { chain: "enum_columnType" },
                },
            },
            variwideType: { type: "enum", members: { subtle: { isDefault: !0 }, solid: {}, aqua: {}, rounded: {}, roundCaps: {}, cushion: {} } },
            nanoChartTypes: { type: "enum", members: "sparkline|arealine|bar|bullet|column|progress|pie|heatmap|scale|chart|barfull" },
            markerTypes: { type: "enum", members: "none|diamond|circle|arrow-down|arrow-up|five-point-star|four-point-star|merger|split-reverse|seven-point-star|six-point-star|spinoff|split|square|triangle|triangle-down" },
            emptyPointMode: { type: "enum", members: "default|ignore|treatAsZero" },
            projection: { type: "enum", members: "none|mercator|lambertConformalConic|lambertAzimuthalEqualArea|stereographic|orthographic" },
            scaleBreakType: { type: "enum", updated: "2.7", members: { zigzag: { isDefault: !0 }, gap: "", line: "", hidden: "" } },
            scale: { type: "enum", updated: "2.6", members: { auto: { isDefault: !0 }, time: "", stacked: "", stackedFull: "", stackedLogarithmic: {}, logarithmic: {}, variwide: {} } },
            rangeMode: { type: "enum", updated: "2.8", members: { auto: { isDefault: !0 }, curly: "", measure: "" } },
            colors: {
                type: "enum",
                caseInsensitive: !0,
                members: {
                    aliceblue: "#f0f8ff",
                    antiquewhite: "#faebd7",
                    aqua: "#00ffff",
                    aquamarine: "#7fffd4",
                    azure: "#f0ffff",
                    beige: "#f5f5dc",
                    bisque: "#ffe4c4",
                    black: "#000000",
                    blanchedalmond: "#ffebcd",
                    blue: "#0000ff",
                    blueviolet: "#8a2be2",
                    brown: "#a52a2a",
                    burlywood: "#deb887",
                    cadetblue: "#5f9ea0",
                    chartreuse: "#7fff00",
                    chocolate: "#d2691e",
                    coral: "#ff7f50",
                    cornflowerblue: "#6495ed",
                    cornsilk: "#fff8dc",
                    crimson: "#dc143c",
                    cyan: "#00ffff",
                    darkblue: "#00008b",
                    darkcyan: "#008b8b",
                    darkgoldenrod: "#b8860b",
                    darkgray: "#a9a9a9",
                    darkgreen: "#006400",
                    darkkhaki: "#bdb76b",
                    darkmagenta: "#8b008b",
                    darkolivegreen: "#556b2f",
                    darkorange: "#ff8c00",
                    darkorchid: "#9932cc",
                    darkred: "#8b0000",
                    darksalmon: "#e9967a",
                    darkseagreen: "#8fbc8f",
                    darkslateblue: "#483d8b",
                    darkslategray: "#2f4f4f",
                    darkturquoise: "#00ced1",
                    darkviolet: "#9400d3",
                    deeppink: "#ff1493",
                    deepskyblue: "#00bfff",
                    dimgray: "#696969",
                    dodgerblue: "#1e90ff",
                    firebrick: "#b22222",
                    floralwhite: "#fffaf0",
                    forestgreen: "#228b22",
                    fuchsia: "#ff00ff",
                    gainsboro: "#dcdcdc",
                    ghostwhite: "#f8f8ff",
                    gold: "#ffd700",
                    goldenrod: "#daa520",
                    gray: "#808080",
                    green: "#008000",
                    greenyellow: "#adff2f",
                    honeydew: "#f0fff0",
                    hotpink: "#ff69b4",
                    "indianred ": "#cd5c5c",
                    "indigo ": "#4b0082",
                    ivory: "#fffff0",
                    khaki: "#f0e68c",
                    lavender: "#e6e6fa",
                    lavenderblush: "#fff0f5",
                    lawngreen: "#7cfc00",
                    lemonchiffon: "#fffacd",
                    lightblue: "#add8e6",
                    lightcoral: "#f08080",
                    lightcyan: "#e0ffff",
                    lightgoldenrodyellow: "#fafad2",
                    lightgray: "#d3d3d3",
                    lightgreen: "#90ee90",
                    lightpink: "#ffb6c1",
                    lightsalmon: "#ffa07a",
                    lightseagreen: "#20b2aa",
                    lightskyblue: "#87cefa",
                    lightslategray: "#778899",
                    lightsteelblue: "#b0c4de",
                    lightyellow: "#ffffe0",
                    lime: "#00ff00",
                    limegreen: "#32cd32",
                    linen: "#faf0e6",
                    magenta: "#ff00ff",
                    maroon: "#800000",
                    mediumaquamarine: "#66cdaa",
                    mediumblue: "#0000cd",
                    mediumorchid: "#ba55d3",
                    mediumpurple: "#9370d8",
                    mediumseagreen: "#3cb371",
                    mediumslateblue: "#7b68ee",
                    mediumspringgreen: "#00fa9a",
                    mediumturquoise: "#48d1cc",
                    mediumvioletred: "#c71585",
                    midnightblue: "#191970",
                    mintcream: "#f5fffa",
                    mistyrose: "#ffe4e1",
                    moccasin: "#ffe4b5",
                    navajowhite: "#ffdead",
                    navy: "#000080",
                    oldlace: "#fdf5e6",
                    olive: "#808000",
                    olivedrab: "#6b8e23",
                    orange: "#ffa500",
                    orangered: "#ff4500",
                    orchid: "#da70d6",
                    palegoldenrod: "#eee8aa",
                    palegreen: "#98fb98",
                    paleturquoise: "#afeeee",
                    palevioletred: "#d87093",
                    papayawhip: "#ffefd5",
                    peachpuff: "#ffdab9",
                    peru: "#cd853f",
                    pink: "#ffc0cb",
                    plum: "#dda0dd",
                    powderblue: "#b0e0e6",
                    purple: "#800080",
                    red: "#ff0000",
                    rosybrown: "#bc8f8f",
                    royalblue: "#4169e1",
                    saddlebrown: "#8b4513",
                    salmon: "#fa8072",
                    sandybrown: "#f4a460",
                    seagreen: "#2e8b57",
                    seashell: "#fff5ee",
                    sienna: "#a0522d",
                    silver: "#c0c0c0",
                    skyblue: "#87ceeb",
                    slateblue: "#6a5acd",
                    slategray: "#708090",
                    snow: "#fffafa",
                    springgreen: "#00ff7f",
                    steelblue: "#4682b4",
                    tan: "#d2b48c",
                    teal: "#008080",
                    thistle: "#d8bfd8",
                    tomato: "#ff6347",
                    turquoise: "#40e0d0",
                    violet: "#ee82ee",
                    wheat: "#f5deb3",
                    white: "#ffffff",
                    whitesmoke: "#f5f5f5",
                    yellow: "#ffff00",
                    yellowgreen: "#9acd32",
                },
            },
            palette: {
                type: "enum",
                members:
                    "default|spreadsheet|oceanMidtones|mutedRainbow|pastelContrast|rainforest|random|autumn|bright|lavender|midTones|mixed|pastel|poppies|spring|warmEarth|waterMeadow|darkRainbow|midRange|vividDark|fiveColor1|fiveColor2|fiveColor3|fiveColor4|fiveColor5|fiveColor6|fiveColor7|fiveColor8|fiveColor9|fiveColor10|fiveColor11|fiveColor12|fiveColor13|fiveColor14|fiveColor15|fiveColor16|fiveColor17|fiveColor18|fiveColor19|fiveColor20|fiveColor21|fiveColor22|fiveColor23|fiveColor24|fiveColor25|fiveColor26|fiveColor27|fiveColor28|fiveColor29|fiveColor30|fiveColor31|fiveColor32|fiveColor33|fiveColor34|fiveColor35|fiveColor36|fiveColor37|fiveColor38|fiveColor39|fiveColor40|fiveColor41|fiveColor42|fiveColor43|fiveColor44|fiveColor45|fiveColor46|colorVision1|colorVision2|colorVision3|colorVision4",
            },
            hatchStyle: {
                type: "enum",
                members:
                    "none|horizontal|vertical|light-downward-diagonal|light-upward-diagonal|percent05|percent10|percent20|percent25|dashed-downward-diagonal|dashed-upward-diagonal|dashed-horizontal|dashed-vertical|forward-diagonal|backward-diagonal|large-horizontal|dark-downward-diagonal|dark-upward-diagonal|dark-horizontal|dark-vertical|wide-downward-diagonal|wide-upward-diagonal|narrow-horizontal|narrow-vertical|small-grid|large-grid|dotted-grid|cross-diagonal|outlined-diamond|dotted|dotted-diamond|solid-diamond|large-checker-board|small-checker-board|wave|zig-zag|diagonal-brick|horizontal-brick|weave",
            },
            cultures: {
                type: "enum",
                members:
                    "af|af-ZA|ar|ar-AE|ar-BH|ar-DZ|ar-EG|ar-IQ|ar-JO|ar-KW|ar-LB|ar-LY|ar-MA|ar-OM|ar-QA|ar-SA|ar-SY|ar-TN|ar-YE|az|az-Cyrl-AZ|az-Latn-AZ|be|be-BY|bg|bg-BG|bs-Latn-BA|ca|ca-ES|cs|cs-CZ|cy-GB|da|da-DK|de|de-AT|de-DE|de-CH|de-LI|de-LU|dv|dv-MV|el|el-GR|en|en-029|en-AU|en-BZ|en-CA|en-GB|en-IE|en-JM|en-NZ|en-PH|en-TT|en-US|en-ZA|en-ZW|es|es-AR|es-BO|es-CL|es-CO|es-CR|es-DO|es-EC|es-ES|es-GT|es-HN|es-MX|es-NI|es-PA|es-PE|es-PR|es-PY|es-SV|es-UY|es-VE|et|et-EE|eu|eu-ES|fa|fa-IR|fi|fi-FI|fo|fo-FO|fr|fr-BE|fr-CA|fr-FR|fr-CH|fr-LU|fr-MC|gl|gl-ES|gu|gu-IN|he|he-IL|hi|hi-IN|hr|hr-BA|hr-HR|hu|hu-HU|hy|hy-AM|id|id-ID|is|is-IS|it|it-CH|it-IT|ja|ja-JP|ka|ka-GE|kk|kk-KZ|kn|kn-IN|ko|kok|kok-IN|ko-KR|ky|ky-KG|lt|lt-LT|lv|lv-LV|mi-NZ|mk|mk-MK|mn|mn-MN|mr|mr-IN|ms|ms-BN|ms-MY|mt-MT|nb-NO|nl|nl-BE|nl-NL|nn-NO|no|ns-ZA|pa|pa-IN|pl|pl-PL|pt|pt-BR|pt-PT|quz-BO|quz-EC|quz-PE|ro|ro-RO|ru|ru-RU|sa|sa-IN|se-FI|se-NO|se-SE|sk|sk-SK|sl|sl-SI|sma-NO|sma-SE|smj-NO|smj-SE|smn-FI|sms-FI|sq|sq-AL|sr|sr-Cyrl-BA|sr-Cyrl-CS|sr-Latn-BA|sr-Latn-CS|sv|sv-FI|sv-SE|sw|sw-KE|syr|syr-SY|ta|ta-IN|te|te-IN|th|th-TH|tn-ZA|tr|tr-TR|tt|tt-RU|uk|uk-UA|ur|ur-PK|uz|uz-Cyrl-UZ|uz-Latn-UZ|vi|vi-VN|xh-ZA|zh-CN|zh-HK|zh-CHS|zh-CHT|zh-MO|zh-SG|zh-TW|zu-ZA",
            },
            timeUnit: { type: "enum", members: "second|minute|hour|day|week|month|year" },
            zoomAxis: { type: "enum", members: "x|y|xy|none" },
            alignHorizontal: { type: "enum", members: "center|left|right" },
            alignVertical: { type: "enum", members: "top|middle|bottom" },
            directionalLayout: { type: "enum", members: "auto|vertical|horizontal" },
            orientation: { type: "enum", members: "none|left|right|top|bottom|topLeft|topRight|bottomRight|bottomLeft|opposite" },
            titlePosition: { type: "enum", members: "left|center|right|full" },
            placement: { type: "enum", members: "auto|inside|outside" },
            uiItemType: { type: "enum", updated: "2.7", members: { auto: { isDefault: !0 }, option: "", checkbox: "", toggle: "", radio: "", select: "", selectMultiple: "", range: "", file: "" } },
            pointSelectionMode: { type: "enum", members: "auto|single|multiple" },
            hoverAction: { type: "enum", members: "highlightPoint|highlightSeries|highlightPointGroup" },
            fontWeight: { type: "enum", members: "normal|bold" },
            fontStyle: { type: "enum", members: "normal|italic" },
            fontFamily: {
                type: "enum",
                caseInsensitive: !0,
                members:
                    "Tahoma|Arial|Verdana|Helvetica|Trebuchet MS|Arial Black|Comic Sans MS|Courier New|Georgia|Impact|Lucida Console|Lucida Sans Unicode|Lucida Grande|Geneva|Times New Roman|MS Sans Serif|MS Serif|Arial, Helvetica, sans-serif|Arial Black, Gadget, sans-serif|Comic Sans MS, cursive|Courier New, monospace|Georgia, serif|Impact, Charcoal, sans-serif|Lucida Console, Monaco, monospace|Lucida Sans Unicode, Lucida Grande, sans-serif|Palatino Linotype, Book Antiqua, Palatino, serif|Tahoma, Geneva, sans-serif|Times New Roman, Times, serif|Trebuchet MS, sans-serif|Verdana, Geneva, sans-serif|MS Sans Serif, Geneva, sans-serif|MS Serif, New York, serif",
            },
            textDecoration: { type: "enum", members: "overline|line-through|underline|underline overline" },
            cursor: { type: "enum", members: "none|default|pointer|help|crosshair|wait|progress|text|n-resize|ne-resize|nw-resize|e-resize|s-resize|se-resize|sw-resize|w-resize" },
            dashStyle: { type: "enum", caseInsensitive: !0, members: "Solid|ShortDash|ShortDot|ShortDashDot|ShortDashDotDot|Dot|Dash|LongDash|DashDot|DashDotDot|LongDashDot|LongDashDotDot" },
            boxCornerType: { type: "enum", members: "square|cut|round" },
            mimeType: { type: "enum", members: "image/png|image/jpeg|application/pdf|image/svg+xml" },
            animationEasing: {
                type: "enum",
                members:
                    "easeInQuad|easeOutQuad|easeInCubic|easeOutCubic|easeInOutCubic|easeInQuart|easeOutQuart|easeInOutQuart|easeInQuint|easeOutQuint|easeInOutQuint|easeInSine|easeOutSine|easeInOutSine|easeInExpo|easeOutExpo|easeInOutExpo|easeInCirc|easeOutCirc|easeInOutCirc|easeInElastic|easeOutElastic|easeInOutElastic|easeInBack|easeOutBack|easeInOutBack|easeInBounce|easeOutBounce|easeInOutBounce",
            },
            calculation: { type: "enum", members: "sum|average|min|max" },
            funnelNozzleType: { type: "enum", members: { nozzle: { isDefault: !0 }, noNozzle: {} } },
            seriesLayout: { type: "enum", members: { XY: { isDefault: !0, chain: "enum_funnelOrientationType" }, visualShape: { chain: "enum_funnelOrientationType" } } },
        }[a];
        if ("string" === typeof a.members) {
            var c = a.members;
            c = c.split("|");
            for (var b = {}, d = 0, e = c.length; d < e; d++) b[c[d]] = "";
            a.members = b;
        }
        return a;
    }
    function ma(a, c) {
        if (a && a.pop) {
            c = c || a.kind;
            if ("rgba" === c && !Ha(a[3])) return "rgba(" + parseInt(a[0]) + "," + parseInt(a[1]) + "," + parseInt(a[2]) + "," + na(a[3], 5) + ")";
            if (2 < a.length || "rgb" === c) return "rgb(" + parseInt(a[0]) + "," + parseInt(a[1]) + "," + parseInt(a[2]) + ")";
        }
        return a;
    }
    function Dc(a, c) {
        c.kind = a;
        return c;
    }
    function bd(a, c, b) {
        function d(b, a, c) {
            0 > c && (c += 1);
            1 < c && --c;
            return c < 1 / 6 ? b + 6 * (a - b) * c : 0.5 > c ? a : c < 2 / 3 ? b + (a - b) * (2 / 3 - c) * 6 : b;
        }
        var e,
            f,
            g = 1;
        if (a && a.pop) {
            var h = G(a, 4);
            a = h[0];
            c = h[1];
            b = h[2];
            g = h[3];
            t(g) || (g = 1);
        }
        if (0 === c) h = e = f = b;
        else {
            f = 0.5 > b ? b * (1 + c) : b + c - b * c;
            var k = 2 * b - f;
            h = d(k, f, a + 1 / 3);
            e = d(k, f, a);
            f = d(k, f, a - 1 / 3);
        }
        h = Dc("rgba", zo([h, e, f, g]));
        h.hsl = [a, c, b];
        return h;
    }
    function bf(a, c, b) {
        a /= 255;
        c /= 255;
        b /= 255;
        var d = Math.max(a, c, b),
            e = Math.min(a, c, b),
            f = (d + e) / 2;
        if (d === e) var g = (e = 0);
        else {
            var h = d - e;
            e = 0.5 < f ? h / (2 - d - e) : h / (d + e);
            switch (d) {
                case a:
                    g = (c - b) / h + (c < b ? 6 : 0);
                    break;
                case c:
                    g = (b - a) / h + 2;
                    break;
                case b:
                    g = (a - c) / h + 4;
            }
            g /= 6;
        }
        return Dc("hsl", [g, e, f]);
    }
    function $v(a, c, b, d) {
        a && a.pop && ((d = G(a, 4)), (a = d[0]), (c = d[1]), (b = d[2]), (d = d[3]));
        a /= 255;
        c /= 255;
        b /= 255;
        var e = Math.max(a, c, b),
            f = Math.min(a, c, b),
            g = e - f;
        if (e === f) var h = 0;
        else {
            switch (e) {
                case a:
                    h = (c - b) / g + (c < b ? 6 : 0);
                    break;
                case c:
                    h = (b - a) / g + 2;
                    break;
                case b:
                    h = (a - c) / g + 4;
            }
            h /= 6;
        }
        return Dc("hsv", [h, 0 === e ? 0 : g / e, e, d]);
    }
    function aw(a, c, b, d) {
        a && a.pop && ((d = G(a, 4)), (a = d[0]), (c = d[1]), (b = d[2]), (d = d[3]));
        var e = Math.floor(6 * a),
            f = 6 * a - e;
        a = b * (1 - c);
        var g = b * (1 - f * c);
        c = b * (1 - (1 - f) * c);
        e = G(
            [
                [b, c, a],
                [g, b, a],
                [a, b, c],
                [a, g, b],
                [c, a, b],
                [b, a, g],
            ][e % 6],
            3
        );
        b = e[0];
        c = e[1];
        e = e[2];
        1 < b && (b = 1);
        1 < c && (c = 1);
        1 < e && (e = 1);
        return Dc("rgba", zo([b, c, e, d]));
    }
    function ca(a, c) {
        var b, d, e, f;
        if (a) {
            if ((b = a.kind)) {
                if ("rgba" === b) return a;
                if ("rgb" === b) return 4 > a.length && (a[3] = 1), (a.kind = "rgba"), a;
            }
            b = I(a);
            if ("array" === b) return (a.kind = 4 === a.length ? "rgba" : "rgb"), a;
            if ("string" === b) {
                var g = Ao[a];
                if (!g) {
                    if ("#" === a[0]) g = vk(a);
                    else if ((b = bw[a.toLowerCase()])) g = vk(b);
                    Ao[a] = g;
                }
                if (!g)
                    if ("h" === a[0]) "a" === a[3] ? (e = cf.hsla.exec(a)) : (d = cf.hsl.exec(a));
                    else {
                        var h = Bo[a];
                        !h && (h = cf.rgba.exec(a)) && ((h = [parseInt(h[1]), parseInt(h[2]), parseInt(h[3]), parseFloat(h[4])]), (Bo[a] = h));
                        if (!h) {
                            var k = cf.rgb.exec(a);
                            k || (g = vk(a)) || (f = cf.hexShort.exec(a));
                        }
                    }
            }
            b = "rgba";
            if (h) var l = h.slice(0);
            else if (g) (l = g.slice(0)), "rgb" !== c ? l.push(1) : (b = "rgb");
            else if (k) (l = [parseInt(k[1]), parseInt(k[2]), parseInt(k[3])]), "rgb" !== c ? l.push(1) : (b = "rgb");
            else if (f) (l = [17 * parseInt(f[1], 16), 17 * parseInt(f[2], 16), 17 * parseInt(f[3], 16)]), "rgb" !== c ? l.push(1) : (b = "rgb");
            else {
                if (e) var m = [parseInt(e[1]) / 360, parseInt(e[2]) / 100, parseInt(e[3]) / 100, parseFloat(e[4])];
                else d ? ((m = [parseInt(d[1]) / 360, parseInt(d[2]) / 100, parseInt(d[3]) / 100, 1]), (l = bd(m))) : (l = "transparent" === a ? [255, 255, 255, 0] : [0, 0, 0, 0]);
                m && (l = bd(m));
            }
            l.kind = b;
        }
        return l;
    }
    function ka(a, c, b, d) {
        var e = function (a) {
            return Math.round(Y(f[a], g[a], 0, 100, b));
        };
        if (a && c) {
            var f = ca(a),
                g = ca(c);
            a = e(0);
            c = e(1);
            e = e(2);
            d || (d = Y(f[3], g[3], 0, 100, b));
            e = [a, c, e, d];
            if (t(d)) return Dc(t(d) ? "rgba" : "rgb", e);
        } else {
            if (a) return a;
            if (c) return c;
        }
    }
    function zh(a) {
        var c = [];
        if ("object" === typeof a && a.stops) {
            for (var b = 0, d = a.stops.length; b < d; b++) c[b] = a.stops[b][1];
            return wk(c);
        }
        return "function" === typeof a.pop ? wk(a) : a;
    }
    function wk(a) {
        a = B(Co.apply(null, B(a, ca)), function (a) {
            return Do(a);
        });
        return ma(a);
    }
    function le(a, c, b) {
        var d = {};
        d.tweenID = b && b.id ? b.id : de(5);
        d.from = Eo(a, d.tweenID);
        d.to = Eo(c, d.tweenID);
        if (d.from.isComplex || d.to.isComplex) {
            if (d.from.isComplex)
                if (d.to.isComplex) d.stepFn = "linear" === d.from.type ? Fo(d) : Go(d);
                else
                    var e = d.to,
                        f = d.from;
            else (e = d.from), (f = d.to);
            f
                ? ((d.stepFn = "linear" === f.type ? Fo(d) : Go(d)), e && cw(e, f))
                : d.from.type !== d.to.type && ((a = zh(d.to.input)), (c = zh(d.from.input)), (a = wk([a, c])), (d.animations = [le(d.from.input, a), le(a, d.to.input)]), (d.stepFn = dw(d)));
            d.from.stops.length != d.to.stops.length &&
                ((a = d.from),
                (c = d.to),
                a.stops.length !== c.stops.length &&
                    (a.stops.length < c.stops.length && ((c = G([c, a], 2)), (a = c[0]), (c = c[1])), (e = Ho(a)), (f = Ho(c)), (b = me(e, f)), (e = me(f, e)), Io(c, b), a.stops.length !== c.stops.length && Io(a, e)));
        }
        return d.stepFn || ew(d);
    }
    function Fo(a) {
        return function (c) {
            if (1 == c) return a.to.input;
            var b = a.from.linearGradient,
                d = a.to.linearGradient;
            b = { linearGradient: [ac(b[0], d[0], c), ac(b[1], d[1], c), ac(b[2], d[2], c), ac(b[3], d[3], c)], stops: [] };
            Jo(a, b.stops, c);
            b.tweenId = a.tweenID;
            return b;
        };
    }
    function Go(a) {
        return function (c) {
            if (1 == c) return a.to.input;
            var b = a.from.radialGradient,
                d = a.to.radialGradient,
                e = { radialGradient: { cx: ac(b.cx, d.cx, c), cy: ac(b.cy, d.cy, c), r: ac(b.r, d.r, c) }, stops: [] };
            t(d.fx) && (e.radialGradient.fx = ac(z(b.fx, 0.5), d.fx, c));
            t(d.fy) && (e.radialGradient.fx = ac(z(b.fy, 0.5), d.fy, c));
            Jo(a, e.stops, c);
            e.tweenId = a.tweenID;
            return e;
        };
    }
    function Jo(a, c, b) {
        for (
            var d = function (b, a) {
                    "rgb" === b.kind && ((a = t(a) ? a : 1), 3 < b.length ? (b[3] = a) : b.push(a), (b.kind = "rgba"));
                    return b;
                },
                e = 0,
                f = a.from.stops.length;
            e < f;
            e++
        ) {
            var g = a.from.stops[e],
                h = a.to.stops[e],
                k = ka(d(g.color, g.opacity), d(h.color, h.opacity), 100 * b),
                l = void 0;
            "rgba" === k.kind && (l = "rgb");
            c.push([100 * ac(g.x, h.x, b) + "%", ma(k, l), l ? k[3] : ac(g.opacity, h.opacity, b)]);
        }
    }
    function dw(a) {
        return function (c) {
            if (1 == c) return a.to.input;
            c = Y(0, a.animations.length, 0, 1, c);
            return a.animations[Math.floor(c)](c % 1);
        };
    }
    function ew(a) {
        return function (c) {
            return 1 == c ? a.to.input : ma(ka(a.from.stops[0].color, a.to.stops[0].color, 100 * c));
        };
    }
    function Eo(a, c) {
        var b = { input: a, stops: [], id: c };
        c = function (a, c, d) {
            a = ca(a, "rgb");
            "rgba" === a.kind && ((a.kind = "rgb"), (d = a[3]));
            b.stops.push({ color: a, x: c, opacity: d });
        };
        if ("string" == I(a)) c(a, 0, 1), (b.type = "color");
        else {
            for (var d = 0, e = a.stops.length; d < e; d++) {
                var f = a.stops[d],
                    g = 1;
                "string" == I(f[0]) && -1 < f[0].indexOf("%") && (g = 100);
                c(f[1], parseFloat(f[0]) / g, f[2]);
            }
            b.isComplex = !0;
            a.linearGradient ? ((b.type = "linear"), (b.linearGradient = Ko(b, a.linearGradient))) : a.radialGradient && ((b.type = "radial"), (b.radialGradient = Ko(b, a.radialGradient)));
        }
        return b;
    }
    function Ko(a, c) {
        var b = "radial" == a.type ? {} : [];
        w(c, function (a, c) {
            var d = ["x1", "y1", "x2", "y2"].indexOf(c);
            a = "number" === I(a) ? a : parseFloat(a) / (-1 < a.indexOf("%") ? 100 : 1);
            b[-1 === d ? c : d] = a;
        });
        return b;
    }
    function Ho(a) {
        for (var c = [], b = 0, d = a.stops.length; b < d; b++) c.push(a.stops[b].x);
        return c;
    }
    function Io(a, c) {
        for (var b = 0, d = c.length; b < d; b++) {
            var e = a,
                f = c[b],
                g = e.stops;
            if (1 < g.length)
                for (var h = 1, k = g.length; h < k; h++) {
                    var l = g[h],
                        m = g[h - 1];
                    if (l.x > f && m.x < f) {
                        var n = Y(0, 1, m.x, l.x, f);
                        l = { color: ka(m.color, l.color, 100 * n), x: f, opacity: ac(m.opacity, l.opacity, n) };
                        e.stops.splice(h, 0, l);
                    }
                }
        }
    }
    function cw(a, c) {
        if ("color" !== a.type) throw "matchStops called on a " + a.type;
        var b = a.stops[0].color,
            d = t(a.stops[0].opacity) ? a.stops[0].opacity : 1;
        a.stops = c.stops.slice(0);
        "linear" == c.type && (a.linearGradient = qa(c.linearGradient));
        "radial" == c.type && (a.radialGradient = qa(c.radialGradient));
        w(a.stops, function (e, f) {
            a.stops[f] = { x: c.stops[f].x, color: b, opacity: d };
        });
    }
    function fw(a, c, b) {
        var d = {};
        c = c.meta;
        var e = a && a.meta && a.meta.pattern;
        d.pattern = c.pattern;
        d.colorAnim = le(e ? a.meta.color : c.color, c.color, b);
        d.bgAnim = le(e ? a.meta.backgroundColor : a, c.backgroundColor, b);
        return function (b) {
            return { pattern: d.pattern, color: d.colorAnim(b), backgroundColor: d.bgAnim(b) };
        };
    }
    function Ec(a) {
        if (a) return a.pop ? (2 === a.length && a[1].toFixed ? V(Ec(a[0]), 1 - a[1]) : !1) : a;
    }
    function gw(a) {
        a = ca(a);
        return "#" + xk(a[0], a[1], a[2]);
    }
    function xk(a, c, b) {
        return Rj(ua(a, 0, 255)) + Rj(ua(c, 0, 255)) + Rj(ua(b, 0, 255));
    }
    function yk(a) {
        if (a) {
            var c = a.pop ? a : ca(a);
            a = "#" + xk(c[0], c[1], c[2]);
            c = parseFloat(z(c[3], 1));
            return { hex: a, opacity: c };
        }
        return { hex: "none", opacity: 1 };
    }
    function Lo(a) {
        a = ca(a);
        var c = G(Ah(a), 3);
        a = c[0];
        var b = c[1];
        c = c[2];
        return 0.2126 * (0.03928 >= a ? a / 12.92 : Math.pow((a + 0.055) / 1.055, 2.4)) + 0.7152 * (0.03928 >= b ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4)) + 0.0722 * (0.03928 >= c ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4));
    }
    function df(a) {
        a = ca(a);
        return Mo(Ah(a));
    }
    function zk(a, c) {
        a = ca(a);
        var b = No(Ah(a));
        b[0] = c;
        c = Oo(b);
        a[0] = 255 * c[0];
        a[1] = 255 * c[1];
        a[2] = 255 * c[2];
        return a;
    }
    function Ak(a, c) {
        var b = df(a);
        return zk(a, ua(b + c, 0, 1));
    }
    function cd(a, c) {
        c = ua(c, -100, 100);
        var b = function (b) {
                return Math.floor(ua(b, 0, 255));
            },
            d = function (a) {
                return b(f[a] + (255 - f[a]) * e);
            },
            e = c / 100,
            f = ca(a);
        0 < c ? ((a = d(0)), (c = d(1)), (d = d(2))) : ((e *= -1), (e = 1 - e), (a = b(f[0] * e)), (c = b(f[1] * e)), (d = b(f[2] * e)));
        return Dc("rgba", [a, c, d, f[3]]);
    }
    function ne(a, c, b) {
        b = 0 < b ? "+" + b : b;
        return gg(a, "hsv(" + { h: b + ",,", s: "," + b + ",", v: ",," + b }[c] + ")");
    }
    function Bh(a) {
        a = ca(a);
        var c = bf(a[0], a[1], a[2]);
        c[2] += (0.007 * Math.pow(100 * c[2] - 100, 2)) / 200;
        c = bd(c[0], c[1], c[2]);
        c[3] = a[3];
        return c;
    }
    function oe(a, c) {
        void 0 === c && (c = 0.7);
        a = ca(a);
        var b = bf(a[0], a[1], a[2]);
        b[2] += Math.pow(b[2] - 1, 2) * c;
        c = bd(b[0], b[1], b[2]);
        c[3] = a[3];
        return c;
    }
    function pe(a) {
        a = ca(a);
        var c = bf(a[0], a[1], a[2]);
        c[2] -= (0.007 * Math.pow(100 * c[2], 2)) / 100;
        c = bd(c);
        c[3] = a[3];
        return c;
    }
    function Bd(a, c) {
        a = ca(a);
        1 < c && (c = Y(0, 1, 0, 255, c));
        return [a[0], a[1], a[2], c];
    }
    function V(a, c) {
        if (!c || !c.toFixed) return a;
        1 >= c && (c *= 100);
        a = ca(a);
        return Dc("rgba", [a[0], a[1], a[2], ((100 - c) / 100) * a[3]]);
    }
    function Fc(a, c) {
        return c && c.toFixed ? (1 >= c && (c *= 100), (a = ca(a)), Dc("rgba", [a[0], a[1], a[2], 1 - c / 100])) : a;
    }
    function Po(a, c) {
        return hg(a, function (b) {
            return Fc(b, c);
        });
    }
    function Ja(a) {
        var c = yb(((a + 360) % 360) + 180),
            b = Math.cos(Math.abs((0.5 * (Math.floor((c / Math.PI) * 2) + 2) + 0.25) * Math.PI - c)) * Math.sqrt(2);
        a = b * Math.cos(c);
        var d = b * Math.sin(c);
        c = 0 > d ? 1 : 0;
        b = 0 <= a ? a : a + 1;
        d = 0 <= d ? d : d + 1;
        return [(0 > a ? 1 : 0).toFixed(4), c.toFixed(4), b.toFixed(4), d.toFixed(4)];
    }
    function jb(a, c, b, d) {
        c.length && c[0][1].pop && w(c, Bk);
        d && (a.hash = d);
        return { linearGradient: a, stops: c };
    }
    function Bk(a) {
        var c = yk(a[1]);
        a[1] = c.hex;
        a[2] = c.opacity;
        return a;
    }
    function Qo(a, c, b, d) {
        var e = c.length,
            f = jb(Ja(a), []);
        for (a = 0; a < e; a++) {
            var g = ca(Ec(b[a]) || b[a]),
                h = ma(g);
            f.stops.push([c[a] / 100, gw(h), g[3]]);
        }
        f.linearGradient.hash = d || "";
        return f;
    }
    function ig(a, c, b, d) {
        void 0 === c && (c = [0, 0]);
        void 0 === b && (b = 2);
        c = { cx: 0.5 + 2 * c[0], cy: 0.5 + 2 * c[1], r: 2.75 - b };
        b = ca(a);
        a = oe(b);
        b = pe(b);
        a = [
            ["0%", a],
            ["100%", b],
        ];
        a.length && a[0][1].pop && w(a, Bk);
        return { radialGradient: c, stops: a };
    }
    function jg(a, c, b, d) {
        void 0 === c && (c = !1);
        void 0 === b && (b = !1);
        void 0 === d && (d = !1);
        var e = ["aqua", a, c, b, d].join(""),
            f = 0;
        if ("object" === typeof c && null !== c)
            var g = !0,
                h = c;
        else {
            f = c ? 90 : 0;
            var k = Ja(f);
            h = c ? 0 : 90;
        }
        a = ca(a);
        b && ((k = Ja(f + 180)), (h = 0));
        var l = d ? ka(pe(a), "#ffffff", 10) : pe(a),
            m = d ? ka(Bh(a), "#ffffff", 10) : oe(a);
        b = ka(l, m, 0.8, a[3]);
        f = ka(l, m, 40, a[3]);
        var n = ka(l, "#fefefe", 70.5, a[3]),
            p = ka(l, b, 50, a[3]);
        p = ka(p, "#fefefe", 39.2, a[3]);
        l = ka(l, b, 60, a[3]);
        l = ka(l, "#fefefe", 39.2, a[3]);
        var q = ka(b, "#fefefe", 39.2, a[3]);
        d && ((m = ka(m, "#f7ffe0", 60, 1)), (f = ka(f, "#f7ffe0", 40, 1)));
        d = [
            ["0%", n],
            ["25%", p],
            ["30%", l],
            ["49.99%", q],
            ["50%", b],
            ["70%", f],
            ["100%", m],
        ];
        return g
            ? ((c = c.gradientDistance), 25 > c ? ((d[3][0] = "47%"), (d[4][0] = "53%")) : 50 > c ? ((d[3][0] = "48%"), (d[4][0] = "52%")) : ((d[3][0] = "49.5%"), (d[4][0] = "50.5%")), jb(k, d, [h, "100%", a[3], a[3]]))
            : jb(k, d, [h, "100%", a[3], a[3]], e);
    }
    function ef(a, c, b, d) {
        void 0 === c && (c = !1);
        void 0 === b && (b = !1);
        void 0 === d && (d = !1);
        var e = ["rounded", a, c, b, d].join(""),
            f = 0;
        if ("object" === typeof c && null !== c) var g = !0;
        else {
            f = c ? 90 : 0;
            var h = Ja(f);
            c = c ? 0 : 90;
        }
        a = ca(a);
        b && ((h = Ja(f + 180)), (c = 0));
        b = d ? ka(pe(a), "#ffffff", 5) : pe(a);
        f = d ? ka(Bh(a), "#ffffff", 50) : oe(a);
        var k = ka(b, "#fefefe", 25, a[3]),
            l = ka(b, f, 18.75, a[3]),
            m = ka(l, "#fefefe", 62.745, a[3]);
        l = ka(l, "#fefefe", 54.90196, a[3]);
        var n = ka(b, f, 31.25, a[3]);
        a = ka(n, "#fefefe", 11.764705, a[3]);
        var p = b;
        g && ((p = k = m), (b = f));
        d && ((b = ka(b, "#f7ffe0", 50, 1)), (p = ka(p, "#f7ffe0", 60, 1)));
        d = [
            ["0%", p],
            ["5%", k],
            ["20%", m],
            ["20%", l],
            ["30%", a],
            ["30%", n],
            ["85%", f],
            ["100%", b],
        ];
        return g ? jb(h, d) : jb(h, d, [c, "100%", 1, 1], e);
    }
    function Ck(a, c, b, d) {
        void 0 === c && (c = !1);
        void 0 === b && (b = !1);
        void 0 === d && (d = !1);
        var e = c ? Ja(90) : Ja(0),
            f = c ? 0 : 90;
        c = "subtl" + a + c + b;
        var g = 0.03,
            h = (a = ca(a)),
            k = df(h),
            l = a[3];
        b && ((e = Ja(180)), (f = 0));
        b = gg;
        a = Ch("hsv(,,+" + g + ")");
        var m = Ch("hsv(,,-" + g + ")");
        g = Ch("hsv(,,-" + 2 * g + ")");
        var n = a(h),
            p = m(h);
        a = g(h);
        n === h && ((a = "#" + xk(p[0], p[1], p[2])), (n = m(a)), (a = g(a)));
        d && (0.85 < k ? ((g = 1.4 * -(k - 0.8)), (n = b(n, "hsv(,," + (0 > g ? "-" : "+") + Math.abs(g) + ")"))) : ((h = ka(h, "#f7ffe0", 20, 1)), (n = ka(n, "#f7ffe0", 50, 1)), (a = ka(a, "#f7ffe0", 70, 1))));
        d = [
            ["0%", Fc(n, 1 - l)],
            ["50%", Fc(ma(h), 1 - l)],
            ["90%", Fc(p, 1 - l)],
            ["100%", Fc(a, 1 - l)],
        ];
        return jb(e, d, [f, "100%", h[3], h[3]], c);
    }
    function Dk(a, c, b, d) {
        void 0 === c && (c = !1);
        void 0 === b && (b = !1);
        void 0 === d && (d = !1);
        var e = c ? Ja(90) : Ja(0);
        c = c ? 0 : 90;
        var f = "squ" + a + b + d,
            g = (a = ca(a));
        a = a[3];
        b && ((e = Ja(180)), (c = 0));
        b = ka(g, d ? "white" : "black", 20);
        b = [
            ["0%", Fc(b, 1 - a)],
            ["49.99%", Fc(b, 1 - a)],
            ["50%", Fc(g, 1 - a)],
            ["100%", Fc(g, 1 - a)],
        ];
        return jb(e, b, [c, "100%", g[3], g[3]], f);
    }
    function hg(a, c, b) {
        void 0 === b && (b = ["val"]);
        for (var d, e = 0, f = 0, g = b.length; f < g; f++)
            if ("val" === b[f]) {
                e = f;
                break;
            }
        a.pop && a.kind && (a = ma(a));
        var h = [];
        if ("object" === typeof a) {
            if (a.stops) {
                d = Object.create(a);
                var k = [];
                f = 0;
                for (g = d.stops.length; f < g; f++) {
                    var l = d.stops[f];
                    b[e] = 3 === l.length ? ma(Fc(l[1], 1 - l[2])) : l[1];
                    l = Bk([l[0], c.apply(null, b)]);
                    h.push(l[1]);
                    k.push(l);
                }
                d.stops = k;
                (c = J(a, "linearGradient") ? "linearGradient" : J(a, "radialGradient") ? "radialGradient" : void 0) && ((d[c] = a[c].slice()).hash = k.join(""));
                return d;
            }
            if (a.image) return "url('" + a.image + "')";
        } else return (b[e] = a), c.apply(null, b);
    }
    function hw(a, c) {
        function b(b) {
            return Math.sqrt(b[0] * b[0] * 0.284 + b[1] * b[1] * 0.72 + b[2] * b[2] * 0.068) / 255;
        }
        void 0 === c && (c = 0.3);
        var d = (a = ca(a));
        d[0] || d[1] || d[2] || (d[0] = d[1] = d[2] = 5);
        a = b(d);
        var e = 4.2 * c;
        c *= 9;
        c = 0.49 >= a ? Y(0.008 * e, 0.115 * e, 0, 0.49, a) : Y(-0.08 * c, -0.09 * c, 0.49, 1, a);
        return Ro(
            (function (a, c) {
                var d = b(a);
                d = ua(d + c, 0, 1);
                c = b(a);
                d -= c;
                var e = b(cd(a, -10));
                return cd(a, (d / (e - c)) * -10);
            })(d, c)
        );
    }
    function Lb(a, c) {
        if ("none" === a) return "rgba(0,0,0,0)";
        a = Ec(a);
        t(c) && (a = Po(a, c));
        return ma(a);
    }
    function Dh(a) {
        a = ca(Ec(a));
        return yk(a);
    }
    function oc(a, c, b, d) {
        if (!t(a)) return a;
        var e,
            f = a.length,
            g = [],
            h = [];
        if (a.pop) {
            if ((e = Ec(a))) return b ? dd(b, V(e, c), d) : ma(V(e, c));
            if (2 === f) return !0 === a[1] ? dd(b, V(Ec(a[0]), c), d) : V(Ec(a[0]), c);
            if (2 < f) {
                var k = a.join("");
                d = a[f - 1];
                var l = 100 / (f - 2);
                for (b = 0; b < f - 1; b++) (e = V(Ec(a[b]), c)), h.push(ma(e)), g.push(l * b);
                return Qo(d, g, h, k);
            }
        } else {
            if (a.linearGradient && a.linearGradient.pop) return t(c) ? Eh(a, 1 - c) : a;
            if (a.stops) {
                if (a.hasOwnProperty("angle") && a.stops) {
                    f = a.stops.length;
                    d = a.stops;
                    for (b = 0; b < f; b++) (e = d[b]), "undefined" !== typeof e[0] ? g.push(100 * e[0]) : g.push(0), h.push(V(Ec(e[1]), c));
                    return Qo(a.angle, g, h);
                }
            } else {
                if (a.image) return "url('" + a.image + "')";
                if (a.charAt) return b ? dd(b, V(a, c), d) : V(a, c);
            }
        }
    }
    function ia(a, c) {
        return hg(c, function (b) {
            a: if (b) {
                if ("currentColor" !== a) {
                    if (Ek(a)) var c = gg(b, a);
                    else if (La[a])
                        switch (a) {
                            case La.crysDark:
                                c = pe(b);
                                break;
                            case La.crysBright:
                            case La.select:
                                c = oe(b);
                                break;
                            case La.hover:
                                var e = b ? 1 - ca(b)[3] : void 0;
                                c = df(b);
                                c = 0.59 > c ? zk(b, c + 0.15) : zk(b, c - 0.15);
                                c = Po(c, 100 * e);
                                break;
                            case La.outline:
                                c = hw(b, 0.07);
                            case La.outlineContrast:
                                break;
                            case La.label:
                                c = cd(b, -40);
                                break;
                            case La.labelContrast:
                                var f = (c = gg(b, "contrast"));
                                e = Lo(b);
                                f = Lo(f);
                                e = (Math.max(e, f) + 0.05) / (Math.min(e, f) + 0.05);
                                7 > e && ((b = So(ca(b))), (c = ka(c, 0.5 > b[0] ? "#fff" : "#000", ((8 - e) / 8) * 100)));
                                break;
                            case La.seriesLine:
                                c = Ak(b, -0.095);
                                break;
                            case La.hueEffect:
                                c = ne(b, "h", -23.4);
                                break;
                            case La.lightenDark:
                                c = df(b);
                                c = Ak(b, 0.5 > c ? 0.095 : -0.125);
                                break;
                            default:
                                c = b;
                        }
                    else {
                        b = a;
                        break a;
                    }
                    b = ma(c);
                }
            } else b = void 0;
            return b;
        });
    }
    function dd(a, c, b) {
        if (!c || "undefined" === typeof c) return c;
        "none" === c && (c = "rgba(0,0,0,0)");
        if (c.linearGradient) return c;
        if (!1 === c[1]) return c[0];
        c.length && !c.kind && (c = Lb(c));
        var d = a,
            e = ca(c)[3],
            f = 1 - e,
            g = V(c, f);
        d += c + (b || 0);
        var h = c;
        switch (a) {
            case Fa.gaugePolarBack:
                b = V(ka(c, "#ffffff", 20), f);
                h = g;
                var k = V(ne(c, "v", -0.02), f);
                h = jb(
                    Ja(90),
                    [
                        ["0%", b],
                        ["40%", h],
                        ["100%", k],
                    ],
                    [180, "0%", 1, 1],
                    d
                );
                break;
            case Fa.titleBox:
                b = V(ka(c, "#ffffff", 20), f);
                h = g;
                k = V(ne(c, "v", -0.06), f);
                h = jb(
                    Ja(90),
                    [
                        ["0%", b],
                        ["40%", h],
                        ["100%", k],
                    ],
                    [180, "0%", 1, 1],
                    d
                );
                break;
            case Fa.box:
                b = V(ka(c, "#ffffff", 20), f);
                k = h = g;
                h = jb(
                    Ja(90),
                    [
                        ["0%", b],
                        ["40%", h],
                        ["100%", k],
                    ],
                    [180, "0%", 1, 1],
                    d
                );
                break;
            case Fa.chartArea:
                b = V(ka(c, "#ffffff", 20), f);
                e = k = h = g;
                var l = V(cd(c, -5), f);
                h = jb(
                    Ja(90),
                    [
                        ["0%", b],
                        ["25%", h],
                        ["30%", k],
                        ["80%", e],
                        ["100%", l],
                    ],
                    [180, "0%", 1, 1],
                    d
                );
                break;
            case Fa.altGridFillRad:
                h = ma(V(Bd(c, 105), f), "rgba");
                break;
            case Fa.altGridFillY:
            case Fa.altGridFillX:
                g = 0.04;
                0 < b && (g = Math.min(1.7 / b, 0.34));
                if (0 === e) return Lb(c, 100);
                b = V(Bd("#ffffff", 180), f);
                h = V(Bd("#ffffff", 180), f);
                k = V(Bd(c, 105), f);
                e = V(Bd(c, 30), f);
                l = V(Bd(cd(c, 60), 7.5), f);
                c = V(Bd(c, 82.5), f);
                h = jb(
                    "altGridFillY" === a ? Ja(90) : Ja(0),
                    [
                        ["0%", b],
                        [g + "%", h],
                        [g + "%", k],
                        ["35%", e],
                        ["60%", l],
                        ["100%", c],
                    ],
                    ["altGridFillY" === a ? 180 : 90, "50%", 0.35, 0.1],
                    d
                );
                break;
            case Fa.axisMarkerY:
            case Fa.axisMarkerX:
                g = ca(c);
                e = Math.min(255 * g[3] + 20, 255);
                b = V(V(Bd(ne(c, "v", -0.04), e), 7), f);
                h = V(V(c, 7), f);
                h = jb(
                    "axisMarkerY" === a ? Ja(90) : Ja(0),
                    [
                        ["0%", b],
                        ["20%", h],
                        ["80%", h],
                        ["100%", b],
                    ],
                    ["axisMarkerY" === a ? 180 : 90, "0%", e / 255, e / 255],
                    d
                );
                break;
            case Fa.jsButton:
                b = V(cd(c, -10), f);
                h = V(oe(c), f);
                k = V(cd(c, -20), f);
                h = jb(
                    Ja(90),
                    [
                        ["0%", b],
                        ["20%", h],
                        ["70%", c],
                        ["85%", c],
                        ["100%", k],
                    ],
                    [180, "0%", 1, 1],
                    d
                );
                break;
            case Fa.jumpButton:
                b = V(cd(c, -10), f);
                h = V(oe(c), f);
                k = V(cd(c, -20), f);
                h = jb(
                    Ja(90),
                    [
                        ["0%", b],
                        ["20%", c],
                        ["70%", h],
                        ["85%", c],
                        ["100%", k],
                    ],
                    [180, "0%", 1, 1],
                    d
                );
                break;
            case Fa.areaFill:
                b = V(c, f);
                k = ne(c, "v", 0.1);
                h = jb(
                    Ja(90),
                    [
                        ["0%", k],
                        ["70%", b],
                        ["80%", b],
                        ["100%", b],
                    ],
                    [180, "0%", e, e],
                    d
                );
                break;
            case Fa.aqua:
                h = jg(c);
                break;
            case Fa.rounded:
                h = ef(c);
                break;
            case Fa.subtle:
                h = Ck(c);
                break;
            case Fa.cushion:
                h = ig(c);
                break;
            case Fa.navBar:
                h = c;
        }
        return h;
    }
    function Eh(a, c) {
        return a
            ? hg(a, function (b) {
                  t(c) && c.toFixed && ((b = ca(b)), (b = Dc("rgba", [b[0], b[1], b[2], b[3] * c])));
                  return ma(b);
              })
            : a;
    }
    function qe(a, c, b, d) {
        a = ka(a, c, b, d);
        return ma(a);
    }
    function Fk(a) {
        a = Ec(a);
        return ca(a);
    }
    function Ro(a, c) {
        return ma(a, c);
    }
    function iw(a, c, b) {
        function d(b, a, c, d) {
            b && (a && 0 !== b["stroke-width"] && (b.stroke = a), c && (b.fill = c), d && (b["stoke-width"] = d));
        }
        var e = b.horizontal,
            f = b.inverted,
            g = b.offsets,
            h = b.share,
            k = b.isRadial ? b : e,
            l = "lighterOnDark" === b.strokeMode ? oe : pe,
            m,
            n = !0;
        if ("aqua" === a) d(c[""], c[""].stroke, jg(c[""].fill, k, f)), (m = c.hover) && d(m, m.stroke || qe(l(m.fill), m.fill, 50), jg(m.fill, k, f, !0), 2), (m = c.select) && d(m, m.stroke || ma(l(m.fill)), jg(m.fill, k, f, !0));
        else if ("cushion" === a)
            d(c[""], c[""].stroke, ig(c[""].fill, g, h)), (m = c.hover) && d(m, m.stroke || qe(l(m.fill), m.fill, 50), ig(m.fill, g, h), 2), (m = c.select) && d(m, m.stroke || ma(l(m.fill)), ig(m.fill, g, h)), (n = !1);
        else if ("rounded" === a) {
            m = c[""];
            m.stroke = m.stroke || ma(l(m.fill));
            m.fill = ef(m.fill, k, f);
            if ((m = c.hover)) (m.stroke = m.stroke || m.fill), (m.fill = ef(m.fill, k, f, !0)), (m["stoke-width"] = 2);
            if ((m = c.select)) (m.stroke = m.stroke || ma(l(m.fill))), (m.fill = ef(m.fill, k, f, !0));
        } else if ("subtle" === a) {
            m = c[""];
            0 !== m["stroke-width"] && (m.stroke = m.stroke || ma(l(m.fill)));
            m.fill = Ck(m.fill, k, f);
            if ((m = c.hover)) 0 !== m["stroke-width"] && (m.stroke = m.stroke || m.fill), C(k, "isRadial") ? ((m.fill = qe(Bh(m.fill), "#ffffff", 20)), (n = !1)) : (m.fill = Ck(m.fill, k, f, !0));
            if ((m = c.select)) 0 !== m["stroke-width"] && (m.stroke = m.stroke || ma(l(m.fill))), (m.fill = ef(m.fill, k, f, !0));
        } else if ("square" === a) {
            m = c[""];
            m.stroke = m.stroke || ma(l(m.fill));
            m.fill = Dk(m.fill, e, f);
            if ((m = c.hover)) (m.stroke = m.stroke || m.fill), (m.fill = Dk(m.fill, e, f, !0));
            if ((m = c.select)) (m.stroke = m.stroke || ma(l(m.fill))), (m.fill = Dk(m.fill, e, f, !0));
        } else {
            m = c[""];
            m.stroke = ma(m.stroke || ma(l(m.fill)));
            if ((m = c.hover)) (m.stroke = m.stroke || m.fill), (m.fill = qe(Bh(m.fill), "#ffffff", 20));
            (m = c.select) && (m.stroke = ma(m.stroke || ma(l(m.fill))));
            n = !1;
        }
        n &&
            b.lgCoords &&
            ((a = function (a) {
                a.linearGradient = b.lgCoords;
            }),
            a(c[""].fill),
            c.hover && a(c.hover.fill),
            c.select && a(c.select.fill));
    }
    function To(a, c) {
        void 0 === c && (c = 1);
        if ("none" === a) return a;
        (a = hg(a, function (b) {
            b = Fk(b);
            b = ne(b, "s", -c);
            return ma(b);
        })) &&
            a.linearGradient &&
            (a.linearGradient.hash = a.linearGradient.hash + "DS" + c);
        return a;
    }
    function Uo(a, c, b, d) {
        function e(a) {
            var d = [],
                e = f(a),
                h = e[1];
            e = e[0];
            e = g(e, c[a], [0, h]);
            a = (e[1] - e[0]) / b;
            for (h = 0; h < b; h++) d[h] = e[0] + a * h;
            return d;
        }
        function f(b) {
            switch (b) {
                case "hue":
                    return [l[0], 1];
                case "saturation":
                    return [l[1], 1];
                case "lightness":
                    return [l[2], 1];
                case "r":
                    return [k[0], 255];
                case "g":
                    return [k[1], 255];
                case "b":
                    return [k[2], 255];
            }
        }
        function g(b, a, c) {
            function d() {
                f = c[1] - e[1];
                g = e[0] - c[0];
            }
            var e = [b - a / 2, b + a / 2],
                f,
                g;
            d();
            0 > f ? ((e[0] += f), (e[1] += f), d(), 0 > g && (e[0] = c[0])) : 0 > g && ((e[0] -= g), (e[1] -= g), d(), 0 > f && (e[1] = c[1]));
            return e;
        }
        d = t(d) ? d : 1;
        var h = 0 === d,
            k = ca(a),
            l = bf(k[0], k[1], k[2]);
        a = {};
        for (p in c) c.hasOwnProperty(p) && (a[p] = e(p));
        for (var m = [], n = 0; n < b; n++) {
            var p = [l[0], l[1], l[2]];
            a.hue && (p[0] = a.hue[n]);
            a.saturation && (p[1] = a.saturation[n]);
            a.lightness && (p[2] = a.lightness[n]);
            m[n] = yk(bd(p[0], p[1], p[2])).hex;
        }
        return h ? m : jw(m, d);
    }
    function jw(a, c) {
        c = t(c) ? c : -1;
        var b = a.length,
            d;
        for (t(c) && (d = Tn(c, a.length + 2)); 0 !== b; ) {
            var e = Math.floor(d[b] * b);
            --b;
            c = a[b];
            a[b] = a[e];
            a[e] = c;
        }
        return a;
    }
    function Gk() {
        return { x: 0, y: 0, width: 0, height: 0 };
    }
    function Hk(a, c, b) {
        c && ((a.x -= (c - a.width) / 2), (a.width = c));
        b && ((a.y -= (b - a.height) / 2), (a.height = b));
        return a;
    }
    function Cd(a, c) {
        return Hk(a, a.width * c, a.height * c);
    }
    function Ik(a, c) {
        return { x: a.x + c, y: a.y + c, width: a.width - 2 * c, height: a.height - 2 * c, borderWidth: 2 * c };
    }
    function Vo(a, c) {
        return [a[0] + c[3], a[1] + c[0], a[2] - c[3] - c[1], a[3] - c[0] - c[2]];
    }
    function Wo(a, c, b) {
        return { x: a.x + c, y: a.y + b, width: a.width, height: a.height };
    }
    function Xo(a, c) {
        return Ik(a, (c * Math.min(a.width, a.height)) / 2);
    }
    function kg(a, c, b, d) {
        return { x: a - b / 2, y: c - d / 2, width: b, height: d };
    }
    function Yo(a) {
        0 > a.width && ((a.x += a.width), (a.width = -a.width));
        0 > a.height && ((a.y += a.height), (a.height = -a.height));
        a.right = a.x + a.width;
        a.bottom = a.y + a.height;
        a.cx = a.x + a.width / 2;
        a.cy = a.y + a.height / 2;
        return a;
    }
    function Zo(a) {
        return [a.x, a.y, a.x + a.width, a.y + a.height];
    }
    function $o(a) {
        return { x: a[0], y: a[1], width: a[2] - a[0], height: a[3] - a[1] };
    }
    function Gc(a) {
        return { x: a[0], y: a[1], width: a[2], height: a[3] };
    }
    function ap(a, c) {
        var b = a.width * a.height,
            d = c.width * c.height;
        b = b === d && a.width === c.width ? 0 : Sj(b, d);
        return 0 === b && a.x === c.x && a.y === c.y ? 0 : 0 === b ? -1 : b;
    }
    function Fh(a) {
        "undefined" === typeof a && (a = 0);
        a.toFixed ? (a = Jk[a]) : a.charAt ? ((a = a.toLowerCase()), (a = Jk[kw.indexOf(a)])) : (a = Jk[0]);
        return a ? ("#" + a.match(/.{1,6}/g).join("#")).match(/.{1,7}/g) : a;
    }
    function bp(a, c, b, d) {
        void 0 === d && (d = {});
        var e = (ff[a] = ff[a] || {});
        e.loaded && c();
        var f = (e.callbacks = e.callbacks || []);
        e.loading
            ? f.push(c)
            : ((e.loading = !0),
              f.push(c),
              lw(
                  a,
                  function () {
                      w(f, function (b) {
                          return b();
                      });
                      e.loading = !1;
                      e.loaded = !0;
                  },
                  b,
                  d
              ));
    }
    function mw(a, c) {
        if (!a) return null;
        c || je();
        return -1 < a.indexOf("http:") || -1 < a.indexOf("https:") ? a + ".js" : (c || je()) + "/" + a + ".js";
    }
    function lw(a, c, b, d) {
        var e = d.baseUrl,
            f = d.notificationContainer,
            g = mw(a, e);
        lk(g, c, function () {
            b && b.emit("warning", "moduleLoader", "libNotFound", { data: [g], container: f });
            c();
        });
        nw(b, e, g, f);
    }
    function nw(a, c, b, d) {
        c = !c && to();
        a && (c ? a.emit("warning", "moduleLoader", "cdnLoad", { data: [b], container: d }) : (je() && "https://code.jscharting.com/3.0.2" === je()) || !ow(b) || a.emit("warning", "moduleLoader", "scriptLoad", { data: [b], container: d }));
    }
    function ow(a) {
        return S(["maps", "toolbar", "types"], function (c) {
            return ~a.indexOf("modules/" + c);
        });
    }
    function zb(a) {
        return (a.id = a.id || de());
    }
    function Gh(a, c) {
        var b = a[c],
            d;
        "object" === I(b) && (d = a[c] = [b]);
        return d || a[c];
    }
    function pw(a, c, b) {
        var d, e;
        if ("undefined" !== (e = I((d = C(a, c)))) && "array" === e) {
            var f = {};
            w(d, function (a, c) {
                f[b[c]] = a;
            });
            Z(a, c, f);
        }
    }
    function cp(a, c) {
        var b, d;
        "undefined" !== (d = I((b = C(a, c)))) && "string" === d && Z(a, c, b.toLowerCase());
    }
    function qw(a) {
        Da(rw, function (c) {
            var b = a[c];
            b && nb(b) && 1 > Math.abs(b) && (a[c] = 100 * b + "%");
        });
    }
    function dp(a, c) {
        var b;
        "undefined" !== I((b = C(a, c))) && Lb(b) && Z(a, c, Lb(b));
    }
    function sw(a) {
        if ("object" == typeof a) {
            var c = [];
            w(["topLeft", "topRight", "bottomRight", "bottomLeft"], function (b, d) {
                c[d] = a[b];
            });
            return c;
        }
    }
    function db(a, c) {
        return t(a) && a.charAt ? (-1 < a.indexOf("%") ? ((a = parseInt(a.match("-?[0-9]+"))), (a / 100) * c) : parseInt(a)) : a;
    }
    function gf(a, c) {
        Hh || (Hh = T.Promise || tw);
        return new Hh(a, c);
    }
    function uw(a, c) {
        var b = [],
            d = function () {
                return (
                    0 ===
                    b.filter(function (b) {
                        return !b;
                    }).length
                );
            },
            e;
        a.forEach(function (f) {
            f.then(
                function (f) {
                    b.push(f ? f.ok : !0);
                    f && f.error && (e = f.error);
                    f = { ok: d() };
                    e && (f.error = e);
                    b.length === a.length && c(f);
                },
                function () {
                    b.push(!1);
                    b.length === a.length && c({ ok: !1 });
                }
            );
        });
    }
    function tw(a) {
        return new ep("polyfill/promise", function () {
            return new (Hh = T.Promise)(a);
        });
    }
    function vw(a, c) {
        return new ep(["polyfill/promise", "polyfill/fetch"], function () {
            return (Ih = T.fetch)(a, c);
        });
    }
    function lg(a) {
        if (a && a.unit) {
            var c = z(a.multiplier, a.count);
            void 0 === c && (a.multiplier = 1);
            c = z(c, 1);
            return (Jh[a.unit] / 1) * c;
        }
        return 0;
    }
    function bc(a, c) {
        var b = c.unit,
            d = z(c.multiplier, c.count, 1);
        "quarter" === b && ((b = "month"), (d *= 3));
        a.getMonth || (a = new Date(a));
        a = new Date(a.getTime());
        if (c && b)
            if ("decade" === b) a.setFullYear(a.getFullYear() + 10 * d);
            else
                return "month" === b
                    ? new Date(a.getFullYear(), a.getMonth() + d, a.getDate())
                    : "year" === b
                    ? (a.setFullYear(a.getFullYear() + d), new Date(a.getTime()))
                    : "day" === b
                    ? (a.setDate(a.getDate() + d), new Date(a.getTime()))
                    : new Date(a.getTime() + lg(c));
        return a;
    }
    function Kk(a, c, b) {
        b.getMonth || (b = new Date(b));
        b = new Date(b.getTime());
        var d = a.unit ? a.unit : a;
        c = a.multiplier ? a.multiplier : 1;
        "minute" === d && 1 < c && (d = "hour");
        switch (d) {
            case "decade":
                b.setFullYear(10 * Math.floor(0.1 * b.getFullYear()));
            case "year":
                b.setMonth(0);
            case "month":
                b.setDate(1);
            case "week":
                if ("week" === d) {
                    b.setDate(b.getDate() - b.getDay() + ww);
                    break;
                }
            case "day":
                b.setHours(0);
            case "hour":
                b.setMinutes(0);
            case "minute":
                b.setSeconds(0);
        }
        b.setMilliseconds(0);
        return b;
    }
    function hf(a, c) {
        return {
            year: { year: c ? "2-digit" : "numeric" },
            month: { month: c ? "numeric" : "short" },
            day: { day: "numeric" },
            weekday: { weekday: "short" },
            hour: { hour: "numeric" },
            minute: c ? { minute: "2-digit" } : { hour: "numeric", minute: "2-digit" },
            second: c ? { second: "2-digit" } : { hour: "numeric", minute: "2-digit", second: "2-digit" },
            millisecond: "fff",
        }[a];
    }
    function Kh(a) {
        var c = B(a, Lk);
        a = Math.min.apply(Math, H(c));
        c = Math.max.apply(Math, H(c));
        for (var b = []; a < c + 1; a++) b.push(hf(Lh[a]));
        return b;
    }
    function fp(a) {
        var c = a.pair,
            b = c.major,
            d = c.minor,
            e = a.sigUnits,
            f = a.intervals;
        c = hf(b.unit);
        d = hf(d.unit);
        var g = c,
            h = d;
        e.major.length && e.minor.length
            ? 1 === a.intervals[0].length
                ? ((b = Math.min.apply(Math, H(B(e.major, Lk)))), (e = Math.min.apply(Math, H(B(e.minor, Lk)))), e--, 3 <= e && e--, e > b && (g = A.apply(null, Kh([Lh[b], Lh[e]]))))
                : ((a = Kh(e.major)),
                  (e = Kh(e.minor)),
                  3 < a.length && a.pop(),
                  "day" === b.unit && f[1].length >= f[0].length && A(c, hf("month")),
                  a.length && f[1][0] > f[0][0] && (g = A.apply(null, a)),
                  e.length && (h = d = A.apply(null, e)))
            : !e.major.length && e.minor.length && 1 === e.minor.length && "day" === e.minor[0] && (h = A(hf("month"), h));
        return { major: c, minor: d, majorFirst: g, minorFirst: h };
    }
    function gp(a) {
        var c = G(a, 2);
        a = c[1];
        c = $a(B(c[0], Mk));
        a = $a(B(a, Mk));
        return { major: c, minor: a };
    }
    function Mh(a, c, b, d) {
        var e = [],
            f = [],
            g = [];
        d = d.getTime();
        var h = b.getTime();
        h = d - h;
        var k = { exists: 0, close: 0 },
            l = b;
        l.getMonth || (l = new Date(l));
        var m = a.unit ? a.unit : a,
            n = a.multiplier ? a.multiplier : 1,
            p = Kk(a, 1, l);
        if (p.getTime() !== l.getTime()) for (; p.getTime() < l.getTime(); ) p = bc(p, { unit: m, multiplier: n });
        for (l = m = p; l.getTime() <= d; ) f.push(l.getTime()), (l = bc(l, a));
        e.push(f);
        if (c) {
            var q;
            l = m;
            l.getMonth || (l = new Date(l));
            for ("week" === c.unit && (l = Kk(c, 1, l)); l > b; ) l = bc(l, { unit: c.unit, multiplier: -z(c.multiplier, 1) });
            b = bc(l, c);
            b.setMilliseconds(0);
            for (l = b; l.getTime() <= d; ) {
                n = m = a = void 0;
                p = l.getTime();
                var r = f;
                b = h / 20;
                if (0 > r.indexOf(p)) {
                    if (r.length) {
                        try {
                            for (var u = ya(r), x = u.next(); !x.done; x = u.next()) {
                                var v = x.value;
                                if (void 0 === a || la(v, p) < la(a, p)) a = v;
                            }
                        } catch (y) {
                            n = { error: y };
                        } finally {
                            try {
                                x && !x.done && (m = u.return) && m.call(u);
                            } finally {
                                if (n) throw n.error;
                            }
                        }
                        a = la(a, p);
                    } else a = void 0;
                    b = t(a) && (a >= b ? void 0 : "close");
                } else b = "exists";
                (q = b) ? k[q]++ : g.push(l.getTime());
                l = bc(l, c);
            }
            1 < g.length && e.push(g);
            e.minorRemoval = k;
        }
        return e;
    }
    function Nh(a, c) {
        c = c || [
            ["millisecond", [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]],
            ["second", [1, 2, 5, 10, 15, 30]],
            ["minute", [1, 2, 5, 10, 15, 30]],
            ["hour", [1, 2, 3, 4, 6, 8, 12]],
            ["day", [1, 2]],
            ["week", [1, 2]],
            ["month", [1, 2, 3, 4, 6]],
            ["year", null],
        ];
        var b = c[c.length - 1],
            d = Jh[b[0]],
            e;
        a.unit && (a = lg(a));
        for (e = 0; e < c.length; e++) {
            b = c[e];
            d = Jh[b[0]];
            var f = b[1];
            if (c[e + 1] && a <= (d * f[f.length - 1] + Jh[c[e + 1][0]]) / 2) break;
        }
        return { unitRange: d, count: Math.max(1, Math.round(a / d)), unit: b[0] };
    }
    function xw(a, c, b, d) {
        var e = yw(),
            f,
            g = function (b) {
                f = b = Mh(b.major, b.minor, a, c);
                return b[0].length + (b[1] ? b[1].length : 0);
            },
            h,
            k = 0,
            l = 0;
        if (d)
            var m = (h = d.pair),
                n = g(d.pair),
                p = f;
        else
            for (; l < b; )
                if ((h = e[k])) {
                    l = g(h);
                    if (l > b || 3 < f.minorRemoval.close) break;
                    k++;
                    m = h;
                    n = l;
                    p = f;
                } else break;
        return { pair: m, count: n, intervals: p, sigUnits: gp(p) };
    }
    function Nk(a, c, b, d) {
        void 0 === d && (d = !0);
        a = new Ok(a);
        c = a.isInterval ? (d ? a.setRangeSnap(c, b) : a.setRange(c, b)) : a.getRanges(c, b);
        return B(c, function (b) {
            return B(b, function (b) {
                return b.getTime();
            });
        });
    }
    function hp(a, c) {
        var b;
        return (b = a.offset)
            ? c.map(function (a) {
                  return a.map(function (a) {
                      return X(a.getTime() + b);
                  });
              })
            : c;
    }
    function Pk(a, c, b) {
        void 0 === c && (c = "sum");
        if ((!a || !a.length) && t(b)) return b;
        switch (c) {
            case "sum":
                return Ta(a);
            case "average":
                return (c = Ta(a)), null === c ? NaN : c / a.length;
            case "min":
                return Math.min.apply(Math, H(a));
            case "max":
                return Math.max.apply(Math, H(a));
        }
    }
    function zw(a, c) {
        if ("function" === typeof a.pop)
            return ip(function (b) {
                a.forEach(function (a) {
                    return b(a.values);
                });
            })
                ? [{ points: jf(a, c) }]
                : a.map(function (b) {
                      return { name: b.key, points: jf(b.values, c) };
                  });
        var b = Object.keys(a);
        if (Qk(C(a, b[0]))) return [{ points: jf(a, c) }];
        var d = [];
        b.forEach(function (b) {
            return d.push({ name: b, points: jf(a[b], c) });
        });
        return d;
    }
    function jf(a, c) {
        var b = "function" === typeof c,
            d = b
                ? function (b, a) {
                      return c(a, b);
                  }
                : Gb,
            e = function () {
                d = function (b) {
                    return Pk(b, c);
                };
            };
        if ("function" === typeof a.pop)
            return (
                !b &&
                    ip(function (b) {
                        a.forEach(function (a) {
                            return b(a.values);
                        });
                    }) &&
                    e(),
                a.map(function (a) {
                    if (b) a = d(a.values, a.key);
                    else {
                        var c = a.key;
                        a = { x: "string" === typeof c && c.match(Rk) ? parseFloat(c) : c, y: d(a.values, a.key) };
                    }
                    return a;
                })
            );
        var f = Object.keys(a);
        !b && Qk(C(a, f[0])) && e();
        var g = [];
        f.forEach(function (c) {
            return g.push(b ? d(a[c], c) : { x: c, y: d(a[c], c) });
        });
        return g;
    }
    function jp(a, c, b) {
        return "object" === typeof c && c.pattern ? Aw(a, c, b) : kp(lp(a, c, void 0, b));
    }
    function lp(a, c, b, d) {
        c = Sk(c);
        var e = {};
        b &&
            b.forEach(function (b) {
                e[b] = [];
            });
        b = 0;
        for (var f = a.length; b < f; b++) {
            var g = a[b],
                h = c(g);
            null !== h && Bw(e, h, g);
        }
        d &&
            w(e, function (b, a) {
                b = Cw(d);
                return (e[a] = b(e[a]));
            });
        return e;
    }
    function Aw(a, c, b) {
        a = Dw(a, c, b);
        c = a.notDates
            ? parseInt
            : function (b) {
                  return X(parseInt(b));
              };
        delete a.notDates;
        return kp(a, c);
    }
    function Dw(a, c, b) {
        var d,
            e = c.pattern,
            f = c.range,
            g = Sk(c.key);
        c = [];
        if (!e) throw "CalendarPattern Required";
        var h = new Ok(e),
            k =
                "numeric" === h.intervalType
                    ? Gb
                    : function (b) {
                          return b.getTime();
                      };
        if (f)
            var l = [X(f[0]), X(f[1])],
                m = h.setRange(X(f[0]), X(f[1]));
        else {
            try {
                for (var n = ya(a), p = n.next(); !p.done; p = n.next()) {
                    var q = ed(g(p.value));
                    Ha(q) || c.push(q);
                }
            } catch (u) {
                var r = { error: u };
            } finally {
                try {
                    p && !p.done && (d = n.return) && d.call(n);
                } finally {
                    if (r) throw r.error;
                }
            }
            r = Math.min.apply(Math, H(c));
            d = Math.max.apply(Math, H(c));
            l = [X(r), X(d)];
            m = h.setRangeSnap(X(r), X(d));
        }
        r = m.map(function (b) {
            return k(b[0]);
        });
        a = lp(
            a,
            function (b, a) {
                b = ed((a || g)(b));
                a = h.isInside(b);
                if (-1 === a) {
                    if (!Kb(l, b)) return null;
                    Ha(ed(b)) || (a = m.length - 1);
                }
                return k(m[a][0]);
            },
            r,
            b
        );
        "numeric" === h.intervalType && (a.notDates = !0);
        return a;
    }
    function Tk(a) {
        var c,
            b,
            d,
            e = function (a, e) {
                if ("key" === a[0]) {
                    var f = void 0;
                    !b && c
                        ? ((b = !0),
                          (f = function (b) {
                              return jp(b, a[1], c[1]);
                          }))
                        : (f = function (b) {
                              return jp(b, a[1], e);
                          });
                    b = !0;
                    if (d) {
                        var g = f,
                            h = d[1];
                        f = function (b) {
                            b = sa(g(b), function (b) {
                                return b.key;
                            });
                            !0 === h && b.reverse();
                            return b;
                        };
                        d = void 0;
                    }
                    return f;
                }
                if ("rollup" === a[0]) return (c = a), Gb;
                if ("sortKey" === a[0]) return (d = a), Gb;
                if ("reverse" === a[0])
                    return function (b) {
                        return b.reverse();
                    };
            };
        a = a.calls.slice(0);
        for (var f = a.length - 1, g = Gb; -1 < f; ) g = e(a[f--], g);
        return g;
    }
    function Ew(a, c, b, d) {
        wh(a, c, b, d, Oh);
    }
    function Ph(a) {
        return B(a, function (a) {
            return a.match(Rk) ? "number" : Ha(new Date(a).getTime()) ? "string" : "date";
        });
    }
    function Uk(a) {
        if (1 < a.length) {
            var c = Ph(a[0]),
                b = Ph(a[1]);
            if (
                (function (b, a) {
                    return !S(b, function (b) {
                        return b !== a;
                    });
                })(c, "string")
            ) {
                if (3 > a.length) return !Qe(c, b);
                if (2 < a.length) return (a = Ph(a[2])), !Qe(c, a);
            }
        }
    }
    function Vk(a) {
        var c = Math.min(3, a.length),
            b = [];
        ob(c, function (c) {
            return (b[c] = Ph(a[c]));
        });
        if (
            !S(b, function (b) {
                return S(b, function (b) {});
            })
        ) {
            for (var d = void 0, e = 0; e < b.length - 1 && !(d = !Qe(b[e], b[e + 1])); e++);
            var f = ["date", "number", "string", "undefined"];
            if (d) {
                var g = [];
                ob(b[0].length, function (a) {
                    var d = [];
                    ob(c, function (c) {
                        d.push(b[c][a]);
                    });
                    d.sort(function (b, a) {
                        return Sj(f.indexOf(b), f.indexOf(a));
                    });
                    g.push(d);
                });
                return B(g, function (b) {
                    return b[0];
                });
            }
            return b[0];
        }
        return [];
    }
    function Oh(a, c, b) {
        void 0 === c && (c = ",");
        var d = [],
            e,
            f,
            g,
            h = !1;
        for (e = f = g = 0; g < a.length; g++) {
            var k = a[g],
                l = a[g + 1];
            d[e] = d[e] || [];
            d[e][f] = d[e][f] || "";
            '"' === k && h && '"' === l
                ? ((d[e][f] += k), ++g)
                : '"' === k
                ? (h = !h)
                : k !== c || h
                ? "\r" !== k || "\n" !== l || h
                    ? "\n" !== k || h
                        ? "\r" !== k || h
                            ? (d[e][f] += k)
                            : (++e, (f = 0))
                        : (++e, (f = 0))
                    : (++e, (f = 0), ++g)
                : ++f;
        }
        !b && Uk(d) && (d.shift(), Uk(d) && d.shift());
        return d;
    }
    function mp(a, c) {
        var b = {
                number: function (b) {
                    b = parseFloat(b);
                    return Ha(b) ? null : b;
                },
                string: function (b) {
                    return b;
                },
                date: function (b) {
                    return new Date(b).getTime();
                },
                "": function (b) {
                    return b;
                },
            },
            d = function (a) {
                return B(a, function (a, d) {
                    return b[c[d]](a);
                });
            },
            e = function (b) {
                w(a[b], function (b) {
                    b = I(b);
                    if ("number" === b || "date" === b || "object" === b) return (f = !0), !1;
                });
            },
            f = !1;
        if (a.length) {
            ob(3, function (b) {
                return e(b);
            });
            if (f) return a;
            c = c || Vk(a);
            return B(a, d);
        }
    }
    function np(a, c) {
        "string" === I(a) && c && (a = { mapTo: a, data: c });
        var b = {
                number: function (b) {
                    return parseFloat(b);
                },
                string: function (b) {
                    return b;
                },
                dateNumber: function (b) {
                    return new Date(parseInt(b));
                },
                date: function (b) {
                    return new Date(b);
                },
                "": function (b) {
                    return b;
                },
            },
            d,
            e = a.csv,
            f = a.data;
        c = a.intervals;
        var g = I(f),
            h = a.types,
            k = a.newline || Fw,
            l = a.mapTo || "x,y,z",
            m = a.delimiter || ",";
        h && (h = h.split(","));
        var n = function (b) {
                return Un(b) ? "number" : "string";
            },
            p = function (b, a) {
                return "date" === h[a] ? { number: "dateNumber", string: "date" }[n(b)] : h[a];
            },
            q = function (b) {
                return h ? B(b, p) : B(b, n);
            },
            r = function (b) {
                return B(b.split(m), function (b, a) {
                    return u[a](b);
                });
            };
        e || "string" !== g || (e = f);
        if (e) {
            e = e.split(k);
            a.header && (e = e.splice(0, 1));
            h = q(e[Math.min(1, e.length - 1)].split(m));
            var u = B(h, function (a) {
                return b[a];
            });
            f = B(e, r);
        }
        f && (d = op(l, f));
        c &&
            w(c, function (a, c) {
                var e = a.start,
                    f = a.step,
                    g = b[a.type || ""];
                w(d, function (b, a) {
                    return (b[c] = g(e + f * a));
                });
            });
        return d;
    }
    function op(a, c) {
        function b(b, a, c) {
            b[a] = c;
        }
        function d(b, a, c) {
            Z(b, a, c);
        }
        a = a.split(",");
        var e = [],
            f = [],
            g,
            h,
            k,
            l = 0;
        for (g = a.length; l < g; l++) (a[l] = a[l].trim()), (f[l] = -1 < a[l].indexOf(".") ? d : b);
        var m = 0;
        for (h = c.length; m < h; m++) {
            g = c[m];
            l = {};
            var n = 0;
            for (k = g.length; n < k; n++) f[n](l, a[n], g[n]);
            e[m] = l;
        }
        return e;
    }
    function pp(a, c) {
        void 0 === c && (c = {});
        var b = [],
            d = Oh(a, c.delimiter, !0);
        ob(2, function (a) {
            return Uk(d) && b.push(d.shift());
        });
        var e = Vk(d);
        a = { raw: a, headers: b, types: e, split: d };
        c.skipCoerce || (a.data = mp(d, e));
        return a;
    }
    function Wk(a, c, b) {
        void 0 === b && (b = {});
        a = pp(a, { delimiter: c, skipCoerce: !!b.coerce });
        var d = b;
        void 0 === d && (d = {});
        b = d.map;
        c = d.coerce;
        var e = a.data,
            f = a.headers,
            g = a.types;
        d.columns && (f = [d.columns]);
        e = e || a.split;
        if (0 < f.length && f[0].length && e[0].length === f[0].length) {
            var h = f[0];
            d = [];
            for (var k = 0; k < e.length; k++) {
                for (var l = e[k], m = {}, n = 0; n < l.length; n++) m[h[n]] = l[n];
                l = b ? b(m) : m;
                d.push(c ? c(l, k, g) : l);
            }
            d.columns = h;
            1 < f.length && (d.headers = f);
        } else d = a.data;
        d && (d.types = a.types);
        return d;
    }
    function Xk(a, c, b) {
        void 0 === b && (b = {});
        (b = b.map) && (a = a.map(b));
        var d = pa(a[0]),
            e = function (b, a) {
                return a.map(function (a) {
                    return b[a];
                });
            };
        a = a.map(function (b, a) {
            return e(b, d).join(c);
        });
        a.splice(0, 0, d.join(c));
        return a.join("\n");
    }
    function Gw(a, c) {
        var b = ba.body,
            d = 1e3,
            e = ba.createElement("span");
        e.innerHTML = "QW@HhsXJ";
        e.style.position = "absolute";
        e.style.top = e.style.left = "-9999px";
        e.style.visibility = "hidden";
        e.style.fontFamily = "Courier New";
        e.style.fontSize = "250px";
        b.appendChild(e);
        var f = e.offsetWidth;
        e.style.fontFamily = a + ",Courier New";
        var g = function () {
            f !== e.offsetWidth ? (b.removeChild(e), c(!0)) : 0 > d ? (b.removeChild(e), c(!1)) : (setTimeout(g, 50), (d -= 50));
        };
        g();
    }
    function Dd(a) {
        return a ? (Yk[a] || (Yk[a] = 0), "_jsc_" + a + Yk[a]++) : "_jsc" + Hw++;
    }
    function qp(a) {
        return (a || "") + Math.random().toFixed(5).slice(2);
    }
    function Iw(a) {
        return a ? -1 < a.indexOf("_jsc") : !1;
    }
    function kf(a, c) {
        c = c || 1;
        return a && a.pop ? [na(a[0], c), na(a[1], c)] : t(a.x) ? { x: na(a.x, c), y: na(a.y, c) } : a;
    }
    function ab(a, c, b) {
        a = kf(a.slice(0), b);
        c = kf(c.slice(0), b);
        if (a[0] === c[0] && a[1] === c[1]) return !0;
    }
    function rp(a, c, b, d, e) {
        e = Math.min((a - c) / 2, e);
        (e / (Zk * c)) * sp > Math.abs(b - d) && (e = ((d - b) / sp) * c * Zk);
        return { cornerR: e, oCornerR: ((a + c) / 2 / c) * e };
    }
    function cc(a, c) {
        var b = c[0] - a[0];
        a = c[1] - a[1];
        return Math.sqrt(b * b + a * a);
    }
    function tp(a, c, b, d, e, f, g, h, k, l) {
        var m = Math.PI,
            n = (120 * m) / 180,
            p = (m / 180) * (+e || 0),
            q = [],
            r = function (b, a, c) {
                var d = b * sb.cos(c) - a * sb.sin(c);
                b = b * sb.sin(c) + a * sb.cos(c);
                return { x: d, y: b };
            };
        if (l) {
            y = l[0];
            var u = l[1];
            f = l[2];
            v = l[3];
        } else {
            u = r(a, c, -p);
            a = u.x;
            c = u.y;
            u = r(h, k, -p);
            h = u.x;
            k = u.y;
            u = (a - h) / 2;
            y = (c - k) / 2;
            v = (u * u) / (b * b) + (y * y) / (d * d);
            1 < v && ((v = sb.sqrt(v)), (b *= v), (d *= v));
            v = b * b;
            var x = d * d;
            v = (f == g ? -1 : 1) * sb.sqrt(up((v * x - v * y * y - x * u * u) / (v * y * y + x * u * u)));
            f = (v * b * y) / d + (a + h) / 2;
            var v = (v * -d * u) / b + (c + k) / 2,
                y = sb.asin(((c - v) / d).toFixed(9));
            u = sb.asin(((k - v) / d).toFixed(9));
            y = a < f ? m - y : y;
            u = h < f ? m - u : u;
            0 > y && (y = 2 * m + y);
            0 > u && (u = 2 * m + u);
            g && y > u && (y -= 2 * m);
            !g && u > y && (u -= 2 * m);
        }
        up(u - y) > n && ((q = u), (m = h), (x = k), (u = y + n * (g && u > y ? 1 : -1)), (h = f + b * sb.cos(u)), (k = v + d * sb.sin(u)), (q = tp(h, k, b, d, e, 0, g, m, x, [u, q, f, v])));
        f = u - y;
        e = sb.cos(y);
        n = sb.sin(y);
        g = sb.cos(u);
        m = sb.sin(u);
        u = sb.tan(f / 4);
        b = (4 / 3) * b * u;
        u *= (4 / 3) * d;
        d = [a, c];
        a = [a + b * n, c - u * e];
        c = [h + b * m, k - u * g];
        h = [h, k];
        a[0] = 2 * d[0] - a[0];
        a[1] = 2 * d[1] - a[1];
        if (l) return [a, c, h].concat(q);
        q = [a, c, h].concat(q).join().split(",");
        l = [];
        h = 0;
        for (k = q.length; h < k; h++) l[h] = h % 2 ? r(q[h - 1], q[h], p).y : r(q[h], q[h + 1], p).x;
        return l;
    }
    function mg(a) {
        return B(a, function (a) {
            return [a.x, a.y];
        });
    }
    function $k(a, c, b) {
        if (t(C(a, "0.0"))) for (var d = [], e = 0, f = a.length; e < f; e++) d.push($k[(a[e], c[e], b)]);
        else for (d = [], e = 0, f = a.length; e < f; e++) d.push(Y(a[e], c[e], 0, 1, b));
        return d;
    }
    function xa(a) {
        return a.join ? a.join(" ").replace(/,/g, " ") : a;
    }
    function vp(a, c, b) {
        var d = 0;
        for (a = a.shapes; d < a.length; d++) {
            for (var e = a[d], f = 0, g = e.items; f < g.length; f++) c(g[f], f, d);
            b && b(e, d);
        }
    }
    function al(a, c) {
        var b = "",
            d;
        vp(a, function (a, f, g) {
            var e = a[0];
            b += d !== e ? re[e] : " ";
            d = e;
            if (1 !== d)
                for (e = 2; e < a.length; e++) {
                    var k = c ? c(a[e], e, f, g) : a[e];
                    b += (2 < e ? " " : "") + (k[0] + " " + k[1]);
                }
        });
        return b;
    }
    function Mb(a) {
        if (a.bboxValue) return a.bboxValue;
        var c = {};
        w(a.items, function (b) {
            wp[b[0]] && wp[b[0]](c, b);
        });
        a.bboxValue = [c.xMin, c.yMin, c.xMax - c.xMin, c.yMax - c.yMin];
        a.minMaxResult = c;
        return a.bboxValue;
    }
    function bl(a, c) {
        var b = G(c, 2);
        c = b[0];
        b = b[1];
        var d = Q(a.xMax);
        if (c > a.xMax || d) a.xMax = c;
        if (c < a.xMin || d) a.xMin = c;
        if (b > a.yMax || d) a.yMax = b;
        if (b < a.yMin || d) a.yMin = b;
        return a;
    }
    function xp(a, c) {
        return bl(a, c[2]);
    }
    function Jw(a, c) {
        var b = a.bbox(),
            d = vv(b, c);
        c = Hk(Gc(c), d[0], d[1]);
        var e = ha(c);
        return al(a, function (a) {
            return Qh(e, b, a);
        });
    }
    function yp(a, c, b) {
        var d = 0;
        b && a.clearCache(!0);
        b = 0;
        for (a = a.shapes; b < a.length; b++) d += se(a[b], c);
        return d;
    }
    function se(a, c) {
        if (t(a.lengthValue)) return a.lengthValue;
        for (var b = 0, d = 0, e = a.items; d < e.length; d++) {
            var f = e[d],
                g = f;
            if (t(f.lengthValue)) f = f.lengthValue;
            else
                a: {
                    var h = c;
                    switch (f[0]) {
                        case 1:
                        case 2:
                            f = cc(f[1], f[2]);
                            break a;
                        case 3:
                            f = h ? Wj(f.slice(1)) : (cc(f[1], f[2]) + cc(f[4], f[3]) + cc(f[3], f[2]) + cc(f[1], f[4])) / 2;
                            break a;
                        default:
                            f = 0;
                    }
                }
            g = g.lengthValue = f;
            b += g;
        }
        return (a.lengthValue = b);
    }
    function lf(a, c) {
        if (3 === a[0]) {
            var b = a[1],
                d = a[4];
            if (0 === c) c = b;
            else if (1 === c) c = d;
            else {
                a = G([b, a[2], a[3], d], 4);
                var e = a[1],
                    f = a[2];
                d = a[3];
                b = G(a[0], 2);
                a = b[0];
                b = b[1];
                var g = G(d, 2);
                d = g[0];
                g = g[1];
                var h = G(e, 2);
                e = h[0];
                h = h[1];
                var k = G(f, 2);
                f = k[0];
                k = k[1];
                var l = 1 - c,
                    m = cl(l, 3),
                    n = cl(l, 2),
                    p = c * c * c;
                c = [m * a + 3 * n * c * e + 3 * l * c * c * f + p * d, m * b + 3 * n * c * h + 3 * l * c * c * k + p * g];
            }
            return c;
        }
        return $k(a[1], a[2], c);
    }
    function zp(a) {
        a.length();
        var c = [],
            b = 0;
        for (a = a.shapes; b < a.length; b++) c.push.apply(c, Ap(a[b]));
        return c;
    }
    function Ap(a) {
        if (a.flatPoints) return a.flatPoints;
        var c = [];
        se(a);
        for (var b, d = 0, e = a.items; d < e.length; d++) {
            var f = e[d];
            if (3 === f[0]) {
                b = Math.max(2, Math.floor(f.lengthValue / 10));
                var g = f.lengthValue / (b + 1);
                g = Y(0, 1, 0, f.lengthValue, g);
                for (var h = 1; h <= b; h++) c.push(lf(f, h * g));
                c.push(f[4]);
            } else c.push(f[2]);
        }
        return (a.flatPoints = c);
    }
    function Hc(a, c) {
        void 0 === c && (c = 6);
        if (a.positions) return a.positions;
        for (var b = [], d = se(a), e = 0, f = 0, g = a.items; f < g.length; f++) {
            var h = g[f];
            e += h.lengthValue;
            h = h.position = t(h.position) ? h.position : na(e / d, c);
            b.push(h);
        }
        return (a.positions = b);
    }
    function Bp(a, c, b) {
        var d = [];
        if (3 === a[0]) {
            if (((a = ov(a[1], a[2], a[3], a[4], c, b)), a.length))
                return (
                    w(a, function (b) {
                        Ha(b[0]) || d.push({ x: b[0], y: b[1], onLine1: !0, onLine2: !0 });
                    }),
                    d
                );
        } else return d.push(Te(a[1], a[2], c, b)), d;
        d.push({ x: 0, y: 0, onLine1: !1, onLine2: !1, isNaN: !0 });
        return d;
    }
    function Rh(a, c, b, d) {
        var e, f;
        void 0 === d && (d = 6);
        var g = Hc(a, d),
            h = se(a),
            k = [],
            l = [];
        a = a.items;
        for (var m = 1, n = a.length; m < n; m++) {
            var p = a[m],
                q = p.lengthValue,
                r = Bp(p, c, b),
                u = g[m - 1];
            try {
                for (var x = ((e = void 0), ya(r)), v = x.next(); !v.done; v = x.next()) {
                    var y = v.value;
                    if (!y.isNaN)
                        if (y.onLine1 && y.onLine2) {
                            var D = cc(p[1], [y.x, y.y]),
                                E = na(D / q, d);
                            Cp(m, y, E, na(u + D / h, d), l, k);
                        } else {
                            var F = P(p);
                            r = b;
                            0 === Xn(kf(c), kf(F), kf(r)) && Cp(m, y, 1, na(u + q / h, d), l, k);
                        }
                }
            } catch (R) {
                e = { error: R };
            } finally {
                try {
                    v && !v.done && (f = x.return) && f.call(x);
                } finally {
                    if (e) throw e.error;
                }
            }
        }
        return l;
    }
    function Cp(a, c, b, d, e, f) {
        var g = kf([c.x, c.y]).join(" ");
        e.push({ i: a, intersect: c, percOfSegment: b, percOfShape: d });
        f.push(g);
    }
    function dl(a) {
        if (a.vertices) return a.vertices;
        var c = [],
            b = a.items,
            d = b.length - 1;
        w(b, function (a, f) {
            var e = P(a);
            f === d ? 1 === a[0] || ab(e, P(b[0])) || c.push(e) : (f && ab(a[1], e)) || c.push(e);
        });
        return (a.vertices = c);
    }
    function Kw(a) {
        if (a.centroid) return a.centroid;
        var c = dl(a),
            b = c.length,
            d = 0,
            e = 0;
        w(c, function (b) {
            d += b[0];
            e += b[1];
        });
        a.centroid = [d / b, e / b];
        return a.centroid;
    }
    function ng(a) {
        if (a.center) return a.center;
        a.center = va(Mb(a));
        return a.center;
    }
    function el(a, c, b) {
        b = b || Mb(a);
        a = ng(a);
        return Qh(c, b, a);
    }
    function og(a, c) {
        if (c) return ng(a);
        c = Kw(a);
        return Zf(c, dl(a)) ? c : ng(a);
    }
    function Dp(a) {
        if (t(a.direction)) return a.direction;
        for (var c = dl(a), b = 0, d = 0, e = c.length; d < e; d++) {
            var f = c[d],
                g = c[(d + 1) % c.length];
            b += (g[0] - f[0]) * (g[1] + f[1]);
        }
        a.direction = 0 < b ? "cw" : "ccw";
        return a.direction;
    }
    function Ep(a, c) {
        if (t(a.orientation)) return a.orientation;
        c = og(a, c);
        a.orientation = Ia(c, P(a.items[0]));
        return a.orientation;
    }
    function Sh(a, c, b, d) {
        var e = a[0];
        return 0 === e
            ? []
            : 3 === e || (1 === e && 3 === c[0])
            ? ((a = 3 === e ? [a[1], a[2], a[3], a[4]] : [a[1], a[1], a[2], a[2]]), 0 < b && ((b = Xj(a, b)), (a = b.slice(3, b.length))), 1 > d && ((d = Xj(a, d)), (a = d.slice(0, 4))), a)
            : [lf(a, b), lf(a, d)];
    }
    function Lw(a) {
        a.lengthValue = void 0;
    }
    function Mw(a) {
        a.lengthValue = void 0;
        a.flatPoints = void 0;
    }
    function Nw(a) {
        var c,
            b = [];
        if ((a = a.match(Ow)))
            try {
                for (var d = ya(a), e = d.next(); !e.done; e = d.next()) {
                    var f = e.value,
                        g = f.match(Pw);
                    g = g
                        ? g.map(function (b) {
                              return Number(b);
                          })
                        : [];
                    b.push([f[0], g]);
                }
            } catch (k) {
                var h = { error: k };
            } finally {
                try {
                    e && !e.done && (c = d.return) && c.call(d);
                } finally {
                    if (h) throw h.error;
                }
            }
        return b;
    }
    function Fp(a, c) {
        return [2 * c[0] - a[0], 2 * c[1] - a[1]];
    }
    function pg() {
        return new mf({ hasErrors: !0 });
    }
    function Gp(a, c, b, d) {
        var e = a.args;
        c = c || 0;
        for (var f = e.length; f - c > b - 1; c += b) d(a, c, e);
    }
    function nf(a, c, b, d) {
        Gp(a, d, 2 * c, function (a, d) {
            b(
                a,
                1 === c
                    ? Th(a, d)
                    : Pn(c, function (b) {
                          return Th(a, d + 2 * b);
                      })
            );
        });
    }
    function Th(a, c) {
        return a.isRelative ? [a.args[c] + (a.endPoint ? a.endPoint[0] : 0), a.args[c + 1] + (a.endPoint ? a.endPoint[1] : 0)] : [a.args[c], a.args[c + 1]];
    }
    function Qw(a) {
        var c;
        a = Nw(a);
        if (!a.length) return pg();
        var b = Uh();
        try {
            for (var d = ya(a), e = d.next(); !e.done; e = d.next()) {
                var f = e.value,
                    g = fl[f[0]];
                b.args = f[1];
                b.isRelative = g.isRelative;
                b.cIsClosed && "M" !== g.command && Hp(b);
                if (b.args.length < g.argsCount) return pg();
                Rw[g.command](b);
                if (b.firstCommand && !b.startPoint) return pg();
                b.lastCommand = f;
                b.firstCommand = !1;
            }
        } catch (k) {
            var h = { error: k };
        } finally {
            try {
                e && !e.done && (c = d.return) && c.call(d);
            } finally {
                if (h) throw h.error;
            }
        }
        return Vh(b);
    }
    function gl(a, c, b) {
        if (!c || 1 === b || 0 === b || 3 !== a[0]) return b;
        a = a.slice(1);
        var d = void 0;
        b = void 0;
        void 0 === d && (d = 1);
        void 0 === b && (b = 0.01);
        var e = d / 2;
        d -= e;
        var f;
        for (f = Wj(a, d); Math.abs(f - c) > b; ) (e /= 2), (d += (f < c ? 1 : -1) * e), (f = Wj(a, d));
        return d;
    }
    function Ip(a, c) {
        switch (c[0]) {
            case 0:
                qg(a, c[2]);
                break;
            case 1:
                hl(a);
                break;
            case 2:
                fd(a, c[2]);
                break;
            case 3:
                te(a, c.slice(2));
        }
    }
    function Uh() {
        return { firstCommand: !0, shapes: [] };
    }
    function Vh(a) {
        il(a);
        var c = a.startPoint,
            b = a.endPoint;
        return new mf({ hasCurves: a.hasCurves, hasLines: a.hasLines, isClosed: c[0] === b[0] && c[1] === b[1], shapes: a.shapes });
    }
    function Jp(a, c, b) {
        if (c[0][0].length) for (var d = 0; d < c.length; d++) Jp(a, c[d], b);
        else {
            qg(a, c[0]);
            for (d = 1; d < c.length; d++) fd(a, c[d]);
            !0 !== b && hl(a);
        }
    }
    function il(a) {
        a.cShape.hasLines = a.cHasLines;
        a.cShape.hasCurves = a.cHasCurves;
        a.cShape.isClosed = a.cIsClosed;
        a.cHasLines = a.cHasCurves = a.cStartPoint = a.cIsClosed = void 0;
    }
    function fd(a, c) {
        Wh(a, 2, [c]);
        a.hasLines = a.cHasLines = !0;
    }
    function te(a, c) {
        Wh(a, 3, c);
        a.hasCurves = a.cHasCurves = !0;
        a.lastCurve = c;
    }
    function Sw(a, c) {
        var b = a.lastCurve && 3 === P(a.cShape.items)[0] ? Fp(a.lastCurve[1], a.endPoint) : a.endPoint;
        c.unshift(b);
        te(a, c);
    }
    function Kp(a, c) {
        var b = a.endPoint[0],
            d = a.endPoint[1],
            e = c[0][0],
            f = c[0][1],
            g = c[1][0],
            h = c[1][1];
        a.lastQ = c[0];
        te(a, [[b + (2 * (e - b)) / 3, d + (2 * (f - d)) / 3], [g + (2 * (e - g)) / 3, h + (2 * (f - h)) / 3], c[1]]);
    }
    function Tw(a, c) {
        Kp(a, [Fp(a.lastQ, a.endPoint), c]);
    }
    function Wh(a, c, b) {
        c = [c, a.endPoint];
        c.push.apply(c, b);
        a.endPoint = P(b);
        a.cShape && a.cShape.items.push(c);
    }
    function Hp(a, c) {
        a.cShape && il(a);
        c && (a.endPoint = c);
        a.cStartPoint = a.endPoint;
        a.lastCurve = null;
        a.cShape = { cStartPoint: a.cStartPoint, items: [] };
        a.shapes.push(a.cShape);
    }
    function qg(a, c) {
        Hp(a, c || Th(a, 0));
        a.firstCommand && (a.startPoint = a.cStartPoint);
        Wh(a, 0, [a.endPoint]);
        c || nf(a, 1, fd, 2);
    }
    function hl(a) {
        Wh(a, 1, [a.cStartPoint]);
        a.cIsClosed = !0;
    }
    function Uw(a, c, b) {
        c = Th(a, c + 5);
        var d = a.endPoint;
        if (d[0] === c[0] && d[1] === c[1]) return !0;
        var e = tp(d[0], d[1], b[0], b[1], b[2], b[3], b[4], c[0], c[1]);
        b = function (b) {
            return [e[b], e[b + 1]];
        };
        d = e.length;
        e[d - 2] = c[0];
        e[d - 1] = c[1];
        for (c = 0; 5 < d - c; c += 6) te(a, [b(c), b(c + 2), b(c + 4)]);
    }
    function Aa(a) {
        return a ? Qw(a.join ? a.join(" ") : a) : new mf();
    }
    function Ic(a) {
        if (a) {
            var c;
            if (a.length && a[0].push) {
                var b = Uh();
                try {
                    for (var d = ya(a), e = d.next(); !e.done; e = d.next()) Ip(b, e.value);
                } catch (g) {
                    var f = { error: g };
                } finally {
                    try {
                        e && !e.done && (c = d.return) && c.call(d);
                    } finally {
                        if (f) throw f.error;
                    }
                }
                a = Vh(b);
            } else a = pg();
        } else a = new mf();
        return a;
    }
    function Ed(a, c, b) {
        if (1 < b) {
            var d = 1 > c ? Ed(a, c, 1) : "",
                e = 0 < b % 1 ? Ed(a, 0, b % 1) : "";
            b = P(a.shapes).isClosed;
            if (d)
                if (e) {
                    a = Aa(d);
                    d = Aa(e);
                    a = a.items();
                    e = d.items();
                    var f = P(a);
                    d = "";
                    c = 0;
                    for (var g = e.length; c < g; c++) {
                        var h = e[c];
                        b && c === g - 1 ? ((d = "Z"), (3 !== h[0] && (ab(P(a[0]), P(h)) || ab(P(h), P(k)))) || a.push(h)) : c ? ab(P(h), P(k)) || a.push(h) : ab(P(h), P(f)) || a.push(h);
                        var k = h;
                    }
                    b = [];
                    k = 0;
                    for (e = a.length; k < e; k++) {
                        f = a[k];
                        k === a.length - 1 ? (3 !== f[0] && ab(P(f), P(a[0]))) || b.push(f) : k ? ab(P(f), P(l)) || b.push(f) : b.push(f);
                        var l = f;
                    }
                    l = Ic(b).toString() + d;
                } else l = d;
            else l = e;
            return l;
        }
        l = a.items();
        k = a.length();
        g = Lp(l, k, c);
        k = Lp(l, k, b);
        h = l[g.i];
        e = l[k.i];
        f = g.i;
        d = [];
        if (0 < c) {
            if (
                ((c = Sh(l[g.i], l[g.i - 1], g.percOfSegment, 1)),
                d.push("M", c[0].join(" ")),
                c.shift(),
                1 === h[0] ? ((h = l[g.i - 1]), d.push(re[h[0]])) : d.push(re[h[0]]),
                d.push(c.join(" ").replace(/,/g, " ")),
                f++,
                k.i === g.i && 1 === k.percOfSegment)
            )
                return d.join(" ");
        } else d = ["M", g.xy.join(" ")];
        c = f;
        for (g = k.i; c < g; c++) d.push(Mp(l[c])), f++;
        1 > b
            ? ((c = Sh(l[k.i], l[k.i - 1], 0, k.percOfSegment)), c.shift(), 1 === e[0] ? ((h = l[k.i - 1]), d.push(re[h[0]])) : d.push(re[e[0]]), d.push(c.join(" ").replace(/,/g, " ")))
            : ((f = k.i), (b = l[f]), 1 === b[0] ? (a.hasCurves ? ((a = P(b)), d.push("C", P(l[k.i - 1]).join(" "), a.join(" "), a.join(" "))) : d.push("L", P(b).join(" "))) : d.push(Mp(b)));
        return d.join(" ");
    }
    function Vw(a, c, b, d) {
        var e = a.items();
        if (0 === c && 0 === b) return Ic(e);
        d = "caps" === (d && d.mode);
        var f = yp(a, !0, !0);
        a = jl(e, f, c / f);
        b = jl(e, f, (f - b) / f);
        c = Uh();
        var g = !1;
        f = !1;
        var h = a.i,
            k = b.i;
        d && (1 < h && ((a.i = 2), (a.percOfSegment = 0), (g = !0)), k < e.length - 1 && ((b.i = e.length - 2), (b.percOfSegment = 1), (f = !0)));
        d = a.i === b.i;
        var l = e[a.i];
        g ? (0 !== l[0] && qg(c, l[1]), (h = 1)) : ((a = Sh(l, e[a.i - 1], gl(l, a.toLen, a.percOfSegment), d ? gl(l, b.toLen, b.percOfSegment) : 1)), qg(c, a[0]), 3 === l[0] ? te(c, a.slice(1)) : fd(c, a[1]));
        f && (k = 3 === e[e.length - 1][0] ? e.length : e.length - 1);
        for (a = h + 1; a < k; a++) Ip(c, e[a]);
        f || d || ((d = Sh(e[b.i], e[b.i - 1], 0, gl(e[b.i], b.toLen, b.percOfSegment))), 3 === e[b.i][0] ? te(c, d.slice(1)) : fd(c, d[1]));
        return Vh(c);
    }
    function Lp(a, c, b) {
        c = jl(a, c, b);
        c.xy = lf(a[c.i], c.percOfSegment);
        return c;
    }
    function jl(a, c, b) {
        if (0 === b) return { i: 1, percOfSegment: b };
        if (1 === b) return { i: a.length - 1, percOfSegment: b };
        c *= b;
        b = 0;
        for (var d, e = 1, f = a.length; e < f; e++) {
            var g = a[e];
            if (g.lengthValue) {
                var h = void 0;
                void 0 === h && (h = Tj);
                if ((h = b < c || Qj(b, c, h))) {
                    h = b + g.lengthValue;
                    var k = void 0;
                    void 0 === k && (k = Tj);
                    h = h > c || Qj(h, c, k);
                }
                if (h) {
                    var l = na(Y(0, 1, b, b + g.lengthValue, c), 6),
                        m = e;
                    d = c - b;
                    break;
                }
                b += g.lengthValue;
            }
        }
        1 === l && m < a.length - 1 && ((d = l = 0), m++);
        return { i: m, percOfSegment: l, toLen: d };
    }
    function Mp(a) {
        return 1 === a[0] ? "Z" : xa([re[a[0]], a.slice(2).join(" ")]);
    }
    function eb(a, c) {
        if (a)
            if ((void 0 === c && (c = {}), a.length && a[0].push)) {
                var b = Uh();
                Jp(b, a, c.isOpen);
                il(b);
                a = Vh(b);
            } else a = pg();
        else a = new mf();
        return a;
    }
    function Np(a) {
        var c = function (b) {
                return 0 === b[2] && 0 === b[3];
            },
            b = "string" === typeof a;
        return !a || a.hasErrors ? !0 : !b && a.bbox ? c(a.bbox()) : a.arcShape ? 0 === a.arcShape.r : b || a.push ? c(kl(a)) : !0;
    }
    function Ww(a) {
        var c = [],
            b = 0;
        for (a = a.shapes; b < a.length; b++) c.push(Ic(a[b].items));
        return c;
    }
    function Op(a) {
        if (Q(a.isClose)) {
            var c = P(a.items),
                b = a.items[0],
                d;
            !(d = 1 === c[0]) && (d = 2 < a.items.length) && ((b = b[1]), (c = P(c)), (d = b[0] === c[0] && b[1] === c[1]));
            a.isClose = d;
        }
        return a.isClose;
    }
    function ll(a, c, b, d, e) {
        var f = e.start,
            g = e.skipEndFix ? e.end : e.end - 0.001,
            h = e.caps || {},
            k = e.r || b || d;
        b = e.innerR;
        d = e.open;
        var l = (h.start || h.left || "").toLowerCase();
        h = (h.end || h.right || "").toLowerCase();
        var m = e.end - f < Xh ? 0 : 1,
            n = e.cornerR,
            p = n && "gap" !== l && "flat" !== l,
            q = n && "gap" !== h && "flat" !== h;
        if (n && (p || q)) {
            var r = [a, c],
                u = rp(k, b, f, g, n),
                x = u.cornerR,
                v = u.oCornerR;
            u = k - v;
            var y = b + x,
                D = yb((x / (Pp * b)) * 360),
                E = yb((v / (Pp * k)) * 360);
            x = Jb(r, f, u);
            v = Jb(r, g, u);
            u = Jb(r, f, y);
            y = Jb(r, g, y);
            var F = Jb(r, f + D, b),
                w = Jb(r, g - D, b);
            D = Jb(r, f + E, k);
            r = Jb(r, g - E, k);
        }
        var cb = Math.cos(f),
            wa = Math.sin(f),
            U = Math.cos(g),
            M = Math.sin(g);
        e = e.ccw;
        var Jc = q ? r : [a + k * U, c + k * M];
        r = p ? D : [a + k * cb, c + k * wa];
        E = ["M", r[0], r[1], "A", k, k, 0, m, e ? 0 : 1, Jc[0], Jc[1]];
        var gd = "insideround" === h;
        t(b) &&
            ((k -= b),
            (U = q ? w : [a + b * U, c + b * M]),
            (a = p ? F : [a + b * cb, c + b * wa]),
            "round" === h || gd
                ? ((c = Uj(Jc, U)), (g = Kc(c[0], c[1], k / 2, g, g + Xh, gd)), E.push.apply(E, H(g)))
                : "gap" === h
                ? E.push.apply(E, H(["M", U[0], U[1]]))
                : q
                ? E.push.apply(E, H(["A", n, n, 0, 0, 1, v[0], v[1], "L", y[0], y[1], "A", n, n, 0, 0, 1, w[0], w[1]]))
                : E.push.apply(E, H([d ? "M" : "L", U[0], U[1]])),
            E.push.apply(E, H(["A", b, b, 0, m, e ? 1 : 0, a[0], a[1]])),
            (gd = "insideround" === l),
            "round" === l || gd
                ? ((c = Uj(r, a)), (g = Kc(c[0], c[1], k / 2, f + Xh, f, gd)), E.push.apply(E, H(g)))
                : p
                ? E.push("A", n, n, 0, 0, 1, u[0], u[1], "L", x[0], x[1], "A", n, n, 0, 0, 1, D[0], D[1])
                : "gap" !== l && "gap" === h && E.push.apply(E, H(["L"], r)),
            "gap" === h || "gap" === l) &&
            (d = !0);
        E.push(d ? "" : "Z");
        return E;
    }
    function Kc(a, c, b, d, e, f) {
        return ll(a, c, b, b, { start: d, end: e, open: !0, ccw: f }).slice(3, 11);
    }
    function Yh(a, c, b, d, e) {
        return eb(
            [
                [a, c],
                [a + b, c],
                [a + b, c + d],
                [a, c + d],
            ],
            e
        );
    }
    function Qp(a, c, b, d, e) {
        void 0 === e && (e = {});
        var f = G(Rp(b, d, e), 2);
        return Xw(a, c, b, d, f[0], f[1], e.callout);
    }
    function Yw(a, c, b) {
        void 0 === b && (b = {});
        a = G(Rp(a, c, b), 2);
        var d = a[0];
        a = a[1];
        c = Math.max;
        b = function (b) {
            d = b.radius || d;
            return { round: d - Math.cos(Math.PI / 4) * d, cut: d / 2, square: 0, callout: 0 }[b.type || b];
        };
        return [c(b(a[0]), b(a[3])), c(b(a[0]), b(a[1])), c(b(a[1]), b(a[2])), c(b(a[2]), b(a[3]))];
    }
    function Rp(a, c, b) {
        a = Math.min(a / 2, c / 2);
        var d = Math.min(z(b.r, b.radius, 5), a);
        c = Q(z(b.r, b.radius)) ? "square" : "round";
        b = B(b.corners || [c, c, c, c], function (b) {
            return b.r ? ((d = b.r), b.type) : b;
        });
        return [Math.min(d, a), b];
    }
    function Xw(a, c, b, d, e, f, g) {
        var h = Math.PI;
        a = G(Yb([a, c, b, d]), 4);
        var k = a[0],
            l = a[1],
            m = a[2],
            n = a[3],
            p = [],
            q,
            r = "",
            u,
            x,
            v,
            y,
            D,
            E,
            F;
        g &&
            (g.pop || (g = [g]),
            w(g, function (b) {
                var a = b.position;
                b = b.size;
                u = ra([0, 0], 45, b[0])[0];
                var c = G([Tp(a[0]), Tp(a[1])], 2),
                    d = c[0];
                c = c[1];
                r += (c ? (0 === a[1] ? "T" : "B") : "") + (d ? (0 === a[0] ? "L" : "R") : "");
                t((F = Zw[r])) ? (f[F] = { type: "callout", size: b, radius: u }) : (q = c ? a[0] : d ? a[1] : void 0);
                p.push({ name: r, pos: q, size: b });
            }));
        g = function (b) {
            v = n - b;
            y = k + b;
            D = m - b;
            E = l + b;
            x = b;
        };
        var R = [],
            cb,
            wa,
            U,
            M,
            Jc = [];
        a = function (b, a, c, d, e, f, g) {
            R.push(R.length ? "L" : "M", a);
            switch (b.type || b) {
                case "square":
                    R.push("L", c, "L", d);
                    break;
                case "round":
                    R.push.apply(R, H(Kc(e[0], e[1], x, f, g)));
                    break;
                case "cut":
                    R.push("L", d);
                    break;
                case "callout":
                    Jc.push((M = Jb(e, (f + g) / 2, b.size[1]))), R.push("L", M, "L", d);
            }
        };
        c = function (b, a, c) {
            cb = b.size[0] / 2;
            wa = Y(a + cb, c - cb, 0, 1, b.pos);
            U = Y(a, c, 0, 1, b.pos);
        };
        b = function (b, a, c) {
            Jc.push(a);
            R.push("L", b, "L", a, "L", c);
        };
        d = f[0];
        g(d.radius || e);
        a(d, [k, E], [k, l], [y, l], [y, E], h, (3 * h) / 2);
        if ((d = S(p, { name: "T" }))) c(d, y, D), b([wa - cb, l], [U, l - d.size[1]], [wa + cb, l]);
        d = f[1];
        g(d.radius || e);
        a(d, [D, l], [m, l], [m, E], [D, E], -h / 2, 0);
        if ((d = S(p, { name: "R" }))) c(d, E, v), b([m, wa - cb], [m + d.size[1], U], [m, wa + cb]);
        d = f[2];
        g(d.radius || e);
        a(d, [m, v], [m, n], [D, n], [D, v], 0, h / 2);
        if ((d = S(p, { name: "B" }))) c(d, y, D), b([wa + cb, n], [U, n + d.size[1]], [wa - cb, n]);
        d = f[3];
        g(d.radius || e);
        a(d, [y, n], [k, n], [k, v], [y, v], h / 2, h);
        if ((d = S(p, { name: "L" }))) c(d, E, v), b([k, wa + cb], [k - d.size[1], U], [k, wa - cb]);
        R.length && R.push("Z");
        return xa(R);
    }
    function Up(a) {
        void 0 === a && (a = {});
        var c = a.type;
        if (Vp[c]) return Vp[c](a);
        var b = z(a.lineWidth, 1),
            d = db(z(a.size, 10 * b), b);
        c = z(a.overflow, !1);
        var e = db(z(a.width, d), b);
        b = db(z(a.height, d), b);
        d = !1 === c ? z(a.centerWidth, e / 2) : 0;
        return L(Na({}, a, Wp), { width: e, height: b, overflow: 0 < d ? !0 : c, centerWidth: d });
    }
    function Xp(a) {
        return a && "none" !== a ? (O(a) ? { shape: a } : Oa(a)) : null;
    }
    function $w(a, c, b, d) {
        var e = L({ size: d, x: c, y: b }, O(a) ? { name: a } : a);
        return (c =
            (a = e.path) ||
            (e.name
                ? xo(
                      e.name,
                      function (b) {
                          Ma.emit("warning", "dom", "scriptLoad", { data: [b.path] });
                      },
                      function (b) {
                          Ma.emit("warning", "dom", "iconNotFound", { data: [e.name] });
                      }
                  )
                : null))
            ? Yp(c, [e.x || 0, e.y || 0, e.width || 0, e.height || 0, e.size], Xp(e.outerShape), e.padding, !!a)[0]
            : null;
    }
    function fb(a, c) {
        c = c || [];
        c.push(sg(a[0]));
        1 < a.length && c.push("L");
        for (var b = 1, d = a.length; b < d; b++) c.push(a[b][0] + " " + a[b][1]);
        return c;
    }
    function ax(a, c, b) {
        void 0 === c && (c = !0);
        var d = [];
        d.push("M", a[0].join(" "), "L");
        c = c
            ? function (c) {
                  d.push(a[b ? c : c - 1][0] + " " + a[b ? c - 1 : c][1]);
              }
            : function (c) {
                  d.push(a[b ? c - 1 : c][0] + " " + a[b ? c : c - 1][1]);
              };
        for (var e = 1, f = a.length; e < f; e++) c(e), d.push(a[e][0] + " " + a[e][1]);
        return d;
    }
    function tg(a) {
        var c = [];
        w(a, function (b) {
            fb(b, c);
        });
        return c;
    }
    function bx(a, c) {
        void 0 === c && (c = 0.8);
        var b = function (b) {
                return b.join(" ");
            },
            d = ["M", b(a[0])],
            e = [];
        if (3 > a.length) e = a.slice(0);
        else for (var f = 1, g = a.length - 1; f < g; f++) e[f] = cx(a, f, c);
        if (2 === a.length) d.push("C", a[0], a[1], a[1]);
        else for (f = 0, g = a.length - 1; f < g; f++) f ? (f === g - 1 ? d.push("C", b(e[f][1]), b(a[f + 1]), b(a[f + 1])) : d.push("C", b(e[f][1]), b(e[f + 1][0]), a[f + 1])) : d.push("C", b(a[f]), b(e[f + 1][0]), b(a[f + 1]));
        return xa(d);
    }
    function cx(a, c, b) {
        void 0 === b && (b = 0.8);
        var d = a[c - 1],
            e = a[c],
            f = a[c + 1];
        b = 1 - b;
        c = Ia(e, d);
        a = Ia(e, f);
        d = cc(d, e);
        f = cc(e, f);
        f = Math.min(d, f);
        d = ee(e[0], e[1], yb(c), f);
        a = ee(e[0], e[1], yb(a), f);
        b *= cc([d.x, d.y], [a.x, a.y]);
        d = Ia(d, a);
        a = mg([ee(e[0], e[1], yb(d - 180), b)])[0];
        e = mg([ee(e[0], e[1], yb(d), b)])[0];
        return [a, e];
    }
    function dx(a) {
        var c = G(a.points, 3),
            b = a.angles,
            d = a.cxy,
            e = a.radius;
        c = 0 > Xn(c[0], c[1], c[2]);
        a = a.angles.map(function (b) {
            return yb(b);
        });
        a[0] = c && "0270" === b.join("") ? 2 * Math.PI : a[0];
        return Kc(d[0], d[1], e, a[0], a[1], c);
    }
    function ex(a, c) {
        var b = a.length;
        if (2 < b) for (var d = 1; d < a.length - 1; d++) c(a[d - 1], a[d], a[d + 1], 1 === d, d === b - 2);
    }
    function hd(a, c) {
        var b = [];
        ex(a, function (a, e, f, g, h) {
            var d = c,
                l = mc(a, e),
                m = mc(e, f);
            m = Math.min(g ? l : l / 2, h ? m : m / 2);
            l = [Ia(f, e), Ia(a, e)];
            d = t(d) ? Math.min(d, m) : m;
            e = [ra(e, l[1] + 180, d), e, ra(e, l[0] + 180, d)];
            d = { points: e, radius: d, angles: l, cxy: ra(e[0], l[0] + 180, d) };
            g && b.push(sg(a));
            b.push(Fd(d.points[0]));
            b.push.apply(b, H(dx(d)));
            h && !ab(d.points[2], f) && b.push(Fd(f));
        });
        return b.join(" ");
    }
    function fx(a, c) {
        c = id(c, { width: 1.5 });
        var b = c.gapLength,
            d = c.width,
            e = c.lineLength,
            f = c.midPoint,
            g = c.lineAngle,
            h = c.noStart,
            k = c.noEnd,
            l = c.tipPos * e - b / 2,
            m = e - l - b,
            n = [],
            p = a.slice(0);
        if (0 === b) n.push(sg(a[1]), Fd(a[2]));
        else {
            var q = Math.min(b, e - 4);
            n.push(sg(a[1]), Fd(ra(f, g + 180, q / 2)));
            n.push(sg(ra(f, g, q / 2)), Fd(a[2]));
        }
        b = { type: "arrow", overflow: !1, width: "400%", length: "600%" };
        h = { start: h ? {} : b, end: k ? {} : b };
        a = [a[1], a[2]];
        return { d: n.join(" "), pathOptions: { caps: h, "stroke-width": d, stroke: c.color, fill: "none" }, startLen: l, endLen: m, gapLength: q, bbox: Ua(p), endPoints: a, mode: "measure" };
    }
    function gx(a, c) {
        c = id(c, { width: 3, radius: 100, tipLength: 5 });
        var b = c.gapLength,
            d = c.tipLength,
            e = c.radius,
            f = c.tipPos,
            g = c.lineLength,
            h = c.midPoint,
            k = c.sideLength,
            l = c.lineAngle,
            m = c.tipAngle,
            n = function (b, a) {
                return [b[0] + a[0], b[1] + a[1]];
            },
            p = function (b, a, c) {
                return b.map(function (b) {
                    return [b[0] + a, b[1] + c];
                });
            },
            q = ra([0, 0], m, c.width),
            r = function (b) {
                return p(b, q[0], q[1]);
            },
            u = function () {
                for (var b = [], a = 0; a < arguments.length; a++) b[a] = arguments[a];
                return t.push.apply(t, H(b));
            },
            x = Gb,
            v = Gb;
        f = f * g - b / 2;
        var y = g - f - b,
            D = Math.min(e, f) < k;
        k = Math.min(e, y) < k;
        if (D || k) {
            var E = ra([0, 0], l, 1),
                F = ra([0, 0], l + 180, 1);
            x = function (b, a, c) {
                b[a] = n(b[a], E);
                b[c] = n(b[c], E);
            };
            v = function (b, a, c) {
                b[a] = n(b[a], F);
                b[c] = n(b[c], F);
            };
        }
        var t = [],
            w = a.slice(0),
            wa = [],
            U = 0;
        0 === b
            ? ((b = a.slice(0, 2)),
              D && x(b, 0, 1),
              (d = ra(h, m, d)),
              w.push(d),
              b.push(h, d),
              (h = [b[3], b[2], a[2], a[3]]),
              k && v(h, 2, 3),
              u(hd(b, e)),
              u(hd(h, e).replace("M", "L")),
              u(Fd(a[3])),
              D && v(b, 0, 1),
              k && x(h, 2, 3),
              (b = r(b).reverse()),
              (h = r(h).reverse()),
              u(hd(h, e).replace("M", "L")),
              u(hd(b, e).replace("M", "L"), Fd(a[0]), "Z"))
            : ((U = Math.min(b, g - 4)),
              (b = a.slice(0, 2)),
              D && x(b, 0, 1),
              b.push(ra(h, l + 180, U / 2)),
              (h = [ra(h, l, U / 2), a[2], a[3]]),
              u(hd(b, e)),
              D && v(b, 0, 1),
              (b = r(b).reverse()),
              u(hd(b, e).replace("M", "L"), Fd(a[0]), "Z"),
              k && v(h, 1, 2),
              u(hd(h, e)),
              k && x(h, 1, 2),
              (h = r(h).reverse()),
              u(hd(h, e).replace("M", "L"), "Z"));
        wa.push(a[3]);
        wa.push(a[0]);
        return { d: t.join(" "), pathOptions: { "stroke-width": 0, fill: c.color }, startLen: f, endLen: y, gapLength: U, bbox: Ua(w), endPoints: wa, mode: "curly" };
    }
    function Zp(a, c, b, d, e) {
        function f(b) {
            return b && b.join ? b.join(" ").replace(/,/g, " ") : b;
        }
        function g(a) {
            switch (a) {
                case "b":
                    var c = [[u, x], ["L"], [h - 1.1 * n, x], ["L"], [h - 0.35 * n, x - 1.25 * n], ["L"], [h + 0.45 * n, x + 0.65 * n], ["L"], [h + 0.8 * n, x], ["L"], [u + b, x]];
                    c = c.reverse();
                    break;
                case "r":
                    c = [[u, x], ["L"], [u, k - 1.12 * p], ["L"], [u - 1.25 * p, k - 0.35 * p], ["L"], [u + 0.65 * p, k + 0.45 * p], ["L"], [u, k + 0.8 * p], ["L"], [u, x + d]];
                    break;
                case "t":
                    c = [[u + b, x], ["L"], [h + 1.15 * n, x], ["L"], [h + 0.35 * n, x + 1.25 * n], ["L"], [h - 0.45 * n, x - 0.65 * n], ["L"], [h - 0.85 * n, x], ["L"], [u, x]];
                    c = c.reverse();
                    break;
                case "l":
                    c = [[u, x + d], ["L"], [u, k + 1.15 * p], ["L"], [u + 1.25 * p, k + 0.35 * p], ["L"], [u - 0.65 * p, k - 0.45 * p], ["L"], [u, k - 0.85 * p], ["L"], [u, x]];
            }
            c.splice(0, 0, "M");
            return c;
        }
        e = e || {};
        var h = a + b / 2,
            k = c + d / 2,
            l = e.zigWidth || 0,
            m = 1.6 * (l || 10),
            n = Math.min(m, b / 2),
            p = Math.min(m, d / 2);
        l /= 2;
        m = e.lines;
        var q = a + b,
            r = c + d,
            u = a,
            x = c,
            v = !e.open,
            y = [];
        switch (e.zigSides) {
            case "t":
                x = c + l;
                y = e = g("t");
                m.push(f(e));
                v && y.push(["L", q, r, "L", a, r]);
                break;
            case "b":
                x = r - l;
                v && y.push(["M", a, c, "L", q, c]);
                e = f(g("b"));
                m.push(f(e));
                y.push(v ? e.replace("M", "L") : e);
                break;
            case "m":
                x = c + l;
                y = e = g("t");
                m.push(f(e));
                x = r - l;
                e = f(g("b"));
                m.push(e);
                y.push(v ? e.replace("M", "L") : e);
                break;
            case "r":
                u = q - l;
                y = e = g("r");
                m.push(f(e));
                v && y.push(["L", a, r, "L", a, c]);
                break;
            case "l":
                u = a + l;
                v && y.push(["M", q, c, "L", q, r]);
                e = f(g("l"));
                m.push(f(e));
                y.push(v ? e.replace("M", "L") : e);
                break;
            case "c":
                (u = q - l), (y = e = g("r")), m.push(f(e)), (u = a + l), (e = f(g("l"))), m.push(e), y.push(v ? e.replace("M", "L") : e);
        }
        return f(y).split(" ");
    }
    function $p(a, c, b, d, e, f) {
        return dc[a] || "needle" === a ? dc["needle" === a ? "square" : a](c, b, d, e, f) : $w(a, c, b, d);
    }
    function hx(a, c, b) {
        ml[c]
            ? b(ml[c])
            : (b({ width: 0, height: 0 }, !1),
              ug[c]
                  ? ug[c].push(b)
                  : ((ug[c] = [b]),
                    a.calculateImageSize(c, function (b, a) {
                        var d = (ml[c] = { width: b, height: a });
                        w(ug[c], function (b) {
                            return b(d, !1);
                        });
                        ug[c] = void 0;
                    })));
    }
    function aq(a, c, b) {
        var d = a.pointerType;
        d || (d = (d = a.type.match(/^mouse|touch/i)) ? d[0] : null);
        return { el: c, eventArgs: a, eventName: b, device: d ? d : "other", pointers: a.pointers };
    }
    function ix(a) {
        a._s0 = {};
        a._s1 = {};
        a._s2 = {};
        a._s3 = {};
    }
    function Zh(a, c) {
        t(c) && (a._s4 = c);
        return a._s4;
    }
    function bq(a) {
        return a ? ((a = /url\(#(.*)\)/g.exec(a)) ? a[1] : null) : null;
    }
    function nl(a, c, b) {
        c &&
            (w(c.childNodes, function (c) {
                return nl(a, c, b);
            }),
            c.refNodes.length &&
                w(c.refNodes, function (c) {
                    return nl(a, c, b);
                }),
            Da(cq, function (d) {
                return dq(a, d, c.attr(d), null, b);
            }));
    }
    function dq(a, c, b, d, e) {
        J(cq, c) && ((c = bq(b)), (d = bq(d)), (a = a._s0), null !== d && (J(a, d) ? a[d]++ : (a[d] = 1)), null !== c && (J(a, c) && a[c]--, J(a, c) && 1 > a[c] && (delete a[c], e(c))));
    }
    function ol(a, c) {
        a = a._s1;
        return J(a, c) ? a[c] : null;
    }
    function pl(a, c) {
        var b = a._s1;
        J(b, c) && delete b[c];
        b = a._s2;
        a = a._s3;
        J(a, c) && (delete b[a[c]], delete a[c]);
    }
    function vg(a, c, b) {
        var d = eq(a);
        c = jx(a, c, b);
        c.updateAttr = function (b) {
            b.el ? b.el.attr(b.attr) : (b.el = a.element(b).add(d));
            return b;
        };
        return c;
    }
    function eq(a) {
        var c;
        (c = Zh(a)) || ((c = a.element("defs")), !a._noRender && c.add(), (c = Zh(a, c)));
        return c;
    }
    function jx(a, c, b) {
        b = b || {};
        var d = b.id && ol(a, b.id);
        return d ? d : fq(a, c, b, b.hash);
    }
    function fq(a, c, b, d, e) {
        var f = Q(b.id),
            g = a._s1,
            h = a._s2;
        if ((g = J(h, d) ? g[h[d]] : null)) return g;
        g = b;
        f ? (g = L(qa(b), { id: Dd() })) : ql(a, b.id);
        c = { tag: c, attr: Ga(g, ["hash", "meta"]), isDef: !0, hash: d, val: e };
        b = g.id;
        e = c;
        a._s1[b] = e;
        d && ((e = a._s3), (a._s2[d] = b), (e[b] = d));
        return c;
    }
    function ql(a, c) {
        var b = ol(a, c);
        if (b) {
            var d = b.isDef ? b.el : b;
            d && d.destroy();
            delete b.el;
            pl(a, c);
        } else (a = a.query("#" + c)) && a.destroy();
    }
    function wg(a) {
        var c = a || {};
        c.color = c.color || "black";
        c.backgroundColor = c.backgroundColor || "none";
        c.strokeWidth = t(c.strokeWidth) ? c.strokeWidth : 1;
        c.granualWidth = a.granualWidth || a.size || 5;
        c.granualHeight = a.granualHeight || a.size || 5;
        return c;
    }
    function gq(a, c, b) {
        a = { hash: "#" + a + ":" + b.color + ", " + b.backgroundColor + ", " + b.strokeWidth, width: b.granualWidth, height: b.granualHeight, patternUnits: "userSpaceOnUse", x: 0, y: 0, childNodes: c };
        b.patternTransform && (a.patternTransform = b.patternTransform);
        b.transform && (a.transform = b.transform);
        return a;
    }
    function $h(a, c, b) {
        c.unshift({ tag: "rect", attr: { width: b.granualWidth, height: b.granualHeight, fill: b.backgroundColor || "none" } });
        return gq(a, c, b);
    }
    function hq(a) {
        a = L(a, iq[a.pattern]);
        a.omit = ["childNodes"];
        var c = a.template;
        c || (J(a, "c") ? (c = "line") : J(a, "d") ? (c = "path") : J(a, "p") && (c = "point"));
        return kx[c](a);
    }
    function lx(a, c, b, d) {
        if (!J(iq, a.pattern)) return null;
        var e = L({}, a);
        if (a.backgroundColor && !O(a.backgroundColor)) {
            var f = void 0;
            d && d.d && ((d = d.d), (d = d.isPath ? d : Aa(d)), (f = Gc(d.bbox())));
            f = f || c.box();
            e.width = a.width = f.width;
            e.height = a.height = f.height;
            var g = a.backgroundColor;
            d = a.width;
            f = a.height;
            a = Oa(a);
            a.backgroundColor = "none";
            a = hq(a);
            c = vg(c.renderer, "pattern", a);
            b = b(g);
            c.val = a;
            a = b.isDef ? b.attr.id : b.attr("id");
            b = {
                hash: "#complexPattern:" + c.attr.id + ", " + a + ", " + d + ", " + f,
                x: 0,
                y: 0,
                width: "100%",
                height: "100%",
                childNodes: [
                    { tag: "rect", attr: { x: 0, y: 0, width: d, height: f, fill: b } },
                    { tag: "rect", attr: { x: 0, y: 0, width: "100%", height: "100%", fill: c } },
                ],
            };
        } else b = hq(a);
        e.hash = b.hash;
        b.meta = e;
        return b;
    }
    function jq(a, c) {
        var b = a.items,
            d = og(a, a.hasCurves),
            e = Mb(a),
            f = se(a);
        e = Math.max(e[2], e[3]);
        Hc(a);
        a = [d, mg([Uc(d[0], d[1], c, e)])[0]];
        e = 1;
        for (var g = b.length; e < g; e++) {
            var h = b[e],
                k = P(h),
                l = b[e - 1];
            if (!ab(k, h[1])) {
                var m = Ia(d, h[1]);
                k = Bp(h, a[0], a[1]);
                for (var n = 0; n < k.length; n++) {
                    var p = k[n];
                    if ((p.onLine2 && p.onLine1) || m === c) {
                        var q = m === c && p.isNaN ? 0 : cc(h[1], [p.x, p.y]);
                        q = 0 === q ? l.position : q == h.lengthValue ? h.position : q / f + l.position;
                        break;
                    }
                }
                if (t(q)) break;
            }
        }
        c = Ic(b);
        if (!t(q)) return c.toString();
        q %= 1;
        return Ed(c, q, 1 + q);
    }
    function mx(a, c, b) {
        b = Rh(a, c, b);
        1 < b.length && 0 === na(b[0].percOfShape + 1 - b[b.length - 1].percOfShape, 2) && b.pop();
        if (1 < b.length) (c = b[0].percOfShape), (b = P(b).percOfShape);
        else if (1 === b.length) {
            c = b[0].percOfShape;
            if (1 !== P(a.items)[0]) {
                var d = Ic(a.items);
                return [Ed(d, 0, c), Ed(d, c, 1)];
            }
            c = 0.5 < c ? 1 - c : c;
            b = (c + 0.5) % 1;
        } else {
            c = 0;
            b = 0.5;
            var e = 3 !== P(P(a.items))[0];
        }
        d = Ic(a.items);
        a = function (b, a) {
            b = Ed(d, b, a);
            e || (b = -1 === b.indexOf("Z") ? b + "Z" : b);
            return b;
        };
        return [a(c, b), a(b, 1 + c)];
    }
    function jd(a, c, b) {
        for (var d = 0, e = c.length; d < e; d++) {
            var f = a,
                g = c[d],
                h = f.items,
                k = se(f),
                l = Hc(f),
                m = 0;
            if (!(0 === g || 1 === g || -1 < l.indexOf(g))) {
                var n = !1;
                l = 1;
                for (var p = h.length; l < p; l++) {
                    var q = h[l],
                        r = h[l - 1],
                        u = m + q.lengthValue / k;
                    if (n) (q[1] = P(r)), (q.lengthValue = void 0), (q.position = void 0);
                    else {
                        if (m < g && g < u) {
                            n = Y(0, 1, m, u, g);
                            var x = q[0];
                            m = 1 === x;
                            3 === x || (m && 3 === r[0])
                                ? ((n = Xj(m ? [q[1], q[1], q[2], q[2]] : [q[1], q[2], q[3], q[4]], n)), n.slice(0, 4), n.slice(4), (r = [3, q[1], n[1], n[2], n[3]]), (q = m ? [1, r[4], q[2]] : [3, r[4], n[4], n[5], n[6]]))
                                : ((r = [2, q[1], lf(q, n)]), (q = m ? [1, r[2], q[2]] : [2, r[2], lf(q, 1)]));
                            h.splice(l, 1, r, q);
                            l++;
                            p++;
                            n = !0;
                        }
                        m = u;
                    }
                }
                f.lengthValue = void 0;
                f.positions = void 0;
            }
            if (b && a.items.length === b) break;
        }
    }
    function kq(a) {
        for (var c = [], b = a.items.length - 1; 0 <= b; b--) {
            var d = a.items[b];
            (0 !== b && 1 !== d[0] && ab(d[1], P(d))) || c.unshift(d);
        }
        return { items: c };
    }
    function lq(a, c) {
        var b = Op(a),
            d = Op(c);
        a.items.length !== c.items.length && b !== d && ((b = b ? c : a), b.items.push([1, P(P(b.items)), b.items[0][2]]));
        if (a.items.length !== c.items.length && ((a = kq(a)), (c = kq(c)), a.items.length !== c.items.length)) {
            if (a.items.length < c.items.length) {
                c = G([c, a], 2);
                a = c[0];
                c = c[1];
                var e = !0;
            }
            d = Hc(a);
            var f = Hc(c);
            b = me(d, f);
            d = me(f, d);
            jd(c, b, a.items.length + d.length);
            a.items.length !== c.items.length && jd(a, d, c.items.length);
        }
        return { from: e ? c : a, to: e ? a : c };
    }
    function ai(a) {
        if (a.hasCurves && !a.hasLines) return a;
        a = a.items();
        for (var c = 0, b = a.length; c < b; c++) {
            var d = a[c],
                e = d[0];
            if (2 === e || 1 === e) a[c] = [3, d[1], d[1], d[2], d[2]];
            1 === e && (a.splice(c + 1, 0, [1, d[2], d[2]]), b++, c++);
        }
        return Ic(a);
    }
    function nx(a, c) {
        var b,
            d,
            e = a.length(),
            f = c.length();
        if (!e || !f) return null;
        if (a.hasCurves || c.hasCurves) {
            var g = !a.hasCurves || a.hasLines,
                h = !c.hasCurves || c.hasLines;
            a = ai(a);
            c = ai(c);
        }
        f = a.shapes.length;
        var k = c.shapes.length;
        if (f === k) return 1 === f ? (a.isClosed || c.isClosed ? mq(a.shapes[0], c.shapes[0], g, h) : ((a = { items: a.items() }), (c = { items: c.items() }), lq(a, c))) : nq(a, c);
        var l;
        f < k && (l = !0);
        g = f > k ? c : a;
        h = Math.abs(f - k);
        e = 0;
        for (f = f > k ? a : c; 0 < h--; ) {
            var m = f;
            k = g.bbox();
            var n = m.shapes[0],
                p = m.shapes[1],
                q = [ng(n), ng(p)],
                r = Ia(q[0], q[1]),
                u = Ea([Mb(n), Mb(p)]);
            u = Math.max(u[2], u[3]);
            p = oq(p.items, q[0], r);
            var x = oq(n.items, q[1], r);
            x = Te(q[0], q[1], x, Uc(x[0], x[1], r + 90, 10));
            q = Te(q[0], q[1], p, Uc(p[0], p[1], r + 90, 10));
            null === x.x && null === x.y && null === q.x && null === q.y ? (n = n.center) : ((n = mg([x, q])), (n = $k(n[0], n[1], 0.5)));
            r = [Uc(n[0], n[1], r - 90, 2 * u), Uc(n[0], n[1], r + 90, 2 * u)];
            r = mg(r);
            u = m.bbox();
            m = Qh(k, u, r[0]);
            k = Qh(k, u, r[1]);
            k = ab(m, k) ? r : [m, k];
            m = g.shapes.splice(2 * e, 1)[0];
            k = mx(m, k[0], k[1]);
            l
                ? ((a = Aa(k.join(""))), (b = g.shapes).splice.apply(b, H([2 * e, 0], a.shapes)), (a.shapes = g.shapes), (g = a))
                : ((c = Aa(k.join(""))), (d = g.shapes).splice.apply(d, H([2 * e, 0], c.shapes)), (c.shapes = g.shapes), (g = c));
            e = 2 * (e + 1) > g.shapes.length - 1 ? 0 : e + 1;
        }
        return nq(a, c);
    }
    function nq(a, c) {
        var b = [0, 0, 1, 1],
            d = el(a.shapes[0], b, a.bbox()),
            e = cc(d, el(c.shapes[0], b, c.bbox()));
        b = cc(d, el(c.shapes[c.shapes.length - 1], b, c.bbox()));
        c = c.shapes.slice(0);
        e > b && (c = c.reverse());
        e = [];
        b = [];
        d = 0;
        for (var f = c.length; d < f; d++) {
            var g = mq(a.shapes[d], c[d], !1, !1);
            e = e.concat(g.from.items);
            b = b.concat(g.to.items);
        }
        return { from: { items: e }, to: { items: b } };
    }
    function mq(a, c, b, d) {
        if (Dp(a) !== Dp(c)) {
            var e = [],
                f = { hasCurves: a.hasCurves, hasLines: a.hasLines, isClosed: a.isClosed, items: e },
                g = P(a.items),
                h = 1 === g[0],
                k = h ? g[1] : P(g),
                l = a.items.length - (h ? 2 : 1);
            e.push([0, k, k]);
            for (k = l; 0 < k; k--)
                switch (((l = a.items[k]), l[0])) {
                    case 2:
                        e.push([l[0], l[2], l[1]]);
                        break;
                    case 3:
                        e.push([3, l[4], l[3], l[2], l[1]]);
                }
            h && e.push([1, g[2], g[1]]);
            a = f;
        }
        var m;
        e = na(Ep(a, a.hasCurves));
        f = na(Ep(c, c.hasCurves));
        f !== e && (a.items.length === c.items.length && 45 > Math.abs(e - f) && (m = !0), m || (b && !d ? (a = Aa(jq(a, f)).shapes[0]) : ((b = Aa(jq(c, e))), (c = 1 == b.shapes.length ? b.shapes[0] : c))));
        b = lq(a, c);
        c = b.from;
        b = b.to;
        c.items.length !== b.items.length && c.items.length !== b.items.length && ((m = Hc(c)), (a = Hc(b)), (d = me(m, a)), (m = me(a, m)), m.length < d.length ? jd(b, d, c.items.length) : jd(c, m, b.items.length));
        if (c.items.length !== b.items.length) {
            if (c.items.length > b.items.length) {
                c.items.splice(Math.floor(c.items.length / 2), 1);
                var n = c,
                    p = b.items.length;
            } else c.items.length < b.items.length && (b.items.splice(Math.floor(b.items.length / 2), 1), (n = b), (p = c.items.length));
            for (; n.items.length > p; ) n.items.splice(Math.floor(n.items.length / 2), 1);
        }
        return { from: c, to: b };
    }
    function oq(a, c, b) {
        for (var d, e = Number.MAX_VALUE, f = 0, g = a.length; f < g; f++) {
            var h = P(a[f]),
                k = Uc(h[0], h[1], b + 90, 10);
            k = Wn(h, k, c);
            k < e && ((d = h), (e = k));
        }
        return d;
    }
    function pq(a, c, b) {
        var d = b.count - b.del,
            e = "step" === b.type ? 2 : 1,
            f = G(a.items.length < c.items.length ? [a, c] : [c, a], 2),
            g = f[0],
            h = f[1];
        Hc(g);
        se(g);
        f = function (b, a) {
            --a;
            a = (-1 < a ? a : 0) * e;
            return [a, b.length - 2 - a];
        };
        var k = f(g.items, b.at),
            l = [],
            m = function (b, a, c) {
                void 0 === c && (c = -1);
                var d = 1e-4 * c;
                ob(a, function (a) {
                    l.push(b + (a + 1) * d);
                });
            };
        a.items.length !== c.items.length
            ? 0 > d
                ? pq(c, a, { action: "splice", at: b.at, count: -d, del: 0, type: b.type, shapeName: b.shapeName })
                : ("area" == b.shapeName ? (m(g.items[k[0]].position, e, -1), m(g.items[k[1]].position, e, 1)) : m(g.items[k[0]].position, e, -1), jd(g, l), (l = []))
            : b.shift &&
              ("area" === b.shapeName
                  ? (Hc(h), (d = c.items), (g = f(d, 1)), m(d[g[0]].position, e, 1), m(d[g[1]].position, e, -1), jd(c, l), (l = []), (d = a.items), (g = f(d, b.pointsLen)), m(d[g[0]].position, e, 1), m(d[g[1]].position, e, -1), jd(a, l))
                  : (m(1, e, -1), jd(a, l), (l = []), m(0, e, 1), jd(c, l)),
              (l = []));
        return { from: a, to: c };
    }
    function ox(a, c, b) {
        void 0 === b && (b = {});
        var d = {};
        if (a && c && b.simple) return (d.final = c), (d.from = a.items(!0)), (d.to = c.items(!0)), qq(d);
        d.final = Ic(c.items());
        if (a.hasErrors) return rq(d);
        if (c.hasErrors) return (d.final = a), rq(d);
        var e;
        if ((e = b.slice) && e.from && e.to) (d.slice = e), (d.stepFn = px(d));
        else if ((e = b.needle) && e.from && e.to) (d.needle = e), (d.stepFn = qx(d));
        else if (!b.simple)
            if (b.action) {
                var f = a;
                e = c;
                if (f.hasCurves || e.hasCurves) (f = ai(f)), (e = ai(e));
                f = f.items();
                e = e.items();
                f = b.at > Math.min(f.length, e.length) - 1 ? null : pq({ items: f }, { items: e }, b);
            } else f = sq(d, a, c);
        d.from = f ? f.from.items : a.items();
        d.to = f ? f.to.items : c.items();
        return d.stepFn || qq(d);
    }
    function rq(a) {
        return function () {
            return a.final.toString();
        };
    }
    function qq(a) {
        return function (c) {
            if (1 === c) return a.final.toString();
            for (var b = a.invertStep ? rx : sx, d = "", e, f, g, h = 0; h < a.from.length; h++) {
                var k = a.from[h],
                    l = (f = a.to[h] || f),
                    m = k[0];
                d += e !== m ? re[m] : " ";
                e = m;
                if (1 !== e) for (m = 2; m < k.length; m++) (g = l[m] || g), (d += (2 < m ? " " : "") + (b(k[m][0], g[0], c) + " " + b(k[m][1], g[1], c)));
            }
            return d;
        };
    }
    function tq(a) {
        return function (c) {
            if (1 === c) return a.final.toString();
            a.invertStep && (c = 1 - c);
            return Ed(a.final, 0, c);
        };
    }
    function px(a) {
        return function (c) {
            if (1 === c) return a.final.toString();
            var b = a.slice.from,
                d = a.slice.to;
            c = { cxy: uq(b.cxy, d.cxy, c), start: kd(b.start, d.start, c), end: kd(b.end, d.end, c), open: d.open, r: kd(b.r, d.r, c), innerR: kd(b.innerR, d.innerR, c), caps: d.caps };
            b = c.cxy;
            return xa(ll(b[0], b[1], c.r, c.r, c));
        };
    }
    function qx(a) {
        return function (c) {
            if (1 === c) return a.final.toString();
            var b = a.needle.from,
                d = a.needle.to;
            c = { arc: { cxy: uq(b.arc.cxy, d.arc.cxy, c), angle: kd(b.arc.angle, d.arc.angle, c) }, xyz: [0, 0, kd(b.xyz[2], d.xyz[2], c)], xyzs: [0, 0, kd(b.xyzs[2], d.xyzs[2], c)] };
            return xa(a.needle.gen(c));
        };
    }
    function sq(a, c, b) {
        if (!c || 0 === c.shapes.length) {
            c = { items: b.items() };
            var d = og(c, b.hasCurves);
            c = b.items();
            var e = [],
                f = G(d, 2);
            d = f[0];
            f = f[1];
            for (var g = 0; g < c.length; g++) {
                for (var h = c[g].slice(0), k = 1; k < h.length; k++) h[k] = [d, f];
                e.push(h);
            }
            c = Ic(e);
            return (a = sq(a, c, b)) ? a : { from: { items: c.items() }, to: { items: b.items() } };
        }
        if (vq(c, b)) a.stepFn = tq(a);
        else if (vq(b, c)) (a.stepFn = tq(a)), (a.invertStep = !0);
        else return nx(c, b);
    }
    function vq(a, c) {
        return 1 === a.shapes.length && 1 === a.shapes[0].items.length && (1 < c.shapes.length || 1 < c.shapes[0].items.length);
    }
    function tx(a) {
        if ("linear" === a) return null;
        var c = ux.exec(a);
        return c
            ? $f.apply(this, c.slice(1).map(Number))
            : (c = vx.exec(a))
            ? bi(Number(c[1]), { start: 1, middle: 0.5, end: 0 }[c[2]])
            : (a = { ease: $f(0.25, 0.1, 0.25, 1), "ease-in": $f(0.42, 0, 1, 1), "ease-out": $f(0, 0, 0.58, 1), "ease-in-out": $f(0.42, 0, 0.58, 1), "step-start": bi(1, 1), "step-middle": bi(1, 0.5), "step-end": bi(1, 0) }[a])
            ? a
            : null;
    }
    function wq(a) {
        var c = a ? W(xq, nb(a) ? { duration: a } : a) : xq;
        "linear" !== c.easing && (c.easingFunction = tx(c.easing) || yq);
        c.activeDuration = Math.abs((0 === c.duration || 0 === c.iterations ? 0 : c.duration * c.iterations) / c.playbackRate);
        c.totalDuration = c.delay + c.activeDuration + c.endDelay;
        a = function (b) {
            if (null == b) var a = 0;
            else (a = c.delay + c.activeDuration + c.endDelay), (a = b < Math.min(c.delay, a) ? 1 : b >= Math.min(c.delay + c.activeDuration, a) ? 2 : 3);
            a: {
                switch (a) {
                    case 1:
                        if ("backwards" === c.fill || "both" === c.fill) {
                            b = 0;
                            break a;
                        }
                        break;
                    case 3:
                        b -= c.delay;
                        break a;
                    case 2:
                        if ("forwards" === c.fill || "both" === c.fill) {
                            b = c.activeDuration;
                            break a;
                        }
                }
                b = null;
            }
            if (null === b) a = null;
            else {
                var e = c.iterationStart;
                0 === c.duration ? 1 !== a && (e += c.iterations) : (e += b / c.duration);
                var f = Infinity === e ? c.iterationStart % 1 : e % 1;
                0 !== f || 2 !== a || 0 === c.iterations || (0 === b && 0 !== c.duration) || (f = 1);
                b = f;
                e = 2 === a && Infinity === c.iterations ? Infinity : 1 === b ? Math.floor(e) - 1 : Math.floor(e);
                a = c.direction;
                "normal" !== a && "reverse" !== a && ("alternate-reverse" === a && (e += 1), (a = "normal"), Infinity !== e && 0 !== e % 2 && (a = "reverse"));
                a = c.easingFunction("normal" === a ? b : 1 - b);
            }
            return a;
        };
        a.options = c;
        return a;
    }
    function rl(a) {
        return ja(a)
            ? B(a, function (a) {
                  return rl(a);
              })
            : parseFloat(zq(a, "px", ""));
    }
    function wx(a, c, b) {
        var d = wq({ duration: 100, easing: b });
        return function (b) {
            b = d(b);
            return { current: of(a, c, b), timeFraction: b };
        };
    }
    function sl(a, c) {
        if (c.linearGradient) var b = "linearGradient";
        else if (c.radialGradient) b = "radialGradient";
        else return;
        var d = Aq[b],
            e = d.argsToAttrs(c),
            f = e.attrs;
        e = e.stops;
        var g = [];
        f.hash || g.push(d.toString(f));
        e = B(e, function (b) {
            if (ja(b)) {
                b = G(b, 3);
                var a = b[0],
                    c = b[1];
                b = b[2];
            } else (a = b.offset), (c = b.color), (b = b.opacity);
            a = { offset: Q(a) ? "0%" : a, color: Q(c) ? "black" : c, opacity: Q(b) ? "1" : b };
            f.hash || g.push(Aq.stopToString(a));
            return a;
        });
        d = f.hash || d.keyPrefix + "(" + pc(g, ", ") + ")";
        a = fq(a, b, f, d, c);
        a.attr.childNodes = B(e, function (b) {
            var a = { offset: b.offset, "stop-color": b.color };
            b = b.opacity;
            0 <= b && 1 > b && (a["stop-opacity"] = b);
            return { tag: "stop", attr: a };
        });
        a.updateAttr = xx;
        return a;
    }
    function xx(a, c, b) {
        var d = a.el,
            e = b.renderer;
        if (a.isDestroyed || (d && d.isDestroyed)) a = sl(e, a.val);
        else if (d) return a;
        if ((c = b.data.vals[c]) && c.attr && a.tag === c.tag && ((b = c.el), (d = e._s0[c.attr.id] || 0), b && 1 === d)) {
            d = a.attr;
            var f = b.data.attrs.id;
            if (f === d.id) return (a.el = b), a;
            c.isDestroyed = !0;
            pl(e, d.id);
            pl(e, f);
            c = a;
            var g = a.hash;
            e._s1[f] = c;
            g && ((c = e._s3), (e._s2[g] = f), (c[f] = g));
            d.id = f;
            yx(b, d);
            a.el = b;
            return a;
        }
        a.el = e.element(a).add(eq(e));
        return a;
    }
    function yx(a, c) {
        var b = c.childNodes,
            d = a.childNodes;
        a.attr(Ga(c, ["childNodes"]));
        Ub(
            b,
            d,
            function (b) {
                return a.renderer.element(b).add(a);
            },
            function (b, a) {
                return a.attr(b.attr);
            },
            function (b) {
                return b.destroy();
            }
        );
    }
    function Ab(a, c) {
        w(a, function (b) {
            return (xg[b] = c);
        });
    }
    function zx(a, c, b, d, e) {
        if (J(ci, a)) {
            if (!d) return ci[a];
            d[ci[a]] = b;
        }
    }
    function Ax(a, c, b, d, e) {
        if (!d) return "attr";
        L(d, b);
    }
    function Bx(a, c, b, d, e) {
        if (!d) return "d";
        a = b && c && Pa(b) && !0 !== b.isElement ? (ja(b) ? pc(b, " ") : b) : b;
        d.d = a;
    }
    function Cx(a, c, b, d, e) {
        "overflow" === a && d && c && b && ((a = c.data.vals["clip-path"]), "visible" === b ? a && (d["clip-path"] = null) : "hidden" === b && (a || (a = vg(c.renderer, "clipRect")), (d["clip-path"] = a)));
    }
    function Bq(a, c, b, d, e) {
        "clipPath" === a &&
            d &&
            c &&
            !J(d, "clip-path") &&
            ((a = c.data.vals["clip-path"]),
            b ? ((b = Pe(e, O(b) || b.isPath ? { d: b } : b, Dx)), a ? (a.attr = L(a.attr, b)) : (a = vg(c.renderer, "clipPath", b)), (d["clip-path"] = a), c.shadowEl && Ex(c.shadowEl, b)) : a && (d["clip-path"] = null));
    }
    function tl(a, c) {
        var b = a.shadowTranslate,
            d = b[0],
            e = b[1];
        b = Aa(c).translate(function (b) {
            return [b[0] + d, b[1] + e];
        });
        a.attr({ d: c + b });
        if ((a = a.data.vals["clip-path"])) (a.attr = L(a.attr, { d: b })), a.updateAttr(a);
    }
    function Ex(a, c) {
        var b = c.d;
        a.childNodes.length
            ? w(a.childNodes, function (a) {
                  return tl(a, b);
              })
            : tl(a, b);
    }
    function Fx(a, c, b, d, e) {
        if ("shadow" === a && d && c) {
            e && J(e, "clipPath") && !J(d, "clip-path") && Bq("clipPath", c, e.clipPath, d, e);
            var f = c.shadowEl;
            !b && f
                ? Cq(c)
                : b &&
                  (!0 === b && (b = Oa({ mode: "interpolation", x: 5, y: 5, color: "rgba(0,0,0,.075)", toColor: "rgba(0,0,0,.025)", interpolationSteps: 2, interpolationFunc: "linear" })),
                  (b.mode = b.mode || "simple"),
                  (a =
                      b.mode +
                      " " +
                      (b.x || 0) +
                      " " +
                      (b.y || 0) +
                      " " +
                      (b.blur || 0) +
                      " " +
                      (b.color || "black") +
                      " " +
                      (b.toColor || "white") +
                      " " +
                      (b.interpolationSteps || 0) +
                      " " +
                      (b.interpolationFunc || "linear") +
                      " " +
                      (b.inset ? "inset" : "")),
                  (f && f.data.shadowConfig.val === a) ||
                      ((f && f.data.shadowConfig.mode === b.mode) ||
                          (f && Cq(c),
                          (c.shadowEl = f = Gx(b, c, d)),
                          c.isPatched && c.renderer.addBefore(f, c),
                          c.refNodes.push(f),
                          (f.ownerAttrsChanged = function (b) {
                              return Hx(f, b, c);
                          }),
                          (f.alignBeforeOwner = !0)),
                      (f.data.shadowConfig = W(b, { val: a })),
                      Ix(b, f, c, d)));
        }
    }
    function Hx(a, c, b) {
        if (!b.data.vals["clip-path"]) {
            var d = be({}, Hb(c, Dq), { fill: void 0, stroke: void 0 });
            a.childNodes.length
                ? w(a.childNodes, function (b) {
                      return b.attr(d);
                  })
                : a.attr(d);
        }
    }
    function Gx(a, c, b) {
        return "interpolation" === a.mode ? c.renderer.element("g") : Eq(c, b["clip-path"]);
    }
    function Eq(a, c) {
        if ((c = c || a.data.vals["clip-path"])) return (c = c.attr.d), a.renderer.element("path", { d: c, "fill-rule": "evenodd", clipPath: c, stroke: "none" });
        c = W(Hb(a.data.attrs, Dq), { fill: "none", stroke: "none" });
        return a.renderer.element(a.nodeName, c);
    }
    function Ix(a, c, b, d) {
        if ("radial" === a.mode && a.blur)
            c.renderer.attr(c, {
                translate: [a.x, a.y],
                fill: {
                    radialGradient: {},
                    stops: [
                        ["0%", a.color],
                        [100 - a.blur + "%", a.color],
                        ["100%", a.toColor || "white"],
                    ],
                },
            });
        else if ("interpolation" === a.mode) {
            var e = a.interpolationSteps || 1,
                f = a.interpolationFunc || "linear",
                g = le(a.color || "black", a.toColor || "white");
            f = wx([0, 0], [a.x, a.y], f);
            var h = 100 / e,
                k = !1;
            c.childNodes.length !== e &&
                (c.childNodes.length &&
                    w(yg(c.childNodes), function (b) {
                        return b.destroy();
                    }),
                (k = !0));
            for (var l = (d = b.data.vals["clip-path"] || d["clip-path"]) ? d.attr.d : null, m = 0; m < e; m++) {
                var n = k ? Eq(b, d).add(c) : c.childNodes[m],
                    p = 0 === m ? { timeFraction: 1, current: [a.x, a.y] } : f(h * (e - m)),
                    q = p.current;
                p = g(p.timeFraction);
                l ? ((n.shadowTranslate = q), n.attr({ fill: p }), tl(n, l)) : n.attr({ translate: q, fill: p });
            }
        } else c.renderer.attr(c, { translate: [a.x, a.y], fill: a.color });
    }
    function Cq(a) {
        var c = a.shadowEl,
            b = a.refNodes;
        if (b.length) {
            var d = b.indexOf(c);
            -1 < d && b.splice(d, 1);
        }
        c.destroy();
        delete a.shadowEl;
    }
    function Jx(a, c, b, d, e) {
        if (J(ul, a)) {
            a = ul[a];
            c && c.isHtml && (a = Kx[a]);
            if (!d) return a;
            J(d, a) || (d[a] = di(a, b, e, c));
        }
    }
    function di(a, c, b, d) {
        if (!c || !d || (!O(c) && !Pa(c)) || c.isElement) return c;
        a: if (b && "fill" === a && !c.pattern && !N(c, ["meta", "pattern"]) && !N(c, ["val", "meta", "pattern"])) {
            a = d.data;
            if (!yc(["hatch", "hatchPattern"], b)) {
                if (!J(a, "hatch")) break a;
                b.hatchPattern = a.hatchPattern;
                b.hatch = a.hatch;
            }
            var e = b.hatch || "black";
            a.hatchPattern = "" + (b.hatchPattern || "horizontal");
            a.hatch = e;
            c = "none" === b.hatchPattern || "none" === b.hatch ? c : { pattern: "" + (b.hatchPattern || "horizontal"), color: b.hatch || "black", backgroundColor: b.fill };
        }
        return O(c) ? Lx(c, d) : Pa(c) ? ((b = c.linearGradient || c.radialGradient ? sl(d.renderer, c) : c.pattern ? Mx(c, d, b) : c), b) : c;
    }
    function Fq(a, c) {
        a = vg(a.renderer, "pattern", c);
        a.val = c;
        return a;
    }
    function Mx(a, c, b) {
        return (b = lx(
            a,
            c,
            function (b) {
                return di("fill", b, null, c);
            },
            b
        ))
            ? Fq(c, b)
            : a;
    }
    function Nx(a, c) {
        var b = c.renderer;
        a = Gd(a, "'\"");
        return Fq(c, { hash: "#image:" + a, width: "100%", height: "100%", patternContentUnits: "objectBoundingBox", childNodes: [b.image({ src: a, width: 1, height: 1, preserveAspectRatio: "none" })] });
    }
    function Lx(a, c) {
        var b = /(.*)\((.*)\)/g.exec(a);
        if (!b) return a;
        var d = G(b, 3);
        b = d[1];
        d = d[2];
        if (!b || !d) return a;
        var e = Re(d, ", "),
            f = function () {
                return B(yg(e, 1), function (b) {
                    return Gq(Re(b, " "));
                });
            };
        d = function (b) {
            var a = f();
            a[b] = Re(e[0], " ");
            return sl(c.renderer, a);
        };
        return "linear-gradient" === b ? d("linearGradient") : "radial-gradient" === b ? d("radialGradient") : "url" === b && "#" !== e[0].charAt(0) ? Nx(e[0], c) : a;
    }
    function Ox(a, c, b, d, e) {
        a = c && c.isHtml ? "border-width" : "stroke-width";
        if (!d) return a;
        J(d, a) || (d[a] = di(a, b, e, c));
    }
    function Px(a, c, b, d, e) {
        if (!d || !c) return a;
        if ("text" !== c.nodeName && "tspan" !== c.nodeName) d[a] = di("stroke", b, e, c);
        else {
            var f = c.strokeEl;
            !b && f
                ? Hq(c)
                : b &&
                  !1 !== b.visible &&
                  ((a = O(b) ? { stroke: b } : b),
                  (b = JSON.stringify(a)),
                  (f && f.data.strokeHash === b) ||
                      (f && Hq(c),
                      (c.strokeEl = f = c.renderer.element(c.nodeName, c.data.vals)),
                      c.isPatched &&
                          (c.renderer.addBefore(f, c),
                          (f.el.style.stroke = Qx(a.stroke, c)),
                          (f.el.style.strokeWidth = a["stroke-width"] || e.strokeWidth),
                          (f.el.style.strokeDasharray = a["stroke-dasharray"]),
                          (f.el.style.strokeOpacity = a["stroke-opacity"]),
                          (f.el.style.strokeLinejoin = "round"),
                          (f.el.innerHTML = c.el.innerHTML)),
                      c.refNodes.push(f),
                      (f.ownerAttrsChanged = function (b) {
                          f.el.innerHTML = c.el.innerHTML;
                      }),
                      (f.alignBeforeOwner = !0),
                      (f.data.strokeHash = b)));
        }
    }
    function Hq(a) {
        var c = a.strokeEl;
        c.destroy();
        delete c.ownerAttrsChanged;
        delete a.strokeEl;
    }
    function Qx(a, c) {
        return Ek(a) ? gg(N(c, ["parentNode", "data", "attrs", "fill"]) || "black", a) : a;
    }
    function Rx(a, c, b, d, e) {
        if (J(ei, a)) {
            if (!d) return ei[a];
            if (e && !J(d, "transform"))
                if (O(e.transform) || null === e.transform) d.transform = e.transform;
                else {
                    var f;
                    c && (a = c.attr("transform")) && J(a, "val") && (f = a);
                    f = f || {};
                    e.transform && L(f, e.transform);
                    Da(ec, function (b) {
                        J(e, b) && (f[b] = e[b]);
                    });
                    var g = [];
                    Da(ec, function (b) {
                        if (J(f, b) && null !== f[b]) {
                            var a = ec[b][1](f[b]);
                            null != a && g.push(b + "(" + pc(a, ",") + ")");
                            f[b] = a;
                        }
                    });
                    if ((a = g.length ? pc(g, " ") : null)) f.val = a;
                    d.transform = a ? f : null;
                }
        }
    }
    function Sx(a, c, b, d, e) {
        if (J(fi, a)) {
            if (!d) return fi[a];
            a = fi[a];
            b && c && (c.data.zIndex = b);
            d[a] = b;
        }
    }
    function Tx(a, c, b, d, e) {
        if (!d) return "easing";
        a = b && O(b) ? (J(Iq, b) ? Iq[b] : b) : b;
        d.easing = a;
    }
    function Ux(a, c, b, d, e) {
        if ("mask" === a) {
            if (!d) return a;
            c && !J(d, "mask") && (b ? ((a = c.data.vals.mask), (b = Pe(e, O(b) ? { d: b } : b, Vx)), a ? (a.attr = L(a.attr, b)) : (a = vg(c.renderer, "mask", b)), (d.mask = a)) : (d.mask = null));
        }
    }
    function Wx(a, c, b, d, e) {
        if (!d) return "text";
        d.text = c.isHtml ? b : b.replace(Xx, " ");
    }
    function Ob(a) {
        return function (c) {
            vl[a] = c;
        };
    }
    function Jq(a) {
        if (a.type && 0 === a.type.indexOf("touch")) return !0;
        a = a || window.event;
        return "buttons" in a && 1 === a.buttons ? !0 : 1 === (a.which || a.button);
    }
    function pf(a, c) {
        function b() {
            return (d = c.getBoundingClientRect());
        }
        if (void 0 === a.eventData.clientX || void 0 === a.eventData.clientY) (a.eventData.clientX = a.clientX), (a.eventData.clientY = a.clientY);
        var d = null,
            e = null;
        a.eventData.coordinates = {
            getPageXY: function () {
                var f = a.eventData.pageX,
                    g = a.eventData.pageY;
                if (void 0 === f || void 0 === g) d || (d = b()), e || (e = c.getBBox ? c.getBBox() : null), (f = a.eventData.clientX - d.left + (e ? e.x : 0)), (g = a.eventData.clientY - d.top + (e ? e.y : 0));
                return { x: f, y: g };
            },
            getOuterBox: b,
        };
    }
    function gi(a, c) {
        return c ? c.querySelector(a) : ba.querySelector(a);
    }
    function Kq(a, c, b) {
        wl(a, c, { reorder: b });
        a.el.appendChild(c.el);
        c.refNodes.length &&
            w(c.refNodes, function (b) {
                return b.alignBeforeOwner && zg(b, c);
            });
    }
    function zg(a, c, b) {
        var d = c.parentNode;
        wl(d, a, { index: d.childNodes.indexOf(c), reorder: b });
        c.el.parentNode.insertBefore(a.el, c.el);
        a.refNodes.length &&
            w(a.refNodes, function (b) {
                return b.alignBeforeOwner && zg(b, a);
            });
    }
    function Lq(a, c, b) {
        var d = c.parentNode,
            e = d.childNodes,
            f = e.indexOf(c) + 1;
        wl(d, a, { index: f === e.length ? null : f, reorder: b });
        c.el.parentNode.insertBefore(a.el, c.el.nextSibling);
        a.refNodes.length &&
            w(a.refNodes, function (b) {
                return b.alignBeforeOwner && zg(b, a);
            });
    }
    function Yx(a) {
        Zx(a.el);
        Mq(a);
        a.childNodes = [];
        a.refNodes.length &&
            (w(a.refNodes, function (a) {
                return a.destroy();
            }),
            (a.refNodes = []));
        delete a.el;
    }
    function wl(a, c, b) {
        b = b || { reorder: !1, index: null };
        var d = b.reorder;
        b = b.index;
        c && (a !== c.parentNode || d) && ((d = Mq(c)), -1 < d && d < b && b--, a && ((d = a.childNodes), 0 === b ? d.unshift(c) : b ? d.splice(b, 0, c) : d.push(c), (c.parentNode = a)));
    }
    function Mq(a) {
        if (!a.parentNode) return -1;
        var c = a.parentNode.zIndexHash,
            b = a.data.zIndex || 0;
        c[b] && delete c[b];
        c = a.parentNode.childNodes;
        b = c.indexOf(a);
        if (0 > b) return -1;
        c.splice(b, 1);
        a.parentNode = null;
        return b;
    }
    function Ag(a, c, b) {
        if (!a || a instanceof tb) return a;
        b = new tb(a, c, b);
        var d = b.data.attrs,
            e,
            f = {};
        if (a.hasAttributes()) {
            var g = a.attributes;
            try {
                for (var h = ya(g), k = h.next(); !k.done; k = h.next()) {
                    var l = k.value;
                    f[l.name] = l.value;
                }
            } catch (x) {
                var m = { error: x };
            } finally {
                try {
                    k && !k.done && (e = h.return) && e.call(h);
                } finally {
                    if (m) throw m.error;
                }
            }
        }
        L(d, f);
        a.parentNode && (b.parentNode = new tb(a.parentNode, c, void 0));
        var n;
        a = [];
        c = b.el.childNodes;
        try {
            for (var p = ya(c), q = p.next(); !q.done; q = p.next()) {
                var r = q.value;
                1 === r.nodeType && a.push(Ag(r, b.renderer));
            }
        } catch (x) {
            var u = { error: x };
        } finally {
            try {
                q && !q.done && (n = p.return) && n.call(p);
            } finally {
                if (u) throw u.error;
            }
        }
        b.childNodes = a;
        return b;
    }
    function $x(a, c, b) {
        c.omit && ((c = Ga(c, c.omit)), delete c.omit);
        for (var d in c) {
            var e = c[d],
                f = e;
            if (e && e.isDef) e.updateAttr && (e = e.updateAttr(e, d, a)), (f = "url(#" + e.attr.id + ")");
            else if (e instanceof tb) e.el ? ((f = e.el.id), lc(f) && ((f = Dd()), xl(e, "id", f)), (f = "url(#" + f + ")")) : (f = Nq(a, d));
            else if ("transform" === d)
                if (e) {
                    if (O(e)) throw Error("String transform is not support. val:" + e);
                    a.data.transform = e;
                    f = e.val;
                } else a.data.transform = e;
            f = lc(f) ? f : oh(f);
            a.data.vals[d] = e;
            xl(a, d, f, b);
        }
        a.refNodes.length &&
            w(a.refNodes, function (b) {
                return b.ownerAttrsChanged && b.ownerAttrsChanged(c);
            });
    }
    function ay(a, c) {
        if (t(c)) {
            if (c) {
                var b = G(ja(c) ? c : [c.x, c.y, c.width, c.height], 4);
                b = qf(b[0], b[1], b[2], b[3]);
                return (a.data.box = b);
            }
            delete a.data.box;
        }
        if (a.data.box) return a.data.box;
        a = a.el;
        if (!a) return qf();
        c = a.nodeName.toLowerCase();
        if ("svg" === c || "div" === c) return a.parentNode ? ((a = a.getBoundingClientRect()), qf(0, 0, a.width, a.height)) : qf(0, 0, 0, 0);
        try {
            return (b = a.getBBox()), qf(b.x, b.y, b.width, b.height);
        } catch (d) {
            return qf();
        }
    }
    function qf(a, c, b, d) {
        void 0 === a && (a = 0);
        void 0 === c && (c = 0);
        void 0 === b && (b = 0);
        void 0 === d && (d = 0);
        return { x: a, y: c, width: b, height: d };
    }
    function Oq(a, c, b) {
        var d,
            e = a.childNodes,
            f = parseFloat(c.attr("z-index"));
        b > a.zIndexMax
            ? (a.zIndexMax = b)
            : ((d = a.zIndexHash[b])
                  ? Lq(c, d, !0)
                  : (d = S(e, function (a) {
                        return (a.data.zIndex || 0) > b;
                    })) && zg(c, d, !0),
              d && (a.zIndexMax = e[e.length - 1].data.zIndex));
        f !== b && a.zIndexHash[f] === c && delete a.zIndexHash[f];
        a.zIndexHash[b] = c;
        d || Kq(a, c, !0);
    }
    function xl(a, c, b, d) {
        var e = a.el,
            f = a.data.attrs,
            g = f[c];
        Pq[c] === b && (b = null);
        if (g != b) {
            if ("z-index" === c) (e = parseFloat(b)), a.parentNode && Oq(a.parentNode, a, e);
            else if ("text" === c) e.textContent = b;
            else if ("value" === c) e.value = b;
            else if ("innerHTML" === c) e.innerHTML = b;
            else if (hi(e.tagName) && "type" === c) e.type = b;
            else if (hi(e.tagName) && "accept" === c) e.accept = b;
            else if (((a = b), null == a)) yl(e, c) ? e.style && (e.style[c] = "") : e.removeAttribute(c);
            else if (yl(e, c)) e.style && (e.style[c] = a);
            else {
                var h = Qq(c);
                h ? e.setAttributeNS(h, c, a) : e.setAttribute(c, a);
            }
            f[c] = b;
            d && d(c, g, b);
        }
    }
    function Rq(a, c) {
        var b = L({}, a.data.attrs),
            d = "path" === a.nodeName,
            e = function (b, d) {
                (c && J(c, b)) || xl(a, b, d);
            };
        Da(b, function (b) {
            (!d || ("fill" !== b && "stroke" !== b)) && e(b, null);
        });
        d && (e("fill", "none"), e("stroke", "none"));
    }
    function Nq(a, c) {
        var b = a.data.attrs,
            d = a.el,
            e = void 0;
        if ("transform" === c) return L({}, a.data[c]) || null;
        "path" !== a.nodeName || ("fill" !== c && "stroke" !== c) || (e = "none");
        (a = b[c] || e || Pq[c]) ||
            ("text" === c ? (c = d.firstChild ? d.firstChild.nodeValue : "") : yl(d, c) ? ((d = d.style), (c = !d || ub(d[c]) ? null : d[c])) : (c = (a = Qq(c)) ? d.getAttributeNS(a, c) : d.getAttribute(c)), (a = c));
        return a;
    }
    function Sq(a) {
        return a && ((a.start && a.start.type) || (a.end && a.end.type));
    }
    function by(a) {
        var c = a.caps || {};
        c.lineWidth = z(c.lineWidth, a.lineWidth, a["stroke-width"]);
        return { lineWidth: c.lineWidth, start: (c.start && c.start.type) || c.type ? Up(be(c, c.start || {}, Tq)) : {}, end: (c.end && c.end.type) || c.type ? Up(be(c, c.end || {}, Tq)) : {}, eachShape: c.eachShape };
    }
    function cy(a, c) {
        var b = function (a, c) {
                return 2 > c || !ab(a[c], a[c + 1]) ? c : b(a, c - 1);
            },
            d = function (b) {
                b = b.shapes[0].items[1] || b.shapes[0].items[0];
                return Ia(b[2], b[1]);
            },
            e = function (a) {
                a = P(P(a.shapes).items);
                var c = b(a, a.length - 2);
                return Ia(a[c], a[c + 1]);
            };
        a = dy(a);
        var f = a.length(),
            g = function (b) {
                return ii(b) ? z(b.centerWidth, 0) : 0;
            },
            h = function (b) {
                return ii(b) ? z(b.centerWidth && b.width, 0) : 0;
            },
            k = h(c.start),
            l = h(c.end);
        h = g(c.start);
        c = g(c.end);
        var m = h / f,
            n = c / f;
        if ((g = m || n) && k + l > f) return null;
        f = g ? Vw(a, h, c, { mode: "caps" }) : a;
        var p = f.shapes[0].items[0][2],
            q = P(P(P(f.shapes).items));
        k = a.shapes[0].items[0][2];
        l = P(P(P(a.shapes).items));
        d = m && !ab(p, k) ? Ia(p, k) : d(f);
        e = n && !ab(q, l) ? Ia(q, l) : e(f);
        n = [p, q];
        h && (n[0] = ra(k, d - 180, h));
        c && (n[1] = ra(l, e - 180, c));
        return { clipLen: [h, c], points: n, angles: [d, e], d: g ? f : a };
    }
    function dy(a) {
        if (1 > a.shapes.length || (1 === a.shapes.length && 2 > a.shapes[0].items.length)) return a;
        a: for (var c = [0, 0], b = 0; b < a.shapes.length; b++)
            for (var d = a.shapes[b], e = 0 === b ? 1 : 0; e < d.items.length; e++) {
                var f = d.items[e];
                c = [b, e];
                if (!ab(f[1], P(f))) break a;
            }
        b = a.shapes.length - 1;
        a: for (; 0 <= b; b--)
            for (d = a.shapes[b], e = d.items.length - 1; 0 <= e; e--) {
                var g = [b, e];
                f = d.items[e];
                if (!ab(f[1], P(f))) break a;
            }
        b = [a.shapes[0].items[0]];
        for (d = c[0]; d <= g[0]; d++) for (e = a.shapes[d], f = d == c[0] ? c[1] : 0; f <= (d == g[0] ? g[1] : e.items.length - 1); f++) b.push(e.items[f]);
        return Ic(b);
    }
    function ey(a, c) {
        var b,
            d,
            e = function (b, a) {
                var c = a.cxy;
                a = a.angle;
                var d = b.concavity,
                    e = b.width,
                    f = b.height;
                c = !0 === b.overflow ? c : ra(c, a, -e / 2);
                c = mb(c, [e, f]);
                d = { angle: a, concavity: d };
                b = $p(b.type, c[0], c[1], c[2], c[3], d);
                if (d.skipTransform) return b;
                b = b.isPath ? b : Aa(b);
                return b.rotate(a + 90);
            },
            f = a.start || {};
        a = a.end || {};
        ii(f) && (b = e(f, { cxy: c.points[0], angle: c.angles[0] }));
        ii(a) && (d = e(a, { cxy: c.points[1], angle: c.angles[1] }));
        return { start: b, end: d };
    }
    function ii(a) {
        return a && a.type && "none" !== a.type;
    }
    function Uq(a) {
        var c = {},
            b = fy;
        Da(a, function (d) {
            if (J(b, d)) {
                var e = b[d];
                2 < e.length ? (c[e] = a[d]) : (c[e[0]] = e[1](a[d]));
            } else c[d] = a[d];
        });
        return c;
    }
    function gy(a, c, b) {
        a[c] = b;
    }
    function hy(a, c, b) {
        return zl(a, c, b) && { updateGlobalCoordinates: !0 };
    }
    function iy(a, c, b) {
        return zl(a, c, b) && { updateSharedAttrs: !0 };
    }
    function jy(a, c, b) {
        return ji(a, c, parseFloat(b) || Infinity);
    }
    function ji(a, c, b) {
        return zl(a, c, b) && { needRecalc: !0 };
    }
    function zl(a, c, b) {
        if (!vc(a[c], b)) return (a[c] = b), !0;
    }
    function ky(a, c, b) {
        b = "auto" === b || null === b || Ha(b) ? ld() : Qa(b, { isMutable: !1 });
        return ji(a, ly[c], b);
    }
    function my(a, c, b) {
        b = rf(b, a.width ? a.width.px : 0);
        return ji(a, c, b);
    }
    function ny(a, c, b, d) {
        var e = "string" === typeof a;
        a = e ? [{ val: a }] : a;
        for (var f = [], g = 0, h = a.length; g < h; g++) {
            var k = a[g];
            k.textVariants || (k.textVariants = oy(k.val, d.ignoreCategories));
            var l = k.textVariants,
                m = e ? c.personal : k,
                n = e ? c.own : W(c.own, m),
                p = [];
            k = function (a, f) {
                var h = l[a].completeString;
                d.preserveStartSpaces || 0 !== g || (h = h.replace(Hd.startSpaces, ""));
                d.preserveSpaces || (h = h.replace(Hd.spaces, " "));
                a = py(n, e ? c.parent : c.own, b);
                h = Xv(h, a, b);
                if (1 === f && t(a.width)) {
                    var k;
                    if ((k = parseFloat(a.width)))
                        delete a.width,
                            w(h.parts, function (b) {
                                b.text && ((b.width = k), (k = 0));
                            });
                }
                h.style = e ? c.personal : W(c.personal, m);
                p.push(h);
            };
            for (var q = 0, r = l.length; q < r; q++) k(q, r);
            f.push(p);
        }
        return f;
    }
    function oy(a, c) {
        if (-1 < a.indexOf("&ors;")) {
            var b = [{ completeString: "", variantsUsed: [] }],
                d = [],
                e = {},
                f = [],
                g = qy(a).split(Hd.variants);
            a = [];
            for (var h = 0, k = g.length; h < k; h++) h % 2 ? a.push(g[h]) : (a = a.concat(g[h].split(Hd.space)));
            h = 0;
            for (k = a.length; h < k; h++)
                if ((g = a[h])) {
                    g = g.split(Vq.orc);
                    var l = g[1];
                    l = l ? l.split(":") : [];
                    g = g[0].split(Vq.or);
                    f.push(1 < g.length && !c ? { versions: g, category: { variantsNumber: g.length, name: l[0] || "", priority: l[1] || 0 } } : g[0]);
                }
            a = 0;
            for (h = f.length; a < h; a++)
                if (((k = f[a]), (g = k.versions))) {
                    k = k.category;
                    l = e[k.name];
                    var m = 1;
                    l || ((l = b.length), k.name && !c && (e[k.name] = l), (m = g.length));
                    for (var n = [], p = 0; p < m; p++) n = n.concat(ry(b));
                    b = n;
                    for (m = 0; m < b.length; m++) (n = Math.floor(m / l) % g.length), (b[m].completeString += g[n]), b[m].variantsUsed.push(n);
                    d.push(k.priority);
                } else for (g = 0, l = b.length; g < l; g++) b[g].completeString += k;
            return sy(b, d);
        }
        return [{ completeString: a, variantsUsed: [] }];
    }
    function Wq(a) {
        for (var c = [], b = 0, d = a.length; b < d; b++) {
            var e = a[b];
            e && void 0 != e.length ? c.push(Wq(e)) : c.push(L({}, e));
        }
        return c;
    }
    function qy(a) {
        var c = new String(a);
        -1 < a.indexOf("&ors;") &&
            Da(Xq, function (b) {
                var a = Xq[b],
                    e = parseInt(b);
                Hd["char_" + b] || (Hd["char_" + b] = new RegExp("&#" + b + ";?" + (a ? "|&" + a + ";?" : ""), "ig"));
                c = c.replace(Hd["char_" + b], String.fromCharCode(e));
            });
        return c;
    }
    function sy(a, c) {
        for (var b = [], d = 0, e = c.length; d < e; d++) {
            var f = c[d];
            f && (b[parseInt(f) - 1] = d);
        }
        c = function () {
            var c = b[g];
            a.sort(function (b, a) {
                return b.variantsUsed[c] > a.variantsUsed[c];
            });
        };
        var g = 0;
        for (d = b.length; g < d; g++) c();
        return a;
    }
    function ry(a) {
        for (var c = [], b = 0, d = a.length; b < d; b++) {
            var e = a[b];
            c.push({ completeString: e.completeString, variantsUsed: e.variantsUsed.slice() });
        }
        return c;
    }
    function py(a, c, b) {
        c = c.fontSize;
        var d = b.fontSize;
        b = a.fontSize || c;
        if ("number" == typeof b) c = b;
        else {
            if (Hd.fontSize.test(b) && (d = parseFloat(b)))
                switch (b.replace(d, "")) {
                    case "em":
                        if (!c) {
                            d = 0;
                            break;
                        }
                        d *= parseFloat(c);
                        break;
                    case "pt":
                        d = (4 * d) / 3;
                }
            c = d;
        }
        a.fontSize = c;
        a.fontFamily = a.fontFamily;
        return a;
    }
    function ty(a) {
        a = a.split("|");
        var c = ["left", "center", "right"],
            b = ["top", "middle", "bottom"],
            d = {};
        w(a, function (a) {
            c[a] && (d.x = a);
            b[a] && (d.y = a);
        });
        return d;
    }
    function uy(a) {
        if (!a || a.push) return a;
        switch (I(a)) {
            case "number":
                return [a];
            case "string":
                return Oj(a);
        }
        return a;
    }
    function vy(a, c) {
        var b = a.length - 1;
        if (c < a[b].minSize.width.px) return a[b];
        if (c > a[0].minSize.width.px) return a[0];
        for (var d = 0; d <= b; ) {
            var e = Math.floor((d + b) / 2);
            if (c > a[e].minSize.width.px) b = e - 1;
            else if (c < a[e].minSize.width.px) d = e + 1;
            else return a[e].minSize.width.px;
        }
        return a[d];
    }
    function Yq(a, c, b) {
        var d = O(a),
            e = d ? ba.getElementById(a) : a;
        a = d ? a : a.getAttribute && a.getAttribute("id");
        d = b && b.preserve;
        var f = !a || !ki[a];
        if (f || !d) var g = new Al({ container: e, staticSize: !0, skipDomDestroy: !d });
        f ? ((e = g.textStack(c)), e.attr(L(Zq, b)), e.add().refresh(), a && d && (ki[a] = e)) : ((e = ki[a]), e.attr(L(Zq, b)).val(c).refresh());
        c = e.setPreliminarySize().getBbox();
        b = e.renderer.root.el;
        b.setAttribute("width", c.width + 1);
        b.setAttribute("height", c.height + 1);
        d || (e.destroy(), g.destroyChildren(), g.destroy(), a && delete ki[a]);
        return b;
    }
    function $q(a) {
        if (a.type) {
            var c = G(a.type.split(":"), 2),
                b = c[1];
            a.type = c[0];
            a.subType = b;
        } else a.type = "panel";
    }
    function sf(a, c, b) {
        li = li || {};
        var d = c.split(",");
        c = a + c + b;
        var e, f;
        if ((e = li[c])) return e;
        var g = 0;
        for (f = d.length; g < f; g++) {
            var h = void 0;
            e = a;
            var k = Gd(d[g]).replace("enum_", ""),
                l = !1,
                m = { sequence: [], explicit: [] };
            m.setting = e;
            for (e = e.toLowerCase(); !l; ) {
                var n = void 0;
                h = void 0;
                var p,
                    q = void 0,
                    r = void 0,
                    u = void 0,
                    x = e,
                    v = ke(k),
                    y = pa(v.members);
                x = Gd(x);
                var D = 0;
                for (p = y.length; D < p; D++)
                    if (0 !== x.indexOf(y[D].toLowerCase()) || (x.length !== y[D].length && !v.members[y[D]].chain))
                        0 !== x.indexOf(y[D].toLowerCase()) || x.length === y[D].length || v.members[y[D]].chain ? v.members[y[D]].isDefault && (r = y[D]) : (n = y[D]);
                    else {
                        q = y[D];
                        break;
                    }
                !q && n && (q = n);
                q ? (u = !0) : ((q = r), (h = !0));
                q
                    ? ((n = 0 === x.indexOf(q.toLowerCase()) ? x.replace(q.toLowerCase(), "") : x), (h = { match: q, isDefault: h, explicit: u, chain: v.members[q].chain, value: n, attributes: v.members[q].enumAttributes }))
                    : (h = { invalid: x });
                if (t(h.invalid)) (h.value = h.invalid), (l = !0);
                else {
                    if (!h.isDefault || !b) if (((m[k] = h.match), m.sequence.push(k), h.attributes)) for (var E in h.attributes) m[E] = h.attributes[E];
                    h.explicit && m.explicit.push(k);
                    k = h.chain;
                    e = h.value;
                    k || 0 !== e.length ? (k ? (k = k.replace("enum_", "")) : k || (l = !0)) : (l = !0);
                }
            }
            m.sequence = m.sequence.join(",");
            m.explicit = m.explicit.join(",");
            0 < h.value.length && (m.invalid = h.value);
            e = m;
            if (!e.invalid) break;
        }
        return (li[c] = e);
    }
    function wy(a, c) {
        var b = I(c);
        switch (a) {
            case "palette":
                if ("array" !== b && "object" !== b) return Fh(c);
        }
        return c;
    }
    function Bl(a, c) {
        c = Ac(c).slice(0);
        c.unshift(c.pop());
        a = Yb(a);
        a[0] += c[0];
        a[1] += c[1];
        a[2] -= c[2];
        a[3] -= c[3];
        return Ze(a);
    }
    function Bb(a, c) {
        var b = {},
            d = z(a.visible, !0),
            e = z(a.width, 1),
            f = z(a.opacity, 1) * z(c, 1),
            g = Dh(a.color || "black");
        c = z(a.caps, "butt");
        f *= g.opacity;
        d && !Q(a.color) ? ((b.stroke = g.hex), (b["stroke-opacity"] = f)) : ((b.stroke = "none"), (e = 0));
        if (!Q((d = a.dashStyle))) {
            a = e;
            d = d.toLowerCase();
            if ((d = xy[d].split(","))) {
                f = 0;
                for (g = d.length; f < g; f++) d[f] *= a;
                a = d.join(",");
            } else a = "none";
            b["stroke-dasharray"] = a;
        }
        b.fill = "none";
        b["stroke-width"] = e;
        b["stroke-linejoin"] = "round";
        O(c) ? (b["stroke-linecap"] = c) : (b.caps = c);
        return b;
    }
    function mi(a) {
        0 === a["stroke-width"] && (delete a["stroke-linejoin"], delete a["stroke-linecap"], delete a.stroke, delete a["stroke-opacity"]);
        return a;
    }
    function fc(a, c) {
        var b = {},
            d;
        c = z(a.opacity, 1) * z(c, 1);
        Q((d = a.outline)) || (b = Bb(d, c));
        Q((d = a.fill || a.color)) || ni(b, d, c);
        b["fill-rule"] = "evenodd";
        ar(b, a.hatch, b.stroke || "rgb(50,50,50)");
        !1 === a.visible && (b.opacity = 0);
        Q((d = a.d || a.path)) || (b.d = d);
        Q((d = a.size)) ? Q((d = a.radius)) || (b.r = d) : (b.r = (parseInt(d) || 0) / 2);
        return b;
    }
    function Bg(a, c, b) {
        var d,
            e = z(a.opacity, 1) * z(c, 1),
            f = {},
            g = {},
            h = {},
            k = {};
        !1 === a.boxVisible
            ? ((f.fill = !1 === a.boxPointerEvents ? "transparent" : "none"), (f.stroke = "none"), (f.shadow = !1))
            : (Q((d = a.outline)) || ((c = Bb(d, e)), A(f, c), A(h, c)), Q((d = a.fill)) || ni([k, f], d, e, b), kb(a, f, "radius", "r", void 0), kb(a, f, "shadow", void 0, void 0));
        kb(a, g, "margin", "margin", Ac);
        kb(a, g, "padding", "padding", Ac);
        kb(a, g, "width", void 0, void 0);
        kb(a, g, "height", void 0, void 0);
        Q((d = a.height)) ? (g.height = void 0) : (g.height = d);
        Q((d = a.style)) || A(g, d);
        kb(a, g, "zIndex", void 0, void 0);
        return { bg: f, root: g, stroke: h, fill: k };
    }
    function br(a) {
        var c = a.animation,
            b = C(a, "label.style"),
            d = C(a, "label.align"),
            e = a.outline,
            f = function (b, c, d) {
                kb(a, h, b, c, d);
            },
            g = function (b) {
                return b + "px";
            },
            h = { position: "absolute", whiteSpace: "nowrap" };
        f("radius", "radius", g);
        f("padding", "padding", g);
        f("fill", "background");
        f("offsetX", "left", g);
        f("offsetY", "top", g);
        f("width", "width", g);
        f("height", "height", g);
        f("radius", "borderRadius", g);
        f("text-align", "text-align");
        f("background-color", "background-color");
        f("border", "border");
        f("click", "onclick");
        f("visibility", "visibility");
        f("left", "left");
        f("top", "top");
        f("zIndex", "zIndex");
        d && (h.textAlign = d);
        t(b) && (kb(b, h, "color", "color"), kb(b, h, "fontSize", "fontSize"), kb(b, h, "fontFamily", "fontFamily"), kb(b, h, "fontWeight", "fontWeight"), kb(b, h, "textDecoration", "textDecoration"), kb(b, h, "fontStyle", "fontStyle"));
        t(e) && (h.border = e.color + " solid " + e.width + "px");
        t(c) && ((h.transitionProperty = c ? "left, top" : null), (h.transitionDuration = c ? (c.duration || 0) / 1e3 + "s" : null), (h.transitionTimingFunction = c ? c.easing : null));
        !1 === a.boxVisible && ((h.background = "none"), (h.border = "none"));
        return h;
    }
    function Cg(a, c) {
        var b = Bg(a, void 0, c);
        b = A(b.bg, b.root);
        var d,
            e = [];
        if (Q((d = a.corners)))
            Q((d = a.radius)) ||
                (ob(4, function () {
                    e.push({ type: "round", r: d });
                }),
                (f = { corners: e }));
        else var f = { corners: yy(d, a) };
        b.shape = L(a.shape || {}, f);
        "titleBox" === c &&
            b.shape &&
            w(b.shape.corners, function (b, a) {
                1 < a && (b.type = "square");
            });
        return b;
    }
    function yy(a, c) {
        var b = a,
            d = [];
        switch (I(a)) {
            case "string":
                ob(4, function () {
                    d.push({ type: b, r: c.radius });
                });
                break;
            case "array":
                if (4 !== b.length) for (b = b.slice(0); 4 > b.length; ) b.push("round");
                d = B(b, function (b) {
                    return { type: b, r: c.radius };
                });
                break;
            case "object":
                d = [
                    { type: b.topleft || "round", r: c.radius || 3 },
                    { type: b.topright || "round", r: c.radius || 3 },
                    { type: b.bottomright || "round", r: c.radius || 3 },
                    { type: b.bottomleft || "round", r: c.radius || 3 },
                ];
        }
        return d;
    }
    function qc(a, c, b) {
        var d,
            e = {};
        a = c ? Ga(a, c) : a;
        c = function (b, c, d) {
            kb(a, e, b, c, d);
        };
        var f;
        Q((d = a.color)) ? Q((d = N(a, ["style", "color"]))) || (f = d) : (f = d);
        f && (e.fill = ia(f, (b && b.color) || f));
        c("margin", "margin", Ac);
        c("padding", "padding", Ac);
        c("visible", "display", function (b) {
            return b ? "block" : "none";
        });
        c("align", "xAlignment");
        c("align", "xContentAlignment");
        c("verticalAlign", "yAlignment", function (b) {
            return b.replace("middle", "center");
        });
        c("cssClass", "className");
        c("rotate", "rotate");
        c("width");
        c("height");
        c("textOverflow");
        c("maxWidth");
        c("strategy");
        c("autoWrap");
        c("opacity");
        !Q((d = a.offset)) && (d = cr(d)) && ((e.offsetX = d[0]), (e.offsetY = d[1]));
        Q((d = a.outline)) || Sc(e, Bb(d), { fill: !0 });
        Q((d = a.style)) || A(e, d);
        return e;
    }
    function cr(a) {
        var c = I(a);
        if ("string" === c) {
            if (((a = a.split(",")), 2 === a.length)) return [parseInt(a[0]), parseInt(a[1])];
        } else {
            if ("number" === c) return [a, a];
            if ("array" === c) return a;
        }
    }
    function ar(a, c, b) {
        c && (kb(c, a, "style", "hatchPattern"), b && (c = A({ color: ia("contrast", b) }, c)), kb(c, a, "color", "hatch", Lb), "none" === a.hatchPattern && (delete a.hatchPattern, delete a.hatch, (a.stroke = "none")));
        return a;
    }
    function ni(a, c, b, d) {
        void 0 === b && (b = 1);
        var e = I(c);
        if ("undefined" !== e) {
            if ("object" !== e)
                if ("none" !== c) {
                    var f = Eh(oc(c), b);
                    d && "string" === typeof f && (f = dd(d, f));
                } else f = "transparent";
            else f = oc(c, 1 - b);
            a.pop
                ? w(a, function (b) {
                      return (b.fill = f);
                  })
                : (a.fill = f);
        }
    }
    function tf(a) {
        var c = "none" !== a.color,
            b;
        if ((b = !1 === a.visible)) (b = a && a.caps), (b = !(b && (b.end || b.start || b.type)));
        var d = 0 !== a.width;
        return (b && !a.color) || !d ? !1 : c;
    }
    function dr(a) {
        var c = a.outline;
        return (a.fill && "none" !== a.fill) || (c && "none" !== c && 0 !== c.width);
    }
    function Id(a) {
        var c = 0 !== N(a, ["text", "length"]);
        return !1 === a.visible ? !1 : !!c;
    }
    function Dg(a, c, b, d) {
        void 0 === d && (d = {});
        var e,
            f = (d.minIntervalGap = z(d.minIntervalGap, 0.3)),
            g = d.axOptions || {},
            h = g.scale || {};
        if (b.length) {
            var k = b[0];
            b = b[1];
        }
        var l = h.type && 0 === h.type.toLowerCase().indexOf("log");
        h = h.logBase || 10;
        var m = { interval: 0, min: 0, max: 0, range: 0 },
            n = oi(d.userMax) ? d.userMax : d.snapZero && 0 > c ? 0 : c,
            p = oi(d.userMin) ? d.userMin : d.snapZero && 0 <= a ? 0 : a,
            q = Xf([n, p]),
            r = Math.abs(n - p);
        if ((e = d.breaks)) (r = rv([[p, n]], e)), (r = eo(r));
        m.range = r = na(r, q);
        (q = d.minInterval || (k && r / k)) && (q.unit || O(q)) && ((q = Nh(q.unit ? q : { unit: q })), (q = q.count * q.unitRange));
        k = er(r, zy, q, b).best.interval;
        "auto" === d.userMinorInterval && ((q = Id(C(g, "defaultMinorTick.label"))), (g = tf(C(g, "defaultMinorTick.gridLine"))), (m.minorInterval = C(er(k, Ay, d.minInterval, q || g ? 2 : b), "best.interval")));
        q = Xf([a, c, r, k]);
        e = Math.log(Math.abs(c)) / Math.log(h);
        b = Math.log(Math.abs(a)) / Math.log(h);
        g = function (b) {
            var a = Math.floor(b);
            return b - a < f ? a - 1 : a;
        };
        r = function (b) {
            var a = Math.ceil(b);
            return a - b < f ? a + 1 : a;
        };
        e = 0 > c ? g(e) : r(e);
        b = 0 > a ? r(b) : g(b);
        oi(d.userMax)
            ? (d.userMax < a && (m.error = fr.badMax), (m.max = d.userMax))
            : l
            ? (m.max = Math.pow(h, e) * ce(c))
            : d.snapZero && 0 >= c
            ? (m.max = 0)
            : ((m.max = Math.ceil(c / k) * k), 0 !== m.max && c > m.max - k * f && (m.max += k));
        oi(d.userMin)
            ? (d.userMin > c && (m.error = fr.badMin), (m.min = d.userMin))
            : l
            ? (m.min = Math.pow(h, b) * ce(a))
            : d.snapZero && 0 <= a
            ? (m.min = 0)
            : ((m.min = Math.floor(a / k) * k), 0 !== m.min && a < m.min + k * f && (m.min -= k));
        l ? (m.log = [b, e]) : ((m.min = na(m.min, q)), (m.max = na(m.max, q)));
        m.range = m.max - m.min;
        m.interval = k;
        return m;
    }
    function er(a, c, b, d) {
        var e = -1,
            f = [],
            g = Math.pow(10, Math.floor(Math.log(a) / Math.LN10)),
            h,
            k = 0;
        for (h = c.length; k < h; k++) {
            var l = g / c[k],
                m = a / l + 1;
            f[k] = { interval: l, tickCount: m };
            m = m < d;
            l = Q(b) || l >= b;
            var n = k === h - 1;
            if (-1 === e && ((m && l) || n)) {
                e = k;
                break;
            }
        }
        return { prev: 0 < e ? f[e - 1] : void 0, best: f[e], next: e < h - 1 ? f[e - 1] : void 0 };
    }
    function By(a) {
        function c(b) {
            return 0 < b.length ? b[0] : "!@!@!";
        }
        function b(b, a) {
            return b[a] ? b[a] : 0;
        }
        function d(b) {
            for (var a = 0; a < f; a++) e[a].propNames[0] === b && e[a].propNames.shift();
        }
        var e = [],
            f = a.length,
            g = !1,
            h = "!@!@!",
            k = 0,
            l = "",
            m = [],
            n,
            p = !1;
        for (
            (function () {
                for (var b = 0; b < f; b++) {
                    var c = { propNames: [], nCounts: {} },
                        d = a[b],
                        g = d.length;
                    g > k && (k = g);
                    for (var h = 0; h < g; h++) c.propNames.push(d[h]), c.nCounts[d[h]] ? c.nCounts[d[h]]++ : (c.nCounts[d[h]] = 1);
                    e.push(c);
                }
            })();
            !g;

        ) {
            h = "!@!@!";
            for (n = 0; n < f; n++) (l = c(e[n].propNames)), "!@!@!" === h ? (h = l) : h !== l && 0 < b(e[n].nCounts, h) && (h = l);
            if ("!@!@!" === h || m.length >= k * f) g = !0;
            else if (m.length >= k) {
                p = !0;
                for (n = 0; n < f; n++)
                    if (((l = c(e[n].propNames)), "!@!@!" !== h)) {
                        p = !1;
                        break;
                    }
                g = p;
            }
            g || (m.push(h), d(h));
        }
        return m;
    }
    function Jd(a, c, b, d) {
        return Cl.abs(((a - c[d]) / (c[b] - c[d])) * 100);
    }
    function rc(a, c, b) {
        c = c[b];
        return a && c ? Cl.abs((a / c) * 100) : 0;
    }
    function Eg(a) {
        return J(a, "ye") && !J(a, "y");
    }
    function Fg(a) {
        return Eg(a) ? la(a.ye, a.ys) : a.y;
    }
    function Dl(a, c) {
        var b = "y" === c,
            d = a.pOptions,
            e = a.scCache,
            f = a.yVal,
            g;
        if ((g = a.series[c + "Axis"]) && a.chart.chartItemManager.exists(g.id))
            return (a = t(g.min) ? g.range : Dg(e[b ? "min" : c + "Min"], e[b ? "max" : c + "Max"], 10)), Cl.abs((((b ? d[f] - (d.low || 0) : d[c]) - a.min) / (a.max - a.min)) * 100);
    }
    function pi(a, c) {
        var b = "y" === c;
        return rc(b ? Fg(a.indexedData) : a.pOptions[c], a.cache, b ? "yRangeSumAbs" : c + "SumAbs");
    }
    function qi(a, c) {
        var b = "y" === c,
            d = b ? "yRangeSumAbs" : c + "SumAbs";
        return rc(a.pOptions ? (b ? Fg(a.indexedData) : a.pOptions[c]) : a.cache[d], a.scCache, d);
    }
    function ri(a, c) {
        var b = "y" === c,
            d = b ? "yRangeSumAbs" : c + "SumAbs",
            e = a.pgCache;
        return e[d] ? rc(b ? Fg(a.indexedData) : a.pOptions[c], e, d) : a.pOptions[c] ? 100 : 0;
    }
    function si(a, c) {
        var b = "y" === c,
            d = a.pOptions[b ? a.yVal : c];
        return t(d) ? mv(d, a.cache[b ? "averList" : c + "AverList"]) : 0;
    }
    function gr(a) {
        var c = a.pOptions.y;
        return t(c) && "string" === typeof c && !a.fOptions.yIsTime ? c : Eg(a.indexedData) ? a.indexedData.ye : a.indexedData.y;
    }
    function El(a, c) {
        return (a.val.pop ? a.val[1] - a.val[0] : 0) / c;
    }
    function Cy(a) {
        var c = a.indexer;
        c.reset();
        a.chart.series().each(function (b) {
            var c = b.getCalcCache();
            a.indexer.indexObject(c, b._i);
        });
        var b = Math.abs,
            d = function (b) {
                return Tc(Pb(c, "concat")(b));
            },
            e = Pb(c, "getItem"),
            f = Pb(c, "min_i"),
            g = Pb(c, "max_i"),
            h = Pb(c, "min"),
            k = Pb(c, "max"),
            l = Pb(c, "sum"),
            m = d("list"),
            n = d("average"),
            p = d("xList");
        d = d("zList");
        var q = e(f("min")),
            r = e(g("max")),
            u = e(f("xMin")),
            x = e(g("xMax"));
        f = e(f("zMin"));
        e = e(g("zMax"));
        g = c.getKey("type");
        var v = k("zMax"),
            y = h("zMin"),
            D = {
                list: m,
                typeList: g,
                type: g[0],
                sumList: c.getKey("sum"),
                max: k("max"),
                min: h("min"),
                sum: l("sum"),
                average: n.length ? l("average") / n.length : n,
                range: m.length ? k("max") - h("min") : void 0,
                zList: d,
                xList: p,
                zSumList: c.getKey("zSum"),
                xSumList: c.getKey("xSum"),
                zMax: v,
                zMin: y,
                zAbsmax: Math.max(b(v), b(y)),
                xMax: k("xMax"),
                xMin: h("xMin"),
                zSum: l("zSum"),
                xSum: l("xSum"),
                sumAbs: l("sumAbs"),
                zSumAbs: l("zSumAbs"),
                xSumAbs: l("xSumAbs"),
                zAverage: d.length ? l("zSum") / m.length : void 0,
                xAverage: p.length ? l("xSum") / m.length : void 0,
                zRange: d.length ? k("zMax") - h("zMin") : void 0,
                yRangeSum: l("yRangeSum"),
                yRangeSumAbs: l("yRangeSumAbs"),
                nMin: q.nMin,
                nMax: r.nMax,
                nZMax: e.nZMax,
                nZMin: f.nZMin,
                nXMax: x.nXMax,
                nXMin: u.nXMin,
                snMax: r.name,
                snMin: q.name,
                snZMax: e.name,
                snZMin: f.name,
                snXMax: x.name,
                snXMin: u.name,
            },
            E = { Min: h, Max: k };
        Ib("Sum,Average", function (b) {
            Ib("Min,Max", function (a) {
                Ib("y,x,z", function (c) {
                    var d = "y" === c;
                    D[(d ? Se(a) : c + a) + b] = E[a](d ? Se(b) : c + b);
                });
            });
        });
        return D;
    }
    function Dy(a) {
        var c = a[0],
            b = function (b) {
                return a.map(function (a) {
                    return a.tokenValue(b);
                });
            },
            d = b("%yValue"),
            e = Math.min.apply(Math, H(d)),
            f = Math.max.apply(Math, H(d)),
            g = Ta(d),
            h = a.length;
        d = d.join(",");
        return {
            xvalue: c.replaceTokens("%xValue"),
            ysum: g,
            sum: g,
            ylist: d,
            ymin: e,
            min: e,
            ymax: f,
            count: h,
            pointcount: h,
            max: f,
            colors: b("%color")
                .map(function (b) {
                    return Dh(b).hex;
                })
                .join(","),
        };
    }
    function Ey(a, c, b) {
        void 0 === b && (b = "x");
        var d = a.chartArea.chartAreaSet.series(),
            e = a.indexer.getValue(b, c._i),
            f = new Fl(),
            g = 0;
        w(d, function (a) {
            var c = a.indexer.findValue_i(b, e);
            a = a.indexer.getItem(c);
            f.indexObject(a, g);
            g++;
        });
        a = f.getKey("y");
        c = f.getKey("z");
        d = f.hasKey("yr") ? "yr" : "y";
        var h = Pb(f, "sum"),
            k = Pb(f, "sumAbs");
        return {
            list: a,
            sum: h("y"),
            sumAbs: k("y"),
            yRangeSum: h(d),
            yRangeSumAbs: k(d),
            zList: c,
            zSum: h("z"),
            xSum: h("x"),
            zSumAbs: k("z"),
            xSumAbs: k("x"),
            average: a.length ? h("y") / a.length : void 0,
            zAverage: c.length ? h("z") / c.length : void 0,
        };
    }
    function hr(a, c, b) {
        var d = b.atribs;
        if (d)
            if ("function" === typeof d.pop)
                for (var e = 0, f = d.length; e < f; e++) {
                    if (a === d[e][0].toLowerCase()) return ti(d[e][1]);
                }
            else {
                f = e = void 0;
                for (
                    var g = a.split("."),
                        h = function (b, a) {
                            for (var c = pa(b), d = 0, e = c.length; d < e; d++) {
                                var f = c[d];
                                if (a === f.toLowerCase()) return b[f];
                            }
                        },
                        k = void 0;
                    (f = g.shift()) && t((k = h(e || d, f)));

                )
                    e = k;
                if (t(e)) return ti(e);
            }
        a = c[a];
        if (!a) return "INVALID TOKEN";
        c = a.val ? a.val(b) : a(b);
        c !== c && (c = 0);
        if (!t(c)) return "-";
        C(b.fOptions, "y.isTime") && a.yVal && (c = new Date(c));
        return ti(c);
    }
    function Fy(a, c, b) {
        var d = b.fOptions || {},
            e = "," + a + ",",
            f = { fStr: d.fStr, culture: d.culture, isTime: d.isTime };
        return -1 < ",min,max,average,rangesum,lasty,sum,median,mode,value,ysum,yaverage,ymedian,ymode,ymin,ymax,ymaxsum,maxsum,yminsum,minsum,yrangesum,yvalue,ystart,yrange,open,high,low,close,".indexOf(e)
            ? d.y || f
            : -1 < ",xvalue,xsum,xmin,xmax,xmaxsum,xminsum,xaverage,lastx,xrange,lastx,xmode,xmedian".indexOf(e)
            ? d.x || f
            : -1 < ",complete,".indexOf(e)
            ? { fStr: "p", culture: d.y.culture }
            : -1 < ",zvalue,zsum,zmin,zmax,zmaxsum,zminsum,zaverage,lastz,zrange,zmode,zmedian,".indexOf(e)
            ? d.z || f
            : (a = c[a]) && a.axis
            ? { fStr: a.fStr || "n", culture: d[a.axis] ? d[a.axis].culture : b.chart ? b.chart.currentOptions.defaultCultureName : "en-US" }
            : b.gOptions
            ? { culture: b.gOptions.cultureName }
            : f;
    }
    function uf(a) {
        a = a.token || a.attr || a;
        return { text: a, result: a && 0 < a.length && (0 <= a.indexOf("%") || 0 <= a.indexOf("{")) };
    }
    function ir(a, c, b, d) {
        var e = uf(a);
        if (!e.result) return e.text;
        a = ui(a, [c, b], d, ir);
        return vf(a, Gy, {
            fOptions: d,
            chart: c.chart,
            series: c,
            point: b,
            sOptions: c.currentOptions,
            pOptions: b.currentOptions,
            atribs: b.currentOptions.attributes,
            yVal: c.ctManager.isType("treemap") ? "value" : "y",
            pgCache: Ey(c, b),
            cache: c.getCalcCache(),
            scCache: c.chartArea.chartAreaSet.getCalcCache(),
            indexedData: c.indexer.getItem(b._i),
        });
    }
    function jr(a, c, b) {
        var d = uf(a);
        if (!d.result) return d.text;
        a = ui(a, c, b, jr);
        return vf(a, Hy, {
            fOptions: b,
            chart: c.chart,
            series: c,
            sOptions: c.currentOptions,
            atribs: c.currentOptions.attributes,
            yVal: c.ctManager.isType("treemap") ? "value" : "y",
            cache: c.getCalcCache(),
            scCache: c.chartArea.chartAreaSet.getCalcCache(),
        });
    }
    function vi(a, c, b) {
        var d = uf(a);
        if (!d.result) return d.text;
        a = ui(a, c, b, vi);
        return vf(a, Iy, { fOptions: b, chart: c.chart, cache: c.getCalcCache() });
    }
    function Gg(a, c, b) {
        var d = uf(a);
        if (!d.result) return d.text;
        a = ui(a, c, b, Gg);
        d = C(c, "value");
        var e = c.currentOptions || {},
            f = C(e, "value");
        f = z(f, e.max, e.min);
        return vf(a, Jy, { fOptions: b, val: f, item: c, atribs: c.currentOptions.attributes, cache: e, evaluedValue: "function" === typeof d ? c.value() : [] });
    }
    function wi(a, c, b) {
        void 0 === b && (b = {});
        var d = uf(a);
        return d.result ? vf(a, {}, { fOptions: b, item: c, atribs: c }) : d.text;
    }
    function kr(a, c, b, d) {
        for (var e, f, g, h = pa(c), k, l, m = 0, n = h.length; m < n; m++) {
            g = h[m];
            if (-1 === (l = a.indexOf("%")) || l === a.length - 1 || !g) break;
            e = "%" + g;
            -1 < a.toLowerCase().indexOf(e) &&
                (a = a.replace(new RegExp(e, "gi"), function (a) {
                    k = ti(hr(g, c, b));
                    b.formatApplied = f = Fy(g, c, b);
                    d && (f = null);
                    a = I(k);
                    var e = k;
                    "array" === a ? (e = k[0]) : (k = [k]);
                    b.formatApplied &&
                        b.formatApplied.isTime &&
                        ((k = B(k, function (b) {
                            return new Date(b);
                        })),
                        (e = k[0]));
                    f || "date" !== I(e) || (f = { fStr: "yyyy-MM-ddTHH:mm:ss.fffffffzzz", culture: "en-US" });
                    return B(k, function (b) {
                        return f ? lr(b, f.fStr, f) : b;
                    }).join(3 > k.length ? "\u2014" : " ");
                }));
        }
        return a;
    }
    function ti(a) {
        return a || t(a) ? a : "";
    }
    function lr(a, c, b) {
        var d = b ? b.culture || "en-US" : "en-US",
            e = I(a);
        return "date" === e
            ? ((b = new mr(d, { formatString: c || "" })), Ha(a.getTime()) ? "Invalid Date" : b.formatDate(a, c))
            : "number" === e
            ? (b && c && "c" !== c.toLowerCase() && !0 !== b.fStrStrict && t(b.precision) && b.precision && ((c = Yf(a)), (c = "n" + Math.min(c, b.precision))), (b = new mr(d, { formatString: c || "" })), b.formatNumber(a, c))
            : a;
    }
    function Ky(a, c, b) {
        var d = /\{ *[\w\-\(%0-9][^\}\{]+ *: *[^\}\{]+ *\}/,
            e = /\{ *[\w\-\(%0-9][^\}\{]+ *\}/,
            f,
            g;
        if (!a) return a;
        for (; !k && null !== (g = d.exec(a) || e.exec(a)); ) {
            var h = 0;
            for (f = g.length; h < f; h++) {
                var k = g[h].toString(),
                    l = Ly(k, c, b);
                a = a.replace(k, l);
                k = l && O(l) && Hg(l, "{");
            }
        }
        return a;
    }
    function Ly(a, c, b) {
        var d,
            e = Gd(a),
            f = e.indexOf(":"),
            g = -1 < f;
        if (g) {
            a = e.substring(1, f);
            var h = Gd(
                e.substring(f + 1, e.length - 1).replace(/^(date)*(number)*/gi, function (b) {
                    d = b.toLowerCase();
                    return "";
                })
            );
        } else a = e.substring(1, e.length - 1);
        a = kr(Gd(a), c, b, !0);
        e = a.match(Gl);
        c = !1;
        if (e && (e = e.length)) {
            c = !0;
            var k = 1 === e ? "date" : "number";
        }
        h || (h = C(b, "formatApplied.fStr"));
        e = a;
        c &&
            (e = a.replace(Gl, function (b) {
                return Date.parse(b);
            }));
        c = !0;
        if (/[\+-\/\*\^%]+/.test(e))
            try {
                a = Nj(
                    '"strict mode";(f{r/**/;f days{rn/86400000;}f weeks{rn/604800000;}f years{rn/31536000000;}f hours{rn/3600000;}f minutes{rn/60000;}f seconds{rn/(1000);}}())'
                        .replace(/f/g, "function")
                        .replace(/\{r/g, "(n){return ")
                        .replace("/**/", e)
                );
            } catch (l) {
                c = !1;
            }
        (k = d || k)
            ? "date" === k
                ? (a = Ha(new Date(a).getTime()) ? new Date(parseFloat(a)) : new Date(Date.parse(a)))
                : "number" === k && (a.valueOf && (a = a.valueOf()), (a = parseFloat(a)))
            : "string" === typeof a
            ? Un(a)
                ? (a = parseFloat(a))
                : Gl.test(a) && (a = new Date(Date.parse(a)))
            : "number" !== typeof a || h || (h = "n:" + Math.min(Yf(a), 3));
        return c ? (h ? lr(a, h, b.formatApplied) : a) : "{" + a + (g ? ":" + h : "") + "}";
    }
    function vf(a, c, b) {
        var d = a && a.attr,
            e = b.atribs,
            f = c;
        if (a.token) return hr(a.token.slice(1).toLowerCase(), f, b);
        d && (a = a.attr);
        a = a.replace(/\\\\/g, "##@@@!@##").replace(/\\\{/g, "!!@@#@#@@!").replace(/\\\}/g, "###@!@!#@").replace(/\\%/g, "#@@!@##@");
        if (e) {
            f = e.pop ? e : ~a.indexOf(".") ? Kn(e, ".") : pa(e);
            var g = !!e.pop,
                h = {};
            w(f, function (b) {
                h[(g ? b[0] : b).toLowerCase()] = void 0;
            });
            f = d ? h : L(h, c);
        }
        a = Ky(a, f, b);
        a = kr(a, f, b);
        return a
            .replace(/##@@@!@##/g, "\\")
            .replace(/!!@@#@#@@!/g, "{")
            .replace(/###@!@!#@/g, "}")
            .replace(/#@@!@##@/g, "%");
    }
    function ui(a, c, b, d) {
        var e;
        if ("string" === typeof a && -1 < a.indexOf("<")) {
            var f = a.match(nr);
            if (f) {
                b = (function (b) {
                    b = A({}, b);
                    var a = function (b) {
                        b && !b.isTime && (b.fStr = "d");
                    };
                    a(b.x);
                    a(b.y);
                    a(b.z);
                    return b;
                })(b);
                try {
                    for (var g = ya(f), h = g.next(); !h.done; h = g.next()) {
                        var k = h.value;
                        a = c.pop ? a.replace(k, "<" + d(k.replace("<", ""), c[0], c[1], b)) : a.replace(k, "<" + d(k.replace("<", ""), c, b));
                    }
                } catch (m) {
                    var l = { error: m };
                } finally {
                    try {
                        h && !h.done && (e = g.return) && e.call(g);
                    } finally {
                        if (l) throw l.error;
                    }
                }
            }
        }
        return a;
    }
    function or(a, c, b) {
        var d = pr(a),
            e = c[1],
            f = xi(a);
        a = Mb(f);
        b || (b = og(f, f.hasCurves));
        f = Math.max(a[2], a[3]);
        var g = [],
            h = a[1] + 1;
        try {
            for (; h + e < a[1] + a[3] - 2; ) {
                var k = qr(d, h, e);
                k && k[2] >= c[0] && g.push([f - Xb(va(k), b), k]);
                h += 1;
            }
        } catch (m) {}
        if (g.length) {
            g.sort(function (b, a) {
                return b[0] < a[0] ? -1 : b[0] > a[0] ? 1 : 0;
            }).reverse();
            var l = g[0][1];
        }
        l && (l = mb(va(l), c));
        return l;
    }
    function pr(a) {
        var c = xi(a);
        c = Mb(c);
        c = Math.floor(c[3] / 3);
        a = xi(a);
        return My(a, c);
    }
    function xi(a) {
        var c,
            b = 0;
        w(a.shapes, function (a) {
            var d = Mb(a);
            d = d[2] * d[3];
            d >= b && ((b = d), (c = a));
        });
        return c;
    }
    function My(a, c) {
        var b = [],
            d = Mb(a),
            e = d[0] - 50,
            f = d[0] + d[2] + 50,
            g = d[1],
            h = d[3];
        d = function (b) {
            b = g + b * h;
            return [
                [e, b],
                [f, b],
            ];
        };
        var k = function (b) {
            for (
                var a = [],
                    c = function (b) {
                        for (var c = 0, d = a.length; c < d; c++) if (ab(a[c], b)) return !1;
                        return !0;
                    },
                    d = 0,
                    g = b.length;
                d < g;
                d++
            ) {
                var h = b[d];
                h = [Math.round(h.intersect.x), Math.round(h.intersect.y)];
                c(h) && h[0] > e && h[0] < f && a.push(h);
            }
            a.sort(function (b, a) {
                return b[0] < a[0] ? -1 : b[0] > a[0] ? 1 : 0;
            });
            2 < a.length && (a = [a[0], a[a.length - 1]]);
            1 === a.length && a.push(a[0]);
            return a;
        };
        c = Math.abs(0.9998 / (c - 1));
        for (var l = 1e-4; 1 > l; l += c) {
            var m = d(l);
            m = Rh(a, m[0], m[1]);
            b.push(k(m));
        }
        return b;
    }
    function Ny(a, c) {
        return {
            scans: rr(a.scans, function (b) {
                return [Y(c[0], c[0] + c[2], 0, 1, b[0]), Y(c[1], c[1] + c[3], 0, 1, b[1])];
            }),
            pathBBox: c,
        };
    }
    function rr(a, c) {
        for (var b = [], d = 0, e = a.length; d < e; d++) {
            for (var f = a[d], g = [], h = 0, k = f.length; h < k; h++) g.push(c(f[h]));
            b.push(g);
        }
        return b;
    }
    function qr(a, c, b) {
        b = c + b;
        for (
            var d,
                e,
                f = function (b) {
                    return [
                        [Y(d[0][0], e[0][0], d[0][1], e[0][1], b), b],
                        [Y(d[1][0], e[1][0], d[1][1], e[1][1], b), b],
                    ];
                },
                g,
                h,
                k = 0,
                l = a.length - 1;
            k < l;
            k++
        ) {
            d = a[k];
            e = a[k + 1];
            var m = d[0][1],
                n = e[0][1];
            !g && c >= m && c <= n && (g = f(c));
            !h && b >= m && b <= n && (h = f(b));
            if (g && h) break;
        }
        if (h && g) return (a = Math.max(g[0][0], h[0][0])), [a, c, Math.min(g[1][0], h[1][0]) - a, b - c];
    }
    function Oy(a) {
        var c = sa(a.chartItems(), function (b) {
                return z(b.currentOptions.sortOrder, b.currentOptions.order, 0);
            }),
            b = [[], [], [], []],
            d = {},
            e = { casMargin: [0, 0, 0, 0], overflows: [0, 0, 0, 0], max: [0, 0, 0, 0], itemsToTune: c, aggr: d },
            f = a.chart.rootVisuals.itemsBox.getGlobalBboxArray(),
            g = !0;
        w(c, function (a) {
            if (!a.currentOptions.asHTML) {
                var c = G(Ig(a), 3),
                    e = c[0],
                    h = c[1];
                c = c[2];
                a.isMeasured = !1;
                if (!e && !c.isIn) {
                    var k = sr(a, h, c, d, f);
                    k &&
                        w(c.pos, function (a, c) {
                            a && b[c].push(k) && (g = !1);
                        });
                }
            }
        });
        if (g) return e;
        var h = a.items,
            k = B(h, function (b) {
                return b.overflows;
            }),
            l = [
                function () {
                    var b = h[0].rootVisuals.titleBox.rootPanel.setPreliminarySize().getGlobalBboxArray();
                    return b[2] && b[3] ? 0 : k[0][0];
                },
                function () {
                    return oa(
                        B(k, function (b) {
                            return b[1];
                        })
                    );
                },
                function () {
                    return P(k)[2];
                },
                function () {
                    return oa(
                        B(k, function (b) {
                            return b[3];
                        })
                    );
                },
            ];
        a = function (a) {
            var c = b[a];
            if (!c.length) return 0;
            var d = 0;
            w(c, function (b) {
                return (d = Math.max(d, b[Py[a]]));
            });
            c = l[a]();
            d = c > d ? c : d;
            e.overflows[a] = c;
            return (e.max[a] = d) && Math.max(d - c, 0);
        };
        e.casMargin = [a(0), a(1), a(2), a(3)];
        return e;
    }
    function Qy(a, c) {
        var b = {},
            d = a.items,
            e = d[0],
            f = a.chart.rootVisuals.itemsBox,
            g = f.getGlobalBboxArray(),
            h = function () {
                var b = B(d, function (b) {
                    return b.getContentGlobalBbox();
                });
                return Ea(b);
            };
        h = 1 < d.length ? h() : e.getContentGlobalBbox();
        a = a.measureResult;
        var k = [g[0] + a.max[3], g[1] + a.max[0], g[2] - a.max[1] - a.max[3], g[3] - a.max[2] - a.max[0]];
        e = e.getContentGlobalBbox();
        var l = a.aggr,
            m = [g, k, h, e, [k[0], h[1], k[2], h[3]], [h[0], k[1], h[2], k[3]]];
        w(a.itemsToTune, function (b) {
            if (!b.isMeasured) {
                var a = G(Ig(b), 3),
                    c = a[2];
                sr(b, a[1], c, l, m[c.alignBoxIndex]);
            }
        });
        var n = {};
        l.tltl && l.tltl.total[0] > e[2] ? (n.tltl = { direction: 1, align: [-1, 0] }) : l.blbl && l.blbl.total[0] > e[2] && (n.blbl = { direction: 1, align: [-1, 0] });
        f.update();
        w(a.itemsToTune, function (a) {
            var d = a.rootPanel,
                e = d.getGlobalBboxArray ? d.getGlobalBboxArray(!0) : a.bbox(!0);
            if (e[2] || e[3]) {
                d.isHtml ? ((e[0] -= parseFloat(d.attr("left"))), (e[1] -= parseFloat(d.attr("top")))) : ((e[0] -= d.offsetX), (e[1] -= d.offsetY));
                var f = G(Ig(a), 3),
                    g = f[0],
                    h = f[1];
                f = f[2];
                !g && n[h] && (f = W(f, n[h]));
                e = Ry(e, m, g, h, f, b, l[h]);
                if ((g = a.options("offset"))) (g = g.split(",")), (e[0] += parseInt(g[0]) || 0), (e[1] += parseInt(g[1]) || 0);
                g = c && c.animation;
                d.attr(d.isHtml ? { left: e[0] + "px", top: e[1] + "px" } : { offsetX: e[0], offsetY: e[1], animation: g });
                a.positionUpdated(m[nb(f) ? f : f.alignBoxIndex]);
            }
        });
    }
    function Ry(a, c, b, d, e, f, g) {
        void 0 === g && (g = { total: [0, 0], max: [0, 0] });
        if (b) return [d[0] + c[e][0] - a[0], d[1] + c[e][1] - a[1]];
        b = G(c, 3);
        var h = b[0],
            k = b[2],
            l = [],
            m = [],
            n = f[d],
            p = e.direction,
            q = e.align,
            r = e.stackAlign;
        b = function (b, c) {
            c = c(b);
            var e = f[d];
            if (!e[b]) {
                e[b] = [];
                var g = 0 === p ? 1 : 0;
                e[b][g] = m[b][g] + 1 * (a[b] + a[b + 2] * (0 < (b === g ? 1 : 0) ? 1 : b !== g ? 0.5 + q[b] / 2 : 0)) - (0.5 + r[b] / 2) * a[b + 2] * (b === g ? 1 : 0);
            }
            e[b][p] = c + 1 * (a[b] + a[b + 2] * (0 < (b === p ? 1 : 0) ? 1 : b !== p ? 0.5 + q[b] / 2 : 0));
            return c;
        };
        var u = function (b) {
                return n[b][p] + -1 * (a[b] + a[b + 2] * (0 < -1 * (b === p ? 1 : 0) ? 1 : b !== p ? 0.5 + q[b] / 2 : 0));
            },
            x = function (b) {
                var c = l[b];
                m[b] = [v(b, c, 0), v(b, c, 1)];
                c = m[b][p];
                var d = m[b];
                if (!e.checkBorder[b] && a[b + 2] <= k[b + 2]) b = c;
                else {
                    var f = a[b + 2],
                        g = h[b],
                        n = k[b];
                    c = a[b] + c;
                    var q = g + h[b + 2];
                    c < g && (c = n);
                    c + f > q && ((c = n + k[b + 2] - f), c < g && (c = q / 2 - f / 2));
                    b = c - a[b];
                }
                return (d[p] = b);
            },
            v = function (b, c, d) {
                d = b !== d ? 1 : -1;
                var e = 0.5 + r[b] / 2;
                return c + ((0 < d ? g.max[b] || a[b + 2] : g.total[b]) - a[b + 2]) * d * (0 < d ? 0.5 + q[b] / 2 - e : e);
            };
        n || ((l = ek(a, c[e.alignBoxIndex], nc.default(d, "tltr"))), (f[d] = []));
        return [b(0, n ? u : x), b(1, n ? u : x)];
    }
    function Ig(a) {
        return (a._posInfo_ = a._posInfo_ || tr(a.currentOptions));
    }
    function tr(a) {
        var c = a.position || "bltl";
        if (c.push) return [1, c, 0];
        var b = function (b) {
                return parseFloat(b);
            },
            d = function (b, c) {
                var d = G(b, 4),
                    e = d[0],
                    f = d[1],
                    g = d[2];
                d = d[3];
                var h = e === g && f === d,
                    q = ["t" === g && ("b" === e || "m" === e || h) && 1, "r" === d && ("l" === f || "c" === f || h) && 1, "b" === g && ("t" === e || "m" === e || h) && 1, "l" === d && ("r" === f || "c" === f || h) && 1],
                    r = h ? 3 : 1 < Ta(q) ? 1 : q[0] || q[2] ? 5 : 4;
                e = {
                    isIn: h,
                    pos: q,
                    alignBoxIndex: r,
                    checkBorder: [f === d && "c" === f, e === g && "m" === e],
                    direction: h ? ("m" === g ? 1 : 0) : 5 !== r ? 1 : 0,
                    align: ["l" === f ? -1 : "r" === f ? 1 : 0, 0],
                    stackAlign: ["l" === f ? -1 : "r" === f ? 1 : 0, "t" === e ? -1 : "b" === e ? 1 : 0],
                };
                e.direction = z(a.direction, c, e.direction);
                e.align = z(a.alignment, e.align);
                J(a, "fixed") && (e.stackAlign = [-1, -1]);
                return [0, b, e];
            };
        c = c.toLowerCase().trim();
        if (4 === c.length && "left" !== c && !Sy.test(c)) return d(c);
        c = c.replace("ca:", "inside ").replace("ca", "inside top left").trim();
        var e = c.split(",");
        if (1 < e.length) return (d = e[0]), (c = 0 === d.indexOf("inside")) && (e[0] = d.substring(6)), [1, e.map(b), c ? 3 : 0];
        if ("center" === c) return (d = d("mcmc")), (d[2].isIn = !1), (d[2].alignBoxIndex = 2), d;
        b = c.split(" ");
        e = "inside" === b[0] ? 1 : 0;
        var f = b.join("");
        f = f.length === c.length ? Ty[f] || f : f;
        return d(Uy[f] || "bltl", Vy[b[e]]);
    }
    function sr(a, c, b, d, e) {
        e = a.measure(e);
        b = b.direction;
        var f = !d[c];
        c = d[c] = d[c] || { total: [0, 0], max: [0, 0] };
        if (!e[2] && !e[3]) return null;
        (!f && b) || (c.total[0] += e[2]);
        (f || b) && (c.total[1] += e[3]);
        (f || b) && a.isVisible && c.max[0] < e[2] && (c.max[0] = e[2]);
        (f || !b) && a.isVisible && c.max[1] < e[3] && (c.max[1] = e[3]);
        return e;
    }
    function ur(a) {
        return vr[
            S((a || "topRight").toLowerCase().split(" "), function (a) {
                return vr[a];
            })
        ];
    }
    function wr(a) {
        var c = a.trim().toLowerCase();
        return 0 === c.indexOf("ca") || 0 === c.indexOf("inside") ? (c.match(Wy) ? "caAlign" : "caOffset") : Xy.test(a) ? "absolute" : "position";
    }
    function Yy(a) {
        var c = a.chart,
            b = a.collisionManager,
            d = ha(a.rootVisuals.content.getGlobalBbox());
        d = [-d[0], -d[1]];
        var e = function (a) {
            a.isVisible && b.addLabelBox(Xc(a.getBounds(), d));
        };
        b.reset();
        c.uiItems && c.uiItems().each(e);
        c.annotations().each(e);
        wr(a.legend.currentOptions.position).match("caOffset|caAlign|absolute") && ((a = a.legend.getBounds()), b.addLabelBox(Xc(a, d)));
    }
    function yi(a) {
        var c = new Function("getter", "return " + JSON.stringify(a) + ";"),
            b = Zy(a);
        return b.length
            ? function () {
                  var a = c(),
                      e;
                  try {
                      for (var f = ya(b), g = f.next(); !g.done; g = f.next()) {
                          var h = g.value;
                          Z(a, h[0], h[1]);
                      }
                  } catch (l) {
                      var k = { error: l };
                  } finally {
                      try {
                          g && !g.done && (e = f.return) && e.call(f);
                      } finally {
                          if (k) throw k.error;
                      }
                  }
                  return a;
              }
            : c;
    }
    function xr(a, c) {
        var b = I(c);
        a = a.currentOptions;
        return "undefined" === b ? a : "string" === b ? C(a, c.replace(/_/g, ".")) : "NotGetter";
    }
    function yr(a) {
        if (!a.currentOptions.colorsValueRange)
            var c = 1 >= a.stopRange && 0 <= a.stopExtremes[0] && 1 >= a.stopExtremes[1],
                b = 1 >= a.dataRange && 0 <= a.extremes[0] && 1 >= a.extremes[1];
        return { stopPerc: c, dataPerc: b };
    }
    function md(a, c, b) {
        return a && a.pixelCorrection ? a.snap(c, b) : c;
    }
    function nd(a, c, b) {
        if (!a || !a.pixelCorrection) return c;
        a = md(a, [c[0], c[1], b, b], b);
        return [a[0], a[1]];
    }
    function ue(a, c, b) {
        return a && a.pixelCorrection
            ? B(c, function (c) {
                  return nd(a, c, b);
              })
            : c;
    }
    function zr(a, c, b, d) {
        if (!a || !a.pixelCorrection) return c;
        d = t(d) ? d : b / 2;
        var e = c[0],
            f = c[1],
            g = G(e, 2);
        e = g[0];
        g = g[1];
        var h = G(f, 2);
        f = h[0];
        h = h[1];
        return e === f
            ? ((c = !1), g > h && ((c = g), (g = h), (h = c), (c = !0)), (g += d), (e = [e, g, 0, h - d - g]), (a = md(a, e, b)), (e = [a[0], a[1] - d]), (f = [a[0], a[1] + a[3] + d]), c ? [f, e] : [e, f])
            : g === h
            ? ((c = !1), e > f && ((c = e), (e = f), (f = c), (c = !0)), (e += d), (e = [e, g, f - d - e, 0]), (a = md(a, e, b)), (e = [a[0] - d, a[1]]), (f = [a[0] + a[2] + d, a[1]]), c ? [f, e] : [e, f])
            : c;
    }
    function Hl(a) {
        return new $y(a);
    }
    function Kd(a) {
        a.type = "panel";
        return a;
    }
    function ve(a) {
        a.width = "*";
        a.height = "*";
        return a;
    }
    function zi(a, c, b, d) {
        return { xAlignment: a, yAlignment: c, offsetX: b, offsetY: d };
    }
    function Il(a, c) {
        a = a.rootVisuals;
        var b;
        (b = c[3]) && a.leftOverflow.attr({ width: b });
        (b = c[0]) && a.topOverflow.attr({ height: b });
        (b = c[1]) && a.rightOverflow.attr({ width: b });
        (b = c[2]) && a.bottomOverflow.attr({ height: b });
    }
    function Ar(a) {
        var c = function () {
                var b = [0, 0],
                    c = [0, 0];
                a.axes().each(function (a) {
                    var d = a.overflowSize.tL;
                    a = a.overflowSize.bR;
                    b[0] = Math.max(b[0], d[0]);
                    b[1] = Math.max(b[1], d[1]);
                    c[0] = Math.max(c[0], a[0]);
                    c[1] = Math.max(c[1], a[1]);
                });
                return [b[1], c[0], c[1], b[0]];
            },
            b = function () {
                var b = [0, 0, 0, 0];
                a.axes().each(function (a) {
                    b[a.sideIndex()] += a.sideDepth();
                });
                return b;
            },
            d,
            e = (function () {
                var e = [0, 0, 0, 0],
                    g = c(),
                    h = a.chart.currentOptions.extraOverflows || [0, 0, 0, 0],
                    k = (a.currentOptions.extraOverflows || [0, 0, 0, 0]).map(function (b, a) {
                        return b + h[a];
                    });
                d = b();
                w(g, function (b, a) {
                    e[a] = Math.max(g[a] + k[a] - d[a], 0);
                });
                return e;
            })();
        a.overflows = e;
        a.axSizes = d;
        return e;
    }
    function Br(a) {
        var c = (a.overflows = Ar(a));
        Il(a, c);
        return c;
    }
    function Jl(a, c, b) {
        function d(b, a, c) {
            var d,
                e = b.series;
            c = null === (d = e.currentOptions.pointSelection) || void 0 === d ? void 0 : d.max;
            if (nb(c))
                if (((d = e.chart), (e = d._sMaxList), a)) {
                    if (e && e.length + 1 > c) for (; e.length + 1 > c; ) f(e.shift());
                    else d._sMaxList = e = e || [];
                    e.push(b);
                } else pb(e, b);
        }
        function e(b, a) {
            b.currentOptions.selected = a;
            b.userOptions.selected = a;
        }
        function f(b) {
            b.legendEntry && b.legendEntry.updateCheckbox(!1);
            e(b, !1);
            b.setState("");
        }
        var g = a.chart,
            h = a.series.currentOptions.pointSelection,
            k = t(h) ? h : !1;
        k && d(a, c);
        g.isRendered
            ? (a.setState(c ? "select" : ""),
              k &&
                  (c &&
                      a.series.chartArea
                          .series()
                          .points()
                          .items.forEach(function (c) {
                              var d;
                              if ((d = c.selected))
                                  a: {
                                      if (c.selected) {
                                          if (c._i === a._i && c === a) {
                                              d = void 0;
                                              break a;
                                          }
                                          "multiple" === k || nb(k.max) || ("single" === k ? f(c) : !b && f(c));
                                      }
                                      d = void 0;
                                  }
                              return d;
                          }),
                  a.legendEntry && a.legendEntry.updateCheckbox(c),
                  e(a, c)))
            : c && (a.selected = !0);
    }
    function Kl(a, c, b) {
        var d, e, f;
        b = t(b) ? b : a.userPoints.length;
        0 === c && (d = a.currentOptions.firstPoint) ? (f = d) : c === b - 1 && (e = a.currentOptions.lastPoint) && (f = A({}, f || {}, e));
        a._defPointGen || (a._defPointGen = yi(A({ label: { placement: "auto", style: { fontFamily: "tahoma, geneva, sans-serif", fontSize: "12px" } } }, a.currentOptions.defaultPoint)));
        a = a._defPointGen();
        return f ? A(a, f) : a;
    }
    function Ll(a) {
        a = a.currentOptions;
        !0 === a.muted && !1 === C(a, "states.mute.enabled") && (a.muted = !1);
        !0 === a.selected && !1 === C(a, "states.select.enabled") && (a.selected = !1);
    }
    function Ml(a, c) {
        var b, d;
        !1 === (null === (d = null === (b = a.currentOptions.states) || void 0 === b ? void 0 : b[c]) || void 0 === d ? void 0 : d.enabled) && (c = t(a.state) && a.state !== c ? a.state : "");
        return c;
    }
    function Ai(a, c, b, d) {
        function e(b, c) {
            if (void 0 !== (g = I((f = c))) && "undefined" !== g)
                if (((b = "c" === b[0] ? b.replace("complete.y", "complete").replace("complete.x", "completeX") : b), (c = "" + b), "array" === g)) {
                    if (2 !== f.length) throw "value array can only have 2 items.";
                    I(f[0]);
                    b = f[0];
                    I(f[1]);
                    var d = f[1];
                    h[c + "e"] = d;
                    h[c + "s"] = b;
                    h[c + "r"] = d - b;
                    h[c + "a"] = (d + b) / 2;
                } else "null" === g && "y" === b ? ("treataszero" === a.currentOptions.emptyPointMode ? (h.y = 0) : (h.isEmpty = !0)) : (h[c] = f);
        }
        for (var f, g, h = {}, k = c.name, l = 0, m = b.length; l < m; l++) {
            var n = b[l];
            -1 < n.indexOf(".") ? e(n, C(c, n)) : e(n, c[n]);
        }
        !0 !== d && A(h, az(c, h));
        Z(h, "cpbIndex", c.cpbIndex);
        w(Cr, function (b) {
            return Z(h, b, c[b]);
        });
        h.x = z(h.x, k);
        t(h.x) || t(h.xr) || (h.x = c._i);
        return h;
    }
    function az(a, c) {
        function b(b, a, e) {
            var l = {};
            e = "sv" + e;
            p = c[a];
            t(p) || (p = c[a + "e"]);
            n = Q((m = c[a + "s"])) ? (m = p) : p - m;
            (f = b.range) && d(l, (e + "s," + e).split(","), f);
            (h = b.offset) && d(l, (e + "s," + e).split(","), [m - h, p + h]);
            if ((g = b.percent)) (h = (g / 100) * n), d(l, (e + "s," + e).split(","), [m - h, p + h]);
            if ((k = b.values)) l[e + "v"] = k;
            return l;
        }
        function d(b, a, c) {
            for (var d = 0, e = a.length; d < e; d++) b[a[d]] = c[d];
        }
        var e,
            f,
            g,
            h,
            k,
            l = {},
            m,
            n,
            p;
        (e = a.subvalue) && A(l, b(e, "y", ""));
        (e = a.subvalueX) && A(l, b(e, "x", "x"));
        return l;
    }
    function Dr(a, c) {
        return a.map(function (b) {
            return Bi(b, c);
        });
    }
    function Bi(a, c) {
        return { _i: a.indexer.findValue_i("x", c.value), series: a };
    }
    function bz(a) {
        return (a = a && a.info.type) && (a.isShape || a.isPie || a.colorByPoint) ? "point" : "series";
    }
    function Nl(a) {
        if ((a = a.currentOptions.hoverAction) && "none" !== a) return a.toLowerCase().replace("highlight", "").replace("pointgroup", "group");
    }
    function Ol(a, c, b) {
        var d = "Point" === a.kind,
            e = d ? a.series : a,
            f = d ? a : void 0,
            g = e.chart;
        b = b && "auto" !== b ? b : bz(e);
        d || "point" !== b || (b = "series");
        b && "none" !== b && (g.highlighted = a);
        g.series().items.forEach(function (a) {
            a.isVisible && (a !== e && "group" !== b ? Jg(a, "mute") : "point" === b ? Jg(a, "mute", f) : "group" === b ? Jg(a, "mute", cz(f)) : Jg(a, z(c, ""), f));
        });
    }
    function Qb(a, c) {
        a.renderer.renderer.isRootDestroyed() ||
            (a.series().items.forEach(function (b) {
                b.isVisible && Jg(b, "", c, !0);
            }),
            (a.highlighted = void 0));
    }
    function Jg(a, c, b, d) {
        if (a.isVisible) {
            if (d) {
                var e = a.getAnimationConfig();
                e && 0 !== e.duration && (e.duration = Math.min(230, e.duration));
                var f = { animation: e };
            } else f = { continueAnimation: !1 };
            if (b && b.pop)
                a.points().each(function (a) {
                    "select" !== a._state && (ae(b, a) ? a.setState("", f) : a.setState(c, f));
                });
            else {
                var g = "" === c;
                (b && b.series === a && a.state === c) || "select" === a.state || (a.visualizer.debounce.clear("unhoverline"), a.setState(c, f));
                a.points().each(function (a) {
                    (a !== b || ("mute" === a._state && g)) && "select" !== a._state && a.setState(c, f);
                });
            }
            d && a.chartArea.ignoreAnimationFor(f.animation.duration);
        }
    }
    function cz(a) {
        var c = a.series,
            b = c.chartArea.series().items;
        return Dr(b, { value: c.indexer.getValue("x", a._i) }).map(function (b) {
            return b.series._points[b._i];
        });
    }
    function Er(a, c) {
        var b = a.series,
            d = b.rootVisuals,
            e = b.info.type,
            f = b.info.style,
            g = {},
            h = !0 !== b.xAxis.options("crosshair.enabled") && !0 !== b.yAxis.options("crosshair.enabled") && !1 !== b.options("mouseTracking.enabled") && !1 !== b.options("states.hover.enabled");
        f = f.attr.line;
        if (e.drawLine && a.coordinates.line) {
            var k = a.paths.lines ? a.paths.lines.join(" ").replace(/,/g, " ") : tg(a.coordinates.line).join(" ");
            g.pathAnimation = { type: "line", shift: null === c || void 0 === c ? void 0 : c.shift };
        }
        "" !== b.state && (f = b.getStateAttrs(b.state).line);
        return {
            d: k,
            state: f,
            shapeName: "line",
            target: d.line,
            zIndex: b.zIndex + gb.series,
            visGetter: function () {
                return b.visuals.line;
            },
            visSetter: function (a) {
                return (b.visuals.line = a);
            },
            animation: g,
            events: h
                ? {
                      mouseover: function (a) {
                          b.visualizer.debounce.run("unhoverline");
                          "select" !== b.state && b.setState("hover");
                      },
                      mouseout: function (a) {
                          b.visualizer.debounce.defer(
                              "unhoverline",
                              function () {
                                  "select" !== b.state && "mute" !== b.state && b.setState("");
                              },
                              150
                          );
                      },
                  }
                : {},
        };
    }
    function Ci(a, c, b, d) {
        var e = c[0],
            f = c[1];
        c = Math.min.apply(Math, H(c));
        e = kg(e / 2, f / 2, c, c);
        b = d || a.series.getPointMarkerType(b && b.currentOptions ? b.currentOptions : b);
        0 === a.series.getPointAttr().pointAttr[""].r && (b = "none");
        return { base: 0 === b.indexOf("url") ? b : Ld(b, e.x, e.y, c, c) };
    }
    function Ld(a, c, b, d, e, f) {
        return $p(a.name ? a.name : a, c, b, d, e, f);
    }
    function Fr(a, c, b) {
        var d = a.series,
            e = c[0],
            f = c[1];
        d = d.ctManager.settingVal("lineSeriesType", d.currentOptions);
        a = Ci(a, c, b);
        switch (d) {
            case "spline":
                e = "M0 " + f + " C " + 0.2 * e + " 0   " + 0.8 * e + " " + 1 * f + "   " + e + " 0";
                break;
            case "step":
                e = "M0 " + f + " L " + 0.5 * e + " " + f + "   " + 0.5 * e + " 0   " + e + " 0";
                break;
            default:
                e = "M0 " + f + " L " + e + " 0";
        }
        a.extra = e;
        return a;
    }
    function Pl(a, c, b) {
        var d = { base: dc.rectangle(0, 0, c[0], c[1], { r: 2, corners: ["round", "round", "round", "round"] }) };
        b && (a.series.options("forceMarker") || !0 === N(b.currentOptions, ["marker", "visible"])) && ((d.extra = a.getBodyShapeName(b, !0)), O(d.extra) && -1 === d.extra.indexOf("url") && (d.extra = Ld(d.extra, 0, 0, c[0], c[1])));
        return d;
    }
    function Ql(a, c, b, d) {
        var e = b.rect;
        if (!e) return "";
        a = a.series;
        var f = a.ctManager;
        e = ha(e);
        var g = c.currentOptions.marker || {};
        if ((0 === e[2] || 0 === e[3]) && !0 === g.visible) return (d = b.styleSet.markerSize), (b.meta.shape = mb(b.xyz, [d, d])), "";
        g = f.isHoriz() ? 2 : 3;
        1 > e[g] && 0 < e[g] && ((e[g] = 1), 2 === g && --e[0]);
        g = z(N(c.currentOptions, ["outline", "width"]), 1);
        d = md(d, e, g);
        d.id = c.id;
        g = (c = f.isType("gauge", a)) ? a.pane.isHoriz : a.chartArea.isHoriz;
        if (c && "roundcaps" === f.settingVal("columnType", a)) {
            a = d[0];
            f = d[1];
            c = d[2];
            e = d[3];
            g = { caps: g ? { left: "round", right: "round" } : { top: "round", bottom: "round" } };
            void 0 === g && (g = {});
            g = g.caps;
            var h = Math.PI / 2;
            if (g) {
                var k = c / 2,
                    l = e / 2,
                    m = ["M", a, f];
                g.top ? m.push.apply(m, H(Kc(a + k, f, k, 2 * h, 0))) : m.push.apply(m, H(["L", a + c, f]));
                g.right ? m.push.apply(m, H(Kc(a + c, f + l, l, -h, h))) : m.push.apply(m, H(["L", a + c, f + e]));
                g.bottom ? m.push.apply(m, H(Kc(a + k, f + e, k, 0, 2 * h))) : m.push.apply(m, H(["L", a, f + e]));
                g.left ? m.push.apply(m, H(Kc(a, f + l, l, h, -h))) : m.push("Z");
                a = m;
            } else a = Yh(a, f, c, e);
        } else a = d[2] && d[3] ? dc.square(d[0], d[1], d[2], d[3]) : dc.none(d[0], d[1]);
        Z(b, "collision.body", d);
        return xa(a);
    }
    function Gr(a, c, b) {
        var d,
            e = [];
        if (!a) return { cxy: g, size: e, innerSize: h, offset: k, innerPadding: l };
        b = ha(c);
        c = Math.min(c.width, c.height);
        var f;
        if ((d = a.center)) {
            var g = G(d.split(","), 2);
            d = g[1];
            g = [db(g[0], b[2]), db(d, b[3])];
        }
        if ("undefined" !== (f = I((d = a.size))))
            switch (f) {
                case "string":
                    d = G(d.split(","), 2);
                    e = d[0];
                    d = d[1];
                    e = [db(e, c), db(d, c)];
                    break;
                case "array":
                    c = G(d, 2);
                    e = c[0];
                    d = c[1];
                    e = [db(e, b[2]), db(d, b[3])];
                    break;
                default:
                    (e = db(d, c)), (e = [e, e]);
            }
        if ((d = a.innerSize)) var h = db(d, 1);
        if ((d = a.offset)) {
            var k = G(d.split(","), 2);
            c = k[1];
            k = [db(k[0], b[2]), db(c, b[3])];
        }
        if ((d = a.innerPadding)) var l = db(d, 1);
        return { cxy: g, size: e, innerSize: h, offset: k, innerPadding: l };
    }
    function Hr(a, c, b) {
        var d = b.xAlignment;
        b = b.yAlignment;
        return lo(a, c, d, d, b, b);
    }
    function dz(a, c, b, d, e, f) {
        var g = a.series,
            h = d.meta,
            k = c.visuals,
            l,
            m = g.pane || g.chartArea;
        c.labelAutoHidden = !1;
        var n = m.collisionManager,
            p = function (b, d) {
                var e = a.collidePointBoxes ? b : Hr(h.labelTextBox, b, h.labelAttr);
                if (d ? !n.collideLabels(e) : !n.collideAll(e, c.id)) return h.shape && Ad(h.shape, va(b)) && !$c(h.shape, b) ? !1 : !0;
            },
            q = function (b) {
                return p(b, !0);
            };
        a.initPointLabel(c, d, b);
        k = a.getLabelWrapper(k.label, b);
        m = h.labelSize.slice(0);
        var r = a.possibleLabelPositions(c, "", b, d, e);
        e = h.labelAttr;
        d.meta.label = void 0;
        d.meta.labelPossible = r;
        q =
            S(r, function (b) {
                return p(b, !1);
            }) || S(r, q);
        d.meta.isVertical && (l = !0);
        q || !1 !== b.label.autoHide || (r.length ? (q = r[0]) : ((q = h.xy), h.shape && (q = va(h.shape)), (q = [q[0] - m[0] / 2, q[1] - m[1] / 2, m[0], m[1]]), (r = [q])));
        r[0] && (q || a.isRadial)
            ? ((d = d.meta.label = q || r[0]) && d.rotate && !t(e.rotate) && (e.rotate = d.rotate),
              t(e.rotate) && nb(e.rotate)
                  ? ((q = va(d)), A(e, { x: q[0] - m[0] / 2, y: q[1] - m[1] / 2 }), (e.rotate = [e.rotate, m[0] / 2, m[1] / 2]))
                  : l
                  ? ((q = va(d)), A(e, { x: q[0] - m[0] / 2, y: q[1] - m[1] / 2 }), (e.rotate = [-90, m[0] / 2, m[1] / 2]))
                  : (A(e, { x: d[0], y: d[1] }), (e.rotate = [0, 0, 0])),
              (e = a.render_applyDynamicAttrVals([e, { zIndex: g.zIndex + gb.label }], f)),
              (e.zIndex = g.zIndex + gb.label),
              (a.hcLabelsOnly || d.isInside) && b.label.hcColor && (e.fill = b.label.hcColor),
              k.attr(e))
            : (r.length && ((b = r[0]), k.attr({ x: b[0], y: b[1] })),
              a.hideVisual(k),
              (h.autoHidden = !0),
              (c.labelAutoHidden = !0),
              Ma.emit("tip", g.name || "", "pLabelHidden", { data: [g.name || g.currentOptions.id || " ", Ir(h.labelText, 10)], container: g.chartArea.chart.getWrapper() }));
    }
    function ez(a, c, b, d, e, f) {
        var g = a.series;
        b = g.isVisible;
        d = !1 === (c.currentOptions.label || {}).autoHide;
        var h = e.meta,
            k = ha(a.series.contentRect()),
            l = 0,
            m = h.labelSize,
            n = h.labelObstacles;
        h.marker && (l = e.meta.marker[2]);
        h = fz;
        ("line" === a.kind || "area" === a.kind) && g.ctSvIs("lineSeriesType", "step") && (h = gz);
        e = mb(e.xyz, [l, l]);
        var p = h(a, e, n, c._i, f);
        e = hz(a, c);
        w(e, function (b) {
            var a = "o" === b.align[0],
                c = "o" === b.vAlign[0];
            a = (-1 < b.align.indexOf("left") || -1 < b.align.indexOf("right")) && (-1 < b.vAlign.indexOf("top") || -1 < b.vAlign.indexOf("bottom")) && p.outCorner ? p.outCorner : a || c ? p.out : p.in;
            b.box = he(H([0, 0], m), a, b.align, b.vAlign).box;
        });
        e =
            b && d
                ? sa(e, function (b) {
                      return !$c(k, b.box);
                  })
                : b
                ? ea(e, function (b) {
                      return $c(k, b.box);
                  })
                : e;
        g = g.info.type.drawArea && !a.isRadial ? iz : g.info.type.drawLine && 0 === n.length ? jz : kz;
        e.length && (e = g(e, a, c, p, f));
        b &&
            d &&
            (e = sa(e, function (b) {
                return !$c(k, b.box);
            }));
        return B(e, function (b) {
            return b.box;
        });
    }
    function Jr(a, c) {
        var b = a.series;
        a = b.info.style.base;
        c = b.info.type.drawMarker;
        var d = b.getUniqueColors(3);
        1 < d.length ? (d.push(0), (a = oc(d))) : (a = a.color);
        b = b.currentOptions.defaultPoint || {};
        d = b.marker || {};
        c = c ? A({}, b, d) : b;
        b = z(c.fill, c.color, "currentColor");
        d = z(N(c, ["outline", "color"]), c.color, "outline");
        var e = z(N(c, ["outline", "width"]), 1);
        b = { fill: ia(b, a), stroke: ia(d, a), "stroke-width": ua(e, 0, 3) };
        c.hatch && ((b.hatch = ia(c.hatch, a)), (b.hatchPattern = c.hatchPattern));
        return { base: b };
    }
    function lz(a, c, b, d, e, f) {
        var g = b.xyz,
            h = a.series,
            k;
        a = a.getBodyShapeName(c);
        var l = b.rect;
        if ("string" === typeof a && vb(a, "url(")) return a;
        if (!(k = b.path)) {
            k = z(e, 5);
            e = c.currentOptions.marker || {};
            l || (l = kg(g[0], g[1], 2 * k, 2 * k));
            if ((k = Kr(e.offset))) l = Wo(Oa(l), k[0], k[1]);
            g = b.meta.snappedBox = [l.x, l.y, l.width, l.height];
            a && !~mz.indexOf(a) && ((k = N(e, ["outline", "width"]) || 1), (g = b.meta.snappedBox = md(d, g, k)));
            b.path
                ? (k = b.path)
                : ((d = h.pointBodyDGenerator),
                  0 === l.width && 0 === l.height && (a = "none"),
                  (k = d && d(a, b)),
                  k ||
                      ((k = Ld(a, g[0], g[1], g[2], g[3])) || (k = Ld("none", g[0], g[1], g[2], g[3])),
                      "none" !== a &&
                          ((d = e.rotate), O(d) && -1 < d.indexOf("%") && (d = parseFloat(c.replaceTokens(d))), d && ((c = "auto" === d ? N(b, ["arc", "angle"]) : d), "circle" !== a && (k = (k.isPath ? k : Aa(k)).rotate(c + 90))))));
            f && (b.meta.marker = ha(l));
        }
        return xa(k);
    }
    function nz(a, c, b, d, e) {
        var f = b.xyz,
            g = b.xyzs;
        d = z(d, 5);
        var h = a.series.xAxis;
        f = [h && h.isStackedFull() ? (f[0] + g[0]) / 2 : f[0], f[1]];
        if ("string" === typeof c && vb(c, "url(")) return c;
        e = nd(e, f, 1);
        e = kg(e[0], e[1], 2 * d, 2 * d);
        e = (e = Ld(c, e.x, e.y, e.width, e.height)) ? (e.pop ? xa(e) : e) : "M0 0";
        d = N(a.currentOptions, ["marker", "rotate"]);
        O(d) && -1 < d.indexOf("%") && (d = parseFloat(a.replaceTokens(d)));
        d && "circle" !== c && ((a = "auto" === d ? N(b, ["arc", "angle"]) : d), (e = Aa(e).rotate(a + 90)));
        return e;
    }
    function Lr(a) {
        var c = (a.pane || a.chartArea).rootVisuals,
            b = c.dataContent;
        a.rootVisuals = { area: b, line: b, points: b, pointHalo: c.axisMarkersFront };
    }
    function Ra(a) {
        a && a.attr({ opacity: 0 });
    }
    function oz(a, c) {
        var b = a.series;
        c = b.rootVisuals;
        var d,
            e = b.info.style.attr.area;
        a.coordinates.area && (d = a.paths.areas ? a.paths.areas.join(" ").replace(/[,Z]/g, " ") + "Z" : tg(a.coordinates.area).join(" "));
        "" !== b.state && (e = b.getStateAttrs(b.state).area);
        return {
            d: d,
            state: e,
            shapeName: "area",
            target: c.area,
            zIndex: b.zIndex + gb.series,
            visGetter: function () {
                return b.visuals.area;
            },
            visSetter: function (a) {
                return (b.visuals.area = a);
            },
        };
    }
    function pz(a, c, b, d, e, f, g) {
        var h = a.series,
            k = h.info.type.roundCaps,
            l = a.isHoriz(),
            m = c.meta;
        g = m.labelObstacles;
        var n = c.meta.shape.slice(0);
        k && (n = Bl(n, l ? [0, -n[3] / 2] : [-n[2] / 2, 0]));
        k = 0;
        m.marker && (k = c.meta.marker[2]);
        m = { u: 0, r: 0, d: 0, l: 0 };
        m[b] = k;
        var p = qz(a, n, b, g, m, c);
        c = B(f, function (b) {
            var a = !Mr(b),
                c = a ? p.out : p.in;
            b = he(H([0, 0], e), c, b.align, b.vAlign).box;
            b.isInside = !a;
            return b;
        });
        w(c, function (b, a) {});
        var q = [];
        w(c, function (b) {
            (h.pane || !a.series.isVisible || $c(d, b)) && q.push(b);
        });
        return q;
    }
    function rz(a, c, b) {
        var d = a.series,
            e = d.pane;
        b = e && e.getCompleteVisInfo ? e.getCompleteVisInfo(b) : Cc(ha(b.rectComplete));
        a = sz(a, c);
        return {
            d: b,
            state: a,
            target: d.rootVisuals.points,
            zIndex: d.zIndex + gb.complete,
            visGetter: function () {
                return c.visuals.rectComplete;
            },
            visSetter: function (b) {
                return (c.visuals.rectComplete = b);
            },
        };
    }
    function sz(a, c) {
        a = { hatch: "rgba(0,0,0,.8)", stroke: "#000", "stroke-opacity": 0.3, "stroke-width": 1, hatchPattern: "light-upward-diagonal", zIndex: a.series.zIndex + gb.complete };
        var b = c.currentOptions.complete || {},
            d = c.series.currentOptions.defaultPoint || {};
        c = function (a) {
            return b[a] || C(d, "complete." + a);
        };
        ni(a, c("fill"));
        ar(a, c("hatch"));
        return a;
    }
    function tz(a, c) {
        return Ai(a, { x: c.x, y: [c.open, c.close], subvalue: { range: [c.low, c.high] } }, ["x", "y", "subvalue"]);
    }
    function uz(a, c) {
        var b = { x: c.x, y: [c.low, c.high], subvalue: { range: [c.open, c.close] } };
        c.name && (b.name = c.name);
        return Ai(a, b, ["x", "y", "subvalue"]);
    }
    function vz(a, c, b, d) {
        var e = b.xyz,
            f = b.xyzs,
            g = b.sv,
            h = b.svs;
        a = a.isHoriz();
        var k = b.rect;
        b = a ? 0 : k.width / 2;
        a = a ? k.height / 2 : 0;
        c = z(N(c.currentOptions, ["outline", "width"]), 1);
        d = ue(d, [f, e, [h[0] - b, h[1] - a], h, [g[0] + b, g[1] + a], g], c);
        return xa(["M", d[0], "L", d[1], "M", d[2], "L", d[3], "M", d[4], "L", d[5]]);
    }
    function wz(a, c, b, d, e) {
        d = Nr(a, c, d);
        return [Nr(a, c, b), "Z", d, "z"];
    }
    function Nr(a, c, b, d) {
        void 0 === d && (d = !0);
        var e = [];
        a -= b;
        c -= b;
        var f = 2 * b,
            g = 2 * b;
        b *= 0.3318;
        d && e.push("M", a + f / 2, c);
        e.push("C", a + f + b, c, a + f + b, c + g, a + f / 2, c + g, "C", a - b, c + g, a - b, c, a + f / 2, c);
        return xa(e);
    }
    function xz(a, c, b, d) {
        var e = a.series;
        c = b.xyz;
        var f = b.xyzs,
            g = "M" + c[0] + " " + c[1],
            h = Ha(c[2]),
            k = f[2] !== c[2];
        e = e.options("shape.type") || "circle";
        d = nd(d, c, 1);
        if (h) (b.pathD = b.meta.bodyD = g), (b.hitTest = xc);
        else {
            k ? (g = wz(d[0], d[1], c[2], f[2]).join(" ")) : ((d = kg(d[0], d[1], f[2], f[2])), (g = Ld(e, d.x, d.y, d.width, d.height)));
            b.pathD = b.meta.bodyD = g;
            var l = b.xyz,
                m = Math.max(b.xyz[2] / 2, 5),
                n = a.getLabelHitTest();
            b.hitTest = function (b, a) {
                return Xb(l, [b, a]) <= m || n(this, b, a);
            };
        }
        return xa(g);
    }
    function yz(a) {
        a = pa(a);
        return !(1 === a.length && gc(a, Or).length);
    }
    function zz(a) {
        return function () {
            var c = [];
            a.each(function (b) {
                c = c.concat(b._points);
            });
            return c;
        };
    }
    function Az(a) {
        return function (a) {};
    }
    function Bz(a, c, b, d) {
        w(c.dataPositions.items, function (b) {
            b = Dr(a, b);
            var c = 0,
                d = 0,
                e = {},
                k = b[0].series.yAxis.isStackedFull(),
                l = 0;
            k &&
                w(b, function (b) {
                    b = b.series.indexer.getItem(b._i).y;
                    l += b;
                });
            w(b, function (b) {
                var a = b.series.indexer.getItem(b._i).y,
                    f = k ? a / l : a;
                0 <= f ? ((e.ys = c), (e.yr = a), (c = e.ye = f + c)) : ((e.ys = d), (e.yr = f), (d = e.ye = d + f));
                b.series.indexer.indexObject(e, b._i);
            });
        });
        a.reverse();
        w(a, function (a) {
            a.zIndex = b += 8;
            a.seriesDirty.pos(!0);
        });
        return b;
    }
    function Cz(a, c, b) {
        var d = c.dataPositions.items,
            e = function (b) {
                return t(b.z) ? b.z : t(b.y) ? b.y : 1;
            },
            f = [],
            g = [],
            h = a.length,
            k = c.range.max - c.range.min,
            l = function (b, a) {
                b = Bi(b, a);
                return e(b.series.indexer.getItem(b._i));
            },
            m = b
                ? B(a, function (b) {
                      return Ta(
                          B(d, function (a) {
                              return l(b, a);
                          })
                      );
                  })
                : B(d, function (b) {
                      return Ta(
                          B(a, function (a) {
                              return l(a, b);
                          })
                      );
                  }),
            n = function (b, a, c, d, e, h) {
                var k = {};
                f.push([e, c]);
                f.push([c, h + e]);
                g.push([a - d, a]);
                g.push([a, a + d]);
                k.xs = a - d;
                k.xe = a + d;
                b.series.indexer.indexObject(k, b._i);
            };
        if (b)
            w(a, function (b, a) {
                var f = c.range.min;
                w(d, function (c, d) {
                    c = Bi(b, c);
                    var g = c.series.indexer.getItem(c._i);
                    g = (e(g) * k) / m[a];
                    n(c, d, f + g / 2, 0.5, f, g);
                    f += g;
                });
            });
        else {
            var p = Ta(m),
                q = c.range.min;
            w(d, function (b, c) {
                w(a, function (a, d) {
                    a = Bi(a, b);
                    var e = (m[c] * k) / (p * h),
                        f = 0.5 / h;
                    n(a, c + d / h - 0.5 + f, q + e / 2, f, q, e);
                    q += e;
                });
            });
        }
        var r = function (b, a, c) {
            for (var d, e = 0, f = b.length; e < f; e++) {
                var g = b[e],
                    h = g,
                    k = Math.round(100 * c) / 100;
                if (k >= Math.round(100 * h[0]) / 100 && k <= Math.round(100 * h[1]) / 100) {
                    b = a[e];
                    d = Y(b[0], b[1], g[0], g[1], c);
                    break;
                }
            }
            return d;
        };
        c._stackTranslators = {
            backward: function (b) {
                return r(f, g, b);
            },
            forward: function (b) {
                return r(g, f, b);
            },
        };
    }
    function Dz(a, c) {
        for (
            var b = { points: [] },
                d,
                e,
                f,
                g = function (b) {
                    return zc(e, f, b, b);
                },
                h = function (b) {
                    return B(b, function (b) {
                        return b.pop ? { x: b[0], y: b[1], z: b[2] } : b;
                    });
                },
                k = function (b, a) {
                    var c,
                        d = 0;
                    w(b, function (b) {
                        t((c = b[a])) && (d += c);
                    });
                    return d;
                },
                l = function (l, m) {
                    f = a[l];
                    d = h(f.points);
                    c
                        ? w(d, function (a) {
                              b.points.push(A({ cpbIndex: l }, a));
                          })
                        : ((m = B(d, function (b) {
                              return b.y;
                          })),
                          (e = { y: Ta(m), x: k(d, "x") }),
                          (e.subvalue = { values: m }),
                          w(["id", "name"], g),
                          (b.points[l] = A(e, f.defaultPoint || {})));
                },
                m = 0,
                n = a.length;
            m < n;
            m++
        )
            l(m);
        b.isMerged = !0;
        return b;
    }
    function Pr(a) {
        var c = a.indexer,
            b = a.info,
            d = a.options(),
            e = d.xAxis,
            f = a.chart.chartItemManager.exists(d.yAxis) || {};
        e = a.chart.chartItemManager.exists(e) || {};
        var g,
            h = b.type.seriesType,
            k = function (b) {
                b = a.replaceTokens({ token: b });
                return "-" === b ? "" : b;
            },
            l = k("%xAxisLabel"),
            m = k("%yAxisLabel");
        k = k("%zAxisLabel");
        b.type.isMapLayer && (g = a.chart.geoParser.findFeatureProps(a, a.chart.internal.mappingInfo));
        return {
            vScale: N(f.currentOptions, ["scale", "type"]) || f.type || f.dataType,
            xScale: e.type || e.dataType,
            ct: a.ctManager.settingVal("chartType", d),
            st: h,
            mapInfo: g,
            xNotSorted: !b.xIsSorted,
            yAxisLabel: m,
            xAxisLabel: l,
            zAxisLabel: k,
            sName: d.name,
            hasZ: c.hasKey("z"),
            hasX: c.hasKey("x"),
            hasRange: c.hasAllKeys(["ys", "ye"]) && !c.hasKey("y"),
        };
    }
    function Di(a, c, b) {
        a.push(we(a[a.length - 1], c, b));
    }
    function we(a, c, b) {
        return [a[0] + c[0] * b, a[1] + c[1] * b];
    }
    function Qr(a, c) {
        var b;
        void 0 === c && (c = Gb);
        var d = [];
        try {
            for (var e = ya(a), f = e.next(); !f.done; f = e.next()) {
                var g = f.value,
                    h = c(g);
                t(h) && !h.pop && d.push(g);
            }
        } catch (l) {
            var k = { error: l };
        } finally {
            try {
                f && !f.done && (b = e.return) && b.call(e);
            } finally {
                if (k) throw k.error;
            }
        }
        return d;
    }
    function xe(a, c) {
        var b = function (b) {
                return c[0] === b[0] && c[1] === b[1];
            },
            d = function (b) {
                return c === b;
            };
        b = c.pop ? b : d;
        for (d = 0; d < a.length; d++) if (b(a[d])) return d;
        return -1;
    }
    function Rr(a) {
        var c = [[], [], [], []];
        a.each(function (b) {
            return c[b.sideIndex()].push(b);
        });
        c[0].reverse();
        c[3].reverse();
        return c;
    }
    function Ei(a) {
        var c = a.isTransitioning
            ? a._ticks
            : ea(a._ticks, function (b) {
                  return !b.invalid;
              });
        a = Qr(c, function (b) {
            return b.value();
        });
        c = Ez(c, function (b) {
            return b.value();
        });
        var b = a.length;
        c = sa(c, function (b) {
            return t(b.currentOptions._lI) ? b.currentOptions._lI : -1;
        });
        var d = function (a) {
                return !b && a._rngData && 0 === a._rngData.level && (!a.currentOptions.rangeMode || "auto" === a.currentOptions.rangeMode);
            },
            e = [],
            f = a.slice(0);
        w(c, function (b) {
            b._isBaseRange = d(b);
        });
        var g = ea(c, function (b) {
            return b._isBaseRange;
        });
        f.push.apply(f, H(g));
        e.push.apply(
            e,
            H(
                ea(c, function (b) {
                    return !d(b);
                })
            )
        );
        var h = 1;
        b ||
            w(e, function (b) {
                b._rngData && b._rngData.level < h && (h = b._rngData.level);
            });
        var k;
        g.length && 0 === h && (k = !0);
        return { valTicks: a, rngTicks: c, valArrange: f, rngArrange: e, fullRangesLevel: h, sharesBase: k };
    }
    function Ez(a, c) {
        var b;
        void 0 === c && (c = Gb);
        var d = [];
        try {
            for (var e = ya(a), f = e.next(); !f.done; f = e.next()) {
                var g = f.value,
                    h = c(g);
                t(h) && 2 === h.length && d.push(g);
            }
        } catch (l) {
            var k = { error: l };
        } finally {
            try {
                f && !f.done && (b = e.return) && b.call(e);
            } finally {
                if (k) throw k.error;
            }
        }
        return d;
    }
    function Sr(a, c) {
        var b = a.isHoriz,
            d = S(a._ticks, function (b) {
                return !b._isRange;
            }),
            e = Ei(a),
            f = a._rngData,
            g = f.levels,
            h = f.duV;
        f = function (b) {
            for (var a = 0; a < c.length; a++) b(c[a], a);
        };
        f(function (b) {
            var a = b._rngData;
            b = b._metrics.textSize.slice(0);
            a.labelSize = a.rotate ? [b[1], b[0]] : b;
        });
        var k = a.tickMetricsData,
            l = a.sideIndex(),
            m = k.getMaxLength(),
            n = 0 === l || 1 === l,
            p = 0 === l || 3 === l,
            q = 0,
            r = [0, 0],
            u = 0;
        k = e.sharesBase ? 0 : k.maxLength;
        r[h.vc] = p ? m - k : k;
        var x = function (b) {
                var a = !1;
                b._rngData.rotate && (a = !a);
                return a;
            },
            v = function (b) {
                var a = b._metrics.textSize;
                return x(b) ? [a[1], a[0]] : a.slice(0);
            },
            y = function (b) {
                return ea(c, function (a) {
                    return a._rngData.visible && a._rngData.level === b;
                });
            };
        k = function (c) {
            c = y(c);
            if (c.length) {
                var f = Math.max.apply(
                        Math,
                        H(
                            c.map(function (b) {
                                return b._rngData.labelOnTop ? 0 : v(b)[1];
                            })
                        )
                    ),
                    g = 0,
                    k = function (b, a, c) {
                        var d = we(r, h.o, q);
                        d[h.hc] = b._metrics.px[0];
                        d = [d];
                        Di(d, h.o, a);
                        Di(d, h.f, la(b._metrics.px[0], b._metrics.px[1]));
                        Di(d, h.i, a);
                        return { points: d, options: A({}, c) };
                    },
                    m,
                    p = function (b, a) {
                        b = y(b + 1) || [];
                        if (b.length) {
                            b = b.map(function (b) {
                                return b._metrics.px;
                            });
                            for (var c = !1; !c && b.length; )
                                if (0 < bg(b, a).length) c = !0;
                                else break;
                            return c;
                        }
                        return !0;
                    },
                    D = [];
                w(c, function (b, a) {
                    a = b._rngData;
                    var c = v(b),
                        e = b.currentOptions.rangeMode;
                    e = !d && 0 === a.level && (!e || "auto" === e) && !b._rngData.visPartial;
                    var f = a.labelSize;
                    a.labelOnTop || ((b = e ? f[1] / 2 + b.currentOptions.padding : Math.max(14, c[1] / 2)), D.push(b));
                });
                w(c, function (c) {
                    m = [];
                    var u = c._rngData,
                        y = c._metrics.px,
                        t = Wf(u.labelRange),
                        F = v(c),
                        E = c.currentOptions.rangeMode;
                    E = !d && 0 === u.level && (!E || "auto" === E) && !c._rngData.visPartial;
                    var w = u.labelSize,
                        R = Math.max.apply(Math, H(D));
                    if (u.labelOnTop) {
                        var M = we(r, h.o, q + 20 + F[1] / 2);
                        M[h.hc] = t;
                        u.labelBbox = mb(M, F);
                        u.shapeOptions = k(c, 14, { gapLength: 0, tipLength: 20 * (1 - 0.7), tipPos: Y(0, 1, y[0], y[1], M[h.hc]) });
                        y = p(u.level, u.labelRange);
                        g = Math.max(g, u.autoLabelOnTop && !y ? 20 : u.labelOnTop ? F[1] + 20 : F[1]);
                    } else (M = we(r, h.o, q + R)), (M[h.hc] = t), (u.labelBbox = mb(M, F)), (u.shapeOptions = k(c, R, { gapLength: w[0], tipPos: Y(0, 1, y[0], y[1], M[h.hc]) })), (g = Math.max(g, f));
                    0 === u.level && e.sharesBase && (g = Math.max(g, a.tickMetricsData.maxLength));
                    u.labelCxy = M;
                    if ((u = !E)) (u = x(c)), b || (u = !u);
                    c._cxyRotate = u ? (0 === l ? -90 : n ? 90 : -90) : void 0;
                    m.push(c.currentOptions.padding);
                });
                c = g + Math.max.apply(Math, H(m));
                q += c;
                u += c;
            }
        };
        for (var D = 0; D < g.length; D++) k(D);
        f(function (b) {
            if (b._rngData.visible) {
                var a = b._rngData,
                    c = Ua(a.shapeOptions.points);
                b._positionData = { tickPoints: a.shapeOptions.points, textBBox: mb(a.labelCxy, b._metrics.textSize), bbox: Ea([a.labelBbox, c]) };
            }
        });
        r[h.vc] = p ? m : 0;
        return { ticks: a._rngData.ticks, levels: g, edges: a._rngData.edges, origin: r, depth: u, duV: h };
    }
    function Rl(a) {
        a = a.currentOptions.hoverAction;
        return t(a) ? "none" !== a && !1 !== a : !0;
    }
    function Tr(a) {
        var c = a.axis.tickPositions,
            b = a._value;
        c.custom.slice(0);
        var d = c.minor || [];
        c = xe(c, b);
        return "custom" === a.type ? (a.rank = 1) : 0 === c ? ((a.isFirst = !0), (a.rank = 2)) : -1 === xe(d, b) ? (a.rank = 3) : (a.rank = 5);
    }
    function Fz(a) {
        for (
            var c = Ei(a).valArrange,
                b = function (b) {
                    if (-1 < b)
                        for (var d = c.length; b < d; b++) {
                            var e = c[b];
                            if (a.tickVisible(e.value()) && !e._isSquished) return b;
                        }
                    return -1;
                },
                d = 0,
                e = c.length - 1;
            d < e;
            d++
        ) {
            var f = c[d];
            f._isSquished = !1;
            a.tickVisible(f.value()) ? (f._age = 0) : f._age++;
        }
        d = 0;
        f = !1;
        for (var g, h, k, l; !f; ) {
            var m = b(d);
            e = b(m + 1);
            if (-1 < m && -1 < e) {
                m = c[m];
                g = c[e];
                h = l = !1;
                var n = m.angledAttr();
                "angled" === a.labelMode && 0 !== n.rotate[0]
                    ? ((h = m._metrics), (k = g._metrics), (h = qv(z(h.px[0], h.px), z(k.px[0], k.px), h.textSize, k.textSize, n.rotate[0], z(m.currentOptions.padding, 0) + z(g.currentOptions.padding, 0))))
                    : m._cxyRotate
                    ? ((h = [va(m._bboxClipped), va(g._bboxClipped)]), (h = [ik(m._bboxClipped, H([m._cxyRotate], h[0])), ik(g._bboxClipped, H([g._cxyRotate], h[1]))]), (h = nv(h[0], h[1])))
                    : (h = zd(m._bboxClipped, g._bboxClipped));
                h && (g.rank > m.rank ? (l = g._isSquished = !0) : g.rank < m.rank ? (m._isSquished = !0) : (l = g._isSquished = !0));
                d = l ? d : e;
            } else f = !0;
        }
    }
    function wf(a, c, b) {
        void 0 === b && (b = {});
        var d = c.metrics(b),
            e = d.px,
            f = d.textSize,
            g = d.tickLength,
            h = a.sideIndex(),
            k = 0 === h || 1 === h,
            l = a.tickMetricsData;
        h = "inside" === c.currentOptions.placement;
        var m = c.options("padding") || 0,
            n = h ? 0 : l.getMaxLength(),
            p = 2 === e.length;
        e = c._metrics.px = a.getCaLen(c.value());
        e.pop && e.length && (e = (e[0] + e[1]) / 2);
        Ha(e) && (e = 0);
        var q = 0 === a.currentOptions.anchorWidth ? 0.5 : 0,
            r = a.viewState.caRect,
            u = r.x,
            x = u + r.width,
            v = r.y;
        r = v + r.height;
        a.isHoriz
            ? (p && (q - e > u && (e = u + q), q + e > x && (e = x - q)),
              (p = h ? 0 : 1),
              k
                  ? ((k = h ? 1 : -1),
                    (g = [
                        [e, n],
                        [e, n + k * d.tickLength],
                    ]),
                    (e = [e - f[0] / 2, g[1][1] + k * m + k * (h ? 0 : f[1]), f[0], p * f[1]]))
                  : ((k = h ? -1 : 1),
                    (g = [
                        [e, 0],
                        [e, k * g],
                    ]),
                    (e = [e - f[0] / 2, g[1][1] + k * m + f[1] * (p - 1), f[0], p * f[1]])),
              (f = e[3] + (h ? 0 : d.tickLength + d.tickPadding || 0)))
            : (p && (q - e > v && (e = v + q), q + e > r && (e = r - q)),
              (q = C(c.currentOptions, "label.align") || k ? "left" : "right"),
              (p = h ? 0 : 1),
              k
                  ? ((k = h ? -1 : 1),
                    (g = [
                        [0, e],
                        [k * d.tickLength, e],
                    ]),
                    (e = ["right" === q ? g[1][0] + k * m + p * l.maxTextSize[0] - f[0] : g[1][0] + k * m + f[0] * (p - 1), e - f[1] / 2, p * f[0], f[1]]))
                  : ((k = h ? 1 : -1),
                    (g = [
                        [n, e],
                        [n + k * d.tickLength, e],
                    ]),
                    (e = ["right" === q ? g[1][0] + k * m - p * f[0] : g[1][0] + k * m - p * l.maxTextSize[0], e - f[1] / 2, p * f[0], f[1]])),
              (f = e[2] + (h ? 0 : d.tickLength + d.tickPadding || 0)));
        l = g.slice(0);
        "angled" === a.labelMode ? (c._positionData || (c._positionData = { tickPoints: g, textBBox: e }), (m = c.angledBounds())) : (m = e.slice(0));
        l.push.apply(l, H(ie(m, "tl,br")));
        l = c._bbox = Ua(l);
        h && ((l[a.isHoriz ? 3 : 2] = 0), (l[a.isHoriz ? 1 : 0] = 0));
        if (b.tickPointsOnly) return (c._positionData.tickPoints = g), c._positionData;
        a = c._bboxClipped = e.slice(0);
        a[2] = d.textSize[0];
        a[3] = d.textSize[1];
        return (c._positionData = { tickPoints: g, textBBox: e, bbox: l, textLength: f });
    }
    function Gz(a) {
        var c,
            b = Ei(a),
            d = b.rngTicks,
            e = b.rngArrange;
        b = a.duV();
        var f = !1;
        if (d && d.length) {
            a.isZoomed || "category" !== a.type || (f = !0);
            var g = d[0].getVisualTargets({}, !0).tick,
                h = b.hc;
            d = rb(ha(a.viewState.caRect), -8);
            var k = we(d, b.i, d[h + 2]);
            k.push(0, 0);
            d = Ea([d, k]);
            var l = Yb(d);
            k = hb([l[h], l[h] + 8, l[h + 2] - 8, l[h + 2]], function (b) {
                return na(Y(0, 1, l[h], l[h + 2], b), 2);
            });
            var m = f ? [1, 1, 1, 1] : [0, 1, 1, 0];
            d = {
                d: Cc(d),
                fill: {
                    linearGradient: a.isHoriz ? [0, 0, 1, 0] : [0, 0, 0, 1],
                    stops: B(k, function (b, a) {
                        return [b, "white", m[a]];
                    }),
                },
            };
            !f && g.attr({ mask: d });
        }
        if (e.length) {
            a._rngData = Sr(a, e);
            for (f = 0; f < e.length; f++) {
                d = e[f];
                k = d._rngData.shapeOptions;
                var n = A({}, d.currentOptions.line);
                "#e2e2e2" === n.color && (n.color = "#a8a8a8");
                k && (d._rngData.renderData = Hz(d, C(k, "points"), A(k.options, n), g));
            }
            d = a._rngData;
            g = d.levels;
            var p = d.edges;
            d = d.origin;
            k = [];
            n = function (b, a) {
                return S(e, function (c) {
                    return c._metrics.px[0] === b[0] && c._metrics.px[1] === b[1] && c._rngData.level === a;
                });
            };
            var q = function (b, a) {
                return S(b, function (b) {
                    return b[0] === a || b[1] === a;
                });
            };
            try {
                for (var r = ya(p), u = r.next(); !u.done; u = r.next()) {
                    var x = u.value;
                    for (f = g.length - 1; 0 <= f; f--)
                        if (((p = void 0), (p = q(g[f], x)))) {
                            var v = n(p, f);
                            if (v) {
                                var y = v._rngData.renderData.endPoints,
                                    D = y[0][b.hc] === x ? y[0] : y[1];
                                a.valVisible(a.linToVal(D[b.hc])) && ((p = []), (p[b.hc] = D[b.hc]), (p[b.vc] = d[b.vc]), k.push([D, p]));
                            }
                            break;
                        }
                }
            } catch (F) {
                var t = { error: F };
            } finally {
                try {
                    u && !u.done && (c = r.return) && c.call(r);
                } finally {
                    if (t) throw t.error;
                }
            }
            k.length && (a._rngData.connectorLines = k);
        }
    }
    function Hz(a, c, b, d) {
        var e = a.axis,
            f = "category" === e.type,
            g = a.currentOptions.rangeMode;
        a = a._rngData;
        var h = S(e._ticks, function (b) {
            return !b._isRange;
        });
        b = id(qa(b), { type: f ? "curly" : "measure", gapLength: 0, tipPos: 0.5, color: "#000" });
        f = h || 0 !== a.level || a.visPartial ? ("curly" === b.type ? "curly" : "measure") : "min";
        g = g && "auto" !== g ? g : f;
        var k = z(b.width, Ur[g]);
        f = function (b) {
            var a = nd(d, b, k);
            return e.isHoriz ? [b[0], a[1]] : [a[0], b[1]];
        };
        var l = Ia(c[0], c[1]);
        c = c.slice(0);
        "curly" === b.type && ((c[1] = ra(c[1], l + 180, k / 2)), (c[2] = ra(c[2], l + 180, k / 2)));
        a = b.tipPos;
        h = mc(c[1], c[2]);
        a = ua(1 < a ? a / h : a, 0, 1);
        A(b, { lineLength: h, midPoint: Vj(c[1], c[2], a), sideLength: mc(c[0], c[1]), lineAngle: Ia(c[1], c[2]), tipAngle: l, tipPos: a });
        var m = h - 12;
        l = b.gapLength;
        var n = b.midPoint,
            p = b.lineAngle;
        if (0 < l)
            if (l > h - 12) A(b, { gapLength: m, tipPos: 0.5, midPoint: Vj(c[1], c[2], 0.5) });
            else if (0.5 !== a) {
                a = 1 > a ? a * h : a;
                m = mc(n, c[1]);
                var q = mc(n, c[2]),
                    r = mc(n, ra(n, p + 180, l / 2));
                l = mc(n, ra(n, p, l / 2));
                r > m - 6 && (a += r - (m - 6));
                l > q - 6 && (a -= l - (q - 6));
                A(b, { tipPos: a / h, midPoint: Vj(c[1], c[2], a / h) });
            }
        var u;
        "min" !== g && (u = "curly" === g ? gx(c, b) : fx(c.map(f), b));
        return u;
    }
    function Iz(a) {
        var c = Date.now();
        if (a && a.length) {
            var b = a[0].axis;
            w(a, function (b) {
                return 0 !== C(b.currentOptions, "value.length") && Jz(b);
            });
            var d = function (b) {
                    if ((b = b._arrangeInfo.used)) return ((c - b.time) / 1e3) * 10;
                },
                e = function (b, a, c) {
                    var e = 0,
                        f = 0,
                        g = !0;
                    w(c, function (b, d) {
                        e += c[d][a[d]] || 0;
                    });
                    for (var h = 0, k = b.length; h < k; h++) {
                        var l = void 0,
                            m = S(b[h]._arrangeInfo.possible, a);
                        if (m) {
                            if (t((l = d(b[h]))) && Xb(m.cxy, b[h]._arrangeInfo.used.cxy) > l) {
                                g = !1;
                                break;
                            }
                            if (m.collide) {
                                g = !1;
                                break;
                            } else f++;
                        } else {
                            g = !1;
                            break;
                        }
                    }
                    if (g) return e + f / b.length;
                },
                f = function (b, a) {
                    for (var c = {}, d = 0, e = b.length; d < e; d++) {
                        var f = ea(b[d]._arrangeInfo.possible, a);
                        w(f, function (b) {
                            c["" + b.xAlignment + b.yAlignment + b.rotation] = { xAlignment: b.xAlignment, yAlignment: b.yAlignment, rotation: b.rotation };
                        });
                    }
                    var g = [];
                    w(c, function (b) {
                        return g.push(b);
                    });
                    return g;
                },
                g = function (b, a) {
                    var c = [];
                    w(b, function (b) {
                        return c.push(a(b));
                    });
                    return $a(c);
                },
                h = ea(a, function (b) {
                    return b.isRange();
                });
            a = ea(a, function (b) {
                return !b.isRange();
            });
            var k = function (a, c, h) {
                if (a.length) {
                    for (var k = f(a, {}), l = g(k, c), m, n = 0, x = l.length; n < x; n++)
                        for (var v = l[n], y = 0, D = k.length; y < D; y++) {
                            var t = k[y];
                            if (c(t) === v) {
                                var F = e(a, t, h);
                                F && (!m || m[0] < F) && (m = [F, t]);
                            }
                        }
                    var R = 1 < a.length;
                    w(a, function (a) {
                        var c = b.chartArea.collisionManager,
                            e = a._arrangeInfo.possible,
                            f = ea(e, function (b) {
                                return R ? !c.collideLabels(b.box, a.id) : !c.collideAll(b.box, a.id);
                            }),
                            g = a._arrangeInfo.used,
                            h,
                            k,
                            l = g ? { xAlignment: g.xAlignment, yAlignment: g.yAlignment, rotation: g.rotation } : {};
                        !f.length && e.length && (f = e);
                        f.length &&
                            (g && (R || (k = h = S(f, l)), k || (k = S(e, l)), k && (k.time = g.time)),
                            !h && m && (h = S(f, m[1])),
                            h || (h = f[0]),
                            g && h && !R && "" + g.xAlignment + g.yAlignment + g.rotation !== "" + h.xAlignment + h.yAlignment + h.rotation && ((e = Xb(g.cxy, h.cxy)), (f = d(a)), e > f && k && (h = k)),
                            (a._arrangeInfo.used = h),
                            c.addLabelBox(h.box, h.marker.id));
                    });
                }
            };
            k(
                h,
                b.isHoriz
                    ? function (b) {
                          return b.yAlignment;
                      }
                    : function (b) {
                          return b.xAlignment;
                      },
                {
                    yAlignment: b.isHoriz ? { inmiddle: 0.1, intop: 0.3, inbottom: 0.2 } : { inmiddle: 0.3, intop: 0.2, inbottom: 0.1 },
                    xAlignment: b.isHoriz ? { inleft: 0.2, incenter: 0.3, inright: 0.1 } : { inleft: 0.3, incenter: 0.2, inright: 0.1 },
                }
            );
            k(
                a,
                b.isHoriz
                    ? function (b) {
                          return b.yAlignment;
                      }
                    : function (b) {
                          return b.xAlignment;
                      },
                { yAlignment: { outtop: 0.2, outbottom: 0.1 }, xAlignment: { outright: 0.3, outleft: 0.1 } }
            );
        }
    }
    function Jz(a) {
        var c = a.axis,
            b = a.currentOptions,
            d = a.options("label");
        b = b.value;
        var e = a.isHoriz,
            f = c.chartArea.collisionManager,
            g = [];
        if (d) {
            var h = function (b) {
                b.push([b[0][0] + (e ? 1 : 0), b[0][1] + (e ? 0 : 1)]);
                return Ea(b);
            };
            d = ja(b[0]) ? b[0] : b;
            hb(d, function (b) {
                return g.push(h(c.getCaPoints(b, void 0)));
            });
            w(g, function (b) {
                return f.addBox(b);
            });
            d = Ea(g);
            a._arrangeInfo.edgeBoxes = g;
            a._arrangeInfo.box = d;
            Kz(a);
            Lz(a);
        }
    }
    function Kz(a) {
        var c = a.rootVisuals,
            b = a.currentOptions,
            d = b.labelPadding || 0,
            e = b.label || {};
        a.getText() &&
            a.axis.valVisible(a.value()) &&
            ((b = c.label = c.label || new Fi(a.chart, e)),
            (e = a.attrBuilder(qc(e), {}, {})),
            (e.val = a.getText()),
            (e.padding = d),
            b.options({ text: a.getText() }),
            c.label.attr(e),
            b.rootVisuals.text.attr({ autoWrap: "auto" }),
            c.label.rootPanel.attr({ maxWidth: 0, autoWrap: "auto" }),
            (a._arrangeInfo.labelSizes = b.getSizes()),
            c.label.rootPanel.attr({ autoWrap: "none" }).setPreliminarySize(!0));
    }
    function Lz(a) {
        var c = a.axis;
        a._arrangeInfo.visible = !0;
        var b = a.options("label");
        if (b && Id(b)) {
            var d = b.align,
                e = b.verticalAlign;
            b = b.rotate;
            var f = function (b) {
                    var c = a._arrangeInfo.labelSizes[0];
                    return (
                        S(a._arrangeInfo.labelSizes, function (a) {
                            a[0] < c[0] && (c = a);
                            return a[0] <= b;
                        }) || c
                    );
                },
                g = ha(a.axis.chartArea.contentRect),
                h = a._arrangeInfo.labelSizes[0],
                k = ho([a._arrangeInfo.box, g]) || a._arrangeInfo.box,
                l = a.isRange(),
                m = a.isHoriz;
            g = a.axis.chartArea;
            var n = Date.now(),
                p = g.collisionManager,
                q = rb(ha(g.contentRect), -1);
            a._arrangeInfo.possible = [];
            if (c.valVisible(a.value())) {
                h = f(m ? q[2] : q[3]) || h;
                var r = f(k[2]),
                    u = f(k[3]);
                f = [k[0], k[1], h[0], h[1]];
                h = function (b, c, d) {
                    w(c, function (c) {
                        var e,
                            f = b.slice(0),
                            g = 0 !== d,
                            h = c[0];
                        c = c[1];
                        var v = 0 === h.indexOf("in"),
                            x = v && 0 < d && (("inleft" === h && "intop" === c) || ("inright" === h && "inbottom" === c));
                        l && v && ((f = [0, 0]), g ? f.push.apply(f, H(u)) : f.push.apply(f, H(r)));
                        g && (f = [f[0] - f[3], f[1], f[3], f[2]]);
                        f = he(f, k, h, c);
                        g = f.box;
                        $c(q, g) &&
                            !x &&
                            (!m && l && v && ($c(k, g) || (e = !0)),
                            !e && a._arrangeInfo.possible.push({ xAlignment: h, yAlignment: c, box: g, cxy: va(g), collide: !0 === p.collideAll(g), rotation: d, textAlignment: f.contentAlignment, marker: a, time: n }));
                    });
                };
                g = function (b, a, c) {
                    void 0 === c && (c = !1);
                    var d = [];
                    w(b, function (b) {
                        w(a, function (a) {
                            c ? d.push([b, a]) : d.push(b + a);
                        });
                    });
                    return d;
                };
                var x = [],
                    v = [];
                c = "sp" === c.prefix;
                (t(b) && 0 !== b) ||
                    (m && !c
                        ? (d ? (x = g(["in"], [d])) : ((x = g(["in"], ["left", "right"])), x.push("incenter")),
                          e ? (v = g([l ? "in" : "out"], [e])) : l ? ((v = g(["in", "out"], ["top", "bottom"])), v.push("inmiddle")) : (v = g(["out"], ["top", "bottom"])))
                        : (e ? (v = g(["in"], [e])) : ((v = g(["in", "out"], ["top", "bottom"])), v.push("inmiddle")),
                          d ? (x = g([l ? "in" : "out"], [d])) : l ? ((x = g(["in"], ["left", "right"])), x.push("incenter")) : (x = c ? g(["out"], ["left", "right"]) : g([], [""]))),
                    (c = g(x, v, !0)),
                    h(f, c, 0));
                (t(b) && 90 !== b && -90 !== b) ||
                    (m
                        ? ((x = d ? g(["in"], [d]) : g(["in"], ["left", "right"])), (v = e ? g([l ? "in" : "out"], [e]) : l ? g(["in"], ["top", "bottom", "middle"]) : g([], [""])))
                        : ((v = e ? g(["in"], [e]) : g(["in"], ["top", "bottom", "middle"])), d ? (x = g([l ? "in" : "out"], [d])) : l ? ((x = g(["in", "out"], ["left", "right"])), x.push("incenter")) : (x = g(["out"], ["left", "right"]))),
                    (c = g(x, v, !0)),
                    h(f, c, 90));
            } else a._arrangeInfo.visible = !1;
        }
    }
    function Mz(a, c) {
        if (!c.items.length && !N(a.currentOptions, ["scale", "range"])) return (c = a.chartArea.chartAreaSet.freeAxes[a.prefix].id), c !== a.id && c;
    }
    function Sl(a) {
        var c = [];
        t(a) && (a.pop ? ((c = a.length), (c = (2 === c ? a : 1 === c ? [a[0], null] : []) || [])) : (c = [a.min, a.max]));
        a = c;
        return nb(a[0]) && nb(a[1]);
    }
    function Vr(a, c) {
        return (a = C(a.currentOptions, "scale.type")) && c(a);
    }
    function Tl(a, c) {
        return Vr(a, c) || (a.syncAxis && Vr(a.syncAxis, c));
    }
    function Wr(a, c) {
        var b,
            d = function (b) {
                return [b[0], b[1], b[1] - b[0]];
            },
            e = function (c) {
                return "object" === I(c)
                    ? ((b = !0), Nk(c, a.range ? a.range.min : a.min, a.range ? a.range.max : a.max))
                    : c.map(function (b) {
                          return a.toPosition(b);
                      });
            };
        if (ja(c) && c.length) {
            var f = [];
            w(c, function (b) {
                "array" === I(b) ? f.push(e(b)) : f.push.apply(f, H(e(b)));
            });
            a.hasCalPatBreaks = b;
            return B(f, d);
        }
        a.hasCalPatBreaks = b;
        return c;
    }
    function Nz(a) {
        var c = [];
        hb(a, function (b) {
            return c.push(b);
        });
        return ad(sa(c));
    }
    function Oz(a, c) {
        var b = [0, a._sizeMetrics.length],
            d = 0 < la(b[0], b[1]);
        S(a._ticks, function (b) {
            return !b._isRange;
        });
        var e = [],
            f = function (b) {
                for (var a = 0; a < c.length; a++) b(c[a], a);
            },
            g = function (a) {
                return d ? Ue(b, a) : Ve(a);
            };
        f(function (b) {
            b.metrics();
            b._cxyRotate = void 0;
            b._rngData = { visRange: g(Ve(b._metrics.px)) };
            var a = b._rngData,
                c = (c = b._rngData.visRange) && 0 < c.length,
                d = sa(b._metrics.px),
                e = b._rngData.visRange;
            e && e.length ? ((b = la(d[0], e[0])), (d = la(d[1], e[1])), (d = 10 < b || 10 < d)) : (d = void 0);
            A(a, { visible: c, visPartial: d });
        });
        f(function (b) {
            var a = b._rngData;
            if (b._rngData.visible) {
                b = b._metrics.px;
                for (var c = 0; !f; ) {
                    var d = (e[c] = e[c] || []);
                    if (!bg(d, b).length) {
                        d.push(b);
                        var f = !0;
                    }
                    c++;
                }
                f = c - 1;
            } else f = 0;
            return (a.level = f);
        });
        f(function (b) {
            b = b._rngData;
            var a = b.visRange,
                c = (b.obstacles = []),
                d = function (b) {
                    return fe(Ve(a), b) && c.push(b);
                };
            b.higherIntersects = [];
            if (b.visible)
                for (var f = b.level + 1; f < e.length; f++) {
                    var g = bg(e[f], a);
                    Xe.apply(null, [b.higherIntersects].concat(g));
                    hb(g, d);
                }
        });
        var h = a.tickMetricsData,
            k = a.sideIndex();
        h = h.getMaxLength();
        k = 0 === k || 3 === k;
        var l = [0, 0];
        a = a.duV("inside" === C(a.currentOptions, "defaultTick.placement"));
        l[a.vc] = k ? h : 0;
        f(function (b) {
            var a = b._metrics.px;
            b._rngData.rotate = !t(C(b.currentOptions, "label.rotate")) && b._metrics.textSize[0] > la(a[0], a[1]);
        });
        f(function (b) {
            var a = g(b._metrics.px);
            if (b._rngData.visible) {
                var c = void 0,
                    d = b.currentOptions,
                    f = b._rngData,
                    h = cg(Zj(sa(f.obstacles), a, 0), a),
                    k = b._metrics.textSize,
                    l = !1;
                b._rngData.rotate && (l = !l);
                k = l ? [k[1], k[0]] : k.slice(0);
                k[0] += d.padding;
                f.labelSize = k;
                k = k[0];
                h = h.length ? tv(h) : xf(a, 5);
                var m = 5 * z(b.currentOptions.line.width, Ur.measure);
                l = xf(a, m);
                b = xf(b._metrics.px, m);
                h = Ue(h, l);
                h[1] - h[0] < k ? (!f.visPartial && la(l[0], l[1]) < k && (c = !0), (a = (a[0] + a[1]) / 2), (f.labelRange = [a - k / 2, a + k / 2])) : ((a = (h[0] + h[1]) / 2), (f.labelRange = [a - k / 2, a + k / 2]));
                a = f.labelRange.slice(0);
                f.labelRange = Yj(b, f.labelRange);
                Qe(a, f.labelRange);
                d = d.label && d.label.placement;
                0 !== f.level || c || (d && "auto" !== d)
                    ? (c
                          ? (f.autoLabelOnTop = !0)
                          : 1 === e.length
                          ? (f.autoLabelOnTop = !0)
                          : ((c = f.higherIntersects && 0 < bg(f.higherIntersects, f.labelRange).length), (f.autoLabelOnTop = !f.visPartial && !c && f.level < e.length - 1)),
                      (f.labelOnTop = t(f.labelOnTop) ? f.labelOnTop : f.autoLabelOnTop),
                      (c = z(d, "auto")),
                      (c && "auto" === c) || (f.labelOnTop = "outside" === c ? !0 : !1))
                    : (f.labelOnTop = f.autoLabelOnTop = !1);
            }
        });
        var m = [];
        w(e, function (b) {
            b.length && m.push.apply(m, H(co(b)));
        });
        m = ad(sa(m));
        return { ticks: c, levels: e, edges: m, origin: l, duV: a };
    }
    function Pz(a) {
        var c = "sv" + ("x" === a ? "x" : "");
        return ["" + a, a + "s", a + "e", "" + c, c + "s", c + "v"];
    }
    function Qz(a, c, b) {
        var d,
            e = a.childAxes.length ? a.childAxes.splice(0) : [a];
        w(e, function (e) {
            e.currentOptions.markers = e.currentOptions.markers || [];
            e.currentOptions.markers.push(c);
            e._markers.push(new Xr(e, c));
            d = !0;
            e.syncLegend();
            a.chart.isRendered && !1 !== b && a.chart.renderer.refresh();
            !1 !== b && e.renderOnCa(b);
        });
        d && a.chart.isRendered && !1 !== b && a.chart._legends[0].isVisible && (a.chart.chartAreaSet.reflow(b), a.chart.renderer.refresh());
    }
    function Gi(a) {
        return new Date(a).getTime() || new Date().getTime();
    }
    function Rz(a) {
        return function () {
            var c = [];
            a.each(function (b) {
                c = c.concat(b._ticks);
            });
            return c;
        };
    }
    function Sz(a) {
        return function () {
            var c = [];
            a.each(function (b) {
                c = c.concat(b._markers);
            });
            return c;
        };
    }
    function Tz(a) {
        return !a.chart.ctManager.isType("map") && (ye(a) || (ze(a) && a.series.currentOptions.pointSelection)) ? !0 : !1;
    }
    function Yr(a) {
        return ze(a) && ((a = a.series.currentOptions.pointSelection), "single" === a || 1 === a.max) ? "system/default/radio-button" : "system/default/checkbox";
    }
    function Zr(a) {
        if (ye(a)) return a.isVisible;
        if (ze(a)) return a.selected;
    }
    function Ul(a) {
        a = a.currentOptions.hoverAction;
        return t(a) ? "highlight" === a || "mute" === a : !0;
    }
    function Vl(a, c) {
        void 0 === c && (c = !0);
        var b = I(a);
        if ("array" === b) return a;
        if ("string" === b)
            return (
                (b = -1 < a.indexOf(",") ? /[,]/g : /[ ]/g),
                (c ? a.toLowerCase() : a).split(b).map(function (b) {
                    return b.trim();
                })
            );
    }
    function $r(a, c, b) {
        var d = [],
            e = [],
            f = [];
        c.each(function (c) {
            c.breaks.length && Uz(a, c, b, d, e, f);
        });
        return { clipPath: d.length ? xa(d) : null, paths: e, outlines: f };
    }
    function Uz(a, c, b, d, e, f) {
        void 0 === d && (d = []);
        void 0 === e && (e = []);
        void 0 === f && (f = []);
        var g = c.getBreakRects(),
            h = C(c.currentOptions, "scale.defaultBreak.line.width"),
            k = C(c.currentOptions, "scale.defaultBreak.line.color"),
            l = C(c.currentOptions, "scale.defaultBreak.type").toLowerCase();
        c = c.isHoriz;
        var m = function (c) {
            return md(a, c, b);
        };
        g.sort(
            c
                ? function (b, a) {
                      return b[0] - a[0];
                  }
                : function (b, a) {
                      return b[1] - a[1];
                  }
        );
        var n = g.length;
        if (1 != n)
            for (var p = 0; p < n; p++) {
                var q = g[p];
                q[0] += b / 2;
                q[1] += b / 2;
                if (!q) break;
                var r = void 0;
                r = 0 === p ? (c ? "r" : "b") : p === n - 1 ? (c ? "l" : "t") : c ? "c" : "m";
                if ((q = (Vz[l] || as)(r, h, q, m))) q.clipPath && d.push(q.clipPath), q.path && e.push({ path: q.path, color: k }), q.outlinePath && f.push({ path: q.outlinePath, stroke: k });
            }
    }
    function as(a, c, b, d) {
        b = d(b);
        d = { clipPath: Zp(b[0], b[1], b[2], b[3], { zigSides: a, zigWidth: c, lines: [] }) };
        var e = "m" === a || "t" === a || "b" === a ? 1 : 0;
        b[e] += 0.5;
        --b[e + 2];
        d.outlinePath = Zp(b[0], b[1], b[2], b[3], { zigWidth: c, zigSides: a, open: !0, lines: [] });
        return d;
    }
    function Wz(a, c, b, d) {
        var e = a.isHoriz,
            f = a.tooltip.currentOptions.combined,
            g = a.chart.axes("x"),
            h = [],
            k = [],
            l = [],
            m = !1;
        a.axes()
            .filter(function (b) {
                b = b.options("crosshair") || {};
                return b.enabled && !b.snapToData;
            })
            .each(function (b) {
                return b.crosshairXy(c);
            });
        a.axes()
            .filter(function (b) {
                if ("x" === b.prefix) return ((b.options("crosshair") || {}).enabled || f) && !b.options("scale.syncWith");
            })
            .each(function (b) {
                var a = [b, b.crosshairXy(c, void 0, d)];
                w(b.serList, function (b) {
                    if (b.isVisible && !1 !== b.options("mouseTracking_enabled")) {
                        var c = b.showHaloAtX(a[1]);
                        c && h.push(c);
                        b.haloPath && (k.push(b.haloPath), l.push(b));
                    }
                });
            });
        var n = Cc(ha(a.contentRect)) + " " + k.join(" ");
        w(l, function (b) {
            var a;
            (a = b.visuals.pointHalo) &&
                w(a, function (b) {
                    return b.attr({ clipPath: { d: n, "clip-rule": "evenodd" } });
                });
        });
        h = h.map(function (b) {
            return { axId: b[0].id, point: b[1], yVal: b[2] };
        });
        if (h.length) {
            var p = new Wl().key("axId").entries(h),
                q = [];
            w(p, function (b) {
                var c = a.axes(b.key);
                if (c) {
                    a.tooltip.cttEnabled(c, g) &&
                        (q.push.apply(
                            q,
                            H(
                                b.values.map(function (b) {
                                    return b.point;
                                })
                            )
                        ),
                        (m = !0));
                    var d = c.options("crosshair");
                    d.enabled && d.snapToData && Xz(a, c, Yz(b.values));
                }
            });
            q = ea(q, function (b) {
                return !b.series.indexer.getValue("isEmpty", b._i) && !1 !== b.series.options("mouseTracking_enabled");
            });
            q = sa(q, function (b) {
                return b.series.indexer.getValue("pos", b._i).xyz[e ? 0 : 1];
            });
            q.length && a.tooltip.show(q, b, c);
        } else
            a.axes()
                .filter(function (b) {
                    if ("y" === b.prefix) return (b.options("crosshair") || {}).enabled;
                })
                .each(function (b) {
                    return b.crosshairXy(c);
                });
        return m;
    }
    function Zz(a) {
        a.axes().each(function (a) {
            a.crosshair();
        });
    }
    function $z(a) {
        var c = Gh({ chartArea: a.chartArea || [{}] }, "chartArea"),
            b = Mj(a, ["title", "series", "legend", "events"]);
        Mj(a, ["xAxis", "yAxis", "zAxis"]);
        var d = { xAxis: a.xAxis || [{}], yAxis: a.yAxis || [{}], zAxis: a.zAxis || [{}] };
        A(c[0], Ga(b, "series"));
        c.rootItems = b;
        c.rootAx = d;
        a.series.length && ((c[0].series = c[0].series || []), (c[0].series = (c[0].series || []).concat(b.series)));
        return c;
    }
    function aA(a) {
        return function () {
            var c = [];
            a.each(function (b) {
                return c.push.apply(c, H(b.items));
            });
            return c;
        };
    }
    function bA(a, c, b) {
        if (c.data) {
            c = c.data;
            var d = (a.data = a.data || {}),
                e = I(c),
                f = t(c.transformer) ? c.transformer : a.ctManager.isType("calendar") ? cA : null,
                g = function (c) {
                    if (!d.val || (d.val && d.fileName !== c))
                        return (
                            Ew(c, function (e) {
                                d.val = f ? f(e.data) : e.data;
                                d.types = !f && Vk(d.val);
                                w(d.types, function (b, c) {
                                    return "date" === b && Z(a, "typeContextOptions.axes." + ["x", "y", "z"][c] + ".scale.type", "time");
                                });
                                d.fileName = c;
                                b(e);
                            }),
                            c
                        );
                };
            switch (e) {
                case "array":
                    d.val = c;
                    break;
                case "string":
                    if (256 > c.length && c.indexOf(".csv") === c.length - 4) return g(c);
                    d.val = Oh(c);
                    break;
                case "object":
                    if (c.data) d.val = Oh(c.data, c.delimiter, c.header);
                    else if (c.file) return g(c.file);
            }
        }
    }
    function cA(a) {
        return B(a, function (a) {
            return [a[0], parseFloat(a[1])];
        });
    }
    function Xl(a, c, b) {
        var d = ff[a];
        !d && Yl[a].checker(c, !1, {}) ? bs(a, c || {}, b) : !d || d.loaded ? b() : d.loading && d.callbacks.push(b);
    }
    function cs(a, c, b, d) {
        void 0 === d && (d = !1);
        c || b();
        var e = [],
            f = ff,
            g = function (a) {
                e.splice(e.indexOf(a), 1);
                e.length || dA(b);
            },
            h = eA(c),
            k = h ? W(Yl, h) : Yl,
            l = c.modules ? fa(c.modules) : {};
        Da(k, function (b) {
            var h = f[b],
                m = function () {
                    h && h.afterLoad && h.afterLoad(a, c);
                    !h && -1 < b.indexOf("locale") && f[b] && ((f[b].loading = !1), (f[b].loaded = !0));
                };
            (h && h.loaded) || !k[b].checker(c, d, l, a.ctManager)
                ? m()
                : (e.push(b),
                  bs(b, L({ notificationContainer: a.getWrapper() }, c), function () {
                      m();
                      g(b);
                  }));
        });
        var m = bA(a, c, function () {
            g(m);
        });
        m && e.push(m);
        e.length || b();
    }
    function ds(a, c) {
        for (var b in fA) if (a.isType(b, c)) return !0;
    }
    function bs(a, c, b) {
        bp(a, b, Ma, c);
    }
    function eA(a) {
        var c = T.Intl;
        a = a.defaultCultureName || "en-US";
        if (c && 0 < c.NumberFormat.supportedLocalesOf([a]).length) return null;
        gA();
        c = {};
        c["https://code.jscharting.com/polyfill/locales/" + a] = {
            checker: function () {
                return !0;
            },
        };
        return c;
    }
    function gA() {
        T.IntlPolyfill ||
            (T.IntlPolyfill = {
                __addLocaleData: function (a) {
                    return Hi.push(a);
                },
            });
    }
    function dA(a) {
        var c = T.IntlPolyfill;
        Hi.length &&
            c &&
            (w(Hi, function (b) {
                return c.__addLocaleData(b);
            }),
            (Hi = []));
        a();
    }
    function hA(a, c, b) {
        var d,
            e = {},
            f = a.calIndexer,
            g = { layoutAttr: e, boxAttr: {}, needRefresh: !1, needRedraw: !1, updateCalendar: !1 };
        t(c.margin) && Z(c, "box.margin", c.margin);
        w(c, function (b, d) {
            if (Zl[d]) Zl[d](b, a, g, c);
        });
        if (g.updateCalendar) {
            var h = a.userOptions,
                k = a.currentOptions;
            k.series = void 0;
            k.x = yf(h.x);
            k.y = yf(h.y);
            f.updateChart(k);
            var l = k.series;
            w(a.chartAreaSet.items, function (b) {
                b.options({ series: l });
            });
        }
        Object.keys(e).length && a.renderer.attr(e).refresh();
        e = t(null === (d = null === c || void 0 === c ? void 0 : c.box) || void 0 === d ? void 0 : d.padding);
        (!a.isRendered || e) && a.isColorized && 100 < a.renderer.getRootBox().height && ((g.boxAttr.padding = g.boxAttr.padding || [0, 0, 0, 0]), (g.boxAttr.padding[2] += 20));
        if ((d = g.boxAttr) && Object.keys(d).length) {
            if ((e = d.margin)) (f = Ac(a.rootVisuals.box.margin.initial)), (d.margin = Kj(f, e));
            a.rootVisuals.box.attr(d);
            g.needRefresh = a.isRendered;
        }
        g.needRedraw ? a.redraw(b) : g.needRefresh && a.rootPanel.refresh();
    }
    function iA(a, c, b) {
        Da($l, function (d) {
            c = $l[d](a, c, b);
        });
        return c;
    }
    function es(a, c, b) {
        return gf(function (d, e) {
            e = { text: c };
            b && ((e.baseUrl = b.baseUrl), (e.notificationContainer = b.notificationContainer));
            Xl("modules/types", e, function () {
                return d(Yq(a, c, b));
            });
        });
    }
    function jA(a, c, b) {
        fs = b;
        "undefined" != typeof a &&
            (a.fn.JSC = function () {
                function b(b) {
                    for (var a = 0, d = c.length; a < d; a++) if (b[0] == c[a][0]) return c[a][1];
                }
                var a = arguments,
                    f;
                if (this[0]) {
                    "string" === typeof a[0] && (a = Array.prototype.slice.call(a, 1));
                    var g = a[0];
                    t(g) ? ((f = b(this)) && f.dispose(), (g.targetElement = this[0]), (a = new fs(g, a[1])), (a.globalChartIndex = c.length), c.push([this[0], a]), (g = this)) : (g = b(this));
                }
                return g;
            });
    }
    function gs() {
        return "3.0.2.20210127";
    }
    function kA() {
        return gf(function (a) {
            "loading" === ba.readyState ? ba.addEventListener("DOMContentLoaded", a) : a();
        });
    }
    function hs(a, c) {
        var b = Ii(c),
            d = { grid_enabled: !0 };
        b && ((d.baseUrl = b.baseUrl), (d.notificationContainer = b.notificationContainer));
        return gf(function (c, f) {
            Xl("modules/datagrid", d, function () {
                c(sc.gridConstructor && sc.gridConstructor(a, b, void 0));
            });
        });
    }
    function is(a, c) {
        if (!(this instanceof is)) return hs(a, c);
        var b = sc.gridConstructor && sc.gridConstructor(a, c, void 0);
        return b
            ? ((b.then = function (a) {
                  return a && a(b);
              }),
              b)
            : hs(a, c);
    }
    function Ii(a) {
        var c;
        od && (c = od ? od() : {});
        return a && c ? A(c, a) : a || c;
    }
    var nj = function (a, c) {
            nj =
                Object.setPrototypeOf ||
                ({ __proto__: [] } instanceof Array &&
                    function (b, a) {
                        b.__proto__ = a;
                    }) ||
                function (b, a) {
                    for (var c in a) a.hasOwnProperty(c) && (b[c] = a[c]);
                };
            return nj(a, c);
        },
        lA = { exportButtonTooltip: "Export to raster or vector image", printButtonTooltip: "Print the chart", resetZoomText: "Zoom Out", resetZoomTooltip: "Reset Zoom" },
        Jk = "4285F4fE4C14DBCB1815AC20D150B1d9AeeC8C2808ED7C1F1eFEdAF2955B6eA738F5424378BE3CA87A893B3F84E154F5CD992D8C2903B9B09DC9F9F95F035FCACBFA0381830202FE9CCEFEFBCC9BdD7311A3340E7E4957B823E6BC0DE8BFC70D5987BD5C923|9C9Ad9C3063cCECEc63e63d8284e65CECECdFee84dbcebd84e8484a8284ebeCdFCEcCEdCEc9C9CCcF9ACECE9AcCF9C3165d31CFCE9CCFbCFb9Ab65e63659C949694e3063319A63e3e0313e09C3e09C306331309C313031accadacdbbbd84a82a848482e84e84e8284C6C3C6848284|4B649A88E2D869838eD93FA5EE4034088B2FAEB8E9ED266666FA7CD992C85203D4804FAFC7DD57F9EEFC335BA63D2F81C238683D996FEAB90342172309AE9538772BC16DF07420ADC7A4D9ED99DAA029BAEB076A40145A6485769C85B624F030670AD47A6BC1814E07CA65E495FD0F2881ED681E873AE862D16CC889C78AE792B499869EE625BDE959C952859E55CE88675403C8BCC|B2213DBAC01464AF4ADA5B8AEE971F989EDDB7D3E68B44D7DDC9870157E10EA61EEE6B07B9CFB4B24B420C78B02E5302CE296DF22889FD27DB64DCF58C635867CCB46CFE2C17DDCD290587A37ECB27AF7685322D741B7E94F0442B54F2BD25E7E9A3AAFBC054D4B64A9EC8220159A70F3D2D7F07302AF2B035D60DE7EB89DA6ADE9FB9D9202AED22AF7BE2D4515B93979B1B16C53E1E|E68E423F5C79E5D5ADEC6CBBE66457F9E2D796A6A28121DB6D38E9C36845D6CA2199DED1532E506469D45014C4203AFB07CE2E94B32C06656D65D0238E216D6715A1994C8485A6B487313CCC310C174DFDEDBB99164216F3937963EC5D2DD54867E7FD2285EC778128790D82EE3834604D8325A064D350D28AA5B70A21B8575A5AF365480DF3C610753A709C3492045A45039ED80834|3D88419BE23923AAC40154C4141CE1507A0314A091B380FC677487E15195AD6E9B8C285ACF5735E1DF6C4FEC798AC2D30DE68CCFDF87DA890744336DB040582E53E52887F3867F22CD32C024649382DCB1B2D46909DC8E14B09D538A23C6309E13209892613ADF85666902ADC6B62473C056BBFD6AEE25765714D55532F4FD0701211044F9EF7A76D24F029ED9E04CF978DEC9CC0A32|9ADB5E61F34C0C8DEFC21EC7737198D5D73F6085AE67C358B0C0BA2FE63093EF6B377F4DB066102F3B8CCA0F7ACA720AA4D70F6E875B33331805AF3390DCA5BF2E2D5B3CF14A24702E304A229BB4DCE54EB0890E2024681e44B35ABB6DC9E5EE50BDF4D6E35175AB29D3F561011966327C9E4DE52979E09C44A37A51478B95191EB3B90D38F7618992E5B81E411eF2B4D184EBF6BE|860104dD62E583410c6dF7e0551314FEdAF7F4D1Ccb4502830B0CF6FCDAaFDdB1d9D02EE1413AE6A29DE56eE4A711BB1313D195e61140DBCB037402E13B8C267B86D163F1815C2C8955E4520A7B817B851175F1A13C4CAB4aC1C898B88918AD3122815F2DA05813A68D2089291E977E12|181161D14524F9F72B83EA282BFBCDA395DEDC2ECE4133F5DA011D01A468837EB8EA917CC3B9F0C972E8958DFAF8717754D6A67B1D2CD14524E18514AC7F1384875DBA5965D42A5D8E2C6F6059A9A4A0D4F4F226A8F96072FEDFCCC2F6F69AEEAFA9FCFB94996BE6B98E569B9EA89E5FB8E9D97C7ACAC7E6AA6F9E9DB0A0AA56BE817BCACACF63CFCEEBE86F69D0FDCCE5E89C12FEe|4A2123D52E06B38D95dDBC5C2644482B2B8AE7EA1dE19C8D8A7E553C15DCD2D5dCA95DAC5E4DB9F62dDBD9BC9F95E49291484C50FAB36C9A6343E57B63BED7DA92392FD7CEC2d95eD0BBC1759980ADC0DFE5BFD2E0CC84C0D0C5CDD25EdC7C3C1dF1C69658F1F98E61693CA86567FB4C2688A259cC5A5C18ACAEBdC6A5D1A4845C5D531ADDCFA2D67F45AA3B33dC667|8A98DB3C59BA16265173A278B7F5Dd8F7A05CC3A192973C5D64488B775BA64E1B44475F714B96646DC4D02154F171A46F1842ECA991F8C12FED8F11F1CFC4D8BEF3F8FA2C3248862E0A1CA18BB670A3DD0A0D460A0D4655D3EBCDdD579DAC734879694E3A719686D18A56418775A47BD9A36773D98BC8EB4B73A7DC96B52A0951184B0D8BEF31E4AB3B1B7A1848BD4AAB5D2B1B7A14A67C5|BF2D305E8D34855E26a9FC2dC380B75174BED869349648B31E4BCCD150B159B6E6A36079C9EEd7BD76CdE648E4F6C29BAEAEA2dBA8AB74957C0C2F3E5D8dF285AAd45E0C18CBEE7A437942DDDde216C54DDF78F6174618BE767D89A7C7C8B59234172A3AD680C866D82789410869FBD19CDA087CB5980E78F5CAD5054A0AE7C321727308B113C2A573F2F0F4EA36E68|2A3D2FBCD0A4F7dD1AE708AF5ADBDF8D4DCB1E6d7AAEB38FAF6E101811B6C4B0dBEC4D06F71DFCC65BBD8BAD77856FDdB6E67347B8EDd47C3F2F89E8B834C37A1C261E2dCA3B491F52A09593B7D3647AAAD7ccD43F4E5DA4BD74dC49Ad6044CAD5C974A05B7383689B4427BE8B94d8C63D9c88ADC8D5A37dFDACAE488A1E997CC52A095849B50618C73C9DCB6|D1CEBC914927aDe04AE7C8C6F8EBbFBD0C75D65C3e7Ce9F3Ce8873e98A646648E8EC7E6827D4E6FA573737D83DFB7ADd2525E49F76F3EAF2FBF794d6E6EE20106A017174B2722e892F9CCB9685D1D215EDEA35C7F1186F3F67801C655567905D8DF64041A92E2EE38B97FBC197B5B3B3FEDD96FDD1F2DB391988010442e11eCE7498E6eeFC88eA3D2e447D|2263093BDB09F0d5EBCE86C7A7124AA9D2B5C770EC7E207CBB60B3E89080A1C0CdFA3C7CE96C514B18B09F09AFD408F8EeE4FA30715480DAdF3C513A107E7109AFD40815480D2D992A98BB7B5D5F307C833D4057217FA4328B932E3064220A1C0CB3C45E7EBC7D7CBC803A3D1E7B812B6E9C30ABB53B3E772615341587AD565D5F30|D0B85D648F8CF892eF9F29BA7D3EdAF168676A35F0C963dEF7AC6D332AC8827F3D864dFE49D3ED62B2AD61687C3DB0A89AB07286F6B899CEA95C6E581CCFB999F5A864B4CC9D516862D4F8A24E150ACF6E27718E258F889ED0C8996F685BB3AC29E9D23670370C7867669D721AB4DA55B06F52324C1936773D98BC8E483E46D8BEF313706B38384F738C5EdDEb64e998A50|173C64648F8C51CdF95cA7D3EF03343C676A35C49D35dEF7AC6D332B0EBBAE1dB6dFE499E68e181F03687C3DCDdD5DEFCdE3DEF22F2F696E6EBE03639F55D3EBF1C4B5e0A3F52A0951184B011B08C7DC96B9A9865CCCD6DdE23EFDFDB7FAB07A70370C786766e25595B93E09893BD5A809F36773D98BC8EF2CA8ED8BEF313706B38384F2CA6CB08F4BA8DF36E998A50|64eeC864eA08Cee64a6432e6464e64|4682B49ACD32708090CD853FB22222dA5bcd45eA0522DdD7e3CB37154A9DD6A5ACD4169E19370DBBA55D366CDAAD8BFD8d69B4DB7093|8Beb8Ce8B4513B8860B808e06B8E23556B2Fe64e2E8B57e8B8BeBdF4682B4ee80483D8B4Be828e080DC143Ca94eD3|468966dF0A5dB03BB649268E28e|7D8A2EC9D787F9D690dC0A9d8598|393A3DDBe485D9E9BC8DBBFE0FCEB|595441B9B09DDDE8EB69BFDE4A8797|7D7E9ABFC7B2D8D6B0D0C3B39B7A76|C44C51dB6B8dEFB6A2B5BF5F8CA3|FCdF5D1DBBD91AA9D3E606F193441|B0CC99677E52B7CA79F6E8B189725B|F7F2B2ADCF4F84815B4A1A2C8E3557|E8E595D0A82540627C26393DdFAE4|5A1FeD1570DFDE792477725A9CC66|595241B8AE9CDED7C6ACCFCC8A0917|66858D93A299C0BFA9dE7D5dBEAC|dF0A3B8CC6E4B6e0E4F8de4460|C7F2F547A0A1781515B8864CD9C39C|3B180182561AdF3D2ABB8864F462E|C3d939698656A4A2CC1420Ed8C47|759C52C2E858dE3A6E8A2989C5241|123B4AE6cC7C09AdE427dA908|ED9877B0B9ADAE555B485566837076|B8ECD7083643B1Ee1CEF09D476C5E|323240968C63FDdC9dD175C3C967|F0E14CdBB20FA7B12E8530559CC0D|4059529C9B7AdD393d974d54F29|762B1B807227CCBF7AdEF9860B0A1|5D4970372049F1BAF3FAEEd59535E|F9EBAE7898983C6573E8B54DB14D1C|B9121B4C1B1BF6E497FCFAE1BD8D46|B6D09C7273685C5C66533E3ECC9585|8F9AB3B0D0Dd1F3F0dACA1A61618|d5B2BB1221C34393E8CC6D7dDA8C|E51E19FC7529F9F23D8DEA550962B4|FD814C2DD5ECd364DA1F886dF37D|324732EADAD27E1F2DA1861D97A9CA|FA5E73E6DDD399CE5D43456DEB9765|3A8394C6EDF7D9F2B0dD1C1B71E4F|463531F57C75C380C921D4F6A5EBB0|997F87F7D6CDE6FCB5C5E0DC454B65|463531F57C75C380C921D4F6A5EBB0|070707FBDB5BEC360880C3d448B14|E37484CEDDE499B18DE9CD6CEAB79A|CAD6C35E7277F99DB1FBBFCCF6E1DC|F9FDF32B3532D33D3EC3B9ADe5773|94B13A2C81C06B4687960303F16723|DCE7B5B0C4CEFE4F13E6384D17304B|DA1C1C68DA1CF1E80821A4D8FC6A08|D3B569E29351C95B406D9DC54C507CB4F4F78BEFEA23877B03576019303A|003049D62828F77F00FCBF49EAE2B7|2F485833669986BBD89EE493DAF7DC|813405D45113F9A03FF8DDA4F1F9C2"
            .replace(/e/g, "00")
            .replace(/d/g, "FF")
            .replace(/c/g, "FFFF")
            .replace(/b/g, "00FF")
            .replace(/a/g, "000000")
            .split("|"),
        ou = Object.prototype.hasOwnProperty,
        js = "object" == typeof global && global && global.Object === Object && global,
        mA = "object" == typeof self && self && self.Object === Object && self,
        pd = js || mA || Function("return this")(),
        Ji = pd.Symbol,
        Nf = Object.prototype,
        qb = Nf.hasOwnProperty,
        Za = Array.isArray,
        pu = Nf.toString,
        oj = bn(Object.getPrototypeOf, Object),
        Xg = Function.prototype.toString,
        qu = Xg.call(Object),
        Dj = (function (a) {
            return function (c, b, d) {
                var e = -1,
                    f = Object(c);
                d = d(c);
                for (var g = d.length; g--; ) {
                    var h = d[a ? g : ++e];
                    if (!1 === b(f[h], h, f)) break;
                }
                return c;
            };
        })(),
        ks = Nf.propertyIsEnumerable,
        Le = cn(
            (function () {
                return arguments;
            })()
        )
            ? cn
            : function (a) {
                  return Pc(a) && qb.call(a, "callee") && !ks.call(a, "callee");
              },
        ls = "object" == typeof aa && aa && !aa.nodeType && aa,
        ms = ls && "object" == typeof module && module && !module.nodeType && module,
        ns = ms && ms.exports === ls,
        Ki = ns ? pd.Buffer : void 0,
        Me = (Ki ? Ki.isBuffer : void 0) || ru,
        wn = Ki ? Ki.allocUnsafe : void 0,
        su = /^(?:0|[1-9]\d*)$/,
        Ca = {};
    Ca["[object Float32Array]"] = Ca["[object Float64Array]"] = Ca["[object Int8Array]"] = Ca["[object Int16Array]"] = Ca["[object Int32Array]"] = Ca["[object Uint8Array]"] = Ca["[object Uint8ClampedArray]"] = Ca[
        "[object Uint16Array]"
    ] = Ca["[object Uint32Array]"] = !0;
    Ca["[object Arguments]"] = Ca["[object Array]"] = Ca["[object ArrayBuffer]"] = Ca["[object Boolean]"] = Ca["[object DataView]"] = Ca["[object Date]"] = Ca["[object Error]"] = Ca["[object Function]"] = Ca["[object Map]"] = Ca[
        "[object Number]"
    ] = Ca["[object Object]"] = Ca["[object RegExp]"] = Ca["[object Set]"] = Ca["[object String]"] = Ca["[object WeakMap]"] = !1;
    var am = ns && js.process;
    a: {
        try {
            var bm = am && am.binding && am.binding("util");
            break a;
        } catch (a) {}
        bm = void 0;
    }
    var os = bm && bm.isTypedArray,
        Zg = os ? dn(os) : tu,
        uu = bn(Object.keys, Object),
        ah = (function (a, c) {
            return function (b, d) {
                if (null == b) return b;
                if (!vd(b)) return a(b, d);
                for (var e = b.length, f = c ? e : -1, g = Object(b); (c ? f-- : ++f < e) && !1 !== d(g[f], f, g); );
                return b;
            };
        })(function (a, c) {
            return a && Dj(a, c, Ne);
        }),
        Li = Array.prototype,
        nA = Li.splice;
    Qc.prototype.clear = function () {
        this.__data__ = [];
        this.size = 0;
    };
    Qc.prototype["delete"] = function (a) {
        var c = this.__data__;
        a = bh(c, a);
        if (0 > a) return !1;
        a == c.length - 1 ? c.pop() : nA.call(c, a, 1);
        --this.size;
        return !0;
    };
    Qc.prototype.get = function (a) {
        var c = this.__data__;
        a = bh(c, a);
        return 0 > a ? void 0 : c[a][1];
    };
    Qc.prototype.has = function (a) {
        return -1 < bh(this.__data__, a);
    };
    Qc.prototype.set = function (a, c) {
        var b = this.__data__,
            d = bh(b, a);
        0 > d ? (++this.size, b.push([a, c])) : (b[d][1] = c);
        return this;
    };
    var cm = pd["__core-js_shared__"],
        gn = (function () {
            var a = /[^.]+$/.exec((cm && cm.keys && cm.keys.IE_PROTO) || "");
            return a ? "Symbol(src)_1." + a : "";
        })(),
        xu = /^\[object .+?Constructor\]$/,
        wu = RegExp(
            "^" +
                Xg.call(qb)
                    .replace(/[\\^$.*+?()[\]{}|]/g, "\\$&")
                    .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") +
                "$"
        ),
        Kg = Rd(pd, "Map"),
        Lg = Rd(Object, "create");
    Sd.prototype.clear = function () {
        this.__data__ = Lg ? Lg(null) : {};
        this.size = 0;
    };
    Sd.prototype["delete"] = function (a) {
        a = this.has(a) && delete this.__data__[a];
        this.size -= a ? 1 : 0;
        return a;
    };
    Sd.prototype.get = function (a) {
        var c = this.__data__;
        return Lg ? ((a = c[a]), "__lodash_hash_undefined__" === a ? void 0 : a) : qb.call(c, a) ? c[a] : void 0;
    };
    Sd.prototype.has = function (a) {
        var c = this.__data__;
        return Lg ? void 0 !== c[a] : qb.call(c, a);
    };
    Sd.prototype.set = function (a, c) {
        var b = this.__data__;
        this.size += this.has(a) ? 0 : 1;
        b[a] = Lg && void 0 === c ? "__lodash_hash_undefined__" : c;
        return this;
    };
    Rc.prototype.clear = function () {
        this.size = 0;
        this.__data__ = { hash: new Sd(), map: new (Kg || Qc)(), string: new Sd() };
    };
    Rc.prototype["delete"] = function (a) {
        a = ch(this, a)["delete"](a);
        this.size -= a ? 1 : 0;
        return a;
    };
    Rc.prototype.get = function (a) {
        return ch(this, a).get(a);
    };
    Rc.prototype.has = function (a) {
        return ch(this, a).has(a);
    };
    Rc.prototype.set = function (a, c) {
        var b = ch(this, a),
            d = b.size;
        b.set(a, c);
        this.size += b.size == d ? 0 : 1;
        return this;
    };
    kc.prototype.clear = function () {
        this.__data__ = new Qc();
        this.size = 0;
    };
    kc.prototype["delete"] = function (a) {
        var c = this.__data__;
        a = c["delete"](a);
        this.size = c.size;
        return a;
    };
    kc.prototype.get = function (a) {
        return this.__data__.get(a);
    };
    kc.prototype.has = function (a) {
        return this.__data__.has(a);
    };
    kc.prototype.set = function (a, c) {
        var b = this.__data__;
        if (b instanceof Qc) {
            var d = b.__data__;
            if (!Kg || 199 > d.length) return d.push([a, c]), (this.size = ++b.size), this;
            b = this.__data__ = new Rc(d);
        }
        b.set(a, c);
        this.size = b.size;
        return this;
    };
    Td.prototype.add = Td.prototype.push = function (a) {
        this.__data__.set(a, "__lodash_hash_undefined__");
        return this;
    };
    Td.prototype.has = function (a) {
        return this.__data__.has(a);
    };
    var dh = pd.Uint8Array,
        Mi = Ji ? Ji.prototype : void 0,
        Pf = Mi ? Mi.valueOf : void 0,
        dm = Object.getOwnPropertySymbols,
        vj = dm
            ? function (a) {
                  if (null == a) return [];
                  a = Object(a);
                  return pj(dm(a), function (c) {
                      return ks.call(a, c);
                  });
              }
            : ln,
        em = Rd(pd, "DataView"),
        fm = Rd(pd, "Promise"),
        zf = Rd(pd, "Set"),
        gm = Rd(pd, "WeakMap"),
        oA = Qd(em),
        pA = Qd(Kg),
        qA = Qd(fm),
        rA = Qd(zf),
        sA = Qd(gm),
        wc = ud;
    if (
        (em && "[object DataView]" != wc(new em(new ArrayBuffer(1)))) ||
        (Kg && "[object Map]" != wc(new Kg())) ||
        (fm && "[object Promise]" != wc(fm.resolve())) ||
        (zf && "[object Set]" != wc(new zf())) ||
        (gm && "[object WeakMap]" != wc(new gm()))
    )
        wc = function (a) {
            var c = ud(a);
            if ((a = (a = "[object Object]" == c ? a.constructor : void 0) ? Qd(a) : ""))
                switch (a) {
                    case oA:
                        return "[object DataView]";
                    case pA:
                        return "[object Map]";
                    case qA:
                        return "[object Promise]";
                    case rA:
                        return "[object Set]";
                    case sA:
                        return "[object WeakMap]";
                }
            return c;
        };
    var Eu = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
        Du = /^\w*$/,
        hm = function (a, c) {
            if ("function" != typeof a || (null != c && "function" != typeof c)) throw new TypeError("Expected a function");
            var b = function () {
                var d = arguments,
                    e = c ? c.apply(this, d) : d[0],
                    f = b.cache;
                if (f.has(e)) return f.get(e);
                d = a.apply(this, d);
                b.cache = f.set(e, d) || f;
                return d;
            };
            b.cache = new (hm.Cache || Rc)();
            return b;
        };
    hm.Cache = Rc;
    var tA = /^\./,
        uA = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
        vA = /\\(\\)?/g,
        Fu = (function (a) {
            a = hm(a, function (b) {
                500 === c.size && c.clear();
                return b;
            });
            var c = a.cache;
            return a;
        })(function (a) {
            var c = [];
            tA.test(a) && c.push("");
            a.replace(uA, function (b, a, e, f) {
                c.push(e ? f.replace(vA, "$1") : a || b);
            });
            return c;
        }),
        Qf = 1 / 0,
        nn = Mi ? Mi.toString : void 0,
        yj = 0 / 0,
        qn = /^\s+|\s+$/g,
        Lu = /^[-+]0x[0-9a-f]+$/i,
        Iu = /^0b[01]+$/i,
        Ju = /^0o[0-7]+$/i,
        Ku = parseInt,
        gh = Math.max,
        wA = (function (a) {
            return function (c, b, d) {
                var e = Object(c);
                if (!vd(c)) {
                    var f = Xd(b);
                    c = Ne(c);
                    b = function (b) {
                        return f(e[b], b, e);
                    };
                }
                b = a(c, b, d);
                return -1 < b ? e[f ? c[b] : b] : void 0;
            };
        })(Sf),
        hh = (function () {
            try {
                var a = Rd(Object, "defineProperty");
                a({}, "", {});
                return a;
            } catch (c) {}
        })(),
        xA = Date.now,
        tn = (function (a) {
            var c = 0,
                b = 0;
            return function () {
                var d = xA(),
                    e = 16 - (d - b);
                b = d;
                if (0 < e) {
                    if (800 <= ++c) return arguments[0];
                } else c = 0;
                return a.apply(void 0, arguments);
            };
        })(
            hh
                ? function (a, c) {
                      return hh(a, "toString", { configurable: !0, enumerable: !1, value: Mu(c), writable: !0 });
                  }
                : Wd
        ),
        yA = Bj(function (a, c, b, d) {
            Yd(c, $d(c), a, d);
        }),
        zA = Zd(function (a) {
            a.push(void 0, Nu);
            return zj(yA, void 0, a);
        }),
        ps = Object.create,
        Ou = (function () {
            function a() {}
            return function (c) {
                if (!xb(c)) return {};
                if (ps) return ps(c);
                a.prototype = c;
                c = new a();
                a.prototype = void 0;
                return c;
            };
        })(),
        im = Bj(function (a, c, b, d) {
            jh(a, c, b, d);
        }),
        qd = Zd(function (a) {
            a.push(void 0, An);
            return zj(im, void 0, a);
        }),
        Cn = dm
            ? function (a) {
                  for (var c = []; a; ) tj(c, vj(a)), (a = oj(a));
                  return c;
              }
            : ln,
        Xu = /\w*$/,
        za = {};
    za["[object Arguments]"] = za["[object Array]"] = za["[object ArrayBuffer]"] = za["[object DataView]"] = za["[object Boolean]"] = za["[object Date]"] = za["[object Float32Array]"] = za["[object Float64Array]"] = za[
        "[object Int8Array]"
    ] = za["[object Int16Array]"] = za["[object Int32Array]"] = za["[object Map]"] = za["[object Number]"] = za["[object Object]"] = za["[object RegExp]"] = za["[object Set]"] = za["[object String]"] = za["[object Symbol]"] = za[
        "[object Uint8Array]"
    ] = za["[object Uint8ClampedArray]"] = za["[object Uint16Array]"] = za["[object Uint32Array]"] = !0;
    za["[object Error]"] = za["[object Function]"] = za["[object WeakMap]"] = !1;
    var AA = Bj(function (a, c, b) {
            jh(a, c, b);
        }),
        BA =
            zf && 1 / Of(new zf([, -0]))[1] == Qf
                ? function (a) {
                      return new zf(a);
                  }
                : $u,
        CA = Zd(function (a) {
            if (!a || !a.length) return [];
            var c = 0;
            a = pj(a, function (b) {
                if (Tf(b)) return (c = gh(b.length, c)), !0;
            });
            return qj(c, function (b) {
                return Vd(a, on(b));
            });
        }),
        Fn = Ji ? Ji.isConcatSpreadable : void 0,
        DA = Zd(function (a, c) {
            if (null == a) return [];
            var b = c.length;
            1 < b && ih(a, c[0], c[1]) ? (c = []) : 2 < b && ih(c[0], c[1], c[2]) && (c = [c[0]]);
            return cv(a, lh(c, 1), []);
        }),
        EA = Li.splice,
        FA = Li.join,
        GA = Li.reverse,
        HA = Zd(function (a, c) {
            if (Tf(a)) {
                c = lh(c, 1, Tf, !0);
                var b = -1,
                    d = kh,
                    e = !0,
                    f = a.length,
                    g = [],
                    h = c.length;
                if (f)
                    a: for (200 <= c.length && ((d = hn), (e = !1), (c = new Td(c))); ++b < f; ) {
                        var k = a[b],
                            l = k;
                        k = 0 !== k ? k : 0;
                        if (e && l === l) {
                            for (var m = h; m--; ) if (c[m] === l) continue a;
                            g.push(k);
                        } else d(c, l, void 0) || g.push(k);
                    }
                a = g;
            } else a = [];
            return a;
        }),
        qs = Math.min,
        IA = Zd(function (a) {
            var c = Vd(a, dv);
            if (c.length && c[0] === a[0]) {
                a = c[0].length;
                for (var b = c.length, d = b, e = Array(b), f = Infinity, g = []; d--; ) {
                    var h = c[d];
                    f = qs(h.length, f);
                    e[d] = 120 <= a && 120 <= h.length ? new Td(d && h) : void 0;
                }
                h = c[0];
                var k = -1,
                    l = e[0];
                a: for (; ++k < a && g.length < f; ) {
                    var m = h[k],
                        n = m;
                    m = 0 !== m ? m : 0;
                    if (l ? !l.has(n) : !kh(g, n, void 0)) {
                        for (d = b; --d; ) {
                            var p = e[d];
                            if (p ? !p.has(n) : !kh(c[d], n, void 0)) continue a;
                        }
                        l && l.push(n);
                        g.push(m);
                    }
                }
                c = g;
            } else c = [];
            return c;
        }),
        JA = (function (a) {
            return tn(sn(a, void 0, fv), a + "");
        })(function (a, c) {
            var b = {};
            if (null == a) return b;
            var d = !1;
            c = Vd(c, function (b) {
                b = eh(b, a);
                d || (d = 1 < b.length);
                return b;
            });
            Yd(a, Dn(a), b);
            d && (b = Uf(b, 7, ev));
            for (var e = c.length; e--; ) Gn(b, c[e]);
            return b;
        }),
        ea = function (a, c) {
            return (Za(a) ? pj : vu)(a, Xd(c));
        },
        S = wA,
        id = zA,
        qa = function (a) {
            return Uf(a, 4);
        },
        yf = function (a) {
            return Uf(a, 5);
        },
        A = AA,
        w = function (a, c) {
            return (Za(a) ? Bn : ah)(a, Fj(c));
        },
        B = function (a, c) {
            return (Za(a) ? Vd : En)(a, Xd(c));
        },
        jm = function (a, c, b) {
            var d = Za(a) ? Ej : Yu,
                e = 3 > arguments.length;
            return d(a, Xd(c), b, e, ah);
        },
        $a = function (a) {
            if (a && a.length)
                a: {
                    var c = -1,
                        b = kh,
                        d = a.length,
                        e = !0,
                        f = [];
                    if (200 <= d) {
                        if ((b = BA(a))) {
                            a = Of(b);
                            break a;
                        }
                        e = !1;
                        b = hn;
                        var g = new Td();
                    } else g = f;
                    b: for (; ++c < d; ) {
                        var h = a[c],
                            k = h;
                        h = 0 !== h ? h : 0;
                        if (e && k === k) {
                            for (var l = g.length; l--; ) if (g[l] === k) continue b;
                            f.push(h);
                        } else b(g, k, void 0) || (g !== f && g.push(k), f.push(h));
                    }
                    a = f;
                }
            else a = [];
            return a;
        },
        ad = function (a) {
            if (a && a.length) {
                for (var c = -1, b = a.length, d = 0, e = []; ++c < b; ) {
                    var f = a[c],
                        g = f;
                    if (!c || !Pd(g, h)) {
                        var h = g;
                        e[d++] = 0 === f ? 0 : f;
                    }
                }
                a = e;
            } else a = [];
            return a;
        },
        oh = Ke,
        Qn = function (a, c) {
            return null == a ? a : Dj(a, Fj(c), $d);
        },
        Co = CA,
        sa = DA,
        Af = function (a, c) {
            var b = [];
            if (!a || !a.length) return b;
            var d = -1,
                e = [],
                f = a.length;
            for (c = Xd(c); ++d < f; ) {
                var g = a[d];
                c(g, d, a) && (b.push(g), e.push(d));
            }
            c = a ? e.length : 0;
            for (d = c - 1; c--; )
                if (((f = e[c]), c == d || f !== h)) {
                    var h = f;
                    Yg(f) ? EA.call(a, f, 1) : Gn(a, f);
                }
            return b;
        },
        gc = IA,
        pc = function (a, c) {
            return null == a ? "" : FA.call(a, c);
        },
        yg = function (a, c, b) {
            var d = null == a ? 0 : a.length;
            if (!d) return [];
            b && "number" != typeof b && ih(a, c, b) ? ((c = 0), (b = d)) : ((c = null == c ? 0 : Oe(c)), (b = void 0 === b ? d : Oe(b)));
            return Hj(a, c, b);
        },
        Gq = function (a) {
            return null == a ? a : GA.call(a);
        },
        me = HA,
        ob = function (a, c) {
            a = Oe(a);
            if (1 > a || 9007199254740991 < a) return [];
            var b = 4294967295,
                d = qs(a, 4294967295);
            c = Fj(c);
            a -= 4294967295;
            for (d = qj(d, c); ++b < a; ) c(b);
            return d;
        },
        Ga = JA,
        ja = Za,
        nb = function (a) {
            return "number" == typeof a || (Pc(a) && "[object Number]" == ud(a));
        },
        ub = function (a) {
            if (null == a) return !0;
            if (vd(a) && (Za(a) || "string" == typeof a || "function" == typeof a.splice || Me(a) || Zg(a) || Le(a))) return !a.length;
            var c = wc(a);
            if ("[object Map]" == c || "[object Set]" == c) return !a.size;
            if ($g(a)) return !fn(a).length;
            for (var b in a) if (qb.call(a, b)) return !1;
            return !0;
        },
        Hg = function (a, c, b) {
            a = Ke(a);
            b = null == b ? 0 : Ij(Oe(b), 0, a.length);
            c = Mf(c);
            return a.slice(b, b + c.length) == c;
        },
        zq = function () {
            var a = arguments,
                c = Ke(a[0]);
            return 3 > a.length ? c : c.replace(a[1], a[2]);
        },
        Gd = function (a, c, b) {
            if ((a = Ke(a)) && (b || void 0 === c)) return a.replace(qn, "");
            if (!a || !(c = Mf(c))) return a;
            a = a.split("");
            c = c.split("");
            b = -1;
            for (var d = a.length; ++b < d && -1 < Gj(c, a[b], 0); );
            for (d = a.length; d-- && -1 < Gj(c, a[d], 0); );
            c = d + 1;
            d = a.length;
            c = void 0 === c ? d : c;
            return (!b && c >= d ? a : Hj(a, b, c)).join("");
        },
        Mg = function (a, c, b) {
            a = Ke(a);
            c = Mf(c);
            var d = a.length;
            d = b = void 0 === b ? d : Ij(Oe(b), 0, d);
            b -= c.length;
            return 0 <= b && a.slice(b, d) == c;
        },
        oa = function (a) {
            if (a && a.length) {
                for (var c = -1, b = a.length; ++c < b; ) {
                    var d = a[c],
                        e = d;
                    if (null != e && (void 0 === f ? e === e && !Ud(e) : e > f))
                        var f = e,
                            g = d;
                }
                a = g;
            } else a = void 0;
            return a;
        },
        Ta = function (a) {
            return a && a.length ? Hn(a, Wd) : 0;
        },
        Do = function (a) {
            var c = null == a ? 0 : a.length;
            return c ? Hn(a, Wd) / c : yj;
        },
        ua = function (a, c, b) {
            void 0 === b && ((b = c), (c = void 0));
            void 0 !== b && ((b = fh(b)), (b = b === b ? b : 0));
            void 0 !== c && ((c = fh(c)), (c = c === c ? c : 0));
            return Ij(fh(a), c, b);
        },
        Jn = function (a, c) {
            return a.id || c;
        },
        Ha = Number.isNaN || gv,
        iv = /function ([^\(]+)/,
        hv = Array.prototype.concat,
        wd = Object.prototype.hasOwnProperty,
        Xe = function (a) {
            for (var c = [], b = 1; b < arguments.length; b++) c[b - 1] = arguments[b];
            return w(c, function (b) {
                return t(b) && a.push(b);
            });
        },
        km = {},
        Ni = function (a, c) {
            var b = !1,
                d,
                e,
                f = function () {
                    b
                        ? ((d = arguments), (e = this))
                        : (a.apply(this, arguments),
                          (b = !0),
                          (f.timeoutId = setTimeout(function () {
                              b = !1;
                              d && (f.apply(e, d), (d = e = null));
                          }, c)));
                };
            f.cancel = function () {
                clearTimeout(f.timeoutId);
                b = !1;
            };
            return f;
        },
        Rb = function (a, c, b, d) {
            b =
                b ||
                function () {
                    for (var b = [], a = 0; a < arguments.length; a++) b[a] = arguments[a];
                    return JSON.stringify(b);
                };
            a = a || Nn(c);
            return KA(a, c, b, d);
        },
        KA = function (a, c, b, d) {
            return function () {
                for (var e = [], f = 0; f < arguments.length; f++) e[f] = arguments[f];
                if (0 < e.length) {
                    km.hasOwnProperty(a) || Object.defineProperty(km, a, { configurable: !1, enumerable: !1, writable: !1, value: {} });
                    f = km[a];
                    var g = b.apply(this, e);
                    d && (g += b.apply(this, d(this)));
                    if (f.hasOwnProperty(g)) var h = f[g];
                    else (h = c.apply(this, e)), (f[g] = h);
                }
                return h;
            };
        },
        rs = function () {
            try {
                return window.localStorage.setItem("test", "test"), window.localStorage.removeItem("test"), !0;
            } catch (a) {
                return !1;
            }
        },
        ss = function (a, c, b) {
            return function () {
                for (var d = [], e = 0; e < arguments.length; e++) d[e] = arguments[e];
                if (0 < d.length) {
                    e = Nn(a) + c.apply(this, d);
                    if (!b) var f = (f = window.localStorage.getItem(e)) && JSON.parse(f);
                    if (!f || b) (f = a.apply(this, d)), window.localStorage.setItem(e, JSON.stringify(f));
                }
                return f;
            };
        },
        kv = /[-]{0,1}[\d]*[\.]{0,1}[\d]+/g,
        hb = function (a, c) {
            return t(a)
                ? a.pop
                    ? a.map(function (b) {
                          return hb(b, c);
                      })
                    : c(a)
                : a;
        },
        lv = /([a-zA-Z]+)_/g,
        LA = Object.freeze({
            __proto__: null,
            def: t,
            has: J,
            removeArrItem: pb,
            evalPath: C,
            epa: N,
            getValType: I,
            isNull: an,
            mergeCollections: Ub,
            noop: xc,
            noopRet: Gb,
            contains: ae,
            caseInsensitiveProperty: mh,
            eachKey: Da,
            extend: L,
            extendCopy: W,
            copy: Oa,
            extendScoped: Na,
            extendScopedNegate: Sc,
            extendCopyScopedNegate: be,
            extendCopyScoped: Pe,
            exclude: Hb,
            plainArray: fa,
            concatArrays: Tc,
            plainCommaSplitedString: Jj,
            arraySum: Kj,
            plainToArray: function (a) {
                var c = [],
                    b;
                for (b in a) c.push(a[b]);
                return c;
            },
            last: P,
            copyIfChanged: function (a, c) {
                var b = {},
                    d = !1,
                    e;
                for (e in c) d || (wd.call(a, e) && a[e] === c[e]) || (d = !0), (b[e] = c[e]);
                return d ? b : null;
            },
            changesWithExtend: Lj,
            pick: z,
            attr: function (a, c, b) {
                var d, e;
                if (O(c)) t(b) ? a.setAttribute(c, b) : a && a.getAttribute && (e = a.getAttribute(c));
                else if (t(c) && Pa(c)) for (d in c) a.setAttribute(d, c[d]);
                return e;
            },
            isString: O,
            isObject: Pa,
            isUndefined: Q,
            isUndefinedOrNull: lc,
            keys: pa,
            keysFlatten: Kn,
            detect: yc,
            detectKey: Ln,
            pickPaths: function (a, c) {
                var b, d;
                w(c, function (c) {
                    if ((d = C(a, c))) return (b = d), !1;
                });
                return b;
            },
            pluckPaths: Mj,
            setPathVal: Z,
            setPathValArr: Vf,
            applySetting: zc,
            applySettingArr: Mn,
            findInArrSimple: nh,
            compareArrays: Qe,
            pushDef: Xe,
            throttle: Ni,
            Memoize: Rb,
            localStorageAvailable: rs,
            evalString: Nj,
            fromLocalStorage: ss,
            kebabCase: On,
            split: Re,
            eachCommaSplited: Ib,
            parseNumber: function (a) {
                return Number(a);
            },
            parseMargin: Ac,
            extractNumbers: Oj,
            mapRange: Pn,
            mapDeep: hb,
            expandOptionsProperties: Sa,
            sign: ce,
            isNaN: Ha,
            isPlainObject: Wg,
            filter: ea,
            find: S,
            findIndex: Sf,
            defaults: id,
            defaultsDeep: qd,
            clone: qa,
            cloneDeep: yf,
            merge: A,
            mergeWith: im,
            each: w,
            map: B,
            reduce: jm,
            uniq: $a,
            sortedUniq: ad,
            toString: oh,
            forIn: Qn,
            zip: Co,
            sortBy: sa,
            remove: Af,
            intersection: gc,
            join: pc,
            slice: yg,
            reverse: Gq,
            difference: me,
            times: ob,
            omit: Ga,
            isArray: ja,
            isEqual: function (a, c) {
                return vc(a, c);
            },
            isFunction: Fb,
            isNumber: nb,
            isEmpty: ub,
            startsWith: Hg,
            replace: zq,
            trim: Gd,
            endsWith: Mg,
            max: oa,
            sum: Ta,
            mean: Do,
            clamp: ua,
        }),
        Vb = Math,
        MA = Number.MAX_VALUE,
        lm = Math.floor,
        ts = function (a, c, b) {
            void 0 === b && (b = 0);
            return Sj(na(a, b), na(c, b));
        },
        Yf = function (a) {
            a = "" + Math.abs(a);
            for (var c = a.length - 1, b = c, d = a[b]; d && "." !== d; ) d = a[--b];
            return -1 === b ? 0 : c - b;
        },
        Tj = 1 / Math.pow(10, 6),
        NA = function (a, c) {
            var b,
                d = [];
            try {
                for (var e = ya(a), f = e.next(); !f.done; f = e.next()) {
                    var g = f.value;
                    d.push([la(g, c), g]);
                }
            } catch (k) {
                var h = { error: k };
            } finally {
                try {
                    f && !f.done && (b = e.return) && b.call(e);
                } finally {
                    if (h) throw h.error;
                }
            }
            d = sa(d, function (b) {
                return b[0];
            });
            return a.length && d[0][1];
        },
        Rk = /^-?\d+\.?\d*$/,
        us = String.fromCharCode(160),
        OA = us + "\u2013" + us,
        Bf = function (a) {
            return a && a.toLowerCase ? a.toLowerCase() : a;
        },
        vb = function (a, c) {
            return a && -1 < a.indexOf(c);
        },
        vs = function (a) {
            return t(a) && "function" === typeof a.pop && 2 === a.length ? a.join(OA) : a.pop ? a.join(", ") : a;
        },
        Ir = function (a, c, b) {
            void 0 === b && (b = "\u2026");
            return a.length > c ? a.substr(0, c) + b : a;
        },
        cl = Math.pow,
        ws = function (a, c) {
            return a - Math.floor(a / c) * c;
        },
        fe = function (a, c) {
            return c > a[0] && c < a[1];
        },
        Kb = function (a, c) {
            return c >= a[0] && c <= a[1];
        },
        $n = function (a, c) {
            return Kb(a, c[0]) && Kb(a, c[1]);
        },
        xf = function (a, c) {
            return c.length ? [a[0] + c[0], a[1] - c[1]] : [a[0] + c, a[1] - c];
        },
        Ve = function (a) {
            return a[1] < a[0] ? [a[1], a[0]] : a;
        },
        Wa = function (a) {
            return a[1] + a[3];
        },
        Va = function (a) {
            return a[0] + a[2];
        },
        yd = function (a) {
            return a[1];
        },
        xd = function (a) {
            return a[0];
        },
        Vc = function (a) {
            return a[0] + a[2] / 2;
        },
        Wc = function (a) {
            return a[1] + a[3] / 2;
        },
        nc = {
            b: Wa,
            t: yd,
            c: Vc,
            l: xd,
            r: Va,
            m: Wc,
            intop: [yd, yd, "top"],
            outtop: [Wa, yd, "bottom"],
            inbottom: [Wa, Wa, "bottom"],
            outbottom: [yd, Wa, "top"],
            inmiddle: [Wc, Wc, "middle"],
            outmiddle: [Wc, Wc, "middle"],
            inleft: [xd, xd, "left"],
            outleft: [Va, xd, "right"],
            inright: [Va, Va, "right"],
            outright: [xd, Va, "left"],
            incenter: [Vc, Vc, "center"],
            outcenter: [Vc, Vc, "center"],
            default: function (a, c) {
                a = a.toLowerCase();
                return 4 == a.length ? [nc[a[1]], nc[a[3]], nc[a[0]], nc[a[2]]] : nc[a] || nc[c];
            },
            x: function (a) {
                return nc.default(a, "incenter");
            },
            y: function (a) {
                return nc.default(a, "inmiddle");
            },
        },
        ge = {
            left: xd,
            right: Va,
            center: Vc,
            top: yd,
            middle: Wc,
            bottom: Wa,
            default: function (a, c) {
                return ge[a.toLowerCase()] || c;
            },
            x: function (a) {
                return ge.default(a, Vc);
            },
            y: function (a) {
                return ge.default(a, Wc);
            },
        },
        PA = function (a) {
            var c = a[0],
                b = a[1],
                d = Va(a),
                e = Wa(a),
                f = Vc(a),
                g = Wc(a);
            return function (a) {
                return { tl: [c, b], tr: [d, b], tm: [f, b], bl: [c, e], br: [d, e], bm: [f, e], lm: [c, g], rm: [d, g] }[a.toLowerCase()];
            };
        },
        ie = function (a, c) {
            a = PA(a);
            c = c.split(",");
            return B(c, a);
        },
        xs = Va,
        ys = Wa,
        ko = function (a) {
            return "M" + a[0] + " " + a[1] + " h" + a[2] + " v" + a[3] + " h" + -a[2] + " Z";
        },
        Yb = function (a) {
            return [a[0], a[1], Va(a), Wa(a)];
        },
        Ze = function (a) {
            return [a[0], a[1], a[2] - a[0], a[3] - a[1]];
        },
        zs = function (a) {
            return [
                [a[0], Va(a)],
                [a[1], Wa(a)],
            ];
        },
        Xc = function (a, c) {
            return mm(a.slice(0), c);
        },
        mm = function (a, c) {
            a[0] += c[0];
            a[1] += c[1];
            return a;
        },
        T = window,
        ba = document,
        QA =
            "performance" in window && "now" in performance
                ? performance
                : {
                      offset: Date.now(),
                      now: function () {
                          return Date.now() - this.offset;
                      },
                  },
        nm = window.navigator.userAgent.toLowerCase(),
        kk = null,
        jk = null,
        om = [
            { name: "winphone", value: "Windows Phone" },
            { name: "win", value: "Win" },
            { name: "iphone", value: "iPhone" },
            { name: "ipad", value: "iPad" },
            { name: "kindle", value: "Silk" },
            { name: "android", value: "Android" },
            { name: "blackberry", value: "BlackBerry" },
            { name: "macintosh", value: "Mac" },
            { name: "linux", value: "Linux" },
        ],
        Oi = (function () {
            var a;
            for (a = 0; a < om.length; a += 1) if (new RegExp(om[a].value, "i").test(nm)) return om[a].name;
            return "unknown";
        })(),
        RA = "ipad" === Oi || "iphone" === Oi,
        SA = function () {
            var a,
                c = ["ms", "moz", "webkit", "o"],
                b = 0;
            try {
                for (var d = ya(c), e = d.next(); !e.done; e = d.next()) {
                    var f = e.value;
                    T.requestAnimationFrame = T[f + "RequestAnimationFrame"];
                    T.cancelAnimationFrame = T[f + "CancelAnimationFrame"] || T[f + "CancelRequestAnimationFrame"];
                }
            } catch (h) {
                var g = { error: h };
            } finally {
                try {
                    e && !e.done && (a = d.return) && a.call(d);
                } finally {
                    if (g) throw g.error;
                }
            }
            T.requestAnimationFrame ||
                (T.requestAnimationFrame = function (a) {
                    var c = QA.now(),
                        d = Math.max(0, 16 - (c - b));
                    b = c + d;
                    return T.setTimeout(function () {
                        return a(b);
                    }, d);
                });
            T.cancelAnimationFrame ||
                (T.cancelAnimationFrame = function (b) {
                    return clearTimeout(b);
                });
        };
    T.requestAnimationFrame || SA();
    var Ka;
    (function (a) {
        a[(a.None = 0)] = "None";
        a[(a.Currency = 1)] = "Currency";
        a[(a.Number = 2)] = "Number";
        a[(a.Decimal = 3)] = "Decimal";
        a[(a.Exponential = 4)] = "Exponential";
        a[(a.Float = 5)] = "Float";
        a[(a.General = 6)] = "General";
        a[(a.Hexadecimal = 7)] = "Hexadecimal";
        a[(a.Percent = 8)] = "Percent";
        a[(a.NumericSymbol = 9)] = "NumericSymbol";
        a[(a.PowersOfTen = 10)] = "PowersOfTen";
    })(Ka || (Ka = {}));
    var As = ["k", "M", "B", "T", "Q"],
        Mv = /^[A-z]+/,
        Nv = /[0-9]+/,
        Tv = /(d{1,4}|f{1,7}|F{1,7}|gg?|K|hh?|HH?|mm?|M{1,4}|ss?|tt?|y{1,4}|z{1,3}|S)/gm,
        TA = /^([a-zA-Z]*)([_\-a-zA-Z]*)$/,
        Bs = function (a) {
            return O(a) ? a : a.formatString + a.currency;
        },
        Cs = function (a) {
            return O(a) ? a : a.formatString + a.timeZone + a.month + a.day + a.year + a.hour + a.minute + a.second + a.weekday;
        },
        UA = function (a, c) {
            return (a || "").toString() + (c ? Bs(c) : "");
        },
        VA = function (a, c) {
            return (a ? a : "") + (c ? Bs(c) : "");
        },
        WA = function (a, c) {
            return (a || "").toString() + (c ? Cs(c) : "");
        },
        XA = function (a, c) {
            return (a ? a : "") + (c ? Cs(c) : "");
        },
        pm = { year: "numeric", month: "numeric", day: "numeric" },
        Pi = { weekday: "long", year: "numeric", month: "long", day: "numeric" },
        qm = { hour: "2-digit", minute: "2-digit" },
        Qi = { hour: "2-digit", minute: "2-digit", second: "2-digit" },
        Ds = { month: "long", day: "numeric" },
        Es = { month: "long", year: "numeric" },
        Zb = function (a, c) {
            void 0 === c && (c = 2);
            for (a = a.toString(); a.length < c; ) a = "0" + a;
            return a;
        },
        Ri = function (a, c) {
            void 0 === c && (c = 2);
            for (a = a.toString(); a.length < c; ) a += "0";
            return a;
        },
        $b = {
            d: function (a) {
                return a.getDate().toString();
            },
            dd: function (a) {
                return Zb(a.getDate(), 2);
            },
            ddd: function (a, c) {
                return c.format(a);
            },
            dddd: function (a, c) {
                return c.format(a);
            },
            f: function (a) {
                return Math.round(a.getMilliseconds() / 100).toString();
            },
            ff: function (a) {
                return Math.round(a.getMilliseconds() / 10).toString();
            },
            fff: function (a) {
                return a.getMilliseconds().toString();
            },
            ffff: function (a) {
                return Ri($b.fff(a), 4);
            },
            fffff: function (a) {
                return Ri($b.fff(a), 5);
            },
            ffffff: function (a) {
                return Ri($b.fff(a), 6);
            },
            fffffff: function (a) {
                return Ri($b.fff(a), 7);
            },
            F: function (a) {
                return (a = a.getMilliseconds()) ? Math.round(a / 100).toString() : "";
            },
            FF: function (a) {
                return (a = a.getMilliseconds()) ? Math.round(a / 10).toString() : "";
            },
            FFF: function (a) {
                return (a = a.getMilliseconds()) ? Math.round(a).toString() : "";
            },
            FFFF: function (a) {
                return $b.FFF(a);
            },
            FFFFF: function (a) {
                return $b.FFF(a);
            },
            FFFFFF: function (a) {
                return $b.FFF(a);
            },
            FFFFFFF: function (a) {
                return $b.FFF(a);
            },
            g: function (a, c) {
                return c.format(a);
            },
            gg: function (a, c) {
                return c.format(a);
            },
            h: function (a, c) {
                return c.format(a).replace(/\D/g, "");
            },
            hh: function (a, c) {
                return Zb(c.format(a).replace(/\D/g, ""), 2);
            },
            H: function (a) {
                return a.getHours().toString();
            },
            HH: function (a) {
                return Zb(a.getHours(), 2);
            },
            K: function (a) {
                return a.getTimezoneOffset() ? $b.zzz(a) : "Z";
            },
            m: function (a) {
                return a.getMinutes().toString();
            },
            mm: function (a) {
                return Zb(a.getMinutes(), 2);
            },
            M: function (a) {
                return (a.getMonth() + 1).toString();
            },
            MM: function (a) {
                return Zb(a.getMonth() + 1, 2);
            },
            MMM: function (a, c) {
                return c.format(a);
            },
            MMMM: function (a, c) {
                return c.format(a);
            },
            s: function (a) {
                return a.getSeconds().toString();
            },
            ss: function (a) {
                return Zb(a.getSeconds(), 2);
            },
            t: function (a, c) {
                return $b.tt(a, c).substring(0, 1);
            },
            tt: function (a, c) {
                return c.format(a).replace(/\d/g, "").trim();
            },
            y: function (a) {
                a = a.getFullYear().toString();
                return parseInt(a.substring(a.length - 2)).toString();
            },
            yy: function (a) {
                a = a.getFullYear().toString();
                return a.substring(a.length - 2).toString();
            },
            yyy: function (a) {
                a = a.getFullYear();
                return Zb(a, 3);
            },
            yyyy: function (a) {
                a = a.getFullYear();
                return Zb(a, 4);
            },
            yyyyy: function (a) {
                a = a.getFullYear();
                return Zb(a, 5);
            },
            z: function (a) {
                a = Fs(a);
                return (0 < a ? "+" : "-") + Math.abs(a);
            },
            zz: function (a) {
                a = Fs(a);
                return (0 < a ? "+" : "-") + Zb(Math.abs(a), 2);
            },
            zzz: function (a) {
                return $b.zz(a) + ":" + Zb(a.getMinutes() - a.getUTCMinutes(), 2);
            },
        },
        Fs = function (a) {
            a = a.getHours() - a.getUTCHours();
            12 < Math.abs(a) && (a -= 24 * ce(a));
            return a;
        },
        Qv = {
            D: { options: Pi },
            d: { options: pm },
            F: { options: W(Pi, Qi) },
            f: { options: W(Pi, qm) },
            T: { options: Qi },
            t: { options: qm },
            g: { options: W(pm, qm) },
            G: { options: W(pm, Qi) },
            m: { options: Ds },
            M: { options: Ds },
            y: { options: Es },
            Y: { options: Es },
            u: { formatString: "yyyy-MM-dd HH:mm:ssZ" },
            U: { options: W({ timeZone: "UTC" }, W(Pi, Qi)) },
            s: { formatString: "yyyy-MM-ddTHH:mm:ss" },
            r: {
                handler: function (a) {
                    return a.toUTCString();
                },
            },
            R: {
                handler: function (a) {
                    return a.toUTCString();
                },
            },
        },
        Ng = (function () {
            function a(a, b) {
                var c = this;
                void 0 === b && (b = {});
                this.locale = a;
                this.options = b;
                this.dateTimeFormatters = {};
                this.setLocale = function (b) {
                    c.locale !== b && (c.locale = b);
                };
                this.formatDate = function (b, a) {
                    return c._formatDate(b, a, c);
                };
                this.formatNumber = function (b, a) {
                    return c._formatNumber(b, a, c);
                };
                this._getDateTimeFormat = Rb("getDateTimeFormat", Iv, XA);
                this._getNumberFormat = Rb("getNumberFormat", Jv, VA);
                this._getCollator = Rb("getCollator", Kv);
                this._formatDate = Rb("formatDate", Pv, WA, function (b) {
                    return [b.locale, b.options];
                });
                this._formatNumber = Rb("formatNumber", Lv, UA, function (b) {
                    return [b.locale, b.options];
                });
                this.formatString = this.options.formatString;
            }
            a.prototype.compare = function (a, b) {
                var c = this._getCollator(this.locale, this.options);
                return c ? c.compare(a, b) : a === b;
            };
            return a;
        })(),
        YA = /_|-/g,
        Rv = function (a) {
            var c = a.split(YA);
            a = 1 < c.length ? c.pop() : a;
            a = a.toUpperCase();
            return a in Gs ? Gs[a] : "USD";
        },
        Gs = {
            AD: "EUR",
            AE: "AED",
            AF: "AFN",
            AG: "XCD",
            AI: "XCD",
            AL: "ALL",
            AM: "AMD",
            AN: "ANG",
            AO: "AOA",
            AR: "ARS",
            AS: "USD",
            AT: "EUR",
            AU: "AUD",
            AW: "AWG",
            AX: "EUR",
            AZ: "AZN",
            BA: "BAM",
            BB: "BBD",
            BD: "BDT",
            BE: "EUR",
            BF: "XOF",
            BG: "BGN",
            BH: "BHD",
            BI: "BIF",
            BJ: "XOF",
            BL: "EUR",
            BM: "BMD",
            BN: "BND",
            BO: "BOB",
            BQ: "USD",
            BR: "BRL",
            BS: "BSD",
            BT: "BTN",
            BV: "NOK",
            BW: "BWP",
            BY: "BYR",
            BZ: "BZD",
            CA: "CAD",
            CC: "AUD",
            CD: "CDF",
            CF: "XAF",
            CG: "XAF",
            CH: "CHF",
            CI: "XOF",
            CK: "NZD",
            CL: "CLP",
            CM: "XAF",
            CN: "CNY",
            CO: "COP",
            CR: "CRC",
            CU: "CUP",
            CV: "CVE",
            CW: "ANG",
            CX: "AUD",
            CY: "EUR",
            CZ: "CZK",
            DE: "EUR",
            DJ: "DJF",
            DK: "DKK",
            DM: "XCD",
            DO: "DOP",
            DZ: "DZD",
            EC: "USD",
            EE: "EUR",
            EG: "EGP",
            EH: "MAD",
            ER: "ERN",
            ES: "EUR",
            ET: "ETB",
            FI: "EUR",
            FJ: "FJD",
            FK: "FKP",
            FM: "USD",
            FO: "DKK",
            FR: "EUR",
            GA: "XAF",
            GB: "GBP",
            GD: "XCD",
            GE: "GEL",
            GF: "EUR",
            GG: "GBP",
            GH: "GHS",
            GI: "GIP",
            GL: "DKK",
            GM: "GMD",
            GN: "GNF",
            GP: "EUR",
            GQ: "XAF",
            GR: "EUR",
            GS: "GBP",
            GT: "GTQ",
            GU: "USD",
            GW: "XOF",
            GY: "GYD",
            HK: "HKD",
            HM: "AUD",
            HN: "HNL",
            HR: "HRK",
            HT: "HTG",
            HU: "HUF",
            ID: "IDR",
            IE: "EUR",
            IL: "ILS",
            IM: "GBP",
            IN: "INR",
            IO: "USD",
            IQ: "IQD",
            IR: "IRR",
            IS: "ISK",
            IT: "EUR",
            JE: "GBP",
            JM: "JMD",
            JO: "JOD",
            JP: "JPY",
            KE: "KES",
            KG: "KGS",
            KH: "KHR",
            KI: "AUD",
            KM: "KMF",
            KN: "XCD",
            KP: "KPW",
            KR: "KRW",
            KW: "KWD",
            KY: "KYD",
            KZ: "KZT",
            LA: "LAK",
            LB: "LBP",
            LC: "XCD",
            LI: "CHF",
            LK: "LKR",
            LR: "LRD",
            LS: "LSL",
            LT: "LTL",
            LU: "EUR",
            LV: "LVL",
            LY: "LYD",
            MA: "MAD",
            MC: "EUR",
            MD: "MDL",
            ME: "EUR",
            MF: "EUR",
            MG: "MGA",
            MH: "USD",
            MK: "MKD",
            ML: "XOF",
            MM: "MMK",
            MN: "MNT",
            MO: "MOP",
            MP: "USD",
            MQ: "EUR",
            MR: "MRO",
            MS: "XCD",
            MT: "EUR",
            MU: "MUR",
            MV: "MVR",
            MW: "MWK",
            MX: "MXN",
            MY: "MYR",
            MZ: "MZN",
            NA: "NAD",
            NC: "XPF",
            NE: "XOF",
            NF: "AUD",
            NG: "NGN",
            NI: "NIO",
            NL: "EUR",
            NO: "NOK",
            NP: "NPR",
            NR: "AUD",
            NU: "NZD",
            NZ: "NZD",
            OM: "OMR",
            PA: "PAB",
            PE: "PEN",
            PF: "XPF",
            PG: "PGK",
            PH: "PHP",
            PK: "PKR",
            PL: "PLN",
            PM: "EUR",
            PN: "NZD",
            PR: "USD",
            PS: "ILS",
            PT: "EUR",
            PW: "USD",
            PY: "PYG",
            QA: "QAR",
            RE: "EUR",
            RO: "RON",
            RS: "RSD",
            RU: "RUB",
            RW: "RWF",
            SA: "SAR",
            SB: "SBD",
            SC: "SCR",
            SD: "SDG",
            SE: "SEK",
            SG: "SGD",
            SH: "SHP",
            SI: "EUR",
            SJ: "NOK",
            SK: "EUR",
            SL: "SLL",
            SM: "EUR",
            SN: "XOF",
            SO: "SOS",
            SR: "SRD",
            ST: "STD",
            SV: "SVC",
            SX: "ANG",
            SY: "SYP",
            SZ: "SZL",
            TC: "USD",
            TD: "XAF",
            TF: "EUR",
            TG: "XOF",
            TH: "THB",
            TJ: "TJS",
            TK: "NZD",
            TL: "USD",
            TM: "TMT",
            TN: "TND",
            TO: "TOP",
            TR: "TRY",
            TT: "TTD",
            TV: "AUD",
            TW: "TWD",
            TZ: "TZS",
            UA: "UAH",
            UG: "UGX",
            UM: "USD",
            US: "USD",
            UY: "UYU",
            UZ: "UZS",
            VA: "EUR",
            VC: "XCD",
            VE: "VEF",
            VG: "USD",
            VI: "USD",
            VN: "VND",
            VU: "VUV",
            WF: "XPF",
            WS: "WST",
            YE: "YER",
            YT: "EUR",
            ZA: "ZAR",
            ZM: "ZMK",
            ZW: "ZWL",
        },
        Hs = function (a) {
            var c = 1e4 <= a;
            a = c ? Math.ceil(Math.log(a) / Math.log(1e3)) - 1 : 0;
            a = Math.min(5, a);
            return c ? [a, As[a - 1] || ""] : [0, ""];
        },
        Sv = function (a, c) {
            var b = "";
            if (c && a) {
                var d = a / Math.pow(1e3, c);
                b = As[c - 1];
            } else 1e4 <= Math.abs(a) && ((d = G(Hs(a), 2)), (c = d[1]), (d = a / Math.pow(1e3, d[0])), (b = c));
            return (d || a) + b;
        },
        Si = function (a, c, b) {
            void 0 === b && (b = "en-US");
            var d = I(a),
                e = "object" === typeof c;
            b = new Ng(b, e ? c : {});
            return "date" === d ? b.formatDate(a, e ? {} : c) : b.formatNumber(a, e ? {} : c);
        },
        Is = function (a) {
            var c;
            if ((c = a)) (c = TA.exec(a)), (c = a && c ? (a = c[1]) && a.toLowerCase() : void 0);
            if ((a = c)) return !!~ZA.indexOf(a);
        },
        ZA = "ae ar arc bcc bqi ckb dv fa glk he ku mzn nqo pnb ps sd ug ur yi".split(" "),
        Ma = {
            missed: {},
            events: {},
            on: function (a, c, b) {
                var d = this;
                (this.events[a] || (this.events[a] = [])).push({ fn: c, ctx: b });
                this.missed[a] &&
                    this.missed[a].forEach(function (b) {
                        return d.emit.apply(d, H([b.name], b.rest));
                    });
            },
            emit: function (a) {
                for (var c = [], b = 1; b < arguments.length; b++) c[b - 1] = arguments[b];
                b = (this.events[a] || []).slice();
                b.length
                    ? b.forEach(function (b) {
                          return b.fn.apply(b.ctx, c);
                      })
                    : ((this.missed[a] || (this.missed[a] = [])).push({ name: a, rest: c }), "error" === a && T.console.error("JSCharting Error: Set chart option {debug:true} to view full error messages."));
            },
            un: function (a, c) {
                var b = this.events[a],
                    d = [];
                if (b && c) for (var e = 0, f = b.length; e < f; e++) b[e].fn !== c && b[e].fn._ !== c && d.push(b[e]);
                d.length ? (this.events[a] = d) : delete this.events[a];
            },
        },
        Ae = (function () {
            function a(a) {
                this.stack = {};
                this._clearFn = (this._forAnimation = !0 === a) ? Hv : T.clearTimeout.bind(T);
                this._setFn = this._forAnimation ? Gv : T.setTimeout.bind(T);
            }
            a.prototype.defer = function (a, b, d) {
                var c = this.stack[a];
                c ? (c.lastBounce = Date.now()) : (this.stack[a] = this.timeout(a, b, d));
            };
            a.prototype.clear = function (a) {
                var b = this.stack[a];
                if (b) return this._clearFn(b.timer), delete this.stack[a], !0;
            };
            a.prototype.has = function (a) {
                return !!this.stack[a];
            };
            a.prototype.run = function (a) {
                var b = this.stack[a];
                if (b) return this._clearFn(b.timer), b.fn(), delete this.stack[a], !0;
            };
            a.prototype.clearAll = function () {
                var a = this;
                Da(a.stack, function (b) {
                    a.clear(b);
                });
            };
            a.prototype.timeout = function (a, b, d) {
                var c = this,
                    f = c._setFn,
                    g = { timer: null, start: Date.now(), fn: b, lastBounce: Date.now(), delay: d };
                g.timer = f(function () {
                    var e = Date.now(),
                        f = g.lastBounce + d;
                    e < f ? (c.stack[a] = c.timeout(a, b, f - e)) : (b.call(), delete c.stack[a]);
                }, d);
                return g;
            };
            return a;
        })(),
        $A = (function () {
            function a() {
                this.items = {};
                this._onReady = {};
            }
            a.prototype.hold = function (a) {
                var b = de(6);
                this.holdItem(b, a);
                return b;
            };
            a.prototype.release = function (a) {
                a && (delete this.items[a], this.isReady() && this.triggerFnQueue());
            };
            a.prototype.isReady = function () {
                return 0 === Object.keys(this.items).length;
            };
            a.prototype.onReady = function (a, b) {
                this._onReady[a] = b;
            };
            a.prototype.unReady = function (a) {
                delete this._onReady[a];
            };
            a.prototype.reset = function () {
                this.items = {};
                this._onReady = {};
            };
            a.prototype.debug = function (a) {};
            a.prototype.holdItem = function (a, b) {
                this.items[a] = b;
            };
            a.prototype.triggerFnQueue = function () {
                var a = Object.keys(this._onReady),
                    b = this._onReady;
                this._onReady = {};
                for (var d = 0, e = a.length; d < e; d++) b[a[d]]();
                this._onReady = {};
            };
            return a;
        })(),
        aB = (function () {
            function a() {
                this.callCount = 0;
            }
            a.prototype.open = function () {
                this.callCount++;
            };
            a.prototype.close = function () {
                this.callCount--;
            };
            return a;
        })(),
        wb = (function (a) {
            function c(b, d) {
                d = a.call(this, b, d) || this;
                d.items = b;
                d.kindObject = c;
                return d;
            }
            K(c, a);
            c.prototype.options = function (b, a) {
                var c = this.items.length - 1;
                return this.each(function (d, e) {
                    d.options(b, !1 === a || c !== e ? !1 : void 0);
                });
            };
            return c;
        })(
            (function () {
                function a(c, b) {
                    this.items = c;
                    this.currentOptions = b;
                    this.kindObject = a;
                    this.__collection__ = c.slice(0);
                }
                a.prototype.find = function (a) {
                    return S(this.items, a);
                };
                a.prototype.filter = function (a) {
                    return this.wrap(ea(this.items, a));
                };
                a.prototype.each = function (a) {
                    w(this.items, a);
                    return this;
                };
                a.prototype.sortBy = function (a) {
                    return this.wrap(sa(this.items, a));
                };
                a.prototype.map = function (a) {
                    return B(this.items, a);
                };
                a.prototype.reverse = function () {
                    return this.wrap(this.items.slice(0).reverse());
                };
                a.prototype.remove = function (a) {
                    var b = [];
                    w(this.items.slice(0), function (c) {
                        c.remove ? c.remove(a) : b.push(c);
                    });
                    this.items = b;
                    return this;
                };
                a.prototype.wrap = function (a) {
                    if (a instanceof this.kindObject) return a;
                    C(a, "__collection__");
                    return new this.kindObject(a);
                };
                return a;
            })()
        ),
        Og = {},
        Ti,
        Ui = "circle square triangle triangle-down diamond four-point-star arrow-down arrow-up five-point-star six-point-star seven-point-star".split(" "),
        Js = "x y z mapData complete completeX complete.y complete.x name subvalue subvalueX yAxisTick xAxisTick".split(" "),
        Cr = "color marker outline opacity label fill".split(" "),
        bB = ["selected", "muted"],
        Or = ["selected", "muted"],
        gb = { series: 0, body: 1, complete: 2, error: 3, marker: 4, breakPath: 5, labelConnector: 6, label: 7 },
        nr = /<chart \\?.*?>/i,
        cB =
            ((Ti = {}),
            (Ti[1] = function () {
                return { fill: "#f6f6f6", boxVisible: !0, outline: { width: 1 } };
            }),
            (Ti[0] = function () {
                return { fill: "rgba(255, 255, 255, 0.5)", boxVisible: !1, outline: { width: 0 }, shadow: !1 };
            }),
            Ti),
        Cf = function (a) {
            void 0 === a && (a = 0);
            return A({ radius: 5, padding: 3, label: { style: { color: "#323232" } }, outline: { color: "#bdbdbd" }, sortOrder: 1 }, cB[a]());
        },
        af = {},
        Ks = { iphone: "ios", ipad: "ios", android: "android", winphone: "winphone" },
        Wv = J(Ks, Oi) ? Ks[Oi] : "default",
        dg = null,
        $e = null,
        rm = ["class", "className", "style", "externalResourcesRequired"].concat(
            ["requiredFeatures", "requiredExtensions", "systemLanguage"],
            ["id", "xml:base", "xml:lang", "xml:space"],
            "onfocusin onfocusout onactivate onclick onmousedown onmouseup onmouseover onmousemove onmouseout onload".split(" "),
            "alignment-baseline baseline-shift clip clip-path clip-rule color color-interpolation color-interpolation-filters color-profile color-rendering cursor direction display dominant-baseline enable-background fill fill-opacity fill-rule filter flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-orientation-horizontal glyph-orientation-vertical image-rendering kerning letter-spacing lighting-color marker-end marker-mid marker-start mask opacity overflow pointer-events shape-rendering stop-color stop-opacity stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-align background-color border text-decoration text-rendering unicode-bidi visibility word-spacing writing-mode user-select strokeWidth borderWidth border-width borderColor border-color fontStyle fontSize fontFamily fontWeight z-index zIndex clipPath shadow textDecoration tabindex".split(
                " "
            ),
            ["transform", "translate", "rotate", "scale"],
            ["aria-label", "role", "aria-hidden"]
        ),
        dB = rm.concat(rm, ["x", "y", "width", "height"]),
        Ls = fa(rm),
        Vi = fa(dB),
        fy = {
            borderColor: "stroke",
            "border-color": "stroke",
            strokeOpacity: "stroke-opacity",
            strokeWidth: "stroke-width",
            borderWidth: "stroke-width",
            "border-width": "stroke-width",
            className: "class",
            strokeDashArray: "stroke-dasharray",
            textRendering: "text-rendering",
            zIndex: "z-index",
            fontFamily: [
                "fontFamily",
                function (a) {
                    return a.toLowerCase();
                },
            ],
            description: "aria-label",
        },
        eB = fa("transform radius translate scale z-index animation transition display rotate overflow clipPath opacity visibility tabindex role aria-label".split(" ")),
        fB = eg("d path pathLength shape hatch hatchPattern".split(" "), Ls),
        gB = eg(["src"], Vi),
        Ms = eg(["rx", "ry"], Vi),
        hB = eg(["radius"], Ms),
        iB = fa("id class translate transform rotate animation opacity z-index fill color display cursor tabindex aria-label".split(" ")),
        Pg = fa("stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width".split(" ")),
        jB = eg(["fill", "fill-rule"], Pg),
        qk = 'A" AW AV Yt Hv Sp vo us fr Dv ry W. Vr LT T: ro xc Ak F" OC w; P, PA r, DY SR yo la wb Bc f? L" m" Xv c" lp Ix Oj YW RX f" VA a" Ku my ot e, il So T" F. FA D, Ru tt st CO Co gy Te w. OA bv fe Fw Xf cv XA YA UA D" aj am he bc VT r: xt 11 AT AY Av Aw Ay F, LV LW LY Ly P. RT RV RW RY T, T- T. T; TA TO Ta Tc Ti To Tr Ts Tu Tw Ty V, V- V. V: V; Va Ve Vi Vo Vu Vy W, W- W: W; WA Wa We Wo Wr Wu Wy Y, Y- Y. Y: Y; Ya Ye Yi Yo Yp Yq Yu Yv ff r. v, v. w, y, y. \'A -A -I -J -P -S -T -V -W -X -Y -Z -a -v -w -x -y -z .. ., .- A- AS AU At Au B, B. BT C- D. DT DW DX DZ F: F; Fa Fe Fo I- J, J. JA K- KO Ka Ke Ko Kv Kw Ky L\' L- LC LG LO Lv O, O. OT OX OY OZ Pa Pe Po Q, Q. R- Ra Re Ro Ry S, S. SA SS Sv Sw Sy TC TG TS TT Tg Tv Tz U, U. X- XC XG XO Xa Xe Xo Xu Xy YO Yd Yg Ym Yn Yr Ys Z- ZC ZG ZO ZZ Za Ze Zo Zw Zy av aw ay b, b. by c- cT eT f, f- f. fy hv hw hy k- ke ko mv mw nv nw ny o, o. ov ox oy p, p. py r- ra t- ty v- va ve w- wa x- xd xe xg xo y- ya yc yd ye yg yq z- zc zd ze zg zo zq Ki Kn Ph Pi Pr Wi AC AG AO AQ BA BU DA DV Fr Ja Je Jo Ju Jy KC KG LU Lw NA OV OW QT QV QY RC RG RO RQ RU TQ Tm VC VG VO VQ WC WG WO Wd YC YG YS at ch ck cl cy eb ev ex fa fo ow pw sw vc vd vq wc wd we wo wq 24 37 41 47 51 52 57 62 67 74 ET KQ KS LQ LS P/ PJ T/ TJ TZ V/ VJ W/ WJ Y/ YJ Yc rg A) L) Pl Rv Td Tk Tl Tp Tq Tt Vl Vp Vs Vv Wl Wp Ws Wv Yl fi fk fl tz vl wl yl'.split(
            " "
        ),
        ok = ["AW", "Tw", "LW"],
        kB = String.fromCharCode(8206),
        xh = "a!\"#$%&\\'() * +,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[] ^ _`bcdefghijklmnopqrstuvwxyz{|}~".split("").concat(
            [169, 174, 160, 8482, 34, 38, 60, 62, 176, 8364, 185, 178, 179, 188, 189, 190, 177, 180, 183, 8230].map(function (a) {
                return String.fromCharCode(a);
            })
        ),
        Ns = function (a, c) {
            return a.fontFamily + ("normal" !== a.fontWeight ? a.fontWeight || "" : "") + (c.fontFamily || "") + ("normal" !== c.fontWeight ? c.fontWeight || "" : "");
        },
        lB = function (a, c) {
            return Ns(a, c) + nm;
        },
        tk,
        uk,
        Yv = Rb(
            "getMetrics",
            function (a, c) {
                var b = ba.createElementNS("http://www.w3.org/2000/svg", "svg"),
                    d = rk("A");
                c.fontFamily && b.setAttribute("font-family", c.fontFamily);
                a.fontFamily && d.setAttribute("font-family", a.fontFamily);
                d.setAttribute("font-size", "100px");
                d.setAttribute("style", "line-height: normal;");
                b.appendChild(d);
                ba.body.appendChild(b);
                a = d.getBBox ? d.getBBox() : { y: 0, height: 0 };
                b.parentNode.removeChild(b);
                return { descent: (a.height + a.y) / 100, height: a.height / 100 };
            },
            function (a, c) {
                return a.fontFamily + (c.fontFamily || "");
            }
        ),
        fg = Rb(
            "getTextMeasurement",
            function (a, c, b, d) {
                var e = c.fontSize,
                    f = mB(c, b);
                a: if (f) {
                    for (var g = 0, h = 0, k, l = 0, m = a.length; l < m; l++) {
                        var n = a[l],
                            p = f.stringWidths[n];
                        if (!p)
                            if (n === kB) p = 0;
                            else {
                                d = null;
                                break a;
                            }
                        g += sk(p, e);
                        l && f.kerning && !d && ((k = sk(f.kerning[k + n] || 0, e)), (h += k));
                        k = n;
                    }
                    d = g - h;
                } else d = null;
                return null === d ? sk(pk([a], c, b)[a], e) : d;
            },
            function (a, c, b, d) {
                return a + c.fontSize + c.fontFamily + c.fontStyle + c.fontWeight + b.fontSize + b.fontFamily + b.fontStyle + b.fontWeight + d;
            }
        ),
        nB = rs()
            ? function () {
                  for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
                  return ss(yo, lB).apply(null, a);
              }
            : yo,
        mB = Rb("loadFontData", nB, Ns),
        Wi = Math.round,
        Ah = function (a) {
            return [a[0] / 255, a[1] / 255, a[2] / 255];
        },
        zo = function (a) {
            return [Wi(255 * a[0]), Wi(255 * a[1]), Wi(255 * a[2]), a[3]];
        },
        Mo = function (a) {
            return 0.2126 * a[0] + 0.7152 * a[1] + 0.0722 * a[2];
        },
        So = function (a, c, b) {
            a.pop && ((b = G(a, 3)), (a = b[0]), (c = b[1]), (b = b[2]));
            return Dc("yuv", No(Ah([a, c, b])));
        },
        No = function (a, c, b) {
            a.pop && ((b = G(a, 3)), (a = b[0]), (c = b[1]), (b = b[2]));
            return [Mo([a, c, b]), -0.09991 * a + -0.33609 * c + 0.436 * b, 0.615 * a + -0.55861 * c + -0.05639 * b];
        },
        oB = function (a) {
            for (var c = [], b = 1; b < arguments.length; b++) c[b - 1] = arguments[b];
            c = Oo.apply(void 0, H([a], c));
            return [255 * c[0], 255 * c[1], 255 * c[2]].map(Wi);
        },
        Oo = function (a, c, b) {
            a.pop && ((b = G(a, 3)), (a = b[0]), (c = b[1]), (b = b[2]));
            return [ua(a + 5.8e-6 * c + 1.28033 * b, 0, 1), ua(a + -0.21482 * c + -0.38059 * b, 0, 1), ua(a + 2.12798 * c + 1.1e-5 * b, 0, 1)];
        },
        bw = ke("colors").members,
        Ao = {},
        Bo = {},
        Os = {},
        vk = function (a) {
            var c = Os[a];
            !c && (c = cf.hexColor.exec(a)) && ((c = [parseInt(c[1], 16), parseInt(c[2], 16), parseInt(c[3], 16)]), (Os[a] = c));
            return c;
        },
        cf = {
            rgba: /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,
            rgb: /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,
            hsl: /hsl\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*%,\s*([0-9]{1,3})\s*%\)/,
            hsla: /hsla\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})%\s*,\s*([0-9]{1,3})%\s*,\s*([0-9]?(?:\.[0-9]+)?)\)/,
            hexColor: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,
            hexShort: /#([a-fA-F0-9]{1})([a-fA-F0-9]{1})([a-fA-F0-9]{1})/,
        },
        pB = { r: 0, g: 1, b: 2, h: 0, s: 1, l: 2, a: 3, y: 0, u: 1, v: 2 },
        Qg = { r: 255, g: 255, b: 255, h: 1, s: 1, l: 1, a: 1, y: 1, u: 0.5, v: 1 },
        sm = { r: 0, g: 0, b: 0, h: 0, s: 0, l: 0, a: 0, y: 0, u: -0.5, v: 0 },
        Ps = { lighten: "hsl(,,+.1)", lightenmore: "hsl(,,+.2)", darken: "hsv(,,-.1)", darkenmore: "hsv(,,-.2)", brighten: "hsl(,+.8,+.3)", desaturate: "hsl(-360,-1,)", complement: "hsl(%+180,,)", contrast: "yuv(+-.7,,)" },
        Ek = function (a) {
            return Ps[O(a) && a.toLowerCase()] || null !== qB.exec(a);
        },
        rB = /[-+*/%]*%?/,
        sB = {
            "+": function (a, c, b) {
                return a + c;
            },
            "-": function (a, c, b) {
                return a - c;
            },
            "*": function (a, c, b) {
                return a * c;
            },
            "/": function (a, c, b) {
                return a / c;
            },
            "%+": function (a, c, b) {
                return (a + c) % Qg[b];
            },
            "%-": function (a, c, b) {
                return (a - c) % Qg[b];
            },
            "+-": function (a, c, b) {
                c = Math.abs(c);
                return a + (a >= sm[b] + (Qg[b] - sm[b]) / 2 ? -c : c);
            },
        },
        qB = /[+\-*/%]/,
        Qs = {
            prefix: /(.{3,4})\(/,
            rgb: /rgb[\s|\(]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))\s*\)?/,
            rgba: /rgba[\s|\(]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))\s*\)?/,
            hsl: /hsl[\s|\(]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))\s*\)?/,
            hsla: /hsla[\s|\(]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))\s*\)?/,
            yuv: /yuv[\s|\(]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))\s*\)?/,
            hsv: /hsv[\s|\(]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))[,|\s]+((?:[%\-\+*/]*\d*\.\d+%?)|(?:[%\-\+*/]*\d*%?))\s*\)?/,
        },
        gg = function (a, c) {
            return Ch(c)(ca(a));
        },
        tm = {},
        Ch = function (a) {
            a = a && a.toLowerCase();
            if (!tm[a]) {
                a = Ps[a] || a;
                var c = (function () {
                        var b,
                            c = {};
                        if (Ek(a)) {
                            if ((b = Qs.prefix.exec(a))) var d = b[1];
                            if ((b = Qs[d].exec(a))) var h = b.slice(1);
                            for (b = 0; b < h.length; b++) {
                                var k = rB.exec(h[b])[0];
                                c[d.charAt(b)] = h[b].length ? [sB[k], parseFloat(h[b].substr(1))] : [];
                            }
                            c.format = d;
                        }
                        return c;
                    })(),
                    b = [];
                0 === c.format.indexOf("hsl") && b.push(bf);
                0 === c.format.indexOf("yuv") && b.push(So);
                0 === c.format.indexOf("hsv") && b.push($v);
                var d = 0 < b.length;
                b.push(
                    (function () {
                        var b = c.format,
                            a = 0 === b.indexOf("hsl"),
                            d = function (b) {
                                var a = c[b],
                                    d = "h" === b ? 360 : 1,
                                    e = a[0],
                                    f = a[1],
                                    g = pB[b];
                                return function (a) {
                                    var c = e(a[g], f / d, b);
                                    c = "h" === b ? (c % Qg.h) * (0 > c ? -1 : 1) + (0 > c ? 1 : 0) : ua(c, sm[b], Qg[b]);
                                    a[g] = c;
                                };
                            },
                            h = [];
                        c.format.split("").forEach(function (b) {
                            c[b].length && h.push(d(b));
                        });
                        return function (c) {
                            h.forEach(function (b) {
                                return b(c);
                            });
                            a ? (c = bd.call.apply(bd, H([null], c))) : "yuv" === b ? (c = oB.call(null, c)) : "hsv" === b && (c = aw.call(null, c));
                            return ma(c, 4 === c.length ? "rgba" : "rgb");
                        };
                    })()
                );
                tm[a] = function (a) {
                    var c = ca(a);
                    a = 0;
                    for (c = d ? b[a++](c[0], c[1], c[2], c[3]) : c; a < b.length; ) c = b[a++](c);
                    return c;
                };
            }
            return tm[a];
        },
        ac = function (a, c, b) {
            return b * (c - a) + a;
        },
        La = {
            crysDark: "crysDark",
            crysBright: "crysBright",
            hueEffect: "hueEffect",
            hover: "hover",
            select: "selected",
            outline: "outline",
            outlineContrast: "outlineContrast",
            label: "label",
            labelContrast: "labelContrast",
            seriesLine: "seriesLine",
            lightenDark: "lightenDark",
            currentColor: "currentColor",
        },
        Fa = {
            gaugePolarBack: "gaugePolarBack",
            titleBox: "titleBox",
            box: "box",
            chartArea: "chartArea",
            altGridFillY: "altGridFillY",
            altGridFillX: "altGridFillX",
            altGridFillRad: "altGridFillRad",
            axisMarkerY: "axisMarkerY",
            axisMarkerX: "axisMarkerX",
            jsButton: "jsButton",
            jumpButton: "jumpButton",
            areaFill: "areaFill",
            navBar: "navBar",
            aqua: "aqua",
            rounded: "rounded",
            cushion: "cushion",
            subtle: "subtle",
        },
        tB = pa(ke("palette").members),
        kw = B(tB, function (a) {
            return a.toLowerCase();
        }),
        Xi = function (a) {
            return "hatch" === a ? ((a = ke("hatchStyle").members), delete a.none, pa(a)) : Fh(a);
        },
        Rs = function (a, c) {
            var b = G(c, 2);
            c = b[1];
            var d = [];
            b = 0 > b[0];
            var e = function (b) {
                for (var a = 0; a < b.length; a++) if (-1 < d.indexOf(b[a])) return !0;
            };
            if ("object" === I(a)) {
                d = pa(a);
                var f = e(["colors", "stops"]),
                    g = e([, "ranges", "stops"]);
            }
            e = "#b00026 #bd0026 #e31a1c #fc4e2a #fd8d3c #feb24c #fed976 #ffeda0".split(" ");
            var h = "#edf8b0 #c7e9b4 #7fcdbb #41b6c3 #1d91c0 #225ea8 #253494 #081d58".split(" "),
                k = e.slice(0);
            k.push("#ffffff");
            k.push.apply(k, H(h));
            e.push("#ffffff");
            h.unshift("#ffffff");
            return A(
                {
                    colors: f ? void 0 : g ? h : k,
                    colorsValueRange: g ? void 0 : f && !b ? [0, c] : [-c, c],
                    pointValue: function (b) {
                        return b.currentOptions.z;
                    },
                },
                a || {}
            );
        },
        ff = {},
        rw = Jj("width,height,x,y"),
        Kr = function (a) {
            return "string" === typeof a ? B(a.split(","), parseFloat) : a;
        },
        Hh,
        ep = (function () {
            function a(a, b) {
                this._callStack = [];
                var c = this;
                c._callback = b;
                a = Array.isArray(a) ? a : [a];
                var e,
                    f,
                    g = function (b, a) {
                        return function () {
                            bp(b, function () {
                                return a();
                            });
                        };
                    };
                for (
                    b = function () {
                        var b = f || c.loaded;
                        f = g(e, function () {
                            return b.call(c);
                        });
                    };
                    (e = a.pop());

                )
                    b();
                f();
            }
            a.prototype.then = function (a, b) {
                this._callStack.push([a, b]);
                return this;
            };
            a.prototype.catch = function (a) {
                return this.then(null, a);
            };
            a.prototype.loaded = function () {
                for (var a = this._callback(), b = -1, d = this._callStack.length; ++b < d; ) a = a.then.apply(a, this._callStack[b]);
            };
            return a;
        })(),
        Ih,
        X = function (a) {
            return a.getMonth ? a : new Date(a);
        },
        ed = function (a) {
            return X(a).getTime();
        },
        ww = z(0, 0),
        Ss = { weekday: [0, 6], dayofyear: [1, 365], minuteofday: [0, 1440] },
        um = { years: 12, decade: 11, year: 10, quarter: 9, month: 8, week: 7, dayofyear: 6.2, day: 6.1, weekday: 6, hour: 3, minuteofday: 2.1, minute: 2, secondofhour: 1.1, second: 1 },
        uB = [, "second", "minute", "hour", , , "day", "week", "month", "quarter", "year", "decade", "years"],
        Jh = { millisecond: 1, second: 1e3, minute: 6e4, hour: 36e5, day: 864e5, week: 6048e5, month: 24192e5, quarter: 72576e5, year: 314496e5, decade: 314496e6 },
        vB = function (a) {
            return a;
        },
        wB = [
            [
                ["year", 100],
                ["year", 50],
            ],
            [
                ["year", 100],
                ["year", 25],
            ],
            [
                ["year", 50],
                ["year", 25],
            ],
            [
                ["year", 50],
                ["year", 10],
            ],
            [
                ["year", 25],
                ["year", 5],
            ],
            [
                ["year", 10],
                ["year", 5],
            ],
            [
                ["year", 10],
                ["year", 2],
            ],
            [
                ["year", 10],
                ["year", 1],
            ],
            [
                ["year", 1],
                ["month", 6],
            ],
            [
                ["year", 1],
                ["month", 3],
            ],
            [
                ["year", 1],
                ["month", 1],
            ],
            [
                ["month", 1],
                ["day", 15],
            ],
            [
                ["month", 1],
                ["day", 5],
            ],
            [
                ["month", 1],
                ["day", 2],
            ],
            [
                ["month", 1],
                ["day", 1],
            ],
            [
                ["day", 1],
                ["hour", 12],
            ],
            [
                ["day", 1],
                ["hour", 6],
            ],
            [
                ["day", 1],
                ["hour", 3],
            ],
            [
                ["day", 1],
                ["hour", 1],
            ],
            [
                ["hour", 1],
                ["minute", 30],
            ],
            [
                ["hour", 1],
                ["minute", 15],
            ],
            [
                ["hour", 1],
                ["minute", 10],
            ],
            [
                ["hour", 1],
                ["minute", 5],
            ],
            [
                ["hour", 1],
                ["minute", 1],
            ],
            [
                ["minute", 1],
                ["second", 30],
            ],
            [
                ["minute", 1],
                ["second", 10],
            ],
            [
                ["minute", 1],
                ["second", 1],
            ],
            [
                ["second", 1],
                ["millisecond", 500],
            ],
            [
                ["second", 1],
                ["millisecond", 200],
            ],
            [
                ["second", 1],
                ["millisecond", 100],
            ],
            [
                ["second", 1],
                ["millisecond", 50],
            ],
            [
                ["second", 1],
                ["millisecond", 10],
            ],
            [
                ["second", 1],
                ["millisecond", 1],
            ],
        ],
        xB = B("year,getFullYear month,getMonth weekday,getDay day,getDate hour,getHours minute,getMinutes second,getSeconds millisecond,getMilliseconds".split(" "), function (a) {
            return a.split(",");
        }),
        Ts = (function () {
            var a = xB.slice(0);
            pb(
                a,
                S(a, function (a) {
                    return "weekday" === a[0];
                })
            );
            return a;
        })(),
        Us = {},
        Lh = [];
    w(Ts, function (a, c) {
        return (Lh[(Us[a[0]] = c)] = a[0]);
    });
    for (
        var Lk = function (a) {
                return Us[a];
            },
            vm,
            yw = function () {
                if (!vm) {
                    var a = function (a) {
                        return { unit: a[0], multiplier: a[1] };
                    };
                    vm = B(wB, function (c) {
                        return { major: a(c[0]), minor: a(c[1]) };
                    });
                }
                return vm;
            },
            Mk = Rb(
                "significantUnitFn",
                function (a) {
                    a.getMonth || (a = new Date(a));
                    var c = Ts.slice(0),
                        b = B(c, function (b) {
                            return b[0];
                        });
                    b.reverse();
                    var d = {};
                    w(c, function (b) {
                        d[b[0]] = a[b[1]]();
                    });
                    --d.day;
                    var e;
                    w(b, function (b) {
                        if (0 < d[b]) return !(e = b);
                    });
                    return e;
                },
                function (a) {
                    return a;
                }
            ),
            Vs = (function () {
                function a(a) {
                    var b = this;
                    this.weekStart = a;
                    this.fns = {
                        decade: function (b) {
                            return parseInt(b.getFullYear().toString()[2]);
                        },
                        year: function (b) {
                            return b.getFullYear();
                        },
                        quarter: function (b) {
                            return Math.floor((b.getMonth() + 3) / 3);
                        },
                        month: function (b) {
                            return b.getMonth() + 1;
                        },
                        dayofyear: function (b) {
                            var a = new Date(b.getFullYear(), 0, 0);
                            return Math.floor((b - a) / 864e5);
                        },
                        day: function (b) {
                            return b.getDate();
                        },
                        weekday: function (a) {
                            a = a.getDay() - b.weekStart;
                            return 0 > a ? 7 + a : a;
                        },
                        week: function (a) {
                            var c = a.getFullYear(),
                                d = new Date(c, 0, 1);
                            a = new Date(c, a.getMonth(), a.getDate());
                            return Math.ceil(((a - d) / 864e5 + b.fns.weekday(d) + 1) / 7);
                        },
                        hour: function (b) {
                            return b.getHours();
                        },
                        minuteofday: function (b) {
                            return 60 * b.getHours() + b.getMinutes();
                        },
                        minute: function (b) {
                            return b.getMinutes();
                        },
                        secondofhour: function (b) {
                            return 60 * b.getMinutes() + b.getSeconds();
                        },
                        second: function (b) {
                            return b.getSeconds();
                        },
                        millisecond: function (b) {
                            return b.getMilliseconds();
                        },
                        none: function (b) {
                            return 0;
                        },
                        date: function (b) {
                            return b.getTime();
                        },
                    };
                    this.revFns = {
                        decade: function (b, a) {
                            b = X(b).getFullYear().toString();
                            b = b.substr(0, 2) + a + "0";
                            return new Date(parseInt(b), 0, 1);
                        },
                        year: function (b, a) {
                            return new Date(a, 0, 1);
                        },
                        quarter: function (b, a) {
                            return new Date(X(b).getFullYear(), 3 * (a - 1), 1);
                        },
                        month: function (b, a) {
                            return new Date(X(b).getFullYear(), a - 1, 1);
                        },
                        week: function (a, c) {
                            a = X(a).getFullYear();
                            a = new Date(a, 0, 1);
                            var d = -(a.getDay() - b.weekStart);
                            c = d + (0 < d ? -7 : 0) + 7 * (c - 1);
                            d = new Date(a.valueOf());
                            d.setDate(a.getDate() + c);
                            return d;
                        },
                        dayofyear: function (b, a) {
                            return new Date(X(b).getFullYear(), 0, a);
                        },
                        day: function (b, a) {
                            return new Date(X(b).getFullYear(), X(b).getMonth(), a);
                        },
                        weekday: function (a, c) {
                            var d = b.fns.week(a);
                            a = b.revFns.week(a, d);
                            return bc(a, t(c) ? { unit: "day", multiplier: c } : { unit: "day" });
                        },
                        hour: function (b, a) {
                            b = X(b);
                            b = new Date(b.setMinutes(0));
                            b = new Date(b.setSeconds(0));
                            return X(b.setHours(a));
                        },
                        hourMod: function (b, a) {
                            b = X(b);
                            b = new Date(b.setMinutes(0));
                            b = new Date(b.setSeconds(0));
                            return bc(b, { unit: "hour", multiplier: a });
                        },
                        minute: function (b, a) {
                            b = X(b);
                            return new Date(b.setSeconds(0)).setMinutes(a);
                        },
                        minuteofday: function (b, a) {
                            b = X(b);
                            return X(X(X(b.setSeconds(0)).setHours(0)).setMinutes(a));
                        },
                        minuteMod: function (b, a) {
                            b = X(b);
                            return bc(b, { unit: "minute", multiplier: a });
                        },
                        minuteofdayMod: function (b, a) {
                            b = X(b);
                            return bc(b, { unit: "minute", multiplier: a });
                        },
                        secondofhour: function (b, a) {
                            b = X(b);
                            return X(b.setMinutes(0)).setSeconds(a);
                        },
                        secondofhourMod: function (b, a) {
                            b = X(b);
                            return bc(b, { unit: "second", multiplier: a });
                        },
                        second: function (b, a) {
                            return X(b).setSeconds(a);
                        },
                        millisecond: function (b, a) {
                            return X(b).setMilliseconds(a);
                        },
                        none: function (b, a) {
                            return b;
                        },
                    };
                }
                a.prototype.fn = function (a) {
                    if ("string" === typeof a) {
                        var b = this.fns[a];
                        return function (a) {
                            return b(X(a));
                        };
                    }
                    var c = this.fns[a.unit];
                    if (a.mod && a.mul)
                        return function (b) {
                            return Math.floor(c(X(b)) / a.mul) % a.mod;
                        };
                    if (a.mul)
                        return function (b) {
                            return Math.floor(c(X(b)) / a.mul);
                        };
                };
                a.prototype.reverseFn = function (a) {
                    if ("string" === typeof a) {
                        var b = this.revFns[a];
                        return function (a, c) {
                            return b(X(a), c);
                        };
                    }
                    var c = this.revFns[a.unit];
                    if (a.mod && a.mul)
                        return (
                            (c = this.revFns[a.unit + "Mod"] || c),
                            function (b, d) {
                                return c(b, d * a.mul);
                            }
                        );
                    if (a.mul)
                        return function (b, d) {
                            return c(b, d * a.mul);
                        };
                };
                return a;
            })(),
            Ok = (function () {
                function a(a, b) {
                    this.calIndexer = b;
                    if (O(a)) {
                        var c = {};
                        c[a] = "*";
                        a = c;
                    }
                    this.currentOptions = Ga(qa(a), ["inclusive", "every", "offset"]);
                    this.inclusive = z(a.inclusive, !0);
                    this.every = z(a.every, 1);
                    this.offset = z(a.offset, 0);
                    "object" === typeof this.offset && (this.offset = lg(this.offset));
                    this.fnSet = new Vs(b ? b.currentOptions.weekStart : 0);
                    this.setFilter();
                }
                a.prototype.setFilter = function () {
                    var a = this,
                        b = a.currentOptions,
                        d = Object.getOwnPropertyNames(b);
                    a.propNames = d;
                    var e = d[0];
                    1 === d.length && "date" === d[0] && "object" !== typeof b[d[0]] && ((a.isDate = !0), b.date.pop && (a.isDateRange = !0));
                    var f = function (c) {
                        um[c] < um[e] && (e = c);
                        return (function (c) {
                            var d = b[c],
                                e = I(d),
                                f = a.fnSet.fn(c);
                            "*" === d && ((e = "star"), (a.starUnit = c), (a.isInterval = !0), Ss[c] && (a.intervalType = "numeric"));
                            c = function (b) {
                                return function (a) {
                                    var c;
                                    try {
                                        for (var e = ya(d), f = e.next(); !f.done; f = e.next()) if (b(a, f.value)) return !0;
                                    } catch (D) {
                                        var g = { error: D };
                                    } finally {
                                        try {
                                            f && !f.done && (c = e.return) && c.call(e);
                                        } finally {
                                            if (g) throw g.error;
                                        }
                                    }
                                };
                            };
                            var g = function (b) {
                                if ("number" === b)
                                    return function (b, a) {
                                        return f(b) === z(a, d);
                                    };
                                if ("string" === b || "date" === b) {
                                    var c = X(d);
                                    return function (b, a) {
                                        return f(b) === f(X(a || c));
                                    };
                                }
                                if ("object" === b) {
                                    b =
                                        "string" === typeof d.range[0]
                                            ? function (b) {
                                                  return f(X(b));
                                              }
                                            : vB;
                                    var e = b(d.range[0]),
                                        g = b(d.range[1]);
                                    return function (b, a) {
                                        b = f(X(b));
                                        return Kb([e, g], b);
                                    };
                                }
                                if ("function" === b)
                                    return function (b, a) {
                                        return (a || d)(b);
                                    };
                                if ("star" === b)
                                    return function (b, c) {
                                        return a.indexOfInterval(b);
                                    };
                            };
                            return "array" === e ? c(g(I(d[0]))) : g(e);
                        })(c);
                    };
                    if (1 < d.length) {
                        a.isMultiFilter = !0;
                        var g = B(d, function (b) {
                            return f(b);
                        });
                        d = a.inclusive
                            ? function (b) {
                                  var a;
                                  try {
                                      for (var c = ya(g), d = c.next(); !d.done; d = c.next()) {
                                          var e = d.value;
                                          if (!e(b)) return !1;
                                      }
                                  } catch (q) {
                                      var f = { error: q };
                                  } finally {
                                      try {
                                          d && !d.done && (a = c.return) && a.call(c);
                                      } finally {
                                          if (f) throw f.error;
                                      }
                                  }
                                  return !0;
                              }
                            : function (b) {
                                  var a;
                                  try {
                                      for (var c = ya(g), d = c.next(); !d.done; d = c.next()) {
                                          var e = d.value;
                                          if (e(b)) return !0;
                                      }
                                  } catch (q) {
                                      var f = { error: q };
                                  } finally {
                                      try {
                                          d && !d.done && (a = c.return) && a.call(c);
                                      } finally {
                                          if (f) throw f.error;
                                      }
                                  }
                              };
                        a.checkDateFn = d;
                    } else a.checkDateFn = f(d[0]);
                    e = uB[Math.floor(um[e.unit || e])];
                    a.minUnitName = e;
                };
                a.prototype.indexOfInterval = function (a) {
                    var b = this.intervalRanges;
                    a = ed(a);
                    if ("numeric" === this.intervalType) return this.fnSet.fn(this.starUnit)(a);
                    if (this.isMultiFilter) {
                        for (var c = 0; c < b.length; c++) if (-1 < ao(b[c], a)) return c;
                        return -1;
                    }
                    return ao(b, a);
                };
                a.prototype.isInside = function (a) {
                    return this.isInterval ? this.indexOfInterval(X(a)) : this.checkDateFn(X(a));
                };
                a.prototype.setRangeSnap = function (a, b) {
                    var c = this.fnSet,
                        e = this.starUnit;
                    a = c.reverseFn(e)(a, c.fn(e)(a));
                    var f = c.fn(e)(b);
                    b = c.reverseFn(e)(b, f + 1);
                    b = X(ed(b) - 1);
                    return this.setRange(a, b);
                };
                a.prototype.setRange = function (a, b) {
                    this.userRange = [a, b];
                    if (this.isInterval) {
                        if ("numeric" === this.intervalType) {
                            a = Ss[this.starUnit];
                            var c = a[0],
                                e = [];
                            ob(a[1] - a[0] + 1, function (b) {
                                return e.push([b + c, b + c + 1 - 0.001]);
                            });
                            return (this.intervalRanges = e);
                        }
                        return (this.intervalRanges = ea(this.getIntervalRanges(a, b), function (b) {
                            return ed(b[1]) !== ed(b[0]);
                        }));
                    }
                    return this.getRanges(a, b);
                };
                a.prototype.getRanges = function (a, b) {
                    var c = { unit: this.minUnitName };
                    a = Kk(this.minUnitName, 1, X(a));
                    b = X(b);
                    for (var e = [], f = [], g = !1, h, k = !1; !k; )
                        (h = this.isInside(a)) && !g ? ((h = a), (g = !0), (f[0] = h)) : !h && g && ((f[1] = X(a.getTime() - 1)), e.push(f), (f = []), (g = !1)), (a = bc(a, c)), a > b && (k = !0);
                    return hp(this, e);
                };
                a.prototype.getIntervalRanges = function (c, b) {
                    var d = this,
                        e = d.currentOptions;
                    if (!this.minUnitName) return [[c, b]];
                    var f = d.every,
                        g = [];
                    if (d.isMultiFilter) {
                        f = function (f) {
                            var g = { every: d.every };
                            g[f] = e[f];
                            return new a(g).setRange(c, b);
                        };
                        var h = ea(d.propNames, function (b) {
                                return b !== d.starUnit;
                            }),
                            k = f(d.starUnit),
                            l = B(h, f),
                            m,
                            n;
                        w(k, function (b) {
                            var a = b.slice(0);
                            n = [];
                            w(l[0], function (b) {
                                (m = Ue(a, b)) && n.push(m);
                            });
                            n.length && g.push(n);
                        });
                    } else
                        (f = { unit: this.minUnitName, multiplier: f }),
                            (f = Mh(f, f, c, b)[0]),
                            (h = B(f, function (b) {
                                return [b, b];
                            })),
                            f.length
                                ? (g = B(cg(h, [c, b]), function (b) {
                                      return [X(b[0]), X(ed(b[1]) - 1)];
                                  }))
                                : g.push([c, b]);
                    return hp(d, g);
                };
                return a;
            })(),
            Bw = function (a, c, b) {
                a[c] ? a[c].push(b) : (a[c] = [b]);
            },
            Qk = function (a) {
                if (a && a.pop)
                    for (var c = 0, b = Math.min(50, a.length); c < b; c++) {
                        var d = a[c],
                            e = typeof d;
                        if (null !== d) {
                            if ("number" === e) return !0;
                            if ("object" === e) return !1;
                        }
                    }
            },
            ip = function (a) {
                var c;
                a(function (b) {
                    b = Qk(b);
                    if (!0 === b || !1 === b) return (c = b), !1;
                });
                return c;
            },
            Sk = function (a) {
                return "function" === typeof a
                    ? a
                    : function (c) {
                          return c[a];
                      };
            },
            Cw = function (a) {
                return "function" === typeof a
                    ? a
                    : function (c) {
                          return c.map(function (b) {
                              return b[a];
                          });
                      };
            },
            kp = function (a, c) {
                var b = [];
                w(a, function (a, e) {
                    return b.push({ key: c ? c(e) : e, values: a });
                });
                return b;
            },
            Wl = (function () {
                function a() {
                    this.calls = [];
                    return this;
                }
                a.prototype.countKeyCalls = function () {
                    var a = 0;
                    w(this.calls, function (b) {
                        return "key" === b[0] && a++;
                    });
                    return a;
                };
                a.prototype.clone = function () {
                    var c = new a();
                    c.calls = this.calls.slice(0);
                    c.pointRollupFn = this.pointRollupFn;
                    return c;
                };
                a.prototype.key = function (a) {
                    var b = this.clone();
                    b.calls.push(["key", a]);
                    return b;
                };
                a.prototype.rollup = function (a, b) {
                    var c = this.clone();
                    c.calc = b;
                    c.calls.push(["rollup", a]);
                    return c;
                };
                a.prototype.sortKey = function (a) {
                    var b = this.clone();
                    b.calls.push(["sortKey", a]);
                    return b;
                };
                a.prototype.pointRollup = function (a) {
                    var b = this.clone();
                    b.pointRollupFn = a;
                    return b;
                };
                a.prototype.series = function (a) {
                    a = Tk(this)(a);
                    var b = this.countKeyCalls();
                    if (1 === b) return [{ points: jf(a, this.pointRollupFn || this.calc) }];
                    if (2 === b) return zw(a, this.pointRollupFn || this.calc);
                    throw "Nest: One or two key() calls are required.";
                };
                a.prototype.points = function (a) {
                    a = Tk(this)(a);
                    return jf(a, this.pointRollupFn);
                };
                a.prototype.entries = function (a) {
                    return Tk(this)(a);
                };
                return a;
            })(),
            Fw = /\r?\n/,
            Ws = function (a) {
                return gf(function (c) {
                    var b = Array.isArray(a) ? a : [a],
                        d = !0,
                        e = b.length;
                    if (!a.length) {
                        var f = Error("Fonts list is empty");
                        c({ ok: d, error: f });
                    }
                    b.forEach(function (b) {
                        return Gw(b, function (a) {
                            a || ((d = !1), (f = Error("Loading " + b + " 1000ms timeout exceeded")));
                            0 === --e && c({ ok: d, error: f });
                        });
                    });
                });
            },
            Hw = 0,
            Yk = {},
            Zk = Math.PI,
            sp = 2 * Zk,
            sb = Math,
            up = Math.abs,
            Qh = function (a, c, b) {
                return [Y(a[0], a[0] + a[2], c[0], c[0] + c[2], b[0]), Y(a[1], a[1] + a[3], c[1], c[1] + c[3], b[1])];
            },
            re = ["M", "Z", "L", "C"],
            wp = [
                xp,
                null,
                xp,
                function (a, c) {
                    c = pv.apply(null, c.slice(1));
                    return bl(bl(a, c), [c[0] + c[2], c[1] + c[3]]);
                },
            ],
            Xs = {
                stringValue: [al, ""],
                bbox: [
                    function (a) {
                        a = a.shapes;
                        1 === a.length && Mb(a[0]);
                        var c;
                        w(a, function (b, a) {
                            Mb(b);
                            b = b.minMaxResult;
                            a ? ((c.xMin = Math.min(c.xMin, b.xMin)), (c.yMin = Math.min(c.yMin, b.yMin)), (c.xMax = Math.max(c.xMax, b.xMax)), (c.yMax = Math.max(c.yMax, b.yMax))) : (c = b);
                        });
                        return [c.xMin, c.yMin, c.xMax - c.xMin, c.yMax - c.yMin];
                    },
                    "",
                ],
                lengthValue: [yp, 0],
                flatPoints: [zp, []],
                positions: [
                    function (a, c) {
                        void 0 === c && (c = 6);
                        a.length();
                        var b = [],
                            d = 0;
                        for (a = a.shapes; d < a.length; d++) b.push(Hc(a[d], c));
                        return b;
                    },
                    [],
                ],
            },
            mf = (function () {
                function a(a) {
                    this.isPath = !0;
                    this.shapes = [];
                    this._cache = {};
                    a && L(this, a);
                }
                a.prototype.fromCache = function (a) {
                    var b = this._cache;
                    b[a] = t(b[a]) ? b[a] : this.hasErrors ? Xs[a][1] : Xs[a][0](this);
                    return b[a];
                };
                a.prototype.toString = function () {
                    return this.fromCache("stringValue");
                };
                a.prototype.bbox = function () {
                    return this.fromCache("bbox");
                };
                a.prototype.scaleTo = function (a) {
                    return Jw(this, a);
                };
                a.prototype.translate = function (a) {
                    return al(this, a);
                };
                a.prototype.rotate = function (a, b) {
                    var c = this.bbox();
                    b = b || va(c);
                    return this.translate(function (c) {
                        return ra(b, Ia(b, c) + a, Xb(b, c));
                    });
                };
                a.prototype.hitTest = function (a, b) {
                    var c = this.bbox();
                    a = [a, b];
                    if (Ad(c, a)) {
                        c = void 0;
                        b = 0;
                        for (var e = this.shapes; b < e.length; b++)
                            if (1 === P(e[b].items)[0]) {
                                c = !0;
                                break;
                            }
                        if (!c) return Zf(a, zp(this));
                        b = 0;
                        for (e = this.shapes; b < e.length; b++) if (Zf(a, Ap(e[b]))) return !0;
                    }
                    return !1;
                };
                a.prototype.length = function () {
                    return this.fromCache("lengthValue");
                };
                a.prototype.flatPoints = function () {
                    return this.fromCache("flatPoints");
                };
                a.prototype.positions = function () {
                    return this.fromCache("positions");
                };
                a.prototype.clearCache = function (a) {
                    this._cache = {};
                    a && vp(this, Lw, Mw);
                };
                a.prototype.items = function (a) {
                    var b = this.shapes;
                    if (1 === b.length) return a ? b[0].items : b[0].items.slice(0);
                    var c = [];
                    w(b, function (b) {
                        return w(b.items, function (b) {
                            return c.push(b);
                        });
                    });
                    return c;
                };
                a.prototype.isEqual = function (a) {
                    var b = a ? a.toString() : "";
                    return this === a || this.toString() === b;
                };
                return a;
            })(),
            Ow = /([astvzqmhlc])([^astvzqmhlc]*)/gi,
            Pw = /-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,
            wm = ["c", 6, "a", 7, "l", 2, "z", 0, "m", 2, "h", 1, "v", 1, "s", 4, "t", 2, "q", 4],
            fl = {},
            Rw = {
                M: qg,
                H: function (a) {
                    fd(a, [a.isRelative ? Ta(a.args) + a.endPoint[0] : P(a.args), a.endPoint[1]]);
                },
                V: function (a) {
                    fd(a, [a.endPoint[0], a.isRelative ? Ta(a.args) + a.endPoint[1] : P(a.args)]);
                },
                Z: hl,
                L: function (a) {
                    nf(a, 1, fd);
                },
                C: function (a) {
                    nf(a, 3, te);
                },
                S: function (a) {
                    nf(a, 2, Sw);
                },
                Q: function (a) {
                    nf(a, 2, Kp);
                },
                T: function (a) {
                    var c = a.lastCommand[0];
                    nf(a, 1, "T" === c || "Q" === c ? Tw : fd);
                },
                A: function (a) {
                    Gp(a, 0, 7, Uw);
                },
            },
            yB = function (a, c) {
                var b = a.toLocaleUpperCase();
                fl[a] = { command: b, argsCount: c, isRelative: !0 };
                fl[b] = { command: b, argsCount: c, isRelative: !1 };
            },
            Yi = 0;
        Yi < wm.length;
        Yi += 2
    )
        yB(wm[Yi], wm[Yi + 1]);
    var kl = Rb("pathLibBbox", function (a) {
            return Aa(a).bbox();
        }),
        Xh = Math.PI,
        Pp = 2 * Xh,
        Tp = function (a) {
            return Math.round(a) === a;
        },
        Zw = { TL: 0, TR: 1, BR: 2, BL: 3 },
        Wp = fa("type fill stroke stroke-width stroke-opacity overflow centerWidth eachShape".split(" ")),
        Ys = Vb.PI,
        zB = 2 * Ys,
        dc = {
            none: function (a, c) {
                return eb([[a, c]]);
            },
            circle: function (a, c, b, d) {
                b = Math.min(b, d) / 2;
                return H(["M", a + b, c], Kc(a + b, c + b, b, -Ys / 2, 0.75 * zB - 0.05), ["Z"]);
            },
            square: Yh,
            arrow: function (a, c, b, d, e) {
                void 0 === e && (e = {});
                var f = va([a, c, b, d]);
                c = e.angle || 0;
                var g = e.concavity || 0.15,
                    h = ra(f, c, b / 2),
                    k = ra(f, c + 180, b / 2);
                a = ra(k, c - 90, d / 2);
                d = ra(k, c + 90, d / 2);
                c = ra(k, c, b * g);
                k = function (b, a) {
                    var c = Uj(h, b);
                    b = Ia(h, b);
                    var d = Xb(f, c);
                    return ra(c, b + a, g * d);
                };
                b = [f[0] - c[0], f[1] - c[1]];
                a = [h, k(a, -90), a, c, d, k(d, 90)];
                e.skipTransform = !0;
                return eb(
                    (function (b, a) {
                        return b.map(function (b) {
                            return [b[0] + a[0], b[1] + a[1]];
                        });
                    })(a, b)
                );
            },
            triangle: function (a, c, b, d) {
                return eb([
                    [a + b / 2, c],
                    [a + b, c + d],
                    [a, c + d],
                ]);
            },
            "triangle-down": function (a, c, b, d) {
                return eb([
                    [a, c],
                    [a + b, c],
                    [a + b / 2, c + d],
                ]);
            },
            diamond: function (a, c, b, d) {
                d = Cd({ x: a, y: c, width: b, height: d }, 1.1);
                a = d.x;
                c = d.y;
                b = d.width;
                d = d.height;
                return eb([
                    [a + b / 2, c],
                    [a + b, c + d / 2],
                    [a + b / 2, c + d],
                    [a, c + d / 2],
                ]);
            },
            "four-point-star": function (a, c, b, d) {
                d = Cd({ x: a, y: c, width: b, height: d }, 1.15);
                a = d.x;
                c = d.y;
                b = d.width;
                d = d.height;
                b /= 2;
                var e = 0.32 * b;
                a += b;
                c += d / 2;
                return eb([
                    [a, c - b],
                    [a + e, c - e],
                    [a + b, c],
                    [a + e, c + e],
                    [a, c + b],
                    [a - e, c + e],
                    [a - b, c],
                    [a - e, c - e],
                ]);
            },
            "five-point-star": function (a, c, b, d) {
                d = Cd({ x: a, y: c, width: b, height: d }, 1.15);
                a = d.x + 1;
                c = d.y;
                b = d.width;
                d = d.height;
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [a, c - 0.96 * b],
                    [a + 0.36 * b, c - 0.4 * b],
                    [a + b, c - 0.24 * b],
                    [a + 0.56 * b, c + 0.26 * b],
                    [a + 0.6 * b, c + 0.94 * b],
                    [a, c + 0.65 * b],
                    [a - 0.6 * b, c + 0.94 * b],
                    [a - 0.56 * b, c + 0.26 * b],
                    [a - b, c - 0.24 * b],
                    [a - 0.36 * b, c - 0.4 * b],
                ]);
            },
            "six-point-star": function (a, c, b, d) {
                d = Cd({ x: a, y: c, width: b, height: d }, 1.15);
                a = d.x + 1;
                c = d.y;
                b = d.width;
                d = d.height;
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [a, c - b],
                    [a + 0.3 * b, c - 0.54 * b],
                    [a + 0.88 * b, c - 0.5 * b],
                    [a + 0.6 * b, c],
                    [a + 0.86 * b, c + 0.5 * b],
                    [a + 0.3 * b, c + 0.52 * b],
                    [a, c + b],
                    [a - 0.3 * b, c + 0.52 * b],
                    [a - 0.86 * b, c + 0.5 * b],
                    [a - 0.6 * b, c],
                    [a - 0.88 * b, c - 0.5 * b],
                    [a - 0.3 * b, c - 0.54 * b],
                ]);
            },
            "seven-point-star": function (a, c, b, d) {
                d = Cd({ x: a, y: c, width: b, height: d }, 1.15);
                a = d.x + 1;
                c = d.y;
                b = d.width;
                d = d.height;
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [a, c - 0.98 * b],
                    [a + 0.28 * b, c - 0.54 * b],
                    [a + 0.8 * b, c - 0.6 * b],
                    [a + 0.62 * b, c - 0.12 * b],
                    [a + b, c + 0.16 * b],
                    [a + 0.5 * b, c + 0.44 * b],
                    [a + 0.44 * b, c + 0.96 * b],
                    [a, c + 0.68 * b],
                    [a - 0.44 * b, c + 0.96 * b],
                    [a - 0.5 * b, c + 0.44 * b],
                    [a - b, c + 0.16 * b],
                    [a - 0.62 * b, c - 0.12 * b],
                    [a - 0.8 * b, c - 0.6 * b],
                    [a - 0.28 * b, c - 0.54 * b],
                ]);
            },
            "arrow-up": function (a, c, b, d) {
                d = Cd({ x: a, y: c, width: b, height: d }, 1.15);
                a = d.x + 1;
                c = d.y;
                b = d.width;
                d = d.height;
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [a, c - b],
                    [a + 0.9 * b, c - 0.08 * b],
                    [a + 0.36 * b, c - 0.08 * b],
                    [a + 0.36 * b, c + b],
                    [a - 0.36 * b, c + b],
                    [a - 0.36 * b, c - 0.08 * b],
                    [a - 0.9 * b, c - 0.08 * b],
                ]);
            },
            "arrow-down": function (a, c, b, d) {
                d = Cd({ x: a, y: c, width: b, height: d }, 1.15);
                a = d.x + 1;
                c = d.y;
                b = d.width;
                d = d.height;
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [a, c + b],
                    [a + 0.9 * b, c + 0.08 * b],
                    [a + 0.36 * b, c + 0.08 * b],
                    [a + 0.36 * b, c - b],
                    [a - 0.36 * b, c - b],
                    [a - 0.36 * b, c + 0.08 * b],
                    [a - 0.9 * b, c + 0.08 * b],
                ]);
            },
            split: function (a, c, b, d) {
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [
                        [a + 0.2 * b, c - b],
                        [a + b, c],
                        [a + 0.2 * b, c + b],
                    ],
                    [
                        [a - 0.2 * b, c + b],
                        [a - b, c],
                        [a - 0.2 * b, c - b],
                    ],
                ]);
            },
            "split-reverse": function (a, c, b, d) {
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [
                        [a + b, c - b],
                        [a + b, c + b],
                        [a + 0.16 * b, c],
                    ],
                    [
                        [a - b, c - b],
                        [a - b, c + b],
                        [a - 0.16 * b, c],
                    ],
                ]);
            },
            spinoff: function (a, c, b, d) {
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [
                        [a - b, c - b],
                        [a + 0.72 * b, c - b],
                        [a + 0.72 * b, c],
                        [a, c],
                        [a, c + 0.72 * b],
                        [a - b, c + 0.72 * b],
                    ],
                    [
                        [a + 0.24 * b, c + 0.24 * b],
                        [a + b, c + 0.24 * b],
                        [a + b, c + b],
                        [a + 0.24 * b, c + b],
                    ],
                ]);
            },
            merger: function (a, c, b, d) {
                b /= 2;
                a += b;
                c += d / 2;
                return eb([
                    [a - 0.38 * b, c - b],
                    [a + 0.73 * b, c - b],
                    [a + 0.73 * b, c + b],
                    [a + 0.16 * b, c + b],
                    [a + 0.16 * b, c + 0.22 * b],
                    [a - 0.58 * b, c + b],
                    [a - 0.94 * b, c + 0.6 * b],
                    [a - 0.38 * b, c + 0.02 * b],
                ]);
            },
            path: function (a, c, b, d, e) {
                return e.d;
            },
            rectangle: function (a, c, b, d, e) {
                return Qp(a, c, b, d, e);
            },
        },
        Vp = {
            arrow: function (a) {
                void 0 === a && (a = {});
                var c = z(a.lineWidth, 1),
                    b = z(a.overflow, !1),
                    d = db(z(a.size, 10 * c), c),
                    e = t(a.length),
                    f = db(z(e ? a.length : a.width, 1.6 * d), c);
                c = db(z(e ? a.width : a.height, d), c);
                d = ua(z(a.concavity, 0.2), -0.5, 0.5);
                e = f - f * d;
                return L(Na({}, a, Wp), { width: f, height: c, concavity: d, overflow: !0, centerWidth: !1 === b ? e : 0 });
            },
        },
        Yp = Rb(
            "drawIconFunction",
            function (a, c, b, d, e) {
                var f = Aa(a),
                    g = c[4],
                    h = d ? (t(d.initial) ? [d.top.px, d.right.px, d.bottom.px, d.left.px] : 0 < d.length ? d : [d.top, d.right, d.bottom, d.left]) : [0, 0, 0, 0],
                    k = !0;
                if (!(e || (0 !== c[2] && 0 !== c[3]) || g)) return ["", 0, 0, 0];
                if (g || 0 === c[2] || 0 === c[3]) (e = f.bbox()), (c[2] = g || e[2]), (c[3] = g || e[3]), g || (k = !1);
                g = Math.max(c[2], c[3]);
                e = b ? [c[0], c[1], g, g] : c;
                if ((d = !b && d && 0 === d.initial) && !k) return [a, g, c[2], c[3]];
                a = d ? e : Vo(e, h);
                f = f.scaleTo(a);
                if (!b) return [f, g, c[2], c[3]];
                b = dc[b.shape || "square"](e[0], e[1], e[2], e[3]);
                return [xa([f, b]), g, c[2], c[3]];
            },
            function (a, c, b, d, e) {
                return a + c[0] + c[1] + c[2] + c[3] + c[4] + (b && b.shape) + (d && d.initial) + e;
            }
        ),
        sg = function (a) {
            return "M" + a[0] + " " + a[1];
        },
        Fd = function (a) {
            return "L" + a[0] + " " + a[1];
        },
        AB = [-9999, 9999],
        BB = fa(["div"]),
        tb = (function () {
            function a(a, b, d) {
                this.renderer = b;
                this.init(a, d);
            }
            a.prototype.init = function (a, b) {
                this.el = a;
                this.data = { attrs: {}, vals: {}, id: Dd() };
                this.childNodes = [];
                this.refNodes = [];
                this.isElement = !0;
                this.isDestroyed = this.isPatched = !1;
                this.zIndexHash = {};
                this.zIndexMax = AB[0];
                this.nodeName = b || a.nodeName.toLowerCase();
                this.isHtml = J(BB, this.nodeName);
            };
            a.prototype.attr = function (a, b) {
                return this.renderer.attr(this, a, b);
            };
            a.prototype.add = function (a) {
                return this.renderer.add(this, a);
            };
            a.prototype.addBefore = function (a) {
                return this.renderer.addBefore(this, a);
            };
            a.prototype.addAfter = function (a) {
                return this.renderer.addAfter(this, a);
            };
            a.prototype.destroy = function () {
                return this.renderer.destroy(this);
            };
            a.prototype.on = function (a, b) {
                return this.renderer.on(this, a, b);
            };
            a.prototype.un = function (a, b) {
                return this.renderer.un(this, a, b);
            };
            a.prototype.box = function (a) {
                return this.renderer.box(this, a);
            };
            a.prototype.getBbox = function () {
                return this.box();
            };
            a.prototype.animate = function (a, b) {
                var c = G(a, 2);
                a = c[0];
                c = c[1];
                this.getTransition().options({ animation: b, middle: { from: a, to: c }, end: c });
            };
            a.prototype.getAnimations = function () {
                return this.getTransition().getAnimations();
            };
            a.prototype.isAnimating = function () {
                return 0 < this.getAnimations().length;
            };
            a.prototype.finishAnimation = function (a) {
                this._transition && !this._transition.attrApllying && this._transition.finishAnimation(!0, a);
            };
            a.prototype.show = function () {
                return this.renderer.show(this);
            };
            a.prototype.hide = function () {
                return this.renderer.hide(this);
            };
            a.prototype.visible = function (a) {
                return this.renderer.visible(this, a);
            };
            a.prototype.query = function (a) {
                return this.renderer.query(a, this);
            };
            a.prototype.transition = function (a) {
                this.getTransition().options(a);
                return this.getTransition();
            };
            a.prototype.tryAutoTransition = function (a) {
                var b = this;
                return b.getTransition().tryAutoTransition(a, function () {
                    var a = b.data,
                        c = L({}, a.attrs);
                    a.transform && (c.transform = a.transform);
                    a.vals.d && (c.d = a.vals.d);
                    return c;
                });
            };
            a.prototype.normalizeAttrs = function (a) {
                return a && a.omit ? Ga(a, a.omit.concat("omit")) : a;
            };
            a.prototype.getTransition = function () {
                if (!this._transition) {
                    var a = L({}, this.renderer.defaultOptions().transition);
                    "path" === this.nodeName && (a.generator = "path");
                    this._transition = Og[0].create(this, a);
                }
                return this._transition;
            };
            return a;
        })(),
        Zs = W(dc, { rectangle: Qp }),
        CB = (function (a) {
            function c(b, c) {
                b = a.call(this, b, c) || this;
                b.x = 0;
                b.y = 0;
                b.width = 0;
                b.height = 0;
                return b;
            }
            K(c, a);
            c.prototype.attr = function (b, a) {
                if (!b || !Pa(b)) return J(this, b) ? this[b] : this.renderer.attr(this, b, a);
                b = this.collectAttributes(b);
                if (!b) return null;
                a = G([b.shapeName, b.relativeSize], 2);
                this.shapeName = a[0];
                this.relativeSize = a[1];
                b.relativeSize && ((a = G([b.cx, b.cy, b.r], 3)), (this.cx = a[0]), (this.cy = a[1]), (this.r = a[2]));
                a = this.renderer.attr(this, b);
                b = G([b.x, b.y, b.width, b.height, b.shapeOptions, b.d], 6);
                this.x = b[0];
                this.y = b[1];
                this.width = b[2];
                this.height = b[3];
                this.shapeOptions = b[4];
                this.d = b[5];
                return a;
            };
            c.prototype.normalizeAttrs = function (b) {
                b = this.collectAttributes(b);
                return a.prototype.normalizeAttrs.call(this, b);
            };
            c.prototype.collectAttributes = function (b) {
                var a = this.default,
                    c = G([this.shapeName, this.relativeSize], 2),
                    f = c[0];
                c = c[1];
                if (b.shapeConfig || b.shapeName) f = b.shapeName || b.shapeConfig.name;
                if (!f || !J(Zs, f)) return null;
                b = b.shapeConfig ? b.shapeConfig.config || {} : L({}, b);
                L(b, b.attr);
                b.shapeName = f;
                Q(c) && (yc(["x", "y", "width", "height"], b) && (c = !1), yc(["cx", "cy", "r"], b) && (c = !0));
                c &&
                    ((a = G([a(b.cx, this.cx || 0), a(b.cy, this.cy || 0), a(b.r, this.r || 0), b.cx - b.r, b.cy - b.r, this.calculateFromRadius(b.r), this.calculateFromRadius(b.r)], 7)),
                    (b.cx = a[0]),
                    (b.cy = a[1]),
                    (b.r = a[2]),
                    (b.x = a[3]),
                    (b.y = a[4]),
                    (b.width = a[5]),
                    (b.height = a[6]));
                b.relativeSize = c;
                a = G([this.default(b.x, this.x), this.default(b.y, this.y), this.default(b.width, this.width), this.default(b.height, this.height), b.shape || this.shapeOptions], 5);
                b.x = a[0];
                b.y = a[1];
                b.width = a[2];
                b.height = a[3];
                b.shapeOptions = a[4];
                b.d = this.dToString(Zs[f](b.x, b.y, b.width, b.height, b.shapeOptions));
                b.omit = "x y width height cx cy r shapeName shape path attr relativeSize shapeOptions".split(" ");
                b.d === this.d && b.omit.push("d");
                return b;
            };
            c.prototype.default = function (b, a) {
                return lc(b) ? a : b;
            };
            c.prototype.calculateFromRadius = function (b) {
                return t(b) ? 2 * b : null;
            };
            c.prototype.dToString = function (b) {
                return ja(b) ? pc(b, " ") : b;
            };
            return c;
        })(tb),
        DB = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.attrApplier = b.defaultAttrApplier;
                return b;
            }
            K(c, a);
            c.prototype.attr = function (b, a) {
                var c = this.morphType || this.nodeName;
                if (Zi[c])
                    a: {
                        var d;
                        try {
                            for (var g = ya(Zi[c]), h = g.next(); !h.done; h = g.next()) {
                                var k = h.value;
                                if (k(this, b, a)) break a;
                            }
                        } catch (m) {
                            var l = { error: m };
                        } finally {
                            try {
                                h && !h.done && (d = g.return) && d.call(g);
                            } finally {
                                if (l) throw l.error;
                            }
                        }
                    }
                return this.attrApplier(b, a);
            };
            c.prototype.defaultAttrApplier = function (b, a) {
                return this.renderer.attr(this, b, a);
            };
            return c;
        })(tb),
        Zi = {},
        EB = (function () {
            function a(a, b, d, e, f) {
                this.root = a;
                this.width = b;
                this.height = d;
                this.defaultWidth = e;
                this.defaultHeight = f;
            }
            a.prototype.path = function (a) {
                return this.pathInner(DB, a);
            };
            a.prototype.shape = function (a, b) {
                return this.pathInner(CB, { shapeConfig: { name: a, config: b } });
            };
            a.prototype.newId = function () {
                return Dd();
            };
            return a;
        })(),
        $s = (function (a) {
            function c(b, c) {
                b = a.call(this, b, c) || this;
                b.x = 0;
                b.y = 0;
                b.width = 0;
                b.height = 0;
                return b;
            }
            K(c, a);
            c.prototype.attr = function (b, a) {
                var c = this;
                if (!b || !Pa(b)) return this.renderer.attr(this, b, a);
                Q(this.relativeSize) && this.setSizeType(b);
                this.checkSizeRecalculated(b, function (a) {
                    var d = G([c.default(b.width, c.width), c.default(b.height, c.height), c.default(b.cx, c.cx || 0), c.default(b.cy, c.cy || 0)], 4),
                        e = d[0],
                        f = d[1],
                        l = d[2];
                    d = d[3];
                    var m = G([c.relativeSize ? l - e / 2 : c.default(b.x, c.x || 0), c.relativeSize ? d - f / 2 : c.default(b.y, c.y || 0)], 2),
                        n = m[0];
                    m = m[1];
                    L(a, { x: n, y: m, width: e, height: f });
                    a.omit = ["cx", "cy"];
                    c.renderer.attr(c, a);
                    a = G([n, m, e, f, l, d], 6);
                    c.x = a[0];
                    c.y = a[1];
                    c.width = a[2];
                    c.height = a[3];
                    c.cx = a[4];
                    c.cy = a[5];
                });
                return this;
            };
            c.prototype.default = function (b, a) {
                return lc(b) ? a : b;
            };
            c.prototype.setSizeType = function (b) {
                yc(["x", "y"], b) ? (this.relativeSize = !1) : yc(["cx", "cy"], b) && (this.relativeSize = !0);
            };
            c.prototype.checkSizeRecalculated = function (b, a) {
                Q(this.sizeRecalculated) && (this.sizeRecalculated = Q(b.width) || Q(b.height));
                b.src && this.sizeRecalculated
                    ? hx(this.renderer, b.src, function (c, d) {
                          b.width = c.width;
                          b.height = c.height;
                          !1 === d && (b.animation = !1);
                          a(b);
                      })
                    : a(b);
            };
            return c;
        })(tb),
        ml = {},
        ug = {},
        rd = (function () {
            function a() {
                this.callbacks = [];
                this.idleDefer = new Ae();
                this.id = 0;
            }
            a.prototype.on = function (a, b) {
                var c = this,
                    e = {
                        callback: a,
                        event: this,
                        un: function () {
                            c.un(a);
                        },
                    };
                this.callbacks.push({ callback: a, subscriber: b });
                return e;
            };
            a.prototype.onDefer = function (a, b, d) {
                var c = this,
                    f = this.id++;
                return this.on(function (d, e) {
                    return c.idleDefer.defer(
                        "event" + f,
                        function () {
                            return a.apply(c, [d, e]);
                        },
                        b
                    );
                }, d);
            };
            a.prototype.un = function (a) {
                this.callbacks = a
                    ? ea(this.callbacks, function (b) {
                          return b.callback !== a;
                      })
                    : [];
            };
            a.prototype.trigger = function (a, b) {
                w(this.callbacks, function (c) {
                    return c.callback.apply(c.subscriber, [a, b]);
                });
            };
            return a;
        })(),
        sd = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.on = function (b, c) {
                var d = this,
                    f = S(this.callbacks, function (a) {
                        return a.callback === b;
                    });
                return f
                    ? {
                          callback: f,
                          event: this,
                          un: function () {
                              d.un(f);
                          },
                      }
                    : a.prototype.on.call(this, b, c);
            };
            return c;
        })(rd),
        xm = (function (a) {
            function c(b) {
                var c = a.call(this) || this;
                c.domEventName = b;
                c.hasSubscription = !1;
                c.element = null;
                return c;
            }
            K(c, a);
            c.prototype.setElement = function (b) {
                this.element !== b && (this.unsubscribeDomEvent(), (this.element = b), this.subsribeDomEvent());
            };
            c.prototype.on = function (b, c) {
                b = a.prototype.on.call(this, b, c);
                this.subsribeDomEvent();
                return b;
            };
            c.prototype.un = function (b) {
                a.prototype.un.call(this, b);
                0 === this.callbacks.length && this.unsubscribeDomEvent();
            };
            c.prototype.subsribeDomEvent = function () {
                var b = this;
                this.hasSubscription ||
                    (this.element
                        ? this.callbacks.length &&
                          (this.element.on(this.domEventName, function (a) {
                              b.trigger(aq(a, b.element, b.domEventName));
                          }),
                          (this.hasSubscription = !0))
                        : (this.hasSubscription = !1));
            };
            c.prototype.unsubscribeDomEvent = function () {
                this.hasSubscription && (this.element && this.element.un(this.domEventName), (this.hasSubscription = !1));
            };
            return c;
        })(rd),
        ym = new rd(),
        FB = fa(["width", "height"]),
        at = fa(["d", "animation", "transition", "clip-rule"]),
        GB = W(at, fa(["fill"])),
        zm = (function (a) {
            function c(b, c) {
                b = a.call(this, b, c) || this;
                b.path = b.renderElement().add(b);
                return b;
            }
            K(c, a);
            c.prototype.attr = function (b, a) {
                if (!b || !Pa(b)) return this.renderer.attr(this, b, a);
                b.id && this.renderer.attr(this, "id", b.id);
                b["clip-rule"] && this.renderer.attr(this, "clip-rule", b["clip-rule"]);
                b = Pe({}, b, this.availableAttrs());
                return this.renderer.attr(this.path, b);
            };
            c.prototype.destroy = function () {
                this.path && (this.path.destroy(), delete this.path);
                return this.renderer.destroy(this);
            };
            c.prototype.renderElement = function () {
                return this.renderer.path();
            };
            c.prototype.availableAttrs = function () {
                return at;
            };
            return c;
        })(tb),
        HB = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.renderElement = function () {
                return this.renderer.rect();
            };
            c.prototype.availableAttrs = function () {
                return FB;
            };
            return c;
        })(zm),
        IB = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.availableAttrs = function () {
                return GB;
            };
            return c;
        })(zm),
        cq = fa(["fill", "stroke", "mask", "clip-path"]),
        Am = {},
        iq = {
            horizontal: { c: [0, 0, 5, 0] },
            "large-horizontal": { c: [0, 0, 10, 0], size: 10 },
            "narrow-horizontal": { c: [0, 0, 2.5, 0], size: 2.5 },
            "dark-horizontal": { c: [0, 0, 5, 0], strokeWidth: 4 },
            vertical: { c: [0, 0, 0, 5] },
            "large-vertical": { c: [0, 0, 0, 10], size: 10 },
            "narrow-vertical": { c: [0, 0, 0, 2.5], size: 2.5 },
            "dark-vertical": { c: [0, 0, 0, 5], strokeWidth: 4 },
            "backward-diagonal": { c: [0, 0, 0, 10], size: 10, patternTransform: "rotate(45)" },
            "light-upward-diagonal": { c: [0, 0, 0, 5], patternTransform: "rotate(45)" },
            "dark-upward-diagonal": { c: [0, 0, 0, 5], strokeWidth: 4, patternTransform: "rotate(45)" },
            "wide-upward-diagonal": { c: [0, 0, 0, 10], strokeWidth: 5, patternTransform: "rotate(45)", size: 10 },
            "forward-diagonal": { c: [0, 0, 0, 10], size: 10, patternTransform: "rotate(-45)" },
            "light-downward-diagonal": { c: [0, 0, 0, 5], patternTransform: "rotate(-45)" },
            "dark-downward-diagonal": { c: [0, 0, 0, 5], strokeWidth: 4, patternTransform: "rotate(-45)" },
            "wide-downward-diagonal": { c: [0, 0, 0, 10], strokeWidth: 5, patternTransform: "rotate(-45)", size: 10 },
            "dashed-downward-diagonal": { c: [0, 2.5, 5, 7.5], granualHeight: 10 },
            "dashed-upward-diagonal": { c: [5, 2.5, 0, 7.5], granualHeight: 10 },
            "horizontal-brick": { d: "M0,0L0,5M0,5L10,5M5,5L5,10M10,5L10,0M0,10L10,10M0,0L10,0", size: 10 },
            "large-checker-board": { d: "M0,5L5,5 5,0 0,0ZM5,10L5,5 10,5 10,10Z", size: 10, borderColor: "transparent", inside: !0 },
            "small-checker-board": { d: "M0,2.5L2.5,2.5 2.5,0 0,0ZM2.5,5L2.5,2.5 5,2.5 5,5Z", borderColor: "transparent", inside: !0 },
            "cross-diagonal": { d: "M0,0l10,10M10,0l-10,10", size: 10 },
            "dashed-horizontal": { d: "M0 1 L5 1M 5 6L10 6", size: 10 },
            "dashed-vertical": { d: "M1,0L1,5M6,5L6,10", size: 10 },
            "diagonal-brick": { d: "M5,0L0,5M0,5L5,10M5,10L10,5", size: 10 },
            "large-grid": { d: "M0,0L10,0M10,0L10,10", size: 10 },
            "small-grid": { d: "M0,0L5,0M5,0L5,5" },
            "solid-diamond": { d: "M0,1L4,5 0,9M10,1L6,5 10,9", size: 10, inside: !0, borderColor: "transparent" },
            "outlined-diamond": { d: "M0,0L10,10M10,0L0,10", size: 10, strokeWidth: 1 },
            wave: { d: "M1,2.5C2,5 4,5 5,2.5S8,0 9,2.5", granualWidth: 10, insideBack: !0 },
            weave: { d: "M3,0L0,3M0,3L7,10M7,10L10,7M10,7L3,0M2, 5L0, 7M5, 8L3, 10M8, 5L10, 3", size: 10 },
            "zig-zag": { d: "M0,5L5,0M5,0L10,5", granualWidth: 10 },
            percent05: {
                p: [
                    [2.5, 7.5],
                    [7.5, 2.5],
                ],
                size: 10,
            },
            percent10: {
                p: [
                    [1.5, 4],
                    [6.5, 1.5],
                ],
                granualWidth: 10,
            },
            percent20: {
                p: [
                    [1, 3.5],
                    [3.5, 1],
                ],
            },
            percent25: {
                p: [
                    [1, 1.75],
                    [3.5, 0.5],
                ],
                granualHeight: 2.5,
            },
            "dotted-grid": {
                p: [
                    [1, 8.5],
                    [3.5, 8.5],
                    [6, 8.5],
                    [8.5, 8.5],
                    [8.5, 1],
                    [8.5, 3.5],
                    [8.5, 6],
                ],
                size: 10,
            },
            "dotted-diamond": {
                p: [
                    [4, 1],
                    [1.5, 3.5],
                    [6.5, 3.5],
                    [9, 6],
                    [1.5, 8.5],
                    [6.5, 8.5],
                ],
                size: 10,
            },
            dotted: { template: "circle" },
            image: { template: "image" },
            "image-large": { template: "image", size: 10 },
        },
        kx = {
            line: function (a) {
                a = wg(a);
                var c = G(a.c, 4);
                return $h(a.pattern, [{ tag: "line", attr: { x1: c[0], y1: c[1], x2: c[2], y2: c[3], stroke: a.color, "stroke-width": a.strokeWidth, strokeDashArray: a.dashArray } }], a);
            },
            path: function (a) {
                a = wg(a);
                var c = a.pattern,
                    b = [{ tag: "path", attr: { d: a.d, fill: a.inside ? a.color : a.insideBack ? a.backgroundColor : void 0, "stroke-width": a.strokeWidth || 1, "border-color": a.borderColor, strokeDashArray: a.dashArray } }];
                b.unshift({ tag: "rect", attr: { width: a.granualWidth, height: a.granualHeight, fill: a.backgroundColor || "none", "stroke-width": 0 } });
                return gq(c, [{ tag: "g", attr: { stroke: a.color || "black", "stroke-width": a.strokeWidth || 1, childNodes: b } }], a);
            },
            point: function (a) {
                a = wg(a);
                return $h(
                    a.pattern,
                    B(a.p, function (c) {
                        return { tag: "circle", attr: { cx: c[0], cy: c[1], r: 0.5, fill: a.color } };
                    }),
                    a
                );
            },
            circle: function (a) {
                a = wg(a);
                return $h(a.pattern, [{ tag: "circle", attr: { cx: a.granualWidth / 2, cy: a.granualHeight / 2, r: 0.5, fill: a.color, transform: a.transform } }], a);
            },
            image: function (a) {
                var c = /(.*)\((.*)\)/g.exec(a.color);
                if (!c) return null;
                c = G(c, 3);
                var b = c[2];
                if (!c[1] || !b) return null;
                c = Re(b, ", ");
                a.color = Gd(c[0], "'\"");
                a = wg(a);
                return $h(a.pattern, [{ tag: "image", attr: { width: a.granualWidth, height: a.granualHeight, src: a.color } }], a);
            },
        },
        ec = {
            translate: [
                [0, 0],
                function (a) {
                    a = ja(a) ? a : [a.x, a.y];
                    return 0 === a[0] && 0 === a[1] ? null : a;
                },
            ],
            rotate: [
                [0, 0, 0],
                function (a) {
                    a = ja(a) ? a : [a, 0, 0];
                    return 0 === a[0] && 0 === a[1] && 0 === a[2] ? null : a;
                },
            ],
            scale: (function (a) {
                return [
                    [a],
                    function (c) {
                        c = ja(c) ? c : [c];
                        return c[0] === a ? null : c;
                    },
                ];
            })(1),
        },
        JB = (function () {
            return function () {};
        })(),
        KB = (function () {
            return function () {};
        })(),
        uq = function (a, c, b) {
            return [kd(a[0], c[0], b), kd(a[1], c[1], b)];
        },
        kd = function (a, c, b) {
            return a + (c - a) * b;
        },
        sx = function (a, c, b) {
            return a + (c - a) * b;
        },
        rx = function (a, c, b) {
            return a + (c - a) * (1 - b);
        },
        Bm = function (a) {
            return a && a.val ? a.val : a;
        },
        Be = function (a) {
            return a + "";
        },
        Cm = function (a) {
            return lc(a) ? 1 : a;
        },
        Dm = function (a) {
            return lc(a) ? 0 : a;
        },
        bt = function (a, c, b) {
            a = a || "black";
            c = c || "black";
            b = b.colorAnimation;
            var d = c && c.meta && c.meta.pattern;
            return !d && a && a.meta && a.meta.pattern ? le(a.meta.backgroundColor, c, b) : (d ? fw : le)(a, c, b);
        },
        Em = {
            x: [Be, null, !0],
            y: [Be, null, !0],
            start: [Be, null, !0],
            end: [Be, null, !0],
            width: [Be, null, !0],
            height: [Be, null, !0],
            opacity: [Cm, null, !1],
            rotate: [Dm, null, !1],
            offsetX: [Dm, null, !1],
            offsetY: [Dm, null, !1],
            display: [Be, null, !1],
            transform: [
                function (a) {
                    return a;
                },
                null,
                !1,
            ],
            fill: [Bm, bt, !0],
            stroke: [Bm, bt, !0],
            "stroke-opacity": [Cm, null, !1],
            "stroke-width": [Cm, null, !1],
            d: [
                Bm,
                function (a, c, b) {
                    return ox(a && a.isPath ? a : Aa(a), c && c.isPath ? c : Aa(c), b.pathAnimation);
                },
                !1,
            ],
        },
        ux = /cubic-bezier\(\s*(-?\d+\.?\d*|-?\.\d+)\s*,\s*(-?\d+\.?\d*|-?\.\d+)\s*,\s*(-?\d+\.?\d*|-?\.\d+)\s*,\s*(-?\d+\.?\d*|-?\.\d+)\s*\)/,
        vx = /steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,
        bi = function (a, c) {
            return function (b) {
                if (1 <= b) return 1;
                var d = 1 / a;
                b += c * d;
                return b - (b % d);
            };
        },
        yq = function (a) {
            return a;
        },
        xq = { activeDuration: 0, totalDuration: 0, delay: 0, endDelay: 0, fill: "none", iterationStart: 0, iterations: 1, duration: 0, playbackRate: 1, direction: "normal", easing: "linear", easingFunction: yq },
        ct = function (a) {
            return a;
        },
        of = function (a, c, b) {
            if ("number" == typeof c) return (a = a || 0), Math.round(1e4 * (b * (c - a) + a)) / 1e4;
            if ("boolean" == typeof a && "boolean" == typeof c) return 1 > b && !c ? a : c;
            if (Wg(c)) {
                var d = {};
                Da(c, function (e) {
                    return (d[e] = of(a[e], c[e], b));
                });
                return d;
            }
            if (a.length == c.length) {
                for (var e = [], f = 0; f < a.length; f++) e.push(of(a[f], c[f], b));
                return e;
            }
            throw Error("Wrong interpolation arguments " + a + ":" + c);
        };
    Am.lineargradient = Am.radialgradient = function (a, c) {
        var b = a.nodeName.toLowerCase(),
            d = function (b, a) {
                return lc(b) ? a : b;
            },
            e = null;
        if ("lineargradient" === b) {
            var f = {};
            w(["x1", "y1", "x2", "y2"], function (b) {
                return (f[b] = d(a.attr(b), 0));
            });
            e = { linearGradient: f };
            e.id = e.linearGradient.id = c;
        } else if ("radialgradient" === b) {
            var g = {};
            w(["cx", "cy", "r", "fx", "fy"], function (b) {
                return (g[b] = d(a.attr(b), 0));
            });
            e = { radialGradient: g };
            e.id = e.radialGradient.id = c;
        }
        e &&
            ((e.stops = B(a.childNodes, function (b) {
                return [d(b.attr("offset"), "0%"), d(b.attr("stop-color"), "black"), d(b.attr("stop-opacity"), "1")];
            })),
            (a.val = e));
    };
    var hc = function (a, c) {
            return Q(a) ? c : O(a) && Mg(a, "%") ? a : 100 * a + "%";
        },
        Aq = {
            linearGradient: {
                keyPrefix: "linear-gradient",
                argsToAttrs: function (a) {
                    var c = a.linearGradient;
                    if (ja(c)) {
                        var b = G(c, 6),
                            d = b[0],
                            e = b[1],
                            f = b[2],
                            g = b[3],
                            h = b[4];
                        b = b[5];
                        h = h || c.hash || a.hash;
                        b = b || c.id || a.id;
                    } else (d = c.x1), (f = c.x2), (e = c.y1), (g = c.y2), (h = c.hash), (b = c.id);
                    return { attrs: { x1: d, x2: f, y1: e, y2: g, id: b, hash: h }, stops: a.stops };
                },
                toString: function (a) {
                    return hc(a.x1, "0%") + " " + hc(a.y1, "0%") + " " + hc(a.x2, "100%") + " " + hc(a.y2, "0%");
                },
            },
            radialGradient: {
                keyPrefix: "radial-gradient",
                argsToAttrs: function (a) {
                    var c = a.radialGradient;
                    if (ja(c)) {
                        var b = G(c, 7),
                            d = b[0],
                            e = b[1],
                            f = b[2],
                            g = b[3],
                            h = b[4],
                            k = b[5];
                        b = b[6];
                        k = k || c.hash || a.hash;
                        b = b || c.id || a.id;
                    } else (d = c.cx), (e = c.cy), (f = c.r), (g = c.fx), (h = c.fy), (k = c.hash), (b = c.id);
                    return { attrs: { cx: d, cy: e, r: f, fx: g, fy: h, id: b, hash: k }, stops: a.stops };
                },
                toString: function (a) {
                    return hc(a.cx, "50%") + " " + hc(a.cy, "50%") + " " + hc(a.r, "50%") + " " + hc(a.fx, hc(a.cx, "50%")) + " " + hc(a.fy, hc(a.cy, "50%"));
                },
            },
            stopToString: function (a) {
                return hc(a.offset) + " " + a.color + " " + a.opacity;
            },
        },
        xg = {},
        Fm = function (a, c) {
            if (!a) return a;
            if (O(a)) return J(xg, a) ? xg[a](a, c) : a;
            var b = {},
                d;
            for (d in a)
                if (J(a, d)) {
                    var e = a[d];
                    if (J(xg, d)) xg[d](d, c, e, b, a);
                    else b[d] = e;
                }
            return b;
        },
        LB = (function () {
            function a() {}
            a.prototype.resolve = function (a, b) {
                return Fm(a, b);
            };
            return a;
        })();
    Og[1] = new LB();
    var ci = {
            src: "xlink:href",
            fontWeight: "font-weight",
            fontStyle: "font-style",
            fontSize: "font-size",
            fontFamily: "font-family",
            textDecoration: "text-decoration",
            className: "class",
            strokeDashArray: "stroke-dasharray",
            textRendering: "text-rendering",
            textAnchor: "text-anchor",
            whiteSpace: "white-space",
            textAlign: "text-align",
            borderRadius: "border-radius",
        },
        Dx = fa(["d", "animation", "transition", "clip-rule"]),
        Dq = fa(["class", "id", "translate", "opacity"]),
        ul = { color: "fill", fill: "fill", stroke: "stroke", borderColor: "stroke", "border-color": "stroke", hatch: "fill", hatchPattern: "fill" },
        Kx = { fill: "color", stroke: "border-color" },
        MB = ["stroke-width", "strokeWidth", "border-width", "borderWidth"],
        NB = ["strokeAttrs", "stroke"],
        ei = { transform: "transform" };
    Da(ec, function (a) {
        return (ei[a] = "transform");
    });
    var fi = { zIndex: "z-index", "z-index": "z-index" },
        Iq = {
            "ease-out-cubic": "cubic-bezier(.215, .61, .355, 1)",
            "ease-in-out-cubic": "cubic-bezier(.645, .045, .355, 1)",
            "ease-in-circ": "cubic-bezier(.6, .04, .98, .335)",
            "ease-out-circ": "cubic-bezier(.075, .82, .165, 1)",
            "ease-in-out-circ": "cubic-bezier(.785, .135, .15, .86)",
            "ease-in-expo": "cubic-bezier(.95, .05, .795, .035)",
            "ease-out-expo": "cubic-bezier(.19, 1, .22, 1)",
            "ease-in-out-expo": "cubic-bezier(1, 0, 0, 1)",
            "ease-in-quad": "cubic-bezier(.55, .085, .68, .53)",
            "ease-out-quad": "cubic-bezier(.25, .46, .45, .94)",
            "ease-in-out-quad": "cubic-bezier(.455, .03, .515, .955)",
            "ease-in-quart": "cubic-bezier(.895, .03, .685, .22)",
            "ease-out-quart": "cubic-bezier(.165, .84, .44, 1)",
            "ease-in-out-quart": "cubic-bezier(.77, 0, .175, 1)",
            "ease-in-quint": "cubic-bezier(.755, .05, .855, .06)",
            "ease-out-quint": "cubic-bezier(.23, 1, .32, 1)",
            "ease-in-out-quint": "cubic-bezier(.86, 0, .07, 1)",
            "ease-in-sine": "cubic-bezier(.47, 0, .745, .715)",
            "ease-out-sine": "cubic-bezier(.39, .575, .565, 1)",
            "ease-in-out-sine": "cubic-bezier(.445, .05, .55, .95)",
            "ease-in-back": "cubic-bezier(.6, -.28, .735, .045)",
            "ease-out-back": "cubic-bezier(.175, .885, .32, 1.275)",
            "ease-in-out-back": "cubic-bezier(.68, -.55, .265, 1.55)",
        },
        Vx = fa(["d", "animation", "transition", "fill", "display"]),
        Xx = new RegExp(String.fromCharCode(160), "gm");
    w(
        [
            function () {
                Ab(pa(ci), zx);
            },
            function () {
                Ab(["attr"], Ax);
            },
            function () {
                Ab(["d"], Bx);
            },
            function () {
                Ab(["overflow"], Cx);
            },
            function () {
                Ab(["clipPath"], Bq);
            },
            function () {
                Ab(["shadow"], Fx);
            },
            function () {
                Ab(pa(ul), Jx);
            },
            function () {
                Ab(MB, Ox);
                Ab(NB, Px);
            },
            function () {
                Ab(pa(ei), Rx);
            },
            function () {
                Ab(pa(fi), Sx);
            },
            function () {
                Ab(["easing"], Tx);
            },
            function () {
                Ab(["mask"], Ux);
            },
            function () {
                Ab(["text"], Wx);
            },
        ],
        function (a) {
            return a();
        }
    );
    var OB = function (a, c, b) {
            var d = {},
                e = [];
            Da(ec, function (f) {
                var g = ec[f][1](of(c[f], b[f], a));
                if (null != g || c[f]) g && e.push(f + "(" + pc(g, ",") + ")"), (d[f] = g);
            });
            var f = e.length ? pc(e, " ") : null;
            f && (d.val = f);
            return f ? d : null;
        },
        $i = {
            transform: function (a, c) {
                var b = { translate: [0, 0], scale: [1], rotate: [0, 0, 0] },
                    d = a ? Pe(b, a, ec) : b,
                    e = c ? Pe(b, c, ec) : b;
                a = {};
                Da(ec, function (b) {
                    null === d[b] && (d[b] = ec[b][0]);
                    null === e[b] && (e[b] = ec[b][0]);
                    "rotate" === b && ((d[b][1] = e[b][1]), (d[b][2] = e[b][2]));
                });
                a.transform = {
                    interpolate: function (b) {
                        return OB(b, d, e);
                    },
                };
                return { complex: !0, props: a };
            },
            display: function (a, c) {
                return {
                    from: "block" == a,
                    to: "block" == c,
                    convert: function (b) {
                        return b ? "block" : "none";
                    },
                };
            },
        },
        PB = function (a, c) {
            return { from: parseFloat(a), to: parseFloat(c), convert: ct };
        },
        QB = function (a, c) {
            return { from: rl(a), to: rl(c), convert: ct };
        };
    w("opacity rotate offsetX offsetY start end stroke-width stroke-opacity".split(" "), function (a) {
        return ($i[a] = PB);
    });
    w(["x", "y", "width", "height"], function (a) {
        return ($i[a] = QB);
    });
    var Gm = (function () {
            return function () {};
        })(),
        RB = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.update = function (b) {};
            return c;
        })(Gm),
        SB = (function (a) {
            function c(b) {
                var c = a.call(this) || this;
                c.frameHandler = b;
                return c;
            }
            K(c, a);
            c.prototype.update = function (b) {
                this.frameHandler(b);
            };
            return c;
        })(Gm),
        TB = (function (a) {
            function c(b, c) {
                var d = a.call(this) || this;
                d.frames = b;
                d.parseFrames();
                c && c.onFrame && (d.onFrame = c.onFrame);
                return d;
            }
            K(c, a);
            c.prototype.update = function (b) {
                var a = {},
                    c = this.interpolations;
                Da(c, function (d) {
                    var e = c[d];
                    a[d] = e.interpolate ? e.interpolate(b) : e.convert(of(e.from, e.to, b));
                });
                if (this.onFrame) this.onFrame(b, a, of);
            };
            c.prototype.parseFrames = function () {
                var b = this.frames[0],
                    a = this.frames[this.frames.length - 1],
                    c = {};
                Da(a, function (d) {
                    if (J($i, d)) {
                        var e = $i[d](b[d], a[d]);
                        e && (e.complex ? L(c, e.props) : (c[d] = e));
                    }
                });
                this.interpolations = c;
            };
            return c;
        })(Gm),
        UB = (function (a) {
            function c(b, c, e) {
                var d = a.call(this) || this;
                d.timeLine = e;
                d.idle = !0;
                d.paused = !1;
                d.currentTimePending = !1;
                d.finishedFlag = !0;
                d._startTime = null;
                d._currentTime = 0;
                d.playbackRate = 1;
                d.inEffect = !1;
                d.effectTime = wq(c);
                b = Fb(b) ? new SB(b) : ja(b) && 1 < b.length ? new TB(b, c) : new RB();
                d.effect = b;
                d.onFinishAnimation = c.onFinishAnimation;
                d._final = c.final;
                d.scope = c.scope;
                return d;
            }
            K(c, a);
            c.prototype.play = function () {
                this.paused = !1;
                if (this.isFinished() || this.idle) this.rewind(), (this._startTime = null);
                this.idle = this.finishedFlag = !1;
            };
            c.prototype.pause = function () {
                this.isFinished() || this.paused || this.idle ? this.idle && (this.rewind(), (this.idle = !1)) : (this.currentTimePending = !0);
                this._startTime = null;
                this.paused = !0;
            };
            c.prototype.finish = function () {
                if (!this.idle) {
                    var b = this.effectTime.options;
                    this._currentTime = 0 < this.playbackRate ? b.totalDuration : 0;
                    this._startTime = b.totalDuration - this._currentTime;
                    this.currentTimePending = !1;
                }
            };
            c.prototype.cancel = function () {
                this.inEffect && ((this.inEffect = !1), (this.idle = !0), (this.paused = !1), (this.finishedFlag = !0), (this._currentTime = 0), (this._startTime = null), this.updateEffect(null));
            };
            c.prototype.reverse = function () {
                this.playbackRate *= -1;
                this.play();
            };
            c.prototype.playState = function () {
                return this.idle ? "idle" : (null == this._startTime && !this.paused && 0 !== this.playbackRate) || this.currentTimePending ? "pending" : this.paused ? "paused" : this.isFinished() ? "finished" : "running";
            };
            c.prototype.isFinished = function () {
                var b = this.effectTime.options.totalDuration;
                return !this.idle && ((0 < this.playbackRate && (this._currentTime > b || (this._currentTime === b && 0 !== b))) || (0 > this.playbackRate && 0 >= this._currentTime));
            };
            c.prototype.frame = function () {
                var b = this;
                this.idle ||
                    this.paused ||
                    (null == this._startTime
                        ? (this._startTime = this.timeLine.currentTime - this._currentTime / this.playbackRate)
                        : this.isFinished() || this.tickCurrentTime((this.timeLine.currentTime - this._startTime) * this.playbackRate));
                this.currentTimePending = !1;
                this.isFinished()
                    ? this.finishedFlag ||
                      (this.onFinish &&
                          T.setTimeout(function () {
                              b.onFinish();
                          }, 0),
                      (this.finishedFlag = !0))
                    : (this.finishedFlag = !1);
            };
            c.prototype.startTime = function () {
                return this._startTime;
            };
            c.prototype.currentTime = function () {
                return this._currentTime;
            };
            c.prototype.rewind = function () {
                var b = this.effectTime.options;
                if (0 <= this.playbackRate) this._currentTime = 0;
                else if (Infinity > b.totalDuration) this._currentTime = b.totalDuration;
                else throw Error("Unable to rewind negative playback rate animation with infinite duration");
            };
            c.prototype.tickCurrentTime = function (b) {
                b !== this._currentTime && ((this._currentTime = b), this.updateEffect(0 > this.playbackRate && 0 === this._currentTime ? -1 : this._currentTime));
            };
            c.prototype.updateEffect = function (b) {
                b = this.effectTime(b);
                this.inEffect = null !== b;
                this.effect.update(null === b ? 1 : b);
            };
            c.prototype.finishAnimation = function (b) {
                this.finish();
                b && (this.updateEffect(null), this.finishedFlag || ((this.finishedFlag = !0), this.onFinish && this.onFinish()));
                this.onFinish = null;
                if (this.onFinishAnimation) this.onFinishAnimation();
                this._final && this._final();
            };
            return c;
        })(JB),
        VB = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.ticking = !1;
                b.animations = [];
                b._awaitCallbacks = [];
                b._framesCount = 0;
                return b;
            }
            K(c, a);
            c.prototype.animate = function (b, a) {
                b = new UB(b, a, this);
                this.animations.push(b);
                b.play();
                this.startAnimationsFrame();
                return b;
            };
            c.prototype.getAnimations = function (b) {
                this.discardAnimations();
                return b
                    ? ea(this.animations, function (a) {
                          return a.scope === b;
                      })
                    : this.animations;
            };
            c.prototype.await = function (b) {
                this.ticking ? this._awaitCallbacks.push(b) : b(0);
            };
            c.prototype.startAnimationsFrame = function () {
                var b = this;
                b.ticking ||
                    ((b.ticking = !0),
                    (b._framesCount = 0),
                    T.requestAnimationFrame(function (a) {
                        return b.frame(a);
                    }));
            };
            c.prototype.frame = function (b) {
                var a = this;
                a.currentTime = b;
                a._framesCount++;
                w(a.animations, function (b) {
                    return b.frame();
                });
                a.discardAnimations();
                0 === a.animations.length
                    ? a.final()
                    : T.requestAnimationFrame(function (b) {
                          return a.frame(b);
                      });
            };
            c.prototype.discardAnimations = function () {
                this.animations = ea(this.animations, function (b) {
                    b = b.playState();
                    return "finished" !== b && "idle" !== b;
                });
            };
            c.prototype.final = function () {
                var b = this._awaitCallbacks.slice(),
                    a = this._framesCount;
                this.ticking = !1;
                this._awaitCallbacks = [];
                setTimeout(function () {
                    w(b, function (b) {
                        return b(a);
                    });
                });
            };
            return c;
        })(KB),
        Ce = new ((function () {
            function a() {}
            a.prototype.create = function () {
                return new VB();
            };
            return a;
        })())().create(),
        vl = {},
        ZB = (function () {
            function a() {}
            a.prototype.createEventsProcessorType = function () {
                return "ontouchstart" in T ? WB : "PointerEvent" in T ? XB : YB;
            };
            return a;
        })(),
        $B = (function () {
            function a() {
                this.subscribedEvents = {};
            }
            a.prototype.isStoreEvent = function (a) {
                return null != vl[a];
            };
            a.prototype.addEvent = function (a, b, d) {
                var c = vl[b];
                if (!c) return !1;
                this.subscribedEvents[b] || (this.subscribedEvents[b] = []);
                a = new c(a, d);
                a.on();
                this.subscribedEvents[b].push(a);
                return !0;
            };
            a.prototype.removeEvent = function (a, b, d) {
                if (!this.isStoreEvent(b)) return !1;
                if (!this.subscribedEvents[b]) return !0;
                for (var c = this.subscribedEvents[b].length, f = 0; f < c; f++) {
                    var g = this.subscribedEvents[b][f];
                    g.eventTarget !== a || (d && g.fn !== d) || (this.subscribedEvents[b].splice(f, 1), g.un(), c--);
                }
                return !0;
            };
            return a;
        })(),
        Df = {},
        Sb = (function () {
            function a(a, b) {
                var c = this;
                this.eventTarget = a;
                this.fn = b;
                this.pointers = {};
                this.pointerEvents = ["pointerdown", "pointerenter", "pointerout"];
                this.publicPointerEvents = ["pointermove", "pointerup", "pointercancel", "pointerout"];
                this.touchEvents = ["touchstart", "touchend", "touchmove", "touchcancel"];
                this.publicTouchEvents = [];
                this.mouseEvents = ["mousedown", "mousemove", "mouseover", "mouseout", "mouseup"];
                this.publicMouseEvents = [];
                this.innerEventsHandler = function (b) {
                    b.type === da.Down && (c.pointers[b.id] = b);
                    c.processEventDescription(b);
                    b.eventData.pointers = c.pointersToArray();
                    c.eventsHandler(b);
                    b.type === da.Move && c.pointers[b.id] && (c.pointers[b.id] = b);
                    if (b.type === da.Up || b.type === da.Leave) delete c.pointers[b.id], delete Df[b.id];
                };
            }
            a.prototype.on = function () {
                this.hasSubscription || (this.subscribe(), (this.hasSubscription = !0));
            };
            a.prototype.un = function () {
                this.hasSubscription && (this.unsubscribe(), (this.hasSubscription = !1));
            };
            a.prototype.clearPointers = function () {
                for (var a in Df) delete Df[a];
            };
            a.prototype.pointersToArray = function () {
                var a = [],
                    b;
                for (b in Df) a.push(Df[b]);
                return a;
            };
            a.prototype.subscribe = function () {
                this.eventsProcessor = new (new ZB().createEventsProcessorType())(this.eventTarget, this.innerEventsHandler, {
                    pointerEvents: this.pointerEvents,
                    publicPointerEvents: this.publicPointerEvents,
                    touchEvents: this.touchEvents,
                    publicTouchEvents: this.publicTouchEvents,
                    mouseEvents: this.mouseEvents,
                    publicMouseEvents: this.publicMouseEvents,
                });
                this.eventsProcessor.subscribe();
            };
            a.prototype.unsubscribe = function () {
                this.eventsProcessor.unsubscribe();
            };
            a.prototype.processEventDescription = function (a) {
                Df[a.id] = new aC(a.id, a.pageX, a.pageY, a.clientX, a.clientY);
            };
            return a;
        })();
    (function (a) {
        function c() {
            var b = (null !== a && a.apply(this, arguments)) || this;
            b.pointerEvents = ["pointerdown"];
            b.publicPointerEvents = ["pointerup", "pointercancel"];
            b.touchEvents = ["touchstart"];
            b.publicTouchEvents = ["touchend", "touchcancel"];
            b.mouseEvents = ["mousedown"];
            b.publicMouseEvents = ["mouseup", "mouseout"];
            return b;
        }
        K(c, a);
        c.prototype.eventsHandler = function (b) {
            switch (b.type) {
                case da.Down:
                    (b.eventData.customEventType = "vdown"), pf(b, this.eventTarget), this.fn(b.eventData);
            }
        };
        return (c = Eb([Ob("vdown")], c));
    })(Sb);
    (function (a) {
        function c() {
            return (null !== a && a.apply(this, arguments)) || this;
        }
        K(c, a);
        c.prototype.subscribe = function () {
            var b = this;
            b.eventsProcessor = new dt(
                b.eventTarget,
                function (a) {
                    return b.eventsHandler(a);
                },
                { events: ["keyup"] }
            );
            b.eventsProcessor.subscribe();
        };
        c.prototype.eventsHandler = function (b) {
            13 == b.keyCode && this.fn(b);
        };
        return (c = Eb([Ob("vkeyenter")], c));
    })(Sb);
    (function (a) {
        function c() {
            return (null !== a && a.apply(this, arguments)) || this;
        }
        K(c, a);
        c.prototype.subscribe = function () {
            var b = this;
            b.eventsProcessor = new dt(
                b.eventTarget,
                function (a) {
                    return b.eventsHandler(a);
                },
                { events: ["focus", "blur"] }
            );
            b.eventsProcessor.subscribe();
        };
        c.prototype.eventsHandler = function (b) {
            "focus" === b.type ? (b.hasFocus = !0) : "blur" === b.type && (b.hasFocus = !1);
            this.fn(b);
        };
        return (c = Eb([Ob("vchangefocus")], c));
    })(Sb);
    (function (a) {
        function c() {
            var b = (null !== a && a.apply(this, arguments)) || this;
            b.pointerEvents = ["pointerup", "pointercancel"];
            b.publicPointerEvents = [];
            b.touchEvents = ["touchend", "touchcancel"];
            b.mouseEvents = ["mouseup", "mouseout"];
            return b;
        }
        K(c, a);
        c.prototype.eventsHandler = function (b) {
            switch (b.type) {
                case da.Up:
                    (b.eventData.customEventType = "vup"), pf(b, this.eventTarget), this.fn(b.eventData);
            }
        };
        return (c = Eb([Ob("vup")], c));
    })(Sb);
    (function (a) {
        function c() {
            var b = (null !== a && a.apply(this, arguments)) || this;
            b.pointerEvents = ["pointermove", "pointerdown", "pointerout", "pointerleave"];
            b.publicPointerEvents = ["pointerup", "pointercancel"];
            b.touchEvents = ["touchmove", "touchstart", "touchend", "touchcancel"];
            b.mouseEvents = ["mousemove", "mousedown", "mouseup"];
            b.downArgs = [];
            b._resetDiff = 4;
            return b;
        }
        K(c, a);
        c.prototype.subscribe = function () {
            a.prototype.subscribe.call(this);
        };
        c.prototype.eventsHandler = function (b) {
            var a = nh(this.downArgs, "id", b.id);
            switch (b.type) {
                case da.Down:
                    if (!Jq(b.eventData)) break;
                    this.downArgs.push(b);
                    break;
                case da.Move:
                    if (!a) break;
                    var c = a.clientX - b.clientX;
                    b = a.clientY - b.clientY;
                    c * c + b * b > this._resetDiff && this.downArgs.splice(this.downArgs.indexOf(a), 1);
                    break;
                case da.Up:
                    a && a.id === b.id && a.eventData.target === b.eventData.target && ((b.eventData.customEventType = "vclick"), pf(b, this.eventTarget), this.fn(b.eventData), this.downArgs.splice(this.downArgs.indexOf(a), 1));
            }
        };
        return (c = Eb([Ob("vclick")], c));
    })(Sb);
    (function (a) {
        function c() {
            var b = (null !== a && a.apply(this, arguments)) || this;
            b.pointerEvents = ["pointerenter", "pointerleave", "pointercancel"];
            b.publicPointerEvents = [];
            b.touchEvents = ["touchstart", "touchend", "touchcancel"];
            b.mouseEvents = ["mouseover", "mouseout"];
            return b;
        }
        K(c, a);
        c.prototype.eventsHandler = function (b) {
            switch (b.type) {
                case da.Down:
                case da.Enter:
                    (b.eventData.customEventType = "venter"), pf(b, this.eventTarget), this.fn(b.eventData);
            }
        };
        return (c = Eb([Ob("venter")], c));
    })(Sb);
    (function (a) {
        function c() {
            var b = (null !== a && a.apply(this, arguments)) || this;
            b.pointerEvents = ["pointerout", "pointercancel"];
            b.publicPointerEvents = [];
            b.touchEvents = ["touchend", "touchcancel"];
            b.mouseEvents = ["mouseout"];
            return b;
        }
        K(c, a);
        c.prototype.eventsHandler = function (b) {
            switch (b.type) {
                case da.Up:
                case da.Leave:
                    (b.eventData.customEventType = "vleave"), this.fn(b.eventData);
            }
        };
        return (c = Eb([Ob("vleave")], c));
    })(Sb);
    (function (a) {
        function c() {
            var b = (null !== a && a.apply(this, arguments)) || this;
            b.pointerEvents = ["pointermove"];
            b.touchEvents = ["touchmove"];
            b.mouseEvents = ["mousemove"];
            b.publicPointerEvents = ["pointerup", "pointercancel"];
            b.publicTouchEvents = ["touchend", "touchcancel"];
            b.publicMouseEvents = ["mouseup", "mouseout"];
            return b;
        }
        K(c, a);
        c.prototype.eventsHandler = function (b) {
            switch (b.type) {
                case da.Move:
                    (b.eventData.customEventType = "vmove"), pf(b, this.eventTarget), this.fn(b.eventData);
            }
        };
        return (c = Eb([Ob("vmove")], c));
    })(Sb);
    (function (a) {
        function c() {
            var b = (null !== a && a.apply(this, arguments)) || this;
            b.timeoutId = null;
            b.timeout = 750;
            return b;
        }
        K(c, a);
        c.prototype.eventsHandler = function (b) {
            var a = this;
            switch (b.type) {
                case da.Down:
                    this.timeoutId = setTimeout(function () {
                        a.fn({ type: "taphold", clientX: b.clientX, clientY: b.clientY });
                        a.timeoutId = null;
                    }, this.timeout);
                    break;
                case da.Move:
                case da.Up:
                    this.reset();
            }
        };
        c.prototype.reset = function () {
            this.timeoutId && (clearTimeout(this.timeoutId), (this.timeoutId = null));
        };
        return (c = Eb([Ob("taphold")], c));
    })(Sb);
    (function (a) {
        function c() {
            var b = (null !== a && a.apply(this, arguments)) || this;
            b.distance = 0;
            b.distanceX = 0;
            b.distanceY = 0;
            b.threshold = 0.3;
            return b;
        }
        K(c, a);
        c.prototype.eventsHandler = function (b) {
            switch (b.type) {
                case da.Move:
                    this.callPinchEvent(b);
                    break;
                case da.Up:
                    2 === Object.keys(this.pointers).length && (this.distance = 0);
            }
        };
        c.prototype.callPinchEvent = function (b) {
            var a = Object.keys(this.pointers);
            if (2 !== a.length) this.distance = 0;
            else {
                var c = this.pointers[a[0]],
                    f = this.pointers[a[1]],
                    g = !1,
                    h = !1;
                c.id === b.id ? ((c = b), (g = c.clientX < f.clientX), (h = c.clientY < f.clientY)) : f.id === b.id && ((f = b), (g = f.clientX < c.clientX), (h = f.clientY < c.clientY));
                var k = this.calculateDistance(c, f),
                    l = this.calculateAxisDistance(c, f, { x: 1, y: 0 }),
                    m = this.calculateAxisDistance(c, f, { x: 0, y: 1 });
                if (0 === this.distance) (this.distance = k), (this.distanceX = l), (this.distanceY = m);
                else {
                    var n = k - this.distance;
                    if (!(Math.abs(n) < this.threshold)) {
                        var p = l - this.distanceX,
                            q = m - this.distanceY;
                        this.distance = k;
                        this.distanceX = l;
                        this.distanceY = m;
                        this.fn({
                            type: "pinch",
                            distance: this.distance,
                            offset: n,
                            offsetX: p,
                            offsetY: q,
                            isLeftPointer: g,
                            isTopPointer: h,
                            pointersCount: a.length,
                            eventData: b.eventData,
                            firstClientX: c.clientX,
                            firstClientY: c.clientY,
                            secondClientX: f.clientX,
                            secondClientY: f.clientY,
                        });
                    }
                }
            }
        };
        c.prototype.calculateDistance = function (b, a) {
            var c = a.clientX - b.clientX;
            b = a.clientY - b.clientY;
            return Math.sqrt(c * c + b * b);
        };
        c.prototype.calculateAxisDistance = function (b, a, c) {
            return Math.abs(c.x * a.clientX + c.y * a.clientY - (c.x * b.clientX + c.y * b.clientY));
        };
        return (c = Eb([Ob("pinch")], c));
    })(Sb);
    (function (a) {
        function c() {
            return (null !== a && a.apply(this, arguments)) || this;
        }
        K(c, a);
        c.prototype.eventsHandler = function (b) {
            switch (b.type) {
                case da.Move:
                    this.callMoveEvent(b);
            }
        };
        c.prototype.callMoveEvent = function (b) {
            var a = b.id;
            this.pointers[a] && this.fn({ type: "move", offsetX: b.clientX - this.pointers[a].clientX, offsetY: b.clientY - this.pointers[a].clientY, pointersCount: Object.keys(this.pointers).length });
        };
        return (c = Eb([Ob("move")], c));
    })(Sb);
    (function (a) {
        function c() {
            return (null !== a && a.apply(this, arguments)) || this;
        }
        K(c, a);
        c.prototype.timeoutInterval = function () {
            return 500;
        };
        c.prototype.resetTimeoutInterval = function () {
            return 300;
        };
        c.prototype.getName = function () {
            return "DoubleTapEvent";
        };
        c.prototype.tapCount = function () {
            return 2;
        };
        return (c = Eb([Ob("doubletap")], c));
    })(
        (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.timeoutId = null;
                b.resetTimeoutId = null;
                b.currentTapCount = 0;
                return b;
            }
            K(c, a);
            c.prototype.eventsHandler = function (b) {
                var a = this;
                switch (b.type) {
                    case da.Down:
                        clearTimeout(this.timeoutId);
                        clearTimeout(this.resetTimeoutId);
                        this.currentTapCount++;
                        this.timeoutId = setTimeout(function () {
                            a.currentTapCount === a.tapCount() && ((b.eventData.customEventType = a.getName()), pf(b, a.eventTarget), a.fn(b.eventData));
                            a.currentTapCount = 0;
                        }, this.timeoutInterval());
                        break;
                    case da.Up:
                        this.resetTimeoutId = setTimeout(function () {
                            a.currentTapCount = 0;
                        }, this.resetTimeoutInterval());
                }
            };
            return c;
        })(Sb)
    );
    (function (a) {
        function c() {
            return (null !== a && a.apply(this, arguments)) || this;
        }
        K(c, a);
        c.prototype.getName = function () {
            return "vdblclick";
        };
        c.prototype.clicksCount = function () {
            return 2;
        };
        c.prototype.timeout = function () {
            return 300;
        };
        return (c = Eb([Ob("vdblclick")], c));
    })(
        (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.downArgs = [];
                b.currentClicksCount = 0;
                return b;
            }
            K(c, a);
            c.prototype.eventsHandler = function (b) {
                var a = this,
                    c = nh(this.downArgs, "id", b.id);
                switch (b.type) {
                    case da.Down:
                        if (!Jq(b.eventData)) break;
                        clearTimeout(this.timeoutId);
                        this.downArgs.push(b);
                        break;
                    case da.Up:
                        c &&
                            c.id === b.id &&
                            c.eventData.target === b.eventData.target &&
                            (clearTimeout(this.timeoutId),
                            this.currentClicksCount++,
                            (b.eventData.customEventType = this.getName()),
                            this.currentClicksCount === this.clicksCount()
                                ? (this.fn(b.eventData), (this.currentClicksCount = 0))
                                : (this.timeoutId = setTimeout(function () {
                                      a.currentClicksCount = 0;
                                  }, this.timeout())),
                            this.downArgs.splice(this.downArgs.indexOf(c), 1));
                }
            };
            return c;
        })(Sb)
    );
    var da;
    (function (a) {
        a[(a.None = 0)] = "None";
        a[(a.Down = 1)] = "Down";
        a[(a.Move = 2)] = "Move";
        a[(a.Enter = 3)] = "Enter";
        a[(a.Leave = 4)] = "Leave";
        a[(a.Up = 5)] = "Up";
    })(da || (da = {}));
    var Hm = (function () {
            return function (a, c, b, d, e, f, g) {
                this.type = a;
                this.id = c;
                this.pageX = b;
                this.pageY = d;
                this.clientX = e;
                this.clientY = f;
                this.eventData = g;
            };
        })(),
        aj = (function () {
            function a(a, b, d) {
                void 0 === d && (d = {});
                this.el = a;
                this.eventsHandler = b;
                this.options = d;
            }
            a.prototype.getWindowForElement = function () {
                var a = this.el;
                a = a.ownerDocument || a;
                return a.defaultView || a.parentWindow || T;
            };
            a.prototype.triggerEventsHandler = function (a) {
                this.eventsHandler && this.eventsHandler(a);
            };
            a.prototype.handleEvents = function (a, b, d, e) {
                var c;
                if (a && a.length) {
                    try {
                        for (var g = ya(a), h = g.next(); !h.done; h = g.next()) this.el[b](h.value, d, e);
                    } catch (l) {
                        var k = { error: l };
                    } finally {
                        try {
                            h && !h.done && (c = g.return) && c.call(g);
                        } finally {
                            if (k) throw k.error;
                        }
                    }
                    return !0;
                }
                return !1;
            };
            a.prototype.handlePublicEvents = function (a, b, d, e) {
                var c,
                    g = this.getWindowForElement();
                if (a && a.length) {
                    try {
                        for (var h = ya(a), k = h.next(); !k.done; k = h.next()) g[b](k.value, d, e);
                    } catch (m) {
                        var l = { error: m };
                    } finally {
                        try {
                            k && !k.done && (c = h.return) && c.call(h);
                        } finally {
                            if (l) throw l.error;
                        }
                    }
                    return !0;
                }
                return !1;
            };
            return a;
        })(),
        dt = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.handler = function (a) {
                    b.triggerEventsHandler(a);
                };
                return b;
            }
            K(c, a);
            c.prototype.subscribe = function () {
                this.handleEvents(this.options.events, "addEventListener", this.handler);
                this.handlePublicEvents(this.options.publicEvents, "addEventListener", this.handler);
            };
            c.prototype.unsubscribe = function () {
                this.handleEvents(this.options.events, "removeEventListener", this.handler);
                this.handlePublicEvents(this.options.publicEvents, "removeEventListener", this.handler);
            };
            return c;
        })(aj),
        YB = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.handler = function (a) {
                    switch (a.type.toLowerCase()) {
                        case "mousedown":
                            var c = da.Down;
                            break;
                        case "mousemove":
                            c = da.Move;
                            break;
                        case "mouseover":
                            c = da.Enter;
                            break;
                        case "mouseout":
                            c = da.Leave;
                            break;
                        case "mouseup":
                            c = da.Up;
                    }
                    b.triggerEventsHandler(new Hm(c, "1", a.pageX, a.pageY, a.clientX, a.clientY, a));
                };
                return b;
            }
            K(c, a);
            c.prototype.subscribe = function () {
                this.handleEvents(this.options.mouseEvents, "addEventListener", this.handler);
                this.handlePublicEvents(this.options.publicMouseEvents, "addEventListener", this.handler);
            };
            c.prototype.unsubscribe = function () {
                this.handleEvents(this.options.mouseEvents, "removeEventListener", this.handler);
                this.handlePublicEvents(this.options.publicMouseEvents, "removeEventListener", this.handler);
            };
            return c;
        })(aj),
        WB = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.handler = function (a) {
                    switch (a.type.toLowerCase()) {
                        case "touchstart":
                            b.triggerTouchEvent(da.Down, a);
                            break;
                        case "touchmove":
                            b.triggerTouchEvent(da.Move, a);
                            break;
                        case "touchend":
                        case "touchcancel":
                            b.triggerTouchEvent(da.Up, a);
                    }
                };
                return b;
            }
            K(c, a);
            c.prototype.subscribe = function () {
                this.handleEvents(this.options.touchEvents, "addEventListener", this.handler, { passive: !1 });
                this.handlePublicEvents(this.options.publicTouchEvents, "addEventListener", this.handler, { passive: !1 });
            };
            c.prototype.unsubscribe = function () {
                this.handleEvents(this.options.touchEvents, "removeEventListener", this.handler);
                this.handlePublicEvents(this.options.publicTouchEvents, "removeEventListener", this.handler);
            };
            c.prototype.triggerTouchEvent = function (b, a) {
                for (var c = 0; c < a.changedTouches.length; c++) {
                    var d = a.changedTouches[c];
                    this.triggerEventsHandler(new Hm(b, d.identifier, d.pageX, d.pageY, d.clientX, d.clientY, a));
                }
            };
            return c;
        })(aj),
        XB = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.handler = function (a) {
                    var c = a.type,
                        d = b.getIdFromEvent(a);
                    switch (c.toLowerCase()) {
                        case "pointerdown":
                            var g = da.Down;
                            break;
                        case "pointermove":
                            g = da.Move;
                            break;
                        case "pointerenter":
                            g = da.Enter;
                            break;
                        case "pointerout":
                            g = da.Leave;
                            break;
                        case "pointerup":
                        case "pointercancel":
                        case "pointerleave":
                            g = da.Up;
                    }
                    b.triggerEventsHandler(new Hm(g, d, a.pageX, a.pageY, a.clientX, a.clientY, a));
                };
                return b;
            }
            K(c, a);
            c.prototype.subscribe = function () {
                this.handleEvents(this.options.pointerEvents, "addEventListener", this.handler);
                this.handlePublicEvents(this.options.publicPointerEvents, "addEventListener", this.handler);
            };
            c.prototype.unsubscribe = function () {
                this.handleEvents(this.options.pointerEvents, "removeEventListener", this.handler);
                this.handlePublicEvents(this.options.publicPointerEvents, "removeEventListener", this.handler);
            };
            c.prototype.getIdFromEvent = function (b) {
                return b.pointerId.toString();
            };
            return c;
        })(aj),
        aC = (function () {
            return function (a, c, b, d, e) {
                this.id = a;
                this.pageX = c;
                this.pageY = b;
                this.clientX = d;
                this.clientY = e;
            };
        })(),
        bC = fa(["div", "input", "button"]),
        hi = function (a) {
            return a ? J(bC, a.toLowerCase()) : !1;
        },
        bj = function (a, c, b) {
            c = b || "svg";
            return (c = hi(a) ? "http://www.w3.org/1999/xhtml" : "svg" === c ? "http://www.w3.org/2000/svg" : "html" === c ? "http://www.w3.org/1999/xhtml" : void 0) ? ba.createElementNS(c, a) : ba.createElement(a);
        },
        Zx = function (a) {
            if (a) {
                var c = a.parentNode;
                c && c.removeChild(a);
            }
        },
        cC = "alt disabled href id src style title class onclick tabindex role aria-label".split(" "),
        dC = ["user-select", "outline"],
        Qq = function (a) {
            if (0 === a.lastIndexOf("xml:", 0)) return "http://www.w3.org/XML/1998/namespace";
            if (0 === a.lastIndexOf("xlink:", 0)) return "http://www.w3.org/1999/xlink";
        },
        yl = function (a, c) {
            a = a.tagName.toLowerCase();
            return (hi(a) && -1 === cC.indexOf(c)) || -1 < dC.indexOf(c);
        },
        Pq = { width: "0", height: "0", x: "0", y: "0", "z-index": "0", fill: "black", stroke: "none", opacity: "1", "stroke-width": "1", display: "inline", visibility: "visible", transform: "none", "clip-path": "none" },
        eC = Jj("width,height,font-size,font-family"),
        Im = {
            image: function (a, c) {
                return a.createElement($s, "image", c);
            },
            clipRect: function (a, c) {
                return a.createElement(HB, "clipPath", c);
            },
            clipPath: function (a, c) {
                return a.createElement(zm, "clipPath", c);
            },
            mask: function (a, c) {
                return a.createElement(IB, "mask", c);
            },
        },
        et = function (a, c) {
            var b = ba.createElement("div"),
                d = function (b) {
                    return (
                        '<div style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;' +
                        (b || "") +
                        '"></div></div>'
                    );
                };
            b.style.cssText = "position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";
            b.innerHTML = d() + d(" width: 200%; height: 200%");
            a.appendChild(b);
            var e,
                f,
                g,
                h,
                k = a.offsetWidth,
                l = a.offsetHeight,
                m = b.childNodes[0],
                n = m.childNodes[0],
                p = b.childNodes[1],
                q = function () {
                    n.style.width = "100000px";
                    n.style.height = "100000px";
                    m.scrollLeft = 1e5;
                    m.scrollTop = 1e5;
                    p.scrollLeft = 1e5;
                    p.scrollTop = 1e5;
                };
            q();
            var r = function () {
                    f = 0;
                    e && ((k = g), (l = h), c.call());
                },
                u = function () {
                    g = a.offsetWidth;
                    h = a.offsetHeight;
                    (e = g !== k || h !== l) && !f && (f = T.requestAnimationFrame(r));
                    q();
                };
            d = function (b) {
                b.attachEvent ? b.attachEvent("onscroll", u) : b.addEventListener("scroll", u);
            };
            d(m);
            d(p);
            return b;
        },
        fC = (function (a) {
            function c(b) {
                var c = this;
                b = b || {};
                var e = b.container,
                    f = b.textRendering,
                    g = (c = a.call(this, e, b.width, b.height, b.defaultWidth, b.defaultHeight) || this);
                ix(g);
                g.disableAnimation = !1;
                g.eventsStore = new $B();
                g._noRender = b.noRender;
                g._staticSize = b.staticSize;
                g._skipDomDestroy = b.skipDomDestroy;
                g._defaultOptions = { transition: { animation: { duration: 500, easing: "ease-in-out-circ" }, generator: "default" } };
                g._measuringImages = {};
                if (!g._noRender) {
                    g.initContainer(e);
                    e = g.root && g.root.el;
                    var h = g.getSvgSize(),
                        k = g.width || "100%",
                        l = g.height || "100%";
                    g.documentElement = new tb(ba.documentElement, g);
                    g.root = e ? g.root : g.svg({ width: h.width, height: h.height, textRendering: f });
                    g.overlay = g.htmlElement("", { id: Dd("overlay"), position: "absolute", left: 0, top: 0 });
                    g.wrapper = g.htmlElement("", { id: qp("JSCharting_") });
                    g.wrapper.attr({ width: k, height: l, "-webkit-tap-highlight-color": "rgba(0, 0, 0, 0)", position: "relative" });
                    g.container.el.appendChild(g.wrapper.el);
                    g.wrapper.el.appendChild(g.root.el);
                    g.wrapper.el.appendChild(g.overlay.el);
                    !b.staticSize &&
                        (g._resizeSensor = et(g.wrapper.el, function () {
                            return g.rootResize();
                        }));
                }
                return c;
            }
            K(c, a);
            c.prototype.resubscribeResize = function () {
                var b = this;
                b._resizeSensor &&
                    (b._resizeSensor.parentNode.removeChild(b._resizeSensor),
                    (b._resizeSensor = et(b.wrapper.el, function () {
                        return b.rootResize();
                    })));
            };
            c.prototype.setCursor = function (b) {
                this._setCursor !== b && this.processAttributes(this.wrapper, { cursor: b });
                this._setCursor = b;
            };
            c.prototype.getCursor = function () {
                return this._setCursor;
            };
            c.prototype.element = function (b, a, c) {
                var d = this;
                if (!Q(b)) {
                    if (b instanceof tb) return b;
                    if (J(Im, b)) return Im[b](this, a);
                    if (!O(b)) return this.element(b.tag, b.attr, c);
                    var e = a ? a.childNodes : null;
                    e && (a = Ga(a, ["childNodes"]));
                    var h = this.createElement(tb, b, a, c);
                    h &&
                        e &&
                        w(e, function (b) {
                            d.element(b).add(h);
                        });
                    return h;
                }
            };
            c.prototype.isRootHidden = function () {
                var b = this.root && this.root.el;
                if (!b) return !0;
                b = T.getComputedStyle(b);
                return "hidden" === b.visibility || "none" === b.display;
            };
            c.prototype.isRootDestroyed = function () {
                var b = this.root;
                return b ? b.isDestroyed : !0;
            };
            c.prototype.add = function (b, a) {
                var c = b.el instanceof HTMLElement,
                    d = a && a.el && a.el instanceof HTMLElement;
                if (a && a.addElementToParent && !c) return a.addElementToParent(b), b;
                a = c ? (d ? a : this.overlay) : a || this.root;
                if (b.data.zIndex || a.data.ordered) return (c = b.data.zIndex || 0), (a.data.ordered = !0), Oq(a, b, c), b;
                Kq(a, b);
                return b;
            };
            c.prototype.addBefore = function (b, a) {
                zg(b, a);
                return b;
            };
            c.prototype.addAfter = function (b, a) {
                Lq(b, a);
                return b;
            };
            c.prototype.attr = function (b, a, c) {
                var d;
                if (Q(a)) return Rq(b), b;
                if (!a) return b;
                var e = O(a),
                    h = t(c),
                    k = e && !h,
                    l = a;
                e && h && (l = ((d = {}), (d[a] = c), d));
                if (!b) return this.rootAttr(l, k);
                if (l.transition) return b.transition(l.transition), b;
                a = this.processAttributes(b, Fm(l, b));
                return k ? a : b;
            };
            c.prototype.rect = function (b, a, c, f, g, h) {
                if (Q(b)) return this.element("rect");
                b = Pa(b) ? b : { x: b, y: a, width: c, height: f, rx: g, ry: h };
                return this.element("rect", b);
            };
            c.prototype.circle = function (b, a, c) {
                if (Q(b)) return this.element("circle");
                b = Pa(b) ? b : { cx: b, cy: a, r: c };
                return this.element("circle", b);
            };
            c.prototype.image = function (b, a, c, f, g) {
                if (Q(b)) return this.element("image");
                b = Pa(b) ? b : { src: b, x: a, y: c, width: f, height: g };
                return this.createElement($s, "image", b);
            };
            c.prototype.query = function (b, a) {
                return a ? this.wrap(gi(b, a.el)) : this.wrap(gi(b));
            };
            c.prototype.queryAll = function (b) {
                var a = this;
                b = ba.querySelectorAll(b);
                return B(b, function (b) {
                    return a.wrap(b);
                });
            };
            c.prototype.svg = function (b) {
                b = this.createElement(tb, "svg", b);
                b.el.setAttribute("xmlns", "http://www.w3.org/2000/svg");
                b.el.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
                this.element("desc", { text: "Created with JSCharting" }).add(b);
                return b;
            };
            c.prototype.reCreateElement = function (b, a) {
                var c = b.parentNode,
                    d = bj(a);
                b.destroy();
                b.init(d, a);
                b.isPatched = !0;
                c && b.add(c);
                return b;
            };
            c.prototype.destroy = function (b, a) {
                var c = this;
                a = a || c._skipDomDestroy;
                if (b) {
                    var d = Zh(c);
                    nl(c, b, function (b) {
                        return d && ql(c, b);
                    });
                    var g = b.data.events;
                    g &&
                        g.length &&
                        w(g.slice(0), function (a) {
                            return c.un(b, a.type, a.fn);
                        });
                    !a && Yx(b);
                    b.isDestroyed = !0;
                    return b;
                }
                d && d.destroy();
                Zh(c, null);
                T.removeEventListener("resize", void 0, !1);
                Iw(c.container.attr("id")) && c.destroy(c.container);
                c.destroy(c.wrapper);
                c.destroy(c.overlay);
                c.destroy(c.documentElement, !0);
                return c.destroy(c.root);
            };
            c.prototype.on = function (b, a, c) {
                var d = function (a) {
                    return c.call(b, a);
                };
                this.eventsStore.addEvent(b.el, a, d) || b.el.addEventListener(a, d, !1);
                (b.data.events = b.data.events || []).push({ type: a, fn: c, f: d });
                return b;
            };
            c.prototype.un = function (b, a, c) {
                if (!b.data.events) return b;
                for (var d = (b.data.events = b.data.events || []), e = d.length - 1; -1 < e; e--) {
                    var h = d[e];
                    (h.type !== a && a) || (h.fn !== c && c) || (this.eventsStore.removeEvent(b.el, h.type, h.f) || b.el.removeEventListener(h.type, h.f, !1), d.splice(e, 1));
                }
                return b;
            };
            c.prototype.box = function (b, a) {
                var c = this,
                    d;
                if (b && (d = b.el)) {
                    var g = T.getComputedStyle(d);
                    d = g.width;
                    g = g.height;
                    if (0 < d.indexOf("px") && 0 < g.indexOf("px") && ((d = parseInt(d)), (g = parseInt(g)), 0 <= d && 0 <= g)) return { x: 0, y: 0, width: d, height: g };
                }
                a = ay(b || this.root, a);
                d = t(this.width) && nb(this.width);
                g = t(this.height) && nb(this.height);
                var h = function (b) {
                        var a;
                        return !(null === (a = c.root) || void 0 === a ? 0 : a.attr) || "100%" !== c.root.attr(b);
                    },
                    k = !a.width && !d,
                    l = !a.height && !g,
                    m = k && h("width");
                h = l && h("height");
                b || (!m && !h) || this._staticSize
                    ? (b || (!k && !l) || ((k = this.container.getBbox()), (a.width = a.width || k.width), (a.height = a.height || k.height)), (this._defaultSizeIsSet = !1))
                    : ((a.width = a.width || this.defaultWidth), (a.height = a.height || this.defaultHeight), (k = this.wrapper) && Ma.emit("warning", k.attr("id"), "defaultSizeIsSet", { container: k.el }), (this._defaultSizeIsSet = !0));
                b || (d && (a.width = this.width), g && (a.height = this.height));
                return a;
            };
            c.prototype.isDefaultSizeSet = function () {
                return this._defaultSizeIsSet;
            };
            c.prototype.pathInner = function (b, a) {
                if (Q(a)) return this.createElement(b, "path");
                var c = ja(a);
                a = O(a) || c ? { d: c ? pc(a, " ") : a } : a;
                ja(a.d) && (a.d = pc(a.d, " "));
                a.d && a.d.path && (a.d = a.d.path);
                return this.createElement(b, "path", a);
            };
            c.prototype.rootResize = function () {
                if (!this.width || !this.height) {
                    var b = this.root.attr("display"),
                        a = this.getSvgSize();
                    this.root.attr({ width: a.width, height: a.height, display: b });
                }
                ym && ym.trigger();
            };
            c.prototype.getSvgSize = function () {
                var b = this.container.getBbox();
                return { width: this.width || (b.width ? "100%" : this.defaultWidth), height: this.height || (b.height ? "100%" : this.defaultHeight) };
            };
            c.prototype.wrap = function (b) {
                return Ag(b, this);
            };
            c.prototype.createElement = function (b, a, c, f) {
                f = bj(a, null, f);
                b = new b(f, this, a);
                "path" === b.nodeName && ((c = c || {}), c.fill || (c.fill = "none"), c.stroke || (c.stroke = "none"));
                c && b.attr(c);
                b.isPatched = !0;
                return b;
            };
            c.prototype.processAttributes = function (b, a) {
                var c = this;
                if (a && (a.beforeAttr && (a.beforeAttr(a), delete a.beforeAttr), a.reset && (Rq(b, a), delete a.reset), b.el)) {
                    if (O(a)) return Nq(b, a);
                    var d = this.isAnimationDisabled();
                    if (d || !b.isPatched || (!a.autoTransition && !a.animation) || !b.tryAutoTransition(a)) {
                        J(a, "animation") && (a.animation = void 0);
                        if (a.continueAnimation) {
                            if (((a.continueAnimation = void 0), b._transition && b._transition.attachToEnd(a))) return;
                        } else b.finishAnimation(d ? null : a);
                        return $x(b, a, function (b, a, d) {
                            dq(c, b, a, d, function (b) {
                                return ql(c, b);
                            });
                        });
                    }
                }
            };
            c.prototype.isAnimationDisabled = function (b) {
                return this.disableAnimation || !1 === this._defaultOptions.transition.animation || (b && !1 === b.animation);
            };
            c.prototype.showHide = function (b, a) {
                var c = b.attr("display");
                a !== ("none" !== c) && b.attr("display", a ? null : "none");
                return b;
            };
            c.prototype.show = function (b) {
                return this.showHide(b, !0);
            };
            c.prototype.hide = function (b) {
                return this.showHide(b, !1);
            };
            c.prototype.visible = function (b, a) {
                return this.showHide(b, t(a) ? a : "none" === b.attr("display"));
            };
            c.prototype.calculateImageSize = function (b, a) {
                Mg(b, ".svg") ? this.calculateSvgImageSize(b, a) : this.calculateRasterImageSize(b, a);
            };
            c.prototype.load = function (b, a) {
                var c = this;
                Dv(b, function (b) {
                    var d = b.data,
                        e = bj("div", null, "html");
                    b = !0;
                    /^\s*<\s*svg(?:\s|>)/m.test(d) || ((d = '<svg xmlns="http://www.w3.org/2000/svg">' + d + "</svg>"), (b = !1));
                    e.innerHTML = d;
                    if ((d = e.getElementsByTagName("svg")[0]))
                        if (b) b = Ag(d, c);
                        else {
                            for (b = ba.createDocumentFragment(); d.firstChild; ) b.appendChild(d.firstChild);
                            b = Ag(b, c);
                        }
                    else b = null;
                    return a(b);
                });
            };
            c.prototype.htmlElement = function (b, a) {
                b = b || "";
                var c = bj("div", null, "html");
                c.innerHTML = b;
                b = Ag(c, this, "div");
                a && b.attr(a);
                return b;
            };
            c.prototype.relativeToRoot = function (b, a) {
                var c = this.getRootBoundingClientRect();
                return { x: b - c.left, y: a - c.top };
            };
            c.prototype.getClientXY = function (b) {
                var a = this.getRootBoundingClientRect(),
                    c = b.getBbox(),
                    f = 0,
                    g = 0;
                do {
                    var h = (h = b.attr("transform").translate) ? [h[0], h[1]] : [0, 0];
                    f += h[0];
                    g += h[1];
                    b = b.parentNode;
                } while (b && "svg" !== b.el.tagName);
                return { x: c.x + a.left + f, y: c.y + a.top + g };
            };
            c.prototype.isAnimating = function () {
                return 0 < Ce.getAnimations().length;
            };
            c.prototype.getOffsetsFromVisualViewport = function (b) {
                var a = ba.documentElement.getBoundingClientRect();
                b = b.parentNode ? b.getBoundingClientRect() : { top: 0, left: 0 };
                return { top: b.top - a.top - window.pageYOffset, left: b.left - a.left - window.pageXOffset };
            };
            c.prototype.getRootBoundingClientRect = function () {
                var b = this;
                if (b._rootBoundingClientRect) return b._rootBoundingClientRect;
                b._rootBoundingClientRect = b.getOffsetsFromVisualViewport(b.root.el);
                T.setTimeout(function () {
                    b._rootBoundingClientRect = null;
                }, 1e3);
                return b._rootBoundingClientRect;
            };
            c.prototype.cssText = function (b, a) {
                var c = ba,
                    d = c.head || c.getElementsByTagName("head")[0],
                    g = c.createElement("style");
                a && g.setAttribute("id", a);
                g.type = "text/css";
                g.styleSheet ? (g.styleSheet.cssText = b) : g.appendChild(c.createTextNode(b));
                d.appendChild(g);
            };
            c.prototype.calculateRasterImageSize = function (b, a) {
                var c = function (b) {
                    return b.addEventListener("load", function () {
                        return a(b.width, b.height);
                    });
                };
                if (this._measuringImages[b]) (d = this._measuringImages[b]), d.width ? a(d.width, d.height) : c(d);
                else {
                    this._measuringImages[b] = new Image();
                    var d = this._measuringImages[b];
                    c(d);
                    d.src = b;
                }
            };
            c.prototype.calculateSvgImageSize = function (b, a) {
                this.load(b, function (b) {
                    return a(b.attr("width") || 0, b.attr("height") || 0);
                });
            };
            c.prototype.rootAttr = function (b, a) {
                var c = this.wrapper,
                    d = this.root;
                if (a) return "disableAnimation" === b ? this.disableAnimation : this.processAttributes(d, b);
                b.transition && (L(this._defaultOptions.transition, b.transition), delete b.transition);
                J(b, "disableAnimation") && ((this.disableAnimation = b.disableAnimation), delete b.disableAnimation);
                b.container && (this.replaceContainer(b.container), delete b.container);
                ub(b) || ((a = Fm(b, d)), (b = Oa(a, eC)), (a = Oa(a)), b && this.processAttributes(c, b), a && this.processAttributes(d, a));
            };
            c.prototype.defaultOptions = function () {
                return this._defaultOptions;
            };
            c.prototype.replaceContainer = function (b) {
                this.initContainer(b);
                this.container.el.appendChild(this.wrapper.el);
                this.wrapper.el.appendChild(this.root.el);
                this.wrapper.el.appendChild(this.overlay.el);
            };
            c.prototype.initContainer = function (b) {
                if (b && (O(b) || b.tagName))
                    if (((b = b.tagName ? b : gi(b)), "svg" === b.tagName.toLowerCase())) {
                        this.root = this.wrap(b);
                        var a = b.getElementsByTagName("desc")[0];
                        b = b.getElementsByTagName("defs")[0];
                        a || this.element("desc", { text: "Created with JSCharting" }).add(this.root);
                        b && new tb(b, this).add(this.root);
                    } else if ("div" === b.tagName.toLowerCase()) {
                        for (; b.lastChild; ) b.removeChild(b.lastChild);
                        this.container = this.wrap(b);
                    }
                this.container || ((this.container = this.htmlElement("", { id: Dd("container") })), gi("body").appendChild(this.container.el));
            };
            return c;
        })(EB),
        ft = new ((function () {
            function a() {}
            a.prototype.create = function (a) {
                return new fC(a);
            };
            return a;
        })())(),
        gt = (function () {
            function a() {}
            a.prototype.generate = function (a, b, d) {
                var c = {},
                    f;
                Da(a, function (b) {
                    t(a[b]) && ("z-index" === b ? ((f = f || {}), (f[b] = a[b])) : J(Em, b) && (c[b] = a[b]));
                });
                a.animation && (c.animation = a.animation);
                b = { middle: { from: b, to: c }, end: a };
                f && (b.start = f);
                return b;
            };
            return a;
        })(),
        gC = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.generate = function (b, c, e) {
                e = a.prototype.generate.call(this, b, c, e);
                var d = A({}, c, b),
                    g = !c.d || Mg(c.d, "Z");
                b = !b.d || Mg(b.d, "Z");
                e.middle.to.fill && !c.fill && (e.middle.from.fill = "none");
                if (g && b) return e;
                e.middle.from.fill = g ? c.fill || "none" : "none";
                if (e.middle.to.fill || d.fill) e.middle.to.fill = b ? d.fill || "none" : "none";
                return e;
            };
            return c;
        })(gt),
        hC = { default: new gt().generate, path: new gC().generate },
        iC = (function () {
            function a(a) {
                this._el = a;
                this.scope = this._el.data.id;
                this._renderer = this._el.renderer;
            }
            a.prototype.attr = function (a) {
                var b = this._el;
                return b.isComposite ? b.attr(a) : this._renderer.attr(b, a);
            };
            a.prototype.attrEnd = function (a) {
                var b = this._el;
                Da(a, function (b) {
                    var c = a[b];
                    c && !c.el && !c.isDef && c.val && (a[b] = c.val);
                });
                b.isComposite ? b.attr(a) : this._renderer.attr(b, a);
            };
            a.prototype.normalize = function (a) {
                return this._el.normalizeAttrs(a);
            };
            a.prototype.parse = function (a, b) {
                return "u" === b[0] ? this.parseUrl(b) : "%" === b[b.length - 1] ? this.parseDemesion(a, b) : b;
            };
            a.prototype.parseUrl = function (a) {
                var b = /url\(#(.*)\)/g.exec(a);
                if (!b) return a;
                var c = this._renderer;
                b = b[1];
                var e = ol(c, b);
                e ? (b = e) : (c = c.query("#" + b)) ? ((e = c.nodeName.toLowerCase()), (e = Am[e]) && e(c, b), (b = c)) : (b = void 0);
                return b && b.val ? b.val : a;
            };
            a.prototype.parseDemesion = function (a, b) {
                var c = parseFloat(b),
                    e = !!this._el.parentNode,
                    f = e ? this._el.parentNode.box() : this._el.box();
                return J(f, a) ? (e ? (c * f[a]) / 100 : f[a]) : b;
            };
            return a;
        })(),
        ht = (function () {
            function a(a, b) {
                this._animation = {};
                this._defaults = {};
                this._activeAnimatingAttrs = this._animatingAttrs = null;
                this._skipEnd = !1;
                this._processors = {};
                this._updater = a;
                this.scope = this._updater.scope;
                b && this.options(b);
            }
            a.prototype.options = function (a) {
                if (a) {
                    a.animation && L(this._animation, Og[1].resolve(a.animation));
                    a.defaults && L(this._defaults, this.normalize(a.defaults));
                    a.processors && this.registerProcessors(a.processors);
                    a.generator && (this._generator = hC[a.generator]);
                    var b = a.start,
                        c = a.middle;
                    a = a.end;
                    (!c && !a) ||
                        this.checkForSameAnimation(c) ||
                        ((this._skipEnd = !0),
                        this.finishAnimation(),
                        (this._skipEnd = !1),
                        b && ((b = this.normalize(b)), this._animatingAttrs && (b = Ga(b, pa(this._animatingAttrs))), this.attr(b)),
                        a && ((this._endAttrs = this._endAttrs || {}), L(this._endAttrs, Ga(a, ["animation", "autoTransition", "attrTransition"]))),
                        (b = this._appliedAnimation = c.to && c.to.animation ? W(this._animation, Og[1].resolve(c.to.animation)) : L({}, this._animation)),
                        c && c.to ? (this.applyAnimation(c.from, c.to, b), this.waitFinish(b)) : this.applyEnd(b));
                }
            };
            a.prototype.getAnimationOptions = function () {
                return this._animation;
            };
            a.prototype.getAnimations = function () {
                return Ce.getAnimations(this.scope);
            };
            a.prototype.finishAnimation = function (a, b) {
                void 0 === a && (a = !1);
                var c = this.getAnimations() || [];
                if (c.length) {
                    if (b) {
                        var e = this._activeAnimatingAttrs;
                        if (e) {
                            var f = !0,
                                g;
                            for (g in b)
                                if (J(e, g) && e[g] !== b[g]) {
                                    f = !1;
                                    break;
                                }
                            if (f) return;
                        }
                    }
                    w(c, function (b) {
                        return b.finishAnimation(a);
                    });
                }
            };
            a.prototype.tryAutoTransition = function (a, b, d) {
                if (this._generator && !1 !== a.animation && (!a.animation || 0 !== a.animation.duration)) return this.options(this._generator(a, b(), d)), this;
            };
            a.prototype.attachToEnd = function (a) {
                if (!(this.getAnimations() || []).length || !a) return !1;
                var b = (this._endAttrs = this._endAttrs || {});
                L(b, a);
                return !0;
            };
            a.prototype.checkForSameAnimation = function (a) {
                if (!(a && a.to && a.to.animation && this._animatingAttrs)) return !1;
                for (var b in a.to) if ("animation" !== b && a.to[b] !== this._animatingAttrs[b]) return !1;
                return !0;
            };
            a.prototype.applyEnd = function (a) {
                var b = this;
                if (!b._skipEnd && ((b._animatingAttrs = null), (b._activeAnimatingAttrs = null), b._endAttrs && !ub(b._endAttrs))) {
                    if (a.beforeAttr || b._beforeAttr)
                        b._endAttrs.beforeAttr = function (c) {
                            return b.checkForBeforeAttr(c, a, null);
                        };
                    b.attrApllying = !0;
                    b._updater.attrEnd(b._endAttrs);
                    b.attrApllying = !1;
                    b._endAttrs = null;
                }
            };
            a.prototype.applyAnimation = function (a, b, d) {
                var c = this;
                a = this.normalize(a);
                b = this.normalize(b);
                var f = this,
                    g = {},
                    h = {},
                    k = {},
                    l = this._animatingAttrs,
                    m = null !== l,
                    n = this._defaults,
                    p = [],
                    q = {},
                    r = {},
                    u = !0;
                m && (b = L(l, b));
                (function (b) {
                    Da(b, function (e) {
                        var v = b[e];
                        if (J(Em, e)) {
                            var x = m && J(l, e) ? c.attr(e) : a && J(a, e) ? a[e] : J(n, e) ? n[e] : c.attr(e),
                                E = Em[e];
                            E[2] && O(x) && (x = c._updater.parse(e, x));
                            v && v.isElement && !J(v, "val")
                                ? (q[e] = t(v[e]) ? v[e] : v)
                                : ((x = E[0](x)),
                                  (v = E[2] && O(v) ? f._updater.parse(e, v) : v),
                                  (v = E[0](v)),
                                  (k[e] = v),
                                  c._endAttrs && J(c._endAttrs, e) && v === c._endAttrs[e] && delete c._endAttrs[e],
                                  x == v || (v && v.isEqual && v.isEqual(x)) || ((r[e] = v), (u = !1), E[1] ? p.push({ key: e, animator: E[1](x, v, d) }) : ((g[e] = x), (h[e] = v))));
                        } else q[e] = v;
                    });
                })(b);
                this._animatingAttrs = this._curAttrs = this._prevAttrs = k;
                this._activeAnimatingAttrs = r;
                this._offset = 0;
                b = L(
                    {
                        onFrame: function (b, a) {
                            c._offset = b = null === b ? 1 : b;
                            p.length &&
                                w(p, function (c) {
                                    a[c.key] = c.animator(b);
                                });
                            c._prevAttrs = c._curAttrs;
                            c._curAttrs = a;
                            c.checkForBeforeAttr(a, d, b);
                            c.attr(a);
                        },
                        scope: this.scope,
                    },
                    d
                );
                ub(q) || this.attr(q);
                u || Ce.animate([g, h], b);
            };
            a.prototype.waitFinish = function (a) {
                var b = this,
                    c = this.getAnimations(),
                    e = a.onFinish,
                    f = a.final,
                    g = function () {
                        b.applyEnd(a);
                        e && e();
                        f && f();
                    },
                    h = function () {
                        S(c, function (b) {
                            return "finished" !== b.playState();
                        }) || g();
                    };
                c && 0 < c.length
                    ? (w(c, function (b) {
                          b.onFinish = function () {
                              h();
                          };
                      }),
                      h())
                    : g();
            };
            a.prototype.normalize = function (a) {
                if (!a) return null;
                a = Ga(a, ["animation", "autoTransition", "attrTransition"]);
                return this._updater.normalize(a);
            };
            a.prototype.attr = function (a) {
                this.attrApllying = !0;
                a = this._updater.attr(a);
                this.attrApllying = !1;
                return a;
            };
            a.prototype.registerProcessors = function (a) {
                var b = this;
                ja(a)
                    ? w(a, function (a) {
                          return b.registerProcessor(a);
                      })
                    : this.registerProcessor(a);
            };
            a.prototype.registerProcessor = function (a) {
                a.name && (a.beforeAttr && ((this._beforeAttr = this._beforeAttr || []), this._beforeAttr.push(a.beforeAttr)), (this._processors[a.name] = a));
            };
            a.prototype.checkForBeforeAttr = function (a, b, d) {
                var c = this;
                b.beforeAttr
                    ? b.beforeAttr(a, this._prevAttrs, d)
                    : this._beforeAttr &&
                      w(this._beforeAttr, function (b) {
                          return b(a, c._prevAttrs, d);
                      });
            };
            return a;
        })(),
        jC = (function () {
            function a() {}
            a.prototype.create = function (a, b) {
                return new ht(new iC(a), b);
            };
            return a;
        })();
    Og[0] = new jC();
    var Jm = fa("transform clipPath clip-path opacity display zIndex".split(" ")),
        it = W(Jm, fa(["animation", "fill", "stroke"])),
        kC = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.attr = function (b, a) {
                return (this.attrApplier = this.attrApplier || new (this.applierType())(this)).attr(b, a);
            };
            return c;
        })(tb),
        jt = (function () {
            function a(a) {
                this._attrsToApply = {};
                this._firstAttrApplied = !1;
                this._childElements = [];
                this.renderer = a.renderer;
                this.virtualElement = a;
                this.virtualElement.isComposite = !0;
            }
            a.prototype.attr = function (a, b) {
                if (!a || !Pa(a)) {
                    var c = this.virtualElement.data.vals;
                    return J(c, a) ? c[a] : this.renderer.attr(this.virtualElement, a, b);
                }
                this._firstAttrApplied && a.animation && a.animation.duration && this.virtualElement.isPatched && !this.renderer.disableAnimation
                    ? ((this._attrsToApply = a), this.renderer.attr(this.virtualElement, this.startAnimationAttrs(a)))
                    : ((this._firstAttrApplied = !0), L(this._attrsToApply, a), this.applyAttrs());
                return this.virtualElement;
            };
            a.prototype.startAnimationAttrs = function (a) {
                return Na({}, a, this.animAttrs());
            };
            a.prototype.animAttrs = function () {
                return it;
            };
            a.prototype.groupAttrs = function () {
                return Jm;
            };
            a.prototype.applyAttrs = function () {
                var a = this.attrsToApply(),
                    b = Hb(a, Jm);
                L(this.virtualElement.data.vals, b);
                this.constructChildren(a, b);
                this.renderer.attr(this.virtualElement, Na({}, a, this.groupAttrs()));
            };
            a.prototype.attrsToApply = function () {
                return be(this.virtualElement.data.vals, this._attrsToApply, { animation: void 0 });
            };
            a.prototype.addElement = function (a) {
                var b = "circle" === a.elType ? this.renderer.circle(a).add(this.virtualElement) : this.renderer.path(a).add(this.virtualElement);
                b.data.key = a.key;
                return b;
            };
            a.prototype.removeElement = function (a) {
                this.virtualElement.el.removeChild(a.el);
            };
            a.prototype.bindConfig = function (a) {
                var b = this;
                Ub(
                    a,
                    b._childElements,
                    function (a) {
                        return b.addElement(a);
                    },
                    function (b, a) {
                        return a.attr(b);
                    },
                    function (a) {
                        return b.removeElement(a);
                    },
                    function (b) {
                        return b.key;
                    },
                    function (b) {
                        return b.data.key;
                    }
                );
            };
            return a;
        })(),
        lC = W(it, fa(["d"])),
        mC = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.animAttrs = function () {
                return lC;
            };
            c.prototype.constructChildren = function (b, a) {
                var c = [];
                if (b.d) {
                    var d = function (b) {
                            b.omit = ["key", "caps"];
                            c.push(b);
                        },
                        g = function (b, a, c, e) {
                            b = {
                                key: b,
                                d: a,
                                stroke: z(c.stroke, "none"),
                                fill: z(c.fill, e.stroke, "rgba(0,0,0,.5)"),
                                opacity: z(c.opacity, c["stroke-opacity"], e.opacity, e["stroke-opacity"], 1),
                                zIndex: z(c["z-index"], e["z-index"]),
                                display: z(c.display, e.display),
                            };
                            d(b);
                        },
                        h = function (b, c, e) {
                            var f = cy(c, e),
                                h = f ? ey(e, f) : {};
                            c = W(a, { d: f ? f.d : c, caps: void 0 });
                            c.key = "l-" + b;
                            d(c);
                            h.start && g("c-start-" + b, h.start, e.start, a);
                            h.end && g("c-end-" + b, h.end, e.end, a);
                        },
                        k = (this._caps = by(b));
                    b = this._originalPath = b.d && b.d.isPath ? b.d : Aa(b.d);
                    if (k.eachShape) {
                        b = Ww(b);
                        for (var l = 0; l < b.length; l++) h(l, b[l], k);
                    } else h(0, b, k);
                    this.bindConfig(c);
                }
            };
            c.prototype.startAnimationAttrs = function (b) {
                var a = Na({}, b, this.animAttrs());
                a.d && (a.d = a.d && a.d.isPath ? a.d : Aa(a.d));
                this._skipCapsDuringAnimation = this._originalPath && this._originalPath.hasCurves && !Sq(this._caps) && Sq(b.caps);
                return a;
            };
            c.prototype.attrsToApply = function () {
                this._attrsToApply.caps || (this._attrsToApply.caps = {});
                var b = a.prototype.attrsToApply.call(this);
                this._skipCapsDuringAnimation && this.virtualElement.isAnimating() && (b.caps = {});
                return b;
            };
            return c;
        })(jt),
        Tq = fa(["start", "end"]);
    (function (a, c) {
        (Zi[a] = Zi[a] || []).push(c);
    })("path", function (a, c) {
        if (!c || !c.caps) return !1;
        c = a.data.vals;
        a.renderer.reCreateElement(a, "g");
        a.morphType = "lineShape";
        var b = new mC(a);
        b.attr(c);
        a.attrApplier = b.attr.bind(b);
    });
    var De;
    (function (a) {
        a[(a.x = 0)] = "x";
        a[(a.y = 1)] = "y";
        a[(a.xy = 2)] = "xy";
    })(De || (De = {}));
    var kt;
    (function (a) {
        a[(a.Width = 0)] = "Width";
        a[(a.Height = 1)] = "Height";
        a[(a.Whitespace = 2)] = "Whitespace";
        a[(a.None = 3)] = "None";
    })(kt || (kt = {}));
    var Ya = function (a) {
            return a && "*" === a.valueType;
        },
        tc = function (a) {
            return a && !a.isMutable && "px" === a.valueType;
        },
        ib = function (a) {
            return a && "%" === a.valueType;
        },
        Ee = function (a) {
            return a && "px" === a.valueType;
        },
        Cb = function (a) {
            return a && !a.isMutable;
        },
        ic = function (a) {
            return a ? a.px : 0;
        },
        nC = /[0123456789]+|.+/g,
        Qa = function (a, c) {
            var b = typeof a;
            if ("object" === b && a.valueType) return L({}, a);
            if (0 === a && !c) return ld();
            var d = 0,
                e = 0,
                f = -Infinity,
                g = !1,
                h = 0,
                k = 0,
                l = !0;
            c && ((f = z(c.minPx, -Infinity)), (g = z(c.stretch, !1)), (l = z(c.isMutable, !0)));
            var m = g ? "*" : "px";
            if ("number" === b) (e = a || 0), (d = g ? 1 : a);
            else if ("string" === b && a.length)
                switch ((c && ((h = z(c.allSpace, 0)), (k = z(c.freeSpace, 0))), (a = a.match(nC)), (d = parseFloat(a[0])), (d = (c = Ha(d)) || g ? 1 : d), (m = (c ? a[0] : a[1]) || m), (k = g ? e : k), m)) {
                    case "*":
                        e = (k || 0) * (d || 1);
                        break;
                    case "%":
                        e = ((h || 0) * d) / 100;
                        break;
                    case "px":
                        e = d;
                }
            e = Pj(oa([e, f]), 6);
            return { val: d, px: e, valueType: m, isMutable: l };
        },
        ld = function () {
            return { val: 0, px: 0, valueType: "px", isMutable: !0, minPx: 0 };
        },
        rf = function (a, c) {
            var b, d;
            c = c || 0;
            var e = { val: 0, px: 0, valueType: "px" };
            if ("number" === typeof a) c = b = d = e = { val: a, px: a, valueType: "px" };
            else if (a.length) {
                e = "string" === typeof a ? a.split(/ +/g) : "object" === typeof a ? a : [0];
                var f = { allSpace: c };
                c = Qa(e[0], f);
                b = t(e[1]) ? Qa(e[1], f) : c;
                d = t(e[2]) ? Qa(e[2], f) : c;
                e = t(e[3]) ? Qa(e[3], f) : b;
            } else "object" === typeof a ? ((f = { allSpace: c }), (c = a.top ? Qa(a.top, f) : e), (b = a.right ? Qa(a.right, f) : e), (d = a.bottom ? Qa(a.bottom, f) : e), (e = a.left ? Qa(a.left, f) : e)) : (c = b = d = e);
            var g = 0,
                h = 0,
                k = 0;
            f = 0 + ((Ee(e) ? e.val : 0) + (Ee(b) ? b.val : 0));
            g += (Ee(c) ? c.val : 0) + (Ee(d) ? d.val : 0);
            h += (ib(e) ? e.val : 0) + (ib(b) ? b.val : 0);
            k += (ib(c) ? c.val : 0) + (ib(d) ? d.val : 0);
            return { initial: a, top: c, right: b, bottom: d, left: e, horizontal: { absolute: f, relative: h, px: e.px + b.px }, vertical: { absolute: g, relative: k, px: c.px + d.px } };
        },
        lt = function (a, c, b) {
            if (b) {
                var d = b.padding,
                    e = b.offset,
                    f = d ? d.horizontal.relative : 0;
                d = d ? d.horizontal.absolute : 0;
                e = e ? Fe(e.left) + Fe(e.right) : 0;
                f /= 100;
                f = 1 + f / (1 - f);
                d = (Fe(a) + d + e) * f;
                "px" === a.valueType ? (a = Qa(d)) : a.valueType ? ((a = L({}, a)), (a.px = d)) : (a = d);
            }
            d = a;
            b &&
                0 !== c.px &&
                ((f = b.padding),
                (e = b.offset),
                (b = f ? f.vertical.relative : 0),
                (f = f ? f.vertical.absolute : 0),
                (e = e ? Fe(e.top) + Fe(e.bottom) : 0),
                (b = Fe(c) + f + e + (b / 100) * Fe(d)),
                "px" === c.valueType ? (c = Qa(b)) : c.valueType ? ((c = L({}, c)), (c.px = b)) : (c = b));
            return { width: a, height: c };
        },
        Fe = function (a) {
            return a.valueType ? a.px : a;
        },
        mt = function (a, c, b, d, e) {
            function f(b, a) {
                if (ja(b)) {
                    var c = b[0];
                    b = b[1];
                } else (c = b.x), (b = b.y);
                t(c) && (a.x = c);
                t(b) && (a.y = b);
            }
            var g = { x: 0, y: 0, width: 0, height: 0 },
                h = { x: 0, y: 0 },
                k = { x: 0, y: 0 };
            e = e || [0, 0];
            c.getBbox ? ((g = void 0 !== c.toGlobal ? c.getGlobalBbox() : void 0 !== a.toGlobal ? a.toGlobal(c.getBbox()) : c.getBbox()), O(b) && (h = cj(b, g)), Fb(b) && ((c = b(g)), f(c, g))) : (f(c, g), O(b) && (h = cj(b, c)));
            b = d || b;
            O(b) && (k = cj(b, a.getBbox()));
            b = void 0 !== a.toGlobal ? a.globalX : 0;
            d = void 0 !== a.toGlobal ? a.globalY : 0;
            c = void 0 !== a.toGlobal ? a.offsetX : 0;
            a = void 0 !== a.toGlobal ? a.offsetY : 0;
            return { offsetX: t(h.x) ? g.x - b + c + (h.x || 0) - (k.x || 0) + (e[0] || 0) : 0 + (e[0] || 0), offsetY: t(h.y) ? g.y - d + a + (h.y || 0) - (k.y || 0) + (e[1] || 0) : 0 + (e[1] || 0) };
        },
        nt = function (a, c, b) {
            var d = b ? b.globalX : 0;
            b = b ? b.globalY : 0;
            c = "toLocal" === c ? -1 : 1;
            return ja(a) ? [a[0] + d * c, a[1] + b * c, a[2], a[3]] : { x: a.x + d * c, y: a.y + b * c, width: a.width, height: a.height };
        },
        cj = function (a, c) {
            a = a.split("|");
            var b = { left: 0, center: 0.5, right: 1 },
                d = { top: 0, middle: 0.5, bottom: 1 },
                e = (J(c, "width") ? c.width : c[2]) || 0,
                f = (J(c, "height") ? c.height : c[3]) || 0,
                g = {};
            w(a, function (a) {
                t(b[a]) && (g.x = (g.x || 0) + b[a] * e);
                t(d[a]) && (g.y = (g.y || 0) + d[a] * f);
            });
            return g;
        },
        Ff = function (a, c, b) {
            void 0 === c && (c = 0);
            var d = ja(a);
            if (d) {
                var e = G(a, 4),
                    f = e[0],
                    g = e[1],
                    h = e[2];
                e = e[3];
            } else (f = a.x), (g = a.y), (h = a.width), (e = a.height);
            var k = Q(h) || Q(e);
            if (Q(f) || Q(g)) return a;
            a = (c / 2) % 1 || 1;
            c = b ? b.globalX : 0;
            b = b ? b.globalY : 0;
            k || ((h = Ef(h + f, c, a) - Ef(f, c, a)), (e = Ef(e + g, b, a) - Ef(g, b, a)));
            f = Ef(f, c, a);
            g = Ef(g, b, a);
            return d ? (k ? [f, g] : [f, g, h, e]) : k ? { x: f, y: g } : { x: f, y: g, width: h, height: e };
        },
        Ef = function (a, c, b) {
            c = b - ((c + a) % 1);
            0.5 < Math.abs(c) && (c -= 0 < c ? 1 : -1);
            return a + c;
        },
        oC = function (a) {
            function c(e, f) {
                for (var g = 0, h = a[f].length; g < h; g++) {
                    var k = e.slice(0);
                    k.push(a[f][g]);
                    f === d ? b.push(k) : c(k, f + 1);
                }
            }
            var b = [],
                d = a.length - 1;
            c([], 0);
            return b;
        },
        Ge = { left: 0, top: 0, center: 0.5, middle: 0.5, right: 1, bottom: 1 },
        ly = { x: "userX", y: "userY", width: "width", height: "height" },
        ot = "fontFamily fontStyle fontWeight fontSize whiteSpace strategy textOverflow".split(" "),
        td = {};
    w("variant visibility cellSpacing cellPadding pixelCorrection preserveStartSpaces title".split(" "), function (a) {
        td[a] = gy;
    });
    w(["margin", "padding"], function (a) {
        td[a] = my;
    });
    w("maxWidth maxHeight fitWidth fitHeight ignoreCategories orientation autoWrap suspend xContentAlignment yContentAlignment xAlignment yAlignment".split(" "), function (a) {
        td[a] = ji;
    });
    w(ot, function (a) {
        td[a] = iy;
    });
    w(["width", "height", "x", "y", "strokeWidth"], function (a) {
        td[a] = ky;
    });
    w(["offsetX", "offsetY"], function (a) {
        td[a] = hy;
    });
    w(["maxWidth", "maxHeight", "fitWidth", "fitHeight"], function (a) {
        td[a] = jy;
    });
    var dj = (function () {
            function a(a, b) {
                this.widths = [];
                this.heights = [];
                this.lefts = [];
                this.rights = [];
                this.bottoms = [];
                this.tops = [];
                a = this.rectangles = a;
                this.scoreDirection = b;
                for (var c = 0, e = this.rectangles.length; c < e; c++)
                    (b = a[c]), this.lefts.push(b.x), this.tops.push(b.y), this.rights.push(b.x + b.width), this.widths.push(b.width), this.heights.push(b.height), this.bottoms.push(b.y + b.height);
                this.minX = Math.min.apply(null, this.lefts);
                this.minY = Math.min.apply(null, this.tops);
                this.maxX = Math.max.apply(null, this.rights);
                this.maxY = Math.max.apply(null, this.bottoms);
                this.minWidth = Math.min.apply(null, this.widths);
                this.minHeight = Math.min.apply(null, this.heights);
                this.maxWidth = this.maxX - this.minX;
                this.maxHeight = this.maxY - this.minY;
            }
            a.prototype.getScore = function (a, b) {
                var c = 0,
                    e = [];
                if (a === De.xy && b) {
                    var f = (c = 0);
                    for (a = 0; a < b[0]; a++) {
                        for (var g = 0, h = 0; h < b[1]; h++) {
                            var k = this.widths[a * b[1] + h],
                                l = this.heights[a * b[1] + h];
                            g += k;
                            e.push(k * l);
                        }
                        c = g > c ? g : c;
                    }
                    for (h = 0; h < b[1]; h++) {
                        for (a = g = 0; a < b[0]; a++) g += this.heights[a * b[1] + h];
                        f = g > f ? g : f;
                    }
                    c *= f;
                } else for (b = (a = a === De.y) ? this.widths : this.heights, f = a ? this.heights : this.widths, h = a ? this.maxWidth : this.maxHeight, a = 0, g = b.length; a < g; a++) e.push(b[a] * f[a]), (c += h * f[a]);
                return { whitespace: 1 - Ta(e) / c, magnitude: c };
            };
            return a;
        })(),
        pC = (function () {
            function a() {}
            a.prototype.compareScores = function (a, b, d) {
                a = this.quantifyScore(a, d);
                b = this.quantifyScore(b, d);
                return a < b ? -1 : a > b ? 1 : 0;
            };
            a.prototype.comparer = function (a) {
                var b = this;
                return function (c, e) {
                    return b.compareScores(c, e, a);
                };
            };
            a.prototype.mergeScores = function (a) {
                for (var b = 0, c = 0, e = 0, f = 0, g = a.length; f < g; f++) {
                    var h = a[f];
                    h.magnitude && ((b += h.whitespace * h.magnitude), c < h.magnitude && (c = h.magnitude), e++);
                }
                return b ? b / (e * c) : 0;
            };
            a.prototype.quantifyScore = function (a, b) {
                return a.whitespace.toFixed(6);
            };
            a.prototype.sort = function (a, b) {
                a.sort(this.comparer(b));
            };
            return a;
        })(),
        pt = /style\s*=\s*["']([^"]*)["']/,
        qt = /([\S_]+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))*.)["']?/g,
        rt = /['"]/g,
        qC = /[\u0590-\u05ff\u0600-\u06ff]/,
        rC = /[-_]([a-z])/,
        sC = /&nbsp;/gm,
        tC = /\s\w+(?=[\s|>])/g,
        st = { disk: "\u25cf\u00a0", circle: "\u25cb\u00a0", square: "\u25a0\u00a0", none: "" },
        uC = ["antialias"],
        Km = function (a) {
            var c = "";
            if (a) {
                var b = a.length;
                if (O(a)) c = a;
                else {
                    if (1 === b && O(a[0].val)) return (a = a[0]), (a.type = "text"), a;
                    if (b) {
                        c = [];
                        for (var d = [], e = 0; e < b; e++) {
                            var f = a[e];
                            "visual" === f.kind || "panel" === f.type ? (d.length && (c.push({ type: "text", val: d.slice(0) }), (d = [])), c.push(f)) : d.push(f);
                        }
                        d.length && c.push({ type: "text", val: d.slice(0) });
                        return 1 === c.length ? c[0] : { type: "stack", val: c };
                    }
                }
            }
            return { type: "text", val: c };
        },
        vC = function (a) {
            a = a.split(";");
            var c = {};
            w(a, function (b) {
                if (b) {
                    var a = b.split(":");
                    2 === a.length && ((b = tt(a[0].trim())), (a = a[1].trim()), (c[b] = a));
                }
            });
            return c;
        },
        Rg = function (a, c) {
            c = c || {};
            c.val = a || "";
            return c;
        },
        Tb = function (a, c, b) {
            return a.substring(c, c + b.length).toLowerCase() === b;
        },
        wC = function (a) {
            var c = [],
                b = [],
                d = [],
                e = Rg(),
                f = {},
                g = [],
                h = [],
                k = 0,
                l = [],
                m = [],
                n = [],
                p = function (b) {
                    if (b) {
                        b = ja(b) ? b : b.split(";");
                        var a = [],
                            c = {};
                        w(b, function (b) {
                            if (b) {
                                var d = b.split(":");
                                1 === d.length && (d = b.split("="));
                                2 === d.length && ((b = d[0].trim()), (b = 0 === b.indexOf("data-") ? b : tt(b)), (d = d[1].trim()), (f[b] = d), a.push(b), (c[b] = d));
                            }
                        });
                        t(c.description) && !t(c.tabindex) && ((f.tabindex = 100), (c.tabindex = 100), a.push("tabindex"));
                        a.length && (g.push(a), (b = h.length) ? h.push(W(h[b - 1], c)) : h.push(c));
                    } else g.push([]), h.push([]);
                },
                q = function () {
                    var b = g.pop();
                    h.pop();
                    b &&
                        (w(b, function (b) {
                            delete f[b];
                        }),
                        (b = h.length) && L(f, h[b - 1]));
                },
                r = function () {
                    e && "" !== e.val && b.push(e);
                    var a = l[l.length - 1];
                    if (l.length && a > k) {
                        var d = c[c.length - 1];
                        d.margin || (d.margin = [0, 0, 0, 0]);
                        d.margin[2] = Math.floor(m[k] / 2);
                    }
                    if (b.length) {
                        d = Km(b);
                        a = l.length ? (k > a ? Math.floor(m[k - 1] / 2) : 0) : 0;
                        var g = Ta(n) || 0,
                            h;
                        if (d.margin) {
                            var p = (h = d.margin);
                            nb(h) ? (p = [h, h, h, h]) : O(h) && ((h = parseInt(h) || 0), (p = [h, h, h, h]));
                            h = p;
                        } else h = [0, 0, 0, 0];
                        h[0] += a;
                        h[3] += g;
                        d.margin = h;
                        l.push(k);
                        c.push(d);
                        b = [];
                        e = Rg("", Oa(f));
                    }
                },
                u = function () {
                    if (e.val)
                        if (e.width && O(e.val)) {
                            var a = { type: "panel", width: e.width };
                            e.verticalAlign && (a.verticalAlign = e.verticalAlign);
                            e.align && (a.xContentAlignment = e.align);
                            e.type = "text";
                            a.val = [Ga(e, ["width", "align", "verticalAlign"])];
                            b.push(a);
                        } else b.push(W(e, f));
                    e = Rg("", Oa(f));
                };
            a = a.replace(sC, String.fromCharCode(160));
            var x = 0,
                v = a.length;
            for (x = 0; x < v; x++) {
                var y = a[x];
                if ("<" === y) {
                    if (Tb(a, x + 1, "br")) {
                        x += Tb(a, x + 3, "/") ? 4 : 3;
                        e.val || b.length || b.push({ val: " " });
                        r();
                        continue;
                    }
                    if (Tb(a, x + 1, "hr")) {
                        x += Tb(a, x + 3, "/") ? 4 : 3;
                        r();
                        c.push({
                            type: "panel",
                            width: "100%",
                            yContentAlignment: "middle",
                            val: [
                                { type: "text", val: " " },
                                { type: "panel", width: "100%", val: [{ type: "icon", d: "M 0 0 L 10 0", width: "100%", height: "1px", stroke: "darkgray", fill: "none" }] },
                            ],
                        });
                        continue;
                    }
                    for (var D = !1, E = 0, F = ut.length; E < F; E++) {
                        var R = ut[E];
                        if (Tb(a, x, R.start)) {
                            x += R.start.length - 1;
                            u();
                            L(f, R.attrs);
                            D = !0;
                            break;
                        } else {
                            for (var z = 0, wa = R.stops.length; z < wa; z++) {
                                var U = R.stops[z];
                                if (Tb(a, x, U)) {
                                    x += U.length - 1;
                                    w(R.attrs, function (b, a) {
                                        return delete f[a];
                                    });
                                    D = !0;
                                    break;
                                }
                            }
                            if (D) break;
                        }
                    }
                    if (D) {
                        u();
                        continue;
                    }
                    E = 0;
                    for (F = vt.length; E < F; E++)
                        if (((R = vt[E]), Tb(a, x + 1, R.start))) {
                            for (F = x += R.start.length + 1; ">" !== a[x]; ) x++;
                            "ul" === R.key && ((E = null), 10 < x - F && (E = (F = a.substring(F, x).match(pt)) ? F[1] : E), p(E), r(), k++, (E = f.listPadding), (E = t(E) ? parseInt(E) : 10), m.push(E), n.push(E));
                            "li" === R.key && ((R = st[f.listStyleType]), b.unshift(A({ type: "text", val: t(R) ? R : st.disk }, f)));
                            D = !0;
                            break;
                        } else {
                            z = 0;
                            for (wa = R.stops.length; z < wa; z++)
                                if (((U = R.stops[z]), Tb(a, x + 1, U))) {
                                    for (x += U.length + 1; ">" !== a[x]; ) x++;
                                    "li" === R.key && r();
                                    "ul" === R.key && (q(), k--, r(), n.pop());
                                    D = !0;
                                    break;
                                }
                            if (D) break;
                        }
                    if (D) {
                        u();
                        continue;
                    }
                    R = function (c, d) {
                        c = wt[c];
                        if (Tb(a, x + 1, c.tag)) {
                            x += c.tag.length;
                            d = "";
                            for (var g = a[x], h = { kind: "visual" }; ">" !== g && x++ < v; ) (g = a[x]), (d += g);
                            g = d.match(qt);
                            w(g, function (b) {
                                b = b.split("=");
                                2 === b.length && (h[b[0]] = b[1].replace(rt, ""));
                            });
                            h.style && (h = L(vC(h.style), h));
                            "chart" === c.tag
                                ? ((c = d.match(tC)) &&
                                      B(c, function (b) {
                                          b = b.trim();
                                          ~uC.indexOf(b) ? (h[b] = !0) : (h.type = b);
                                      }),
                                  (h.type = h.type || "chart"),
                                  (h.isNanoChart = !0))
                                : ((h.type = c.val), (h.fill = h.fill || "black"));
                            e.val && b.push(Oa(e));
                            e = Rg("", Oa(f));
                            h = Sa(h);
                            e.width ? b.push(W(e, { type: "panel", yAlignment: h.verticalAlign, val: [h] })) : b.push(h);
                            D = !0;
                        }
                    };
                    E = 0;
                    for (F = wt.length; E < F; E++) R(E, F);
                    if (D) {
                        u();
                        continue;
                    }
                    if (Tb(a, x + 1, "absolute")) {
                        x += 9;
                        u();
                        d = b.slice(0);
                        b = [];
                        continue;
                    } else if (Tb(a, x + 1, "/absolute")) {
                        x += 10;
                        u();
                        b = d.concat({ type: "panel", val: b });
                        d = [];
                        continue;
                    }
                    if (Tb(a, x + 1, "span")) {
                        x += 5;
                        R = "";
                        for (E = a[x]; ">" !== E && x++ < v; ) (E = a[x]), (R += E);
                        (E = (F = R.match(pt)) ? F[1] : null) ||
                            ((R = R.match(qt)),
                            (E = B(R, function (b) {
                                return b.replace(rt, "");
                            })));
                        p(E);
                        D = !0;
                    } else Tb(a, x + 1, "/span") && ((x += 6), u(), q(), (D = !0));
                    if (D) {
                        e.val && b.push(Oa(e));
                        e = Rg("", Oa(f));
                        continue;
                    }
                }
                e.val += y;
            }
            e.val && b.push(e);
            c.length ? (c.push(Km(b)), (d = { type: "stack:y", val: c })) : (d = Km(b));
            return { value: d, isRtl: !!a.match(qC) };
        },
        ut = [
            { start: "<b>", stops: ["</b>", "<b/>"], attrs: { fontWeight: "bold" } },
            { start: "<strong>", stops: ["</strong>", "<strong/>"], attrs: { fontWeight: "bold" } },
            { start: "<i>", stops: ["</i>", "<i/>"], attrs: { fontStyle: "italic" } },
            { start: "<sup>", stops: ["</sup>", "<sup/>"], attrs: { fontSize: "0.7em", verticalAlign: "sup" } },
            { start: "<sub>", stops: ["</sub>", "<sub/>"], attrs: { fontSize: "0.7em", verticalAlign: "sub" } },
        ],
        wt = [
            { tag: "icon", val: "icon" },
            { tag: "img", val: "image" },
            { tag: "chart", val: "nanoChart" },
        ],
        vt = [
            { start: "ul", stops: ["/ul", "ul/"], key: "ul" },
            { start: "li", stops: ["/li", "<li/"], key: "li" },
        ],
        tt = function (a) {
            return 0 < a.indexOf("-")
                ? a.replace(rC, function (a) {
                      return a[1].toUpperCase();
                  })
                : a;
        },
        xC = function (a, c) {
            function b(b) {
                for (var c = 0, f = 0, g, h, k = 0, l = [], m = 0, n = 0, p = e.length; n < p; n++) {
                    var q = e[n];
                    if ((h = q.length)) {
                        h = d(q, 0 === n, p === h);
                        g = h.width;
                        for (h = h.height; g > b; ) {
                            var r;
                            a: {
                                for (var u = (r = q.length); 2 < u; u--) {
                                    var v = q[u - 1],
                                        x = q[u - 2],
                                        y = q[u - 3];
                                    if (2 < r && (y.isSpace ? !v.isSpace : x.isSpace)) {
                                        r = 2 + r - u;
                                        break a;
                                    }
                                }
                                r = 0;
                            }
                            if (!r) break;
                            g = n;
                            void 0 === r && (r = 1);
                            for (u = 0; u < r; u++) (v = e[g].pop()), e[g + 1].unshift(v);
                            g = d(q, 0 == n).width;
                        }
                        l.push({ x: 0, y: m, width: g, height: h, info: { itemCount: q.length } });
                        m += h;
                        f = f < g ? g : f;
                        c = c < g || !c ? g : c;
                        k++;
                    }
                }
                b = e;
                n = [];
                p = 0;
                for (q = b.length; p < q; p++) n.push(yg(b[p]));
                return { lines: n, linesUsed: k, width: f, height: m, maxLineWidth: c || g, score: new dj(l).getScore(De.y), parts: a };
            }
            function d(b, a, c) {
                void 0 === c && (c = !1);
                for (var d = 0, e = 0, f = 0, g = b.length; f < g; f++) {
                    var h = b[f],
                        k = h.width,
                        l = h.height;
                    e = e > l ? e : l;
                    if (!h.isSpace || ((f != g - 1 || c) && (0 < f || a))) d += k;
                }
                return { height: e, width: d };
            }
            var e = [],
                f = c.step;
            f = void 0 === f ? 0.1 : f;
            var g = c.width;
            g = void 0 === g ? 0 : g;
            var h = c.height;
            h = void 0 === h ? 0 : h;
            c = c.wrapText;
            c = void 0 === c ? !0 : c;
            for (var k = f, l, m = [], n = 0, p = a.length; n < p; n++) {
                for (var q = a[n], r = q.metrics, u = q.parts, x = [], v = 0, y = u.length; v < y; v++) {
                    var t = u[v],
                        E = t.width;
                    t = -1 < t.text.indexOf(q.delimiter.text);
                    e.push([]);
                    var F = { width: E, isSpace: t };
                    r && r.height && (F.height = r.height);
                    x.push(F);
                    t || (l && !(l > E)) || (l = E);
                    k += E;
                }
                e[0] = e[0].concat(x);
            }
            for (g && (k = g); k >= l + f; ) {
                g = b(k);
                if (g.maxLineWidth > k) break;
                (!h || g.height <= h) && m.push(g);
                if (!c && m.length) break;
                k = g.maxLineWidth - f;
            }
            m.length || m.push(b(l));
            return m;
        },
        Hd = { space: /(\s)/, variants: /&ore;|&ors;/g, startSpaces: /^ +/g, spaces: / +/g, quotes: /'|"/g, fontSize: /^[\d\.]+(px|pt|em)?$/ },
        Xq = {
            169: "copy",
            174: "reg",
            160: "nbsp",
            8482: "trade",
            34: "quot",
            38: "amp",
            60: "lt",
            62: "gt",
            176: "deg",
            8364: "euro",
            185: "sup1",
            178: "sup2",
            179: "sup3",
            188: "frac14",
            189: "frac12",
            190: "frac34",
            177: "plusmn",
            180: "acute",
            183: "middot",
        },
        Vq = { ore: "&ore;", ors: "&ors;", orc: "&orc;", or: "&||;" },
        yC = fa("x y width height rotate opacity fill stroke offsetX offsetY".split(" ")),
        Lm = fa(["animation", "transition"]),
        zC = { initialize: !1, reposition: !0, destroy: !0, animatable: yC },
        AC = (function () {
            function a(a) {
                this._li = a;
                this.scope = Dd();
            }
            a.prototype.attr = function (a) {
                var b = this._li;
                if (O(a)) return this._li.attr(a);
                b.updateAttrs(a, !0);
                b.root.refresh();
            };
            a.prototype.attrEnd = function (a) {
                return this.attr(a);
            };
            a.prototype.normalize = function (a) {
                return a;
            };
            a.prototype.parse = function (a, b) {
                return b;
            };
            return a;
        })(),
        BC = (function () {
            function a(a, b) {
                this._visual = a;
                this._options = { auto: !1, mode: "simple", behaviour: L({}, zC) };
                this._renderer = a.renderer;
                var c = L({}, this._renderer.defaultOptions().transition);
                this._attrTransition = new ht(new AC(a), c);
                b && this.options(b);
            }
            a.prototype.options = function (a) {
                a &&
                    (J(a, "auto") && (this._options.auto = a.auto || !1),
                    J(a, "mode") && (this._options.mode = a.mode || "simple"),
                    a.behaviour && L(this._options.behaviour, a.behaviour),
                    a.animation && this._attrTransition.options({ animation: a.animation }));
            };
            a.prototype.applyAttrs = function (a, b) {
                var c = this._visual,
                    e = a.transition,
                    f = !1;
                !1 === e ? ((e = { auto: !1 }), (f = !0)) : "auto" === e && ((e = { auto: !0 }), (f = !0));
                e && yc(["auto", "mode", "behaviour"], e) && (this.options(e), (e = f ? null : Ga(a.transition, ["auto", "mode", "animation", "behaviour"])), ub(e) && ((e = null), delete a.transition));
                if (this._renderer.disableAnimation || (!a.animation && !e && !this._options.auto)) c.updateAttrs(Hb(a, Lm), b);
                else if (!ub(a)) {
                    var g = "simple" === this._options.mode;
                    if (c.isPatched || g)
                        if (((f = this._options.behaviour.animatable), g)) t(a.animation) || e || !Ln(f, a) || ((a.transition = null), (a.animation = this._attrTransition.getAnimationOptions())), c.updateAttrs(a, b);
                        else {
                            if (!e) {
                                e = Na({}, a, f);
                                g = Hb(a, f);
                                if (ub(e)) {
                                    c.updateAttrs(Hb(a, Lm), b);
                                    return;
                                }
                                b = Na({}, c.attrs, f);
                                a.animation && (e.animation = a.animation);
                                e = { start: g, middle: { from: b, to: e } };
                            }
                            this._attrTransition.options(e);
                        }
                    else c.updateAttrs(a, b);
                }
            };
            a.prototype.applyPatch = function (a) {
                var b = this._visual,
                    c = this._options;
                this._renderer.disableAnimation || !c.auto || !c.behaviour.initialize || b.isPatched
                    ? b.applyPatch(a)
                    : "layout" === c.mode
                    ? (b.applyPatch(a), this.layoutInitializeTransition())
                    : ((a.transition = this.getSimpleInitializeTransition()), b.applyPatch(a));
            };
            a.prototype.applyDestroy = function () {
                var a = this._visual,
                    b = this._options;
                !this._renderer.disableAnimation && b.auto && b.behaviour.destroy ? ("simple" === b.mode ? a.updateAttrs({ transition: this.getSimpleDestroyTransition() }, !0) : this.layoutDestroy()) : a.applyDestroy();
            };
            a.prototype.applyAdd = function (a, b) {
                var c = this._visual,
                    e = this._options;
                !this._renderer.disableAnimation && e.auto && c.isPatched && e.behaviour.reposition ? ("simple" === e.mode ? this.simpleAdd(a) : this.layoutAdd(a)) : c.applyAdd(a, b);
            };
            a.prototype.getSimpleInitializeTransition = function () {
                var a = this._visual.getBbox(),
                    b = 0 === a.x && 0 === a.y ? null : { translate: [a.x, a.y], scale: [1], val: "translate(" + a.x + ", " + a.y + ")" };
                return {
                    start: { transform: { translate: [a.x + a.width / 2, a.y + a.height / 2], scale: [0], val: "translate(" + (a.x + a.width / 2) + ", " + (a.y + a.height / 2) + ") scale(0)" } },
                    middle: { to: { transform: b } },
                    end: { transform: b },
                };
            };
            a.prototype.getSimpleDestroyTransition = function () {
                var a = this._visual,
                    b = a.getBbox();
                return {
                    middle: {
                        from: { transform: a.el.data.transform },
                        to: {
                            animation: {
                                final: function () {
                                    var b = a.root;
                                    a.applyDestroy();
                                    b.refresh();
                                },
                            },
                            transform: { translate: [b.x + b.width / 2, b.y + b.height / 2], scale: [0], val: "translate(" + (b.x + b.width / 2) + ", " + (b.y + b.height / 2) + ") scale(0)" },
                        },
                    },
                };
            };
            a.prototype.layoutInitializeTransition = function () {
                this._attrTransition.finishAnimation();
                var a = this._visual,
                    b = a.root,
                    d = a.getBbox(),
                    e = a.getGlobalBbox(),
                    f = e.width,
                    g = a.layout.panel({ width: 0, height: 0, x: d.x, y: d.y }).applyAdd(a.parent),
                    h = a.layout.panel().add();
                a.updateAttrs({ scale: 0 }, !0).applyAdd(h);
                b.refresh();
                h.refresh();
                this._attrTransition.options({
                    middle: {
                        from: { width: 0, height: 0 },
                        to: {
                            animation: {
                                final: function () {
                                    a.updateAttrs({ scale: 1 }, !0).applyAdd(g.parent);
                                    g.applyDestroy();
                                    h.applyDestroy();
                                    a.refresh();
                                },
                                onFrame: function (c, d) {
                                    g.updateAttrs(d);
                                    b.refresh();
                                    c = g.getGlobalBbox();
                                    a.applyPatch({ translate: [c.x, c.y], scale: [c.width / f] });
                                },
                            },
                            width: e.width,
                            height: e.height,
                        },
                    },
                });
            };
            a.prototype.layoutDestroy = function () {
                this._attrTransition.finishAnimation();
                var a = this._visual,
                    b = a.getBbox(),
                    d = a.getGlobalBbox(),
                    e = d.width,
                    f = a.root,
                    g = a.layout.panel({ width: b.width, height: b.height, x: b.x, y: b.y }).applyAdd(a.parent),
                    h = a.layout.panel().add();
                a.updateAttrs(d, !0).applyAdd(h);
                f.refresh();
                h.refresh();
                this._attrTransition.options({
                    middle: {
                        from: { width: b.width, height: b.height },
                        to: {
                            animation: {
                                final: function () {
                                    g.applyDestroy();
                                    a.applyDestroy();
                                    h.applyDestroy();
                                    f.refresh();
                                },
                                onFrame: function (b, c) {
                                    g.updateAttrs(c);
                                    f.refresh();
                                    b = g.getGlobalBbox();
                                    a.applyPatch({ translate: [b.x, b.y], scale: [b.width / e] });
                                },
                            },
                            width: 0,
                            height: 0,
                        },
                    },
                });
            };
            a.prototype.simpleAdd = function (a) {
                this._attrTransition.finishAnimation();
                this._visual.el.finishAnimation();
                var b = this._visual,
                    c = b.getBbox(),
                    e = b.getGlobalBbox(),
                    f = b.layout.panel().add(),
                    g = b.layout.panel({ width: c.width, height: c.height }).add(a);
                b.updateAttrs(e, !0).applyAdd(f);
                g.refresh();
                f.refresh();
                var h = g.getGlobalBbox();
                this._attrTransition.options({
                    middle: {
                        to: {
                            animation: {
                                final: function () {
                                    var c = g.getBbox();
                                    g.applyDestroy();
                                    b.applyAdd(a);
                                    b.updateAttrs(c, !0);
                                    f.applyDestroy();
                                    g.refresh();
                                    b.refresh();
                                },
                                onFrame: function (a, c, d) {
                                    b.applyPatch({ translate: [d(e.x, h.x, a), d(e.y, h.y, a)] });
                                },
                            },
                        },
                    },
                });
            };
            a.prototype.layoutAdd = function (a) {
                this._attrTransition.finishAnimation();
                var b = this._visual,
                    c = b.getGlobalBbox(),
                    e = b.getBbox(),
                    f = b.layout.panel({ width: 0, height: 0, x: e.x, y: e.y }).applyAdd(a),
                    g = b.layout.panel(b.getBbox()).applyAdd(b.parent),
                    h = a.root,
                    k = g.root,
                    l = b.layout.panel().add();
                b.updateAttrs(c, !0).applyAdd(l);
                h.refresh();
                h !== k && k.refresh();
                l.refresh();
                var m = e.width,
                    n = e.height,
                    p = c.x,
                    q = c.y;
                this._attrTransition.options({
                    middle: {
                        to: {
                            animation: {
                                final: function () {
                                    b.updateAttrs(e, !0).applyAdd(a);
                                    f.applyDestroy();
                                    g.applyDestroy();
                                    h.refresh();
                                    h !== k && k.refresh();
                                    l.applyDestroy();
                                    b.refresh();
                                },
                                onFrame: function (a, c, d) {
                                    f.updateAttrs({ width: d(0, m, a), height: d(0, n, a) });
                                    g.updateAttrs({ width: d(m, 0, a), height: d(n, 0, a) });
                                    h.refresh();
                                    h !== k && k.refresh();
                                    c = f.getGlobalBbox();
                                    b.applyPatch({ translate: [d(p, c.x, a), d(q, c.y, a)] });
                                },
                            },
                        },
                    },
                });
            };
            return a;
        })(),
        CC = fa(["setSize", "finalSize", "renderSize", "pixelCorrection"]),
        DC = function (a) {
            return a.px;
        },
        Mm = {},
        EC = fa(["translate", "rotate"]);
    w(["width", "height", "x", "y"], function (a) {
        return (Mm[a] = DC);
    });
    var Lc;
    (function (a) {
        a[(a.WriteIfChanged = 0)] = "WriteIfChanged";
        a[(a.ReadOnly = 1)] = "ReadOnly";
        a[(a.WriteOnly = 2)] = "WriteOnly";
    })(Lc || (Lc = {}));
    var Gf = (function () {
            function a(a, b) {
                this.layout = a;
                this.forcePixelCorrection = !1;
                this.init();
                this.applyConfig(b);
            }
            a.prototype.init = function () {
                this.combinations = [];
                this.events = {};
                this.subscriptions = [];
                this.attrs = {};
                this._awaitHandlers = [];
                this.autoWrap = "auto";
                this.renderer = this.layout.renderer;
                this.root = this;
                this.margin = rf(0);
                this.isPatched = !1;
                this.offsetY = this.offsetX = this.globalY = this.globalX = 0;
                this.wasAdded = !1;
                this.pixelCorrection = this.layout.pixelCorrection;
                this.state = { needPatching: !0, needRecalculation: !0, needAttachPatching: !0, needDestroy: !1, destroyed: !1 };
                this._availableAttrs = this.availableAttributes();
            };
            a.prototype.updateSize = function (a, b) {};
            a.prototype.val = function (a) {
                return this;
            };
            a.prototype.calculateMargin = function () {
                return this.margin;
            };
            a.prototype.arrToBox = function (a) {
                return { x: a[0], y: a[1], width: a[2], height: a[3] };
            };
            a.prototype.getBbox = function (a) {
                return this.arrToBox(this.getBboxArray(a));
            };
            a.prototype.getGlobalBbox = function () {
                return this.arrToBox(this.getGlobalBboxArray());
            };
            a.prototype.getBboxArray = function (a, b) {
                return this.bboxArrayBased(ic(this.x), ic(this.y), a, b);
            };
            a.prototype.getGlobalBboxArray = function (a) {
                return this.bboxArrayBased(this.globalX, this.globalY, !1, a);
            };
            a.prototype.bboxArrayBased = function (a, b, d, e) {
                return [
                    a + (d ? this.offsetX : 0) - (e ? ic(this.margin.left) : 0),
                    b + (d ? this.offsetY : 0) - (e ? ic(this.margin.top) : 0),
                    ic(this.width) + (e ? ic(this.margin.horizontal) : 0),
                    ic(this.height) + (e ? ic(this.margin.vertical) : 0),
                ];
            };
            a.prototype.setSize = function (a) {
                this.suspend ||
                    (this.setSizeValue("width", a.width, this.maxWidth),
                    this.setSizeValue("height", a.height, this.maxHeight),
                    this.setSizeValue("x", a.x),
                    this.setSizeValue("y", a.y),
                    this.needPatch(!0),
                    this.finalSizeCalled(),
                    this.triggerEvent("setSize"));
            };
            a.prototype.getTypeEvents = function () {
                return CC;
            };
            a.prototype.setSizeValue = function (a, b, d) {
                var c = this[a],
                    f = !c || c.isMutable;
                nb(b) && c && !Ee(c) ? (this[a].px = t(d) && b > d ? d : b) : t(b) && f && (this[a] = Qa(b));
            };
            a.prototype.handleEvent = function (a, b, d, e) {
                if (t(b) && (b = this.getEventByName(b, "un" !== a))) return b[a](b instanceof xm ? this.wrapEventCallback(d) : d, e);
            };
            a.prototype.getEventByName = function (a, b) {
                !this.events[a] && b && (J(this.getTypeEvents(), a) ? (this.events[a] = new rd()) : this.subscribeDomEvents(a));
                return this.events[a];
            };
            a.prototype.subscribeDomEvents = function (a) {
                throw Error("Methods doesn't implemented");
            };
            a.prototype.triggerEvent = function (a) {
                (a = this.events[a]) && a.trigger(this.getBbox());
            };
            a.prototype.on = function (a, b, d) {
                (a = this.handleEvent(d ? "onDefer" : "on", a, b, d)) && this.subscriptions.push(a);
                return this;
            };
            a.prototype.un = function (a, b) {
                this.handleEvent("un", a, b);
                return this;
            };
            a.prototype.isRelative = function () {
                return (this.width && "px" !== this.width.valueType) || (this.height && "px" !== this.height.valueType);
            };
            a.prototype.add = function (a, b) {
                return !this.wasAdded || (a && a !== this.parent) ? (this.transitionAnimator ? (this.transitionAnimator.applyAdd(a, b), this) : this.applyAdd(a, b)) : this;
            };
            a.prototype.await = function (a) {
                this.root._awaitHandlers.push(a);
                return this;
            };
            a.prototype.applyAdd = function (a, b) {
                return this.insert({ parent: a, position: b });
            };
            a.prototype.alignTo = function (a, b, d, e) {
                return this.attr(mt(this, a, b, d, e));
            };
            a.prototype.alignIn = function (a, b, d) {
                this.insert({ parent: a });
                a = {};
                var c = this.getBbox();
                if (O(b)) {
                    var f = ty(b);
                    f.x && (a.xAlignment = f.x);
                    f.y && (a.yAlignment = f.y);
                    this.attr(a);
                }
                b = d || b;
                O(b) && ((b = cj(b, c)), (a.offsetX = 0 - b.x), (a.offsetY = 0 - b.y));
                return this.attr(a);
            };
            a.prototype.insertFirst = function (a) {
                return this.insert({ parent: a, position: 0 });
            };
            a.prototype.insert = function (a) {
                var b = a.parent;
                a = a.position;
                Q(b) && (b = this.parent);
                b &&
                    b !== this.parent &&
                    (this.parent && ((this.forcePixelCorrection = !0), this.parent.removeChild(this), this.updateAttrs({ offsetX: 0, offsetY: 0 })),
                    b === this.layout ? ((this.parent = b = null), this.notifyParentChanged()) : (0 === a ? b.prependChild : b.appendChild).call(b, this, a) && ((this.parent = b), this.notifyParentChanged()));
                this.parent || this.layout.addChild(this);
                this.wasAdded = !0;
                this.setRenewComplete(!b || this.parent.wasAdded);
                return this;
            };
            a.prototype.refresh = function (a) {
                if (this.parent) return this.root.refresh(a), this;
                this.wasAdded || this.add();
                this.setRenewComplete(!0);
                this.applyRefresh(a);
                !a && this.endRefresh();
                return this;
            };
            a.prototype.applyRefresh = function (a) {
                this.parent || (this.update(), a || this.layout.destroyChildren());
                a || this.patch();
            };
            a.prototype.endRefresh = function () {
                this._awaitHandlers.length &&
                    (w(this._awaitHandlers, function (a) {
                        return a();
                    }),
                    (this._awaitHandlers = []));
                this.triggerEvent("renderSize");
            };
            a.prototype.updateGlobalCoordinates = function () {
                this.setGlobalCoordinates();
            };
            a.prototype.needPatch = function (a) {
                this.state.needPatching = !0;
            };
            a.prototype.setGlobalCoordinates = function (a) {
                var b = this.parent,
                    c = this.x.px + (b ? b.globalX : 0) + (this.offsetX || 0);
                b = this.y.px + (b ? b.globalY : 0) + (this.offsetY || 0);
                if (this.globalX !== c || this.globalY !== b || a) (this.globalX = c), (this.globalY = b), this.triggerEvent("pixelCorrection");
            };
            a.prototype.collectAttrs = function (a) {
                return this.attrs;
            };
            a.prototype.correctPixelValues = function (a, b) {
                a.rotate && 1 === (Math.abs(a.rotate[0]) / 90) % 2 && (a.rotate[0] += 0.1);
            };
            a.prototype.patch = function () {
                var a = this.state,
                    b = this.collectAttrs();
                if (!a.destroyed && a.needPatching && this.isComplete())
                    if (a.needDestroy) this.patchDestroy();
                    else {
                        this.pixelCorrection && this.correctPixelValues(b, this.parent);
                        a = this.parentChanged;
                        var d = this.cached(b, Lc.ReadOnly),
                            e = ub(d);
                        this._transition && (e && ((d = {}), (e = !1)), (d.transition = this._transition), (this._transition = null));
                        e && !a
                            ? this.emptyPatch()
                            : (t(this._animation) && !e && ((d.animation = this._animation), Na(d, b, ec), (this._animation = void 0)), this.transitionAnimator ? this.transitionAnimator.applyPatch(d) : this.applyPatch(d));
                    }
            };
            a.prototype.emptyPatch = function () {
                this.state.needPatching = !1;
                this.isPatched = !0;
            };
            a.prototype.applyPatch = function (a) {
                this.applyPatchState(a);
            };
            a.prototype.applyPatchState = function (a) {
                this.cached(a, Lc.WriteOnly);
                this.state.needPatching = !1;
                this.isPatched = !0;
            };
            a.prototype.parentAttrsChanged = function (a) {};
            a.prototype.sharedAttrsUpdated = function (a) {};
            a.prototype.fillProperties = function (a) {
                var b = this,
                    c = {},
                    e;
                Da(a, function (d) {
                    var f = a[d];
                    if (J(td, d) && t(f)) {
                        var h = td[d](b, d, f);
                        h && (L(c, h), (e = e || {}), (e[d] = f));
                    }
                });
                c.updateSharedAttrs && this.sharedAttrsUpdated(e);
                c.needRecalc && this.setRenewComplete();
                c.updateGlobalCoordinates && this.updateGlobalCoordinates();
                t(a.animation) && (this._animation = a.animation);
                a.transition && (this._transition = a.transition);
            };
            a.prototype.addEvent = function (a) {
                this.events[a] = new rd();
            };
            a.prototype.cached = function (a, b, d, e, f) {
                void 0 === b && (b = Lc.WriteIfChanged);
                void 0 === d && (d = "_cache_");
                void 0 === e && (e = this);
                var c = J(e, d);
                a = Sc({}, a, Lm);
                var h = c ? e[d] : a;
                return c ? (b === Lc.WriteOnly ? (L(h, a), {}) : (b = Lj(h, a, EC, b === Lc.ReadOnly, f)) ? b : null) : ((e[d] = h), L({}, h));
            };
            a.prototype.notifyParentChanged = function () {
                this.updateRoot();
            };
            a.prototype.updateRoot = function () {
                var a = this.parent ? this.parent.root : this,
                    b = this.root;
                a !== b && (0 < b._awaitHandlers.length && ((a._awaitHandlers = a._awaitHandlers.concat(b._awaitHandlers)), b.parent && (b._awaitHandlers = [])), (this.root = a));
            };
            a.prototype.availableAttributes = function () {
                return null;
            };
            a.prototype.defaultConfig = function () {
                return null;
            };
            a.prototype.applyConfig = function (a) {
                var b = !a,
                    c = this.defaultConfig();
                b && null === c ? (this.config = {}) : (b && (a = {}), (this.config = this.extendDefault(c || {}, a)), this.checkForAttrAnimation(Uq(this.config)));
            };
            a.prototype.extendDefault = function (a, b) {
                return L(a, b);
            };
            a.prototype.checkForAttrAnimation = function (a, b) {
                if (this.transitionAnimator || J(a, "animation") || J(a, "transition")) return this.transitionAnimator || (this.transitionAnimator = new BC(this)), this.transitionAnimator.applyAttrs(a, b), this;
                this.updateAttrs(a, b);
            };
            a.prototype.updateAttrs = function (a, b) {
                this.applyAttrs(a);
                b && this.isPatched && this.needPatch();
                return this;
            };
            a.prototype.applyAttrs = function (a) {
                this.fillProperties(a);
                var b = this.attrs,
                    c = this._availableAttrs;
                if (c) {
                    for (var e in a) if (Object.hasOwnProperty.call(c, e) || 0 === e.indexOf("data-")) b[e] = a[e];
                    a = b;
                } else a = L(b, a);
                this.attrs = a;
            };
            a.prototype.setRenewComplete = function (a) {
                var b = this.state,
                    c = b.needRecalculation;
                if (a || !c) !this.parent || (!a && c) ? (b.needRecalculation = !0) : ((b.needRecalculation = !0), this.parent.setRenewComplete(a));
            };
            a.prototype.updateCombinations = function () {
                this.state.needRecalculation && this.isComplete() && ((this.combinations = this.composeCombinations()), (this.state.needRecalculation = !1), (this.variant = null));
            };
            a.prototype.attr = function (a, b) {
                if (O(a)) {
                    if (Q(b)) return J(this, a) ? ((b = this[a]), J(Mm, a) ? Mm[a](b) : b) : this.attrs[a];
                    var c = a;
                    a = {};
                    a[c] = b;
                }
                a = Uq(a);
                this.checkForAttrAnimation(a, this.isPatched);
                return this;
            };
            a.prototype.update = function () {
                this.updateCombinations();
                this.updateSize(this.wasAdded && !this.parent ? this.layout.getRootBox() : void 0);
                this.triggerEvent("finalSize");
                return this;
            };
            a.prototype.isComplete = function () {
                return !0;
            };
            a.prototype.composeCombinations = function () {
                return [];
            };
            a.prototype.finalSizeCalled = function () {};
            a.prototype.getContentSize = function () {
                return this.getBbox();
            };
            a.prototype.visible = function (a, b) {
                var c = "none" !== this.attr("display");
                t(a) || (a = !c);
                if (a === c) return this;
                this.attr({ display: a ? null : "none" });
                !0 !== b && (this.suspend = !a);
                this.setRenewComplete(!0);
                return this;
            };
            a.prototype.destroy = function () {
                if (this.transitionAnimator) return this.transitionAnimator.applyDestroy(), this;
                this.applyDestroy();
                return this;
            };
            a.prototype.applyDestroy = function () {
                w(this.subscriptions, function (a) {
                    return a.un();
                });
                this.subscriptions = [];
                this.isPatched = !1;
                this.parent ? (this.parent.removeChild(this), this.layout.needToDestroy(this)) : this.layout.removeChild(this);
                this.state.needDestroy = !0;
                this.state.needPatching = !0;
            };
            a.prototype.patchDestroy = function () {
                this.state.destroyed = !0;
            };
            a.prototype.setDomEventsElement = function (a) {
                for (var b in this.events) this.events[b] instanceof xm && this.events[b].setElement(a);
            };
            a.prototype.toLocal = function (a) {
                return nt(a, "toLocal", this.parent);
            };
            a.prototype.toGlobal = function (a) {
                return nt(a, "toGlobal", this.parent);
            };
            a.prototype.setPreliminarySize = function (a) {
                var b = this.variant ? this.variant.index : 0;
                (this.combinations.length && !a) || this.updateCombinations();
                b >= this.combinations.length && (b = 0);
                this.combinations.length && this.setSize(this.combinations[b].minSize);
                this.parent && this.updateGlobalCoordinates();
                return this;
            };
            a.prototype.externalOn = function (a, b, d) {
                if (a) {
                    var c = this.wrapEventCallback(d),
                        f = function (d) {
                            d = aq(d, a, b);
                            c(d);
                        };
                    a.on(b, f);
                    return {
                        un: function () {
                            a.un(b, f);
                        },
                    };
                }
            };
            a.prototype.wrapEventCallback = function (a) {
                var b = this;
                return t(a)
                    ? function (c) {
                          c.bbox = b.getBbox();
                          var d = (c.pointers = c.pointers
                              ? B(c.pointers, function (a) {
                                    return b.toRelativeXY(a);
                                })
                              : [b.toRelativeXY(c.eventArgs)]);
                          c.x = d[0][0];
                          c.y = d[0][1];
                          a && a(c);
                      }
                    : void 0;
            };
            a.prototype.toRelativeXY = function (a) {
                if (!a) return [0, 0];
                var b = t(a.clientX) ? this.renderer.relativeToRoot(a.clientX - this.globalX, a.clientY - this.globalY) : { x: 0, y: 0 };
                return [b.x, b.y, a.id];
            };
            return a;
        })(),
        Hf = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.init = function () {
                a.prototype.init.call(this);
                this.width = this.width || ld();
                this.height = this.height || ld();
                this.x = this.x || ld();
                this.y = this.y || ld();
            };
            c.prototype.availableAttributes = function () {
                return Ls;
            };
            c.prototype.updateSize = function (b, a) {
                a && (this.variant = a);
                b && this.setSize(b);
                this.setGlobalCoordinates();
                this.updateVisual();
                return this;
            };
            c.prototype.updateVisual = function () {
                this.setPosition(this.x, this.y);
            };
            c.prototype.setPosition = function (b, a) {
                var c = !this.x || this.x.isMutable,
                    d = !this.y || this.y.isMutable;
                this.x = b && c ? b : this.x;
                this.y = a && d ? a : this.y;
            };
            c.prototype.getZeroSize = function (b) {
                var a = ld();
                Ya(b) && (a.valueType = "*");
                return a;
            };
            c.prototype.composeCombinations = function () {
                var b = this,
                    a = function (a) {
                        return tc(a) ? a : b.getZeroSize(a);
                    },
                    c = a(this.width);
                a = a(this.height);
                return [{ score: { whitespace: 0, magnitude: c.px * a.px }, minSize: { width: c, height: a }, index: 0 }];
            };
            c.prototype.patchDestroy = function () {
                a.prototype.patchDestroy.call(this);
                this.el && (this.el.destroy(), delete this.el);
            };
            c.prototype.below = function (b) {
                this.belowItem = b;
                return this.add();
            };
            c.prototype.useMainElementForEvents = function (b) {
                this._useMainElementForEvents = b;
            };
            c.prototype.subscribeDomEvents = function (b) {
                var a = new xm(b),
                    c = this.getLowermostElement();
                this._useMainElementForEvents && (c = this.el);
                a.setElement(c);
                this.events[b] = a;
            };
            c.prototype.getLowermostElement = function () {
                return this.el;
            };
            c.prototype.collectAttrs = function (b) {
                void 0 === b && (b = !1);
                return b ? L(L({}, this.attrs), this.getBbox(!0)) : this.attrs || {};
            };
            c.prototype.getParentGroup = function () {
                return this.parent ? this.parent.getElement() : null;
            };
            c.prototype.notifyParentChanged = function () {
                a.prototype.notifyParentChanged.call(this);
                this.parentChanged = !0;
            };
            c.prototype.applyPatch = function (b) {
                if (!this.el || this.parentChanged) {
                    var c = null != this.el,
                        e = this.getParentGroup();
                    this.el = c ? this.el.attr(b) : this.createElement(b);
                    this.belowItem ? ((c = this.belowItem.getLowermostElement() || this.belowItem.el) ? this.el.addBefore(c) : this.el.add(e)) : this.el.add(e);
                    this.setDomEventsElement(this.el);
                } else this.el.attr(b);
                this.parentChanged = !1;
                a.prototype.applyPatch.call(this, b);
            };
            c.prototype.transition = function (b) {
                this.el && this.el.transition(b);
            };
            return c;
        })(Gf),
        xt = ld(),
        FC = [
            {
                score: { whitespace: 0, magnitude: 0 },
                minSize: { width: xt, height: xt },
                maxlineWidth: 0,
                lineUsed: 1,
                lines: [[{ width: 0, height: 0, isSpace: !1 }]],
                parts: [{ text: "", width: 0, parts: [{ text: "", width: 0 }] }],
                index: 0,
            },
        ],
        GC = fa(["width", "height", "x", "y"]),
        yt = ["val", "textVariants", "verticalAlign"],
        zt = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.preserveStartSpaces = !0;
                b._cachedCombinations = {};
                b.textElements = [];
                b._maxDescent = 0;
                return b;
            }
            K(c, a);
            c.prototype.val = function (b) {
                if (t(b)) {
                    var a = Pa(b),
                        c = a ? b.val || "" : b;
                    this.text !== c && this.attr(a ? b : { val: c });
                    return this;
                }
                return this.text;
            };
            c.prototype.createElement = function (b) {
                return this.renderer.element("text", b);
            };
            c.prototype.getMaxDescent = function () {
                return this._maxDescent;
            };
            c.prototype.updateVisual = function () {
                var b = this,
                    a = this._parentAttributes && this._parentAttributes.textOverflow;
                a = "ellipsis" === (this._textOverflow || a);
                var c = this.variant,
                    f = this.width ? this.width.px : void 0,
                    g = this.height ? this.height.px : void 0,
                    h = this.maxWidth || f,
                    k = this.xAlignment || this.xContentAlignment || "left";
                if (!c) {
                    for (var l = this.combinations, m = l.length, n = 0; n < m; n++) {
                        var p = l[n];
                        if (p && (!f || p.minSize.width.px < f) && (!g || p.minSize.height.px < g)) {
                            c = p;
                            break;
                        }
                    }
                    c || (c = l[m - 1]);
                }
                w(c.parts, function (a) {
                    return a.metrics && (b._maxDescent = Math.max(a.metrics.descent, b._maxDescent));
                });
                this.wrappedLayout = (function (b, a, c) {
                    for (var d = b.lines, e = b.parts, f = b.maxLineWidth, g = [], k = 0, l = 0, m = 0, n = e[m], p = n.parts, q = 0, r = d.length; q < r; q++) {
                        var u = d[q],
                            t = u.length,
                            w = { text: "", x: 0, y: 0, styles: {} },
                            z = 0,
                            A = [],
                            C = 0,
                            H = 0,
                            B = 0,
                            N = 0;
                        if (t) {
                            for (var J = 0; J <= t; J++) {
                                var Ba = h - z;
                                if (!p[k] || J === t) {
                                    var G = n.metrics || { height: 0, descent: 0 },
                                        K = G.height,
                                        I = G.descent;
                                    G = G.leading - G.fontSize;
                                    var O = K - I;
                                    w.text && ((w.styles = n.style || {}), A.push(L({}, w)), (C = C < K ? K : C), (H = H < O ? O : H), (B = B < I ? I : B), (N = N < G ? G : N));
                                    if (J < t) {
                                        for (; n && !(k < n.parts.length); ) (k -= n.parts.length), (n = e[++m]);
                                        p = n.parts;
                                        w = { text: "", x: z, y: 0, styles: {} };
                                    }
                                }
                                if ((K = u[J])) {
                                    G = K.width;
                                    K = !K.isSpace;
                                    if (0 !== J || K || 0 === q) {
                                        I = J !== t - 1;
                                        O = u.length === p.length;
                                        if (K || I || O) z += G;
                                        I = p[k].text;
                                        if (a) {
                                            Ba = I.substring(0, Math.round(I.length * (Ba && G ? Ba / G : 0) - 1) - Math.ceil(n.ellipsis.width / (G / I.length)));
                                            G = K && J === t - 2;
                                            var Q = (O = J === t - 1) ? !1 : !u[J + 1].isSpace;
                                            G = b.width > (h || 0) && ((!G && !O) || Q) ? n.ellipsis.width : 0;
                                            h && 0.01 < z - h + G && (K || J < t - 1) && ((I = Ba + n.ellipsis.text), (k += t - J - 1), (J = t - 1));
                                        }
                                        w.text += I;
                                    }
                                    k++;
                                }
                            }
                            u = 0;
                            for (t = A.length; u < t; u++)
                                (w = A[u]), (J = w.styles && w.styles.verticalAlign), (Ba = n.metrics.fontSize / 2), (w.y = l + ("sup" === J ? N + Ba : "sub" === J ? H + Ba - B : H)), (w.x += Ge[c] * (f - z)), g.push(w);
                            l += C;
                        }
                    }
                    return { parts: g, score: b.score };
                })(c, a, k);
            };
            c.prototype.composeCombinations = function () {
                if (!this.text) return FC;
                var b = Ga(this._ownAttributes, ["x", "y"]),
                    a = W(this.layout.svgStyles, this._parentAttributes),
                    c = W(a, b),
                    f = c.whiteSpace || "normal",
                    g = this.preserveStartSpaces,
                    h = "pre" !== f && "nowrap" !== f && "auto" === this.autoWrap,
                    k = (!this.width || ("*" !== this.width.valueType && this.width.isMutable)) && c.strategy ? c.strategy : "none",
                    l = this.ignoreCategories,
                    m = c.fontFamily,
                    n = c.fontStyle,
                    p = c.fontWeight,
                    q = c.fontSize;
                if (this._cachedCombinations.filter) {
                    var r = this._cachedCombinations,
                        u = r.filter;
                    if (u.whiteSpace === f && u.text === this.text && u.strategy === k && u.fontFamily === m && u.fontStyle === n && u.fontWeight === p && u.fontSize === q) return r.result;
                }
                this._cachedCombinations.filter = { whiteSpace: f, text: this.text, strategy: k, fontFamily: m, fontStyle: n, fontWeight: p, fontSize: q };
                b = { own: c, personal: b, parent: a };
                h = {
                    ignoreCategories: l,
                    preserveSpaces: "pre" === f || "pre-wrap" === f,
                    preserveStartSpaces: g,
                    wrapText: h,
                    wrappingStrategy: k,
                    width: tc(this.width) ? this.width.px : 0,
                    height: tc(this.height) ? this.height.px : 0,
                    maxWidth: this.maxWidth,
                    maxHeight: this.maxHeight,
                };
                k = ny(this.text, b, this.layout.svgStyles, h);
                f = h.width;
                g = h.height;
                h = { wrapText: h.wrapText, strategy: h.wrappingStrategy, width: f, height: g, maxWidth: h.maxWidth, maxHeight: h.maxHeight };
                l = [[]];
                b = 0;
                for (a = k.length; b < a; b++)
                    if (((c = k[b]), (m = c.length))) {
                        m = [];
                        n = 0;
                        for (p = c.length; n < p; n++) {
                            q = Wq(l);
                            r = 0;
                            for (u = l.length; r < u; r++) q[r].push(c[n]);
                            m = m.concat(q);
                        }
                        l = m;
                    } else for (n = 0, p = l.length; n < p; n++) l[n].push(void 0 == m ? c : c[0]);
                k = l;
                l = [];
                b = 0;
                for (a = k.length; b < a; b++) {
                    m = xC(k[b], h);
                    if (h) {
                        var x = void 0;
                        c = void 0;
                        n = m.length;
                        p = h.wrapText;
                        q = h.strategy;
                        r = h.maxWidth;
                        u = h.maxHeight;
                        var v = "none" === q,
                            y = [],
                            D = 0;
                        if (n) {
                            for (var w = 0; w < n; w++) {
                                var F = m[w],
                                    R = F.score;
                                x = x && x !== F.linesUsed;
                                var z = (!t(r) || F.width < r) && (!t(u) || F.height < u);
                                p && z && (v || !c || x || F[q] < c[q] || R.whitespace < c.score.whitespace) && ((D += (v && D) || x ? 1 : 0), (c = y[D] = F));
                                x = F.linesUsed;
                            }
                            y.length || y.push(m[p ? n - 1 : 0]);
                        }
                        c = y;
                    } else c = m;
                    l = l.concat(c);
                }
                h = l;
                k = 0;
                for (l = h.length; k < l; k++) (b = h[k]), (a = g), b && ((b.minSize = { width: Qa(f || b.width), height: Qa(a || b.height) }), delete b.width, delete b.height), (h[k].index = k);
                return (this._cachedCombinations.result = h);
            };
            c.prototype.fillProperties = function (b) {
                b &&
                    (t(b.val) && (this.text !== b.val && this.setRenewComplete(), (this.text = b.val)),
                    t(b.stroke) && (this._strokeAttrs = Na({}, b, Pg)),
                    t(b.textOverflow) && (this._textOverflow = b.textOverflow),
                    a.prototype.fillProperties.call(this, b));
            };
            c.prototype.getLowermostElement = function () {
                return this.textElements[0];
            };
            c.prototype.patchDestroy = function () {
                var b = this.textElements;
                if (b) {
                    for (var c = 0, e = b.length; c < e; c++) b[c] && b[c].destroy();
                    this.textElements = [];
                }
                a.prototype.patchDestroy.call(this);
            };
            c.prototype.availableAttributes = function () {
                return iB;
            };
            c.prototype.collectAttrs = function () {
                var b = a.prototype.collectAttrs.call(this, !0);
                b.translate = { x: b.x, y: b.y };
                return Sc({}, b, GC);
            };
            c.prototype.applyPatch = function (b) {
                var a = this.wrappedLayout || {},
                    c = this.textElements,
                    f = a.parts,
                    g = f ? f.length : 1,
                    h = c.length,
                    k = this.getParentGroup(),
                    l = (this.el || k ? b : W(this.layout.svgStyles, b)) || {},
                    m = !!this.el;
                m || (this.el = this.createElement(l).add(k));
                for (k = 0; k < g; k++) {
                    var n = f ? f[k] : a,
                        p = { text: n.text, x: n.x || 0, y: n.y || 0 };
                    p = W(p, n.styles);
                    this.preserveStartSpaces && (p.style = "white-space: pre");
                    p.x = 0 === p.x ? "0px" : p.x;
                    if (k < h) (n = c[k]), (p = Ga(p, yt)), (p = this.cached(p, Lc.WriteIfChanged, "_cache_", n, !0)) && n.attr(p);
                    else {
                        p = be(Ga(n, ["styles"]), p, fa(yt));
                        n = this.renderer.element("tspan");
                        this.cached(p, Lc.WriteOnly, "_cache_", n);
                        if (!n) return this;
                        n.prev = p;
                        c.push(n);
                        n.add(this.el);
                        n.attr(p);
                    }
                }
                for (k = h - 1; k >= g; k--) c.pop().destroy();
                m && this.el.attr(l);
                this._strokeAttrs && this.el.attr({ strokeAttrs: this._strokeAttrs });
                this.applyPatchState(b);
            };
            c.prototype.sharedAttrsUpdated = function (b) {
                this._ownAttributes = this._ownAttributes || {};
                L(this._ownAttributes, b);
                this.setRenewComplete();
            };
            c.prototype.parentAttrsChanged = function (b) {
                var a = this;
                a._parentAttributes || (a._parentAttributes = {});
                L(a._parentAttributes, b);
                var c = !1;
                Da(b, function (d) {
                    a[d] !== b[d] && (c = !0);
                });
                c && a.setRenewComplete();
            };
            return c;
        })(Hf),
        HC = (function (a) {
            function c(b, c) {
                return (a.call(this, b, c) || this).updateSize();
            }
            K(c, a);
            c.prototype.availableAttributes = function () {
                return gB;
            };
            c.prototype.createElement = function (b) {
                var a = this.renderer.image(b);
                b.width ^ b.height &&
                    ~nm.indexOf("Safari") &&
                    (a.el.onload = function () {
                        var c = a.el.getBBox();
                        !b.width && a.el.setAttribute("width", c.width);
                        !b.height && a.el.setAttribute("height", c.height);
                    });
                return a;
            };
            c.prototype.collectAttrs = function () {
                var b = a.prototype.collectAttrs.call(this, !0);
                return W(b, { src: this.src });
            };
            c.prototype.fillProperties = function (b) {
                b && ((this.src = t(b.src) ? b.src : this.src || ""), a.prototype.fillProperties.call(this, b));
            };
            return c;
        })(Hf),
        IC = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.availableAttributes = function () {
                return Ms;
            };
            c.prototype.collectAttrs = function () {
                var b = a.prototype.collectAttrs.call(this, !0),
                    c = { rx: this.rx, ry: this.ry },
                    e = parseInt(b["stroke-width"]) || 0;
                e && ((c.x = b.x + e / 2), (c.y = b.y + e / 2), (c.width = b.width - e), (c.height = b.height - e));
                return W(b, c);
            };
            c.prototype.fillProperties = function (b) {
                if (b) {
                    var c = t(b.radius) ? b.radius : b.cornerRadius;
                    this.rx = t(b.rx) ? b.rx : t(c) ? c : this.rx || 0;
                    this.ry = t(b.ry) ? b.ry : t(c) ? c : this.ry || 0;
                    J(b, "stroke-width") && (this.strokeWidth = parseInt(b["stroke-width"]) || 0);
                    a.prototype.fillProperties.call(this, b);
                }
            };
            c.prototype.createElement = function (b) {
                return this.renderer.rect(b);
            };
            c.prototype.correctPixelValues = function (b, c) {
                a.prototype.correctPixelValues.call(this, b, c);
                c = Ff(b, this.strokeWidth, c);
                L(b, c);
            };
            return c;
        })(Hf),
        At = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.availableAttributes = function () {
                return fB;
            };
            c.prototype.collectAttrs = function () {
                var b = Ga(a.prototype.collectAttrs.call(this, !0), ["cx", "cy", "r"]);
                L(b, this.getShapeBox());
                return b;
            };
            c.prototype.getShapeBox = function (b) {
                b = b || this.getBbox(!0);
                return {
                    x: this.relativeSize ? (t(this.cx) ? this.cx - this.r : null) : b.x,
                    y: this.relativeSize ? (t(this.cy) ? this.cy - this.r : null) : b.y,
                    width: this.relativeSize ? this.calculateFromRadius(this.r) : b.width,
                    height: this.relativeSize ? this.calculateFromRadius(this.r) : b.height,
                    shapeName: this.mode,
                };
            };
            c.prototype.fillProperties = function (b) {
                b && ((this.mode = b.mode || b.subType || this.mode), Q(this.relativeSize) && this.setSizeType(b), (this.cx = b.cx), (this.cy = b.cy), (this.r = b.r), a.prototype.fillProperties.call(this, b));
            };
            c.prototype.createElement = function (b) {
                return this.renderer.shape(this.mode, b);
            };
            c.prototype.setSizeType = function (b) {
                yc(["x", "y", "width", "height"], b) ? (this.relativeSize = !1) : yc(["cx", "cy", "r"], b) && (this.relativeSize = !0);
            };
            c.prototype.calculateFromRadius = function (b) {
                return t(b) ? 2 * b : null;
            };
            c.prototype.default = function (b, a) {
                return lc(b) ? a : b;
            };
            return c;
        })(Hf),
        Bt = {},
        Ct = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.init = function () {
                a.prototype.init.call(this);
                this.padding = this.padding || rf(0);
            };
            c.prototype.extendDefault = function (b, c) {
                c.name && Q(c.size) && (b.width = b.height = 16);
                return a.prototype.extendDefault.call(this, b, c);
            };
            c.prototype.collectAttrs = function () {
                var b = a.prototype.collectAttrs.call(this);
                this.updateIconState();
                b.d = this._iconD;
                t(this._rotate) && (1 === this._rotate.length && (this._rotate.push(this._iconWidth ? b.x + this._iconWidth / 2 : 0), this._rotate.push(this._iconHeight ? b.y + this._iconHeight / 2 : 0)), (b.rotate = this._rotate));
                return b;
            };
            c.prototype.getFromStoreOrShapes = function (b) {
                var a = this;
                if (b && "none" !== b) {
                    var c, f;
                    return (f = Bt[b])
                        ? f
                        : (c = dc[b])
                        ? (Bt[b] = c(0, 0, 10, 10, { r: 2 }).toString())
                        : xo(
                              b,
                              function (b) {
                                  b.displayCdnWarning && Ma.emit("warning", "dom", "cdnLoad", { container: a.renderer.wrapper.el });
                              },
                              function () {
                                  Ma.emit("warning", "dom", "iconNotFound", { data: [b], container: a.renderer.wrapper.el });
                              }
                          );
                }
            };
            c.prototype.updateIconState = function (b) {
                b = (b && (b.d || b.path)) || this.attrs.d || this.attrs.path;
                var a = this.getShapeBox();
                this.pixelCorrection && (a = Ff(a, 1 === a.height || 1 === a.width ? 1 : 0, this.parent));
                var c = b || (this._icon ? this.getFromStoreOrShapes(this._icon) : null);
                c && ((b = Yp(c, [a.x, a.y, a.width, a.height, this._userSize], this._outerShape, this.padding, !!b)), (this._iconD = b[0]), (this._iconSize = b[1]), (this._iconWidth = b[2]), (this._iconHeight = b[3]));
            };
            c.prototype.val = function (b) {
                t(b) && this.attr(b);
                return this;
            };
            c.prototype.getIconSize = function () {
                this.updateIconState();
                return this._iconSize;
            };
            c.prototype.createElement = function (b) {
                return this.renderer.path(b);
            };
            c.prototype.fillProperties = function (b) {
                if (b) {
                    var c = b.outline,
                        e = b.hatch;
                    this._icon = J(b, "name") ? b.name : this._icon;
                    this._userSize = J(b, "size") ? parseInt(b.size) : this._userSize;
                    this._outerShape = t(b.outerShape) ? Xp(b.outerShape) : this._outerShape;
                    if (b.size || ((b.d || b.path) && !b.width && !b.height)) this.updateIconState(b), (b.width = this._iconWidth), (b.height = this._iconHeight);
                    t(b.rotate) && ((this._rotate = uy(b.rotate)), (b.rotate = void 0));
                    t(c) && (c.color && (b.stroke = c.color), c.width && (b.borderWidth = c.width));
                    t(e) && (e.style && (b.hatchPattern = e.style), e.color && (b.hatch = e.color));
                    a.prototype.fillProperties.call(this, b);
                }
            };
            return c;
        })(At),
        JC = fa(ot),
        KC = fa(["width", "height", "x", "y"]),
        Sg = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.init = function () {
                a.prototype.init.call(this);
                this.childElements = [];
                this.attachedElements = [];
                this.itemsCount = 0;
                this.padding = this.padding || rf(0, this.width ? this.width.px : 0);
                this.stretchSum = { width: 1, height: 1 };
                this.scoring = new pC();
            };
            c.prototype.sameChildren = function (b) {
                b = B(b, function (b) {
                    return b.type;
                }).join();
                if (this.childrenHash === b) return !0;
                this.childrenHash = b;
                return !1;
            };
            c.prototype.val = function (b) {
                if (!b) return this.childElements;
                ja(b) || (b = [b]);
                if (this.sameChildren(b))
                    for (var a = 0, c = b.length; a < c; a++) {
                        var f = b[a];
                        f instanceof Gf && (this.childElements[a].destroy(), f.insert({ parent: this, position: a }));
                        this.childElements[a].val(f.val || f);
                    }
                else
                    for (this.destroyChildren(), this.destroyAttachedElements(), delete this.childrenHash, a = 0, c = b.length; a < c; a++)
                        (f = b[a]), f instanceof Gf || (O(f) && (f = { type: "text", text: f }), ja(f) && (f = { type: "stack", val: f }), f.add || (f = this.layout.item(f))), f.add(this);
                return this;
            };
            c.prototype.addElementToParent = function (b) {
                this.attach(b, { setSize: null });
            };
            c.prototype.attach = function (b, a) {
                a =
                    a && t(a.setSize)
                        ? a.setSize
                        : function (a) {
                              return b.attr({ x: 0, y: 0, width: a.width, height: a.height });
                          };
                this.attachedElements.push({ el: b, domAttached: !1, setSize: a });
                this.state.needAttachPatching = !0;
                this.isPatched && this.patchAttachedElements();
            };
            c.prototype.updateSize = function (b, a) {
                var c = !this.variant || (a && this.variant !== a),
                    d = b && (b.width !== this.width.px || b.height !== this.height.px || b.x !== this.x.px || b.y !== this.y.px);
                d && this.setSize(b);
                this.setGlobalCoordinates();
                this.variant = a || this.variant || this.selectVariant();
                b || this.setSize(this.variant.minSize);
                (c || d) && this.arrange();
                return this;
            };
            c.prototype.calculatePadding = function (b, a) {
                a = this.padding;
                var c = a.right,
                    d = a.top,
                    g = a.bottom,
                    h = function (a) {
                        return "%" === a.valueType ? (a.val * b) / 100 : a.px;
                    };
                return { left: h(a.left), right: h(c), top: h(d), bottom: h(g) };
            };
            c.prototype.getContentSize = function () {
                var b = this.getBbox(),
                    a = this.calculatePadding(b.width, b.height);
                return { width: Math.max(b.width - a.left - a.right, 0), height: Math.max(b.height - a.top - a.bottom, 0), x: b.x + a.left, y: b.y + a.top };
            };
            c.prototype.getStretchingArea = function () {
                var b = this.stretchSum,
                    a = this.getReservedSpace(),
                    c = this.getContentSize();
                return { width: Math.max(c.width - a.width, 0) / (b.width || 1), height: Math.max(c.height - a.height, 0) / (b.height || 1) };
            };
            c.prototype.getReservedSpace = function () {
                return { width: 0, height: 0 };
            };
            c.prototype.selectVariant = function () {
                var b = this.combinations,
                    a = null,
                    c = b.length,
                    f = this.strategy || this.layout.svgStyles.strategy,
                    g = null,
                    h = function (b) {
                        return b && "*" !== b.valueType;
                    };
                if (c) {
                    for (var k = 0; k < c; k++) {
                        var l = b[k],
                            m = l.score,
                            n = this.fitsSize(l.minSize),
                            p = h(this.width),
                            q = h(this.height),
                            r = g && 1 === this.scoring.compareScores(g, m, f);
                        p = !g || (p && q && r);
                        n.width && n.height && p && ((a = l), (g = m));
                    }
                    g = null;
                    if (!a) {
                        for (k = c - 1; 0 <= k; k--) {
                            c = b[k];
                            h = "height" === f ? f : "width";
                            if ((g && g.minSize[h].px < c.minSize[h].px && !a) || (g && a && g.minSize[h].px === a.minSize[h].px)) a = g;
                            g = b[k];
                        }
                        a = a || g;
                    }
                    return a;
                }
            };
            c.prototype.fitsSize = function (b) {
                var a = ic(this.width),
                    c = ic(this.height);
                return { width: !a || 1 > b.width.px - a, height: !c || 1 > b.height.px - c };
            };
            c.prototype.composeCombinations = function () {
                var b = this,
                    a = [],
                    c = this.childElements,
                    f = !c || !c.length,
                    g = this.suspend,
                    h = this.width,
                    k = this.height;
                if (f || g) {
                    a = [];
                    if (g)
                        for (var l = 0; l < c.length; l++) {
                            var m = c[l];
                            m.combinations.length || m.updateCombinations();
                            m = m.combinations;
                            a.push(m.length ? m[0] : null);
                        }
                    c = function (b) {
                        return g || !b || (f && b.isMutable) ? ld() : b;
                    };
                    return [{ components: a, score: { whitespace: 0, magnitude: h && k ? h.px * k.px : 0 }, minSize: { width: c(h), height: c(k) }, index: 0 }];
                }
                h = 1;
                for (l = 0; l < c.length; l++) (m = c[l]), m.combinations.length || m.updateCombinations(), (m = m.combinations.slice()), (k = m.length), (h *= k), k || m.push(null), a.push(m);
                1e3 < h &&
                    (a = B(a, function (a) {
                        a = b.maxWidth ? vy(a, b.maxWidth) : a[0];
                        return [a];
                    }));
                c = this.mixCombinations(a);
                return this.filterCombinations(c);
            };
            c.prototype.mixCombinations = function (b) {
                return this.getCombinations(b);
            };
            c.prototype.getCombinations = function (b, a) {
                a = a || { codes: [], result: [], counter: 0 };
                if (0 < b.length)
                    for (var c = b[0].length, d = 0; d < c; d++) {
                        var g = b.slice(0);
                        a.codes[a.counter] = b[0][d];
                        g.shift();
                        a.counter++;
                        this.getCombinations(g, a);
                    }
                else (b = a.codes.slice(0)), a.result.push(b);
                a.counter--;
                return a.result;
            };
            c.prototype.filterCombinations = function (b) {
                var a = this.width,
                    c = this.height,
                    f = tc(a),
                    g = tc(c),
                    h = "none" === this.autoWrap,
                    k = !f && !g && "golden" === this.autoWrap,
                    l = function (b) {
                        return t(b) ? b : Infinity;
                    },
                    m = l(this.maxWidth);
                l = l(this.maxHeight);
                if (1 === b.length) return (b = this.measure(b[0])), f && (b.minSize.width = Oa(a)), g && (b.minSize.height = Oa(c)), (b.index = 0), [b];
                if (!(f || g || h || k)) {
                    a = [];
                    c = 0;
                    g = f = void 0;
                    for (var n = 0, p = b.length; n < p; n++) {
                        var q = this.measure(b[n]),
                            r = q.minSize;
                        h = m - r.width.px;
                        k = l - r.height.px;
                        var u = Math.max(Math.abs(Math.min(0, h)), Math.abs(Math.min(0, k)));
                        if (0 <= h && 0 <= k) a.push(q), (q.index = c++);
                        else if (!f || Q(g) || g > u) (g = u), (f = q);
                    }
                    !a.length && f && a.push(f);
                    return a;
                }
                var x = null,
                    v = 0,
                    y = b.length - 1;
                n = 0;
                for (p = b.length; n < p; n++) {
                    q = this.measure(b[n]);
                    r = q.minSize;
                    var D = r.width.px;
                    r = r.height.px;
                    var w = D / r,
                        F = !f || q.minSize.width.px <= a.px,
                        R = !g || q.minSize.height.px <= c.px,
                        z = !k || !x || (Math.abs(1.618 - w) < Math.abs(1.618 - v) && 0.1 > q.score.whitespace);
                    if (((D <= m && r <= l) || f || g) && F && R && z && (f && (q.minSize.width = Oa(a)), g && (q.minSize.height = Oa(c)), (u = q), k && ((x = q), (v = w)), f || h || (k && 1.618 > w))) break;
                    n === p - 1 && !u && F && (y = 0);
                }
                b = u || this.measure(b[y]);
                b.index = 0;
                return [b];
            };
            c.prototype.selectClosest = function (b, a, c) {
                function d(b, a, c) {
                    b = b.minSize;
                    a = a.minSize;
                    return c ? Math.abs(b[c].px - a[c].px) : Math.abs(b.width.px - a.width.px) + Math.abs(b.height.px - a.height.px);
                }
                for (var e = b[0], h = e ? d(a, e, c) : null, k = 1, l = b.length; k < l; k++) {
                    var m = b[k];
                    if (null !== m) {
                        var n = d(a, m, c);
                        if (null === h || h > n) (h = n), (e = m);
                    }
                }
                return e;
            };
            c.prototype.applyFitSize = function (b, a) {
                var c = this.fitWidth,
                    d = this.fitHeight,
                    g = 1,
                    h = 1;
                c && c < b && (g = c / b);
                d && d < a && (h = d / a);
                (c || d) && this.attr({ transform: { scale: Math.min(g, h) } });
            };
            c.prototype.arrange = function () {
                var b = this.variant;
                if (b) {
                    var a = this.childElements,
                        c = b.components,
                        f = this.getContentSize(),
                        g = this.width.isMutable ? b.minSize.width : this.width,
                        h = this.height.isMutable ? b.minSize.height : this.height;
                    b = this.calculatePadding(g.px, h.px);
                    if (c)
                        for (this.applyFitSize(g.px, h.px), g = 0, h = a.length; g < h; g++) {
                            var k = a[g],
                                l = c[g],
                                m = k.width,
                                n = k.height;
                            if (l) {
                                var p = k.calculateMargin(),
                                    q = ic(k.userX),
                                    r = ic(k.userY);
                                q = f.width - p.horizontal.px - (q ? q - b.left : 0);
                                r = f.height - p.vertical.px - (r ? r - b.top : 0);
                                m = Cb(m) ? m : l.minSize.width;
                                n = Cb(n) ? n : l.minSize.height;
                                var u = function (b, a) {
                                    return Ya(a) ? b : ib(a) ? (a.val * b) / 100 : a.px;
                                };
                                q = u(q, m);
                                r = u(r, n);
                                m = f.width - q - p.horizontal.px;
                                n = f.height - r - p.vertical.px;
                                m = (Ge[k.xAlignment || this.xContentAlignment] || 0) * (0 < m ? m : 0);
                                n = (Ge[k.yAlignment || this.yContentAlignment] || 0) * (0 < n ? n : 0);
                                k.updateSize({ width: q, height: r, x: k.userX ? k.userX.px : m + b.left + p.left.px, y: k.userY ? k.userY.px : n + b.top + p.top.px }, l);
                            }
                        }
                }
            };
            c.prototype.measure = function (b) {
                for (var a = [], c = 0, f = 0, g = !1, h = !1, k = [], l = this.childElements, m = 0, n = b.length; m < n; m++) {
                    var p = b[m],
                        q = l[m];
                    if (p) {
                        var r = tc(q.width) ? q.width : p.minSize.width,
                            u = tc(q.height) ? q.height : p.minSize.height,
                            x = q.calculateMargin(),
                            v = Cb(q.userX) ? q.userX.px : 0;
                        q = Cb(q.userY) ? q.userY.px : 0;
                        var y = x.horizontal.relative / 100;
                        r = (r.px + v + x.horizontal.absolute) * (1 + y / (1 - y));
                        u = u.px + q + x.vertical.absolute + (x.vertical.relative / 100) * r;
                        x = Ya(p.minSize.width);
                        v = Ya(p.minSize.height);
                        g = g || x;
                        h = h || v;
                        c = r > c ? r : c;
                        f = u > f ? u : f;
                        k.push(p.score);
                        a.push({ x: 0, y: 0, width: p.minSize.width.px, height: p.minSize.height.px });
                    }
                }
                return { components: b, minSize: this.completeSize(Qa(c, { stretch: g }), Qa(f, { stretch: h })), score: { whitespace: this.combineScores(k, a), magnitude: c * f }, index: 0 };
            };
            c.prototype.completeSize = function (b, a) {
                return lt(b, a, { padding: this.padding });
            };
            c.prototype.createElement = function (b) {
                return this.renderer.element("g", b);
            };
            c.prototype.updateRoot = function () {
                a.prototype.updateRoot.call(this);
                w(this.childElements, function (b) {
                    return b.updateRoot();
                });
            };
            c.prototype.updateCombinations = function () {
                w(this.childElements, function (b) {
                    return b.updateCombinations();
                });
                a.prototype.updateCombinations.call(this);
            };
            c.prototype.updateGlobalCoordinates = function () {
                a.prototype.updateGlobalCoordinates.call(this);
                w(this.childElements, function (b) {
                    return b.updateGlobalCoordinates();
                });
            };
            c.prototype.applyDestroy = function () {
                for (var b = this.childElements; b.length; ) b[0].applyDestroy();
                a.prototype.applyDestroy.call(this);
            };
            c.prototype.applyRefresh = function (b) {
                a.prototype.applyRefresh.call(this, b);
                if (this.isPatched && !b) {
                    w(this.childElements, function (b) {
                        return b.applyRefresh();
                    });
                    if ((b = this.el && this.el.data.vals["clip-path"]) && b.isDef) {
                        var c = this.getBbox();
                        b.attr = L(b.attr || {}, { width: c.width, height: c.height });
                        b.updateAttr && b.updateAttr(b);
                    }
                    this.state.needAttachPatching && this.patchAttachedElements();
                }
            };
            c.prototype.applyPatch = function (b) {
                a.prototype.applyPatch.call(this, b);
                this.patchTitle(b);
                b = (b = b && b.translate) && (b.x || b.y);
                (this.forcePixelCorrection || b) && this.pixelCorrection && (this.updateGlobalCoordinates(), this.correctPixelValuesDown());
            };
            c.prototype.correctPixelValuesDown = function () {
                w(this.childElements, function (b) {
                    b.pixelCorrection && b.isPatched && (b.needPatch(), b.patch(), b instanceof c && b.correctPixelValuesDown());
                });
            };
            c.prototype.patchAttachedElements = function () {
                var b = this,
                    a = b.el,
                    c = [];
                w(b.attachedElements, function (b) {
                    b.el.isDestroyed ? c.push(b) : b.domAttached || (b.el.add(a), (b.domAttached = !0));
                });
                c.length &&
                    w(c, function (a) {
                        b.attachedElements.splice(b.attachedElements.indexOf(a), 1);
                    });
                b.state.needAttachPatching = !1;
            };
            c.prototype.destroyAttachedElements = function () {
                w(this.attachedElements, function (b) {
                    return b.el && b.el.destroy();
                });
            };
            c.prototype.patchTitle = function (b) {
                b = this.title;
                var a = this._titleVisual;
                t(b) && (b ? (a || (a = this._titleVisual = this.renderer.element("title").add(this.el)), a.attr({ text: b })) : a && (a.destroy(), (this._titleVisual = null)));
            };
            c.prototype.availableAttributes = function () {
                return Vi;
            };
            c.prototype.collectAttrs = function () {
                var b = a.prototype.collectAttrs.call(this, !0);
                b.translate = { x: b.x, y: b.y };
                J(b, "shadow") && !J(b, "clipPath") && delete b.shadow;
                return Sc({}, b, KC);
            };
            c.prototype.appendChild = function (b, a) {
                return 0 < a ? this.insertChild(b, a) : this.addChild(b, "push");
            };
            c.prototype.prependChild = function (b) {
                return this.addChild(b, "unshift");
            };
            c.prototype.addChild = function (b, a) {
                return this.childElements && 0 > this.childElements.indexOf(b)
                    ? (this.childElements[a](b), (a = this.childElements.length), this.itemsCount < a && (this.itemsCount = a), this._sharedAttributes && b.parentAttrsChanged(this._sharedAttributes), !0)
                    : !1;
            };
            c.prototype.removeChild = function (b) {
                b.parent = null;
                b = this.childElements.indexOf(b);
                0 > b || (this.childElements.splice(b, 1), (this.itemsCount = this.childElements.length), this.setRenewComplete());
            };
            c.prototype.insertChild = function (b, a) {
                var c = this.childElements,
                    d = c.indexOf(b),
                    g = 0 > d;
                g || c.splice(d, 1);
                c.splice(a, 0, b);
                if (g) return (this.itemsCount = c.length), this._sharedAttributes && b.parentAttrsChanged(this._sharedAttributes), !0;
                this.setRenewComplete();
                return !1;
            };
            c.prototype.isNotEmpty = function () {
                return 0 < this.childElements.length;
            };
            c.prototype.clear = function (b) {
                for (var a = this.childElements, c = 0, f = a.length; c < f; c++) {
                    var g = a[c];
                    g && ((g.parent = null), -1 === b.indexOf(g) && g.patchDestroy());
                }
                this.childElements = [];
                this.combinations = [];
                this.variant = null;
                this.itemsCount = 0;
                return this;
            };
            c.prototype.destroyChildren = function () {
                var b = this.childElements;
                if (b) {
                    for (var a = 0, c = b.length; a < c; a++) {
                        var f = b[a];
                        f && ((f.parent = null), f.patchDestroy());
                    }
                    this.childElements = [];
                }
            };
            c.prototype.patchDestroy = function () {
                this.destroyChildren();
                a.prototype.patchDestroy.call(this);
            };
            c.prototype.combineScores = function (b, a) {
                if (!a || 2 > a.length) return b[0].whitespace;
                b = this.scoring.mergeScores(b);
                a = this.scoreCombination(a);
                return (b + a.whitespace) / 2;
            };
            c.prototype.isComplete = function () {
                var b = (0 === this.itemsCount && 0 < this.childElements.length) || this.childElements.length === this.itemsCount,
                    a = 0 === this.itemsCount && (tc(this.width) || tc(this.height));
                return b || a;
            };
            c.prototype.scoreCombination = function (b) {
                return new dj(b).getScore();
            };
            c.prototype.finalSizeCalled = function () {
                if (this.attachedElements) {
                    var b = this.getBbox();
                    w(this.attachedElements, function (a) {
                        a.setSize && a.setSize(b);
                    });
                }
            };
            c.prototype.snap = function (b, a) {
                void 0 === a && (a = 1);
                return Ff(b, a, this);
            };
            c.prototype.getElement = function () {
                return this.el;
            };
            c.prototype.getLowermostElement = function () {
                var b = this.el;
                return b ? b.childNodes[0] : null;
            };
            c.prototype.sharedAttrsUpdated = function (b) {
                var a = (this._sharedAttributes = this._sharedAttributes || {});
                Na(a, b, JC);
                w(this.childElements, function (b) {
                    return b.parentAttrsChanged(a);
                });
            };
            c.prototype.parentAttrsChanged = function (b) {
                var a = this,
                    c;
                Da(b, function (d) {
                    a[d] !== b[d] && ((c = c || {}), (c[d] = b[d]));
                });
                c && ((this._sharedAttributes = c), this.sharedAttrsUpdated(c));
            };
            return c;
        })(Hf),
        Tg = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.init = function () {
                a.prototype.init.call(this);
                this.orientation = "x";
            };
            c.prototype.fillProperties = function (b) {
                b && ((this.orientation = b.subType || b.orientation || this.orientation), a.prototype.fillProperties.call(this, b));
            };
            c.prototype.arrange = function () {
                var b = this.variant;
                if (b) {
                    var a = this.childElements,
                        c = b.components,
                        f = b.extra || {},
                        g = this.getContentSize(),
                        h = this.width.isMutable ? b.minSize.width : this.width,
                        k = this.height.isMutable ? b.minSize.height : this.height;
                    b = this.calculatePadding(h.px, k.px);
                    var l = "y" === this.orientation;
                    this.applyFitSize(h.px, k.px);
                    var m = 0,
                        n = 0,
                        p = 0;
                    h = 0;
                    this.stretchSum = f.stretchSum || this.stretchSum;
                    f = 0;
                    for (k = a.length; f < k; f++) {
                        var q = a[f],
                            r = c[f];
                        if (r) {
                            var u = q.calculateMargin(),
                                x = Cb(q.width) ? q.width : r.minSize.width,
                                v = Cb(q.height) ? q.height : r.minSize.height,
                                y = Ya(x) ? u.horizontal.px : (ib(x) ? (x.val * g.width) / 100 : x.px) + u.horizontal.px,
                                t = Ya(v) ? u.vertical.px : (ib(v) ? (v.val * g.height) / 100 : v.px) + u.vertical.px;
                            q = Ya(x) ? (g.width * x.val) / this.stretchSum.width : y;
                            v = Ya(v) ? (g.height * v.val) / this.stretchSum.height : t;
                            l ? ((m = m > y ? m : y), (n += t), (p = p > q ? p : q), (h += v)) : ((m += y), (n = n > t ? n : t), (p += q), (h = h > v ? h : v));
                        }
                    }
                    var w = 0,
                        F = 0,
                        R = 0,
                        z = 0;
                    m = l ? g.width : oa([0, g.width - m]);
                    n = l ? oa([0, g.height - n]) : g.height;
                    p = oa([0, g.width - p]);
                    h = oa([0, g.height - h]);
                    f = 0;
                    for (k = a.length; f < k; f++)
                        if (((q = a[f]), (r = c[f])))
                            (u = q.calculateMargin()),
                                (x = q.width && !q.width.isMutable ? q.width : r.minSize.width),
                                (v = q.height && !q.height.isMutable ? q.height : r.minSize.height),
                                (y = Ya(x) ? (m * x.val) / this.stretchSum.width : ib(x) ? (x.val * g.width) / 100 : x.px),
                                (t = Ya(v) ? (n * v.val) / this.stretchSum.height : ib(v) ? (v.val * g.height) / 100 : v.px),
                                q.updateSize(
                                    {
                                        width: y,
                                        height: t,
                                        x: w + (Ge[q.xAlignment || this.xContentAlignment] || 0) * (l ? g.width - y - u.horizontal.px : p) + b.left + u.left.px,
                                        y: F + (Ge[q.yAlignment || this.yContentAlignment] || 0) * (l ? h : g.height - t - u.vertical.px) + b.top + u.top.px,
                                    },
                                    r
                                ),
                                l ? ((R = R > y ? R : y), (F = z += t + u.vertical.px)) : ((R += y + u.horizontal.px), (z = z > t ? z : t), (w = R));
                }
            };
            c.prototype.reverse = function () {
                this.childElements.reverse();
                this.state.needRecalculation = !0;
            };
            c.prototype.getReservedSpace = function () {
                var b = this.variant ? { width: this.variant.minSize.width.px, height: this.variant.minSize.height.px } : a.prototype.getReservedSpace.call(this),
                    c = "y" === this.orientation;
                return { width: c ? 0 : b.width, height: c ? b.height : 0 };
            };
            c.prototype.selectClosest = function (b, c) {
                return a.prototype.selectClosest.call(this, b, c, "y" === this.orientation ? "width" : "height");
            };
            c.prototype.measure = function (b) {
                for (var a = [], c = [], f = 0, g = 0, h = 0, k = 0, l = !1, m = !1, n = 0, p = 0, q = 0, r = this.childElements, u = 0, x = b.length; u < x; u++) {
                    var v = b[u],
                        y = r[u];
                    if (v) {
                        var t = v.minSize.width,
                            w = v.minSize.height,
                            F = Cb(y.width) ? y.width : t,
                            R = Cb(y.height) ? y.height : w;
                        y = r[u].calculateMargin();
                        l = l || Ya(F);
                        m = m || Ya(R);
                        c.push(v.score);
                        a.push({ x: 0, y: 0, width: t.px, height: w.px });
                        "x" === this.orientation
                            ? ((f += (ib(F) ? 0 : F.px) + y.horizontal.absolute),
                              (h += (ib(F) ? F.val : 0) + y.horizontal.relative),
                              (v = Math.max(Ee(R) ? R.px : 0, w.px) + y.vertical.absolute),
                              (g = g > v ? g : v),
                              (n += Ya(F) ? F.val : 0))
                            : ((g += (ib(R) ? 0 : R.px) + y.vertical.absolute),
                              (k += (ib(R) ? R.val : 0) + y.vertical.relative),
                              (F = Math.max(Ee(F) ? F.px : 0, t.px) + y.horizontal.absolute),
                              (f = f > F ? f : F),
                              (p += Ya(R) ? R.val : 0));
                        q += y.vertical.relative;
                    }
                }
                f = 100 > h ? (100 * f) / (100 - h) : 0;
                g = (100 * g) / (100 - k) + (q * f) / 100;
                return {
                    components: b,
                    minSize: this.completeSize(Qa(f, { stretch: Cb(this.width) ? !1 : l }), Qa(g, { stretch: Cb(this.height) ? !1 : m })),
                    score: { whitespace: this.combineScores(c, a), magnitude: f * g },
                    extra: { stretchSum: { width: n || 1, height: p || 1 } },
                    index: 0,
                };
            };
            c.prototype.val = function (b) {
                b && b.length && (this.itemsCount = b.length);
                return a.prototype.val.call(this, b);
            };
            c.prototype.scoreCombination = function (b) {
                var a = De[this.orientation || "x"];
                return new dj(b).getScore(a);
            };
            return c;
        })(Sg),
        LC = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.fillProperties = function (b) {
                var c = this,
                    e = t(b.val) ? b.val : b.text,
                    f = b.xAlignment,
                    g = b.yAlignment,
                    h = b.xContentAlignment || f,
                    k = b.yContentAlignment || g;
                !b.xContentAlignment && b.xAlignment && (b.xContentAlignment = f);
                !b.yContentAlignment && b.yAlignment && (b.yContentAlignment = g);
                h &&
                    this.xContentAlignment !== h &&
                    w(this.childElements, function (b) {
                        b.attr({ xContentAlignment: h });
                    });
                k &&
                    this.yContentAlignment !== k &&
                    w(this.childElements, function (b) {
                        b.attr({ yContentAlignment: k });
                    });
                b.width && (b.strategy = b.strategy || "none");
                b.stroke &&
                    ((this._strokeAttrs = Na({}, b, Pg)),
                    w(this.childElements, function (b) {
                        b.attr(c._strokeAttrs);
                    }));
                a.prototype.fillProperties.call(this, b);
                t(e) && this.val(e);
            };
            c.prototype.init = function () {
                a.prototype.init.call(this);
                this.orientation = "y";
            };
            c.prototype.val = function (b) {
                return t(b) ? (O(b) && this._textAttr !== b && ((this._textAttr = b), this.parseTextAndSetTextValue()), this) : this._textAttr;
            };
            c.prototype.setTextSize = function (b) {
                var a = this;
                "text" === b.type && (b.width = b.width || "*");
                ja(b) &&
                    w(b, function (b) {
                        return a.setTextSize(b);
                    });
            };
            c.prototype.collectAttrs = function () {
                var b = a.prototype.collectAttrs.call(this);
                return Hb(b, Pg);
            };
            c.prototype.editLine = function (b) {
                if ("text" === b.type && b.val)
                    if (
                        ja(b.val) &&
                        ea(b.val, function (b) {
                            return b.align;
                        }).length
                    ) {
                        var a = [];
                        w(b.val, function (b) {
                            a.push({ type: "text", val: [b], xAlignment: b.align });
                        });
                        b = L(b, { type: "stack", val: a, width: b.width || "100%" });
                    } else O(b.val) && b.align && (b.xAlignment = b.align);
                if (!this.width.isMutable) {
                    var c = this.textOverflow;
                    !c || ("ellipsis" !== c && "clip" !== c) || this.setTextSize(b);
                }
                var f = this.xContentAlignment || this.xAlignment,
                    g = this.yContentAlignment || this.yAlignment,
                    h = function (b) {
                        f && (b.xAlignment = b.xAlignment || f);
                        g && (b.yAlignment = b.yAlignment || g);
                    };
                if (f || g)
                    ja(b)
                        ? w(b, function (b) {
                              return h(b);
                          })
                        : h(b);
                this._strokeAttrs && L(b, this._strokeAttrs);
                return b;
            };
            c.prototype.canReuse = function (b) {
                if (ja(b.val) || ja(b)) {
                    b = b.val || b;
                    for (var a = 0, c = b.length; a < c; a++) if (!this.canReuse(b[a])) return !1;
                    return !0;
                }
                return "visual" === b.kind || b.align ? !1 : !0;
            };
            c.prototype.destroyElements = function () {
                for (; this.childElements.length; ) this.childElements[0].destroy();
            };
            c.prototype.sameHash = function (b) {
                b = B(b.val || b, function (b) {
                    return b.type;
                }).join();
                if (this._configHash === b) return !0;
                this._configHash = b;
                return !1;
            };
            c.prototype.parseTextAndSetTextValue = function () {
                var b = this._textAttr;
                "" === b && this.destroyElements();
                if (b) {
                    b = wC(b);
                    b.isRtl && ((this.attrs.direction = "rtl"), (this.attrs.textAnchor = "end"));
                    var a = b.value,
                        c = "stack:y" === a.type ? a.val : [a],
                        f = this.childElements.length;
                    b = [];
                    var g = this.sameHash(a);
                    this._recreate = this._recreate || (this._type && a.type && this._type !== a.type) || (a.val && (!this.canReuse(a) || !g)) || a.isNanoChart;
                    this._type = ja(a) ? "array" : a.type;
                    a = 0;
                    for (g = c.length; a < g; a++) {
                        var h = c[a],
                            k = h.length;
                        (ub(h.val) && !k && ub(h.name) && ub(h.src) && ub(h.d) && "visual" !== h.kind) || b.push(this.editLine(h));
                    }
                    var l = B(b, function (b) {
                        return (
                            (b = S(b.val, function (b) {
                                return b.verticalAlign;
                            })) && b.verticalAlign
                        );
                    });
                    if (!this._recreate && 0 < f) {
                        a = 0;
                        for (g = b.length; a < g; a++)
                            a < f ? ((c = b[a]), this.childElements[a].val(c.val && c.val.length && "text" !== c.type ? c.val : c)) : ((h = this.layout.item(b[a]).add(this)), 0 < a && h.attr({ preserveStartSpaces: !1 }));
                        a = f - 1;
                        for (g = b.length; a >= g; a--) this.childElements[a].destroy();
                    } else
                        for (this._recreate = void 0, this.destroyElements(), this.sharedAttrsUpdated(this.attrs), a = 0, g = b.length; a < g; a++)
                            (c = b[a]),
                                (h = void 0),
                                "visual" === c.kind && c.align && (c.xAlignment = c.align),
                                ja(c.val) && (c.yContentAlignment = c.yContentAlignment || l[a] || this.yContentAlignment),
                                (f = this.layout.item(c)) && (h = f.add(this)),
                                0 < a && h && h.attr({ preserveStartSpaces: !1 });
                    w(this.childElements, function (b, a) {
                        if (
                            !l[a] &&
                            b instanceof Tg &&
                            ((a = b.childElements),
                            (b = ea(a, function (b) {
                                return b instanceof Ct;
                            })),
                            b.length)
                        ) {
                            var c = 0;
                            a = ea(a, function (b) {
                                return b instanceof zt;
                            });
                            w(a, function (b) {
                                return (c = Math.max(c, b.update().getMaxDescent()));
                            });
                            w(b, function (b) {
                                var a = b.calculateMargin();
                                a.bottom.val || a.top.val || b.attr({ margin: { top: 0, left: a.left.val, right: a.right.val, bottom: c } });
                            });
                        }
                    });
                }
            };
            return c;
        })(Tg),
        Dt = ["cellSpacing", "cellPadding", "borders"],
        MC = (function (a) {
            function c(b, c) {
                b = a.call(this, b, c) || this;
                b.rowCount = 0;
                b.columnCount = 0;
                b.gridElements = [];
                b.borders = [];
                b.borderElements = [];
                c && c.cellSpacing && b.applyCellSpacing(c.cellSpacing);
                return b;
            }
            K(c, a);
            c.prototype.attr = function (b, c) {
                J(b, "cellSpacing") && this.applyCellSpacing(b.cellSpacing);
                return a.prototype.attr.call(this, b, c);
            };
            c.prototype.applyCellSpacing = function (b) {
                (this.cellSpacing = parseInt(b) || 0) && "number" === typeof this.padding.initial && (this.padding = rf(this.padding.initial + this.cellSpacing / 2));
                var a = rf(this.cellSpacing / 2);
                w(this.childElements, function (b) {
                    b.padding = a;
                });
            };
            c.prototype.isComplete = function () {
                var b = this.childElements;
                b = b ? b.length : 0;
                return 0 < b && b === this.rowCount * this.columnCount;
            };
            c.prototype.arrange = function () {
                var b = this.variant;
                if (b) {
                    this.calculatePadding((this.width.isMutable ? b.minSize.width : this.width).px, (this.height.isMutable ? b.minSize.height : this.height).px);
                    for (var a = this.childElements, c = this.getContentSize(), f = b.components, g = [], h = [], k = [], l = [], m = 0; m < this.rowCount; m++)
                        for (var n = 0; n < this.columnCount; n++) {
                            var p = m * this.columnCount + n,
                                q = f[p],
                                r = a[p];
                            if (q) {
                                var u = q.minSize,
                                    x = function (b, a) {
                                        return ib(b) ? (b.val * a) / 100 : b.px;
                                    };
                                q = x(u.width, c.width);
                                x = x(u.height, c.height);
                                p = r.width && !r.width.isMutable ? r.width : u.width;
                                r = r.height && !r.height.isMutable ? r.height : u.height;
                                g[n] = oa([g[n], Ya(p) ? p.val : 0]);
                                h[m] = oa([h[m], Ya(r) ? r.val : 0]);
                                k[n] = oa([k[n], q]);
                                l[m] = oa([l[m], x]);
                            } else (k[n] = oa([k[n], 0])), (l[m] = oa([l[m], 0])), (g[n] = oa([g[n], 0])), (h[m] = oa([h[m], 0]));
                        }
                    m = [];
                    n = [];
                    g = Ta(g);
                    u = Ta(h);
                    h = [];
                    for (var v = 0; v < this.rowCount; v++)
                        for (var y = 0; y < this.columnCount; y++) {
                            p = v * this.columnCount + y;
                            q = f[p];
                            r = a[p];
                            p = b.minSize;
                            x = c.width - p.width.px + k[y];
                            var t = c.height - p.height.px + l[v];
                            q
                                ? ((p = Cb(r.width) ? r.width : q.minSize.width),
                                  (r = Cb(r.height) ? r.height : q.minSize.height),
                                  (q = Ya(p) ? (x * p.val) / g : ib(p) ? (p.val * c.width) / 100 : p.px),
                                  (x = Ya(r) ? (t * r.val) / u : ib(r) ? (r.val * c.height) / 100 : r.px),
                                  (m[y] = oa([m[y], q])),
                                  (n[v] = oa([n[v], x])),
                                  h.push([q, x]))
                                : ((m[y] = oa([m[y], 0])), (n[v] = oa([n[v], 0])));
                        }
                    c = this.padding.top.px;
                    for (f = 0; f < this.rowCount; f++) {
                        k = n[f];
                        l = this.padding.left.px;
                        for (g = 0; g < this.columnCount; g++)
                            (p = f * this.columnCount + g),
                                (u = m[g]),
                                (r = a[p]),
                                (v = h[this.columnCount * f + g]),
                                (q = u),
                                (x = k),
                                (y = l),
                                (t = c),
                                tc(r.width) && (y += (Ge[r.xAlignment] || 0) * (u - v[0])),
                                tc(r.height) && (t += (Ge[r.yAlignment] || 0) * (k - v[1])),
                                r.updateSize({ width: q, height: x, x: y, y: t }, b.components[p]),
                                (l += u);
                        c += k;
                    }
                }
            };
            c.prototype.refreshBorders = function () {
                for (
                    var b = function (b, c) {
                            c = a.borders[b];
                            if (!c) return "continue";
                            var d = a.childElements[b];
                            b = a.borderElements[b] = a.borderElements[b] || [];
                            for (
                                var e = function (b, a) {
                                        b = Ff([b ? 0 : a ? d.width.px : 0, b ? (a ? d.height.px : 0) : 0, b ? d.width.px : 0, b ? 0 : d.height.px], 1, d);
                                        return "M " + b[0] + " " + b[1] + " l " + b[2] + " " + b[3];
                                    },
                                    f = 0;
                                4 > f;
                                f++
                            )
                                if (c[f]) {
                                    var g = b[f],
                                        h = !(f % 2),
                                        q = 1 === f || 2 === f;
                                    g ? g.attr({ d: e(h, q) }) : ((g = a.renderer.path({ d: e(h, q), strokeWidth: 1, stroke: "gray", fill: "none" })), g.add(d), (b[f] = g));
                                }
                        },
                        a = this,
                        c = 0,
                        f = this.childElements.length;
                    c < f;
                    c++
                )
                    b(c);
            };
            c.prototype.applyPatch = function (b) {
                this.refreshBorders();
                a.prototype.applyPatch.call(this, b);
            };
            c.prototype.getReservedSpace = function () {
                var b = this.variant;
                return b ? { width: b.minSize.width.px, height: b.minSize.height.px } : { width: 0, height: 0 };
            };
            c.prototype.scoreCombination = function (b) {
                return new dj(b).getScore(De.xy, [this.rowCount, this.columnCount]);
            };
            c.prototype.measure = function (b) {
                function a(b, a) {
                    if (b.length !== a.length) return 0;
                    for (var c = [], d = 0; d < b.length; d++) {
                        var e = [b[d]],
                            f = a[d];
                        0 < f && e.push(f / 100);
                        c.push(e);
                    }
                    b = oC(c);
                    for (c = a = 0; c < b.length; c++) {
                        e = d = 0;
                        f = b[c];
                        for (var g = 0; g < f.length; g++) {
                            var h = f[g];
                            1 > h ? (d += h) : (e += h);
                        }
                        a = oa([a, 1 > d ? e / (1 - d) : e]);
                    }
                    return a;
                }
                for (
                    var c = [],
                        f = [],
                        g = { widths: [], heights: [] },
                        h = { widths: [], heights: [] },
                        k = { width: !1, height: !1 },
                        l = function (b) {
                            return ib(b) ? 0 : b.px;
                        },
                        m = function (b) {
                            return ib(b) ? b.val : 0;
                        },
                        n = this.childElements,
                        p = 0;
                    p < this.rowCount;
                    p++
                )
                    for (var q = 0; q < this.columnCount; q++) {
                        var r = p * this.columnCount + q,
                            u = b[r],
                            x = n[r];
                        if (u) {
                            r = u.minSize.width;
                            var v = u.minSize.height,
                                y = Cb(x.width) ? x.width : r;
                            x = Cb(x.height) ? x.height : v;
                            k.width = k.width || Ya(y);
                            k.height = k.height || Ya(x);
                            c.push(u.score);
                            f.push({ x: 0, y: 0, width: r.px, height: v.px });
                            g.widths[q] = oa([g.widths[q] || 0, l(r)]);
                            g.heights[p] = oa([g.heights[p] || 0, l(v)]);
                            h.widths[q] = oa([h.widths[q] || 0, m(r)]);
                            h.heights[p] = oa([h.heights[p] || 0, m(v)]);
                        } else (g.widths[q] = oa([g.widths[q] || 0, 0])), (g.heights[p] = oa([g.heights[p] || 0, 0])), (h.widths[q] = oa([h.widths[q] || 0, 0])), (h.heights[p] = oa([h.heights[p] || 0, 0]));
                    }
                g = (function (b, c, d) {
                    var e = a(b.widths, c.widths);
                    b = a(b.heights, c.heights);
                    return { width: Qa(e, { stretch: d.width }), height: Qa(b, { stretch: d.height }) };
                })(g, h, k);
                return { components: b, score: { whitespace: this.combineScores(c, f), magnitude: g.width.px * g.height.px }, minSize: this.completeSize(g.width, g.height), index: 0 };
            };
            c.prototype.mixCombinations = function (b) {
                for (
                    var a = this.rowCount,
                        c = this.columnCount,
                        f = [],
                        g = b.reduce(function (b, a) {
                            return b.length > a.length ? b : a;
                        }).length,
                        h = 0;
                    h < a;
                    h++
                )
                    for (var k = 0; k < c; k++)
                        for (var l = b[h * c + k], m = l.length - 1, n = g; 0 < n--; ) {
                            var p = ((m * n) / g + 0.5) << 0;
                            f[n] || (f[n] = []);
                            f[n].push(l[p]);
                        }
                return f;
            };
            c.prototype.val = function (b) {
                if (!b) return this.gridElements;
                this.rowCount = b.length;
                this.columnCount = jm(
                    b,
                    function (b, a) {
                        return a.length > b ? a.length : b;
                    },
                    0
                );
                this.clear(Tc(b));
                for (var a = this.cellSpacing / 2 || 0, c = 0; c < this.rowCount; c++)
                    for (var f = 0; f < this.columnCount; f++) {
                        var g = b[c][f] || this.layout.panel({ type: "panel" }),
                            h = this.wrapInnerItem(g, a);
                        this.gridElements.push(g);
                        h.add(this);
                    }
                this.refreshBorders();
                return this;
            };
            c.prototype.wrapInnerItem = function (b, a) {
                if (b.parent) return b.parent;
                a = this.layout.panel({ padding: a });
                "px" !== b.width.valueType && ((a.width = qa(b.width)), "%" === b.width.valueType && (b.width.val = 100));
                "px" !== b.height.valueType && ((a.height = qa(b.height)), "%" === b.height.valueType && (b.height.val = 100));
                "Icon" !== b.constructor.name && ((a.attrs = Hb(b.attrs, Pg)), (b.attrs = {}));
                b.add(a);
                return a;
            };
            c.prototype.clear = function (b) {
                for (var a = this.childElements, c = 0, f = a.length; c < f; c++) {
                    var g = a[c],
                        h = this.gridElements[c];
                    g && ((g.parent = null), g.destroyAttachedElements(), -1 === b.indexOf(h) && g.patchDestroy());
                }
                this.borderElements = [];
                this.gridElements = [];
                this.childElements = [];
                this.combinations = [];
                this.variant = null;
                this.itemsCount = 0;
                return this;
            };
            c.prototype.fillProperties = function (b) {
                if (b) {
                    var c = this.processAttrs(b);
                    a.prototype.fillProperties.call(this, b);
                    c && this.isComplete() && this.setRenewComplete();
                }
            };
            c.prototype.processAttrs = function (b) {
                for (var a = !1, c = Dt.length, f = 0; f < c; f++) {
                    var g = Dt[f],
                        h = b[g];
                    t(h) && ((a = a || this[g] !== h), (this[g] = h), delete b[g]);
                }
                return a;
            };
            return c;
        })(Sg),
        Et = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.availableAttributes = function () {
                return hB;
            };
            c.prototype.defaultConfig = function () {
                var b = this.layout;
                b = b ? C(b.renderer, "errorReporting.chart") : void 0;
                b = (b ? b.boxDefaults() : Cf()).outline;
                return { fill: "white", "border-color": b.color, "border-width": b.width };
            };
            c.prototype.getPaddingOffset = function (b, a) {
                b = b.valueType ? b.px : b;
                var c = a.valueType ? a.px : a;
                a = Yw(b, c, this.shape || {});
                b = 0 === b && 0 === c;
                return { top: a[1] + (b ? 0 : this.strokeWidth), bottom: a[3] + (b ? 0 : this.strokeWidth), left: a[0] + (b ? 0 : this.strokeWidth), right: a[2] + (b ? 0 : this.strokeWidth) };
            };
            c.prototype.fillProperties = function (b) {
                b && (this.processAttrs(b), a.prototype.fillProperties.call(this, b));
            };
            c.prototype.destroyRect = function () {
                this.rect && (delete this._box_cache_, this.rect.destroy(), (this.rect = null));
            };
            c.prototype.patchRect = function () {
                var b = this.strokeWidth,
                    a = this.getBbox(),
                    c = !a.width || !a.height;
                if (!this.childElements.length || c) this.destroyRect();
                else if (a.width === 2 * b && a.height === 2 * b) this.destroyRect();
                else if (
                    ((b = W(this.attrs || {}, {
                        "border-width": this.strokeWidth,
                        stroke: this.stroke,
                        fill: this.fillColor,
                        shadow: this.shadow,
                        width: oa([a.width - b, 0]),
                        height: oa([a.height - b, 0]),
                        x: b / 2,
                        y: b / 2,
                        shape: this.shape,
                    })),
                    this.pixelCorrection && ((a = Ff(b, this.strokeWidth, this)), L(b, a)),
                    (b = Sc({}, b, eB)),
                    (b = this.cached(b, Lc.WriteIfChanged, "_box_cache_")))
                )
                    this.rect ? this.rect.attr(b) : ((this.rect = this.renderer.shape("rectangle", b)), (b = this.firstItem()) ? ((b = this.getLowermostElement() || b.el), this.rect.addBefore(b)) : this.rect.add(this.getElement())),
                        this.rectAttrsApplied({ d: this.rect.attr("d") });
            };
            c.prototype.emptyPatch = function () {
                a.prototype.emptyPatch.call(this);
                this.patchRect();
            };
            c.prototype.applyPatch = function (b) {
                a.prototype.applyPatch.call(this, Sc({}, b, jB));
                this.patchRect();
            };
            c.prototype.patchDestroy = function () {
                this.rect && (this.rect.destroy(), delete this.rect);
                a.prototype.patchDestroy.call(this);
            };
            c.prototype.rectAttrsApplied = function (b) {};
            c.prototype.firstItem = function () {
                return this.childElements && this.childElements.length
                    ? S(this.childElements, function (b) {
                          return b.isPatched;
                      })
                    : null;
            };
            c.prototype.calculatePadding = function (b, a) {
                var c = this.padding;
                b = this.getPaddingOffset(b, a);
                return { left: c.left.px + b.left, right: c.right.px + b.right, top: c.top.px + b.top, bottom: c.bottom.px + b.bottom };
            };
            c.prototype.completeSize = function (b, a) {
                var c = this.padding,
                    d = this.getPaddingOffset(b, a);
                return lt(b, a, { padding: c, offset: d });
            };
            c.prototype.processAttrs = function (b) {
                J(b, "stroke-width") && ((this.strokeWidth = parseInt(b["stroke-width"]) || 0), delete b["stroke-width"]);
                J(b, "stroke") && ((this.stroke = b.stroke), delete b.stroke);
                J(b, "color") && ((this.fillColor = b.color), delete b.color);
                J(b, "fill") && ((this.fillColor = b.fill), delete b.fill);
                J(b, "shadow") && ((this.shadow = b.shadow), delete b.shadow);
                J(b, "shape") && ((this.shape = b.shape), delete b.shape, this.setRenewComplete());
                if (J(b, "radius")) {
                    this.shape = this.shape || {};
                    this.shape.r = b.radius;
                    var a = b.corners && ja(b.corners),
                        c = a ? b.corners : this.shape.corners || [{ type: "round" }, { type: "round" }, { type: "round" }, { type: "round" }];
                    a &&
                        !J(c[0], "type") &&
                        (c = B(c, function (b) {
                            return { type: b };
                        }));
                    this.shape.corners = c;
                    delete b.radius;
                    delete b.corners;
                    this.setRenewComplete();
                }
            };
            return c;
        })(Sg),
        Ft = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.fillProperties = function (b) {
                b && J(b, "text") && (this.textAttr !== b.text && ((this.textAttr = b.text), O(this.textAttr) && (this.textAttr = { val: this.textAttr }), this.createTextAndSetTextValue()), delete b.text);
                a.prototype.fillProperties.call(this, b);
            };
            c.prototype.createTextAndSetTextValue = function () {
                this.textAttr
                    ? this.textVisual
                        ? this.textVisual.attr(this.textAttr)
                        : ((this.textVisual = this.layout.textStack()), (this.textAttr.zIndex = 1), this.textVisual.attr(this.textAttr), this.textVisual.add(this))
                    : this.textVisual && (this.textVisual.destroy(), (this.textVisual = null));
            };
            return c;
        })(Et),
        NC = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.availableAttributes = function () {
                return Vi;
            };
            c.prototype.createElement = function (b) {
                b = this.renderer.element("g", b);
                if (this._innerSvg) {
                    var a = b.el;
                    if (t(a.innerHTML)) return (a.innerHTML = this._innerSvg), b;
                    var c = ba.createElement("div");
                    c.innerHTML = "<svg><g>" + this._innerSvg + "</g></svg>";
                    w(c.childNodes[0].childNodes, function (b) {
                        return a.appendChild(b);
                    });
                }
                return b;
            };
            c.prototype.fillProperties = function (b) {
                b && ((this._innerSvg = b.innerSvg || this._innerSvg), a.prototype.fillProperties.call(this, b));
            };
            return c;
        })(Hf),
        Mc = {},
        Md = {},
        Gt = { strategy: "width", textRendering: "geometricPrecision" },
        Zq = { fontSize: "12px", fontFamily: "tahoma, geneva, sans-serif" };
    Mc.panel = Sg;
    Mc.stack = Tg;
    Mc.grid = MC;
    Mc["stack:text"] = LC;
    Mc["box:text"] = Ft;
    Mc.box = Et;
    Md.icon = Ct;
    Md.image = HC;
    Md.rect = IC;
    Md.shape = At;
    Md.text = zt;
    Md.svgContainer = NC;
    var ki = {},
        Al = (function () {
            function a(a) {
                this.children = [];
                this._needToDestroy = [];
                var b = this;
                a = W(Gt, a);
                b.renderer = ft.create(a);
                b.pixelCorrection = t(a.pixelCorrection) ? a.pixelCorrection : !0;
                b.svgStyles = W({}, Gt);
                b.refreshHandler = ym.onDefer(function (a) {
                    a = b.disableAnimation();
                    b.refreshRootBox();
                    b.refresh();
                    a && b.enableAnimation();
                }, 30);
            }
            a.prototype.refresh = function () {
                this.destroyChildren();
                this.eachChildren(function (a) {
                    return a.refresh();
                });
            };
            a.prototype.refreshRootBox = function () {
                this.rootBox = this.renderer.box();
            };
            a.prototype.getRootBox = function () {
                this.rootBox || this.refreshRootBox();
                return this.rootBox;
            };
            a.prototype.eachChildren = function (a) {
                var b = this,
                    c;
                w(this.children, function (b) {
                    b.parent ? ((c = c || []), c.push(b)) : a(b);
                });
                c &&
                    w(c, function (a) {
                        b.children.splice(b.children.indexOf(a), 1);
                    });
            };
            a.prototype.removeChild = function (a) {
                a = this.children.indexOf(a);
                0 <= a && (this.needToDestroy(this.children[a]), this.children.splice(a, 1));
            };
            a.prototype.addChild = function (a) {
                -1 === this.children.indexOf(a) && this.children.push(a);
            };
            a.prototype.needToDestroy = function (a) {
                this._needToDestroy.push(a);
            };
            a.prototype.destroyChildren = function () {
                1 > this._needToDestroy.length ||
                    (w(this._needToDestroy, function (a) {
                        return a.patch();
                    }),
                    (this._needToDestroy = []));
            };
            a.prototype.destroy = function () {
                this.refreshHandler && this.refreshHandler.un();
                this.renderer.destroy();
            };
            a.prototype.item = function (a) {
                return a ? this.createLayoutItem(qa(a)) : null;
            };
            a.prototype.panel = function (a) {
                a = a || { type: "panel" };
                a = O(a) ? { type: a } : qa(a);
                $q(a);
                var b = Mc[a.type],
                    c = !b && a.type,
                    e = c ? [this.createLayoutItem(a)] : a.val || [];
                b || (delete a.type, delete a.val, (a = W(c ? {} : a, { type: "panel", val: e })));
                return this.createPanel(a);
            };
            a.prototype.box = function (a) {
                a = W({ type: "box" }, a || {});
                !a.mode && a.text && (a.mode = "text");
                a.mode && (a.type = "box:" + a.mode);
                return this.createPanel(a);
            };
            a.prototype.stack = function (a) {
                a = W({ type: "stack" }, a || {});
                return this.createPanel(a);
            };
            a.prototype.stackY = function (a) {
                a = W({ type: "stack:y" }, a || {});
                return this.panel(a);
            };
            a.prototype.text = function (a) {
                void 0 === a && (a = "");
                return this.createVisual({ type: "text", val: a });
            };
            a.prototype.textStack = function (a) {
                void 0 === a && (a = "");
                return this.createPanel({ type: "stack:text", text: a });
            };
            a.prototype.rect = function (a) {
                return this.createVisual(W({ type: "rect" }, a || {}));
            };
            a.prototype.group = function (a) {
                return this.createVisual(W({ type: "group" }, a || {}));
            };
            a.prototype.svgContainer = function (a) {
                return this.createVisual(W({ type: "svgContainer" }, { innerSvg: a }));
            };
            a.prototype.image = function (a) {
                return this.createVisual(W({ type: "image" }, a || {}));
            };
            a.prototype.shape = function (a, b) {
                return this.createVisual(W({ type: "shape", mode: a }, b || {}));
            };
            a.prototype.icon = function (a) {
                return this.createVisual(W({ type: "icon", name: O(a) ? a : null }, a || {}));
            };
            a.prototype.attr = function (a, b) {
                Pa(a) ? Na(this.svgStyles, a, { fontFamily: "", fontSize: "" }) : O(a) && t(b) && this.svgStyles[a] && (this.svgStyles[a] = b);
                a = this.renderer.attr(null, a, b);
                return t(a) ? a : this;
            };
            a.prototype.add = function (a) {
                a && this.attr({ container: a });
                return this;
            };
            a.prototype.button = function (a) {
                return this.createPanel(W({ type: "button" }, a || {}));
            };
            a.prototype.input = function (a) {
                return this.createPanel(W({ type: "input" }, a || {}));
            };
            a.prototype.file = function (a) {
                return this.createPanel(W({ type: "file" }, a || {}));
            };
            a.prototype.color = function (a) {
                return this.createPanel(W({ type: "color" }, a || {}));
            };
            a.prototype.range = function (a) {
                return this.createPanel(W({ type: "range" }, a || {}));
            };
            a.prototype.finishAnimations = function () {
                return Ce.getAnimations().map(function (a) {
                    return a.cancel();
                });
            };
            a.prototype.disableAnimation = function () {
                var a = !1 === this.attr("disableAnimation");
                a && this.attr("disableAnimation", !0);
                return a;
            };
            a.prototype.enableAnimation = function () {
                this.attr("disableAnimation", !1);
            };
            a.prototype.createPanel = function (a) {
                for (var b = Mc[a.type], c = a.val || [], e = [], f = 0, g = c.length; f < g; f++) {
                    var h = c[f];
                    if (h instanceof Array) {
                        e.push([]);
                        for (var k = 0, l = h.length; k < l; k++) {
                            var m = h[k];
                            (m = m instanceof Gf ? m : this.createLayoutItem(m)) && e[f].push(m);
                        }
                    } else (m = h instanceof Gf ? h : this.createLayoutItem(h)) && e.push(m);
                }
                a = new b(this, a);
                e.length && a.val(e);
                return a;
            };
            a.prototype.createVisual = function (a) {
                var b = a.type,
                    c = Md[b];
                if (!c) {
                    if (a.isNanoChart) {
                        a = Object.keys(ke("nanoChartTypes").members);
                        c = b.length;
                        for (var e = 0, f = a.length; e < f; e++) {
                            var g = a[e],
                                h = b,
                                k = g;
                            if (0 === h.length) h = k.length;
                            else if (0 === k.length) h = h.length;
                            else {
                                for (var l = [], m = 0; m <= k.length; m++) l[m] = [m];
                                for (var n = 0; n <= h.length; n++) l[0][n] = n;
                                for (m = 1; m <= k.length; m++) for (n = 1; n <= h.length; n++) l[m][n] = k[m - 1] === h[n - 1] ? l[m - 1][n - 1] : Math.min(l[m - 1][n - 1] + 1, Math.min(l[m][n - 1] + 1, l[m - 1][n] + 1));
                                h = l[k.length][h.length];
                            }
                            if (3 > h && (!p || h < c)) {
                                var p = g;
                                c = h;
                            }
                        }
                        Ma.emit("warning", "layout", p ? "microchartNotFoundSuggestion" : "microchartNotFound", { data: [b, p], container: C(this.renderer, "wrapper.el") });
                    }
                    return null;
                }
                return new c(this, a);
            };
            a.prototype.createLayoutItem = function (a) {
                if (!a.type && !O(a.type)) return null;
                $q(a);
                return Mc[a.type] ? this.createPanel(a) : this.createVisual(a);
            };
            return a;
        })(),
        Fl = (function () {
            function a(a) {
                void 0 === a && (a = {});
                this.schema = a;
                this.lengths = {};
                this.indexes = {};
                this.calculations = {};
                this.uniqTypes = {};
                this.ordered = {};
                this.data = {};
                this.dataFlat = {};
            }
            a.prototype.getKeys = function () {
                for (var a = this.getAllKeys(), b = [], d = 0, e = a.length; d < e; d++) this.data[a[d]].length && b.push(a[d]);
                return b;
            };
            a.prototype.getAllKeys = function () {
                return Object.keys(this.data);
            };
            a.prototype.getKey = function (a) {
                return (a = this.data[a]) ? a.slice() : [];
            };
            a.prototype.getKeyRef = function (a) {
                return this.data[a] || [];
            };
            a.prototype.hasKey = function (a) {
                return this.data[a] && this.data[a].length;
            };
            a.prototype.hasAllKeys = function (a) {
                var b = !0;
                a = "array" === I(a) ? a : a.split(",");
                for (var c = 0, e = a.length; c < e; c++)
                    if (!this.hasKey(a[c])) {
                        b = !1;
                        break;
                    }
                return b;
            };
            a.prototype.hasAnyKeys = function (a) {
                for (var b = 0, c = a.length; b < c; b++) if (this.hasKey(a[b])) return !0;
            };
            a.prototype.getValue = function (a, b) {
                var c;
                return (c = this.data[a]) ? c[b] : void 0;
            };
            a.prototype.setValue = function (a, b, d) {
                this.data[a][b] = d;
            };
            a.prototype.getItem = function (a) {
                for (var b = this.getKeys(), c = {}, e, f = 0, g = b.length; f < g; f++) {
                    var h = b[f];
                    t((e = this.getValue(h, a))) && (c[h] = e);
                }
                return c;
            };
            a.prototype.findValue_i = function (a, b) {
                var c,
                    e,
                    f = this.uniqTypes[a];
                if (f && "date" === f[0]) return this.findValue_iDate(a, b);
                if ((e = this.data[a]) && -1 < (c = e.indexOf(b))) return this.indexes[a][c];
            };
            a.prototype.findValue_iDate = function (a, b) {
                var c = this.data[a];
                b = b.getTime ? b.getTime() : b;
                for (var e = 0, f = c.length; e < f; e++) if (c[e].getTime() === b) return this.indexes[a][e];
            };
            a.prototype.findInterpolatedInfo = function (a, b) {
                var c = this.uniqTypes[a];
                if (c && "date" === c[0]) return this.findInterpolatedInfo_date(a, b);
                a = this.data[a];
                c = 0;
                for (var e = a.length; c < e; c++) {
                    var f = a[c],
                        g = void 0;
                    if (b === f) return { i: c, inter: 0 };
                    if (b >= f && c < e - 1 && b < (g = a[c + 1])) return { i: c, inter: Y(0, 1, f, g, b) };
                }
                return { i: -1, inter: 0 };
            };
            a.prototype.findInterpolatedInfo_date = function (a, b) {
                a = this.data[a];
                var c = I(b);
                b = "string" === c ? Date.parse(b) : "date" === c ? b.getTime() : b;
                c = 0;
                for (var e = a.length; c < e; c++) {
                    var f = a[c].getTime(),
                        g = void 0;
                    if (b === f) return { i: c, inter: 0 };
                    if (b >= f && c < e - 1 && b < (g = a[c + 1].getTime())) return { i: c, inter: Y(0, 1, f, g, b) };
                }
                return { i: -1, inter: 0 };
            };
            a.prototype.max_i = function (a) {
                return (a = this.calculations[a]) ? a.max_i : -1;
            };
            a.prototype.min_i = function (a) {
                return (a = this.calculations[a]) ? a.min_i : -1;
            };
            a.prototype.max = function (a) {
                return (a = this.calculations[a]) ? a.max : void 0;
            };
            a.prototype.min = function (a) {
                return (a = this.calculations[a]) ? a.min : void 0;
            };
            a.prototype.sum = function (a) {
                return (a = this.calculations[a]) ? a.sum : void 0;
            };
            a.prototype.sumAbs = function (a) {
                return (a = this.calculations[a]) ? a.sumAbs : void 0;
            };
            a.prototype.concat = function (a) {
                return this.getKeyRef(a).slice(0);
            };
            a.prototype.indexObject = function (a, b) {
                var c = Object.keys(a);
                this.indexKeys(c, a, b);
            };
            a.prototype.indexKeys = function (a, b, d) {
                for (var c, f = 0, g = a.length; f < g; f++) {
                    var h = a[f],
                        k = this.schema[h] || {},
                        l = b[h];
                    c = this.data[h] = this.data[h] || [];
                    var m = (this.indexes[h] = this.indexes[h] || []);
                    this.lengths[h] = this.lengths[h] + 1 || 1;
                    if (t(b[h]))
                        if (((c[d] = l), m.push(d), "number" === (c = this.addUniqType(h, l)))) this.addCalcValue(h, l, d);
                        else if ("array" === c && k.flatten) for (h = this.dataFlat[h] = this.dataFlat[h] || [], k = 0, c = l.length; k < c; k++) h.push(l[k]);
                        else "date" === c && this.addCalcValue(h, l.getTime(), d);
                }
            };
            a.prototype.sortBy = function (a, b, d) {
                void 0 === b && (b = !0);
                var c = this,
                    f = this.indexes[a],
                    g = !!f,
                    h = d
                        ? function (b) {
                              return d(c.getItem(b));
                          }
                        : (function () {
                              var b = c.data[a];
                              g = b && b.length;
                              return function (a) {
                                  return b[a];
                              };
                          })();
                if (g) {
                    f = f.map(function (b, a) {
                        return { _i: b, val: h(a) };
                    });
                    var k = function (b, a) {
                            return b.val < a.val ? -1 : b.val > a.val ? 1 : 0;
                        },
                        l = function (b, a) {
                            return k(a, b);
                        };
                    f.sort(b ? k : l);
                    return B(f, function (b) {
                        return b._i;
                    });
                }
            };
            a.prototype.sortByNone = function () {
                var a = this,
                    b = 0;
                w(pa(this.data), function (c) {
                    a.data[c].length > b && (b = a.data[c].length);
                });
                var d = [];
                ob(b, function (b) {
                    return d.push(b);
                });
                return d;
            };
            a.prototype.addUniqType = function (a, b) {
                b = I(b);
                a = this.uniqTypes[a] = this.uniqTypes[a] || [];
                0 > a.indexOf(b) && a.push(b);
                return b;
            };
            a.prototype.addCalcValue = function (a, b, d) {
                var c = (this.calculations[a] = this.calculations[a]);
                c ? (b > c.max && ((c.max = b), (c.max_i = d)), b < c.min && ((c.min = b), (c.min_i = d)), (c.sum += b), (c.sumAbs += Vb.abs(b))) : (this.calculations[a] = { min: b, max: b, min_i: d, max_i: d, sum: b, sumAbs: Vb.abs(b) });
            };
            a.prototype.reset = function (a) {
                var b = this;
                a
                    ? this.resetKey(a)
                    : (w(this.getKeys(), function (a) {
                          b.resetKey(a);
                      }),
                      (this.lengths = {}));
            };
            a.prototype.resetKey = function (a) {
                delete this.data[a];
                delete this.indexes[a];
                delete this.calculations[a];
                delete this.uniqTypes[a];
                delete this.lengths[a];
                delete this.ordered[a];
            };
            a.prototype.countDecimals = function (a) {
                var b = this.data[a],
                    c = [0];
                this.dataFlat[a] ? (b = this.dataFlat[a]) : 2 !== a.length || !this.data[a[0]] || ("e" !== a[1] && "s" !== a[1]) || (b = this.data[a[0]]);
                if (b && b.length) {
                    a = 0;
                    for (var e = b.length; a < e; a++) c.push(Yf(b[a]));
                }
                return Math.max.apply(Math, H(c));
            };
            a.prototype.log = function (a) {
                a = Object.keys(this.data);
                w(a, function (b) {});
            };
            return a;
        })(),
        OC = (function () {
            function a(a) {
                this.chart = a;
                this.items = {};
                this.spItems = [];
            }
            a.prototype.getSPItems = function () {
                return this.spItems.slice(0);
            };
            a.prototype.register = function (a) {
                var b = zb(a);
                this.items[b] = a;
                "SmartPalette" === a.kind && this.spItems.push(a);
                return a;
            };
            a.prototype.remove = function (a) {
                if ((a = z(a.id, a.currentOptions.id))) return this.removeById(a);
            };
            a.prototype.exists = function (a) {
                return this.items[a];
            };
            a.prototype.filter = function (a) {
                return ea(this.items, a);
            };
            a.prototype.destroyItem = function (a) {
                var b;
                return (b = this.items[a]) ? (b.destroy && b.destroy(), this.removeById(a), !0) : !1;
            };
            a.prototype.removeById = function (a) {
                var b = this.items,
                    c;
                return (c = b[a]) ? ("SmartPalette" === c.kind && pb(this.spItems, c), delete b[a], !0) : !1;
            };
            return a;
        })(),
        li = {},
        Ht = function () {
            function a(b, a) {
                var c = {};
                if (0 < a.length)
                    if ("string" === I(a)) {
                        c = sf(a, "seriesType,chartType");
                        var d = sf(a, "seriesType,chartType", !0);
                        c.invalid && ((c = {}), (d = {}));
                    } else c = a;
                if (0 < b.length || !c.chartType)
                    if ("string" === I(b))
                        var e = sf(b, "chartType"),
                            f = sf(b, "chartType", !0);
                    else e = b;
                b = id({}, d, f, c, e);
                switch (b.chartType) {
                    case "radar":
                    case "gauge":
                        var g = !0;
                }
                return { dst: c, ct: e, ctdst: b, isPaneType: g };
            }
            function c(b, c) {
                var d = k,
                    e = b.toLowerCase(),
                    g;
                c && (g = f(c)) && ((c = a(k, g)), (d = c.ctdst));
                if ((d.chartType && d.chartType.toLowerCase() === e) || (d.seriesType && d.seriesType.toLowerCase() === e)) return !0;
                if ("calendar" === b || "heatmap" === b || "variwide" === b) return e === d.seriesType;
            }
            function b(b) {
                var c;
                b && b.currentOptions && (b = b.currentOptions);
                return b && (c = f(b)) ? a(k, c) : a(k, "");
            }
            function d(a, c) {
                var d = b(c);
                d = d.ctdst || d;
                if ((c = d[a])) return c.toLowerCase();
                if (!c && "seriesType" === a && "map" === d.chartType) return "map";
            }
            function e(b) {
                var a;
                g.chartType && -1 < "pie,gauge,funnel,cone,pyramid".indexOf(g.chartType) && (a = !0);
                if (a && b) {
                    for (var c = [], d = [], e = 0, f = b.length; e < f; e++) {
                        a = !1;
                        var h = b[e];
                        h.i = e;
                        h.type && sf(h.type, "chartType", "noDef").chartType && (c.push([h]), (a = !0));
                        a || d.push(h);
                    }
                    d.length && c.splice(0, 0, d);
                    return c;
                }
                return a;
            }
            function f(b) {
                var a,
                    d,
                    e,
                    f = b.type;
                c("map") && !f && (a = b.map) && (d = a.type || C(a, "features.0.geometry.type")) && (f = (e = l[d]) ? e : d);
                return f;
            }
            var g = {},
                h = {},
                k,
                l = { LineString: "line", MultiLineString: "line", Polygon: "column", MultiPolygon: "column", Point: "marker", MultiPoint: "marker" };
            return {
                init: function (b) {
                    var c = C(b, "type") || "";
                    b = C(b, "defaultSeries.type") || C(b, "defaultSeries_type") || "";
                    c = a(c, b);
                    g = c.ct || {};
                    h = c.dst || {};
                    k = c.ctdst || {};
                },
                isType: c,
                getIsTypeChecker: function (b) {
                    var c = k,
                        d;
                    b && (d = f(b)) && ((b = a(k, d)), (c = b.ctdst));
                    var e = function (b, a) {
                        return c[b] && c[b].toLowerCase() === a;
                    };
                    return function (b) {
                        var a = b.toLowerCase();
                        if (e("chartType", a) || e("seriesType", a)) return !0;
                        if ("calendar" === b || "heatmap" === b || "variwide" === b) return a === c.seriesType;
                    };
                },
                hasSetting: function (b, c, d) {
                    var e = k,
                        g;
                    d && (g = f(d)) && ((d = a(k, g)), (e = d.ctdst));
                    if ((d = e[b]))
                        if (((d = d.toLowerCase()), "behavior" === b)) {
                            if (-1 < ("," + d + ",").indexOf("," + c.toLowerCase() + ",")) return !0;
                        } else if (d && d === c.toLowerCase()) return !0;
                },
                settingVal: d,
                getSettingChecker: function (a) {
                    var c,
                        d = b(a);
                    d = d.ctdst || d;
                    return function (b) {
                        if ((c = d[b])) return c.toLowerCase();
                        if (!c && "seriesType" === b && "map" === d.chartType) return "map";
                    };
                },
                curCtDst: b,
                mergeSettings: a,
                getPaneGroups: function (b) {
                    var a = [],
                        c = [],
                        d;
                    h.chartType && (d = 1);
                    for (var e = 0, f = b.length; e < f; e++) {
                        var g = !1,
                            k = b[e];
                        k.i = e;
                        if (d || k.type) {
                            var l = d || sf(k.type, "chartType", "noDef");
                            if (d || l.chartType) a.push([k]), (g = !0);
                        }
                        g || c.push(k);
                    }
                    0 < c.length && a.splice(0, 0, c);
                    return B(a, function (b) {
                        var a = B(b, function (b) {
                            return b.id;
                        }).join("");
                        b.hash = a;
                        return b;
                    });
                },
                shouldDataMerge: e,
                dataMergeType: function (b) {
                    if (e())
                        return (
                            (b = S(b, function (b) {
                                return S(b.points, function (b) {
                                    return z(b[1], b.y, 0).length;
                                });
                            })),
                            "gauge" === g.chartType && b ? "collect" : "sum"
                        );
                },
                isMapLayer: function (b) {
                    if (c("map") && ("object" === typeof b.getMapData() || (c("map") && (C(b.userOptions, "mapDataId") || C(b.userPoints, "0.mapDataId"))))) return !0;
                },
                isHoriz: function () {
                    return "horizontal" === d("chartType");
                },
            };
        },
        xy = {
            solid: "",
            dot: "1,3",
            dash: "4,3",
            dashdot: "4,3,1,3",
            dashdotdot: "4,3,1,3,1,3",
            shortdash: "3,1",
            shortdot: "1,1",
            shortdashdot: "3,1,1,1",
            shortdashdotdot: "3,1,1,1,1,1",
            longdash: "8,3",
            longdashdot: "8,3,1,3",
            longdashdotdot: "8,3,1,3,1,3",
        },
        It = function (a) {
            return a;
        },
        PC = function () {
            return [
                { option: "outline.color", check: It, dependent: "outline.width", value: 1 },
                {
                    option: "outline.width",
                    check: function (a) {
                        return 0 < a;
                    },
                    dependent: "boxVisible",
                    value: !0,
                },
                { option: "fill", check: It, dependent: "boxVisible", value: !0, important: !0 },
            ];
        },
        Nm = function (a, c) {
            var b = PC();
            b.push.apply(b, H(c || []));
            w(b, function (b) {
                var c = ja(b.option) ? b.option : [b.option];
                c = S(c, function (c) {
                    return b.check(C(a, c));
                });
                var d = b.important || Q(C(a, b.dependent));
                c && d && Z(a, b.dependent, b.value);
            });
            return a;
        },
        kb = function (a, c, b, d, e) {
            var f;
            Q((f = a[b])) || (c[d || b] = e ? e(f) : f);
        },
        oi = t,
        zy = [10, 5, 4, 2, 1, 0.5],
        Ay = [50, 20, 10, 5, 4, 2, 1],
        fr = { badMin: "min", badMax: "max" },
        Cl = Vb,
        Nd = function (a, c) {
            return {
                val: function (b) {
                    return a(Fg(b.indexedData), c ? b.scCache : b.cache, "max", "min");
                },
                axis: "y",
            };
        },
        Od = function (a, c, b) {
            return {
                val: function (d) {
                    return c(d.pOptions[a], b ? d.scCache : d.cache, a + "Max", a + "Min");
                },
                axis: a,
            };
        },
        bb = function (a, c, b) {
            return {
                val: function (b) {
                    return c(b, a);
                },
                axis: a,
                fStr: b,
            };
        },
        ta = function (a, c) {
            return J(a.cache, c) ? a.cache[c] : a.scCache && a.scCache[c];
        },
        uc = function (a, c, b) {
            a = a.cache["y" === c ? "list" : c + "List"];
            return a.length ? b(a) : "";
        },
        He = function (a) {
            return {
                val: function (c) {
                    return a(c);
                },
                yVal: !0,
            };
        },
        Jt = {
            yaxislabel: function (a) {
                return a.cache.yAxis ? N(a.cache.yAxis.currentOptions, ["label", "text"]) : void 0;
            },
            xaxislabel: function (a) {
                return a.cache.xAxis ? N(a.cache.xAxis.currentOptions, ["label", "text"]) : void 0;
            },
            zaxislabel: function (a) {
                return a.chart.currentOptions.zAxisLabelText || N(a.chart.currentOptions, ["zAxis", "label", "text"]);
            },
            percentoftotal: bb("y", qi),
            ypercentoftotal: bb("y", qi),
            xpercentoftotal: bb("x", qi),
            zpercentoftotal: bb("z", qi),
            icon: function (a) {
                return a.point.getIconTag();
            },
        },
        QC = {
            percentofdatarange: Nd(Jd, !0),
            ypercentofdatarange: Nd(Jd, !0),
            xpercentofdatarange: Od("x", Jd, !0),
            zpercentofdatarange: Od("z", Jd, !0),
            percentofdatamax: Nd(rc, !0),
            ypercentofdatamax: Nd(rc, !0),
            xpercentofdatamax: Od("x", rc, !0),
            zpercentofdatamax: Od("z", rc, !0),
            percentofseriesrange: Nd(Jd),
            ypercentofseriesrange: Nd(Jd),
            xpercentofseriesrange: Od("x", Jd),
            zpercentofseriesrange: Od("z", Jd),
            percentofseriesmax: Nd(rc),
            ypercentofseriesmax: Nd(rc),
            xpercentofseriesmax: Od("x", rc),
            zpercentofseriesmax: Od("z", rc),
            percentofaxisrange: bb("y", Dl),
            ypercentofaxisrange: bb("y", Dl),
            xpercentofaxisrange: bb("x", Dl),
            percentofseries: bb("y", pi),
            ypercentofseries: bb("y", pi),
            xpercentofseries: bb("x", pi),
            zpercentofseries: bb("z", pi),
            percentofgroup: bb("y", ri),
            ypercentofgroup: bb("y", ri),
            xpercentofgroup: bb("x", ri),
            zpercentofgroup: bb("z", ri),
            percentile: bb("y", si, "n0"),
            ypercentile: bb("y", si, "n0"),
            xpercentile: bb("x", si, "n0"),
            zpercentile: bb("z", si, "n0"),
            seriespointcount: function (a) {
                return a.series.userPoints.length;
            },
            seriesname: function (a) {
                return a.sOptions.name;
            },
            parentid: function (a) {
                return a.pOptions.parent || "";
            },
            parentname: function (a) {
                var c = a.pOptions.parent,
                    b = a.chart.chartItemManager.exists(c);
                return (c && b ? b : a.sOptions).name;
            },
            complete: function (a) {
                return z(C(a.pOptions, "complete.y"), C(a.pOptions, "complete"), 0);
            },
            zvalue: function (a) {
                return a.pOptions.z;
            },
            xvalue: function (a) {
                return t(a.pOptions.x) ? (a.fOptions.xIsTime ? new Date(a.pOptions.x) : a.pOptions.x) : a.pOptions.name;
            },
            yvalue: He(function (a) {
                return gr(a);
            }),
            value: He(function (a) {
                return gr(a);
            }),
            ystart: He(function (a) {
                return Eg(a.indexedData) ? a.indexedData.ys : a.indexedData.y;
            }),
            open: He(function (a) {
                return a.pOptions.open;
            }),
            close: He(function (a) {
                return a.pOptions.close;
            }),
            high: He(function (a) {
                return t(a.pOptions.high) ? a.pOptions.high : Eg(a.indexedData) ? a.indexedData.ye : a.indexedData.y;
            }),
            low: He(function (a) {
                return t(a.pOptions.low) ? a.pOptions.low : Eg(a.indexedData) ? a.indexedData.ys : a.indexedData.y;
            }),
            id: function (a) {
                return a.pOptions.id;
            },
            name: function (a) {
                return a.pOptions.name || ("string" === typeof a.pOptions.x ? a.pOptions.x : a.indexedData.name || "");
            },
            color: function (a) {
                return Lb(a.series.getPointAttr(a.point).baseColor, 0);
            },
            yrange: function (a) {
                return Fg(a.indexedData);
            },
            subvaluelist: function (a) {
                return (a = a.pOptions.subvalue) && a.values ? a.values.join(",") : "";
            },
        },
        If = {
            type: function (a) {
                return ta(a, "type");
            },
            maxpointname: function (a) {
                return ta(a, "nMax");
            },
            ymaxpointname: function (a) {
                return ta(a, "nMax");
            },
            xmaxpointname: function (a) {
                return ta(a, "nXMax");
            },
            zmaxpointname: function (a) {
                return ta(a, "nZMax");
            },
            minpointname: function (a) {
                return ta(a, "nMin");
            },
            yminpointname: function (a) {
                return ta(a, "nMin");
            },
            xminpointname: function (a) {
                return ta(a, "nXMin");
            },
            zminpointname: function (a) {
                return ta(a, "nZMin");
            },
            pointcount: function (a) {
                return ta(a, "list").length;
            },
            median: function (a) {
                return uc(a, "y", qh);
            },
            ymedian: function (a) {
                return uc(a, "y", qh);
            },
            xmedian: function (a) {
                return uc(a, "x", qh);
            },
            zmedian: function (a) {
                return uc(a, "z", qh);
            },
            mode: function (a) {
                return uc(a, "y", ph);
            },
            ymode: function (a) {
                return uc(a, "y", ph);
            },
            xmode: function (a) {
                return uc(a, "x", ph);
            },
            zmode: function (a) {
                return uc(a, "z", ph);
            },
            rangesum: function (a) {
                return ta(a, "yRangeSum");
            },
            yrangesum: function (a) {
                return ta(a, "yRangeSum");
            },
            yaverage: function (a) {
                return ta(a, "average");
            },
            average: function (a) {
                return ta(a, "average");
            },
            zaverage: function (a) {
                return ta(a, "zAverage");
            },
            xaverage: function (a) {
                return ta(a, "xAverage");
            },
        },
        Om = {
            lasty: function (a) {
                return uc(a, "y", P);
            },
            lastx: function (a) {
                return uc(a, "x", P);
            },
            lastz: function (a) {
                return uc(a, "z", P);
            },
            name: function (a) {
                return a.series.name;
            },
            value: function (a) {
                return a.cache.sum;
            },
            color: function (a) {
                return a.sOptions.color ? a.sOptions.color : 1 === a.series._points.length ? a.series._points[0].tokenValue("%color") : a.series.info.style.base.color;
            },
            id: function (a) {
                return a.sOptions.id || a.sOptions.options.id;
            },
            ylist: function (a) {
                return a.cache.list ? a.cache.list.join(",") : "";
            },
            xlist: function (a) {
                return a.cache.list ? a.cache.list.join(",") : "";
            },
            zlist: function (a) {
                return a.cache.list ? a.cache.list.join(",") : "";
            },
        },
        Ug = {
            name: function (a) {
                return z(a.item.name, a.cache.name, C(a.cache, "label.text"), "");
            },
            color: function (a) {
                return a.item.color;
            },
            minutes: function (a) {
                return El(a, 6e4);
            },
            hours: function (a) {
                return El(a, 36e5);
            },
            days: function (a) {
                return El(a, 864e5);
            },
        };
    Ib("value,ysum", function (a) {
        return (Ug[a] = function (a) {
            return a.val.pop ? a.val[1] : a.val;
        });
    });
    Ib("min,ymin,xmin", function (a) {
        return (Ug[a] = function (a) {
            var b = a.evaluedValue[0],
                c = a.cache.min,
                e = a.cache.low;
            a = (a = a.cache.value) && (ja(a[0]) ? a[0][0] : a[0]);
            return z(b, c, e, a);
        });
    });
    Ib("max,ymax,xmax", function (a) {
        return (Ug[a] = function (a) {
            var b = a.evaluedValue[1],
                c = a.cache.max,
                e = a.cache.options;
            a = (a = a.cache.value) && (ja(a[0]) ? a[0][1] : a[1]);
            return z(b, c, e, a);
        });
    });
    Ib("range,yrange", function (a) {
        return (Ug[a] = function (a) {
            return a.val.pop ? a.val[1] - a.val[0] : a.val;
        });
    });
    Ib("Sum,Average", function (a) {
        var c = Se(a);
        Ib("Min,Max", function (b) {
            var d = Se(b);
            Ib("y,x,z", function (e) {
                var f = "y" === e;
                f &&
                    (If[d + c] = function (b) {
                        return ta(b, d + a);
                    });
                If[e + d + c] = function (c) {
                    return ta(c, (f ? d : e + b) + a);
                };
            });
        });
    });
    Ib("Sum,Min,Max,Range,Absmax", function (a) {
        return Ib("y,x,z", function (c) {
            var b = Se(a),
                d = "y" === c;
            d &&
                (If[b] = function (a) {
                    return ta(a, b);
                });
            If[c + b] = function (e) {
                return ta(e, d ? b : c + a);
            };
            var e = b + "ofseries";
            d &&
                (Om[e] = function (a) {
                    return a.scCache[b];
                });
            Om[c + e] = function (e) {
                return e.scCache[d ? b : c + a];
            };
        });
    });
    var Gy = L(QC, Jt),
        Hy = L(Om, W(Jt, If)),
        Iy = L(
            {
                title: function (a) {
                    return a.chart.options("title.label.text");
                },
                maxseriesname: function (a) {
                    return ta(a, "snMax");
                },
                ymaxseriesname: function (a) {
                    return ta(a, "snMax");
                },
                xmaxseriesname: function (a) {
                    return ta(a, "snXMax");
                },
                zmaxseriesname: function (a) {
                    return ta(a, "snZMax");
                },
                minseriesname: function (a) {
                    return ta(a, "snMin");
                },
                yminseriesname: function (a) {
                    return ta(a, "snMin");
                },
                xminseriesname: function (a) {
                    return ta(a, "snXMin");
                },
                zminseriesname: function (a) {
                    return ta(a, "snZMin");
                },
                name: function (a) {
                    return ta(a, "name");
                },
                typelist: function (a) {
                    return a.cache.typeList.join(",");
                },
                sumlist: function (a) {
                    return a.cache.sumList.join(",");
                },
                ysumlist: function (a) {
                    return a.cache.sumList.join(",");
                },
                xsumlist: function (a) {
                    return a.cache.xSumList.join(",");
                },
                zsumlist: function (a) {
                    return a.cache.zSumList.join(",");
                },
            },
            If
        ),
        Jy = Ug,
        mr = Ng,
        Gl = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(.\d+)[+-](\d{2}):(\d{2})/g,
        Pb = function (a, c) {
            return function (b) {
                return a[c](b);
            };
        },
        RC = function (a, c) {
            var b = Yb(a);
            a = c([b[0], b[1]]);
            c = c([b[2], b[3]]);
            c = Ze([a[0], a[1], c[0], c[1]]);
            0 > c[2] && ((c[0] -= c[2]), (c[2] = Math.abs(c[2])));
            0 > c[3] && ((c[1] -= c[3]), (c[3] = Math.abs(c[2])));
            return c;
        },
        Py = [3, 2, 3, 2],
        Xy = /(-?[0-9]+),(-?[0-9]+)/,
        Sy = /[\s,]/,
        vr = { top: "t", topright: "r", right: "r", bottomright: "r", bottom: "b", topleft: "l", left: "l", bottomleft: "l" },
        Ty = { topright: "righttop", bottomright: "rightbottom", topleft: "lefttop", bottomleft: "leftbottom" },
        Uy = {
            insidetop: "tctc",
            insidetopright: "trtr",
            insideright: "mrmr",
            insidebottomright: "brbr",
            insidebottom: "bcbc",
            insidetopleft: "tltl",
            insidelefttop: "tltl",
            insiderighttop: "trtr",
            insiderightbottom: "brbr",
            insideleftbottom: "blbl",
            insideleft: "mlml",
            insidebottomleft: "blbl",
            insidecenter: "mcmc",
            insidemiddle: "mcmc",
            top: "bctc",
            topcenter: "bctc",
            righttop: "tltr",
            right: "mlmr",
            middleright: "mlmr",
            rightbottom: "blbr",
            bottom: "tcbc",
            bottomcenter: "tcbc",
            lefttop: "trtl",
            left: "mrml",
            middleleft: "mrml",
            leftbottom: "brbl",
            topright: "brtr",
            bottomright: "trbr",
            topleft: "bltl",
            bottomleft: "tlbl",
            outsidetopright: "bltr",
            outsidebottomright: "tlbr",
            outsidetopleft: "brtl",
            outsidebottomleft: "trbl",
            outsiderighttop: "bltr",
            outsiderightbottom: "tlbr",
            outsidelefttop: "brtl",
            outsideleftbottom: "trbl",
        },
        Vy = { top: 0, bottom: 0, middle: 0, left: 1, right: 1, center: 1 },
        Wy = B(
            (function (a) {
                return (a = ke(a)) ? Object.keys(a.members) : [];
            })("orientation"),
            function (a) {
                return a.toLowerCase();
            }
        ).join("|"),
        Kt = (function () {
            function a(a, b, d) {
                void 0 === d && (d = []);
                this.currentOptions = {};
                this.userOptions = {};
                this.chart = a;
                if (void 0 === b) {
                    var c = 1;
                    b = {};
                }
                b = this.normalizeOptions(b);
                this.userOptions = qa(b);
                C(this.userOptions, "data.length") &&
                    (this.userOptions.data = this.userOptions.data.map(function (b) {
                        return qa(b);
                    }));
                this.renderer = a && (a.renderer || a);
                this.init.apply(this, H(d));
                !c && this.setOptions();
            }
            a.prototype.options = function (a, b) {
                if ("string" === typeof a) return this.optionsGet(a);
                A(this.userOptions, this.normalizeOptions(a));
                this.setOptions();
                return this;
            };
            a.prototype.init = function () {
                for (var a = 0; a < arguments.length; a++);
                this.defaultMutable = !0;
            };
            a.prototype.normalizeOptions = function (a, b) {
                return Sa(a, b);
            };
            a.prototype.optionsGetter = function (a) {
                return xr(this, a);
            };
            a.prototype.optionsGet = function (a) {
                return C(this.currentOptions, a.replace(/_/g, "."));
            };
            a.prototype.defaultOptions = function () {
                return {};
            };
            a.prototype.contextOptions = function () {
                return this.defaultContextOptions;
            };
            a.prototype.dependentOptions = function () {
                return [];
            };
            a.prototype.completeUserOptions = function () {
                return Nm(this.userOptions, this.dependentOptions());
            };
            a.prototype.setOptions = function () {
                var a = [this.defaultOptions()],
                    b = this.contextOptions();
                b && a.push(b);
                a.push(this.completeUserOptions());
                !this.defaultMutable && a.unshift({});
                this.currentOptions = A.apply(null, a);
                return this;
            };
            return a;
        })(),
        Lt = (function (a) {
            function c(b, c, e) {
                void 0 === e && (e = []);
                b = a.call(this, b, c, e) || this;
                b.attribs = {};
                b.events = {};
                b.updateOptions = {};
                b.subscriptions = [];
                return b;
            }
            K(c, a);
            c.prototype.init = function () {
                for (var b = 0; b < arguments.length; b++);
                this.defaultMutable = !0;
            };
            c.prototype.defaultOptions = function () {
                return this.chart ? { animation: this.chart.options("animation") } : {};
            };
            c.prototype.setOptions = function () {
                a.prototype.setOptions.call(this);
                this.setRootVisuals();
                return this;
            };
            c.prototype.options = function (b, a) {
                var c = this.optionsGetter(b);
                if ("NotGetter" !== c) return c;
                A(this.userOptions, this.normalizeOptions(b));
                this.setOptions();
                !1 !== a && this.render(null, a);
                return this;
            };
            c.prototype.normalizeUpdateOpt = function (b, a) {
                "object" === typeof a ? ((b = yf(b)), (a = A(b, Sa(a)))) : (a = b);
                return a;
            };
            c.prototype.afterUpdate = function (b) {
                if (b && b.then) {
                    var a = this;
                    Ce.await(function () {
                        b.then && (b.then.call(a.chart), delete b.then);
                    });
                }
            };
            c.prototype.setRootVisuals = function () {
                this.rootPanel || (this.rootPanel = this.renderer.panel());
                return this;
            };
            c.prototype.setAttribs = function () {
                return this;
            };
            c.prototype.render = function (b, a) {
                return this;
            };
            c.prototype.getBounds = function (b) {
                var a = b || this.rootPanel,
                    c = a;
                for (b = [0, 0]; c; ) (b[0] += c.x.px + c.offsetX), (b[1] += c.y.px + c.offsetY), (c = c.parent);
                a.isPatched
                    ? ((a = a.getBbox()), (a = [a.width, a.height]))
                    : ((c = a.combinations), c.length || (c = a.composeCombinations()), (c = c[0]), (a = [z(C(a.attrs, "width"), c.minSize.width.px), z(C(a.attrs, "height"), c.minSize.height.px)]));
                return b.concat(a);
            };
            c.prototype.add = function (b, a) {
                this.parentLayoutItem = b || this.renderer;
                this.render();
                this.rootPanel.add(b, a);
                return this;
            };
            c.prototype.destroy = function () {
                w(this.rootVisuals, function (b) {
                    return b && b.destroy && b.destroy();
                });
                this.rootPanel && this.rootPanel.destroy();
            };
            c.prototype.handleEvent = function (b, a, c, f) {
                if (t(a) && t(c) && (a = this.events[a])) return a[b](c, f);
            };
            c.prototype.trigger = function (b, a) {
                this.events[b].trigger(a, this);
            };
            c.prototype.on = function (b, a, c) {
                (b = this.handleEvent(c ? "onDefer" : "on", b, a, c)) && this.subscriptions.push(b);
                return this;
            };
            c.prototype.un = function (b, a) {
                this.handleEvent("un", b, a);
                return this;
            };
            c.prototype.triggerUser = function (b, a) {
                return this.triggerUserTarget(b, this, a);
            };
            c.prototype.triggerUserTarget = function (b, a, c) {
                var d = this.currentOptions.events;
                d = (b = d && mh(d, b)) && d[b];
                if (Fb(d)) return d.call(a, c || void 0);
            };
            c.prototype.hasUserEvent = function (b) {
                var a = this.currentOptions.events;
                if (b) {
                    if ("any" === b) return a && pa(a).length;
                    if (a) return (b = mh(a, b)) && Fb(a[b]);
                }
            };
            c.prototype.hasAnyNamedEvent = function (b) {
                return this.hasUserEvent(b) || this.events[b];
            };
            c.prototype.click = function (b) {};
            return c;
        })(Kt),
        jc = (function (a) {
            function c(b, c, e) {
                void 0 === e && (e = []);
                e = a.call(this, b, c, e) || this;
                e.chart = b;
                void 0 === c && (c = {});
                e.id = c.id || void 0;
                e.ciManager = b.chartItemManager;
                e.ciManager.register(e);
                return e;
            }
            K(c, a);
            c.prototype.destroy = function () {
                a.prototype.destroy.call(this);
                this.ciManager.remove(this);
            };
            return c;
        })(Lt),
        Zy = function (a) {
            var c = [],
                b = function (a, e) {
                    void 0 === e && (e = "");
                    var d;
                    if ("object" !== typeof a || null === a) return a;
                    var g = function (a, d) {
                        var f = typeof a;
                        d = e.length ? e + "." + d : d;
                        "object" === f && null !== a ? b(a, d) : "function" === f && c.push([d, a]);
                    };
                    if (Array.isArray(a)) {
                        var h = a.length;
                        for (d = 0; d < h; d++) g(a[d], d);
                    } else for (d in a) a.hasOwnProperty(d) && g(a[d], d);
                };
            b(a);
            return c;
        },
        SC = fa("rotate fontFamily fontStyle fontWeight fontSize color margin padding".split(" ")),
        TC = fa(["val", "xAlignment", "yAlignment", "stroke"]),
        Fi = (function (a) {
            function c(b, c, e) {
                b = a.call(this, b, c) || this;
                b.target = e;
                b.currentState = "";
                return b;
            }
            K(c, a);
            c.prototype.setRootVisuals = function () {
                var b = (this.rootVisuals = this.rootVisuals || {}),
                    a = this.rootPanel,
                    c = this.renderer;
                this.rootPanel || (a = this.rootPanel = c.panel());
                b.background || (b.background = b.background || c.item({ type: "rect", fill: "transparent" }).add(a));
                b.text || (b.text = b.text || c.textStack(this.getText()).attr({ width: "auto", autoWrap: "none" }).add(a));
                return this;
            };
            c.prototype.setAttribs = function () {
                var b,
                    a = {};
                a[""] = this.translate(this.currentOptions);
                if ((b = this.currentOptions.states)) b.hover && (a.hover = this.translate(C(this.currentOptions, "states.hover"))), b.select && (a.select = this.translate(C(this.currentOptions, "states.selected")));
                this.attribs = a;
                return this;
            };
            c.prototype.applyAttrs = function (b) {
                this.rootPanel.attr(Hb(b, TC));
                this.rootVisuals.text.attr(Hb(b, SC));
                this.chart.triggerOptionsApplied("label", this);
            };
            c.prototype.isVisible = function () {
                return !1 !== this.currentOptions.visible && this.getText().length;
            };
            c.prototype.getSize = function (b) {
                if (!this.isVisible()) return [0, 0];
                b && this.applyAttrs(b);
                this.rootPanel.updateCombinations();
                var a = this.rootPanel.combinations;
                b = this.rootPanel.calculateMargin();
                if (!a.length) return [0, 0];
                a = a[0].minSize;
                return [a.width.px + b.horizontal.px, a.height.px + b.vertical.px];
            };
            c.prototype.getSizes = function (b) {
                if (!this.isVisible()) return [[0, 0]];
                b && this.applyAttrs(b);
                this.rootPanel.updateCombinations();
                b = this.rootPanel.combinations;
                var a = this.rootPanel.calculateMargin();
                a = [a.horizontal.px, a.vertical.px];
                return b.length
                    ? B(b, function (b) {
                          b = b.minSize;
                          return [b.width.px + a[0], b.height.px + a[1]];
                      })
                    : [[0, 0]];
            };
            c.prototype.render = function () {
                var b = this;
                this.setOptions();
                this.setAttribs();
                var a = this.currentOptions,
                    c = this.attribs[""],
                    f = c.attr.label;
                c = c.layout.label;
                var g = this.rootVisuals.text;
                if (this.isVisible()) {
                    this.rootPanel && this.rootPanel.visible(!0);
                    this.applyAttrs(c);
                    var h = this.rootVisuals.text.variant;
                    90 === Math.abs(c.rotate) && "center" === c.yAlignment && h && g.attr({ y: (h.minSize.width.px / 2) * (0 > c.rotate ? 1 : -1) });
                    g &&
                        (g.attr(f),
                        g.attr({ val: this.getText() }),
                        C(a, "states.hover") &&
                            ((void 0).on("mouseover", function () {
                                b.setState("hover");
                            }),
                            (void 0).on("mouseout", function () {
                                b.setState("");
                            })));
                } else this.rootPanel && this.rootPanel.visible(!1);
                return this;
            };
            c.prototype.translate = function (b) {
                var a = {},
                    c = {};
                b = b || this.currentOptions;
                c = id({}, b.style || {});
                zc(
                    a,
                    b,
                    function (b, a) {
                        b.color = a;
                    },
                    "color",
                    Lb
                );
                c = qc(this.currentOptions);
                return { attr: { label: a }, layout: { label: c } };
            };
            c.prototype.setState = function (b) {
                if (b !== this.currentState) {
                    var a = this.attribs[b],
                        c = a.attr.label;
                    this.rootPanel.options(a.layout.label);
                    this.rootPanel.attr(c);
                    this.currentState = b;
                }
            };
            c.prototype.attr = function (b) {
                this.rootPanel.attr(b);
            };
            c.prototype.getTextEl = function () {
                return this.rootVisuals.text;
            };
            c.prototype.getText = function () {
                return this.evalText(this.options("text")) || "";
            };
            c.prototype.evalText = function (b) {
                var a = this.target || this.chart;
                b && a && a.replaceTokens && (b = a.replaceTokens(b));
                return b;
            };
            return c;
        })(Lt),
        UC = "visible fill outline opacity radius padding position margin corners shadow width height".split(" "),
        Pm = function (a) {
            a = a ? a.boxDefaults() : Cf();
            a.fill = Eh(a.fill, 0.8);
            a.position = "bltl";
            return a;
        },
        ej = (function (a) {
            function c(b, c, e) {
                b = a.call(this, b, c, [b, c, e]) || this;
                b.target = e;
                b.fillShading = "box";
                b.asHTML = !1;
                b.isVisible = !1;
                b.applyOptions(!1);
                return b;
            }
            K(c, a);
            c.prototype.init = function () {
                for (var b = [], a = 0; a < arguments.length; a++) b[a] = arguments[a];
                G(b, 3);
            };
            c.prototype.defaultOptions = function () {
                var b = C(this.chart.currentOptions, "defaultAnnotation");
                return A(Pm(this.chart), b);
            };
            c.prototype.setRootVisuals = function () {
                var b = this,
                    a = this.renderer;
                this.rootPanel ||
                    ((a = this.rootPanel =
                        this.rootPanel ||
                        (this.asHTML || this.currentOptions.asHTML
                            ? a.renderer.htmlElement().attr({ left: 0, top: 0 })
                            : a.box({ autoWrap: "none", transition: { auto: !0, animation: t(this.currentOptions.animation) ? this.currentOptions.animation : { duration: 1200 } } }))),
                    this.rootVisuals || (this.rootVisuals = { content: this.createContentVisual(a) }),
                    a.on("click", function (a) {
                        return b.click(a);
                    }));
                return this;
            };
            c.prototype.getBounds = function (b) {
                return !b && this.currentOptions.asHTML ? this.bbox() : a.prototype.getBounds.call(this, b);
            };
            c.prototype.createContentVisual = function (b) {
                var a = this.renderer;
                return this.asHTML || this.currentOptions.asHTML ? a.renderer.htmlElement().add(b) : a.textStack().add(b);
            };
            c.prototype.bbox = function (b) {
                var a = this.rootPanel,
                    c = a.getBbox();
                this.currentOptions.asHTML &&
                    ((b = b ? Ac(this.currentOptions.margin) : [0, 0, 0, 0]),
                    (c.x = (parseFloat(a.attr("left")) || 0) - b[3]),
                    (c.y = (parseFloat(a.attr("top")) || 0) - b[0]),
                    (c.width = c.width + b[1] + b[3]),
                    (c.height = c.height + b[0] + b[2]));
                return [c.x, c.y, c.width, c.height];
            };
            c.prototype.visible = function (b) {
                t(b) || (b = "none" !== this.rootPanel.attr("display"));
                this.rootPanel.attr({ display: b ? "block" : "none" });
                this.setVisible(b);
                return this;
            };
            c.prototype.setVisible = function (b) {
                this.isVisible = b;
            };
            c.prototype.alignTo = function () {
                for (var b, a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
                (b = this.rootPanel).alignTo.apply(b, H(a));
            };
            c.prototype.options = function (b, a) {
                var c = this.optionsGetter(b);
                if ("NotGetter" !== c) return c;
                c = this.normalizeOptions(b);
                var d = this.userOptions.label,
                    g = c.label && c.label.text;
                d = d && d.text;
                g = t(g) && d !== g;
                if (!Lj(this.userOptions, c)) return this;
                this.setOptions();
                c = t(a);
                this.applyOptions(c ? a : { skipReflow: !0 });
                if (!1 === a || (c && a.skipReflow)) return this;
                g = (c = this.rootPanel) && c.isPatched && (g || void 0);
                !g && c && this.chart.isRendered && !1 !== a && ((b = pa(b)), 0 < gc(b, UC).length && (g = !0));
                g && (G(Ig(this), 1)[0] ? c.refresh && c.refresh() : this.chart.chartAreaSet.reflow(a, !1, !0));
                this.afterUpdate(a);
                return this;
            };
            c.prototype.normalizeOptions = function (b) {
                var c = void 0;
                void 0 === c && (c = "corners");
                var e, f;
                "undefined" !== (f = I((e = C(b, c)))) && "object" === f && (b[c] = sw(e));
                return a.prototype.normalizeOptions.call(this, b);
            };
            c.prototype.applyOptions = function (b) {
                void 0 === b && (b = {});
                b = Sa(b);
                this.rootPanel || this.setOptions();
                var a = this.currentOptions,
                    c = this.userOptions,
                    f = this.rootPanel,
                    g = this.rootVisuals.content,
                    h = this.asHTML || a.asHTML,
                    k = qa(z(b.animation, a.animation, {}));
                b = qa(a);
                var l = qc(a.label),
                    m = C(a, "label.text");
                if (h) {
                    var n = this.rootPanel,
                        p = n.transition(),
                        q = n.renderer.isAnimationDisabled(b);
                    b.animation = n.isPatched && !q ? (p ? A(p.getAnimationOptions(), k) : k) : null;
                    b = br(b);
                } else (b = Cg(b, z(a.fillShading, this.fillShading))), (b.animation = k);
                if ((m = this.evalText(m)) || (!this.asHTML && g && g.textAttr !== m) || (this.asHTML && f.innerHTML !== m))
                    (l = A({ animation: { duration: 0 } }, l)), this.asHTML || a.asHTML ? (l.innerHTML = m) : ((l.val = m), c.width && ((l.maxWidth = c.width), (l.strategy = "none"))), g && g.attr(l);
                this.checkVisibility(a);
                a = this.currentOptions.position;
                this._pos_ !== a
                    ? ((this._pos_ = a),
                      (c = this._posInfo_ = tr(this.currentOptions)),
                      c[0]
                          ? ((a = c[1]),
                            (g = c[2]),
                            (k = this.chart.chartAreaSet),
                            (c = this.rootPanel.getBboxArray ? this.rootPanel.getBboxArray() : [0, 0].join(this.bbox(!0).slice(2))),
                            (g = 0 === g ? this.chart.rootVisuals.itemsBox.getGlobalBboxArray() : k.items[0].getContentGlobalBbox()),
                            (a = [a[0] + g[0] - c[0], a[1] + g[1] - c[1]]))
                          : (a = void 0))
                    : (a = void 0);
                a && ((b[h ? "left" : "offsetX"] = h ? a[0] + "px" : a[0]), (b[h ? "top" : "offsetY"] = h ? a[1] + "px" : a[1]));
                f.attr(this.transformRootAttr(b));
                this.triggerOptionsApplied();
                return this;
            };
            c.prototype.triggerOptionsApplied = function () {
                this.chart.triggerOptionsApplied("annotation", this);
            };
            c.prototype.transformRootAttr = function (b) {
                return b;
            };
            c.prototype.checkVisibility = function (b) {
                b = !1 !== b.visible;
                var a = this.rootPanel ? "none" !== this.rootPanel.attr("display") : this.isVisible,
                    c = b !== a;
                this.setVisible(a);
                c && this.visible(b);
            };
            c.prototype.destroy = function () {
                a.prototype.destroy.call(this);
                this._unsubscribeContentBox && this._unsubscribeContentBox();
                this.rootPanel && this.rootPanel.destroy();
            };
            c.prototype.remove = function (b) {
                var a = this.chart,
                    c;
                pb(a._annotations, this);
                (c = S(a.userOptions.annotations, { id: this.id })) && pb(a.userOptions.annotations, c);
                this.destroy();
                !1 !== b && this.chart.chartAreaSet.reflow(!1, !1, !0);
            };
            c.prototype.measure = function (b) {
                this.isMeasured = !0;
                b && !this.currentOptions.maxWidth && this.rootPanel.attr({ maxWidth: b[2] });
                return this.rootPanel ? (this.rootPanel.isHtml ? ha(this.bbox(!0)) : this.rootPanel.setPreliminarySize(!0).getGlobalBboxArray(!0)) : [0, 0, 0, 0];
            };
            c.prototype.positionApplied = function (b) {};
            c.prototype.positionUpdated = function (b) {
                this.positionApplied(b);
            };
            c.prototype.getText = function () {};
            c.prototype.evalText = function (b) {
                var a = this.target || this.chart;
                a && a.replaceTokens && "string" === typeof b && -1 < b.indexOf("%") && (b = a.replaceTokens(b));
                return b;
            };
            return c;
        })(jc),
        VC = (function (a) {
            function c(b, c) {
                c = a.call(this, b.chart, c, b) || this;
                c.chartArea = b;
                c.fillShading = "titleBox";
                return c;
            }
            K(c, a);
            c.prototype.applyOptions = function () {
                var b = this.currentOptions;
                if (!1 === b.visible) return this.rootPanel.attr({ suspend: "true" }), this;
                a.prototype.applyOptions.call(this);
                if ((b = C(b, "position"))) "full" === b ? this.rootPanel.attr({ width: "100%", strategy: "none" }) : this.rootPanel.attr({ width: "auto" });
                return this;
            };
            c.prototype.triggerOptionsApplied = function () {
                this.chart.triggerOptionsApplied("title", this);
            };
            c.prototype.defaultOptions = function () {
                var b = this.chart;
                b = b ? b.boxDefaults() : Cf();
                return A(b, { position: "left", padding: [3, 3, 6, 3], corners: ["cut", "square", "square", "square"], label: { align: "left", style: { fontSize: 14 } }, animation: !1, shadow: z(b.shadow, !0) });
            };
            c.prototype.dependentOptions = function () {
                return [
                    {
                        option: "fill",
                        check: function (b) {
                            return b;
                        },
                        dependent: "padding",
                        value: 3,
                    },
                ];
            };
            c.prototype.setRootVisuals = function () {
                a.prototype.setRootVisuals.call(this);
                this.rootPanel.attr({ transition: !1 });
                return this;
            };
            c.prototype.createContentVisual = function (b) {
                return this.renderer.textStack().add(b);
            };
            return c;
        })(ej),
        Qm = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.kind = "EntryWrapper";
                return b;
            }
            K(c, a);
            c.prototype.defaultOptions = function () {
                return {};
            };
            c.prototype.styleIconVisual = function (b, a) {
                if (b) {
                    b = b.base;
                    var c = A({}, this.currentOptions),
                        d = C(c, "outline.color");
                    Z(c, "outline.color", d || ia("outline", c.color || "white"));
                    c = fc(c);
                    b && b.attr(c);
                    a.isStyled = !0;
                }
            };
            c.prototype.getIconVisual = function (b, a, c) {
                a = this.renderer;
                c = c.iconVisual || {};
                var d = (c.root = c.root || a.panel({ yAlignment: "center" }));
                b = this.getIconPaths(b);
                b.base && !c.base && (c.base = c.base || a.renderer.path({ d: b.base }).add(d));
                return c;
            };
            c.prototype.getIconPaths = function (b) {
                return { base: dc.rectangle(0, 0, b[0], b[1], { r: 2, corners: ["round", "round", "round", "round"] }), extra: void 0 };
            };
            c.prototype.setState = function (b) {};
            c.prototype.replaceTokens = function (b, a) {
                return this.chart.replaceTokens(b, a);
            };
            c.prototype.getFormatInfo = function () {
                return this.chart.getFormatInfo();
            };
            return c;
        })(jc),
        Mt = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.kind = "RangeValueEntry";
                return b;
            }
            K(c, a);
            c.prototype.replaceTokens = function (b, a) {
                return Gg(b, this, a || this.getFormatInfo());
            };
            return c;
        })(Qm),
        lb = function (a) {
            return "string" === typeof a
                ? ((a = a.trim()), a.match(Rk) ? parseFloat(a) : a.match(/\/|:|AM|PM|\.\d\./g) && !Ha(new Date(a).getTime()) && 6 <= a.length && 6 <= a.replace(/[^0-9]/g, "").length ? new Date(a).getTime() : parseFloat(a))
                : a;
        },
        Nt = (function () {
            function a(a, b) {
                this.chart = a;
                this.kind = "SmartPalette";
                this.axisRange = [];
                this.legendEntries = [];
                this.colorRanges = [];
                this.mode = "colorBar";
                this.rangesMode = "manual";
                this.currentOptions = {};
                this.userOptions = {};
                this.refreshExtremes = !1;
                zb(b);
                this.setOptions(b);
                this.id = b.id;
                a && (this.ciManager = a.chartItemManager).register(this);
            }
            a.prototype.options = function (a) {
                var b = xr(this, a);
                if ("NotGetter" !== b) return b;
                this.setOptions(a);
                return this;
            };
            a.prototype.setOptions = function (a) {
                A(this.userOptions, this.normalizeOptions(a, "colors,id"));
                this.refreshExtremes = O(a.pointValue) && this.currentOptions.pointValue !== this.userOptions.pointValue;
                this.currentOptions = this.translateOptions(A({}, this.defaultOptions(), this.userOptions));
                this.initialized = !1;
                this.mode = a.ranges ? "ranges" : "colorBar";
                this.stopPosDefined = !0;
                this.colorRanges = [];
                this.stops = this.getStops();
                this.setStopRange();
            };
            a.prototype.normalizeOptions = function (a, b) {
                return Sa(a, b);
            };
            a.prototype.translateOptions = function (a) {
                var b;
                if ((b = a.ranges))
                    if ("array" === I(b))
                        a.ranges = B(b, function (b) {
                            return "object" === I(b) ? b : { value: b };
                        });
                    else {
                        var c = b.min,
                            e = b.max,
                            f = [];
                        b = b.interval;
                        !t(b) || (t(c) && t(e)) || (Ma.emit("warning", a.id || this.id, "minMaxRequired", { container: this.chart.getWrapper() }), (c = c || 0), (e = z(e, 3 * b)));
                        if (t(c) && t(e)) {
                            var g = e - c;
                            e = z(b, g / 3);
                            b = lm(g / e);
                            20 < b && ((e = lm(g / 20)), (b = lm(g / e)), Ma.emit("warning", a.id || this.id, "spRangesOverflow", { data: ["ranges.interval"], container: this.chart.getWrapper() }));
                            g = 0;
                            for (var h = b; g < h; g++) f.push({ value: g === b - 1 ? [c + e * g, c + e * (g + 1)] : c + e * g });
                            a.ranges = f;
                        }
                    }
                return a;
            };
            a.prototype.defaultOptions = function () {
                return {};
            };
            a.prototype.syncLegendEntries = function (a) {
                var b = a.smartPalette,
                    c = b.getRangeConfigs(),
                    e,
                    f = [];
                b.legendEntries.length
                    ? ((f = b.legendEntries),
                      w(f, function (b) {
                          return b.setColumns();
                      }))
                    : (w(c, function (b) {
                          f.push((e = a.addEntry(new WC(a.chart, b))));
                          e.setColumns();
                      }),
                      (b.legendEntries = f));
                return f;
            };
            a.prototype.getRangeConfigs = function () {
                var a = this.currentOptions,
                    b = a.ranges,
                    d = function (b, c) {
                        return A({ legendEntry: { value: "%min - %max", name: " ", cursor: "default", set: 1 } }, a.defaultRange || {}, b, c);
                    };
                if ("array" === I(b))
                    return this.colorRanges.length
                        ? this.colorRanges
                        : B(b, function (a, c) {
                              var e = c ? b[c - 1] : void 0,
                                  f = c < b.length - 1 ? b[c + 1] : void 0;
                              c = hb(a.value, lb);
                              return f ? ((e = f.value), d({ min: c.pop ? c[0] : c, max: e.pop ? e[0] : e }, a)) : "array" === I(c) ? d({ min: c[0], max: c[1] }, Ga(a, "value")) : d({ min: c, max: c + Math.abs(c - lb(e.value)) }, a);
                          });
            };
            a.prototype.setStopRange = function () {
                var a = B(this.stops, function (b) {
                        return b[0];
                    }),
                    b = Math.min.apply(Math, H(a));
                a = Math.max.apply(Math, H(a));
                this.stopRange = a - b;
                this.stopExtremes = [b, a];
                var d = hb(this.currentOptions.colorsValueRange, lb);
                this.clips = !(0 <= b && 1 >= a) || d;
            };
            a.prototype.getStops = function (c) {
                var b = this,
                    d = this,
                    e = d.currentOptions,
                    f = function () {
                        var b = [],
                            a = [];
                        a = l.map(function (b) {
                            return lb(b[0]);
                        });
                        for (var c = 0, d = l.length; c < d; c++) a[c] = l[c][0];
                        a = [Math.min.apply(null, a), Math.max.apply(null, a)];
                        for (c = l.length - 1; -1 < c; c--) {
                            d = l[c];
                            var e = void 0,
                                f = void 0;
                            e = [na(a[1] - lb(d[0]) + a[0], 2), d[1]];
                            if ((f = 0 < c ? l[c - 1] : void 0)) 3 < f.length ? ((e[2] = 1 - f[3]), (e[3] = 1 - f[2])) : 2 < f.length && ((e[2] = 0), (e[3] = 1 - f[2]));
                            b.push(e);
                        }
                        l = b;
                    },
                    g = function () {
                        var b = e.colors,
                            a = hb(e.colorsValueRange, lb);
                        d.stopPosDefined = !1;
                        "solid" === c && b.push(b[b.length - 1]);
                        var f = z(C(a, "0"), 0),
                            g = (z(C(a, "1"), 1) - f) / (b.length - 1);
                        return B(b, function (b, a) {
                            return "solid" === c ? [f + a * g, b, 1] : [f + a * g, b];
                        });
                    },
                    h = function () {
                        var c = e.ranges,
                            f = [],
                            g = !0,
                            h = [];
                        w(c, function (b) {
                            var a = "object" === I(b) ? b.value : b;
                            g = (b = b.color) ? g : !1;
                            a = hb(a, lb);
                            a.pop ? (f.push([a[0], b, 1]), f.push([a[1], b]), h.push(a[0])) : (f.push([a, b, 1]), h.push(a));
                        });
                        if (!g) {
                            e.colors || ((e.colors = ["white"]), Ma.emit("warning", e.id, "colorsRequired", { container: b.chart.getWrapper() }));
                            for (var k = e.colors, l = Math.min.apply(Math, H(h)), x = [], v = (Math.max.apply(Math, H(h)) - l) / (k.length - 1), y = 0, t = k.length; y < t; y++) x.push([l + v * y, k[y]]);
                            var E = new a(d.chart, { stops: x, invert: e.invert });
                            w(f, function (b) {
                                b[1] = E.getValueColor(b[0]);
                            });
                            w(c, function (b) {
                                b.color = b.value.pop ? E.getValueColor(lb(b.value[0])) : E.getValueColor(lb(b.value));
                            });
                            E.destroy();
                        }
                        return f;
                    },
                    k = function (b) {
                        if (b && b.length)
                            return b.map(function (b) {
                                b = b.slice(0);
                                b[0] = lb(b[0]);
                                return b;
                            });
                    },
                    l = "ranges" === d.mode ? h() : k(e.stops) || g();
                e.invert && "ranges" !== d.mode && f();
                return l;
            };
            a.prototype.getPointColor = function (a, b, d) {
                d = d || {};
                b = this.getPointValue(b, a, d);
                return this.getValueColor(b, a);
            };
            a.prototype.getValueColor = function (a, b) {
                var c = this.stops || this.getStops(b);
                (function () {
                    if (b) {
                        var a;
                        if ((a = b.info.style.base)) for (var d = 0, g = c.length; d < g; d++) "%color" === c[d][1].toLowerCase() && (c[d][1] = a.color);
                    }
                })();
                a = this.valueToStopPos(a);
                return (function (b) {
                    a: {
                        for (var a = 0, d = c.length; a < d; a++) {
                            var e = c[a];
                            if (lb(e[0]) > b) {
                                a = 0 === a ? [e] : [c[a - 1], e];
                                break a;
                            }
                            lb(e[0]);
                            if (a === d - 1) {
                                a = [e];
                                break a;
                            }
                        }
                        a = void 0;
                    }
                    d = a[0];
                    e = [];
                    if (1 === a.length) return a[0][1];
                    b = Y(0, 1, d[0], a[1][0], b);
                    2 < d.length && ((e[0] = d[2]), 3 < d.length && (e[1] = d[3]));
                    if (b < e[0]) return d[1];
                    if (1 < e.length && b > e[1]) return a[1][1];
                    var k = [0, 1];
                    1 < e.length ? (k = e) : 0 < e.length && (k[0] = e[0]);
                    b = Y(0, 1, k[0], k[1], b);
                    return qe(d[1], a[1][1], 100 * b);
                })(a);
            };
            a.prototype.setPointSpValues = function (a, b) {
                var c = a.userPoints,
                    e = this.currentOptions,
                    f = e.colorsValueRange,
                    g = a.colorKey || "valueSP";
                if (a.info.usesSmartPalette && c && c.length) {
                    var h = c.length - 1,
                        k = c[h];
                    k[g] = this.getPointValue(k, a);
                    if (this.extremes && !this.refreshExtremes) {
                        b = this.extremes[0];
                        var l = this.extremes[1];
                    } else b = l = k[g];
                    for (; h--; ) {
                        k = c[h];
                        var m = (k = k[g] = this.getPointValue(k, a));
                        null !== m && !Ha(m) && (k > l ? (l = k) : k < b && (b = k));
                    }
                    this.extremes = [b, l];
                    this.refreshExtremes = !1;
                    this.dataRange = l - b;
                    c = !f && 0 <= b && 1 >= l;
                    a = this.axisConfig = {};
                    (e = e.colorsValueRange) ? ((b = e[0]), (l = e[1])) : c && this.clips ? ((b = 0), (l = 1)) : this.clips || ((b = this.stopPosToValue(0)), (l = this.stopPosToValue(1)));
                    b = Dg(b, l, 8, { minIntervalGap: 0 });
                    this.axisRange = [b.min, b.max];
                    l = 0.001 * (b.max - b.min);
                    a.min = b.min - l;
                    a.max = b.max + l;
                    a.interval = b.interval;
                    a.tickInterval = b.interval;
                    a.startOnTick = a.endOnTick = !1;
                }
                return this.extremes;
            };
            a.prototype.getPointValue = function (a, b, d) {
                d = d || {};
                var c = this.currentOptions,
                    f = t(a._i) ? b._points[a._i] : S(b._points, { id: a.id }) || S(b._points, { currentOptions: { id: a.id } });
                f || (a = 0);
                d = d.spSrc;
                "number" === typeof a
                    ? (f = a)
                    : ((a = b.ctmIsType("heatmap") ? "percentOfZAxisRange" : "percentOfYAxisRange"),
                      (c = c.pointValue) || ((b = 1 < b.userPoints.length ? ("chart" === d ? "{%percentOfDataRange/100}" : "{%percentOfSeriesRange/100}") : "{" + a + "/100}"), (c = b)),
                      (b = c),
                      "function" === I(b)
                          ? (f = b(f))
                          : (-1 === b.indexOf(":") && (b = b.replace("}", ":n5}")), (this.tokenUsed = b), (f = f.replaceTokens(b, { y: { culture: "en-US" }, x: { culture: "en-US" } })), (f = f.replace(/,/g, "")), (f = lb(f))));
                return f;
            };
            a.prototype.valueToStopPos = function (a) {
                var b,
                    c = yr(this),
                    e = c.dataPerc;
                return c.stopPerc && !e && (b = this.axisRange) && t(b[0]) ? Y(0, 1, b[0], b[1], a) : a;
            };
            a.prototype.stopPosToValue = function (a) {
                var b,
                    c = yr(this),
                    e = c.dataPerc;
                return c.stopPerc && !e && (b = this.extremes) && t(b[0]) && !Ha(b[0]) ? Y(b[0], b[1], 0, 1, a) : a;
            };
            a.prototype.getTraditionalStops = function (a, b) {
                function c(b, a, c) {
                    function d(b) {
                        b = Y(h[0], h[1], 0, 1, b);
                        b = e.stopPosToValue(b);
                        return e.getValueColor(b);
                    }
                    var f = [];
                    f = (function () {
                        for (var d = [], e = 0, f = b.length; e < f; e++) {
                            var g = b[e],
                                h = e < f - 1 ? b[e + 1] : "undefined",
                                k = 0 < e ? b[e - 1] : "undefined";
                            if (g[0] < a && h[0] > a) d.push(a);
                            else if (!(g[0] < a && h[0] < a))
                                if (g[0] === a) d.push(g[0]);
                                else if (h[0] !== a)
                                    if (g[0] > c && k) {
                                        if (k[0] < c) {
                                            d.push(c);
                                            break;
                                        }
                                    } else d.push(g[0]);
                        }
                        return d;
                    })();
                    return (function (b) {
                        for (var e = [], f = 0, g = b.length; f < g; f++) {
                            var h = b[f];
                            e.push([Y(0, 1, a, c, h), d(h)]);
                        }
                        return e;
                    })(f);
                }
                var e = this,
                    f = [],
                    g = e.getStops(a),
                    h = [];
                a = e.axisRange;
                var k = function (b) {
                    return Y(0, 1, h[0], h[1], b);
                };
                h = e.stopExtremes;
                for (var l = 0, m = g.length; l < m; l++) {
                    var n = g[l],
                        p = l < m ? g[l + 1] : void 0;
                    f.push([k(lb(n[0])), n[1]]);
                    if (p) {
                        if (2 < n.length) {
                            var q = 1 === n[2] ? 1e-4 : 0;
                            f.push([Y(k(lb(n[0])), k(p[0]) - q, 0, 1, n[2]), n[1]]);
                        }
                        3 < n.length && f.push([Y(k(lb(n[0])), k(p[0]), 0, 1, n[3]), p[1]]);
                    }
                }
                b && (b.pop && (a = b), b && e.clips && 2 === a.length && ((b = k(e.valueToStopPos(a[0]))), (a = k(e.valueToStopPos(a[1]))), (f = c(f, b, a))));
                return f;
            };
            a.prototype.getPaletteCSS = function (a, b) {
                a = this.getTraditionalStops(a);
                var c = [];
                c.push(b ? "to bottom" : "to right");
                a.map(function (b) {
                    var a = Dh(b[1]).hex;
                    b = 100 * lb(b[0]);
                    c.push(a + " " + b + "%");
                });
                return "background: linear-gradient(" + c.join(", ") + ");";
            };
            a.prototype.destroy = function () {
                this.ciManager.remove(this);
                this.destroyEntries();
            };
            a.prototype.destroyEntries = function () {
                w(this.legendEntries, function (a) {
                    return a.destroy();
                });
            };
            return a;
        })(),
        WC = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.kind = "SmartPaletteEntry";
                return b;
            }
            K(c, a);
            return c;
        })(Mt),
        Ot,
        XC = (function () {
            function a(a, b) {
                this._layout = a;
                this._renderer = a.renderer;
                this._options = { label: "", type: "default", delay: 300, fill: "#fff" };
                this._mini = this._isShowing = this._isStarted = !1;
                Ot ||
                    (this._renderer.cssText(
                        "\n\n.loader,\n.loader .loader-overlay {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\tbottom: 0;\n\toverflow: hidden;\n}\n\n.loader {\n\tanimation:loader-fadeIn ease-in 1;\n\tanimation-fill-mode:forwards;\n\tanimation-duration:0.1s;\n\n\topacity: 0;\n\tvisibility: visible;\n}\n\n.loader.hide,\n.loader.anim-hide {\n\tanimation:loader-fadeOut ease-in 1;\n\tanimation-fill-mode:forwards;\n\tanimation-duration:0.03s;\n}\n\n.loader.hide {\n\tanimation-duration:0s;\n\tvisibility: hidden;\n}\n\n.loader .loader-overlay {\n\topacity: 0.3;\n}\n\n.loader .loader-text {\n\tcolor: #666;\n\tmargin-top: 5px;\n}\n\n.loader.mini .loader-text {\n\ttop: 7px;\n\tleft: 20px;\n}\n\n.loader .loader-icon-holder {\n\tposition: relative;\n\ttop: calc(50% - 35px);\n\ttext-align: center;\n}\n\n.loader.mini .loader-icon-holder {\n\ttop: 7px;\n\tleft:0;\n}\n\n.loader.mini .loader-text {\n\ttop: 1px;\n\tfont-size: 6px;\n}\n\n.loader.bars .loader-icon,\n.loader.bars .loader-icon:before,\n.loader.bars .loader-icon:after {\n\tbackground: rgba(50,102,187, 0.75);\n\tanimation: loader-bars 1s infinite ease-in-out;\n\twidth: 10px;\n\theight: 40px;\n}\n.loader.bars .loader-icon {\n\tcolor: rgba(50,102,187, 0.75);\n\ttext-indent: -9999em;\n\tfont-size: 11px;\n\t-webkit-animation-delay: -0.16s;\n\tanimation-delay: -0.16s;\n\tmargin: 0 auto;\n}\n\n.loader.bars .loader-icon:before,\n.loader.bars .loader-icon:after {\n\tposition: absolute;\n\ttop: 0;\n\tcontent: '';\n}\n\n.loader.bars .loader-icon:before {\n\tleft: -15px;\n\tanimation-delay: -0.32s;\n}\n.loader.bars .loader-icon:after {\n\tleft: 15px;\n}\n\n.loader.bars.mini .loader-icon,\n.loader.bars.mini .loader-icon:before,\n.loader.bars.mini .loader-icon:after {\n\twidth: 5px;\n\theight: 20px;\n\tanimation: loader-bars 1s infinite ease-in-out;\n}\n\n.loader.bars.mini .loader-icon:before {\n\tleft: -7px;\n\tanimation-delay: -0.32s;\n}\n\n.loader.bars.mini .loader-icon:after {\n\tleft: 7px;\n}\n\n.loader.bars.mini .loader-icon {\n\ttop: 5px;\n\tleft: 5px;\n}\n\n\n@keyframes loader-fadeIn { 0% { opacity:0; } 100% { opacity:1; } }\n@keyframes loader-fadeOut { 0% { opacity:1; transform: scale(1); } 99% { transform: scale(1); } 100% { opacity:0; transform: scale(0); } }\n\n@keyframes loader-bars {\n0%,\n80%,\n100% {\n\ttransform: scaleY(0.75);\n}\n40% {\n\ttransform: scaleY(1.25);\n}\n}\n\n@keyframes loader-default { from {  opacity: 1 } to {  opacity: 0 } }\n\n\n.loader.default .loader-icon {\n\twidth: 50px;\n\theight: 50px;\n\tposition: relative;\n\tmargin: 0 auto;\n}\n\n.loader.default .loader-icon .inner\n{\n\tanimation: loader-default ease-out 0.96s infinite;\n\tposition: absolute;\n\tbackground: #444; \n\tborder-radius: 2px;\n\ttransform-origin: 2px 25px;\n\tleft: 50%; \n\theight: 25%;\n\twidth: 8.33%;\n}\n\n.loader.default.mini .loader-icon {\n\twidth: 20px;\n\theight: 20px;\n}\n\n.loader.default.mini .loader-icon .inner\n{\n\tborder-radius: 1px;\n\ttransform-origin: 0px 10px;\n}\n\n.loader.default .loader-icon .inner:nth-of-type(1) {\n\ttransform: rotate(0deg);\n\tanimation-delay: -0.88s;\n}\n.loader.default .loader-icon .inner:nth-of-type(2) {\n\ttransform: rotate(30deg);\n\tanimation-delay: -0.8s;\n}\n\n.loader.default .loader-icon .inner:nth-of-type(3) {\n\ttransform: rotate(60deg);\n\tanimation-delay: -0.72s;\n}\n\n.loader.default .loader-icon .inner:nth-of-type(4) {\n\ttransform: rotate(90deg);\n\tanimation-delay: -0.64s;\n}\n.loader.default .loader-icon .inner:nth-of-type(5) {\n\ttransform: rotate(120deg);\n\tanimation-delay: -0.56s;\n}\n.loader.default .loader-icon .inner:nth-of-type(6) {\n\ttransform: rotate(150deg);\n\tanimation-delay: -0.48s;\n}\n.loader.default .loader-icon .inner:nth-of-type(7) {\n\ttransform: rotate(180deg);\n\tanimation-delay: -0.4s;\n}\n.loader.default .loader-icon .inner:nth-of-type(8) {\n\ttransform: rotate(210deg);\n\tanimation-delay: -0.32s;\n}\n.loader.default .loader-icon .inner:nth-of-type(9){\n\ttransform: rotate(240deg);\n\tanimation-delay: -0.24s;\n}\n.loader.default .loader-icon .inner:nth-of-type(10){\n\ttransform: rotate(270deg);\n\tanimation-delay: -0.16s;\n}\n.loader.default .loader-icon .inner:nth-of-type(11) {\n\ttransform: rotate(300deg);\n\tanimation-delay: -0.08s;\n}\n.loader.default .loader-icon .inner:nth-of-type(12) {\n\ttransform: rotate(330deg);\n}\n"
                    ),
                    (Ot = !0));
                b && this.options(b);
            }
            a.prototype.options = function (a) {
                L(this._options, a);
            };
            a.prototype.loading = function (a, b) {
                return !1 === a ? this.end() : this._renderer.isRootHidden() ? !1 : this.start(a, b);
            };
            a.prototype.destroy = function () {
                this.end();
                this._loaderElement && this._loaderElement.destroy();
            };
            a.prototype.ensureAnimationApplied = function (a) {
                var b = this,
                    c = new Date().getTime() - b._endTime;
                b._animationApplied || !b._isShowing || !0 !== b._options.break || 0 > c
                    ? a()
                    : (b._loaderElement.attr({ "animation-delay": "0ms" }),
                      uo(function () {
                          b._animationApplied = !0;
                          b.insideRequest = !0;
                          a();
                          b.insideRequest = !1;
                      }));
            };
            a.prototype.mainClass = function () {
                return "loader " + this._options.type;
            };
            a.prototype.createElements = function () {
                if (!this._loaderElement) {
                    this._loaderElement = this._renderer.htmlElement("", { class: this.mainClass() + " hide" }).add(this._renderer.wrapper);
                    this._overlayElement = this._renderer.htmlElement("", { class: "loader-overlay" }).add(this._loaderElement);
                    this._iconHolderElement = this._renderer.htmlElement("", { class: "loader-icon-holder" }).add(this._loaderElement);
                    this._iconElement = this._renderer.htmlElement("", { class: "loader-icon" }).add(this._iconHolderElement);
                    this._textElement = this._renderer.htmlElement("", { class: "loader-text" }).add(this._iconHolderElement);
                    for (var a = 0; 12 > a; a++) this._renderer.htmlElement("", { class: "inner" }).add(this._iconElement);
                }
                return this._loaderElement;
            };
            a.prototype.end = function () {
                if (!this._isStarted || !this._loaderElement) return !1;
                if (this._isShowing) {
                    var a = 0 < new Date().getTime() - this._endTime && this._animationApplied ? "anim-hide" : "hide";
                    this._loaderElement.attr({ class: this.mainClass() + " " + (this._mini ? "mini " : "") + a, "animation-delay": "0ms" });
                }
                this._isStarted = this._isShowing = !1;
                return !0;
            };
            a.prototype.start = function (a, b) {
                var c = this,
                    e = c._isStarted,
                    f = (t(b) ? b : c._options.delay) || 0,
                    g = !c._loaderElement,
                    h = O(a) || null === a ? a : c._options.label,
                    k = c._textToShow !== h;
                if (c._isStarted && !k && b) return !1;
                c._isStarted = !0;
                c._textToShow = h;
                c.createElements();
                (function () {
                    (k || g) && c._textElement.attr({ innerHTML: h });
                    if (!c._isShowing) {
                        var b = c._layout.getRootBox();
                        c._mini = 50 > b.height || 50 > b.width;
                        c._endTime = f + new Date().getTime();
                        c._animationApplied = !1;
                        uo(function () {
                            if (!c._animationApplied) {
                                c._animationApplied = !0;
                                var b = c._endTime - new Date().getTime();
                                c._isShowing && c._loaderElement.attr({ "animation-delay": (0 < b ? b : 0) + "ms" });
                            }
                        });
                        c._loaderElement.attr({ class: c._mini ? c.mainClass() + " mini" : c.mainClass(), width: b.width + "px", height: b.height + "px", "animation-delay": f + "ms" });
                        c._overlayElement.attr({ "background-color": c._options.fill || "#fff" });
                        c._isShowing = !0;
                    }
                })();
                return !e;
            };
            return a;
        })(),
        YC = (function () {
            return function (a) {
                this.series = a;
            };
        })(),
        Pt = { contentArea: 0, axis: 1 },
        $y = (function () {
            function a(a) {
                this.layout = a;
                this.uses = {};
            }
            a.prototype.use = function (a) {
                this.uses = a;
                return this;
            };
            a.prototype.build = function (a) {
                var b = this.layout,
                    c = {};
                a = this.uses = a || this.uses;
                var e = A({ content: { holder: { stretch: !0 } }, axis: { offset: 0 } }, a);
                a.title && ((c.titleBoxPanel = b.panel()), (c.titleBox = new VC(a.title.holder).add(c.titleBoxPanel)));
                if (a.axis) {
                    var f = e.axis.offset;
                    c.topAxes = b.panel({ type: "stack:y" }).attr(zi("left", "bottom", 0, -f));
                    c.leftAxes = b.panel({ type: "stack:x" }).attr(zi("right", "top", -f, 0));
                    c.rightAxes = b.panel({ type: "stack:x" }).attr(zi("left", "top", f, 0));
                    c.bottomAxes = b.panel({ type: "stack:y" }).attr(zi("left", "top", 0, f));
                }
                var g = [],
                    h = a.outline ? a.outline.width : 1;
                if (a.content && a.content.stroke) {
                    c.contentStroke = b.renderer.path({ fill: "none", stroke: "none", "stroke-width": a.content.stroke.width });
                    var k = !0 === a.content.stroke.onFront;
                }
                a.background &&
                    ((c.caBackgroundPanel = b.panel({ padding: h / 2 })),
                    (c.caBackground = b.rect(ve({ fill: "rgba(0,0,0,0)", shadow: !1 })).add(c.caBackgroundPanel)),
                    (a.contentHolderFront || k) && c.contentStroke.add(c.caBackgroundPanel),
                    a.contentHolderFront || g.push(c.caBackgroundPanel));
                var l = function (a) {
                    return ve(b.panel({ type: "panel" })).attr({ x: h / 2, y: h / 2 });
                };
                a.axisMarkers && ((c.axisMarkersBehind = l()), (c.axisMarkersFront = l()));
                a.gridLines && ((c.gridLinesBehind = l()), (c.gridLinesFront = l()));
                c.dataContent = l();
                f = Kd({});
                f = c.contentHolder = b.panel(e.content.holder.stretch ? ve(f) : f);
                var m = function (b) {
                    return b && g.push(b);
                };
                m(c.gridLinesBehind);
                !a.axis && a.contentHolderFront ? (m(c.axisMarkersBehind), (c.axisContentBehind = l()), g.push(c.axisContentBehind)) : m(c.axisMarkersBehind);
                g.push(c.dataContent);
                m(c.gridLinesFront);
                m(c.axisMarkersFront);
                !a.axis && a.contentHolderFront && ((c.axisContentFront = l()), g.push(c.axisContentFront));
                c.content = b.panel(ve(Kd({ val: g }))).add(f);
                a.contentOverlay && (c.contentOverlay = b.panel(ve(Kd({}))).add(f));
                !a.contentHolderFront && !1 === k && c.contentStroke.add(f);
                a.annotationLayer && (c.anHolder = b.panel(ve(Kd({}))).add(f));
                a.overflow && ((c.topOverflow = b.panel()), (c.leftOverflow = b.panel()), (c.rightOverflow = b.panel()), (c.bottomOverflow = b.panel()));
                k = function (a) {
                    if (!a) return a;
                    var c = b.panel({ zIndex: Pt.axis });
                    a.add(c);
                    return c;
                };
                k = {
                    type: "grid",
                    val: [
                        [b.panel(), k(c.topAxes), b.panel()],
                        [k(c.leftAxes), f, k(c.rightAxes)],
                        [b.panel(), k(c.bottomAxes), b.panel()],
                    ],
                };
                a.contentHolderFront && ((c.contentHolderBehind = b.panel()), (c.contentHolderFront = b.panel()));
                c.grid = !a.axis && a.contentHolderFront ? b.panel({ val: [c.caBackgroundPanel, c.contentHolderBehind, f, c.contentHolderFront] }) : a.axis ? b.panel(e.content.holder.stretch ? ve(k) : k) : f;
                c.mainStacks = a.overflow
                    ? b.panel({
                          type: "stack:y",
                          val: [
                              Kd({ val: a.title ? [c.topOverflow, { type: "stack:y", yAlignment: "bottom", val: [c.titleBoxPanel] }] : [c.topOverflow] }),
                              { type: "stack:x", val: [Kd({ val: [c.leftOverflow] }), c.grid, Kd({ val: [c.rightOverflow] })] },
                              Kd({ val: [c.bottomOverflow] }),
                          ],
                      })
                    : c.grid;
                return c;
            };
            return a;
        })(),
        Rm,
        Qt = { custom: 1e3, AxisMarker: 1200 },
        Sm = function (a) {
            var c = a.point,
                b = a.yVal;
            a = a.color || c.tokenValue("%color");
            c = df(a);
            return { value: b, label: { color: 0.65 < c ? "#000" : "#fff" }, fill: a, outline: { color: 0.85 < c ? "#d3d3d3" : a }, gridLine: { color: a } };
        },
        Tm = (function () {
            function a(a) {
                this.chartArea = a;
                this.boxes = [];
                this.labelBoxes = [];
                this.paths = [];
                this._allBoxes = void 0;
                this.anyColLabelOverflow = !1;
            }
            a.prototype.addIdBox = function (a, b) {
                b.id = a;
                this.addBox(b);
            };
            a.prototype.addBox = function (a) {
                a && 4 === a.length && this.boxes.push(a);
            };
            a.prototype.addBodyBox = function (a) {
                this.addBox(a);
            };
            a.prototype.addLabelBox = function (a, b) {
                a && 4 === a.length && ((a.id = b), this.labelBoxes.push(a));
            };
            a.prototype.reset = function () {
                this.boxes = [];
                this.labelBoxes = [];
                this._allBoxes = void 0;
                this.anyColLabelOverflow = !1;
            };
            a.prototype.collideAllExcept = function (a, b) {
                if (Yc(this.boxes, a) || Yc(this.labelBoxes, a)) return !0;
            };
            a.prototype.collideAll = function (a, b) {
                if (Yc(this.boxes, a, b) || Yc(this.labelBoxes, a, b)) return !0;
            };
            a.prototype.collideLabels = function (a, b) {
                return Yc(this.labelBoxes, a, b) ? !0 : !1;
            };
            a.prototype.alignAvoid = function (a, b) {
                a = vh(a, this.boxes, b);
                return vh(a, this.labelBoxes, b);
            };
            return a;
        })(),
        ZC = (function (a) {
            function c(b, c) {
                var d = a.call(this, b.chart, c, [b, c]) || this;
                d.series = b;
                d.attribs = { point: {}, states: {} };
                d.kind = "Point";
                d.visuals = { marker: void 0, rect: void 0, body: void 0, rectComplete: void 0, errorY: void 0, errorX: void 0, errorXV: void 0, errorYV: void 0, label: void 0, labelConnector: void 0 };
                d._state = "";
                d.info = {};
                d.isMousedOver = !1;
                d.chart = b.chart;
                d.x = c.x;
                d.y = c.y;
                d.name = c.name;
                d._i = c._i;
                d._state = "";
                (d.selected = c.selected) && Jl(d, !0);
                return d;
            }
            K(c, a);
            c.prototype.init = function (a, c) {
                this.series = a;
                this._i = c._i;
                this.defaultMutable = !0;
            };
            c.prototype.options = function (a, c) {
                var b = this.series,
                    d = !0,
                    g = this.optionsGetter(a);
                if ("NotGetter" !== g) return g;
                if ("object" === typeof a.mapData && (this.setMapData(a.mapData), 1 === pa(a).length)) return this;
                a = Sa(a, "map,mapData,geometry");
                g = pa(a);
                0 < gc(g, Js).length ? b.seriesDirty.pointData(!0) : 0 < gc(g, Cr).length && b.seriesDirty.pointIndex(!0);
                if (0 < gc(g, bB).length && (t(a.selected) && Jl(this, a.selected), t(a.muted) && "select" !== this._state && this.setState(a.muted ? "mute" : ""), this.chart.isRendered && this.syncLeCheckbox(), 1 === g.length)) {
                    d = !1;
                    var h = !0;
                }
                t(a._i) && (this._i = a._i);
                L(this.userOptions, a);
                h ? L(this.currentOptions, a) : ((b.userPoints[this._i] = this.userOptions), this.genOptions());
                Ll(this);
                if (d && !1 !== c) {
                    b.chartArea.invalidate();
                    b.setDataInfo();
                    c = this.normalizeUpdateOpt({ animation: b.currentOptions.animation }, c);
                    this.chart.redraw(c);
                    var k = !0;
                }
                this.triggerUser("update");
                this.userDefinedExploded = t(this.userOptions.exploded);
                !k && this.afterUpdate(c);
                return this;
            };
            c.prototype.defaultOptions = function () {
                return Kl(this.series, this._i);
            };
            c.prototype.contextOptions = function () {};
            c.prototype.setOptions = function () {
                a.prototype.setOptions.call(this);
                Ll(this);
                return this;
            };
            c.prototype.setState = function (a, c) {
                var b = this,
                    d = b.series,
                    g = b.chart;
                a = Ml(b, a);
                var h = {};
                if (t(null === c || void 0 === c ? void 0 : c.animation)) {
                    A(h, !1 === c.animation ? { duration: 0 } : c.animation);
                    var k = !!h.duration;
                }
                if (a !== b._state) {
                    c = b.userDefinedExploded;
                    var l = (b.coord() || {}).styleSet || d.getPointAttr(this),
                        m = l.pointAttr,
                        n = l.svAttr;
                    l = function (a) {
                        var b = a.rootPanel;
                        return b ? b.rect || b.el : a;
                    };
                    var p;
                    (p = b.visuals.body) && (l = l(p)) && l.attr && l.attr(A(k ? { animation: h } : {}, m[a]));
                    w(["errorY", "errorX", "errorXV", "errorYV"], function (c) {
                        (p = b.visuals[c]) && p.attr(A(k ? { animation: h } : {}, n[a]));
                    });
                    l = b.selected;
                    var q = (b.selected = "select" === a);
                    b._state = a;
                    var r = d.info.type.isPie,
                        u = b.userDefinedExploded;
                    q && !l
                        ? (b.triggerUser("select"), g._pointSelection(), r && !u && b.options({ exploded: !0 }), m[a] || Ma.emit("warning", d.name || d.id, "pointSelectNoAttrs", { data: [b.options("id")], container: d.chart.getWrapper() }))
                        : !q && l && (b.triggerUser("unselect"), g._pointSelection(), r && !u && b.options({ exploded: !1 }));
                    b.userDefinedExploded = c;
                }
            };
            c.prototype.select = function (a, c, e) {
                a = t(a) ? a : !this.selected;
                Jl(this, a, e);
            };
            c.prototype.mouseOver = function (a) {
                var b = this.chart,
                    c = C(a, "eventArgs");
                if (!this.isMousedOver && !1 !== this.series.options("mouseTracking.enabled")) {
                    this.isMousedOver = !0;
                    c = this.triggerUser("mouseOver", c);
                    !1 !== c && "select" !== this._state && this.setState("hover");
                    var f = b.hoveredPoint;
                    b.hoveredPoint = this;
                    f && f !== this && f.mouseOut(a);
                    a = this.mouseOverOutCursor();
                    b.setCursor(a.over);
                    return c;
                }
            };
            c.prototype.mouseOut = function (a) {
                var b = C(a, "eventArgs"),
                    c = this.series;
                this.isMousedOver = !1;
                if (!this._cursorCaptured) {
                    if (C(c.currentOptions, "mouseTracking.sticky")) var f = (f = this.chart.hoveredPoint) ? f.series === c : !1;
                    f || ("select" !== c.state && c.setState(""), c.tooltip.hideTooltip(), !1 === f && c.triggerUser("mouseOut", a));
                    a = this.triggerUser("mouseOut", b);
                    !1 !== a && "select" !== this._state && (this.setState(""), c.visualizer.hideHaloMo());
                    this.chart.setCursor();
                    return a;
                }
            };
            c.prototype.click = function (a) {
                var b = this.currentOptions.nativeClick,
                    c = C(a, "eventArgs"),
                    f = this.series.chartArea;
                if (!1 !== this.series.options("mouseTracking.enabled")) {
                    var g = { eventArgs: a.eventArgs, currentTarget: this };
                    L(g, f.clickData(g));
                    f = this.series.currentOptions.pointSelection;
                    a = a.accumulate || (c && c.ctrlKey);
                    !1 !== this.triggerUser("click", g) && (b && b.call(this, g), f && this.select(void 0, void 0, a), this.syncLeCheckbox());
                }
            };
            c.prototype.mouseOverOutCursor = function () {
                var a = this.currentOptions,
                    c = this.series.currentOptions,
                    e = a.cursor || c.cursor;
                c = c.pointSelection;
                a = this.hasUserEvent("click") || a.nativeClick;
                var f = { over: void 0, out: "initial" };
                if (e || c || a) f.over = e || "pointer";
                return f;
            };
            c.prototype.genOptions = function () {
                if (this.currentOptions.mapDataId && this.userOptions.mapDataId && this.currentOptions.mapDataId === this.userOptions.mapDataId) {
                    var a = this.currentOptions.map,
                        c = this.userOptions.map,
                        e = void 0,
                        f = void 0;
                    delete this.currentOptions.map;
                    delete this.userOptions.map;
                    this.userOptions.mapData &&
                        this.currentOptions.mapData &&
                        this.userOptions.mapData !== this.currentOptions.mapData &&
                        this.userOptions.mapData.id === this.currentOptions.mapData.id &&
                        ((e = this.currentOptions.mapData), (f = this.userOptions.mapData), delete this.currentOptions.mapData, delete this.userOptions.mapData);
                    this.currentOptions = A(this.defaultOptions(), this.userOptions);
                    this.currentOptions.map = a;
                    this.userOptions.map = c;
                    e && f && ((this.currentOptions.mapData = e), (this.userOptions.mapData = f));
                } else this.currentOptions = A(this.defaultOptions(), this.userOptions);
            };
            c.prototype.getMapData = function () {
                return C(this.info, "map") || C(this.userOptions, "mapData") || C(this.userOptions, "map") || {};
            };
            c.prototype.setMapData = function (a) {
                Z(this.info, "map", a);
                return this;
            };
            c.prototype.getPosConfig = function () {
                return {};
            };
            c.prototype.destroy = function () {
                w(this.visuals, function (a) {
                    return a && a.destroy();
                });
                var b = this.legendEntry;
                b && b.destroy();
                this.chart.setCursor();
                a.prototype.destroy.call(this);
            };
            c.prototype.syncLegendItems = function (a) {
                var b = this.series;
                a = 1 / b.points().items.length;
                a = b._i + a * this._i;
                b = b.chart.requestLegend(b);
                var c = this.options("legendEntry.visible");
                !1 === c || ("none" !== b.spMode && !0 !== c) || (this.legendEntry ? this.legendEntry.setColumns() : (this.legendEntry = b.addEntry(this, a)));
            };
            c.prototype.syncLeCheckbox = function () {
                var a;
                if (null === (a = this.legendEntry) || void 0 === a ? 0 : a.checkbox) this.legendEntry.updateCheckbox(), this.legendEntry.checkbox.refresh();
            };
            c.prototype.getIconVisual = function (a, c, e) {
                var b = this.series;
                c !== this && (c = void 0);
                return b.getIconVisual(a, c || this, e);
            };
            c.prototype.iconName = function () {
                return this.series.iconName();
            };
            c.prototype.getIconTag = function () {
                var a = this.series.info.style;
                return "<icon name=" + this.iconName() + " fill=" + a.base.color + " verticalAlign=middle width=20 height=10>";
            };
            c.prototype.styleIconVisual = function (a) {
                var b = this.series.getPointAttr(this.currentOptions);
                a && a.base.attr(b.pointAttr[""]);
            };
            c.prototype.replaceTokens = function (a, c) {
                return ir(a, this.series, this, c || this.series.getFormatInfo());
            };
            c.prototype.tokenValue = function (a) {
                return this.replaceTokens({ token: a });
            };
            c.prototype.remove = function (a) {
                var b = this.series,
                    c = Sf(b.userPoints, { id: this.options("id") });
                -1 < c && (b.removePoint(c, a), this.triggerUser("remove"));
            };
            c.prototype.zoomTo = function (a) {
                var b = this.series;
                if (b.ctManager.isType("calendar")) b.zoomTo(a);
                else if (b.ctManager.isType("map")) {
                    var c = this.getMapData();
                    (c = C(c, "bbox") || C(c, "properties.bbox")) && b.chart.zoom(c, a);
                } else
                    b.chartArea._isStaticDragArea
                        ? ((c = this.coord()), (c = 4 === c.xyz.length ? va(c.xyz) : c.xyz.slice(0, 2)), (c = Rn(c) ? { center: Xc(c, b.visualizer._coordOffset) } : void 0))
                        : ((c = b.indexer.getValue("pos", this._i).xyz.slice(0, 2)), (c = Rn(c) ? { pos: c } : void 0)),
                        c && b.chartArea.zoom(c, a);
            };
            c.prototype.setRootVisuals = function () {
                return this;
            };
            c.prototype.coord = function () {
                return this.series.indexer.getItem(this._i).coordinates;
            };
            c.prototype.bbox = function () {
                var a = this.coord();
                if (a.pathObj && a.pathObj.isPath) var c = a.pathObj.bbox();
                else {
                    var e = O(a.pathD) ? a.pathD : a.pathD.pop ? a.pathD.join(" ") : void 0;
                    a.htShape ? (c = a.htShape.bbox()) : O(e) ? (e = -1 < e.indexOf("url") ? Cc(ha(this.visuals.body.getBbox())) : e) && (c = kl(e)) : a.pathD.bbox && (c = a.pathD.bbox());
                }
                !c && a.xyz && ((c = a.xyz.slice(0, 2)), c.push(0, 0));
                e = [];
                Xe(e, a.sv, a.svs);
                var f = [c];
                Xe(f, C(a, "collision.body"));
                e.length && f.push(Ua(e));
                1 < f.length && (c = Ea(f));
                return c;
            };
            return c;
        })(jc),
        $C = { top: "bottom", bottom: "top", left: "right", right: "left", center: "center", middle: "middle" },
        aD = { top: "right", bottom: "left", left: "top", right: "bottom", center: "middle", middle: "center" },
        bD = function () {
            var a = function (a) {
                    a = a.split(",");
                    return B(a, function (a) {
                        return { align: "incenter", vAlign: a };
                    });
                },
                c = { normal: {}, range: {}, stacked: {}, ganttCandle: {} };
            w(
                {
                    normal: { auto: "outtop,intop,outbottom", others: "inmiddle,inbottom" },
                    range: { auto: "outtop,inmiddle,outbottom", others: "intop,inbottom" },
                    ganttCandle: { auto: "inmiddle,outtop,outbottom", others: "" },
                    stacked: { auto: "inmiddle", others: "intop,inbottom" },
                },
                function (b, d) {
                    w(b, function (b, f) {
                        return (c[d][f] = a(b));
                    });
                }
            );
            return c;
        },
        cD = function () {
            var a = {
                normal: {
                    auto: [
                        { align: "left", vAlign: "top" },
                        { align: "center", vAlign: "top" },
                        { align: "right", vAlign: "top" },
                        { align: "left", vAlign: "middle" },
                        { align: "right", vAlign: "middle" },
                        { align: "left", vAlign: "bottom" },
                        { align: "center", vAlign: "bottom" },
                        { align: "right", vAlign: "bottom" },
                    ],
                    others: [{ align: "incenter", vAlign: "inmiddle" }],
                },
            };
            w(a.normal.auto, function (c, b) {
                a.normal.others.push({ align: "in" + c.align, vAlign: "in" + c.vAlign });
            });
            (function (a) {
                w(a, function (b, c) {
                    b = a[c];
                    b.align = "out" + b.align;
                    b.vAlign = "out" + b.vAlign;
                });
            })(a.normal.auto);
            return a;
        },
        Jf = function (a) {
            return "i" === a[0] ? ["in", a.substr(2).toLowerCase()] : ["out", a.substr(3).toLowerCase()];
        },
        Um = function (a, c, b, d, e) {
            c = e ? c : b;
            a = e ? a.align : a.vAlign;
            return (d && d[0] !== a[0]) || (c && c.toLowerCase() !== Jf(a)[1]);
        },
        Mr = function (a) {
            return "i" === a.align[0] && "i" === a.vAlign[0];
        },
        Rt = function (a, c) {
            a = Jf(a);
            return a[0] + c[a[1]];
        },
        Nc = function (a, c) {
            var b = c ? aD : $C;
            return { align: Rt(c ? a.vAlign : a.align, b), vAlign: Rt(c ? a.align : a.vAlign, b), rotation: a.rotation || 0 };
        },
        qz = function (a, c, b, d, e, f) {
            b = c.slice(0);
            e = (function (a, b) {
                var c = [],
                    d = va(a);
                a = Yb(a);
                var e = { u: [d[0], a[1]], d: [d[0], a[3]], l: [a[0], d[1]], r: [a[2], d[1]] };
                w(["u", "d", "l", "r"], function (a) {
                    var d;
                    (d = b[a]) && c.push(mb(e[a], [d, d]));
                });
                return c;
            })(c, e);
            b = H([b], d, e);
            f = (f = f.rectComplete) ? ha(f) : void 0;
            b = Ea(b);
            c = gk(c, H(d, e, f ? [f] : []));
            a.isHoriz() ? ((c = Ye(c, [c[2] - 10, c[3]])), (b = Ye(b, [b[2] + 10, b[3]]))) : ((c = Ye(c, [c[2], c[3] - 10])), (b = Ye(b, [b[2], b[3] + 10])));
            return { in: c, out: b };
        },
        fz = function (a, c, b, d, e) {
            a = rb(Ea(H([c], b)), -5);
            return { in: gk(c, b), out: a, outCorner: rb(a, 3) };
        },
        gz = function (a, c, b, d, e) {
            a = a.isHoriz();
            var f = e.getValue("coordinates", d);
            d = e.getValue("coordinates", d - 1);
            f && d && ((b = b.slice(0)), (d = d.xyz), (f = f.xyz), a ? b.push(Ua([f, [d[0], f[1]]])) : b.push(Ua([f, [f[0], d[1]]])));
            return { in: gk(c, b), out: rb(Ea(H([c], b)), -5) };
        },
        dD = function (a, c, b, d) {
            var e = c.currentOptions.label || {},
                f = e.align,
                g = e.verticalAlign,
                h = "auto" === e.placement ? void 0 : e.placement;
            d = f || g || h;
            var k = c.series.info.hasYRanges,
                l = a.isHoriz(),
                m = c.series;
            c = m.info;
            var n = c.hasSubvalues;
            a = m.yAxis.isStacked();
            var p = "category" === m.xAxis.type;
            m = bD();
            c = n || (l && p && c.type.zStacked);
            if (e.alignSequence) return e.alignSequence;
            if (h && ((l && f) || (!l && g))) return (d = "i" === h[0] ? "in" : "out"), (e = l ? [{ align: d + f, vAlign: "inmiddle" }] : [{ align: "incenter", vAlign: d + g }]);
            a = m[a ? "stacked" : c ? "ganttCandle" : k ? "range" : "normal"];
            c = function (a) {
                return {
                    u: function (a) {
                        return a;
                    },
                    d: function (a) {
                        return B(a, function (a) {
                            return Nc(a);
                        });
                    },
                    r: function (a) {
                        return B(a, function (a) {
                            return Nc(a, !0);
                        });
                    },
                    l: function (a) {
                        return B(a, function (a) {
                            return Nc(Nc(a, !0));
                        });
                    },
                }[b](a);
            };
            e = c(a.auto);
            k = function (a) {
                return !Um(a, f, g, h, l);
            };
            d && ((e = ea(e, k)), (d = c(a.others)), e.push.apply(e, H(ea(d, k))));
            return e;
        },
        hz = function (a, c, b) {
            c = c.currentOptions.label || {};
            var d = c.align,
                e = c.verticalAlign,
                f = "auto" === c.placement ? void 0 : c.placement;
            a = d || e || f;
            b = cD();
            if (c.alignSequence) return c.alignSequence;
            if (d && e) return (a = f && "i" === f[0] ? "in" : "out"), [{ align: a + d, vAlign: a + e }];
            b = b.normal;
            c = b.auto;
            var g = function (a) {
                var b = d ? Um(a, d, e, f, !0) : !0;
                a = e ? Um(a, d, e, f, !1) : !0;
                return b && a;
            };
            a &&
                ((c = ea(c, function (a) {
                    return !g(a);
                })),
                c.push.apply(
                    c,
                    H(
                        ea(b.others, function (a) {
                            return !g(a);
                        })
                    )
                ));
            return c;
        },
        eD = function (a, c, b, d) {
            var e, f;
            t(b)
                ? (w(a, function (a) {
                      var g = Ia(c, va(a.box)),
                          k = 0;
                      g = Math.abs(ws(b - g + 180, 360) - 180);
                      if (!t(f) || g < f) (e = a), (f = g);
                      45 > g ? (k += 2) : (135 < g && (k += 1), d.length && (ro(a.box, d[0]) && (k -= 2), d[1] && ro(a.box, d[1]) && (k -= 2)));
                      a.score = k;
                  }),
                  e && e.score++)
                : St(a, c);
        },
        St = function (a, c) {
            var b,
                d,
                e = t(c);
            w(a, function (a) {
                var f = 0,
                    h = Jf(a.vAlign)[1],
                    k = Jf(a.align)[1];
                if (e) {
                    var l = va(a.box);
                    l = Xb(c, l);
                    if (!t(d) || l < d) (d = l), (b = a);
                }
                "center" === k && (f++, "top" === h && f++);
                "middle" === h && f++;
                a.score = f;
            });
            e && (b.score += 3);
        },
        fD = function (a, c, b, d, e, f) {
            w(a, function (a) {
                var g = 0,
                    k = a;
                e ? (k = f ? Nc(a, !0) : Nc(Nc(a, !0))) : f && (k = Nc(a));
                var l = Jf(k.vAlign)[1];
                k = Jf(k.align)[1];
                if (b || d) {
                    var m = b ? "right" : "left";
                    c ? ("bottom" === l && k === m ? (g += 2) : "middle" === l && k === m ? g++ : "bottom" === l && "center" === k && g++) : (k === m && g++, "bottom" !== l && g++);
                } else c ? ("bottom" === l && "center" === k ? (g += 2) : "middle" === l ? g++ : "top" === l && --g) : ("center" === k && g++, "top" === l && g++);
                a.score = g;
            });
        },
        kz = function (a, c, b, d, e) {
            c = ha(c.coordRect);
            va(c);
            St(a);
            a = sa(a, function (a) {
                return a.score;
            });
            a.reverse();
            return a;
        },
        jz = function (a, c, b, d, e) {
            d = function (a) {
                return e.getValue("coordinates", a);
            };
            c = d(b._i);
            var f = d(b._i - 1),
                g = d(b._i + 1);
            d = [];
            b.series.ctSvIs("lineSeriesType", "step") || (f && d.push([c.xyz, f.xyz]), g && d.push([c.xyz, g.xyz]));
            if (2 === d.length) {
                b = Ia(d[0][0], d[0][1]);
                var h = Ia(d[1][0], d[1][1]);
                h = ws(h - b + 180, 360) - 180;
                h = b + h / 2 + 180;
            } else d.length && (h = Ia(d[0][1], d[0][0]));
            eD(a, c.xyz, h, d);
            a = sa(a, function (a) {
                return a.score;
            });
            a.reverse();
            return a;
        },
        iz = function (a, c, b, d, e) {
            var f = function (a) {
                return e.getValue("coordinates", a);
            };
            d = f(b._i);
            var g = f(b._i - 1);
            f = f(b._i + 1);
            var h = b.series;
            b = 0 === h._i;
            var k = h.yAxis;
            h = k.isStackedFull();
            k = k.isStacked();
            c = c.isHoriz();
            fD(a, k && !(k && !h && b), !g, !f, c, c ? d.xyz[0] < d.xyzs[0] : d.xyz[1] > d.xyzs[1]);
            a = sa(a, function (a) {
                return a.score;
            });
            a.reverse();
            return a;
        },
        Tt = function () {
            return { opacity: 0.9, width: 3, color: "#dedeac" };
        },
        Ut = function () {
            return { axes: "x,y", values: "x,y", requiredData: "x,y", supportedData: "x,y,subvalue,subvalueX", privateAxes: "", customAxisOptions: {} };
        },
        mz = "circle diamond four-point-star five-point-star six-point-star seven-point-star".split(" "),
        Ie = (function (a) {
            function c(b) {
                var c = a.call(this, b) || this;
                c.series = b;
                c.kind = "base";
                c.typeConfig = Ut();
                c.typeConfigCtSpecific = {
                    chartType: { gauge: { privateAxes: "x", customAxisOptions: { x: {} } }, radar: { x: { isRadial: !0, scale: { range: { padding: 0 } } }, y: { isRadial: !0 } } },
                    radarType: { polar: { x: { radialInterpolation: "spider" } }, spider: { x: { radialInterpolation: "spider" } } },
                    gaugeType: {},
                    linearGaugeType: { horizontal: {} },
                };
                c.shapeLabelMeta = {};
                c.debugBBox = !1;
                c.staticBodyDGetter = void 0;
                c.staticSeriesBodyInfo = xc;
                c.staticPointCompleteVisInfo = xc;
                c.coordDirty = !0;
                c.coordinates = {};
                c.paths = { areas: void 0, lines: void 0 };
                c.pointValueParser = Ai;
                c.collidePointBoxes = !0;
                c.getLabelHitTest = function () {
                    return function (a, b, c) {
                        var d = a.meta.label;
                        a = a.meta.labelAttr;
                        var e = d && d.slice(2);
                        return d && Ad([d[0] + (a.offsetX || 0), d[1] + (a.offsetY || 0), e[0], e[1]], [b, c]);
                    };
                };
                Lr(b);
                c.debounce = new Ae();
                return c;
            }
            K(c, a);
            c.prototype.getTypeConfigDefault = function () {
                return Ut();
            };
            c.prototype.getTypeConfig = function (a) {
                if (!this._typeConfigCache || a) {
                    var b = this.series;
                    a = this.getTypeConfigDefault();
                    var c = this.typeConfigCtSpecific,
                        f,
                        g,
                        h = this.series.ctManager.getSettingChecker(b),
                        k;
                    for (k in c) (b = c[k]), (f = h(k)) && (g = b[f]) && A(a, g);
                    c && (delete a.chartTypeSpecific, A(a, c));
                    this._typeConfigCache = a;
                }
                return this._typeConfigCache;
            };
            c.prototype.pointArrayExpander = function (a) {
                return { x: a[0], y: a[1] };
            };
            c.prototype.pointLeVisible = function (a) {
                return !0;
            };
            c.prototype.contextDefaults = function () {};
            c.prototype.eachPoint = function (a) {
                for (var b = this.series.points().items, c = 0, f = b.length; c < f && !1 !== a(b[c], b[c]._i); c++);
            };
            c.prototype.render = function (a, c) {
                var b = this.series,
                    d = b.currentOptions,
                    g = this,
                    h = b.info.type,
                    k = (b.pane || b.chartArea).collisionManager,
                    l,
                    m = g.isHoriz(),
                    n,
                    p,
                    q = b.rootVisuals,
                    r = b.info,
                    u = r.type,
                    x = N(b.chart.currentOptions, ["navigator", "enabled"]),
                    v = b.renderer;
                if (t(g.lastRenderVisibility) && !g.lastRenderVisibility && !b.isVisible) return g;
                var y = z(N(b.currentOptions, ["defaultPoint", "subvalue", "line", "length"]), 20),
                    D = y,
                    E = function (c) {
                        var d;
                        c &&
                            (d = c(g, a)) &&
                            (U = d.d) &&
                            (((l = { d: U, zIndex: t(d.zIndex) ? d.zIndex : b.zIndex + gb.series }), (l = g.render_applyDynamicAttrVals([l, d.state, { animation: d.animation }], a, d.state)), (n = d.visGetter()))
                                ? (l.animation && (c = g.getAnimatorOptions(d.shapeName)) && ((l.animation.pathAnimation = c), (c.fromD = N(n, ["data", "attrs", "d"])), n.finishAnimation()), n.attr(l))
                                : (d.visSetter((n = v.path(l))),
                                  n.add(d.target),
                                  w(d.events, function (a, b) {
                                      return n.on(b, a);
                                  })));
                    },
                    F = q.points;
                v = v.renderer;
                a = Pa(a) ? a : {};
                q = F && F.pixelCorrection;
                b.state = d.selected ? "select" : d.muted ? "mute" : b.state || "";
                if (u.drawArea || u.drawLine)
                    q && ("step" === b.ctSv("lineSeriesType") || (u.drawMarker && "polar" !== b.ctSv("radarType") && !1 !== N(b.currentOptions, ["defaultPoint", "marker", "visible"])))
                        ? (a.coordinatesCorrection = function (a) {
                              return ue(F, a, 1);
                          })
                        : (a.coordinatesCorrection = function (a) {
                              return a.map(function (a) {
                                  return [a[0], a[1]];
                              });
                          });
                !c && b.preRender(a);
                a.coordinatesCorrection = null;
                w(g.staticSeriesBodyInfo, E);
                var R = b.points().items,
                    C = function (a, b, c, d, e, f) {
                        var g,
                            h = "",
                            k = function (a) {
                                return (m && !f) || (!m && f)
                                    ? [
                                          [a[0], a[1] - e],
                                          [a[0], a[1] + e],
                                      ]
                                    : [
                                          [a[0] - e, a[1]],
                                          [a[0] + e, a[1]],
                                      ];
                            };
                        if (u.drawRect && a) {
                            a = ha(a);
                            var l = po(a, b, 1),
                                n = po(a, c, 1);
                            l || n || (g = wv(a, [b, c]));
                        }
                        g
                            ? w(g, function (a) {
                                  a && a.length && ((h += xa(fb(a))), d && d.labelObstacles.push(Ua(a)));
                              })
                            : ((h = xa(fb([b, c]))), d && d.labelObstacles.push(Ua([b, c])));
                        e && ((h += xa(fb(k(b)))), (h += xa(fb(k(c)))));
                        return h;
                    },
                    wa = this.staticBodyDGetter || lz,
                    U,
                    M,
                    B,
                    J,
                    G,
                    Nb,
                    K,
                    L,
                    I,
                    Q;
                c = function (c, d) {
                    I = R[P.renderOrder[c]];
                    if (!I) return "continue";
                    M = b.indexer.getValue("coordinates", I._i);
                    G = I.visuals;
                    if (M) {
                        var e = I.currentOptions;
                        Nb = Q = M.styleSet || b.getPointAttr(e);
                        M.styleSet = Q;
                        K = Q.svAttr[""];
                        L = !1;
                        p = I._state = e.selected ? "select" : e.muted ? "mute" : I._state || "";
                        c = Q.pointAttr[p];
                        B = M.xyz;
                        J = M.xyzs;
                        M.meta.labelObstacles = [];
                        Q.labelVisible && g.initPointLabel(I, M, Q);
                        r.hasSubvalues && ((D = z(N(e, ["subvalue", "line", "length"]), y)), (D *= z(M.width, M.unclusteredWidth, N(M, ["marker", "size"]), 10) / 100));
                        (x && u.drawMarker && (u.drawLine || u.drawArea)) || (r.hasMaxedMarkerLimit && u.drawMarker && (u.drawLine || u.drawArea) && (e.color || e.outline || e.marker || G.body || (L = !0)));
                        P.isRadial && (L = !1);
                        var f = (d = void 0),
                            q = void 0;
                        if (!L && ((f = M.prev), !f || f.isVisible || M.isVisible || M.everVisible)) {
                            f && !f.isVisible && M.isVisible && G.body && f.pathD && G.body.attr({ d: f.pathD, animation: !1 });
                            U = M.pathObj || M.path || wa(g, I, M, F, c.r, Q.drawMarker);
                            M.pathD = U;
                            var t = (f = void 0);
                            if ((t = M.meta.marker)) f = 0 < t[2] && 0 < t[3];
                            f || !Np(U)
                                ? ("string" === typeof U && vb(U, "url(")
                                      ? ((d = U.replace(/url\(/g, "").replace(/\)/g, "")), (l = { src: d, cx: B[0], cy: B[1], zIndex: b.zIndex + gb.body }))
                                      : U.arcShape && "object" === typeof U
                                      ? ((l = A(Oa(U.arcShape), { zIndex: b.zIndex + gb.body })), (q = !0))
                                      : (l = { d: U, zIndex: b.zIndex + gb.body }),
                                  (l = g.render_applyDynamicAttrVals([l, c], a, c)),
                                  (n = G.body)
                                      ? ((c = g.getPointAnimatorOptions(M, I)) && !ub(c) && ((l.animation.pathAnimation = c), !n.isComposite && n.finishAnimation()), n.attr(l))
                                      : (q && "solid" === b.ctSv("columnType") && (l.shading = "solid"), (G.body = n = q ? v.element("arcShape", l) : d ? v.element("image", l) : v.path(l)), n.add(F)))
                                : (n = G.body) && n.attr({ d: U });
                            if (q && n.hitTest) {
                                var cb = (M.htShape = n);
                                M.hitTest = function (a, b) {
                                    return cb.hitTest(a, b);
                                };
                            } else if (!M.hitTest && O(M.pathD) && !1 !== e.mouseTracking) {
                                var Jc = M;
                                M.hitTest = function (a, b) {
                                    return (Jc.htShape || (Jc.htShape = Aa(Jc.pathD))).hitTest(a, b);
                                };
                            }
                            !1 !== b.isVisible && (k.addBodyBox(N(M, ["collision", "body"])), k.addBox(M.meta.marker));
                        }
                        h.drawMarker ||
                            (!b.currentOptions.forceMarker && !0 !== N(e, ["marker", "visible"])) ||
                            ((Nb = b.getPointAttr(e, !0)),
                            (c = Nb.pointAttr[p]),
                            (U = nz(I, g.getBodyShapeName(I, !0), M, c.r, F)),
                            U.indexOf && vb(U, "url(")
                                ? ((e = (d = b.xAxis) && d.isStackedFull() ? (B[0] + J[0]) / 2 : B[0]), (q = B[1]), (d = U.replace(/url\(/g, "").replace(/\)/g, "")), (l = { src: d, cx: e, cy: q, zIndex: b.zIndex + gb.body }))
                                : ((l = { d: U, zIndex: b.zIndex + gb.marker }), (d = void 0)),
                            (l = g.render_applyDynamicAttrVals([l, c], a, c)),
                            (n = G.marker) ? n.attr(l) : ((G.marker = n = d ? v.element("image", l) : v.path(l)), n.add(F)));
                        if (r.hasSubvalues && !g.isRadial && "ohlc" !== r.type.seriesType) {
                            c = {
                                get: function () {
                                    return G.errorY;
                                },
                                set: function (a) {
                                    return (G.errorY = a);
                                },
                                onX: !1,
                            };
                            d = {
                                get: function () {
                                    return G.errorX;
                                },
                                set: function (a) {
                                    return (G.errorX = a);
                                },
                                onX: !0,
                            };
                            var gd = K["stroke-width"] || 1,
                                rg = D / 2;
                            e = function (c, d) {
                                c = ue(F, c, gd);
                                l = { d: C(M.rect, c[0], c[1], M.meta, "candlestick" !== h.seriesType ? rg : 0, d.onX), zIndex: b.zIndex + gb.error };
                                l = g.render_applyDynamicAttrVals([l, K], a, K);
                                (n = d.get()) ? n.attr(l) : (d.set((n = v.path(l))), n.add(F));
                            };
                            M.sv && M.svs && ((q = M.sv), (f = M.svs), (t = m ? 0 : 1), r.drawRect && (M.sv[t] === M.xyz[t] && (q = M.xyzs), M.svs[t] === M.xyzs[t] && (f = M.xyz)), e([q, f], c));
                            M.svx && M.svxs && e([M.svx, M.svxs], d);
                            c = m ? M.svxv : M.svv;
                            d = m ? M.svv : M.svxv;
                            var Ba = [];
                            if (c) {
                                Ba = [];
                                var Sp = [];
                                w(ue(F, c, gd), function (a) {
                                    a = [
                                        [a[0] - rg, a[1]],
                                        [a[0] + rg, a[1]],
                                    ];
                                    Ba.push.apply(Ba, H(a));
                                    M.meta.labelObstacles.push(a);
                                    Sp.push(a);
                                });
                                l = { d: tg(Sp), zIndex: b.zIndex + gb.error };
                                l = g.render_applyDynamicAttrVals([l, K], a, K);
                                (n = G.errorYV) ? n.attr(l) : ((G.errorYV = n = v.path(l)), n.add(F));
                            }
                            if (d) {
                                Ba = [];
                                var S = [];
                                w(ue(F, d, gd), function (a) {
                                    a = [
                                        [a[0], a[1] - rg],
                                        [a[0], a[1] + rg],
                                    ];
                                    Ba.push.apply(Ba, H(a));
                                    S.push(a);
                                });
                                M.meta.labelObstacles.push(Ua(Ba));
                                l = { d: tg(S), zIndex: b.zIndex + gb.error };
                                l = g.render_applyDynamicAttrVals([l, K], a, K);
                                (n = G.errorXV) ? n.attr(l) : ((G.errorXV = n = v.path(l)), n.add(F));
                            }
                        }
                        r.hasComplete &&
                            E(function (a) {
                                return a.staticPointCompleteVisInfo(a, I, M);
                            });
                        (Q.labelVisible && u.isShape && !b.pane) || u.isAnnotation ? (P.renderLabel(I, Q, M, b.indexer, a), k.addLabelBox(M.meta.label)) : (g.hideVisual(g.getLabelWrapper(G.label, Q)), g.hideVisual(G.labelConnector));
                    } else g.hideVisual(G.body), g.hideVisual(g.getLabelWrapper(G.label, Q));
                    g.hideUnusedPointVisuals(I);
                    I.chart.triggerOptionsApplied("point", I);
                };
                var P = this;
                d = 0;
                for (q = R.length; d < q; d++) c(d);
                g.isRendered = !0;
                g.hideUnused();
                g.lastRenderVisibility = b.isVisible;
                return g;
            };
            c.prototype.renderLabels = function (a, c) {
                c = this.series;
                var b = (c.pane || c.chartArea).collisionManager;
                if (c.info.type.isAnnotation || !((c.chart.isRendered && this.isRendered) || c.isVisible)) return this;
                a = Pa(a) ? a : {};
                a.coordinatesCorrection = null;
                for (var d = c.points().items, g, h, k, l = 0, m = d.length; l < m; l++)
                    if ((k = d[this.renderOrder[l]]))
                        (g = c.indexer.getValue("coordinates", k._i)),
                            (h = k.visuals),
                            g
                                ? ((h = k.currentOptions),
                                  (h = g.styleSet || c.getPointAttr(h)),
                                  h.labelVisible && c.isVisible && (this.renderLabel(k, h, g, c.indexer, a), (h = g.meta.label), this.collidePointBoxes ? b.addLabelBox(h) : h && b.addLabelBox(Hr(g.meta.labelTextBox, h, g.meta.labelAttr))))
                                : (this.hideVisual(h.body), this.hideVisual(h.label)),
                            this.hideUnusedPointVisuals(k);
                this.isRendered = !0;
                this.hideUnused();
                return this;
            };
            c.prototype.getAnimatorOptions = function (a, c) {
                c = this.updateInfo;
                var b = this.series;
                if (c && c.action) {
                    var d = b.ctManager.settingVal("lineSeriesType", b.currentOptions);
                    return { action: c.action, at: c.at, count: z(c.count, 1), del: c.del || 0, type: d, shapeName: a, shift: c.shift || !1, fromD: void 0, pointsLen: b._points.length };
                }
                return null;
            };
            c.prototype.getPointAnimatorOptions = function (a, c) {
                if (this.isRadial && c && "needle" === this.getBodyShapeName(c) && a.coordPrev) {
                    var b = N(this.series, ["pointBodyDGenerator"]);
                    return {
                        needle: {
                            from: a.coordPrev,
                            to: a,
                            gen: function (a) {
                                return b("needle", a);
                            },
                        },
                    };
                }
                return {};
            };
            c.prototype.renderDebug = function (a, c, e) {};
            c.prototype.isHoriz = function () {
                var a = this.series;
                return (a.pane || a.chartArea).isHoriz;
            };
            c.prototype.renderLabel = function (a, c, e, f, g) {
                dz(this, a, c, e, f, g);
            };
            c.prototype.initPointLabel = function (a, c, e) {
                var b = this.series,
                    d = c.meta,
                    h = a.visuals,
                    k = this.kind,
                    l = (b.pane || b.chartArea).collisionManager,
                    m = b.info.style.base,
                    n = b.renderer,
                    p = b.rootVisuals,
                    q = b.info.type,
                    r = this.isHoriz();
                if (!d.labelSize) {
                    b = N(a.currentOptions, ["label", "text"]) || b.info.labelTextInfo.label;
                    "function" === I(b) && (b = b(a) || "");
                    b = a.replaceTokens(b);
                    d.labelText = b;
                    a = qc(e.label, "pie" === k ? ["offset"] : void 0, m);
                    k = {};
                    a.autoWrap = "none";
                    a.val = b;
                    if ((b = N(d, ["label", "bounds"])))
                        this.collidePointBoxes ? ((k.width = b[2]), (k.height = b[3])) : ((k.maxWidth = b[2]), (k.maxHeight = b[3]), (k.width = null), (k.height = null)),
                            (k.x = b[0]),
                            (k.y = b[1]),
                            id(a, { xAlignment: "center", yAlignment: "middle" }),
                            (a.maxWidth = b[2]),
                            (a.maxHeight = b[3]),
                            (a.width = null),
                            (a.height = null);
                    n = (m = !h.label) ? (h.label = n.textStack().attr(A({}, a))) : h.label.attr(A({}, a));
                    h = n.composeCombinations()[0].minSize;
                    h = [h.width.px, h.height.px];
                    var u = 10 <= Math.max(h[0] - k.maxWidth, h[1] - k.maxHeight);
                    m ? (u ? ((p = this.wrapLabel(n, k, e).add(p.points)), (h[0] = k.maxWidth), (h[1] = k.maxHeight)) : (p = n.attr(k).add(p.points))) : (p = this.getLabelWrapper(n, e).attr(k));
                    (!q.drawRect && "ohlc" !== this.kind) ||
                        r ||
                        (this.isRadial ? ((c = c.pathOptions), (q = (c.innerR + c.r) / 2), (c = Xb(Jb(c.cxy, c.start, q), Jb(c.cxy, c.end, q)))) : (c = c.rect.width), h[0] > c && (l.anyColLabelOverflow = !0));
                    !N(e, ["label", "autoHide"]) &&
                        d.shape &&
                        ((e = !r || l.anyColLabelOverflow),
                        (l = d.shape[2]),
                        (r = d.shape[3]),
                        (c = e ? l / h[1] : r / h[1]),
                        (q = { fitWidth: null, fitHeight: null }),
                        0.5 < c && ((c = Math.floor(100 * c) / 100), 1 > c && ((h[0] *= c), (h[1] *= c)), e && (q.fitHeight = l), !e && (q.fitHeight = r)),
                        p.attr(q));
                    this.collidePointBoxes || ((k.width = b[2]), (k.height = b[3]), (k.maxWidth = null), (k.maxHeight = null), p.attr(A({}, k)), (d.labelTextBox = [0, 0, Math.min(b[2], h[0]), Math.min(b[3], h[1])]));
                    delete a.width;
                    delete a.height;
                    d.labelAttr = a;
                    d.labelSize = b ? [b[2], b[3]] : h;
                    d.labelInternalSize = h;
                }
                return this;
            };
            c.prototype.wrapLabel = function (a, c, e) {
                return a.attr(c);
            };
            c.prototype.getLabelWrapper = function (a, c) {
                return N(c, ["label", "wrapped"]) ? a.parent.parent : a;
            };
            c.prototype.possibleLabelPositions = function (a, c, e, f, g) {
                return ez(this, a, c, e, f, g);
            };
            c.prototype.getBodyShapeName = function (a, c) {
                return this.series.getPointMarkerType(a.currentOptions);
            };
            c.prototype.updatePointsGlobals = function () {
                var a = this.series.pane;
                return (this.pointsGlobals = a ? a.getGlobalOffsets() : void 0);
            };
            c.prototype.setCoordinates = function (a, c) {
                function b(a, b) {
                    void 0 === b && (b = { xIsSorted: !0, isFinal: !1 });
                    var c = b.isFinal,
                        e = b.xIsSorted,
                        f = N(h.currentOptions, ["line", "tension"]);
                    f = t(f) ? ua(Y(0.7, 1, 0, 1, f), 0, 1) : 0.8;
                    var g = {
                        spline: function (a) {
                            return [bx(a, f)];
                        },
                        step: r
                            ? function (a) {
                                  return fb(a);
                              }
                            : function (a, b) {
                                  return ax(a, b, !e);
                              },
                        normal: function (a) {
                            return fb(a);
                        },
                    }[Q ? "spline" : U];
                    if (R.drawLine || R.drawArea) {
                        b = [];
                        var k = function (a, b, c) {
                            void 0 === c && (c = !1);
                            if (c) return xa(g(a)) + "Z" + xa(g(b)) + "Z";
                            b.reverse();
                            a.push.apply(a, H(b));
                            return xa(g(a)) + "Z";
                        };
                        B.length &&
                            ((B = d ? d(B) : B),
                            K.push(B),
                            (a = a || 0 < L.length),
                            R.drawLine &&
                                (r
                                    ? c &&
                                      ((b = K.slice(0)),
                                      1 === K.length
                                          ? I.push(xa(g(B, O)) + (a ? "" : "Z"))
                                          : ((a = b[b.length - 1].slice(0)),
                                            a.push.apply(a, H(b[0])),
                                            (a = xa(g(a, O))),
                                            I.push(a),
                                            2 < K.length &&
                                                ((a = K.slice(1, K.length - 1)),
                                                w(a, function (a) {
                                                    I.push(xa(g(a, O)));
                                                }))))
                                    : 1 < B.length && I.push(g(B, O))),
                            R.drawArea &&
                                (r
                                    ? (Nb.push({ s: J, e: B }),
                                      c &&
                                          ((L = []),
                                          1 === Nb.length
                                              ? ((J = d ? d(J) : J), L.push(k(J, B, !0)))
                                              : ((a = Nb[Nb.length - 1]),
                                                (c = a.s.slice(0)),
                                                (a = a.e.slice(0)),
                                                (b = Nb[0].s),
                                                a.push.apply(a, H(Nb[0].e)),
                                                c.push.apply(c, H(b)),
                                                L.push(k(c, a)),
                                                2 < Nb.length &&
                                                    ((c = Nb.slice(1, Nb.length - 1)),
                                                    w(c, function (a) {
                                                        L.push(k(a.s, a.e));
                                                    })))))
                                    : (J.reverse(), (J = d ? d(J) : J), (b = [g(B, O)]), b.push(g(J, !O).join(" ").replace(/M/gi, "L")), L.push(xa(b) + "Z"))));
                    }
                    B = [];
                    J = [];
                }
                var d = c ? c.coordinatesCorrection : null,
                    g = this,
                    h = g.series,
                    k = h.currentOptions,
                    l = h.indexer,
                    m = h.pane,
                    n,
                    p,
                    q = h.chartArea.isZoomLive();
                if (t(g.lastRenderVisibility) && !g.lastRenderVisibility && !h.isVisible) return g;
                var r = m ? m.isRadial : !1,
                    u = h.indexer.data.coordinates || h.prevCoords;
                u && (u = u.slice(0));
                var x = a.x,
                    v = a.y,
                    y = a.width,
                    D = a.height,
                    E = h.ctManager,
                    F = h.info,
                    R = F.type,
                    C = h.userPoints,
                    wa = h.points().items,
                    U = E.settingVal("lineSeriesType", k),
                    M = N(k, ["emptyPointMode"]) || "undefined",
                    B = [],
                    J = [],
                    K = [];
                c = [];
                var Nb = [],
                    I = [],
                    L = [],
                    O = g.isHoriz(),
                    Q = (E.isType("map") && "line" === R.seriesType && "spline" === U) || (E.isType("radar") && m && "polar" === m.getRadarType() && "line" === R.seriesType),
                    P = N(m, ["projection", "val2linxy"]),
                    S = O ? a.height : a.width;
                r && ((S = 1), (g.isRadial = !0));
                m = m ? m.xAxis : h.xAxis;
                E = m.clusterCounts[h.type];
                var Ba = t(E);
                E = z(E, 1);
                var T = m.getShortestDistPerc(),
                    W = T * S,
                    X = m.currentOptions.spacingPercentage,
                    Z = W * X;
                if (1 <= Z || r) W -= Z;
                var aa = z(m.currentOptions.staticColumnWidth, W),
                    V = aa / E;
                "column" !== k.type || r || (V = Math.max(V, 5));
                var da = aa / E;
                r || ((V = na(V)), (da = na(aa / E)));
                m = z(h.clusterIndex, 1);
                var ea = -(V * E) / 2 + V * m;
                Z = T * X;
                var ba = { xLength: 1, clusterWidth: T - (1 <= Z ? Z : 0) };
                A(ba, { thisWidth: ba.clusterWidth / E });
                A(ba, { unclusteredWidth: ba.clusterWidth / E, clusterOffset: -(ba.thisWidth * E) / 2 + ba.thisWidth * m });
                E = function (a) {
                    return "string" === typeof a && -1 < a.indexOf("%") ? (parseInt(a) / 100) * Math.min(y, D) : a;
                };
                var fa = function (a, b) {
                        var c;
                        if ((c = n[a])) (p[a] = qa.apply(void 0, H(c))), b && Fb(b) && (p[a] = b.apply(void 0, H(p[a])));
                    },
                    ia = function (a) {
                        var b;
                        if ((b = n[a])) {
                            var c = (p[a] = []);
                            w(b, function (a) {
                                c.push(qa.apply(void 0, H(a)));
                            });
                        }
                    },
                    ka = l.hasAllKeys("ys,ye"),
                    ca = l.hasAllKeys("xs,xe");
                m = h.ctManager.settingVal("bubbleSizingType", h.options());
                var la = E(N(k, ["size", "max"])) || 50,
                    ma = E(N(k, ["size", "min"])) || 5,
                    oa = Sn(la / 2),
                    sa = Sn(ma / 2);
                l.indexKeys(["coordinates", "bbox"], {}, 0);
                var ra = function (a, b) {
                    return [x + a * y, v + b * D];
                };
                X = function (a, b) {
                    return [ca ? a : ba.clusterOffset + ba.thisWidth / 2 + a, b];
                };
                var ta = function (a) {
                    return ca ? a : ba.clusterOffset + ba.thisWidth / 2 + a;
                };
                E = function (a, b) {
                    return [a, ca ? b : ea + V / 2 + b];
                };
                var pa = function (a, b, c) {
                    P && ((b = G(O ? P(b, a, c) : P(a, b, c), 2)), (a = b[0]), (b = b[1]));
                    a = ra(a, b);
                    r && (t(c) || (c = 0.9), a.push((y / 2) * c));
                    return a;
                };
                m = {
                    column: r
                        ? X
                        : function (a, b) {
                              return [ca ? x + a * y : x + ea + V / 2 + a * y, v + b * D];
                          },
                    marker: r ? pa : ra,
                    bubble:
                        "width" === m
                            ? function (a, b, c) {
                                  a = pa(a, b);
                                  a.push(Y(ma, la, 0, 1, c));
                                  return a;
                              }
                            : function (a, b, c) {
                                  a = pa(a, b);
                                  a.push(2 * Math.sqrt(Y(sa, oa, 0, 1, c) / Math.PI));
                                  return a;
                              },
                };
                m.ohlc = m.column;
                O &&
                    (m.column = r
                        ? E
                        : function (a, b) {
                              return [x + a * y, ca ? v + b * D : v + ea + V / 2 + b * D];
                          });
                m.variwide = m.column;
                var qa = m[h.type] || m.marker;
                X = function (c, d) {
                    d = [];
                    var e = {};
                    if (l.getValue("isEmpty", c)) return "ignore" !== M && b(!0), "continue";
                    n = l.getValue("pos", c);
                    p = { width: Ba ? V : void 0, unclusteredWidth: da, clusterSpace: T * S, meta: e };
                    g.clearPrevCoord(l.getValue("coordinates", c));
                    l.setValue("coordinates", c, p);
                    var f = r && R.drawRect ? pa : void 0;
                    fa("xyz", f);
                    fa("xyzs", f);
                    var m = p.xyzs;
                    f = p.xyz;
                    var v = m[1] - f[1],
                        x = V;
                    if (r) {
                        var y = g.series.pane.angleArc();
                        p.arc = { angle: Y(y.start, y.end, 0, 1, n.xyz[0]), cxy: va(ha(a)) };
                    }
                    e.xy = f;
                    y = void 0;
                    var D = ca ? m[0] : f[0] - V / 2,
                        E = ca ? f[0] - m[0] : V,
                        A = void 0;
                    r && ((v = n.xyzs[1] - n.xyz[1]), (D = ca ? n.xyzs[0] : n.xyz[0] - V / 2), (A = ca ? n.xyzs[0] : n.xyz[0]), (E = ca ? n.xyz[0] - n.xyzs[0] : x));
                    if (Ba)
                        if (r) {
                            if (O) {
                                if (((v = p.rectPos = { y: ca ? n.xyzs[1] : ta(n.xyz[1] - V / 2), x: n.xyzs[0], width: n.xyz[0] - n.xyzs[0], height: V, ccw: n.xyzRDesc[1] }), n.xyzRDesc[1] && ja(C[c].y))) {
                                    x = void 0;
                                    for (0 > v.width ? (x = v.x + v.width) : 0 < v.width && ((x = v.x), (v.x += v.width)); x < v.x; ) x += 1;
                                    v.width = x - v.x;
                                }
                            } else v = p.rectPos = { x: ta(A) - V / 2, y: n.xyz[1], width: E, height: v };
                            p.arcPos = { start: v.x, end: v.x + v.width, angle: v.x + v.width / 2 };
                        } else O ? ((y = ca ? m[1] : f[1] - V / 2), (x = ca ? f[1] - m[1] : V), (v = m[0] - f[0]), (y = { y: y, x: f[0], width: v, height: x })) : (y = { x: D, y: f[1], width: E, height: v }), (y = Yo(y)), (e.shape = ha(y));
                    t(D) &&
                        E &&
                        ((p.rect = y),
                        R.drawRect &&
                            F.hasComplete &&
                            ((D = n.completee - n.completes),
                            (E = n.completeXe - n.completeXs),
                            r
                                ? ((v = p.rectPos),
                                  (p.rectCompletePos = O
                                      ? { x: Y(v.x, v.x + v.width, 0, 1, n.completes), y: Y(v.y + v.height, v.y, 0, 1, n.completeXe), width: D * v.width, height: E * v.height, targetBox: ha(a) }
                                      : { x: v.x + n.completeXs * v.width, y: v.y + (1 - n.completee) * v.height, width: E * v.width, height: D * v.height, targetBox: ha(a) }))
                                : (p.rectComplete = O
                                      ? { x: Y(y.x, y.x + y.width, 0, 1, n.completes), y: Y(y.y + y.height, y.y, 0, 1, n.completeXe), width: D * y.width, height: E * y.height }
                                      : { x: y.x + n.completeXs * y.width, y: y.y + (1 - n.completee) * y.height, width: E * y.width, height: D * y.height })),
                        y && d.push([y.x, y.y, y.width, y.height]));
                    B.push(f);
                    Q &&
                        n.interpPoints &&
                        w(n.interpPoints, function (a) {
                            B.push(qa.apply(void 0, H(a)));
                        });
                    R.drawArea && J.push(m);
                    F.hasSubvalues && !r && (w(["sv", "svs", "svx", "svxs"], fa), w(["svv", "svxv"], ia));
                    h.coordinatesModifier && h.coordinatesModifier(g, p);
                    m = (p.styleSet = q ? u[c].styleSet : h.getPointAttr(h.userPoints[c])).markerSize;
                    y = N(k, ["defaultPoint", "marker", "visible"]) || !0 === N(C[c], ["marker", "visible"]);
                    if (R.drawMarker || k.forceMarker || y)
                        if ((F.hasMaxedMarkerLimit && !y && (m = 0), g.isRadial && "needle" === g.getBodyShapeName(wa[c]))) {
                            if (!q) {
                                var U = (e = h.pointBodyDGenerator) && e("needle", p),
                                    G;
                                p.hitTest = function (a, b) {
                                    G = G || Aa(U);
                                    return G.hitTest(a, b);
                                };
                            }
                        } else
                            (e.marker = mb(f, [m, m])),
                                (e = e.marker.slice(0)),
                                (f = void 0),
                                (f = 0 === c || c === C.length - 1 ? N(Kl(g.series, c), ["marker", "offset"]) : z(N(C[c], ["marker", "offset"]), N(k, ["defaultPoint", "marker", "offset"]))) && (f = Kr(f)) && (e = Xc(e, f)),
                                d.push(e);
                    if (!R.isRadarColumn && d.length && !q) {
                        d = Ea(d);
                        var K = 15 > d[2] || 15 > d[3] ? th(d, [15, 15]) : d.slice(0);
                        ka && !R.isRadar && ((K = uv(K, [p.xyzs])), !R.drawRect && t(aa) && ((e = 0.8 * aa), (K = th(K, O ? [0, e] : [e, 0]))));
                        p.pathD = Cc(K);
                        e = z(C[c].mouseTracking, N(k, ["defaultPoint", "mouseTracking"]));
                        if (!t(e) || !0 === e) {
                            var cb = g.getLabelHitTest();
                            p.hitTest = function (a, b) {
                                return Ad(K, [a, b]) || cb(this, a, b);
                            };
                        }
                        l.setValue("bbox", c, d);
                    }
                };
                m = 0;
                for (E = C.length; m < E; m++) X(m);
                b(null, { isFinal: !0, xIsSorted: h.info.xIsSorted });
                g.paths = { lines: I, areas: L };
                g.coordinates.line = K;
                R.drawArea && (g.coordinates.area = c);
                g.coordRect = a;
                g.validate(!0);
                if (u) for (m = 0, E = wa.length; m < E; m++) if ((c = h.indexer.getValue("coordinates", m))) c.coordPrev = g.clearPrevCoord(u[m]);
                g.renderOrder = l.sortByNone();
                g.renderOrderRev = g.renderOrder.slice(0);
                g.renderOrderRev.reverse();
                return this;
            };
            c.prototype.clearPrevCoord = function (a) {
                var b = a && a.coordPrev;
                b && (b.prevCoord && (this.clearPrevCoord(b), (b.prevCoord = void 0)), b.pathD && (b.pathD.clearCache && b.pathD.clearCache(!0), (b.pathD = void 0)), (b.hitTest = void 0), (a.coordPrev = void 0));
                return a;
            };
            c.prototype.setPos = function (a, c) {};
            c.prototype.getShapeOptions = function (a, c) {
                var b = this.series;
                c = b.pane || b.chartArea;
                b = b.currentOptions.shape;
                c.defaultShapeOptions && (b = qd({}, b, c.defaultShapeOptions().ca));
                return Gr(b, a);
            };
            c.prototype.validate = function (a) {
                this.coordDirty = a ? !1 : !0;
            };
            c.prototype.hideUnused = function () {
                var a = this.series,
                    c = a.visuals;
                a = a.info.type;
                a.drawLine || a.tree || !c.line || this.hideVisual(c.line);
                !a.drawArea && c.area && this.hideVisual(c.area);
                return this;
            };
            c.prototype.hideVisual = function (a) {
                a && (a.finishAnimation && a.finishAnimation(), a.attr({ opacity: 0 }));
            };
            c.prototype.hideUnusedPointVisuals = function (a) {};
            c.prototype.render_applyDynamicAttrVals = function (a, c, e) {
                var b = this.series;
                e = e || b.info.style.states[b.state] || {};
                if (a.pop && 1 < a.length) {
                    for (var d = A({}, a[0]), h = 1, k = a.length; h < k; h++) d = im(d, a[h]);
                    a = d;
                }
                d = a.animation ? a.animation : {};
                a.animation = c && c.animation ? A({}, b.getAnimationConfig(), c.animation || {}, d) : !1 !== c ? A({}, b.getAnimationConfig(), d) : A({}, { duration: 0 }, d);
                b.isVisible ? ((a.opacity = z(e.opacity, 1)), (a.display = "block")) : ((a.opacity = 0), (a.display = "none"));
                return a;
            };
            c.prototype.render_applyDynamicAttrValsLE = function (a, c, e) {
                a = this.render_applyDynamicAttrVals(a, c, e);
                a.opacity = 1;
                a.display = "block";
                return a;
            };
            c.prototype.getPointIconVisual = function (a, c, e) {
                return this.getIconVisual(a, c, e);
            };
            c.prototype.getIconVisual = function (a, c, e) {
                var b = this,
                    d = b.series,
                    h = d.renderer,
                    k = e.iconVisual || {},
                    l = b.getIconPaths(a, c),
                    m;
                c = function (c, f) {
                    "string" === typeof l[c] && 0 === l[c].indexOf("url(")
                        ? ((m = l[c].replace(/url\(/g, "").replace(/\)/g, "")), (f = { src: m, cx: a[0] / 2, cy: a[1] / 2, zIndex: 5, width: a[0], height: a[1] }))
                        : (f = b.render_applyDynamicAttrValsLE([{ d: l[c], opacity: 1, zIndex: f }, {}], { animation: d.getAnimationConfig() }, {}));
                    (k[c] = k[c] || (m ? h.renderer.element("image", f).add(n) : h.renderer.path(f).add(n))).attr(f);
                    e.icons[c] = f.d;
                };
                var n = (k.root = k.root || h.panel({ yAlignment: "center" }));
                l.base ? c("base", 2) : Ra(k.base);
                l.extra ? c("extra", 1) : Ra(k.extra);
                return k;
            };
            c.prototype.getIconPaths = function (a, c) {
                return Ci(this, a, c);
            };
            c.prototype.getIconStyles = function (a) {
                return Jr(this);
            };
            c.prototype.setIconVisualAttr = function (a, c) {
                var b = this,
                    d = b.series,
                    g = b.getIconStyles(a),
                    h;
                if (a)
                    var k = a.base,
                        l = a.extra;
                a = function (a) {
                    var e = { animation: c.isStyled ? d.getAnimationConfig() : !1 };
                    h = b.render_applyDynamicAttrValsLE(a, {}, {});
                    h = A(h, e);
                    !1 === d.isVisible && (b.modifyHiddenIconStyle(h), delete h.display, delete h.opacity);
                    return h;
                };
                if (g.base && k) {
                    var m = a(g.base),
                        n = c.icons.base;
                    n && (m.d = n);
                    k.attr(m);
                }
                g.extra && l && l.attr(a(g.extra));
                c.isStyled = !0;
            };
            c.prototype.modifyHiddenIconStyle = function (a) {
                var b = a.fill;
                !1 === this.series.isVisible && (a.fill && ((b = To(b, 0.8)), (b = ne(b, "v", -0.2)), (b = ma(b)), (a.fill = b)), a.stroke && (a.stroke = To(a.stroke, 0.2)), 1 < a["stroke-width"] && (a["stroke-width"] = 1));
                return a;
            };
            c.prototype.showHalo = function (a) {
                var b = this.series,
                    c = b.chartArea,
                    f = ha(c.contentRect),
                    g = b.visuals,
                    h = b.renderer;
                if (a && !b.indexer.getValue("isEmpty", a._i)) {
                    var k = a.currentOptions.focusGlow;
                    if (!1 !== k) {
                        var l = k ? L(Tt(), k) : Tt();
                        l.width = t(l.width) ? 2 * l.width : l.width;
                        vb(l.color, "%") && (l.color = a.replaceTokens(l.color));
                        tf(l) &&
                            ((k = fc({ outline: l })),
                            A(k, { d: xa(this.haloPath(a, l)), "stroke-linejoin": "round", "pointer-events": "none", zIndex: 1 }),
                            (a = a.visuals.body),
                            c.panes && a && (f = rb(Ea([f, ha(a.box())]), -10)),
                            (k.clipPath = { d: Cc(f) + k.d, "clip-rule": "evenodd" }),
                            (f = qa(k)),
                            (f["stroke-opacity"] *= 0.4),
                            (k["stroke-width"] *= 0.6),
                            (b.haloPath = k.d),
                            (c = g.pointHalo || []),
                            c.length || (c = g.pointHalo = [h.renderer.path().add(b.rootVisuals.pointHalo), h.renderer.path().add(b.rootVisuals.pointHalo)]),
                            c[0].attr(k),
                            c[1].attr(f));
                    }
                } else
                    (c = g.pointHalo || []),
                        c.length &&
                            w(c, function (a) {
                                return a.attr({ d: "M0 0" });
                            }),
                        (b.haloPath = "");
            };
            c.prototype.hideHalo = function () {
                this.showHalo();
            };
            c.prototype.hideHaloMo = function () {
                var a = this.series,
                    c = a.xAxis;
                a = a.chartArea.tooltip.cttEnabled(a.yAxis, c);
                c = c && (c.currentOptions.crosshair || {}).enabled;
                a || c || this.hideHalo();
            };
            c.prototype.haloPath = function (a, c) {
                var b = this.series;
                c = c.width;
                var d = b.indexer.getValue("coordinates", a._i);
                b = b.info.hasMaxedMarkerLimit;
                var g = d && z(d.pathD, d.pathObj, d.meta.bodyD),
                    h = "string" === typeof g && -1 < g.indexOf("url("),
                    k = g.arcShape,
                    l = !h && Np(g);
                if (k) return a.visuals.body.attrApplier.outlinePath();
                if (h) return Cc(ha(a.visuals.body.box()));
                if (l || b) (a = d.meta.xy || d.xyz), (g = dc.circle(a[0] - c / 2, a[1] - c / 2, c, c));
                return g;
            };
            c.prototype.pointMouseOver = function (a, c) {
                var b = this.series,
                    d = b.chart,
                    g = d.hoveredPoint === c && this.hoveredItem === c;
                N(d.hoveredPoint, ["series"]);
                b.chartArea.debounce.clear("unmute");
                (this.hoveredItem = c) && c.mouseOver(a);
                var h = b.translateToGlobal([a.x, a.y]),
                    k;
                b.pane && (k = b.pane.getGlobalOffsets());
                if (!1 === N(d.currentOptions, ["defaultTooltip", "enabled"]) && c.labelAutoHidden) {
                    var l;
                    (l = c.visuals.label) && l.attr({ opacity: 1 }).refresh();
                }
                !b.chartArea.tooltip.cttEnabled(b.yAxis, b.xAxis) && b.tooltip.showTooltip(c, a, h, k);
                c && !g && this.showHalo(c);
                c && !g && ((a = Nl(c)) ? Ol(c, "", a) : ("select" !== b.state && b.setState("hover"), c.chart.highlighted && Qb(c.chart, c)));
            };
            c.prototype.pointMouseOut = function (a, c) {
                var b = this.series,
                    d = b.chart;
                b = b.chartArea;
                this.hoveredItem = void 0;
                !1 === N(d.currentOptions, ["defaultTooltip", "enabled"]) && c.labelAutoHidden && ((d = void 0), (d = c.visuals.label) && d.attr({ opacity: 0 }).refresh());
                a = c && c.mouseOut(a);
                this.hideHalo();
                !1 !== a &&
                    c &&
                    !1 !== N(c.currentOptions, ["states", "mute", "enabled"]) &&
                    b.debounce.defer(
                        "unmute",
                        function () {
                            Qb(c.series.chart);
                        },
                        230
                    );
            };
            c.prototype.pointClick = function (a, c) {
                c && c.click(a);
            };
            c.prototype.pointMouseOutAny = function () {
                var a;
                if ((a = this.hoveredItem)) return "select" !== this.series.state && this.series.setState(""), this.pointMouseOut({}, a), !0;
            };
            return c;
        })(YC),
        Oc = { marker: Ie },
        gD = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.staticSeriesBodyInfo = [oz, Er];
                b.kind = "area";
                return b;
            }
            K(c, a);
            c.prototype.contextDefaults = function () {};
            c.prototype.hideUnusedPointVisuals = function (a) {
                a = a.visuals;
                Ra(a.marker);
                Ra(a.labelConnector);
                Ra(a.rectComplete);
                Ra(a.rect);
            };
            c.prototype.getIconPaths = function (a, c) {
                var b = a[0],
                    d = a[1];
                a = Fr(this, a, c);
                a.extra += " L " + b + " " + d + " L0 " + d + " Z";
                return a;
            };
            c.prototype.getIconStyles = function (b) {
                var c = this.series.info.style.attr;
                b = a.prototype.getIconStyles.call(this, b);
                c = A(b, { extra: c.area });
                b = c.extra;
                b.fill && !b.stroke && (b.stroke = zh(b.fill));
                return c;
            };
            return c;
        })(Ie),
        Vt = function () {
            return { axes: "x,y", values: "x,y", requiredData: "x,y", supportedData: "x,y,subvalue,subvalueX,complete,completeX", privateAxes: "", customAxisOptions: {} };
        },
        Vg = (function (a) {
            function c(b) {
                var c = a.call(this, b) || this;
                c.series = b;
                c.kind = "column";
                c.typeConfig = Vt();
                c.staticBodyDGetter = Ql;
                c.staticPointCompleteVisInfo = rz;
                c.staticPositionsFromAligments = pz;
                c.dependencyVisuals = [];
                c.dependencyAttrs = [];
                return c;
            }
            K(c, a);
            c.prototype.getTypeConfigDefault = function () {
                return Vt();
            };
            c.prototype.render = function (b) {
                a.prototype.render.call(this, b);
                this.renderDependencies(b);
                return this;
            };
            c.prototype.setCoordinates = function (b, c) {
                C(this, "series.pane.isRadial") && ((this.isRadial = !0), (this.staticBodyDGetter = this.series.pane.staticBodyDGetter), (this.staticPositionsFromAligments = this.series.pane.staticPositionsFromAligments));
                a.prototype.setCoordinates.call(this, b, c);
                return this;
            };
            c.prototype.getParents = function (a) {
                var b = this,
                    c = [],
                    f,
                    g = [];
                if (a) {
                    if ((f = a.options("parent"))) g = f.split(",");
                    return B(g, function (a) {
                        return b.series.ciManager.exists(a);
                    });
                }
                this.eachPoint(function (a) {
                    (f = a.options("parent")) ? ((g = f.split(",")), !b.series.ciManager.exists(g[0]) && c.push(a)) : c.push(a);
                });
                return $a(c);
            };
            c.prototype.renderDependencies = function (a) {
                var b = this,
                    c = b.series,
                    f = b.isHoriz(),
                    g = c.indexer,
                    h = c[(f ? "x" : "y") + "Axis"].isInverted() ? 1 : 0,
                    k = function (a, b) {
                        var c = function (a, b, c) {
                                return la(a, b) > la(a, c) ? c : b;
                            },
                            d = Yb(b.meta.shape),
                            e = a.xyz.slice(0, 2),
                            g = b.xyz.slice(0, 2),
                            k = f ? 1 : 0,
                            l = f ? 0 : 1,
                            m = e[k] < g[k] ? 1 : -1,
                            n = e[k];
                        g = g[k];
                        var p = la(n, g) - b.clusterSpace / 2,
                            t = la(n, c(n, d[k], d[k + 2])),
                            w = a.xyz[l];
                        a = b.xyz[l];
                        var z = b.xyzs[l],
                            A,
                            M = [(A = e)],
                            C = function (a, b) {
                                var c = A.slice(0);
                                c[a] = b;
                                M.push((A = c));
                            },
                            B = sa([z, a]),
                            H = 5 * h;
                        b = w + H;
                        c = c(A[l], B[0], B[1]);
                        e = A[l] - c;
                        a = 0 < e ? -1 : 1;
                        d = function (a) {
                            void 0 === a && (a = 1);
                            C(l, w + H / a);
                            C(k, n + p * m);
                            C(l, ua(z + H / a, B[0], B[1]));
                            C(k, n + t * m);
                        };
                        Kb(B, b) && a !== h ? d(1) : Kb(B, b) ? (C(l, b), C(k, n + t * m)) : 0 === e ? d(1.5) : a === h ? (C(l, c - H), C(k, g), C(l, z)) : a !== h && d(1);
                        return hd(M, 3);
                    },
                    l = [],
                    m = function (a, b) {
                        var c = g.getValue("coordinates", a._i);
                        w(b, function (b) {
                            if (b && b.series.isVisible) {
                                var d = b.series.indexer.getValue("coordinates", b._i),
                                    e = A({ color: "#494949", width: 1, caps: { end: { type: "arrow", size: 6, concavity: 0.1 } } }, b.series.options("line"));
                                b = A(Bb(e), { d: k(d, c), key: b.id + a.id });
                                l.push(b);
                            }
                        });
                        return [];
                    };
                b.eachPoint(function (a) {
                    return m(a, b.getParents(a));
                });
                b.updateDeps(l, a);
                return b;
            };
            c.prototype.updateDeps = function (a, c) {
                var b = this,
                    d = b.series.renderer.renderer,
                    g = b.series.rootVisuals.area;
                b.dependencyAttrs = B(a, function (a) {
                    return b.render_applyDynamicAttrVals(a, c);
                });
                a &&
                    Ub(
                        a,
                        b.dependencyVisuals,
                        function (a) {
                            var c = d.path(a).add(g);
                            c.data.key = a.key;
                            b.dependencyVisuals.push(c);
                        },
                        function (a, b) {
                            return b.attr(a);
                        },
                        function (a) {
                            g.removeChild(a.el);
                            pb(b.dependencyVisuals, a);
                        },
                        function (a) {
                            return a.key;
                        },
                        function (a) {
                            return a.data.key;
                        }
                    );
                return b;
            };
            c.prototype.getBodyShapeName = function (a, c) {
                return c ? this.series.getPointMarkerType(a.currentOptions) : "square";
            };
            c.prototype.hideUnusedPointVisuals = function (a) {
                var b = a.series.options("forceMarker") || !0 === C(a.currentOptions, "marker.visible");
                a = a.visuals;
                !b && Ra(a.marker);
                Ra(a.labelConnector);
            };
            c.prototype.possibleLabelPositions = function (a, c, e, f, g) {
                e = this.series;
                c = f.meta;
                var b = a.currentOptions.label || {},
                    d = e.chartArea;
                d = (e.pane || d).collisionManager;
                e = this.isHoriz();
                var l = b.rotate;
                b = !e && d.anyColLabelOverflow;
                d = ha(this.series.contentRect());
                c = c.labelSize.slice(0);
                t(l) && ((b = !1), 90 === Math.abs(l) ? (b = !0) : 0 !== l && (c = hk(H([0, 0], c), [l, 0, 0]).slice(2)));
                b && ((f.meta.isVertical = !0), c.reverse());
                g = this.isRadial ? g.getValue("pos", a._i) : f;
                g = e ? (g.xyz[0] > g.xyzs[0] ? "r" : "l") : g.xyz[1] > g.xyzs[1] ? "d" : "u";
                a = dD(this, a, g);
                return this.staticPositionsFromAligments(this, f, g, d, c, a, b);
            };
            c.prototype.getIconPaths = function (a, c) {
                return Pl(this, a, c);
            };
            c.prototype.getIconStyles = function (a) {
                a = this.series;
                var b = a.info,
                    c = a.getPointAttr(),
                    f = Jr(this);
                if (b.hasUniqueStyles || b.type.colorByPoint) (a = c.pointAttr[""]), zc(f, a, "base.hatch", "hatch"), zc(f, a, "base.hatchPattern", "hatchPattern");
                else if (((f = A(f, { base: c.pointAttr[""] })), (b = f.base.fill), (c = b.linearGradient))) {
                    var g = c.hash;
                    c = b.linearGradient = Ja(90);
                    c.hash = g + "LE" + a.isVisible;
                }
                return f;
            };
            c.prototype.getPointAnimatorOptions = function (a, c) {
                return (c = this.series.pane) && c.isRadial && a.coordPrev ? ("spider" === c.getRadarType() ? {} : { slice: { to: a.pathOptions, from: a.coordPrev.pathOptions } }) : {};
            };
            return c;
        })(Ie),
        hD = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.kind = "line";
                b.staticSeriesBodyInfo = [Er];
                return b;
            }
            K(c, a);
            c.prototype.contextDefaults = function () {};
            c.prototype.render = function (b) {
                a.prototype.render.call(this, b);
                return this;
            };
            c.prototype.hideUnusedPointVisuals = function (a) {
                a = a.visuals;
                Ra(a.marker);
                Ra(a.labelConnector);
            };
            c.prototype.getIconPaths = function (a, c) {
                return Fr(this, a, c);
            };
            c.prototype.getIconStyles = function (b) {
                var c = this.series,
                    e = A({}, c.info.style.attr),
                    f = a.prototype.getIconStyles.call(this, b),
                    g = Math.max.apply(
                        Math,
                        H(
                            c.chartArea
                                .series(function (a) {
                                    return a.info.type.drawLine;
                                })
                                .items.map(function (a) {
                                    return N(a.currentOptions, ["line", "width"]) || 0;
                                })
                        )
                    ),
                    h = 1,
                    k = function (a, b) {
                        void 0 === b && (b = h);
                        return a ? Math.max(1, a * b) : a;
                    };
                c = function (a, b) {
                    void 0 === b && (b = h);
                    return Math.round(k(a, b));
                };
                4 < g && (h = 4 / g);
                if ((g = e.line["stroke-width"]))
                    if (((e.line["stroke-width"] = c(g)), (c = void 0), 2 < g && (c = e.line["stroke-dasharray"]))) {
                        g = c.split(",").map(function (a) {
                            return parseInt(a);
                        });
                        g = Ta(g);
                        b = Aa(b.extra.data.attrs.d).length();
                        var l = h;
                        l = Math.min(l, b / (2.2 * g));
                        e.line["stroke-dasharray"] = c
                            .split(",")
                            .map(function (a) {
                                return k(parseInt(a), l);
                            })
                            .join(",");
                    }
                return A(f, { extra: Ga(e.line, ["caps"]) });
            };
            return c;
        })(Ie),
        Wt = function () {
            return { axes: "x,y", values: "x,open,high,low,close" };
        },
        iD = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.kind = "candlestick";
                b.typeConfig = Wt();
                b.pointValueParser = tz;
                b.staticBodyDGetter = Ql;
                return b;
            }
            K(c, a);
            c.prototype.getTypeConfigDefault = function () {
                return Wt();
            };
            c.prototype.pointArrayExpander = function (a) {
                return { x: a[0], open: a[1], high: a[2], low: a[3], close: a[4] };
            };
            c.prototype.hideUnusedPointVisuals = function (a) {
                a = a.visuals;
                Ra(a.rect);
                Ra(a.marker);
                Ra(a.labelConnector);
            };
            c.prototype.getIconPaths = function (a, c) {
                var b = a[1] / 2,
                    d = a.slice(0),
                    g = Math.round(0.4 * a[0]),
                    h = g / 2;
                d[0] -= g;
                var k = Pl(this, d, c);
                w(k, function (a, b) {
                    a = a.isPath ? a : Aa(xa(a));
                    k[b] = a.translate(function (a) {
                        return [a[0] + h, a[1]];
                    });
                });
                k.extra = "M0 " + b + " L " + h + " " + b;
                k.extra += "M" + (a[0] - h) + " " + b + " L" + a[0] + " " + b + " ";
                return k;
            };
            c.prototype.getIconStyles = function (a) {
                a = this.series.info.style.base.color;
                return { base: { fill: a, stroke: ia("outline", a), "stroke-width": 1 }, extra: { fill: "none", stroke: ia("outline", a), "stroke-width": 1 } };
            };
            return c;
        })(Vg),
        Xt = function () {
            return { axes: "x,y", values: "x,open,high,low,close", customAxisOptions: { z: { visible: !1 } } };
        },
        jD = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.kind = "ohlc";
                b.typeConfig = Xt();
                b.pointValueParser = uz;
                b.staticBodyDGetter = vz;
                return b;
            }
            K(c, a);
            c.prototype.getTypeConfigDefault = function () {
                return Xt();
            };
            c.prototype.pointArrayExpander = function (a) {
                return { x: a[0], open: a[1], high: a[2], low: a[3], close: a[4] };
            };
            c.prototype.hideUnusedPointVisuals = function (a) {
                var b = a.visuals;
                Ra(b.rect);
                !a.series.options("forceMarker") && Ra(b.marker);
                Ra(b.marker);
                Ra(b.labelConnector);
            };
            c.prototype.getIconPaths = function (a, c) {
                c = a[1] / 2;
                var b = 0.3 * a[0],
                    d = { extra: "" };
                d.extra = "M0 " + c + " L " + a[0] + " " + c;
                d.extra += "M" + b + " 0 L" + b + " " + c;
                d.extra += "M" + (a[0] - b) + " " + a[1] + " L" + (a[0] - b) + " " + c;
                return d;
            };
            c.prototype.getIconStyles = function (a) {
                return { extra: { fill: "none", stroke: ia("outline", this.series.info.style.base.color), "stroke-width": 1 } };
            };
            return c;
        })(Vg),
        kD = (function (a) {
            function c(b) {
                var c = a.call(this, b) || this;
                c.series = b;
                c.kind = "variwide";
                b.chart.typeContextOptions = { axes: { x: { spacingPercentage: 0, scale: { type: "stackedFull" } } } };
                return c;
            }
            K(c, a);
            return c;
        })(Vg),
        Yt = function () {
            return { axes: "x,y,z", values: "x,y,z", requiredData: "x,y,z", supportedData: "x,y,z,subvalue,subvalueX", customAxisOptions: { z: { visible: !1 } } };
        },
        lD = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.kind = "bubble";
                b.typeConfig = Yt();
                b.staticBodyDGetter = xz;
                return b;
            }
            K(c, a);
            c.prototype.getTypeConfigDefault = function () {
                return Yt();
            };
            c.prototype.pointArrayExpander = function (a) {
                return { x: a[0], y: a[1], z: a[2] };
            };
            c.prototype.setCoordinates = function (b, c) {
                var d = this.series;
                a.prototype.setCoordinates.call(this, b, c);
                this.renderOrder = d.indexer.sortBy("z", !1) || d.indexer.sortBy("ze", !1);
                this.renderOrderRev = this.renderOrder.slice(0);
                this.renderOrderRev.reverse();
                return this;
            };
            c.prototype.getIconPaths = function (a, c) {
                return Ci(this, a, c, "circle");
            };
            c.prototype.possibleLabelPositions = function (b, c, e, f, g) {
                c = c || f.pathD || f.meta.bodyD;
                var d = f.meta,
                    k = f.xyz,
                    l = d.labelSize;
                c = or(Aa(c), l, k);
                k = [];
                c ? ((c.isInside = !0), k.push(c)) : (d.marker || (d.marker = [0, 0, 0]), (d.marker[2] = f.xyzs[2]), (k = a.prototype.possibleLabelPositions.call(this, b, "", e, f, g)));
                return k;
            };
            c.prototype.hideUnusedPointVisuals = function (a) {
                var b = a.visuals;
                Ra(b.rect);
                a.series.options("forceMarker") || a.options("marker.visible") || Ra(b.marker);
                Ra(b.labelConnector);
            };
            return c;
        })(Ie);
    Oc.area = gD;
    Oc.column = Vg;
    Oc.line = hD;
    Oc.candlestick = iD;
    Oc.ohlc = jD;
    Oc.variwide = kD;
    Oc.bubble = lD;
    var Vm,
        Db,
        fj,
        gj = function () {
            return { radius: 2, shadow: !0, boxVisible: !0, fill: "auto", outline: { color: "auto", width: 1 }, transparency: 0.2, enabled: !0, timeout: 1200, margin: 7, padding: 5, followCursor: "auto" };
        },
        mD = function (a) {
            return a.pop
                ? a
                      .map(function (a) {
                          return a.id;
                      })
                      .join("")
                : a.id;
        },
        Zt = (function () {
            function a(a) {
                var b = this;
                this.series = a;
                this.kind = "Tooltip";
                this.currentOptions = gj();
                this.moveTooltip = Ni(function (a, c, d) {
                    var e = b.chart.rootVisuals.tooltip;
                    if (e) {
                        var f = e.rootPanel.el;
                        f && ((a = b.position(a, b.targetPanel(), e.bbox(), c, !0, d).outBox), f.attr({ animation: { duration: 10 }, transform: { translate: a.slice(0, 2) } }));
                    }
                }, 10);
                var c = "Series" === a.kind ? a.chartArea : a;
                this.chart = a.chart;
                this.curCA = c;
                this.chart.tooltipRef = this;
                this.currentOptions = A(gj(), c.currentOptions.defaultTooltip || this.chart.currentOptions.defaultTooltip || {});
                this.isVisible = !1;
                this.debounce = new Ae();
            }
            a.prototype.options = function (a) {
                a = Sa(a);
                this.setOptions(a);
                return this;
            };
            a.prototype.setOptions = function (a) {
                this.currentOptions = A(gj(), this.curCA.currentOptions.defaultTooltip || this.chart.currentOptions.defaultTooltip || {}, a);
                return this;
            };
            a.prototype.targetMetrics = function (a) {
                var b = a.coord(),
                    c = this.currentOptions.margin || 0,
                    e = C(b, "meta.label");
                a = a.bbox();
                4 === C(b, "meta.marker.length") && (a = Ea([a, b.meta.marker]));
                return { xyz: b.xyz, xyzs: b.xyzs, elBox: rb(a, -c), labelBox: e ? rb(e, -c) : e };
            };
            a.prototype.showTooltip = function (a, b, d, e) {
                var c = this,
                    g = this.currentOptions,
                    h = this.debounce,
                    k = this.isFollowCursor(a, b);
                a && a !== Vm && !1 !== g.enabled && !0 !== g.combined
                    ? ((Vm = a),
                      h.clear("showtimeout"),
                      h.clear("hidetimeout"),
                      k
                          ? this.show(a, b, d, e)
                          : h.defer(
                                "showtimeout",
                                function () {
                                    return c.show(a, b, d, e);
                                },
                                20
                            ))
                    : k && this.moveTooltip(a, d, e);
            };
            a.prototype.isFollowCursor = function (a, b) {
                var c = this.currentOptions;
                if ("boolean" === typeof c.followCursor) return c.followCursor;
                if ("touch" === b.device || c.combined || !a.series) return !1;
                a = a.series.info.type;
                return !a.isAnnotation && (a.isShape || a.isMapLayer || a.tree);
            };
            a.prototype.hideTooltip = function (a) {
                var b = this,
                    c = this,
                    e = this.series,
                    f = this.debounce;
                a = z(a, this.currentOptions.timeout, 1200);
                f.clear("showtimeout");
                f.clear("hidetimeout");
                Vm = null;
                if (!0 !== e.options("mouseTracking.sticky")) {
                    var g = C(this.chart.rootVisuals, "tooltip.rootPanel.el");
                    g &&
                        f.defer(
                            "hidetimeout",
                            function () {
                                Db === c &&
                                    (null === g || void 0 === g ? void 0 : g.attr({ opacity: 0, animation: { duration: 40 } }),
                                    setTimeout(function () {
                                        return b.hide();
                                    }, 40));
                            },
                            a
                        );
                }
            };
            a.prototype.defaultAnimation = function (a) {
                return { duration: a ? 0 : 40 };
            };
            a.prototype.hide = function () {
                var a = this.chart.rootVisuals.tooltip;
                a && a.isVisible && (a.visible(!1), (a.isVisible = !1), (fj = ""), this.chart.renderer.refresh());
                Db === this && (Db.debounce.clear("hidetimeout"), (Db = void 0));
            };
            a.prototype.translateToGlobal = function (a) {
                var b = this.series.translateToGlobal(a);
                4 === a.length && b.push.apply(b, H(a.slice(2, 4)));
                return b;
            };
            a.prototype.correctChartBox = function (a) {
                a = this.translateToGlobal(a);
                a[0] = -a[0];
                a[1] = -a[1];
                return a;
            };
            a.prototype.correctCABox = function (a) {
                return this.series.correctRootBox(a);
            };
            a.prototype.targetPanel = function () {
                return this.series.rootVisuals.points;
            };
            a.prototype.color = function (a) {
                return a.tokenValue("%color");
            };
            a.prototype.text = function (a) {
                var b = a.series;
                b = z(C(a.currentOptions, "tooltip"), C(b.currentOptions, "defaultPoint.tooltip"), b.getAutoTooltipText(a), b.info.labelTextInfo.tooltip);
                Fb(b) && (b = b(a));
                return a.replaceTokens(b);
            };
            a.prototype.show = function (a, b, d, e) {
                this.preShow();
                var c = this.chart,
                    g = mD(a),
                    h = (a.pop ? a[0] : a).series;
                g += h.id || h.currentOptions.name || h.currentOptions.id || "";
                var k = fj === g,
                    l = this.targetPanel(),
                    m = this.currentOptions;
                if (!k) {
                    h = c.rootVisuals.tooltip;
                    if (!k) {
                        var n = this.text(a),
                            p = this.color(a),
                            q = C(m, "outline.color");
                        q = A({ style: { "pointer-events": "none" } }, m, { label: { text: n, align: this.chart.isRtlCulture ? "right" : "left" }, outline: { color: "auto" === q ? ia("outline", p) : q } });
                        q.margin = 0;
                        if (h) {
                            var r = h.isVisible;
                            h.visible(!0);
                            (c = h.rootPanel.el) && c.attr && c.attr({ opacity: 1 });
                        } else h = c.rootVisuals.tooltip = new nD(c, A({ asHTML: !1, autoWrap: "none" }, q)).add(c.rootVisuals.front);
                        h.options(q, !1);
                        h.rootPanel.setPreliminarySize && h.rootPanel.setPreliminarySize(!0);
                    }
                    c = h.bbox();
                    m = this.isFollowCursor(a, b);
                    l = this.position(a, l, c, d, m, e);
                    e = l.xy;
                    l = l.outBox;
                    k
                        ? h.options({ position: e.join(",") })
                        : ((k = h.chart.rootVisuals.itemsBox.getGlobalBboxArray()),
                          (e = [l[0] - k[0], l[1] - k[1]]),
                          (q = q.fill),
                          c[3] &&
                              ((c = Gc(c)),
                              (l = this.currentOptions),
                              void 0 === l && (l = {}),
                              (k = 1 - (l.opacity || 1)),
                              (l = t(l.radius) ? l.radius / 4 + 3 : 5),
                              (c = Math.round((l / c.height) * 100)),
                              (p = Lb(p, k)),
                              (p = jb(Ja(90), [
                                  ["0%", p],
                                  ["0%", p],
                                  [0 + c + "%", V("#f0f2fd", k)],
                                  [0 + c + "%", V("#ffffff", k)],
                                  [100 - c + "%", V("#ffffff", k)],
                                  [100 - c + "%", V("#e6e9fd", k)],
                                  ["100%", p],
                                  ["100%", p],
                              ]))),
                          h.options({ fillShading: !1, fill: "auto" === q ? p : q, position: e.join(",") }, r ? { animation: this.defaultAnimation() } : { animation: this.defaultAnimation(!0) }),
                          (Db = this),
                          (fj = g),
                          this.postShow(a, b, d));
                    fj = g;
                }
            };
            a.prototype.position = function (a, b, d, e, f, g) {
                var c = "TooltipCa" === this.kind,
                    k = !!this.series.pane,
                    l = this.curCA.rootVisuals.content,
                    m = N(this.chart.userOptions, ["defaultTooltip", "margin"]),
                    n = this.currentOptions.margin;
                f && !t(m) && (n = 20);
                if (f) g && ((e[0] -= g.x), (e[1] -= g.y));
                else {
                    var p = this.targetMetrics(a);
                    if (!p) return { xy: [0, 0], outbox: d };
                }
                var q = p ? p.xyz : e,
                    r = p ? p.xyzs : p;
                m = p ? p.elBox : mb(q, [2 * n, 2 * n]);
                var u = p && p.labelBox ? Ea([m, p.labelBox]) : void 0,
                    x = r && q[0] !== r[0];
                ha(("chartArea" === this.series.kind ? this.series.rootVisuals.content : this.series.chartArea.rootPanel).getGlobalBbox());
                var v = rb(ha(this.chart.rootPanel.getGlobalBbox()), 0),
                    y = this.correctCABox(ha(l.getGlobalBbox()));
                l = this.correctChartBox(ha(this.chart.rootPanel.getGlobalBbox()));
                var D = k ? this.correctCABox(ha(this.chart.rootPanel.getGlobalBbox())) : v,
                    E = k ? D : l.slice(0);
                k ||
                    w(this.curCA._axes, function (a) {
                        if (a.isVisible) {
                            a = a.sideIndex();
                            var b = Yb(y);
                            switch (a) {
                                case 0:
                                    E = bk(E, b[1]);
                                    D = bk(D, b[1]);
                                    break;
                                case 1:
                                    E = ck(E, b[2]);
                                    D = ck(D, b[2]);
                                    break;
                                case 2:
                                    E = dk(E, b[3]);
                                    D = dk(D, b[3]);
                                    break;
                                case 3:
                                    (E = ak(E, b[0])), (D = ak(D, b[0]));
                            }
                        }
                    });
                b = md(b, x ? [(q[0] + r[0]) / 2, q[1]] : q, 1);
                b = [b[0] - d[2] / 2, b[1] - d[3] - n];
                b = f ? b : this.translateToGlobal(b);
                n = b.slice(0);
                n.push.apply(n, H(d.slice(2)));
                r = "inCenter";
                q = "outTop";
                if (
                    m &&
                    (c && (this.curCA.isHoriz ? ((q = e[1] < l[3] / 2 ? "outBottom" : "outTop"), (r = "inMiddle")) : ((r = e[0] < l[2] / 2 ? "outRight" : "outLeft"), (q = "inMiddle"))),
                    (x = f ? m : this.translateToGlobal(m)),
                    (n = he(n, x, r, q).box),
                    !c &&
                        !f &&
                        ((x = (a[0] || a).series.visualizer), (v = void 0), p && p.labelBox && (v = this.possiblePositions(a[0] || a, d, u, E, x)), (v && 0 !== v.length) || (v = this.possiblePositions(a[0] || a, d, m, E, x)), 0 < v.length))
                ) {
                    var F = !0;
                    n = k ? v[0] : this.translateToGlobal(v[0]);
                    xv(this.translateToGlobal(m), Zc(n, D)) && (F = "forced" !== v[0][4]);
                }
                n = Zc(n, D);
                m &&
                    !c &&
                    !F &&
                    Ad(n, e) &&
                    ((q = "outTop" === q ? "outBottom" : "inMiddle"),
                    (a = n.slice(0)),
                    (x = f ? m : this.translateToGlobal(m)),
                    (n = he(n, x, r, q).box),
                    (n = Zc(n, D)),
                    f && Ad(n, e) && ((f = l[2] - e[0]), e[0] > n[2] || f > n[2] ? ((r = e[0] > l[2] / 2 ? "outLeft" : "outRight"), (n = he(n, x, r, q).box), (n = Zc(n, D))) : (n = a)));
                g && ((n[0] += Math.round(g.x)), (n[1] += Math.round(g.y)));
                return { xy: b, outBox: n };
            };
            a.prototype.possiblePositions = function (a, b, d, e, f) {
                a = a.series;
                var c = a.chartArea.collisionManager;
                f = a.yAxis;
                var h = a.isStacked,
                    k = a.info.type,
                    l = !1;
                k.drawRect || (l = !0);
                var m = function (a) {
                        return a.split(",").map(function (a) {
                            a = a.split("-");
                            return { align: "out" + a[0], vAlign: "out" + a[1] };
                        });
                    },
                    n = m("center-top,center-bottom,left-middle,right-middle");
                l && n.push.apply(n, H(m("left-top,right-top,left-bottom,right-bottom")));
                k.drawRect &&
                    "horizontal" === a.ctSv("chartType") &&
                    ((n = n.map(function (a) {
                        return Nc(a, !0);
                    })),
                    f &&
                        !f.isInverted() &&
                        (n = n.map(function (a) {
                            return Nc(a);
                        })));
                var p = function (a) {
                    return $c(e, a);
                };
                a = n.map(function (a) {
                    return he(H([0, 0], b.slice(2)), d, a.align, a.vAlign).box;
                });
                f = a.filter(p).filter(function (a) {
                    return p(a) && h ? !c.collideLabels(a) : !c.collideAll(a);
                });
                if (!f.length) {
                    if (p(a[0])) return a[0].push("possible"), [a[0]];
                    a[0].push("forced");
                    f = [a[0]];
                    1 < a.length && p(a[1]) && (a[1].push("possible"), f.push(a[1]), f.reverse());
                }
                return f;
            };
            a.prototype.preShow = function () {
                Db && Db.chart !== this.chart && Db.hide();
                Db = this;
            };
            a.prototype.hideActiveTooltip = function (a) {
                Db && (a ? Db && a === Db.chart && Db.hide() : Db.hide());
            };
            a.prototype.postShow = function (a, b, d) {
                "touch" === b.device && this.hideTooltip(8e3);
                this.isVisible = !0;
                this.chart.chartAreaSet.items[0].debounce.clear("clickoff");
                this.chart.tooltipRef = this;
            };
            a.prototype.cttEnabled = function (a, b) {
                var c = this.currentOptions,
                    e = c.combined,
                    f = a.currentOptions.crosshair || {};
                a = b && b.options("crosshair.enabled");
                f = f.enabled;
                if (c.enabled) return e ? !0 : t(e) ? e : !0 !== a || !b || f ? !1 : a;
            };
            return a;
        })(),
        oD = (function (a) {
            function c(b) {
                var c = a.call(this, b) || this;
                c.chartArea = b;
                c.kind = "TooltipCa";
                return c;
            }
            K(c, a);
            c.prototype.color = function (a) {
                return "#f0f0f0";
            };
            c.prototype.targetMetrics = function (b) {
                var c = this,
                    e = this.chartArea.isHoriz;
                b = ea(b, function (a) {
                    return !a.series.indexer.getValue("isEmpty", a._i);
                }).map(function (b) {
                    return a.prototype.targetMetrics.call(c, b);
                });
                var f = b.map(function (a) {
                    return a.xyz;
                });
                f.push.apply(
                    f,
                    H(
                        b.map(function (a) {
                            return a.xyzs;
                        })
                    )
                );
                var g,
                    h,
                    k = function (a) {
                        var b = sa(f, function (b) {
                            return b[a];
                        });
                        g = b[0];
                        h = b[b.length - 1];
                    };
                e ? k(0) : k(1);
                if (b.length)
                    return {
                        xyz: h,
                        xyzs: g,
                        elBox: Ea(
                            b.map(function (a) {
                                return a.elBox;
                            })
                        ),
                        labelBox: Ea(
                            b.map(function (a) {
                                return a.labelBox;
                            })
                        ),
                    };
            };
            c.prototype.translateToGlobal = function (a) {
                var b = this.targetPanel().getGlobalBbox();
                b = [a[0] + b.x, a[1] + b.y];
                4 === a.length && b.push.apply(b, H(a.slice(2, 4)));
                return b;
            };
            c.prototype.correctCABox = function (a) {
                return a;
            };
            c.prototype.targetPanel = function () {
                return this.chartArea.rootVisuals.content;
            };
            c.prototype.defaultAnimation = function (a) {
                return { duration: a ? 0 : 40 };
            };
            c.prototype.text = function (b) {
                var c = this;
                if (b.length) {
                    var e = Dy(b),
                        f = b[0].chart.options("defaultTooltip");
                    f = C(f, "label.text") || "<b>%xValue</b><br>%points";
                    var g = void 0;
                    e.points = b
                        .map(function (b) {
                            return a.prototype.text.call(c, b);
                        })
                        .filter(function (a) {
                            return O(a) && a.trim().length;
                        })
                        .join("<br>");
                    g = "function" === typeof f ? f(b) : f;
                    return wi(g, e);
                }
            };
            return c;
        })(Zt),
        nD = (function (a) {
            function c() {
                return (null !== a && a.apply(this, arguments)) || this;
            }
            K(c, a);
            c.prototype.defaultOptions = function () {
                var a = C(this.chart.currentOptions, "defaultTooltip");
                return A(gj(), a);
            };
            c.prototype.triggerOptionsApplied = function () {};
            return c;
        })(ej),
        $t = function () {
            return { mouseTracking: { sticky: !1 }, markerLimit: 110, opacity: 0.9, defaultPoint: {} };
        },
        Wm = function (a) {
            return !1 !== a.options("mouseTracking.enabled") && !1 !== a.options("mouseTracking");
        },
        Xm = (function (a) {
            function c(b, c) {
                var d = a.call(this, b.chart, c, [b, c]) || this;
                d.chartArea = b;
                d.kind = "Series";
                d.isVisible = !0;
                d.legendEntries = [];
                d.isStacked = !0;
                d.visuals = { panel: void 0, line: void 0, area: void 0, pointHalo: void 0 };
                d.zIndex = 0;
                d.cpbIndexOffset = 0;
                d._points = [];
                d.indexer = new Fl({ svv: { flatten: !0 }, svxv: { flatten: !0 } });
                d.userPoints = [];
                d.dataPoints = [];
                d.dirty = !0;
                d.state = "";
                d.seriesDirty = new pD(d);
                d.chart = b.chart;
                d.renderer = b.renderer;
                d.ctManager = b.ctManager;
                d.initFP();
                c && d.options(c, !1);
                d.tooltip = new Zt(d);
                return d;
            }
            K(c, a);
            c.prototype.init = function () {
                for (var a = 0; a < arguments.length; a++);
            };
            c.prototype.getCaSeriesPoints = function () {
                var a = this,
                    c = this.chartArea.userOptions.series;
                if (c && c.length)
                    return (
                        (c = S(c, function (b) {
                            return b.name === a.name;
                        })) && c.points
                    );
            };
            c.prototype.initFP = function () {
                var a = this;
                this.points = Xa(
                    wb,
                    function () {
                        return a._points;
                    },
                    function (b) {
                        a.options({ points: b });
                    },
                    {
                        push: function (b, c) {
                            var d = N(c, ["shift"]);
                            !0 === d && a.userPoints.shift();
                            b.pop && (b = a.visualizer.pointArrayExpander(b));
                            a.userPoints.push(b);
                            var e = a.getCaSeriesPoints();
                            e && e.push(b);
                            a.visualizer.updateInfo = { action: "splice", at: a.userPoints.length - 1, count: 1, del: 0, shift: d };
                            a.chart.renderer.finishAnimations();
                            a.invalidate().refresh(c);
                            a.visualizer.updateInfo = void 0;
                        },
                        splice: function (b, c, f, g) {
                            var d;
                            (d = a.userPoints).splice.apply(d, H([b, c], f));
                            (d = a.getCaSeriesPoints()) && d.splice.apply(d, H([b, c], f));
                            a.visualizer.updateInfo = { action: "splice", at: b, del: c, count: f.length };
                            a.chart.renderer.finishAnimations();
                            a.invalidate().refresh(g);
                            a.visualizer.updateInfo = void 0;
                        },
                    }
                );
            };
            c.prototype.syncLegendItems = function () {
                var a = this,
                    c = this,
                    e = c.info.type.colorByPoint,
                    f = c.chartArea,
                    g = c.chart,
                    h = c.currentOptions.legendEntry || {},
                    k = c.legendEntries,
                    l = g.requestLegend(this),
                    m = c.ctmIsType("map"),
                    n = function () {
                        c.legendEntry ? c.legendEntry.setColumns() : (c.legendEntry = l.addEntry(a, c._i));
                    },
                    p = function () {
                        c.legendEntry && (c.legendEntry.destroy(), (c.legendEntry = void 0));
                    },
                    q = function (a) {
                        a.syncLegendItems(c.legendEntry);
                        a.legendEntry && (k.push(a.legendEntry), a.legendEntry.setColumns());
                    },
                    r = function () {
                        c.points().each(function (a) {
                            a.legendEntry && (a.legendEntry.destroy(), (a.legendEntry = void 0));
                        });
                        c.legendEntries = [];
                    };
                if (!((!c.isVisible && g.isRendered && c.visualizer.isRendered) || (m && c.currentOptions.isBaseLayer))) {
                    f.chartAreaSet.enumerateData();
                    var u = !1 !== N(c.chartArea.currentOptions, ["legend", "visible"]);
                    if (e) {
                        !x && c.setPoints();
                        var x = !0;
                    }
                    if (e && u && !1 !== c.options("defaultPoint.legendEntry.visible")) (k = c.legendEntries = []), c.points().each(q), !0 === h.visible ? n() : p();
                    else if ((u && !1 !== h.visible ? n() : p(), c._points.length && c._points[0].legendEntry && r(), c.info.hasUniqueStyles || k.length))
                        !x && c.setPoints(),
                            (x = !0),
                            c.points().each(function (a) {
                                u && !0 === a.options("legendEntry.visible")
                                    ? q(a)
                                    : a.legendEntry &&
                                      (a.legendEntry.destroy(),
                                      (c.legendEntries = ea(k, function (b) {
                                          return b !== a.legendEntry;
                                      })),
                                      (a.legendEntry = void 0));
                            });
                }
            };
            c.prototype.iconName = function () {
                var a = this;
                if (!a._iconName) {
                    var c = function (a) {
                            return !a || (0 !== a.size && "none" !== a.type);
                        },
                        e = function (a) {
                            return "system/default/" + a;
                        },
                        f = function () {
                            var b = a.points(0);
                            return b && b.currentOptions.marker;
                        },
                        g = N(a.currentOptions, ["defaultPoint", "marker"]);
                    c = !c(g) || !c(f());
                    f = this.info.type;
                    a._iconName = f.drawArea ? e(c ? "areaSolo" : "area") : f.drawLine ? e(c ? "lineSolo" : "line") : f.drawMarker ? e("circle") : e("square");
                }
                return a._iconName;
            };
            c.prototype.getIconVisual = function (a, c, e) {
                c === this && (c = void 0);
                return this.visualizer.getIconVisual(a, c, e);
            };
            c.prototype.styleIconVisual = function (a, c) {
                a && this.visualizer.setIconVisualAttr(a, c);
            };
            c.prototype.setAxes = function () {
                var a = this,
                    c = a.options(),
                    e = a.visualizer.getTypeConfig(),
                    f = e.customAxisOptions || {},
                    g = e.privateAxes || "";
                e = e.axes.length ? e.axes.split(",") : [];
                var h;
                w(e, function (b) {
                    h = b + "Axis";
                    var d,
                        e = a.chartArea.axConfList,
                        k = A({}, f[b]);
                    (d = a[h]) && (d = d.parentAxis || d);
                    var p = a.userOptions[h],
                        q = p || c[h] || (d ? d.id : void 0);
                    if ((d = vb(g, b) && (!d || !d.currentOptions.isPrivate))) (q = qa(e[b][0])), p && q.id !== p && (q = {}), delete q.id, (k = A(k, q)), (k.isPrivate = !0), (q = p || de(6));
                    p = a[h];
                    b = a[h] = a.chartArea.requestAxis(a, b, q, k);
                    b.isPrivate = d;
                    p && p.isPrivate && p.id !== b.id && p.destroy();
                    Z(a.currentOptions, h, b.id);
                });
                return this;
            };
            c.prototype.assignAxes = function () {
                var a = this,
                    c = this.visualizer.getTypeConfig().axes.split(","),
                    e = this.chartArea.axConfList,
                    f,
                    g,
                    h,
                    k = this.options();
                w(c, function (b) {
                    f = b + "Axis";
                    e[b] = e[b] || [];
                    if ((g = k[f])) "object" === I(g) && ((h = zb(g)), e[b].push(g), (k[f] = h));
                    else if ((g = z(e[b][0], a.chartArea.chartAreaSet.freeAxes[b]))) k[f] = g.id;
                });
            };
            c.prototype.reIndexStringVals = function (a) {
                var b = this.indexer,
                    c = a.toPosition,
                    f = [a.prefix];
                f.push.apply(f, H(a.usedDataKeys));
                f = $a(f);
                a = b.data;
                w(f, function (a) {
                    if (vb(b.uniqTypes[a], "string")) {
                        var d = b.getKey(a);
                        b.reset(a);
                        for (var e = 0, f = d.length; e < f; e++) {
                            var g = {};
                            g[a] = c(d[e]);
                            b.indexKeys([a], g, e);
                        }
                    }
                });
                if (2 === gc(["ye", "ys"], f).length && a.ys && a.ys.length) {
                    b.reset("yr");
                    f = 0;
                    for (var g = a.ys.length; f < g; f++) b.indexKeys(["yr"], { yr: a.ye[f] - a.ys[f] }, f);
                }
                this.seriesDirty.pointIndex(!1);
            };
            c.prototype.getFormatInfo = function () {
                var a = this,
                    c = {},
                    e,
                    f = this.visualizer.getTypeConfig().axes.split(","),
                    g = this.chart.currentOptions.defaultCultureName;
                g && (c.culture = g);
                w(f, function (b) {
                    (e = a[b + "Axis"]) ? (c[b] = e.getFormatInfo()) : (c[b] = {});
                });
                return c;
            };
            c.prototype.options = function (a, c) {
                var b = !0,
                    d = this.optionsGetter(a);
                if ("NotGetter" !== d) return d;
                d = pa(a);
                var g = 1 === d.length;
                if ("object" === typeof a.mapData && (this.setMapData(a.mapData), g)) return this;
                if (0 < gc(d, Or).length) {
                    var h = g;
                    L(this.userOptions, a);
                    L(this.currentOptions, a);
                    this.visualizer && (t(a.muted) && "select" !== this.state ? this.setState(a.muted ? "mute" : "") : t(a.selected) && this.select(a.selected));
                }
                if (!h) {
                    t(a.visible) && ((this.isVisible = a.visible), g && (b = !1), this.chart.isRendered && this.legendEntry && this.legendEntry.updateCheckbox(this.isVisible));
                    if (a.points || a.emptyPointMode) this.seriesDirty.points(!0), this.seriesDirty.pointIndex(!0), this.seriesDirty.resetCache();
                    this.userPoints = a.points || this.userPoints;
                    delete a.points;
                    a = this.normalizeOptions(a);
                    (a.defaultPoint || a.firstPoint || a.lastPoint) && this.seriesDirty.points(!0);
                    a = L(this.userOptions, a);
                    this.name = a.name || "";
                    this.setOptions();
                    this.type = this.ctManager.settingVal("seriesType", this.options());
                    this.setType(b);
                    if (!1 !== c) {
                        c = this.normalizeUpdateOpt({ animation: this.currentOptions.animation }, c);
                        b && this.chartArea.invalidate();
                        this.chart.redraw(c);
                        var k = !0;
                    }
                    b && this.chart.updateSideItems(c);
                }
                this.chart.triggerOptionsApplied("series", this);
                !k && this.afterUpdate(c);
                return this;
            };
            c.prototype.normalizeArrPoints = function () {
                var b;
                if ((b = this.userPoints)) {
                    var c = I(b);
                    if ("string" === c && 0 === b.indexOf("JSC.points")) this.userPoints = Nj(b);
                    else if ("object" === c && b.data) this.userPoints = np(b);
                    else if (b.length) {
                        c = 0;
                        for (var e = b.length; c < e; c++) {
                            var f = b[c];
                            f.pop ? (b[c] = this.visualizer.pointArrayExpander(f)) : "number" === typeof f ? (b[c] = { y: f }) : a.prototype.normalizeOptions.call(this, b[c], "map,attributes");
                        }
                        this.userPoints = b;
                    }
                }
            };
            c.prototype.setType = function (a) {
                var b = this.options(),
                    c = this.ctManager;
                "gauge" === b.type && (this.type = b.type = "gauge marker");
                var f = c.settingVal("seriesType", b);
                c = c.settingVal("chartType", b);
                "organization" === c && (this.type = f = b.type = "annotation");
                f = b = f || this.type || f || c;
                f = J(Oc, f) ? Oc[f] : Ie;
                (this.visualizer && this.visualizer.kind === b) || ((this.visualizer = new f(this)), this.setOptions(), this.assignAxes());
                "calendar" === this.visualizer.kind && (this.isStacked = !1);
                this.visualizer.getTypeConfig(!0);
                this._ctmIsTypeCache = this._ctSvCache = void 0;
                this.normalizeArrPoints();
                !1 !== a && this.setData();
            };
            c.prototype.normalizeOptions = function (b) {
                b = a.prototype.normalizeOptions.call(this, b);
                pw(b, "size", ["min", "max"]);
                cp(b, "emptyPointMode");
                var c = b,
                    e,
                    f;
                "undefined" !== (f = I((e = C(c, "animation.easing")))) && "string" === f && Z(c, "animation.easing", On(e));
                return b;
            };
            c.prototype.defaultOptions = function () {
                var a = this.chart.options("navigator.enabled");
                return A(a ? A($t(), { line: { width: 2 } }) : $t(), { animation: this.chart.options("animation") });
            };
            c.prototype.contextOptions = function () {
                return this.visualizer ? this.visualizer.contextDefaults() : void 0;
            };
            c.prototype.setOptions = function () {
                var a = this.chart.options("navigator.enabled"),
                    c = this.normalizeOptions(this.chart.currentOptions.defaultSeries || {}),
                    e = (this.currentOptions = A({}, this.defaultOptions(), this.contextOptions(), c, this.userOptions));
                a &&
                    "line" === this.ctManager.settingVal("seriesType", e) &&
                    (this.currentOptions = A(e, { defaultPoint: { marker: { type: "circle", color: "none", outline: { width: 0 } }, states: { hover: { marker: { outline: { width: 2 } } } } } }));
                c = this.ctManager;
                a = this.ctSv("gaugeType");
                if ("gauge" === c.settingVal("chartType", e)) {
                    c = c.curCtDst(e);
                    var f = c.dst.explicit || "";
                    c = vb((c.ct || {}).explicit || "", "seriesType");
                    e = e.type || "";
                    var g = vb(e, "gauge");
                    f = -1 !== f.indexOf("seriesType");
                    var h = "circular" === a ? "marker" : "column";
                    if (!c && !f)
                        if ("circular" === a) {
                            g && !f && ((h = e + h), (this.currentOptions.type = h));
                            var k = { type: h, defaultPoint: { marker: { type: "needle", length: 0.8 } } };
                        } else "linear" === a && (g && !f && ((h = e + h), (this.currentOptions.type = h)), (k = { type: h }));
                }
                k && qd(this.currentOptions, k);
                Ll(this);
                return this;
            };
            c.prototype.ctSv = function (a) {
                this._ctSvCache || (this._ctSvCache = this.ctManager.getSettingChecker(this.currentOptions));
                return this._ctSvCache(a);
            };
            c.prototype.ctSvIs = function (a, c) {
                return this.ctSv(a) === c;
            };
            c.prototype.ctmIsType = function (a) {
                this._ctmIsTypeCache || (this._ctmIsTypeCache = this.ctManager.getIsTypeChecker(this.currentOptions));
                return this._ctmIsTypeCache(a);
            };
            c.prototype.correctRootBox = function (a) {
                var b = this.chart.navigator;
                if (this.pane) {
                    var c = this.pane.getGlobalOffsets();
                    a[0] -= c.x;
                    a[1] -= c.y;
                }
                b && ((a[1] += b.defaults.toolbarHeight), (a[3] -= b.defaults.toolbarHeight));
                return a;
            };
            c.prototype.setInfo = function () {
                var a = this.ctManager,
                    c = this.options(),
                    e = a.hasSetting,
                    f = function (a) {
                        return e("behavior", a, c);
                    },
                    g = a.settingVal("chartType", c),
                    h = a.settingVal("seriesType", c);
                "organization" === g && (this.type = h = c.type = "annotation");
                a = {
                    seriesType: h,
                    drawMarker: f("drawMarker"),
                    drawArea: f("drawArea"),
                    drawRect: f("drawRect"),
                    drawLine: f("drawLine") || "organization" === g,
                    colorByPoint: f("colorByPoint") || t(c.palette),
                    colorByPointLocal: t(c.palette),
                    snapToZero: f("snapToZero"),
                    drawSubvalue: f("drawSubvalue"),
                    noNameGrouping: f("noNameGrouping"),
                    tree: f("tree"),
                    varyPalette: f("varyPalette"),
                    labelConnector: f("labelConnector"),
                    clusters: f("clusters"),
                    noPos: f("noPos"),
                    isMapLayer: a.isMapLayer(this),
                    isAnnotation: f("annotation"),
                    isShape: "visualshape" === a.settingVal("seriesLayout", c),
                    isPie: "pie" === g,
                    isRadar: "radar" === g,
                    hasNeedles: "gauge" === g && "marker" === h && "needle" === N(c, ["defaultPoint", "marker", "type"]),
                    roundCaps: this.ctSvIs("columnType", "roundcaps"),
                    isRadarColumn: !1,
                };
                "line" === N(c, ["map", "type"]) && ((a.drawMarker = !1), (a.drawArea = !1), (a.drawLine = !0));
                if (a.isPie || c.isMerged) a.colorByPoint = !0;
                a.isRadar && a.drawRect && (a.isRadarColumn = !0);
                "gauge" === g && (a.snapToZero = !0);
                f = N(this, ["info", "style"]);
                this.info = { type: a, hasSubvalues: !1, hasComplete: !1, hasYRanges: !1, hasUniqueStyles: !1, hasMaxedMarkerLimit: !1, data: {}, style: f || {}, xIsSorted: !0, labelTextInfo: {}, map: this.info ? this.info.map : {} };
                if ("object" === I(c.palette || this.chart.palette) || "heatmap" === g) this.info.usesSmartPalette = !0;
            };
            c.prototype.setDataInfo = function (a) {
                var b = this.visualizer,
                    c = this.chart,
                    f = this.info,
                    g = f.type,
                    h = this.userPoints,
                    k = h.length,
                    l = this.indexer,
                    m = 0,
                    n = b.pointValueParser,
                    p = b.pointDataKeys || Js;
                if (this.seriesDirty.pointIndex() || a) {
                    this._catCache = [];
                    t(this._i) || this.chartArea.chartAreaSet.enumerateSeries(this);
                    g.clusters &&
                        ((this.zAxis && "stacked" === N(this.zAxis.currentOptions, ["scale", "type"])) ||
                            "stacked" === N(this.chart.currentOptions, ["zAxisScaleType"]) ||
                            "stacked" === N(this.chart.currentOptions, ["zAxis", "scale", "type"])) &&
                        ((g.clusters = !1), (g.zStacked = !0));
                    this.prevCoords = l.data.coordinates || this.prevCoords;
                    var q = 0 === l.getAllKeys.length;
                    l.reset();
                    a = void 0;
                    var r = !0;
                    !this.isVisible && !q && c.isRendered && this.isStacked && (a = { y: 0 });
                    q = this.cpbIndexOffset;
                    var u = function (a) {
                            return a;
                        },
                        x;
                    c = void 0;
                    if ((c = this.currentOptions.defaultPoint))
                        if ((x = c.subvalue))
                            u = function (a) {
                                return a.subvalue ? a : A(a, { subvalue: x });
                            };
                    for (; m < k; m++) {
                        var v = h[m];
                        this.setLegendEntryVisibility(v);
                        zb(v);
                        v = a ? A({}, v, a) : v;
                        u(v);
                        v._i = m;
                        g.colorByPoint && (v.cpbIndex = z(v.cpbIndex, g.colorByPointLocal ? m : q++));
                        v = n(this, v, p, b.skipSubvalues);
                        l.indexObject(v, m);
                        m && r && t(v.x) && nb(v.x) && v.x < l.data.x[m - 1] && (r = !1);
                    }
                    f.hasYRanges = !1;
                    l.hasAllKeys(["y", "ys"]) && ((g.snapToZero = !1), (f.hasYRanges = !0));
                    l.hasAllKeys(["ys", "ye"]) && !l.hasKey("y") && ((g.snapToZero = !1), (f.hasYRanges = !0));
                    this.currentOptions.isPreview && (g.snapToZero = !1);
                    f.hasMaxedMarkerLimit = g.drawMarker && k > this.currentOptions.markerLimit;
                    f.xIsSorted = r;
                    l.hasAnyKeys(["subvalue", "subvalueX"]) && (f.hasSubvalues = !0);
                    l.hasAnyKeys(["complete", "completee", "completeX", "completeXe"]) && (f.hasComplete = !0);
                    b = void 0;
                    g.varyPalette
                        ? (b = !0)
                        : l.hasAnyKeys(["color", "outline", "marker", "label", "fill"])
                        ? (b = !0)
                        : "candlestick" === g.seriesType
                        ? (b = !0)
                        : "ohlc" === g.seriesType
                        ? N(this.currentOptions, ["defaultPoint", "altColor"]) && (b = !0)
                        : g.tree
                        ? (b = !0)
                        : g.isRadarColumn && (b = !0);
                    if ("object" === I(this.chart.options("palette"))) g.colorByPoint = !0;
                    else if ("%color" === N(c, ["marker", "fill"])) b = !0;
                    else if (this.currentOptions.firstPoint || this.currentOptions.lastPoint) b = !0;
                    f.hasUniqueStyles = b || f.hasUniqueStyles;
                    this.seriesDirty.pointIndex(!1);
                    this.seriesDirty.pos(!0);
                    this.validateData();
                    this.setAttribs(!0);
                    this.visualizer.validate(!1);
                    this.syncLegendItems();
                }
            };
            c.prototype.setLegendEntryVisibility = function (a) {
                !1 === this.visualizer.pointLeVisible(a) && ((a = a.legendEntry || (a.legendEntry = {})), (a.visible = z(a.visible, !1)));
            };
            c.prototype.validateData = function () {
                if (this.visualizer && this.userPoints.length && !this.ctmIsType("map")) {
                    var a = this.visualizer.getTypeConfig(),
                        c = a.requiredData,
                        e = a.supportedData,
                        f = this.indexer.getAllKeys();
                    c &&
                        ((c = c.split(",")),
                        vb(f, "ys") && f.push("y"),
                        vb(f, "xs") && f.push("x"),
                        vb(f, "zs") && f.push("z"),
                        gc(f, c).length < c.length && Ma.emit("error", this.id, "dataRequired", { data: [this.name || this.id, c.join(", ")], container: this.chart.getWrapper() }));
                    e && a.supportedData.split(",");
                }
            };
            c.prototype.setData = function () {
                this.setInfo();
                this.setDataInfo(!0);
            };
            c.prototype.setPoints = function () {
                var a = this;
                if (a.seriesDirty.points()) {
                    if (!a._points.length || a.dirty) {
                        a._defPointGen = void 0;
                        Ub(
                            a.userPoints,
                            a._points,
                            function (b) {
                                return new ZC(a, b);
                            },
                            function (a, b) {
                                return b.options(a, !1);
                            },
                            function (a) {
                                return a.destroy();
                            },
                            function (a, b) {
                                return z(a.id, a.name) || b;
                            },
                            function (a, b) {
                                return z(a.currentOptions.id, a.currentOptions.name, a.id) || b;
                            }
                        );
                        var c = [],
                            e = {};
                        w(a._points, function (a) {
                            e[a.id] = a;
                        });
                        w(a.userPoints, function (a) {
                            Xe(c, e[a.id]);
                        });
                        a._points = c;
                    }
                    if (a.info.usesSmartPalette) {
                        var f = a.getSP(),
                            g = f.userOptions.pointValue;
                        100 < this._points.length && O(g) && Ma.emit("warning", a.id, "spPointValueSuggestion", { container: this.chart.getWrapper() });
                        f.setPointSpValues(a);
                    }
                    a.seriesDirty.points(!1);
                }
                return this;
            };
            c.prototype.getAutoLabelText = function (a, c) {
                function b() {
                    switch (q.type.seriesType) {
                        case "candlestick":
                        case "ohlc":
                            var a = r ? x(["%icon", " ", "O:%open H:%high L:%low C:%close"]) : "%xValue {%close-%open}<br/>Open: %open<br/>High: %high<br/>Low: %low<br/>Close: %close";
                            return a;
                        default:
                            var b = (a = ""),
                                c = r ? "" : "<br/>",
                                d = vb(Bf(u.vScale), Bf("stacked")),
                                e = q.type.drawLine,
                                f = 1 < p.chartArea.series().items.length,
                                g = !r && !e && !d;
                            r
                                ? (b = "%icon")
                                : (u.sName && f && !g && (a += v("%seriesName") + "<br/>"),
                                  "category" === u.xScale
                                      ? (a += u.xAxisLabel ? "%xAxisLabel: " + (v("%name") + "<br/>") : "%name ")
                                      : (u.pointName && (a = "%name<br/>"), (a += u.xAxisLabel ? "%xAxisLabel: " + v("%xValue") + "<br/>" : "%xValue ")));
                            a += F("yAxisLabel", c, y(), " ");
                            u.hasZ && (a += F("zAxisLabel", "<br/>", "%zValue", "<br/>", !0));
                            r || (e || d ? d && (a += "<br/>%ypercentOfGroup% of " + w()) : (a += "<br/>" + m()));
                            u.hasComplete && (a += "<br/>%complete Complete");
                            a = b ? x([b, "<span style='width:5;'> </span>", a]) : a;
                            return n(a.trim());
                    }
                }
                function d() {
                    var a = E();
                    a += " " + F("yAxisLabel", "<br/>", y(), "<br/>");
                    u.hasZ && (a += " " + F("zAxisLabel", "<br/>", "%zValue", "<br/>", !0));
                    a += m();
                    return n(a.trim());
                }
                function g() {
                    var a = (u.sName ? v("%seriesName") + "<br/>" : "") + "%name: " + y();
                    return n(a.trim());
                }
                function h(a) {
                    var b = "",
                        c = u.mapInfo || {};
                    a && a.options("name") && (b += "%name");
                    u.mapInfo && u.serName && u.serName !== c.name && ((b += b.trim().length ? "<br/>" : ""), "province" === c.mapLevel && ((a = c.country), vb(Bf(u.serName), Bf(a)) && (b += "%country")));
                    u.serName && ((b += b.trim().length ? "<br/>" : ""), (b += "%seriesName"));
                    "marker" === q.type.st && ((b += b.trim().length ? "<br/>" : ""), (b += "<br/>Lat: " + v("%yValue")), (b += "<br/>Long: " + v("%xValue")));
                    u.hasZ && ((b += b.trim().length ? "<br/>" : ""), (b += F("zAxisLabel", "<br/>", "%zValue", "<br/>", !0)));
                    return n(b.trim());
                }
                function k() {
                    var a = u.sName ? "%seriesName" : "";
                    a += " " + E();
                    a += a.trim().length ? "<br/>" : "";
                    a += F("yAxisLabel", "<br/>", y(), "<br/>");
                    return n(a.trim());
                }
                function l() {
                    var a = "";
                    "category" === u.xScale ? (a += u.xAxisLabel ? "%xAxisLabel: " + (v("%name") + "<br/>") : "%name ") : (u.pointName && (a = "%name<br/>"), (a += u.xAxisLabel ? "%xAxisLabel: " + v("%xValue") + "<br/>" : "%xValue "));
                    a += " " + F("yAxisLabel", "<br/>", y(), "<br/>");
                    u.hasZ && (a += " " + F("zAxisLabel", "<br/>", "%zValue", "<br/>", !0));
                    return n(a.trim());
                }
                function m(a) {
                    var b = "";
                    "time" !== u.vScale &&
                        ((b = t(a) ? a + "% of " : "%percentOfSeries% of "), (b += u.sName ? "%seriesName" : q.type.colorByPoint ? "Series" : "%icon"), vb(Bf(u.vScale), Bf("stacked")) && (b += "<br/>%percentOfGroup% of " + w()));
                    return b;
                }
                function n(a) {
                    return a.replace(/<br\/><br\/>/g, "<br/>").replace(/<br\/> <br\/>/g, "<br/>");
                }
                void 0 === a && (a = {});
                var p = this,
                    q = this.info,
                    r = p.chartArea.tooltip.cttEnabled(p.yAxis, p.xAxis),
                    u = A(a, q.labelTextInfo);
                a = this.options("defaultPoint.label.text");
                var x = function (a) {
                        return (p.chart.isRtlCulture ? a.reverse() : a).join("");
                    },
                    v = function (a) {
                        return "<b>" + a + "</b>";
                    },
                    y = function () {
                        return u.hasRange ? ("time" === u.vScale ? "%yStart\u2013%yValue" : "(%yStart\u2013%yValue)") : "%yValue";
                    },
                    w = function () {
                        return "category" === u.xScale ? "%name" : "%xValue";
                    },
                    E = function () {
                        return u.pointName || O(u.pointX) ? (u.pointName ? "%name" : "%xValue") : "";
                    },
                    F = function (a, b, c, d, e) {
                        return r ? c : u[a] ? b + ("%" + a) + ": " + v(c) + "<br/>" : (e ? "(" + c + ")" : c) + d;
                    },
                    z = "",
                    C = "";
                switch (u.ct) {
                    case "horizontal":
                    case "vertical":
                        z = b();
                        break;
                    case "cone":
                    case "pyramid":
                    case "funnel":
                    case "treemap":
                    case "pie":
                        z = d();
                        break;
                    case "heatmap":
                        z = l();
                        break;
                    case "radar":
                        z = b();
                        break;
                    case "gauge":
                        z = k();
                        break;
                    case "navigator":
                        z = b();
                        break;
                    case "organization":
                        C = z = "%XValue";
                        break;
                    case "map":
                        z = c ? h(c) : "%name";
                        C = "%name";
                        break;
                    case "calendar":
                        z = b();
                        C = "%name";
                        break;
                    case "venn":
                        C = "%name";
                        z = g();
                        break;
                    default:
                        z = b();
                }
                return { tooltip: z, label: a || C || "%yValue" };
            };
            c.prototype.getAutoTooltipText = function (a) {
                return this.getAutoLabelText({ pointName: a.name, pointX: a.options("x"), hasComplete: t(a.options("complete")) }).tooltip;
            };
            c.prototype.setPane = function (a) {
                this.pane = a;
                a.hasNeedles = a.hasNeedles || this.info.type.hasNeedles;
                a.hasRoundCaps = a.hasRoundCaps || this.info.type.roundCaps;
                Lr(this);
            };
            c.prototype.render = function (a, c) {
                this.renderRect = a.rect || a;
                this.userPoints.length && this.visualizer.render(c);
                return this;
            };
            c.prototype.renderLabels = function (a, c) {
                this.renderRect = a.rect || a;
                this.userPoints.length && this.visualizer.renderLabels(c);
            };
            c.prototype.setPos = function () {
                var a = this,
                    c = a.ctManager,
                    e = a.pane,
                    f = a.ctmIsType("radar"),
                    g = a.ctmIsType("gauge"),
                    h = a.info,
                    k = a.options(),
                    l = a.userPoints,
                    m = N(k, ["emptyPointMode"]) || "undefined",
                    n,
                    p = g && "marker" === h.type.seriesType,
                    q = N(a.currentOptions, ["defaultPoint", "marker", "length"]);
                c = c.settingVal("lineSeriesType", k);
                var r = ("line" === h.type.seriesType && "spline" === c && a.ctmIsType("map")) || ("line" === h.type.seriesType && f && e && "polar" === e.getRadarType()),
                    u = f ? 15 / 360 : 5,
                    x,
                    v,
                    y;
                if (a.seriesDirty.pos() && !a.info.type.noPos) {
                    a.info.labelTextInfo = Pr(this);
                    e = a.getAutoLabelText({}, a._points[0]);
                    L(a.info.labelTextInfo, e);
                    a.isStacked = a.yAxis.isStacked();
                    a.indexer.indexKeys(["pos"], {}, 0);
                    var D = a.getXYZTranslator(),
                        E = function (a, b, c, d) {
                            t(B[a]) && (U[a] = D(b, c, d));
                        },
                        F = D(0, 0, 0),
                        A = function (a, b) {
                            return Math.floor(mc(a, b) / u);
                        },
                        C = function (a, b, c, d) {
                            var e = [];
                            c &&
                                ob(c, function (f) {
                                    f && ((f = [Y(a[0], b[0], 0, 1, (1 / c) * f), Y(a[1], b[1], 0, 1, (1 / c) * f)]), e.push(d ? d.apply(void 0, H(f)) : f));
                                });
                            return e;
                        };
                    e = function (b, c) {
                        B = a.indexer.getItem(b);
                        if (B.isEmpty && "ignore" === m && !N(a, ["pane", "isRadial"])) return "continue";
                        var d = z(B.ye, B.y),
                            e = z(B.ys, 0),
                            g = z(B.xe, B.x),
                            k = z(B.xs, g),
                            l = z(B.ze, B.z),
                            u = void 0;
                        p && (n = z(N(B, ["marker", "length"]), q, 0.8)) && (n.pop ? ((c = G(n, 2)), (u = c[0]), (l = c[1])) : ((l = n), (u = 0)));
                        u = z(B.zs, u, l);
                        U = { xyz: D(g, d, l), xyzOrigins: F, xyzs: D(k, e, u), xyzRDesc: [k > g, e > d, u > l] };
                        "map" === h.type.seriesType && a.visualizer.setPos(B, U);
                        h.hasSubvalues &&
                            (E("sv", g, B.sv, l),
                            E("svs", g, B.svs, l),
                            E("svx", B.svx, d, l),
                            E("svxs", B.svxs, d, l),
                            t(B.svv) &&
                                ((U.svv = x = []),
                                w(B.svv, function (a) {
                                    x.push(D(g, a, l));
                                })),
                            t(B.svxv) &&
                                ((U.svxv = x = []),
                                w(B.svxv, function (a) {
                                    x.push(D(a, d, l));
                                })));
                        h.hasComplete &&
                            (t(z(B.completee, B.complete)) || t(z(B.completeXe, B.completeX))
                                ? ((c = function (a, b, c) {
                                      t(Z(U, b, z(B[b], B[c]))) ? Z(U, a, B[a] || 0) : ((U[a] = 0), (U[b] = 1));
                                  }),
                                  c("completes", "completee", "complete"),
                                  c("completeXs", "completeXe", "completeX"))
                                : (U.completes = U.completee = U.completeXs = U.completeXe = 0));
                        a.indexer.setValue("pos", b, U);
                        r && y && ((b = void 0), a.ctmIsType("map") ? (b = A(y, [g, d])) : f && (b = A(v.xyz, U.xyz)), (v.interpPoints = C(y, [g, d], b, D)));
                        v = U;
                        y = [g, d];
                    };
                    c = 0;
                    for (l = l.length; c < l; c++) e(c, l);
                    if (f && r) {
                        var B = a.indexer.getItem(0),
                            U = a.indexer.getValue("pos", 0);
                        l = v.xyz[0] + 2 * la(v.xyz[0], 1);
                        l = [v.xyz, [l, U.xyz[1]]];
                        e = A(l[0], l[1]);
                        v.interpPoints = C(l[0], l[1], e);
                        v.interpPoints.unshift(l[0], l[0]);
                    }
                } else a.info.type.noPos && ((a.info.labelTextInfo = Pr(this)), (e = a.getAutoLabelText()), L(a.info.labelTextInfo, e));
                a.seriesDirty.pos(!1);
                return this;
            };
            c.prototype.setCoordinates = function (a, c) {
                this.userPoints.length && this.visualizer.setCoordinates(a || this.contentRect(), c);
                return this;
            };
            c.prototype.setState = function (a, c) {
                void 0 === c && (c = {});
                a = Ml(this, a);
                if (this.state !== a) {
                    var b = {},
                        d = z(c.continueAnimation, !0);
                    if (c.animation) {
                        A(b, !1 === c.animation ? { duration: 0 } : c.animation);
                        var g = !!b.duration;
                    }
                    c = function (a) {
                        return A(g ? { continueAnimation: d, animation: b } : { continueAnimation: d }, a);
                    };
                    var h = this.info.type,
                        k,
                        l = this.getStateAttrs(a);
                    h.drawLine && (k = this.visuals.line) && l.line && k.attr(c(l.line));
                    h.drawArea && (k = this.visuals.area) && k.attr(c(l.area));
                    this.state = a;
                    "select" === a && this.chart._seriesSelection();
                }
            };
            c.prototype.getStateAttrs = function (a) {
                var b = this.info.type,
                    c = this.info.style,
                    f = c.states;
                a = Ml(this, a);
                a = f[a];
                f = { line: void 0, area: void 0 };
                b.drawLine && (f.line = L({}, a));
                b.drawArea && (f.area = fc({ fill: z(a.areaColor, c.base.areaColor), opacity: z(a.areaOpacity, c.base.areaOpacity) }));
                return f;
            };
            c.prototype.getXYZValAxes = function () {
                var a = this.pane,
                    c = N(a, ["xAxis"]) || this.xAxis,
                    e = N(a, ["yAxis"]) || this.yAxis;
                a = N(a, ["zAxis"]) || this.zAxis;
                return [c, e, a];
            };
            c.prototype.getXYZTranslator = function () {
                var a = this.chartArea,
                    c = this.pane,
                    e = c ? c.isHoriz : a.isHoriz,
                    f = z(N(c, ["projection"]), a.projection),
                    g = G(this.getXYZValAxes(), 3);
                a = g[0];
                c = g[1];
                g = g[2];
                var h = a ? a.getValToLin() || xc : Gb,
                    k = c ? c.getValToLin() || xc : Gb,
                    l = g ? g.getValToLin() || xc : Gb;
                return this.ctmIsType("map")
                    ? (this.transformFn = function (a, b, c) {
                          a = f.val2linxy(a, b);
                          return [h(a[0]), k(a[1]), l(c)];
                      })
                    : (this.transformFn = e
                          ? function (a, b, c) {
                                return [k(b), h(a), l(c)];
                            }
                          : function (a, b, c) {
                                return [h(a), k(b), l(c)];
                            });
            };
            c.prototype.preRender = function (a) {
                void 0 === a && (a = {});
                var b = a.rect || this.contentRect();
                if (a.rect) {
                    var c = z(this.options("shape.padding"), 0.3);
                    c && (b = Xo(b, c));
                }
                t(this._i) || this.chartArea.chartAreaSet.enumerateData();
                this.setPos().setPoints().setAttribs().setCoordinates(b, a);
            };
            c.prototype.contentRect = function () {
                return this.renderRect;
            };
            c.prototype.destroy = function () {
                var b = this.visualizer;
                b && b.clearHighlightVisuals && b.clearHighlightVisuals();
                this.rootVisuals = null;
                this.points().each(function (a) {
                    return a.destroy();
                });
                a.prototype.destroy.call(this);
                w(this.visuals, function (a) {
                    return (
                        (t(a) &&
                            hb(a, function (a) {
                                return a.destroy && a.destroy();
                            })) ||
                        !0
                    );
                });
                this.legendEntry && this.legendEntry.destroy();
            };
            c.prototype.translateToGlobal = function (a) {
                var b = this.chartArea.rootVisuals.content.getGlobalBbox();
                b = [a[0] + b.x, a[1] + b.y];
                2 < a.length && ((b[2] = a[2]), (b[3] = a[3]));
                return b;
            };
            c.prototype.hitTest = function (a) {
                var b = this.visualizer;
                if (this.isVisible && Wm(this)) {
                    var c = this.indexer.getKey("coordinates"),
                        f,
                        g = b.renderOrderRev;
                    if ((b = b.pointsGlobals || b.updatePointsGlobals())) (a[0] -= b.x), (a[1] -= b.y);
                    b = function (b) {
                        if ((f = c[b]) && f.hitTest && f.hitTest(a[0], a[1])) return !0;
                    };
                    var h = void 0;
                    if (g) {
                        g.length > c.length &&
                            (g = g.filter(function (a) {
                                return a < c.length;
                            }));
                        for (var k = 0, l = c.length; k < l; k++) if (((h = g[k]), b(h))) return this._points[h];
                    } else for (k = 0, l = c.length; k < l; k++) if (b(k)) return this._points[k];
                }
            };
            c.prototype.mouseOut = function (a) {
                var b = this.chart.requestLegend(this);
                b && b.pointOut();
                this.visualizer.pointMouseOutAny() && this.triggerUser("mouseOut", a);
            };
            c.prototype.mouseMove = function (a, c) {
                if (Wm(this)) {
                    c = this.chartArea;
                    var b = this.visualizer,
                        d = this.chart.requestLegend(this),
                        g = [a.x, a.y],
                        h;
                    if ((h = this.hitTest(g))) {
                        var k = "hover" === this.state || b.hoveredItem;
                        c.crosshair(g, a, !0);
                        b.pointMouseOver(a, h);
                        d.pointOver(h);
                        !k && this.triggerUser("mouseOver");
                        return !0;
                    }
                    N(this.currentOptions, ["mouseTracking", "sticky"]) || (b.pointMouseOutAny() && this.triggerUser("mouseOut", a), d && d.pointOut());
                }
            };
            c.prototype.mouseClick = function (a) {
                if (Wm(this)) {
                    var b;
                    if ((b = this.hitTest([a.x, a.y]))) return this.visualizer.pointClick(a, b), this.triggerUser("click", a), b;
                }
            };
            c.prototype.pointOver = function (a, c) {};
            c.prototype.showHaloAtX = function (a) {
                var b = this.indexer;
                a = b.findValue_i("x", a);
                var c = this.info.labelTextInfo.hasRange,
                    f = [],
                    g = this._points[a];
                g && this.visualizer.showHalo(g);
                if (t(a)) {
                    var h = b.getItem(a);
                    c
                        ? w(["svs", "sv", "ys", "ye"], function (a) {
                              a = h[a];
                              t(a) && f.push(a);
                          })
                        : f.push(z(b.getValue("ye", a), b.getValue("y", a)));
                    return [this.yAxis, g, f];
                }
            };
            c.prototype.hideHalo = function () {
                this.visualizer.showHalo();
            };
            c.prototype.setAttribs = function (a) {
                var b = this.currentOptions,
                    c = this._i,
                    f = this.ctmIsType("treemap"),
                    g = b.line || (f && N(b, ["shape", "outline"])) || {};
                f = this.info;
                var h = this.chart.palette,
                    k = this.userPoints.length > b.markerLimit ? 1 : 2,
                    l = "array" === I(h) ? h : Xi("default");
                this.info.style = { set: { color: m, opacity: p, line: {}, area: {} }, attr: { line: {}, area: {} }, states: {} };
                h = f.style;
                var m = z(b.color, N(b, ["defaultPoint", "color"]), l[c % l.length]);
                c = z(N(b, ["defaultPoint", "marker", "type"]), Ui[c % Ui.length]);
                m = Fk(m);
                var n = z(m[3], 1),
                    p = z(b.opacity, 1) * n;
                l = z(N(b, ["outline", "opacity"]), b.opacity, 1) * n;
                n *= z(N(b, ["shape", "opacity"]), b.opacity, 0.8);
                m = ma(m, "rgb");
                var q = ia(g.color || La.seriesLine, m),
                    r = N(b, ["shape", "fill"]) || b.fill;
                if (r) {
                    r = ia(oc(r), m);
                    var u = r.linearGradient ? r : Ro(Fk(r));
                }
                u = this.ctSvIs("areaShadingType", "subtle") ? dd(Fa.areaFill, u || m) : m;
                p = h.base = { color: m, altColor: "white", opacity: p, lineColor: q, lineOpacity: l, areaOpacity: n, areaColor: u, markerType: c };
                if (!a)
                    return (
                        (a = f.style.states),
                        (u = 2),
                        this.ctmIsType("organization") && (u = 0),
                        (m = b.states || {}),
                        (b = m.hover || {}),
                        (h = m.select || {}),
                        (m = m.mute || {}),
                        f.type.drawLine &&
                            ((k = f.style.set.line = { width: z(g.width, k), color: p.lineColor, opacity: z(g.opacity, 1) * p.lineOpacity, dashStyle: g.dashStyle }),
                            g.caps && (k.caps = g.caps),
                            (a[""] = f.style.attr.line = Bb(k)),
                            (g = b.line || {}),
                            (a.hover = !1 !== b.enabled ? A({}, a[""], { "stroke-width": z(g.width, k.width + u), stroke: ia(z(g.color, b.color, k.color), p.color), "stroke-opacity": z(g.opacity, b.opacity, k.opacity) }) : {}),
                            (g = h.line || {}),
                            (a.select = !1 !== h.enabled ? A({}, a[""], { "stroke-width": z(g.width, k.width + u), stroke: ia(z(g.color, h.color, k.color), p.color), "stroke-opacity": z(g.opacity, h.opacity, k.opacity) }) : {}),
                            (g = m.line || {}),
                            (a.mute = !1 !== m.enabled ? A({}, a[""], { "stroke-width": z(g.width, k.width), stroke: ia(z(g.color, m.color, k.color), p.color), "stroke-opacity": z(g.opacity, m.opacity, 0.15 * k.opacity) }) : {})),
                        f.type.drawArea &&
                            ((g = f.style.set.area = { color: p.areaColor, opacity: p.areaOpacity }),
                            (g.fill = p.areaFill) || (this.ctSvIs("areaShadingType", "subtle") ? (g.fill = dd(Fa.areaFill, g.color)) : (g.fill = g.color)),
                            !1 !== b.enabled && b.fill && (a.hover.areaColor = ia(b.fill, p.areaColor)),
                            !1 !== m.enabled && ((a.mute.areaOpacity = z(m.opacity, 0.15 * p.areaOpacity)), m.fill && (a.mute.areaColor = ia(b.fill, p.areaColor))),
                            (f.style.attr.area = fc(g))),
                        this
                    );
            };
            c.prototype.getPointAttr = function (a, c) {
                function b(a, b, c) {
                    var d = {},
                        e = function (b, c) {
                            return c ? c(N(a, b)) : N(a, b);
                        },
                        f = function (a) {
                            Mn(d, b, a, a);
                        },
                        g = function (a, c, e) {
                            Vf(d, a, ia(N(b, a) || e, c));
                        },
                        h = function (b, c, d) {
                            t(N(a, b)) && Vf(m, c, e(b, d));
                        },
                        k = function (a) {
                            return a && a.pop && 2 === a.length ? Lb(a) : a;
                        };
                    g(["color"], M);
                    var l = d.color && ia(La.outline, k(d.color));
                    g(["outline", "color"], M, l);
                    b.fill && (d.color = ia(oc(b.fill), M));
                    f(["outline", "width"]);
                    f(["outline", "dashStyle"]);
                    f(["size"]);
                    f(["opacity"]);
                    N(b, ["hatch", "style"]) && (f(["hatch", "style"]), g(["hatch", "color"], M));
                    var m = { color: c.color ? hg(k(a.color), c.color, ["val"]) : k(a.color), opacity: e(["opacity"], c.opacity), outline: { color: e(["outline", "color"], c.outlineColor), width: e(["outline", "width"], c.outlineWidth) } };
                    h(["outline", "dashStyle"], ["dashStyle"], c.dashStyle);
                    h(["size"], ["size"], c.size);
                    h(["hatch", "style"], ["hatch", "style"], c.hatch);
                    h(["hatch", "color"], ["hatch", "color"], c.hatchColor);
                    return A(m, d);
                }
                function d(a, b, c) {
                    var d = N(a, ["states", b]) || {},
                        e = d.marker || {},
                        f,
                        g,
                        h;
                    if ((f = qd(e.outline, d.outline, c.outline))) e.outline = f;
                    if ((f = e.fill || d.fill)) e.fill = f;
                    t((g = z(e.size, d.size))) && (e.size = g);
                    t((h = z(e.opacity, d.opacity, c && c.opacity))) && (e.opacity = h);
                    a = N(a, ["marker", "states", b]) || {};
                    return qd(e, a) || {};
                }
                var g = a ? (a.currentOptions ? a.currentOptions : a) : {},
                    h = this.currentOptions,
                    k = t(g._i) ? Kl(this, g._i) : h.defaultPoint || {},
                    l = !a,
                    m = this.info.hasUniqueStyles || this.info.type.colorByPoint,
                    n = this.info,
                    p = n.style.base,
                    q = n.type,
                    r = this.ctmIsType("calendar") ? La.lightenDark : this.ctmIsType("map") ? "darkenmore" : La.outline,
                    u,
                    x = this.ctmIsType("map"),
                    v = {},
                    y = q.drawMarker || h.forceMarker || N(k, ["marker", "visible"]) || (a ? N(g, ["marker", "visible"]) : N(k, ["marker", "visible"]));
                c = c || q.drawMarker;
                if ((l || !m) && (u = this.info.style.defaultPoint) && (!c || u.drawMarker)) return u;
                g = Hb(g, { map: void 0, attributes: void 0, mapData: void 0 });
                g = qd(g, k || {});
                u = g.label || {};
                var w = g.marker || {},
                    E = g.states || {},
                    F = E.hover || {},
                    C = E.select || {},
                    B = E.mute || {},
                    H = !1 !== N(this.currentOptions, ["mouseTracking", "enabled"]),
                    U = !1 !== B.enabled;
                H = (E = t(C.enabled) ? C.enabled : !1 !== this.currentOptions.pointSelection || (l && !m)) || (H && !1 !== F.enabled) || !0 === F.enabled;
                var M = l ? g.color || p.color : this.getPointColors(g);
                if ("object" === typeof M && M.color) {
                    var G = M.fill;
                    M = M.color;
                }
                var J = ia(r, M);
                r = !1 !== (q.labelVisible || u.visible) && (!!N(u, ["text", "length"]) || Fb(u.text) || u.visible);
                var K = z(g.opacity, 1) * p.opacity,
                    I = this.getPointHatchStyle(g);
                if (!l && g && ("candlestick" === this.info.type.seriesType || "ohlc" === this.info.type.seriesType) && g.close < g.open) {
                    var L = (a || {}).altColor || (k || {}).altColor;
                    if ("ohlc" === this.info.type.seriesType) L && g.color && ((g = A({}, g)), (g.color = ia(L, g.color))), (M = J = L ? ia(L, J) : J);
                    else {
                        (L = L || p.altColor) && g.color && ((g = A({}, g)), (g.fill = ia(L, g.color)));
                        M = L ? ia(L, p.altColor) : p.altColor;
                        var O = !0;
                    }
                }
                G = { color: G ? oc(G) : M, opacity: K, hatch: { style: I }, outline: { color: J, width: 1 } };
                p = b(G, g, {});
                var Q = q.isAnnotation
                    ? {
                          color: function (a) {
                              return a;
                          },
                          outline: {
                              color: function (a) {
                                  return ia(La.labelContrast, a);
                              },
                              width: function (a) {
                                  return a + 2;
                              },
                          },
                      }
                    : {
                          color: function (a) {
                              return ia(La.hover, a);
                          },
                      };
                q.isMapLayer &&
                    q.drawLine &&
                    (Q.outlineWidth = function (a) {
                        return a + 2;
                    });
                h = h.states || {};
                L = fa(["color", "opacity"]);
                if (H) {
                    var P = Na({}, h.hover || {}, L);
                    F = A(P, F);
                    var S = b(p, F, Q);
                }
                if (U) {
                    P = Na({}, h.mute || {}, L);
                    B = A(P, B);
                    var T = b(p, B, {
                        opacity: function (a) {
                            return 0.15 * a;
                        },
                    });
                }
                if (E) {
                    var Ba = h.select || {};
                    Q = Na({}, Ba, L);
                    C = A(Ba, C);
                    Ba = b(S, C, {
                        color: function (a) {
                            return ia("select", a);
                        },
                        outlineWidth: function (a) {
                            return a + 1;
                        },
                    });
                }
                r &&
                    ((C = u.color || N(u, ["style", "color"])),
                    (F = this.ctSvIs("columnType", "cushion")),
                    (B = "map" === this.ctSv("chartType") && "marker" === this.ctSv("seriesType") && "#505050"),
                    (P = "center" !== u.align && "middle" !== u.verticalAlign && q.drawMarker ? M : p.color),
                    (u.color = C || B || ia(q.isMapLayer || q.isAnnotation ? La.labelContrast : La.label, P)),
                    C || F || (u.hcColor = ia(La.labelContrast, P)));
                if (c || y)
                    (B = P = F = F = void 0),
                        (Q = H && d(g, "hover", h.hover || {})),
                        (B = E && d(g, "select", h.select || {})),
                        (C = U && d(g, "mute", h.mute || {})),
                        (G.marker = F = { color: M, size: 10, opacity: K, hatch: { style: I }, outline: { color: J, width: 1 } }),
                        (I = t(w.visible) ? w.visible : !0),
                        (p.marker = F = b(F, w, {})),
                        I || (F.size = 0),
                        H &&
                            ((I = t(Q.visible) ? Q.visible : I),
                            (P = Na({}, h.hover || {}, L)),
                            (S.marker = P = b(F, A(P, Q), {
                                size: function (a) {
                                    return 1.2 * a;
                                },
                                color: function (a) {
                                    return ia(La.hover, a);
                                },
                            })),
                            I || (P.size = 0)),
                        E &&
                            ((I = t(B.visible) ? B.visible : I),
                            (Q = Na({}, h.select || {}, L)),
                            (Ba.marker = B = b(P, A(Q, B), {
                                color: function (a) {
                                    return ia("select", a);
                                },
                                outlineWidth: function (a) {
                                    return a + 1;
                                },
                            })),
                            I || (B.size = 0),
                            (Ba.marker = B)),
                        U &&
                            ((P = Na({}, h.mute || {}, L)),
                            (T.marker = b(F, A(P, C), {
                                opacity: function (a) {
                                    return 0.15 * a;
                                },
                            })));
                w = {};
                G = c ? p.marker : p;
                I = w[""] = mi(fc(G));
                H && ((G = c ? S.marker : S), (w.hover = mi(fc(G))));
                E && ((G = c ? Ba.marker : Ba), (w.select = mi(fc(G))));
                U && ((G = c ? T.marker : T), (w.mute = mi(fc(G))));
                !q.isMapLayer || q.drawLine || c || "bubble" === q.seriesType || ((w[""]["stroke-linejoin"] = "round"), (w[""].zIndex = this.zIndex), H && (w.hover.zIndex = this.zIndex + 1), E && (w.select.zIndex = 0));
                "bubble" === q.seriesType && t(g.zIndex) && (w[""].zIndex = g.zIndex);
                n.hasSubvalues && ((S = N(g, ["subvalue", "line"]) || {}), (G = { opacity: K, outline: { width: z(S.width, 1), color: ia(S.color || J, M), length: S.length, dashStyle: S.dashStyle } }), (v[""] = fc(G)));
                this.chart.use3D ||
                    O ||
                    this.ctmIsType("venn") ||
                    !(x || q.drawRect || (q.isShape && !q.isPie) || this.ctmIsType("heatmap") || this.ctmIsType("calendar") || this.ctmIsType("treemap")) ||
                    l ||
                    ((O = {}), (x = N(this, ["indexer", "data", "coordinates"])) && (O.pointData = x[g._i]), (I.fill && I.fill.stops) || this.attrShader(w, O));
                !1 === q.drawArea && ((w[""].fill = "none"), H && (w.hover.fill = "none"), E && (w.select.fill = "none"));
                if (r) {
                    var V = A({}, u);
                    V = A(V, u.line);
                    V = Bb(V);
                }
                q = { baseColor: M, pointAttr: w, svAttr: v, labelVisible: r, labelConnector: q.labelConnector, labelConnectorAttr: V, drawMarker: q.drawMarker, label: u };
                l || !m ? (n.style.defaultPoint = q) : ((q.isDefault = l), this.indexer.indexKeys(["color"], {}, 0), this.indexer.setValue("color", g._i, q.baseColor));
                if (y || c) q.markerSize = p.marker.size;
                this.ctmIsType("gauge") && this.ctSvIs("gaugeType", "circular") && (a = (a || {}).altColor || (k || {}).altColor) && (q.pointAttr[""].altColor = ia(a, M));
                return q;
            };
            c.prototype.attrShader = function (a, c) {
                var b = c.radAngle,
                    d = this.ctManager,
                    g = this.currentOptions,
                    h = this.info.type.isRadarColumn,
                    k = d.settingVal("columnType", g) || "default";
                d = "horizontal" === d.settingVal("chartType", g) || this.ctSvIs("linearGaugeType", "horizontal");
                g = !1;
                if (this.ctmIsType("map")) {
                    k = "subtle";
                    var l = this.chart.ctManager;
                    "map" === l.settingVal("seriesType") && ((l = l.settingVal("columnType")), (k = l !== k ? l : k));
                }
                t(b) && (d = b);
                this.ctSvIs("funnelShapeType", "square") && (k = "square");
                "le" === b && ((d = !0), (g = !1));
                b = { horizontal: d, inverted: g, isRadial: h };
                this.ctmIsType("calendar") && (b.strokeMode = "lighterOnDark");
                this.ctmIsType("treemap") && "cushion" === k
                    ? ((h = this.renderRect), (d = c.pointData.cxy), (g = c.pointData.bbox), (l = ha(h)), (c = va(l)), (g = g[2] / l[2] + g[3] / l[3]), (b.offsets = [(c[0] - d[0]) / h.width, (c[1] - d[1]) / h.height]), (b.share = g))
                    : h && c.pointData
                    ? (b.lgCoords = this.pane.getShaderOptions(c.pointData.pathOptions))
                    : this.ctmIsType("gauge") && this.ctSvIs("gaugeType", "circular") && (k = this.ctSvIs("seriesType", "column") ? "none" : "subtle");
                "roundcaps" === k && (k = "subtle");
                iw(k, a, b);
            };
            c.prototype.getPointColor = function (a) {
                a = this.getPointColors(a);
                return a.fill || a.color;
            };
            c.prototype.getSP = function () {
                var a = this.chart,
                    c = this.currentOptions.palette || this.chart.palette,
                    e;
                "object" !== I(c) &&
                    this.ctmIsType("heatmap") &&
                    ((c = this.indexer.calculations.z)
                        ? ((this.chart.palette = c = Rs({}, [c.min, c.max])),
                          this.chart.legends().each(function (a) {
                              return a.updateSp();
                          }))
                        : (this.chart.palette = c = { colors: this.chart.palette }));
                c.id && (e = a.getSmartPalette(c.id));
                return e || a.getSmartPalette(c);
            };
            c.prototype.getPointColors = function (a, c) {
                var b = this.info,
                    d = b.type,
                    g = b.style.base,
                    h = this.currentOptions;
                b = b.type.colorByPoint;
                var k;
                c = c || d.drawMarker;
                d.isTree || (k = a.color);
                if (c) {
                    var l = a.marker || {},
                        m = l.color;
                    l = l.fill;
                }
                m && (m = oc(m));
                if (m || k) return k ? { color: Lb(k), fill: l || m } : { color: Lb(g.color), fill: l || m };
                b
                    ? ((d = h.palette || this.chart.palette),
                      (h = I(d)),
                      "string" === h && (d = Fh(d)),
                      "object" === h ? (g = this.getSP().getPointColor(this, a)) : ((a = this.indexer.getValue("cpbIndex", a._i)), (g = t(a) ? d[a % d.length] : g.color)),
                      (g = Lb(g)))
                    : ((g = a.color || g.color),
                      d.varyPalette &&
                          !a.color &&
                          ((h = a._i),
                          (a = ca(g)),
                          (g = bf(a[0], a[1], a[2])),
                          (k = t(h) ? Tn(1, h + 1)[h] : Vb.random()),
                          (h = 0.03 * k),
                          0.5 < k && (h = -h),
                          (g[2] = ua(g[2] + h * g[2], 0, 1)),
                          (g = bd(g[0], g[1], g[2])),
                          (g = ma([g[0], g[1], g[2], a[3]])),
                          (d.isVaryingColors = !0)));
                return { color: g, fill: l };
            };
            c.prototype.getPointHatchStyle = function (a, c) {
                c = this.info.type;
                var b = this.currentOptions,
                    d = this.chart.currentOptions,
                    g = d.defaultSeries || {},
                    h = N(a, ["hatch", "style"]);
                b = b.hatchPalette || d.hatchPalette || g.hatchPalette;
                h ||
                    (c.colorByPoint
                        ? ((c = I(b)), "undefined" !== c && ("boolean" === c && (b = Xi("hatch")), (a = this.indexer.getValue("cpbIndex", a._i)), t(a) ? (h = b[a % b.length]) : b && (h = b[this._i % b.length])))
                        : b && (h = b[this._i % b.length]));
                return h;
            };
            c.prototype.getPointMarkerType = function (a) {
                var b,
                    c = this.info.style.base;
                (b = N(a, ["marker", "type"])) || (this.info.type.colorByPoint && !this.info.usesSmartPalette && a ? ((b = this.indexer.getValue("cpbIndex", a._i)), (b = t(b) ? b : a._i || 0), (b = Ui[b % Ui.length])) : (b = c.markerType));
                return b;
            };
            c.prototype.getUniqueColors = function (a) {
                var b = this.info,
                    c = b.type,
                    f = [];
                if (b.hasUniqueStyles || c.colorByPoint) {
                    b = this.indexer.getKey("color");
                    for (var g = 0, h = b.length; g < h; g++)
                        if ((c = b[g])) {
                            if (c !== k && (f.push(c), f.length === a)) break;
                            var k = c;
                        }
                } else f.push(this.info.style.base.color);
                return f;
            };
            c.prototype.setColor = function () {
                var a = this.chart,
                    c = this.options("palette") || a.palette;
                "object" === I(c) && a.getSmartPalette(c).setPointSpValues(this);
            };
            c.prototype.invalidate = function () {
                this.dirty = !0;
                this.seriesDirty.all(!0);
                delete this.info.style.defaultPoint;
                return this;
            };
            c.prototype.refresh = function (a) {
                this.dirty && (this.chartArea.invalidate(), this.chartArea.chartAreaSet.enumerateData(), this.setDataInfo(), this.chart.redraw(z(a, { animation: this.getAnimationConfig() })), this.chart.updateSideItems());
                return this;
            };
            c.prototype.visible = function (a, c) {
                var b = this.seriesDirty,
                    d = this.chartArea;
                t(a) ? a !== this.isVisible && ((this.isVisible = a), (this.dirty = !0), b.pos(!0), b.coord(!0), d.resetTimers()) : ((this.isVisible = !this.isVisible), (this.dirty = !0), b.pos(!0), b.coord(!0), d.resetTimers());
                this.dirty &&
                    (this.legendEntry && this.legendEntry.updateCheckbox(this.isVisible),
                    d.series().each(function (a) {
                        return a.seriesDirty.pos(!0);
                    }),
                    !1 !== c && this.chart.redraw(c || { animation: this.getAnimationConfig() }),
                    this.triggerUser(this.isVisible ? "show" : "hide"));
                return this;
            };
            c.prototype.getAnimationConfig = function () {
                return A({}, this.userOptions.animation || this.chart.currentOptions.animation);
            };
            c.prototype.select = function (a, c) {
                var b;
                t(a) && (b = a);
                this.points().each(function (b) {
                    return b.select(a, c);
                });
                this.setState(b ? "select" : "");
            };
            c.prototype.removePoint = function (a, c) {
                -1 < a && (this.userPoints.splice(a, 1), (this.visualizer.updateInfo = { action: "splice", at: a, count: 0, del: 1 }), this.invalidate(), !1 !== c && this.refresh());
            };
            c.prototype.zoomTo = function (a) {
                var b = this.ctmIsType("calendar");
                this._points.length && this.ctmIsType("map")
                    ? ((b = this.chart.geoParser.getSeriesBBox(this)), 0 === b[2] && 0 === b[3] && (b = mb(b, [0.01, 0.01])), this.chart.zoom(b, a))
                    : b && this.chart.zoom(this.currentOptions.attributes.date, a);
            };
            c.prototype.remove = function (a) {
                a = this.chartArea;
                var b = Sf(a._series, { id: this.id });
                -1 < b && (a.spliceSeries(b, 1, []), this.triggerUser("remove"));
            };
            c.prototype.yAt = function (a) {
                return this.interpolate("x", "y", a);
            };
            c.prototype.interpolate = function (a, c, e) {
                var b = this.indexer;
                a = b.findInterpolatedInfo(a, e);
                if (-1 !== a.i) return 0 < a.inter ? ((e = b.getValue(c, a.i)), (c = b.getValue(c, a.i + 1)), Y(e, c, 0, 1, a.inter)) : b.getValue(c, a.i);
            };
            c.prototype.getCalcCache = function () {
                if (!this.calcCache) {
                    var a = this.indexer,
                        c = this.userPoints.length,
                        e = this.zAxis || {},
                        f = Math.abs,
                        g = Pb(a, "getKey"),
                        h = Pb(a, "getItem"),
                        k = Pb(a, "sum"),
                        l = Pb(a, "sumAbs"),
                        m = J(a.data, "ye") && !J(a.data, "y"),
                        n = 0 < g("xr").length,
                        p = 0 < g("zr").length,
                        q = !m,
                        r = !n,
                        u = !n,
                        x = m ? 2 * c : c,
                        v = m ? (k("ys") + k("ye")) / x : k("y") / c;
                    n = n ? (k("xs") + k("xe")) / x : k("x") / c;
                    c = p ? (k("zs") + k("ze")) / x : k("z") / c;
                    p = q ? "y" : "ye";
                    x = q ? "y" : "ys";
                    var y = q ? "y" : "yr",
                        t = r ? "x" : "xe",
                        w = r ? "x" : "xs",
                        F = q ? g("y") : Tc(g("yr")),
                        z = r ? g("x") : Tc(g("xr")),
                        B = u ? g("z") : Tc(g("zr")),
                        A = g("name");
                    q = q ? F : Tc(g("ya"));
                    r = r ? z : Tc(g("xa"));
                    g = u ? B : Tc(g("za"));
                    var G = h(a.min_i(x)),
                        M = h(a.max_i(p)),
                        H = h(a.min_i(w)),
                        K = h(a.max_i(t)),
                        I = h(u ? a.min_i("z") : a.min_i("zs"));
                    a = h(u ? a.max_i("z") : a.max_i("ze"));
                    this.calcCache = {
                        list: F,
                        xList: z,
                        zList: B,
                        nList: A,
                        max: M[p],
                        min: G[x],
                        xMax: K[t],
                        xMin: H[w],
                        zMax: a.z,
                        zMin: I.z,
                        zAbsmax: Math.max(f(a.z), f(I.z)),
                        nMax: M.name,
                        nMin: G.name,
                        nZMax: a.name,
                        nZMin: I.name,
                        nXMax: K.name,
                        nXMin: H.name,
                        sum: k(y),
                        zSum: k("z"),
                        xSum: k("x"),
                        sumAbs: l(y),
                        zSumAbs: l("z"),
                        xSumAbs: l("x"),
                        average: v,
                        zAverage: c,
                        xAverage: n,
                        range: F.length ? M[y] - G[y] : void 0,
                        zRange: B.length ? a.z - I.z : void 0,
                        yRangeSum: k(y),
                        yRangeSumAbs: m ? l("yr") : l("y"),
                        yStartSum: k("ys"),
                        name: this.name,
                        type: this.currentOptions.type,
                        xAxis: this.xAxis,
                        yAxis: this.yAxis,
                        zAxis: this.zAxis,
                        zAxisLabelText: C(e.currentOptions, "label.text"),
                        averList: q,
                        xAverList: r,
                        zAverList: g,
                    };
                }
                return this.calcCache;
            };
            c.prototype.replaceTokens = function (a, c) {
                return jr(a, this, c || this.getFormatInfo());
            };
            c.prototype.tokenValue = function (a) {
                return this.replaceTokens({ token: a });
            };
            c.prototype.getMapData = function () {
                var a = N(this.info, ["map"]);
                if ("string" === typeof a || (a && 0 < pa(a).length)) return a;
                a = N(this.userOptions, ["map"]) || {};
                return "string" === typeof a ? a : a && 0 < pa(a).length ? a : N(T, ["JSC", "internal", "_modules", "maps", "geo", this.userOptions.mapDataId]);
            };
            c.prototype.setMapData = function (a) {
                Z(this.info, "map", a);
                return this;
            };
            c.prototype.getConfig = function () {
                var a = L({}, this.userOptions);
                a.points = this.userPoints;
                return a;
            };
            return c;
        })(jc),
        pD = (function () {
            function a(a) {
                this.series = a;
                this.setAll(!0);
            }
            a.prototype.setAll = function (a) {
                this.pointData(a);
                this._coord = this._pos = this._points = a;
                this.series._ctSvCache = null;
                this.series._ctmIsTypeCache = null;
            };
            a.prototype.any = function () {
                return this._pointData || this._pointIndex || this._points || this._pos || this._coord;
            };
            a.prototype.points = function (a) {
                var b = this;
                return b.getSet(a, b._points, function (a) {
                    return (b._points = a);
                });
            };
            a.prototype.pos = function (a) {
                var b = this;
                return b.getSet(a, b._pos, function (a) {
                    return (b._pos = a);
                });
            };
            a.prototype.coord = function (a) {
                var b = this;
                return b.getSet(a, b.series.visualizer.coordDirty, function (a) {
                    return (b.series.visualizer.coordDirty = a);
                });
            };
            a.prototype.pointData = function (a) {
                var b = this;
                !0 === a
                    ? (b.pointIndex(a),
                      b.series.chartArea.series().each(function (a) {
                          a.seriesDirty.pos(!0);
                      }),
                      b.resetCache(),
                      (b.series.chartArea.chartAreaSet._calcCache = void 0))
                    : !1 === a && b.pointIndex(a);
                return b.getSet(a, b._pointData, function (a) {
                    return (b._pointData = a);
                });
            };
            a.prototype.resetCache = function () {
                this.series.calcCache = void 0;
            };
            a.prototype.pointIndex = function (a) {
                var b = this;
                return b.getSet(a, b._pointIndex, function (a) {
                    return (b._pointIndex = a);
                });
            };
            a.prototype.all = function (a) {
                this.setAll(a);
            };
            a.prototype.getSet = function (a, b, d) {
                if (t(a)) d(a);
                else return b;
            };
            return a;
        })(),
        Ym = (function (a) {
            function c(b, d) {
                d = a.call(this, b, d) || this;
                d.items = b;
                d.kindObject = c;
                d.points = Xa(wb, zz(d), Az());
                return d;
            }
            K(c, a);
            c.prototype.options = function (a, c) {
                var b = this.items.length ? !1 : c,
                    d = this.each(function (c) {
                        c.options(a, b);
                    });
                !b && !1 !== c && yz(a) && this.items[0].chart.redraw(c);
                return d;
            };
            return c;
        })(wb),
        qD = (function (a) {
            function c(b, c) {
                c = a.call(this, b.chart, c) || this;
                c.marker = b;
                c.fillMod = "axisMarkerY";
                return c;
            }
            K(c, a);
            c.prototype.styleIconVisual = function (a, c) {
                a = a.base;
                var b = this.marker.isRange(),
                    d = A({}, this.currentOptions),
                    g = d.line,
                    h = g.color || ia("outline", d.color || "white");
                b ? (Z(d, "outline.color", h), (b = fc(d))) : (Z(d, "line.color", h), Z(d, "line.width", Math.min(4, g.width)), (b = Bb(d.line)));
                a && a.attr(b);
                c.isStyled = !0;
            };
            c.prototype.getIconPaths = function (a) {
                var b = a[0],
                    c = a[1],
                    f = 0.8 * c;
                return this.marker.isRange()
                    ? { base: dc.square(0, f, a[0], a[1] - 2 * f), extra: void 0 }
                    : {
                          base: eb(
                              [
                                  [0, c / 2],
                                  [b, c / 2],
                              ],
                              { isOpen: !0 }
                          ),
                          extra: void 0,
                      };
            };
            return c;
        })(Mt),
        au = { top: "left", middle: "center", bottom: "left", left: "top", center: "middle", right: "bottom" },
        Xr = (function (a) {
            function c(b, c) {
                var d = a.call(this, b.chart, c, [b, c]) || this;
                d.axis = b;
                d.kind = "AxisMarker";
                d.rootVisuals = { path: void 0, label: void 0 };
                d.invalid = !1;
                d._arrangeInfo = { box: void 0, visible: !0, edgeBoxes: [], labelSizes: [], possible: [], used: void 0 };
                d.events = { click: new rd() };
                d.isHoriz = !b.isHoriz;
                d.options(c, !1);
                return d;
            }
            K(c, a);
            c.prototype.init = function () {
                for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
                c = G(a, 2);
                a = c[0];
                c = c[1];
                t(c.value) ? (this.defaultContextOptions = { legendEntry: { value: c.value.pop ? ("x" === a.prefix ? "%xmin - %xmax" : "%min - %max") : "%value" } }) : (this.invalid = !0);
                this.axis = a;
            };
            c.prototype.defaultOptions = function () {
                if (this.axis) {
                    var a = this.axis.options("defaultMarker");
                    return A({ color: "#a6bce3", opacity: 0.8, line: { width: 1, onTop: !1 }, labelPadding: 5, legendEntry: { color: "#3a3e4b", value: "%" } }, a || {});
                }
            };
            c.prototype.options = function (b, c) {
                var d = this.axis,
                    f = this.optionsGetter(b);
                if ("NotGetter" !== f) return f;
                t(b.low) && t(b.high) && (b.value = [b.low, b.high]);
                a.prototype.options.call(this, b, c);
                C(d.userOptions, "markers.length") && A(d.userOptions.markers[this.getIndexInAx()], b);
                d.invalidate();
                this.syncLegendEntry(b);
                !1 !== c &&
                    (!this.chart.isRendered || !this.isRendered || this.options("label") || this.options("includeInScale") || (t(b.value) && this.legendEntry)
                        ? (this.render(d.viewState), this.axis.chart.redraw(c))
                        : this.render(d.viewState));
                return this;
            };
            c.prototype.normalizeOptions = function (b) {
                b = a.prototype.normalizeOptions.call(this, b);
                dp(b, "color");
                dp(b, "line.color");
                var c = b.value;
                "object" === I(c) && t(c.low) && t(c.high) && (b.value = [c.low, c.high]);
                return b;
            };
            c.prototype.click = function (a) {
                this.trigger("click", a);
            };
            c.prototype.setRootVisuals = function () {
                return this;
            };
            c.prototype.setAttribs = function () {
                var a = this.currentOptions,
                    c = this.axis;
                this.isRange() ? ((c = "x" === c.prefix ? Fa.axisMarkerX : Fa.axisMarkerY), (a = { fill: dd(c, oc(a.color, 1 - z(a.opacity, 1))) })) : (a = Bb(A({ color: a.color, opacity: a.opacity }, a.line)));
                this.attribs = { path: a, label: void 0 };
                return this;
            };
            c.prototype.render = function (a, c) {
                this.setOptions().setRootVisuals().setAttribs();
                var b = this.currentOptions;
                a = this.axis;
                var d = b.label || {},
                    g = this.rootVisuals,
                    h = this.renderer.renderer,
                    k = this.value();
                if (0 !== k.length) {
                    var l = this.visualTarget();
                    b = C(b, "line.width");
                    var m = a.getCaPath(k, l, void 0, { lineWidth: k.length ? 0 : b, forMarker: 1 });
                    b = !g.path;
                    this.invalid = !a.valVisible(k);
                    h = g.path = g.path || this.bindEventsOn(h.path());
                    (h.parentNode !== l.el || Q(h.parentNode)) && h.add(l);
                    a = this.attrBuilder({ d: m }, this.attribs.path, c);
                    a["fill-rule"] = "evenodd";
                    b ? (a.animation = !1) : (a.reset = !0);
                    h.attr(a);
                    (g = g.label) &&
                        this.getText() &&
                        (this._arrangeInfo.visible
                            ? (g.add(l),
                              (a = this.attrBuilder(qc(d), { "pointer-events": "none" }, c)),
                              ((c = this._arrangeInfo.used) && c.box) || (c = this._arrangeInfo.possible[0]),
                              c &&
                                  c.box &&
                                  (g.rootPanel.visible(!0),
                                  (d = c.rotation),
                                  (l = c.textAlignment[0]),
                                  (h = c.textAlignment[1]),
                                  (k = 0 < d),
                                  !k || this.axis.isHoriz || t(this.userOptions.label.rotate) || (d *= "right" === l ? 1 : -1),
                                  (m = 0 < d),
                                  (b = k ? (m ? c.box[2] : 0) : 0),
                                  (m = k ? (m ? 0 : c.box[3]) : 0),
                                  g.rootVisuals.text.attr({ xContentAlignment: k ? au[h] : l, yContentAlignment: k ? au[l] : h, opacity: 1 }),
                                  (a.rotate = [d, 0, 0]),
                                  (a.maxWidth = c.box[k ? 3 : 2]),
                                  (a.offsetX = c.box[0] + b),
                                  (a.offsetY = c.box[1] + m),
                                  (a.zIndex = 1),
                                  g.rootPanel.attr(a)))
                            : g.rootPanel.visible(!1));
                    this.isRendered = !0;
                    return this;
                }
            };
            c.prototype.bindEventsOn = function (a) {
                var b = this;
                a.on("click", function (a) {
                    b.click(a);
                });
                return a;
            };
            c.prototype.syncLegendEntry = function (a) {
                var b = this,
                    c = b.axis,
                    f = c.chartArea && b.chart.requestLegend(),
                    g = function (a) {
                        if (c.isRadial) {
                            var d = S(b.chart.axes().items, function (a) {
                                return ae(a.childAxes, c);
                            });
                            return S(f.items, function (b) {
                                return (b = b.target.marker) && b.axis === d && vc(b.currentOptions.value, a.value);
                            });
                        }
                    };
                f &&
                    f.isVisible &&
                    f.allowEntries() &&
                    (b.legendEntry
                        ? (a && t(a.value) && b.legendEntry.target.options({ value: a.value }), b.legendEntry.setColumns())
                        : !1 === C(b.currentOptions, "legendEntry.visible") || g(b.currentOptions) || ((b.legendEntry = f.addEntry(new qD(b, Ga(b.currentOptions, ["id"]))).setColumns()), (b.legendEntry.sortOrderValue = Qt[b.kind])));
            };
            c.prototype.resetTimers = function () {
                C(this, "_arrangeInfo.used.time") && (this._arrangeInfo.used.time = 0);
            };
            c.prototype.visualTarget = function () {
                var a = (this._visualTargets = this._visualTargets || this.axis.chartArea.getAxisMarkerVisualTargets());
                return this.options("onTop") ? a.front : a.behind;
            };
            c.prototype.attrBuilder = function (a, c, e) {
                void 0 === a && (a = {});
                void 0 === c && (c = {});
                void 0 === e && (e = {});
                a = A({}, a, c, e);
                e.animation || (a = A(a, { animation: this.chart.options("animation") }));
                a.opacity = this.invalid ? 0 : 1;
                return a;
            };
            c.prototype.getText = function () {
                var a = this.axis,
                    c = C(this.currentOptions, "label.text");
                c && -1 < c.indexOf("%") && ((c = Gg(c, this, this.chart.getFormatInfo(void 0, "major"))), (c = a.chartArea.replaceTokens(c)));
                return c;
            };
            c.prototype.value = function () {
                var a = this.axis,
                    c = z(this.currentOptions.value, this._value);
                return a.normUserValue(c);
            };
            c.prototype.isRange = function () {
                return void 0 !== this.value().pop;
            };
            c.prototype.getIndexInAx = function () {
                var a = this;
                return Sf(this.axis.currentOptions.markers, function (b) {
                    return b.id === a.id;
                });
            };
            c.prototype.remove = function (a) {
                this.destroy();
                this.legendEntry && !1 !== a && (this.legendEntry.legend.chart.chartAreaSet.reflow(a), this.chart.isRendered && this.chart.renderer.refresh());
            };
            c.prototype.destroy = function () {
                var a = this.rootVisuals;
                this.axis.removeMarker(this);
                a.path.destroy();
                a.label && a.label.destroy();
                this.legendEntry && this.legendEntry.destroy();
            };
            return c;
        })(jc),
        bu = (function () {
            function a(a, b, d) {
                this.axis = a;
                this.valToLin = b;
                this.range = qa(a.range);
                this.chartArea = d;
                this.inverted = a.isInverted();
                this.breaks = a.breaks;
                this.caRect = qa(d.contentRect);
            }
            a.prototype.equalsRange = function (a) {
                var b = this.range,
                    c = a.range;
                if (b.min === c.min && b.max === c.max) {
                    a: {
                        b = this.breaks;
                        c = a.breaks;
                        if (b && c) {
                            if (b.length === c.length) {
                                for (var e = 0, f = b.length; e < f; e++) {
                                    var g = b[e],
                                        h = c[e];
                                    g = g[0] === h[0] && g[1] === h[1] ? !0 : void 0;
                                    if (!g) {
                                        b = void 0;
                                        break a;
                                    }
                                }
                                b = !0;
                                break a;
                            }
                        } else if (b === c) {
                            b = !0;
                            break a;
                        }
                        b = void 0;
                    }
                    if (b) return (!0 === this.inverted) !== (!0 === a.isInverted()) ? void 0 : !0;
                }
            };
            a.prototype.equals = function (a) {
                var b = this.caRect;
                if (this.equalsRange(a) && ((a = a.chartArea.contentRect), b && a && 0 === ap(b, a))) return !0;
            };
            a.prototype.isValid = function () {
                if (this.caRect) return !0;
            };
            a.prototype.rect = function () {
                return (this.caRect = this.caRect || this.chartArea.contentRect);
            };
            return a;
        })(),
        rD = (function () {
            function a() {
                this.items = [];
            }
            a.prototype.get = function (a, b) {
                for (var c = this.items, e = 0, f = c.length - 1, g; e <= f; ) {
                    g = Vb.floor((e + f) / 2);
                    if (a === c[g].value) return c[g];
                    a < c[g].value ? (f = g - 1) : (e = g + 1);
                }
                return b ? e || 0 : void 0;
            };
            a.prototype.add = function (a) {
                var b = this.get(a, !0);
                if ("number" === I(b)) {
                    var c = b;
                    b = { value: a, clusters: {} };
                    this.items.splice(c, 0, b);
                }
                return b;
            };
            a.prototype.toArray = function () {
                for (var a = [], b = 0, d = this.items.length; b < d; b++) a.push(this.items[b].value);
                return a;
            };
            a.prototype.getShortestRange = function () {
                var a = void 0,
                    b = MA;
                return 1 < this.items.length
                    ? (w(this.items, function (c, e) {
                          e && ((e = c.value - a), e < b && (b = e));
                          a = c.value;
                      }),
                      b)
                    : 1;
            };
            a.prototype.reset = function () {
                this.items = [];
            };
            return a;
        })(),
        Ur = { min: 1, curly: 3, measure: 1.5 },
        hj = function (a) {
            return a && "Point" === a.kind;
        },
        cu = (function (a) {
            function c(b, c, e, f) {
                e = a.call(this, b.chart, e, [b, f, e]) || this;
                e.axis = b;
                e._value = c;
                e.type = f;
                e.visuals = {};
                e.tickLen = 0;
                e.invalid = !1;
                e.isDestroyed = !1;
                e._age = 0;
                e._isNew = !0;
                e._metrics = void 0;
                e._visible = !0;
                e._isRange = t(c) && !!c.pop;
                Tr(e);
                return e;
            }
            K(c, a);
            c.prototype.init = function () {
                for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
                var e = G(a, 3);
                a = e[0];
                c = e[1];
                e = e[2];
                this.defMinorTickOptions = e.defaultMinorTick;
                this.axis = a;
                this.type = c;
                this.defaultMutable = !1;
                this._isRange = t(e.value) && !!e.value.pop;
                "function" === typeof e.target && (this.target = e.target());
            };
            c.prototype.setType = function (a, c) {
                this.type = a;
                c && (this.userOptions.target = c);
                this.setOptions();
                Tr(this);
            };
            c.prototype.defaultOptions = function () {
                if (this.axis) {
                    var a = this.axis.currentOptions;
                    switch (this.type) {
                        case "minor":
                            a = this.defMinorTickOptions || A({}, a.defaultTick, a.defaultMinorTick);
                            break;
                        default:
                            a = a.defaultTick || {};
                    }
                    return a;
                }
            };
            c.prototype.dependentOptions = function () {
                return [
                    {
                        option: ["line.color", "line.width"],
                        check: function (a) {
                            return a;
                        },
                        dependent: "line.visible",
                        value: !0,
                    },
                ];
            };
            c.prototype.px = function (a, c) {
                this._px = t(a) && !Ha(a) ? a : void 0;
                this._pxPrev = t(c) && !Ha(c) ? c : void 0;
                return this._px;
            };
            c.prototype.getTickTargetPanel = function () {
                var a = this.axis;
                return this.currentOptions.onTop ? a.chartArea.rootVisuals.gridLinesFront : a.chartArea.rootVisuals.gridLinesBehind;
            };
            c.prototype.options = function (b, c) {
                var d = this.optionsGetter(b);
                if ("NotGetter" !== d) return d;
                b && (t(b.value) && ((this._needUpdateText = this._value !== b.value), (this._value = b.value), (this._isRange = !!b.value.pop)), "function" === typeof b.target && (this.target = b.target()));
                d = a.prototype.options.call(this, b, c);
                Q(c) && Pa(b) && !this.chart.dirty && this.axis.options({});
                return d;
            };
            c.prototype.setRootVisuals = function () {
                var a = this.axis,
                    c = this.getTickTargetPanel();
                a && !this.rootVisuals && (this.rootVisuals = { ticks: a.rootVisuals.tickSpacer, labels: a.rootVisuals.main, gridLines: c });
                return this;
            };
            c.prototype.bindEvents = function () {
                var a = this;
                if (a.visuals) {
                    var c = a.hasUserEvent("click"),
                        e = a.visuals.labelText;
                    c = c ? "pointer" : "default";
                    e.on("vclick", function (b) {
                        return a.click(b);
                    });
                    e.on("mouseover", function (b) {
                        return a.mouseover(b);
                    });
                    e.on("mouseout", function (b) {
                        return a.mouseout(b);
                    });
                    e.attr({ cursor: c });
                }
                return a;
            };
            c.prototype.mouseover = function (a) {
                var b = this.target,
                    c = this.chart.touched(),
                    f = "x" === this.axis.prefix;
                if (!1 !== this.triggerUser("mouseOver", a) && b && hj(b)) {
                    var g = b.series;
                    Rl(this) &&
                        ((a = this.axis.chartArea.debounce),
                        (b = f ? b : g),
                        a.clear("unmute"),
                        Ol(b, "", Nl(this) || (f ? "group" : "series")),
                        c &&
                            a.defer(
                                "unmute",
                                function () {
                                    Qb(g.chart);
                                },
                                8e3
                            ));
                }
            };
            c.prototype.mouseout = function (a) {
                var b = this.target;
                if (!1 !== this.triggerUser("mouseOut", a) && b && hj(b) && Rl(this)) {
                    var c = b.series;
                    this.axis.chartArea.debounce.defer(
                        "unmute",
                        function () {
                            Qb(c.chart);
                        },
                        230
                    );
                }
            };
            c.prototype.click = function (a) {
                var b = "x" === this.axis.prefix,
                    c = this.target;
                !1 !== this.triggerUser("click", a) &&
                    c &&
                    (hj(c) && Rl(this) && "touch" !== a.device
                        ? ((a = c.series), this.axis.chartArea.debounce.clear("unmute"), Qb(a.chart))
                        : "touch" === a.device && (this.axis.chartArea.resetTimers(), hj(c) && ((a = b ? c : c.series), this.chart.highlighted === a && Qb(a.chart))));
            };
            c.prototype.setPos = function () {};
            c.prototype.value = function () {
                var a = this.axis,
                    c = z(this.currentOptions.value, this._value);
                return a.normUserValue(c);
            };
            c.prototype.render = function (a, c) {
                void 0 === c && (c = {});
                if (this.isDestroyed) return this;
                this.setOptions().setRootVisuals();
                var b = this.currentOptions,
                    d = this.axis,
                    g = d.chartArea,
                    h = !1;
                a = this.visuals;
                var k = this.renderer,
                    l = {},
                    m = k.renderer,
                    n = this._metrics,
                    p = d.isRadial,
                    q = this._positionData,
                    r = this.getVisualTargets(),
                    u = this.value(),
                    x = d.currentOptions.orientation,
                    v = "top" === x || "right" === x || "opposite" === x;
                if ("origin" === this.type) {
                    var y = (x = d.userOptions.originTick) && !1 === x.enabled;
                    h = d.linToPos(this._px);
                    (x || (0 !== h && 1 !== h)) && !y && (b = A({}, b, d.currentOptions.originTick));
                }
                this._isSquished && d.currentOptions.defaultHiddenTick && (b = A({}, b, d.currentOptions.defaultHiddenTick));
                y = b.fill && "none" !== b.fill;
                if (t(this._metrics.px)) {
                    x = d.tickVisible(u) || b.internal;
                    h = !a.tickLine;
                    if (x || !h) {
                        h = void 0;
                        h = Bb(b.line || {});
                        var D = h["stroke-width"] || 0;
                        if (!y) {
                            var E = (a.tickLine = a.tickLine || m.path().attr({ opacity: 0 }).add(r.line)),
                                F = void 0;
                            if (this._rngData)
                                if ((p = this._rngData.renderData)) l = A({ d: p.d }, p.pathOptions);
                                else {
                                    l = {};
                                    p = d._rngData.origin;
                                    var B = d.duV("inside" === b.placement),
                                        G = p[B.vc],
                                        H = [];
                                    p = function (a) {
                                        var c = [],
                                            d = [];
                                        d[B.vc] = G;
                                        d[B.hc] = a;
                                        c.push(nd(r.tick, d, D));
                                        Di(c, B.o, z(b.line.length, 5));
                                        H.push(fb(c));
                                    };
                                    p(this._metrics.px[0]);
                                    p(this._metrics.px[1]);
                                    l = { d: xa(H) };
                                }
                            else (F = q.tickPoints), (q = p ? F[0] : nd(r.tick, F[0], D)), (p = p ? F[1] : nd(r.tick, F[1], D)), (l = { d: q ? fb([p, q]) : "M0 0" });
                            F = this.attrBuilder(l, h, c);
                            l = {};
                            E.attr(F);
                        }
                        if (c.onCa) {
                            h = !a.gridLine;
                            k = Oa(b.gridLine || {});
                            v = "column" === k.width;
                            var J = y ? !0 : !d.autoHideGrid();
                            (h && !tf(b.gridLine)) ||
                                !r.grid ||
                                (zc(k, k, "visible", "visible", function (a) {
                                    return "auto" === a ? J : a;
                                }),
                                v && "category" === d.type && ((n = d.isStackedFull()), (k.width = n ? d.clusterWidth(this._value) : d.clusterWidth()), (k.caps = g.hasRoundCaps ? "round" : void 0), delete k.dashStyle),
                                (k = Bb(k)),
                                (n = u),
                                v && ((v = k["stroke-width"]) && (k["stroke-width"] = Math.round(v + D)), this._isRange && "category" === d.type && (n = Wf(u))),
                                (d = d.getCaPath(n, r.grid, void 0, { lineWidth: k["stroke-width"], multiShape: this._isRange })),
                                (a = a.gridLine = a.gridLine || m.path(d).attr({ opacity: 0 })),
                                (a.parentNode && a.parentNode === r.grid.el) || a.add(r.grid),
                                (h = this.attrBuilder({ zIndex: 5, d: d }, k, c)),
                                a.attr(h));
                        } else {
                            h = qc(b.label);
                            g = n.text;
                            Z(b, "label.text", g);
                            var M = this.angledAttr();
                            l.val = g;
                            l = this.attrBuilder(l, A({ autoWrap: "none" }, h), c);
                            t(h.opacity) && (l.opacity = h.opacity);
                            l = Ga(l, ["rotate", "x", "y"]);
                            p = M.rotate ? (M.rotate.length ? M.rotate[0] : M.rotate) : 0;
                            m = z(b.outline && b.outline.width, 1);
                            q = dr(b);
                            u = "inside" === C(d.currentOptions, "defaultTick.placement");
                            h = b.line.length;
                            q = b.padding - (q ? 2 * m : 0);
                            E = { padding: p ? 0 : q, radius: b.radius, corners: b.corners, fill: b.fill, outline: b.outline };
                            !p && y && (E.shape = { callout: { position: d.isHoriz ? [0.5, v !== u ? 1 : 0] : [v !== u ? 0 : 1, 0.5], size: [h, h] } });
                            M = A(M, Cg(E));
                            y && (M.zIndex = 3);
                            w(["animation", "margin"], function (a) {
                                l[a] && ((M[a] = l[a]), delete l[a]);
                            });
                            if (!a.label) {
                                var I = (a.label = k.box());
                                a.labelText = k.textStack(g).add(I);
                                I.add(r.label);
                                this.bindEvents();
                                if (this.chart.inited) {
                                    var K = l.opacity,
                                        L = l.animation;
                                    I.renderer.isAnimationDisabled(l) ||
                                        ((M.opacity = 0),
                                        I.await(function () {
                                            I.el.transition({ middle: { to: { opacity: K } }, end: { opacity: K }, animation: L });
                                        }));
                                }
                            }
                            M.xContentAlignment = l.xContentAlignment = this.contentAlignment();
                            l.width = n.textSize[0];
                            l.height = n.textSize[1];
                            a.labelText.attr(l);
                            k = p ? 0 : q;
                            !p && k && ((M.x -= k), (M.y -= k));
                            a.label.attr(M);
                            dr(b) &&
                                !p &&
                                ((k = a.labelText.setPreliminarySize().getBbox()),
                                (n = a.label.getPaddingOffset(k.width, k.height)),
                                (k = n.left),
                                (n = n.top),
                                m && (n -= m * (d.isHoriz ? ((u && v) || (!u && !v) ? -1 : 1) : 0)),
                                (k || n) && a.label.attr({ x: M.x - k, y: M.y - n }));
                        }
                        this.visible(x, c);
                    }
                    this._isNew = !1;
                }
                return this;
            };
            c.prototype.contentAlignment = function () {
                if (this._isRange && !1 === this._rngData.rotate && !1 !== this.currentOptions.enabled) return "center";
                switch (this.axis.sideIndex()) {
                    case 0:
                    case 2:
                        return "center";
                    case 1:
                        return "left";
                    case 3:
                        return "right";
                }
                return null;
            };
            c.prototype.getVisualTargets = function () {
                return this.axis.getVisualTargets(this.currentOptions, this._isRange);
            };
            c.prototype.angledBounds = function () {
                var a,
                    c = this.metrics().textSize;
                if ((a = this.angledAttr())) return hk([a.x, a.y, c[0], c[1]], a.rotate);
            };
            c.prototype.angledAttr = function () {
                var a = this.axis,
                    c = a.currentOptions,
                    e = this._positionData,
                    f = e.textBBox,
                    g = va(f),
                    h = z(c.defaultTick.padding, 3),
                    k = { x: f[0], y: f[1] },
                    l = this.labelSize,
                    m = l[0];
                l = l[1];
                if (t(this._cxyRotate)) k.rotate = [this._cxyRotate, g[0] - f[0], g[1] - f[1]];
                else if ((!this._isRange || this._isBaseRange) && a.isHoriz) {
                    f = a.sideIndex();
                    f = 0 === f || 1 === f;
                    g = C(c, "defaultTick.label.rotate");
                    c = z(g, c.autoRotate);
                    var n = [0, 0];
                    if ("angled" === a.labelMode && c) {
                        k.x += e.textBBox[2] / 2;
                        c = Yn(c);
                        e = Uc(0, 0, c - 90, l / 2).x;
                        f ? ((k.x -= e), 0 > c ? (n = [0, l]) : ((n = [m, l]), (k.x -= m)), a.isHoriz && (k.y = a.tickMetricsData.getMaxLength() - this._metrics.tickLength - h - l)) : ((k.x += e), 0 > c && ((n = [m, 0]), (k.x -= m)));
                        if (this._isBaseRange && a.isHoriz) {
                            e = "inside" === this.currentOptions.placement;
                            var p = ce(c) * Math.abs(Math.cos((c * Math.PI) / 180)),
                                q = Math.abs(Math.sin((c * Math.PI) / 180));
                            p *= m;
                            l *= q;
                            var r = Math.abs(this._metrics.px[1] - this._metrics.px[0]),
                                u = Math.max(0, Math.abs(p) + Math.abs(l) - r);
                            a = Q(g) ? r / a.tickMetricsData.getMaxLength() : 1;
                            k.x = u ? k.x - (f ? -1 : 1) * ce(c) * ((r * a) / 2 - l / 2) : k.x - ((f ? -1 : 1) * p * a) / 2;
                            e && (k.y -= q * (m / 2 + h + this.tickLen));
                        }
                        k.rotate = [c, n[0], n[1]];
                    }
                }
                k.rotate || (k.rotate = [0, 0, 0]);
                return k;
            };
            c.prototype.metrics = function (a) {
                void 0 === a && (a = {});
                var b = this.currentOptions,
                    c = this.axis,
                    f = (this.tickLen = z(N(b, ["line", "length"]), 5)),
                    g = z(this.currentOptions.padding, 3),
                    h = (this._px = c.getCaLen(this.value()));
                c = c.valToAngle(this.value());
                if (!Id(b.label)) return (this.labelSize = [0, 0]), (this._metrics = { angle: c, px: h, textSize: [0, 0], tickLength: f, tickPadding: g });
                var k = this.renderer,
                    l = this.getText(),
                    m,
                    n;
                if ((n = this._metrics)) {
                    n = this._metrics;
                    var p = b.label.style;
                    void 0 === p && (p = {});
                    n = n.text === l && n.fontFamily === p.fontFamily && n.fontSize === p.fontSize && n.fontStyle === p.fontStyle && n.fontWeight === p.fontWeight;
                }
                n && (m = !0);
                n = this._metrics || {};
                m
                    ? (this._metrics = A(n, { tickLength: f, tickPadding: g, px: h, angle: c }))
                    : ((b = qc(b.label)),
                      (k = k.textStack(l)),
                      k.attr(A({ autoWrap: "none" }, b)),
                      (m = k.composeCombinations()[0]),
                      (p = void 0),
                      !~l.indexOf(" ") ||
                          ~l.indexOf("<br") ||
                          ~l.indexOf("\n") ||
                          ~l.indexOf("</") ||
                          "none" === b.autoWrap ||
                          (k.attr({ maxWidth: m.minSize.width.px - 1, autoWrap: "auto" }), (p = k.composeCombinations()[0]), (p = [p.minSize.width.px, p.minSize.height.px])),
                      (m = this.labelSize = [m.minSize.width.px, m.minSize.height.px]),
                      k.destroy(),
                      (this._metrics = A(n, {
                          tickLength: f,
                          textSize: m,
                          primTextSize: m,
                          altTextSize: p,
                          text: l,
                          fontFamily: b.fontFamily,
                          fontSize: b.fontSize,
                          fontStyle: b.fontStyle,
                          fontWeight: b.fontWeight,
                          tickPadding: g,
                          px: h,
                          angle: c,
                      })));
                t(a.altTextSize) && ((f = this._metrics), (f.textSize = this.labelSize = (a.altTextSize ? f.altTextSize : f.primTextSize) || f.textSize));
                return this._metrics;
            };
            c.prototype.getText = function () {
                var a,
                    c = this,
                    e = c.currentOptions,
                    f = c.axis,
                    g = "category" === f.type,
                    h = c.value(),
                    k = C(e, "label.text"),
                    l = c.type + (c.isFirst ? " first" : ""),
                    m = f.getFormatInfo(ja(h) ? h[0] : h, l);
                m = m.culture + m.fStr;
                var n;
                "function" === typeof e.target && (n = e.target());
                var p = n || (f.chartArea.replaceTokens ? f.chartArea : f.chart);
                if (!c._formattedText || m !== c._formatInfoHash || c._needUpdateText) {
                    k || ("minor" === c.type ? (k = C(f.currentOptions, "defaultMinorTicklabel.text")) : "major" === c.type && (k = C(f.currentOptions, "defaultTicklabel.text")));
                    n = I(k);
                    var q = f.getFormatInfo(void 0, "major");
                    e = function (a, b, d) {
                        b = t(b) && "function" === typeof b.pop && 2 === b.length ? { value: vs(b), min: b[0], max: b[1] } : { value: b, name: b };
                        q.isTime && d && delete q.isTime;
                        a = wi(a, b, q);
                        c._formattedText = p.replaceTokens(a);
                    };
                    k
                        ? "function" === n
                            ? ((k =
                                  z(
                                      k(
                                          (function (a) {
                                              return g && a.pop && 2 === a.length && 0 === a[0] % 0.5 && 0 === a[1] % 0.5 ? (1 === la(a[0], a[1]) ? na(Wf(a)) : [a + 0.5, a - 0.5]) : a;
                                          })(h)
                                      ),
                                      ""
                                  ) + ""),
                              (c._formattedText = k ? wi(k, { value: h }, ((a = {}), (a[f.prefix] = f.getFormatInfo(h, l)), a)) : ""))
                            : "string" === n &&
                              ((a = ae(k, "%")),
                              (n = ae(k, "{")),
                              a && g && "function" === typeof h.pop
                                  ? e(k, f.format(h, { tickType: l }, !0))
                                  : a || n
                                  ? e(
                                        k,
                                        n
                                            ? h
                                            : hb(h, function (a) {
                                                  return f.format(a, { tickType: l });
                                              }),
                                        !n
                                    )
                                  : (c._formattedText = k))
                        : (c._formattedText =
                              "category" !== f.type
                                  ? "time" === f.type && 2 === h.length
                                      ? f.format(h[0], { tickType: l })
                                      : hb(h, function (a) {
                                            return f.format(a, { tickType: l });
                                        })
                                  : f.format(h, { tickType: l }));
                    c._formattedText = vs(c._formattedText);
                    m = hb(h, function (a) {
                        return f.getFormatInfo(a, l);
                    });
                    h = m[0] || m;
                    c._formatInfoHash = h.culture + h.fStr;
                }
                c._needUpdateText = !1;
                return c._formattedText;
            };
            c.prototype.invalidate = function () {
                this.invalid = !0;
                return this;
            };
            c.prototype.validate = function () {
                this.invalid = !1;
            };
            c.prototype.attrBuilder = function (a, c, e) {
                void 0 === a && (a = {});
                void 0 === c && (c = {});
                void 0 === e && (e = {});
                a = A(c, a);
                t(e.animation) ? A(a, { animation: e.animation }) : !1 === e ? (a.animation = !1) : (a = A(a, { animation: this.chart.options("animation") }));
                this.invalid || (a.opacity = 1);
                return a;
            };
            c.prototype.remove = function (a) {
                this.destroy();
                !1 !== a && this.axis.renderOnCa(a);
            };
            c.prototype.destroy = function () {
                var a = this,
                    c = 0,
                    e = this.axis;
                -1 < (c = e._ticks.indexOf(this)) && e._ticks.splice(c, 1);
                Af(e.currentOptions.customTicks, function (b) {
                    return b.id === a.id;
                });
                Af(e.userOptions.customTicks, function (b) {
                    return b.id === a.id;
                });
                c = this.visuals;
                c.gridLine && c.gridLine.destroy();
                c.tickLine && c.tickLine.destroy();
                c.label && c.label.destroy();
                this.ciManager.remove(this);
            };
            c.prototype.visible = function (a, c) {
                var b = this,
                    d = this.visuals,
                    g = function (a, d) {
                        a && a.attr(b.attrBuilder({}, { opacity: d ? 1 : 0 }, c));
                    },
                    h = function (a) {
                        g(d.gridLine, a);
                        g(d.tickLine, a);
                        d.label && g(d.label.el, a);
                        b._visible = a;
                    };
                a !== this._visible && h(a);
            };
            return c;
        })(jc),
        ij,
        sD = ["scale", "staticColumnWidth", "spacingPercentage"],
        tD = ((ij = {}), (ij[1] = { line: { visible: !0 } }), (ij[0] = { line: { visible: !1 } }), ij),
        uD = function (a) {
            var c = {
                scale: { type: "auto", defaultBreak: { type: "zigzag", line: { width: 10, color: "#d6d6d6" } } },
                crosshair: { snapToData: !0, gridLine: { width: 1, dashStyle: "longdash", color: "#BDBDBD", visible: !0 }, fill: "#fff", outline: { color: "#a9a9a9" }, radius: 3, corners: "round" },
                label: { align: "center", margin: 5, style: { color: "#474747", fontSize: "13px", fontWeight: "normal" } },
                line: { color: "#A0A0A0", width: 1 },
                defaultTick: {
                    gridLine: { width: 1, color: "#e6e6e6", visible: "auto" },
                    line: { color: "#e2e2e2", length: 5 },
                    label: { style: { color: "#5f5f5f", fontSize: "12px" }, margin: 5 },
                    fill: "none",
                    outline: "none",
                    padding: 3,
                },
                defaultMinorTick: { gridLine: { width: 1, color: "rgba(223,223,223,0.59)", dashStyle: "ShortDash" }, line: { color: "#e2e2e2", length: 4, width: 1 }, padding: 3, label: { style: { color: "#7b7b7b" } } },
                defaultHiddenTick: { label: { opacity: 0.05 }, gridLine: { opacity: 0.2 }, line: { opacity: 0.5 } },
                spacingPercentage: 0.2,
                originTick: { gridLine: { color: "#f0cfcd" } },
                autoRotate: -45,
            };
            if ("y" === a.prefix) {
                var b = a.range,
                    d = b && b.min,
                    e = b && b.max;
                if (t(d) && t(e)) {
                    var f = Math.max(Math.abs(d), Math.abs(e));
                    1e4 < f &&
                        (a.type ||
                            a.isLog() ||
                            (c.defaultTick.label.text = function (b) {
                                var c = a.currentOptions.formatString || "",
                                    g = "c" === c[0];
                                c = c.slice(1);
                                var h = g ? "c" : "n";
                                if (b) {
                                    var n = (e - d) / (a._ticks.length || 1);
                                    b = G(Hs(f), 2);
                                    var p = Math.pow(1e3, b[0]);
                                    n = Math.log(p / n) / Math.log(10);
                                    return "{%value/" + p + ":" + h + (c || Math.max(g ? 2 : 0, 0 < n ? Math.ceil(n) : 0)) + "}" + b[1];
                                }
                                return "{%value:" + h + (c || (g ? 2 : 0)) + "}";
                            }));
                }
            }
            a.isLog() && (c.formatString = "g10");
            a.isHoriz || (A(c, { alternateGridFill: "#f7f7f7" }), delete c.autoRotate);
            if ("x" === a.prefix) {
                var g = (b = a.range) && b.min;
                b = b && b.max;
                t(g) && t(b) && 1e3 <= g && 9999 >= b && (c.formatString = "d");
            }
            return A(c, tD[a.chart.getStyling()]);
        },
        du = function (a, c) {
            !c && a && a.pop && ((c = a[1]), (a = a[0]));
            a > c && ((c = G([c, a], 2)), (a = c[0]), (c = c[1]));
            return [a, c];
        },
        Zm = function (a) {
            return { string: "string", category: "string", number: "number", date: "time", time: "time" }[a] || a;
        },
        vD = function (a) {
            var c = "category" === a.type,
                b = !!a.syncAxis,
                d = C(a.userOptions, "defaultTick.gridLine");
            if ("x" === a.prefix && c) {
                if (a.isHeatmap) return !0;
                if (d && tf(d)) return !1;
                var e = a.getSeriesColl().items,
                    f = $a(
                        B(e, function (a) {
                            return a.yAxis;
                        })
                    );
                d = a.isRadial;
                var g = (function () {
                        var a;
                        try {
                            for (var b = ya(f), c = b.next(); !c.done; c = b.next()) {
                                var d = c.value.range;
                                if (0 !== d.min && 0 !== d.max) return !1;
                            }
                        } catch (u) {
                            var e = { error: u };
                        } finally {
                            try {
                                c && !c.done && (a = b.return) && a.call(b);
                            } finally {
                                if (e) throw e.error;
                            }
                        }
                        return !0;
                    })(),
                    h = $a(
                        B(e, function (a) {
                            return a.info.type.seriesType;
                        })
                    ),
                    k = function (a) {
                        return (
                            0 ===
                            ea(a, function (a) {
                                return "column" !== a && "area" !== a && "variwide" !== a;
                            }).length
                        );
                    };
                e =
                    0 <
                    ea(e, function (a) {
                        return a.info.hasYRanges;
                    }).length;
                var l = function () {
                    var b;
                    try {
                        for (var c = ya(f), d = c.next(); !d.done; d = c.next()) {
                            var e = d.value;
                            if (e) {
                                var g = e.getValToLin()(0);
                                switch (a.sideIndex()) {
                                    case 0:
                                    case 3:
                                        return 0 === g;
                                    case 1:
                                    case 2:
                                        return 1 === g;
                                }
                            }
                        }
                    } catch (x) {
                        var h = { error: x };
                    } finally {
                        try {
                            d && !d.done && (b = c.return) && b.call(c);
                        } finally {
                            if (h) throw h.error;
                        }
                    }
                };
                return (!d && g && l() && !e && k(h) && c) || (c && b);
            }
        },
        wD = function (a) {
            var c = a.chartArea;
            if (c.chartAreaSet && c.axes && !a.userOptions.alternateGridFill) {
                var b = c.axes({ prefix: "y" }).items.length;
                c = c.chartAreaSet.freeAxes.y.id;
                if (1 < b && a.id !== c) return !0;
            }
        },
        jj = (function (a) {
            function c(b, c, e) {
                var d = a.call(this, b.chart || b, c, [b, e, c]) || this;
                d.serList = [];
                d.catList = [];
                d.dataPositions = new rD();
                d.clusterCounts = {};
                d.originValue = void 0;
                d.min = void 0;
                d.max = void 0;
                d.breaks = [];
                d.events = { setRange: new rd() };
                d.isVisible = !0;
                d.type = "";
                d.usedDataKeys = [];
                d.noData = !0;
                d.dataInfo = { precision: 0, seriesTypesUnique: [], serColl: void 0 };
                d.isPrivate = !1;
                d.childAxes = [];
                d._ticks = [];
                d._markers = [];
                d.labelMode = "normal";
                d.altGridFillVisuals = [];
                d.attribs = {};
                d.initSizeMetrics = function () {
                    d._sizeMetrics = { clipped: [0, 0], bbox: [0, 0, 0, 0], length: 0, size: [0, 0], labelSize: [0, 0], history: [] };
                };
                d.toPosition = function (a) {
                    var b = I(a),
                        c = "category" === d.type;
                    if ("string" === b) -1 < a.indexOf("%") && (a = d.chartArea.chartAreaSet.replaceTokens({ token: a }, d.getFormatInfo()));
                    else {
                        if (a.pop)
                            return (
                                (b = typeof a[0]),
                                (a = B(a, function (a) {
                                    return d.toPosition(a);
                                })),
                                c && !d.isRadial && "string" === b && ((a = sa(a)), (a = xf(a, -0.5))),
                                a
                            );
                        if ("object" === b && "time" === d.type) return Nk(a, d.range ? d.range.min : d.min, d.range ? d.range.max : d.max);
                        if (c) return a;
                    }
                    return d._toPosition(a);
                };
                d.toText = function (a) {
                    return a;
                };
                d._toPosition = function (a) {
                    return a;
                };
                d._autoTimeFormats = {};
                d._incompatableTypes = { stackedFull: "time" };
                d.overflowSize = { tL: [0, 0], bR: [0, 0], margins: [0, 0, 0, 0] };
                d._nRects = [];
                d.zoomRange = [];
                "chartArea" === b.kind && (b._axes.push(d), ("x" === e ? b.xAxis : b.yAxis).push(d), b.chartAreaSet._axes.push(d));
                d.initSizeMetrics();
                d.possibleKeys = Pz(e);
                d.resetMetricsData();
                d.initFP();
                d.options(c, !1);
                return d;
            }
            K(c, a);
            c.prototype.getFormatInfo = function (a, c) {
                var b = !!c,
                    d = b ? "_formatInfo" : "_formatInfoData";
                if (!this[d] || t(a)) {
                    var g = {},
                        h = this.currentOptions,
                        k = this.dataType,
                        l = 0,
                        m = !1;
                    c && ((m = c.split(" ")), (c = m[0]), (m = "first" === m[1]));
                    g.fStr = h.formatString;
                    g.culture = h.cultureName || this.chart.currentOptions.defaultCultureName || "en-US";
                    g.fStr
                        ? ((g.fStrStrict = !0), (g.precision = this.dataInfo.precision))
                        : "number" === k
                        ? (!1 !== this.options("defaultTick.enabled") && this.tickPositions && this.tickPositions.all.length && (l = Xf(Nz(this.tickPositions.all))),
                          (c = void 0),
                          !b && t((c = this.dataInfo.precision)) && ((c = Math.min(c, 3)), (c = Math.max(c, l)), (g.fStr = "n" + c)))
                        : "time" === k &&
                          ((g.fStr = t(a) ? { year: "yyyy", month: "MMM", day: "d", hour: "t", minute: "t", second: "T", millisecond: "fff" }[Mk(a)] : "d"),
                          (g.fStr = this._autoTimeFormats[c] || g.fStr),
                          "major" === c && m ? (g.fStr = this._autoTimeFormats.majorFirst) : "minor" === c && m && (g.fStr = this._autoTimeFormats.minorFirst));
                    g.isTime = "time" === k;
                    !g.fStr || (g.isTime && t(a)) || (this[d] = g);
                }
                return g || this[d];
            };
            c.prototype.format = function (a, c) {
                var b = this;
                c = b.getFormatInfo(a, (void 0 === c ? { tickType: null } : c).tickType);
                var d = function (a) {
                    return t(a) && a.toFixed && -1 < a && b.catList.length > a ? b.catList[a] : "";
                };
                if ("category" === b.type) {
                    if (t(a)) {
                        if (a.pop && 2 === a.length && 0 === a[0] % 0.5 && 0 === a[1] % 0.5)
                            if (1 === la(a[0], a[1])) a = na(Wf(a));
                            else return (a = sa(a)), hb([a[0] + 0.5, a[1] - 0.5], d);
                        if ((d = d(a))) return d;
                    }
                } else {
                    if ("time" === b.type) return (c = c.fStr), b.formatter("object" === typeof c ? c : void 0).formatDate(new Date(a), c);
                    b.isStackedFull() && (a *= 100);
                }
                return b.formatter().formatNumber(a, c.fStr);
            };
            c.prototype.formatter = function (a) {
                if (a) return new Ng(this.currentOptions.cultureName || "en-US", a);
                this._formatter || (this._formatter = new Ng(this.currentOptions.cultureName || "en-US", {}));
                return this._formatter;
            };
            c.prototype.init = function () {
                for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
                c = G(a, 2);
                a = c[0];
                c = c[1];
                "chartArea" === a.kind && (this.chartArea = a);
                this.prefix = c;
                this.defaultContextOptions = C(this.chart, "typeContextOptions.axes." + c) || {};
                var e = a.ctManager || a.ctm;
                z(a.isHoriz, e && ("horizontal" === e.settingVal("chartType") || "horizontal" === e.settingVal("linearGaugeType"))) ? (this.isHoriz = "y" === c ? !0 : !1) : "x" === c && (this.isHoriz = !0);
                this.isRadial = !1;
                this.updateOptions = { animation: this.chart.options("animation") };
                this.defaultMutable = !0;
            };
            c.prototype.initFP = function () {
                var a = this;
                a.ticks = Xa(
                    wb,
                    function () {
                        return a._ticks;
                    },
                    function () {
                        return 0;
                    },
                    {
                        push: function (b, c) {
                            a.userOptions.customTicks = a.userOptions.customTicks || [];
                            a.userOptions.customTicks.push(b);
                            a.setOptions();
                            !1 !== c && a.render(void 0, c).renderOnCa(c);
                        },
                    }
                );
                a.markers = Xa(
                    wb,
                    function () {
                        return a._markers;
                    },
                    function () {
                        return 0;
                    },
                    {
                        push: function (b, c) {
                            Qz(a, b, c);
                            !1 !== c && a.renderOnCa(c);
                            a.chart.chartAreaSet.reflow(c);
                        },
                    }
                );
            };
            c.prototype.normalizeOptions = function (b) {
                var c, e;
                b = a.prototype.normalizeOptions.call(this, b);
                "undefined" !== (e = I((c = N(b, ["scale", "range"])))) && "array" === e && ("time" === b.scale.type && (O(c[0]) && (c[0] = Gi(c[0])), O(c[1]) && (c[1] = Gi(c[1]))), Z(b, "scale.range", { min: c[0], max: c[1] }));
                t(N(b, ["scale", "invert"])) && Z(b, "scale.invert", !0 === N(b, ["scale", "invert"]));
                w(b.markers, zb);
                b.customTicks &&
                    (b.customTicks = B(b.customTicks, function (a, b) {
                        if ("number" === typeof a) return { value: a };
                        a._lI = b;
                        return a;
                    }));
                return b;
            };
            c.prototype.defaultOptions = function () {
                var a = this.chart.options("defaultCultureName");
                this.defaultContextOptions.cultureName = a || "en-US";
                a = uD(this);
                var c = this.chart.currentOptions.defaultAxis;
                c && A(a, c);
                return this.defaultContextOptions ? A(a, this.defaultContextOptions || {}) : a;
            };
            c.prototype.dependentOptions = function () {
                return [
                    {
                        option: ["line.color", "line.width", "line.breaks"],
                        check: function (a) {
                            return a;
                        },
                        dependent: "line.visible",
                        value: !0,
                    },
                ];
            };
            c.prototype.options = function (a, c) {
                var b = this.chart,
                    d = b.currentOptions.defaultAxis || {},
                    g = this.optionsGetter(a);
                if ("NotGetter" !== g) return g;
                a = A({}, a);
                a = this.normalizeOptions(a);
                this.invalidate();
                g = (g = a.orientation) && g !== this.userOptions.orientation;
                var h = pa(a);
                0 < gc(h, sD).length &&
                    w(this.serList, function (a) {
                        return a.seriesDirty.all(!0);
                    });
                A(this.userOptions, a);
                this.setOptions();
                t((h = this.options("visible"))) && (this.isVisible = h);
                this.currentOptions.staticDraggable && (this._isDragHost = !0);
                a.events && (h = a.events.setRange) && this.events.setRange.on(h);
                (a.defaultTick || a.defaultMinorTick) &&
                    this.ticks().each(function (b) {
                        A(b.defMinorTickOptions, a.defaultTick, a.defaultMinorTick);
                        b.options({}, !1);
                    });
                g && this.isAdded && this.resetVisuals();
                g = this.rootVisuals;
                (a.label || d.label) && g && g.label && g.label.options(this.currentOptions.label);
                t(a.caOffset) && ((d = this.getParentPanel()), (g = this.rootPanel.parent) && g !== d && ((this.parentLayoutItem = d || this.renderer), this.rootPanel.add(d), this.applyCaOffset()));
                if (!1 !== c) {
                    c = this.normalizeUpdateOpt({ animation: b.currentOptions.animation }, c);
                    this.chartArea.invalidate();
                    this.setRange();
                    b.redraw(c);
                    var k = !0;
                }
                b.triggerOptionsApplied("axis", this);
                !k && this.afterUpdate(c);
                return this;
            };
            c.prototype.getParentPanel = function (a) {
                a = a || this.rootPanel.parent;
                return t(this.currentOptions.caOffset) && !1 !== this.isVisible && a && a instanceof Tg ? a.parent : a;
            };
            c.prototype.invalidate = function () {
                this._formatter = this._formatInfoData = this._formatInfo = void 0;
                this.setOptions();
                return this;
            };
            c.prototype.getRange = function () {
                var a = this.range;
                return { min: a.min, max: a.max, dataMin: this.min, dataMax: this.max };
            };
            c.prototype.getCategories = function () {
                return "category" === this.type ? (this.catList ? this.catList.slice(0) : []) : void 0;
            };
            c.prototype.syncLegend = function () {
                w(this._markers, function (a) {
                    a.syncLegendEntry();
                });
            };
            c.prototype.setData = function (a) {
                void 0 === a && (a = !1);
                var b = this,
                    c = b.prefix,
                    f = b.chartArea,
                    g = b.currentOptions,
                    h = C(g, "scale.syncWith") || "",
                    k = f.isZoomLive(),
                    l = [],
                    m = 0,
                    n = [],
                    p = f.ctManager,
                    q = p.isType("heatmap") || p.isType("calendar");
                b.isHeatmap = q;
                p = b.chart.options("axisToZoom");
                var r = f.getZoomAxes()[0],
                    u = "y" === c && r && (!p || -1 === p.indexOf("y")) && ((r && r.isZoomed) || f.axes("x").isZoomed);
                b.options("type");
                if (this._isDragHost) return this;
                f = b.dataInfo.serColl = b.getSeriesColl(function (a) {
                    return a.isVisible;
                });
                if ("map" === b.options("type")) {
                    var x = !0;
                    f.each(function (a) {
                        x && "map" !== a.type && (x = !1);
                    });
                    f = b.dataInfo.serColl = f.filter(function (a) {
                        return "map" !== a.type;
                    });
                    if (x) return (b.mapsOnly = !0), this;
                }
                f.each(function (a) {
                    return a.seriesDirty.pointIndex() && a.setDataInfo();
                });
                var v = [];
                if (b.applyAxisSync(h, f)) return this;
                var y = b.possibleKeys.slice(0);
                b.isStackedFull() && y.splice(y.indexOf("y"), 1);
                f.each(function (a) {
                    n.push.apply(n, H(gc(a.indexer.getKeys(), y)));
                });
                if (!n.length)
                    if ((g = N(g, ["scale", "range"])) && "none" !== h) b.data = g.slice ? g.slice(0) : [g.min, g.max];
                    else return (b.noData = !0), this;
                b.noData = !1;
                b.usedDataKeys = $a(n);
                var t = !0;
                b.serList = f.each(function (a) {
                    var c = a.indexer,
                        d;
                    v.push(a.type);
                    if (u && a.xAxis.isZoomed) {
                        var e = a.xAxis.range;
                        e = [e.min, e.max];
                        if (a.info.labelTextInfo.xNotSorted) {
                            for (var f = c.data.x, g = c.data.y, h = (d = void 0), n = void 0, p = void 0, r = [], x = 0, y = f.length; x < y; x++) {
                                var D = f[x];
                                if (void 0 === d || (D > e[0] && D < d)) (d = D), (r[0] = x);
                                if (void 0 === h || (D < e[1] && D > h)) (h = D), (r[1] = x);
                                D < e[1] && D > e[0] && ((D = g[x]), (void 0 === n || n < D) && (n = D), (void 0 === p || p > D) && (p = D));
                            }
                            f = [p, n];
                        } else
                            (r = [c.findInterpolatedInfo("x", e[0]), c.findInterpolatedInfo("x", e[1])]),
                                (r = [r[0].i + 1, r[1].i]),
                                -1 === r[0] && -1 === r[1]
                                    ? (r = void 0)
                                    : (-1 === r[1] ? (r = [r[0]]) : -1 === r[0] && (r[0] = 0), 2 === r.length && (r[1]++, (r[1] = ua(r[1], r[0] + 1, c.lengths.x - 1))), (f = [a.yAt(e[0]), a.yAt(e[1])]));
                    }
                    x = 0;
                    for (e = b.usedDataKeys.length; x < e; x++)
                        if (
                            ((g = b.usedDataKeys[x]),
                            "svv" === g || "svxv" === g ? (d = c.dataFlat[g]) : ((d = c.getKey(g)), r && ((d = d.slice.apply(d, H(r))), "y" === g && (d.splice(0, 0, f[0]), d.push(f[1])))),
                            q && (d = $a(d)),
                            d && d.length)
                        ) {
                            h = l.length;
                            n = 0;
                            for (p = d.length; n < p; n++) (y = d[n]), t && l[n + h - 1] > y && (t = !1), l.push(y);
                            k ? (m = b.dataInfo.precision) : (d = c.uniqTypes[g]) && -1 < d.indexOf("number") && (m = Math.max(c.countDecimals(g), m));
                        }
                    b.isHeatmap && (l = $a(l));
                    w = w || a.info.labelTextInfo.xNotSorted || !1 === a.info.xIsSorted || !1 === t;
                }).items;
                var w = "x" !== c ? !0 : w;
                b.dataInfo = { precision: m, seriesTypesUnique: $a(v), serColl: f };
                b.data = l;
                Af(l, function (a) {
                    return lc(a) || Ha(a);
                });
                l && "object" === typeof l[0]
                    ? ((c = B(l, function (a) {
                          return a.getTime();
                      })),
                      (b.dataSortedUniq = B(ad(w ? sa(c) : c), function (a) {
                          return new Date(a);
                      })))
                    : (b.dataSortedUniq = ad(w ? sa(l) : l));
                b.invalidate();
                !a && b.detectType();
                return this;
            };
            c.prototype.applyAxisSync = function (a, c) {
                var b = this;
                a || (a = Mz(this, c));
                if ((a = this.syncAxis = this.ciManager.exists(a))) {
                    this.min = a.min;
                    this.max = a.max;
                    this.range = qa(a.range);
                    this.type = a.type;
                    this.dataType = a.dataType;
                    this.usedDataKeys = a.usedDataKeys.slice(0);
                    this.catList = a.catList.slice(0);
                    this._toPosition = a._toPosition;
                    var d = C(a.currentOptions, "scale.type");
                    d && !C(this.userOptions, "scale.type") && ((this.currentOptions.scale = this.currentOptions.scale || {}), (this.currentOptions.scale.type = d));
                    "category" === a.type &&
                        (c.each(function (a) {
                            a.reIndexStringVals(b);
                        }),
                        c.items.length || ((this.dataPositions = qa(a.dataPositions)), this.resetTicksLabels()));
                    this.setViewState(!0);
                    return !0;
                }
            };
            c.prototype.detectType = function () {
                var a = this,
                    c = this,
                    e = [],
                    f,
                    g = [],
                    h = c.usedDataKeys;
                if (c.mapsOnly) return (c.dataType = Zm("number")), this;
                var k = c.getSeriesColl().items;
                w(k, function (a) {
                    w(h, function (b) {
                        (f = a.indexer.uniqTypes[b]) && e.push.apply(e, H(f));
                        f && "string" === f[0]
                            ? (g.push(a.indexer.getKey(b)), (a._catCache = a._catCache || []), (a._catCache[b] = a.indexer.getKey(b)))
                            : "category" === c.type && f && "number" === f[0] && C(a._catCache, NaN + b + ".length") && g.push(a._catCache[b].slice(0));
                    });
                });
                g = B(g, $a);
                e = $a(e);
                var l = e[0];
                1 < e.length || (c.dataType = Zm(l));
                l = C(c.userOptions, "scale.type");
                l = (this.checkTypeCompatability(l, c.dataType) && l) || C(c.contextOptions(), "scale.type");
                if (-1 < e.indexOf("string")) {
                    if ("time" === l) (c.dataType = c.type = "time"), (c._toPosition = Gi);
                    else if ("map" !== c.chart.ctManager.settingVal("chartType")) {
                        c.dataType = Zm((c.type = "category"));
                        l = By(g);
                        c.catList.length && l.length && c.catList.join("") !== l.join("") && c.resetTicksLabels();
                        var m = (c.catList = l);
                        c.childAxes &&
                            w(c.childAxes, function (a) {
                                return a.resetTicksLabels();
                            });
                        c._toPosition = function (a) {
                            return m.indexOf(a);
                        };
                    }
                    w(k, function (b) {
                        b.reIndexStringVals(a);
                    });
                    c.setData(!0);
                } else -1 < e.indexOf("date") ? ((c.dataType = c.type = "time"), (c._toPosition = Gi)) : "time" === l && (c.dataType = c.type = "time");
                c.originValue = "category" !== c.type && "time" !== c.type ? 0 : void 0;
                this._duV = void 0;
                return this;
            };
            c.prototype.checkTypeCompatability = function (a, c) {
                var b = !a || !c || this._incompatableTypes[a] !== c;
                !b && Ma.emit("warning", this.id, "incompatableAxisTypeOptions", { container: this.chart.getWrapper(), data: [a, c] });
                return b;
            };
            c.prototype.getSeriesColl = function (a) {
                var b = this,
                    c = b.parentAxis || b;
                if (a) {
                    if ("function" === typeof a)
                        return b.chart.series(function (d) {
                            var e;
                            return (null === (e = d[b.prefix + "Axis"]) || void 0 === e ? void 0 : e.id) === c.id && a(d);
                        });
                    a[b.prefix + "Axis"] = { id: c.id };
                    return b.chart.series(a);
                }
                return b.chart.series(function (a) {
                    var d;
                    return (null === (d = a[b.prefix + "Axis"]) || void 0 === d ? void 0 : d.id) === c.id;
                });
            };
            c.prototype.setRange = function (a, c) {
                function b(a) {
                    var b = [],
                        c = k.markers;
                    a = a.getCustomTicks();
                    var d = [];
                    c && b.push.apply(b, H(c));
                    a && b.push.apply(b, H(a));
                    w(b, function (a) {
                        a.includeInScale && ((a = r(a.value)), a.pop ? d.push.apply(d, H(a)) : d.push(a));
                    });
                    d.length && ((b = [Math.min.apply(Math, H(d)), Math.max.apply(Math, H(d))]), (v = Math.max(v, b[1])), (x = Math.min(x, b[0])));
                }
                var d = this,
                    g = this,
                    h = g.syncAxis,
                    k = g.currentOptions,
                    l = g.currentOptions.scale,
                    m,
                    n = { axOptions: k, axLength: g._sizeMetrics.length },
                    p = g.range,
                    q = A({}, g.range),
                    r = g.toPosition;
                if (g.noData || g._isDragHost || g.mapsOnly) return this;
                p = function (a) {
                    x = g.min = a[0];
                    v = g.max = a[1];
                };
                var u = g.dataSortedUniq;
                u = [u[0], u[u.length - 1]];
                h ? p([h.min, h.max]) : ("time" == g.dataType ? p(B(u, g._toPosition)) : p(u), b(this));
                x === v && ((x -= 0.2), (v += 0.2));
                !h &&
                    zc(
                        n,
                        g.userOptions,
                        function (a, b) {
                            t(b.min) && (a.userMin = r(b.min) - 0.2);
                            t(b.max) && (a.userMax = r(b.max) + 0.2);
                        },
                        "scale.range"
                    );
                zc(
                    n,
                    g.userOptions,
                    function (a, b) {
                        "object" == typeof b && "time" !== g.dataType && "time" !== g.type ? Ma.emit("warning", g.id, "objInterval", { data: [g.prefix], container: d.chart.getWrapper() }) : (a.userInterval = b);
                    },
                    "scale.interval"
                );
                g.snapToZero = !1;
                l.includeOrigin ? (n.snapZero = !0) : "time" !== g.type && ((p = g.chartArea), "y" === g.prefix && (p.chartArea || p).series({ info: { type: { snapToZero: !0 } } }).items.length && (n.snapZero = !0));
                g.snapToZero = n.snapZero;
                !h && g.setAutoScaleBreaks();
                n.breaks = h ? h.breaks : g.breaks;
                !h &&
                    zc(
                        n,
                        g.currentOptions,
                        function (a, b) {
                            "array" === I(b) && (a.breaks = b);
                        },
                        "scale.breaks"
                    );
                n.minInterval = C(k, "scale.minInterval");
                n.userMinorInterval = l.minorInterval;
                if (g.isZoomed) {
                    var x = g.zoomRange[0],
                        v = g.zoomRange[1];
                    n.userMin = x;
                    n.userMax = v;
                    p = g.range = Dg(x, v, 8, n);
                    p.min = x;
                    p.max = v;
                } else
                    (h = C(g.userOptions, "scale.range.min")),
                        (l = C(g.userOptions, "scale.range.max")),
                        (p = z(h, x)),
                        (u = z(l, v)),
                        g.isStackedFull()
                            ? ((p = g.range = Dg(x, v, 10, n)), (p.min = 0), (p.max = 1))
                            : "z" !== g.prefix || n.snapZero
                            ? ((p = g.range = Dg(p, u, 8, n)), "time" === g.type && ((p.min = x), (p.max = v)))
                            : (p = g.range = { min: g.min, max: g.max }),
                        t(h) && (p.min = r(h)),
                        t(l) && (p.max = r(l)),
                        (g.unZoomedRange = { min: p.min, max: p.max });
                t((m = C(k, "scale.minorInterval"))) && "number" === typeof m && (p.minorInterval = m);
                t((m = C(k, "scale.interval"))) && m && "auto" !== m && (p.interval = m);
                t((m = C(k, "scale.zoomLimit"))) ? (g.zoomLimit = m) : (g.zoomLimit = g.viewState ? Math.max(g.linToVal(5) - g.linToVal(0), 0.001 * (g.max - g.min)) : 0.05 * (p.max - p.min));
                g.loadDPs().adjustRange().setViewState(a, c);
                (q.min === p.min && q.max === p.max) ||
                    g.getSeriesColl({ isVisible: !0 }).each(function (a) {
                        return a.seriesDirty.pos(!0);
                    });
                return this;
            };
            c.prototype.removeMarker = function (a) {
                var b = this;
                a = this._markers.indexOf(a);
                Af(this.currentOptions.markers, function (a) {
                    return a.id === b.id;
                });
                this._markers.splice(a, 1);
            };
            c.prototype.adjustRange = function () {
                var a = this,
                    c = a.snapToZero,
                    e = a.min,
                    f = a.max,
                    g = a.isHoriz !== a.chartArea.isHoriz && "x" === a.prefix,
                    h = 0.5,
                    k = function (b) {
                        return N(a.userOptions, ["scale", "range", b]);
                    },
                    l = k("min"),
                    m = k("max"),
                    n = k("padding");
                if (!a.syncAxis && !a.isZoomed) {
                    k = a.range;
                    if (a.isHeatmap) (g = 0.5), "category" !== a.type && (g = a.shortestValDistance / 2), (k.min = t(l) ? a.normUserValue(l) : e - g), (k.max = t(m) ? a.normUserValue(m) : f + g);
                    else if (t(n))
                        (g = 0),
                            nb(n) ? (g = la(f, e) * n) : "time" === a.type && n.unit && (g = Nh(n).unitRange),
                            (e = [e - g, f + g]),
                            c && (e = [Math.min(e[0], 0), Math.max(e[1], 0)]),
                            (k.min = t(l) ? a.normUserValue(l) : e[0]),
                            (k.max = t(m) ? a.normUserValue(m) : e[1]);
                    else {
                        c = a.getSeriesColl(function (a) {
                            return a.isVisible;
                        });
                        var p = c.filter(function (a) {
                            return a.info && a.info.type.drawRect;
                        });
                        c = c.filter(function (a) {
                            return a.info && "bubble" === a.info.type.seriesType;
                        });
                        n = 0 < p.items.length;
                        var q = 0 < c.items.length;
                        if (n || q) h += a.options("spacingPercentage") / 2.2;
                        if ("category" === a.type) (k.min = t(l) ? l : e - h), (k.max = t(m) ? m : f + h);
                        else {
                            if (g) {
                                var r = void 0,
                                    u = [],
                                    x = 0;
                                p.each(function (a, b) {
                                    a.indexer.calculations.x && (u.push(a.indexer.min("x"), a.indexer.max("x")), (x = Math.max(x, a.indexer.data.x.length)));
                                });
                                var v = u[0] === e && u[1] === f;
                                if (p.items.length && u.length) {
                                    var y = a.getShortestDistPerc();
                                    r = [Math.min.apply(Math, H(u)), Math.max.apply(Math, H(u))];
                                    y = (la(f, e) || 0) / Math.max(x - 1, 1);
                                    y *= h;
                                    v ? (0 === y && (y = h), (k.min = r[0] - y), (k.max = r[1] + y)) : ((k.min = Math.min(r[0] - y, k.min)), (k.max = Math.max(r[1] + y, k.max)));
                                    y = !0;
                                }
                                u = [];
                                x = 0;
                                c.each(function (a, b) {
                                    a.indexer.calculations.x && (u.push(a.indexer.min("x"), a.indexer.max("x")), (x = Math.max(x, a.indexer.data.x.length)));
                                });
                                h = 0.1;
                                p = u[0] === e && u[1] === f;
                                c.items.length &&
                                    u.length &&
                                    ((r = [Math.min.apply(Math, H(u)), Math.max.apply(Math, H(u))]),
                                    (h *= r[1] - r[0]),
                                    p ? ((k.min = r[0] - h), (k.max = r[1] + h)) : ((k.min = Math.min(r[0] - h, k.min)), (k.max = Math.max(r[1] + h, k.max))),
                                    (y = !0));
                            }
                            k.min = t(l) ? a.normUserValue(l) : k.min;
                            k.max = t(m) ? a.normUserValue(m) : k.max;
                            y || "category" === a.type || (!g && "time" !== a.type) || ((g = n ? 0.05 : q ? 0.1 : 0.02), (g *= la(k.max, k.min)), t(l) || (k.min = e - g), t(m) || (k.max = f + g));
                        }
                    }
                    a.unZoomedRange = { min: k.min, max: k.max };
                }
                return this;
            };
            c.prototype.setAutoScaleBreaks = function () {
                this.autoScaleBreaks();
                return this;
            };
            c.prototype.autoScaleBreaks = function () {
                function a(a) {
                    for (var b = [], c = 0, d = a.length; c < d; c++) c && b.push([a[c - 1], a[c], a[c] - a[c - 1]]);
                    return b;
                }
                function c(a, b) {
                    function c(a, b) {
                        return a[2] - b[2];
                    }
                    function d(a, b) {
                        return b[2] - a[2];
                    }
                    a.sort(b ? c : d);
                }
                function e(a, b) {
                    function c(a, b) {
                        return a[0] - b[0];
                    }
                    function d(a, b) {
                        return b[0] - a[0];
                    }
                    void 0 === b && (b = !0);
                    a.sort(b ? c : d);
                }
                function f(a) {
                    for (var b = [], c = 0, d = a.length; c < d; c++) b.push(a[c][0]), b.push(a[c][1]);
                    return [Math.min.apply(null, b), Math.max.apply(null, b)];
                }
                var g = this.dataSortedUniq,
                    h = [this.min, this.max],
                    k = this.max - this.min,
                    l = 0,
                    m = 0,
                    n = 100,
                    p = [],
                    q = C(this.userOptions, "scale.breaks.limit"),
                    r = C(this.userOptions, "scale.breaks"),
                    u = [];
                if (q) {
                    if ((r = C(this.currentOptions, "markers"))) {
                        k = 0;
                        for (var x = r.length; k < x; k++) {
                            var v = r[k],
                                t = void 0;
                            "array" === I(v.value) && 1 < v.value.length ? ((t = this.toPosition(v.value[1])), g.push(t)) : (t = this.toPosition(v.value));
                            (Kb(h, t) || v.includeInScale) && g.push(t);
                        }
                        g.sort(function (a, b) {
                            return a < b ? -1 : a > b ? 1 : 0;
                        });
                        k = (g[g.length - 1] > this.max ? g[g.length - 1] : this.max) - (g[0] < this.min ? g[0] : this.min);
                    }
                    h = a(g);
                    c(h, !0);
                    for (r = 0; r < h.length; r++) (x = h[r][2]), (g = (x / k) * 100), x < 0.08 * k && (g < n && (n = g), l++, (m += x));
                    m /= l;
                    if (0 < l) {
                        g = 0.08 / (n / 100);
                        g = (k / g) * (g - 1);
                        v = 3 > l ? 35 : 10 > l ? 30 : 15 > l ? 25 : 20 > l ? 20 : 15;
                        if (7 > n && 1 <= l) {
                            r = 0;
                            for (l = h.length; r < l; r++) (t = h[r]), (x = t[2]), x > 10 * m && (x / k) * 100 > v && p.push(t);
                            c(p, !1);
                            m = [];
                            l = 0;
                            for (h = p.length; l < h; l++)
                                if (l < q) m.push(p[l]);
                                else break;
                            p = m;
                            q = l = 0;
                            for (m = p.length; q < m; q++) (h = p[q]), l < g ? (l += h[2]) : (p.splice(q--, 1), (m = p.length));
                            if (p.length)
                                for (q = f(p), q = q[1] - q[0], q = k - (q - -(0.2 * (k - q))), g = l = void 0, g = 8 < (k / q) * n ? (l = 0.4 * q) : (l = 0.2 * q), 1 < p.length && (l = g = 2 * l), q = 0, m = p.length; q < m; q++)
                                    (n = p[q]),
                                        "time" === this.type &&
                                            ((k = function (a) {
                                                return a instanceof Date ? a.getTime() : a;
                                            }),
                                            (n[0] = k(n[0])),
                                            (n[1] = k(n[1]))),
                                        n[0] + g > n[1] - l ? ((k = 0.2 * n[2]), (n[0] += k), (n[1] -= k)) : ((n[0] += g), (n[1] -= l)),
                                        u.push(n);
                        }
                        e(u);
                        this.breaks = u;
                    } else this.breaks = [];
                } else r && (this.breaks = Wr(this, r));
            };
            c.prototype.loadDPs = function () {
                var a = this,
                    c = this,
                    e = c.chartArea;
                if ("chartArea" !== e.kind || !e.isZoomLive()) {
                    var f = this.dataPositions;
                    f.reset();
                    var g = function (a) {
                        return a;
                    };
                    w(this.serList, function (b) {
                        if (b.isVisible) {
                            var d = b.indexer.getKey(a.prefix);
                            d = d.length ? d : c.data.slice(0);
                            var e = b.indexer.uniqTypes[a.prefix];
                            e &&
                                "date" === e[0] &&
                                (g = function (a) {
                                    return a.getTime();
                                });
                            e = 0;
                            for (var h = d.length; e < h; e++) {
                                var n = f.add(g(d[e])),
                                    p = b.info.type;
                                p.clusters && (n.clusters[p.seriesType] = (n.clusters[p.seriesType] || 0) + 1);
                            }
                        }
                    });
                    this.loadDPs_shortestDistance();
                }
                return this;
            };
            c.prototype.normUserValue = function (a) {
                var b = this.toPosition(a);
                this.isRadial || "category" !== this.type || "string" !== typeof a || (b = [b - 0.5, b + 0.5]);
                return b;
            };
            c.prototype.getShortestDistPerc = function () {
                return this.syncAxis ? this.syncAxis.getShortestDistPerc() : t(this.shortestValDistance) ? this.shortestValDistance / (this.range.max - this.range.min) : 1;
            };
            c.prototype.setTickPositions = function () {
                var a = this,
                    c = a.currentOptions,
                    e = c.scale || {},
                    f = !1 !== C(c, "defaultTick.enabled"),
                    g = !1 !== C(c, "defaultMinorTick.enabled"),
                    h = a.range,
                    k = [];
                c = [];
                var l,
                    m = e.interval,
                    n = e.minorInterval,
                    p = a.getPointTicks(),
                    q = a.getCustomTicks();
                a.pointTicks = {
                    values: p.map(function (a) {
                        return a.value;
                    }),
                    configs: p.map(function (a) {
                        return a.config;
                    }),
                    points: p.map(function (a) {
                        return a.point;
                    }),
                };
                var r = e.type && 0 === e.type.toLowerCase().indexOf("log"),
                    u = e.logBase || 10;
                (m && "auto" !== m) || (m = void 0);
                var x = function (b) {
                    var c = [];
                    w(b, function (b) {
                        a.valVisible(b) && c.push(b);
                    });
                    return c;
                };
                if (r && !t(m))
                    (f = function (b, c, d, e) {
                        void 0 === e && (e = 100);
                        var f = 0,
                            m = g && "auto" === n;
                        m && (l = l || []);
                        for (
                            var p = function () {
                                v = parseFloat(Math.pow(u, b).toFixed(7)) * (d ? -1 : 1);
                                a.valVisible(v) && k.push(v);
                                b += c;
                                if (m) {
                                    var g = v,
                                        n = parseFloat(Math.pow(u, b).toFixed(7));
                                    ob(10, function (b) {
                                        b && (-1 === k.indexOf(g) && Math.abs(g) < Math.abs(n) && a.valVisible(g) && l.push(g), (g += v));
                                    });
                                }
                                q = f++ > e || v > h.max || v < h.min;
                            };
                            !q;

                        )
                            p();
                        if (g && "auto" === n)
                            for (b = h.log[0]; !q; ) {
                                -1 === k.indexOf(v) && a.valVisible(v) && l.push(v);
                                var q = !0;
                            }
                    }),
                        0 === h.min
                            ? (f(Math.ceil(h.log[1]), -1, !1, 3), (h.logMin = Math.log(k[k.length - 1]) / Math.log(u)), a.valVisible(0) && k.push(0))
                            : 0 === h.max
                            ? (a.valVisible(0) && k.push(0), f(Math.ceil(h.log[0]), -1, !0, 3), (h.logMax = Math.log(Math.abs(k[k.length - 1])) / Math.log(u)))
                            : 0 < h.min
                            ? f(Math.floor(h.log[0]), 1, !1)
                            : 0 > h.max
                            ? f(Math.floor(h.log[1]), 1, !0)
                            : (-1 < h.min && (f(Math.ceil(h.log[0]), -1, !0, 1), (h.logMin = Math.log(Math.abs(k[k.length - 1])) / Math.log(u))),
                              1 > h.max && (f(Math.ceil(h.log[1]), -1, !1, 1), (h.logMax = Math.log(k[k.length - 1]) / Math.log(u))),
                              -1 >= h.min && f(h.logMax || 0, 1, !0),
                              a.valVisible(0) && k.push(0),
                              1 <= h.max && f(h.logMin || 0, 1, !1)),
                        (h.logRange = k.length - 1);
                else if ("category" === a.type)
                    f &&
                        ((k = x(a.dataPositions.toArray())),
                        a.isRadial ||
                            (k = k.map(function (a) {
                                return [a - 0.5, a + 0.5];
                            })));
                else if ("time" === a.type) !f || m || n || e.minInterval ? (f && (k = a._getTimeTickPositions()), g && t(n) && (l = a._getTimeTickPositions(!0))) : ((f = a._getTimeTickPositionsAuto()), (k = f.major), (l = f.minor));
                else {
                    e = m || h.interval;
                    m = Xf([h.min, h.max, e]);
                    if (f) {
                        var v = na(Vb.floor(h.min / e) * e, m);
                        f = 1;
                        for (r = v; v <= h.max; ) a.valVisible(v) && k.push(v), (v = na(r + e * f++, m));
                    }
                    if (g && t(h.minorInterval))
                        for (m = Xf([h.min, h.max, h.minorInterval]), v = na(Vb.floor(h.min / h.minorInterval) * h.minorInterval, m), l = [], f = 0, r = v; v <= h.max; )
                            -1 === k.indexOf(v) && a.valVisible(v) && l.push(v), (v = na(r + h.minorInterval * f++, m));
                }
                a.invalidate();
                if (q) {
                    var y = [],
                        D = [];
                    f = 0;
                    for (e = q.length; f < e; f++)
                        if (((m = q[f]), "time" !== a.type || "object" !== typeof m.value || m.value.pop))
                            t(m.value) &&
                                ((x = r = a.toPosition(m.value)),
                                a.isRadial || "category" !== a.type || ("string" === typeof m.value && (r = [r - 0.5, r + 0.5]), 2 === r.length && (x = xf(r, 0.1))),
                                a.valVisible(x) && (y.push(r), k.push(r)));
                        else for (r = Nk(m.value.pattern || m.value, a.min, a.max), x = 0; x < r.length; x++) (r[x].v = m.value), a.valVisible(r[x]) && (y.push(r[x]), k.push(r[x]));
                    !D.length && (D = void 0);
                }
                if (p && p.length)
                    for (f = 0, e = p.length; f < e; f++) {
                        m = p[f];
                        r = a.toPosition(m.value);
                        if (!a.isRadial && "category" === a.type) {
                            r = [r - 0.5, r + 0.5];
                            var E = !0;
                        }
                        a.valVisible(r) && (y.push(r), k.push(r));
                    }
                a.tickPositions = ad(E ? k : sa(k));
                c.push.apply(c, H(k));
                y && ((a.tickPositions.custom = y), c.push.apply(c, H(y)));
                D && ((a.tickPositions.cpPositions = D), c.push.apply(c, H(D)));
                l && ((a.tickPositions.minor = l), c.push.apply(c, H(l)));
                E = a.tickPositions.length === p.length && E;
                a.tickPositions.all = ad(E ? c : sa(c));
                return this;
            };
            c.prototype._getTimeTickPositions = function (a) {
                var b = this.range,
                    c = this.options("scale." + (a ? "minorInterval" : "interval"));
                (c && "auto" !== c) || (c = void 0);
                var f = Nh(c || b.interval);
                !c && 10 < b.range / (f.unitRange * f.count) && (f = Nh(b.range));
                b.timeInterval = f;
                a = Mh(f, void 0, new Date(Math.round(b.min)), new Date(Math.round(b.max)));
                !c && 20 < a[0].length && ((f.multiplier = Math.floor(a[0].length / 10)), (a = Mh(f, void 0, new Date(Math.round(b.min)), new Date(Math.round(b.max)))));
                this._autoTimeResult = b = { intervals: a, pair: { major: { unit: f.unit, multiplier: f.count }, minor: { unit: f.unit, multiplier: f.count } }, sigUnits: gp(a) };
                this._autoTimeFormats = fp(b);
                return a[0];
            };
            c.prototype._getTimeTickPositionsAuto = function () {
                var a = this.range;
                a = [new Date(Math.round(a.min)), new Date(Math.round(a.max))];
                a = xw(a[0], a[1], 10, this.chartArea.isDragging && this._autoTimeResult);
                var c = a.intervals;
                this._autoTimeResult = a;
                this._autoTimeFormats = fp(a);
                return { major: c[0], minor: c[1] };
            };
            c.prototype.loadDPs_shortestDistance = function () {
                var a = this.range;
                this.shortestValDistance = this.dataPositions.getShortestRange();
                this.shortestPercDistance = this.shortestValDistance / (a.max - a.min);
                return this;
            };
            c.prototype.isLog = function () {
                return Tl(this, function (a) {
                    return 0 === a.toLowerCase().indexOf("log");
                });
            };
            c.prototype.isStacked = function () {
                return Tl(this, function (a) {
                    return -1 < a.indexOf("stacked");
                });
            };
            c.prototype.isStackedFull = function () {
                return Tl(this, function (a) {
                    return "stackedfull" === a.toLowerCase();
                });
            };
            c.prototype.getValToLin = function () {
                return this.viewState ? this.viewState.valToLin : void 0;
            };
            c.prototype._getValToLin = function () {
                var a = this,
                    c = a.range,
                    e = a.breaks,
                    f = a.isInverted(),
                    g = f ? [0, 1] : [1, 0];
                if (e.length) {
                    f = a._openRanges();
                    var h = f.ranges,
                        k = f.sum;
                    return function (a) {
                        var b;
                        if ((b = ag(h, a))) return Y(g[0], g[1], 0, k, a - b[0] + b[2]);
                        if ((b = ag(e, a))) if ((b = ag(h, b[0]))) return Y(g[0], g[1], 0, k, b[2] + b[1] - b[0]);
                        return Y(g[0], g[1], c.min, c.max, a);
                    };
                }
                var l = a.userOptions.scale || {};
                if (a.isLog()) {
                    var m = l.logBase || 10,
                        n = function (a) {
                            return 0 === a ? a : Math.log(Math.abs(a)) / Math.log(m);
                        },
                        p = function (a) {
                            var b = 0 > c.min * c.max;
                            if (b && -1 < c.min) var d = c.logMin - c.log[0] - 1;
                            else (d = 0 === c.min ? c.logMin - 1 : c.log[0]), b && (1 > c.max && (d -= c.log[1]), (d += 1));
                            if (b && 1 > c.max) var e = c.logMax - c.log[1] - 1;
                            else (e = 0 === c.max ? c.logMax - 1 : c.log[1]), b && (-1 < c.min && (e -= c.log[0]), (e += 1));
                            var f = c.logRange;
                            if (0 === a) return 0 <= c.min ? 0 : 0 >= c.max ? 1 : b && -1 > c.min && 1 > c.max ? 1 - Math.abs(e / f) : Math.abs(d / f);
                            if (0 > a) return b && (-1 < c.min || 1 > c.max) ? (c.log[0] - n(a)) / f : b ? (d - n(a) - 1) / f : (d - n(a)) / f;
                            if (0 < a) return b && (1 > c.max || -1 < c.min) ? 1 - (c.log[1] - n(a)) / f : b ? (Math.abs(d) + n(a) + 1) / f : (n(a) - d) / f;
                        };
                    return f
                        ? function (a) {
                              return p(a);
                          }
                        : function (a) {
                              return 1 - p(a);
                          };
                }
                var q = a.fitRange,
                    r = c.min,
                    u = c.max,
                    x = function (a) {
                        return Y(g[0], g[1], r, u, q ? ua(a, r, u) : a);
                    };
                return a.isStackedFull() && "category" === a.type
                    ? function (b) {
                          var c = a._stackTranslators;
                          c = c ? c.forward(b) : b;
                          return x(t(c) ? c : b);
                      }
                    : x;
            };
            c.prototype._openRanges = function (a) {
                var b = this.range,
                    c = this.isInverted(),
                    f = b.min,
                    g = b.max,
                    h = this.breaks;
                b = [];
                var k = 0,
                    l = 0;
                h.length
                    ? ((b = B(cg(h, [f, g]), function (a) {
                          var b = [a[0], a[1], l];
                          l += a[1] - a[0];
                          return b;
                      })),
                      (k = eo(b)))
                    : (b.push([f, g, 0]), (k = g - f));
                if (a) {
                    var m = [];
                    for (a = 0; a < b.length; a++) (f = b[a]), (g = h = f[2] / k), (h = h + (f[1] - f[0]) / k + (a === b.length - 1 ? 0 : -1e-14)), m.push([c ? g : 1 - h, c ? h : 1 - g, { valRange: f }]);
                }
                return { ranges: b, sum: k, posRanges: m };
            };
            c.prototype.linToVal = function (a, c) {
                return this.posToVal(this.linToPos(a), c);
            };
            c.prototype.posToVal = function (a, c) {
                var b = this.range;
                if (Sl(b)) {
                    var d = b.min,
                        g = b.max,
                        h = this.isInverted(),
                        k = [0, 1],
                        l = this._isDragHost ? [d, g] : h ? [d, g] : [g, d],
                        m = this._openRanges(!0),
                        n = function (a) {
                            return Y(l[0], l[1], k[0], k[1], a);
                        };
                    d = function (a) {
                        var b = ag(m.posRanges, a);
                        if (!b) return n(a);
                        var c = G(b[2].valRange, 2),
                            d = c[0];
                        c = c[1];
                        d = h ? [d, c] : [c, d];
                        return Y(d[0], d[1], b[0], b[1], a);
                    };
                    d = this.breaks.length ? d : n;
                    this.isLog()
                        ? ((d = this.options("scale.logBase") || 10), (g = b.log[0]), (a = (h ? a : 1 - a) * (b.log[1] - g) + g), (b = Math.pow(d, Math.abs(a))), b < d && (b = (d * (b - 1)) / (d - 1)), (d = ce(a) * b))
                        : this.isStackedFull() && "category" === this.type
                        ? ((b = this._stackTranslators), (d = d(a)), (d = b ? b.backward(d) : d))
                        : (d = d(a));
                    d = c ? ua(d, Math.min.apply(Math, H(l)), Math.max.apply(Math, H(l))) : d;
                }
                return d;
            };
            c.prototype.linToPos = function (a) {
                return Y(0, 1, 0, this._sizeMetrics.length, a);
            };
            c.prototype.valToAngle = function (a, c) {};
            c.prototype.isInBreak = function (a) {
                return !!ag(this.breaks, a);
            };
            c.prototype.valVisible = function (a, c) {
                var b = this.range,
                    d = [b.min, b.max];
                c = t(c) ? c : !!a.pop;
                var g = "category" === this.type && c ? 0.5 : 0;
                return a.pop ? (this.valVisible(a[0], c) || this.valVisible(a[1], c) ? !0 : (a = Ue(d, [a[0] + g, a[1] - g])) && a.length) : a - g >= b.min && a + g <= b.max && !this.isInBreak(a);
            };
            c.prototype.tickVisible = function (a) {
                var b = !!a.pop;
                if (this.valVisible(a)) return (b = -1 < xe(this.tickPositions.all, a)) && "category" === this.type && 2 === a.length ? this.valVisible(xf(a, 0.1)) : b;
                if (this.hasCalPatBreaks) {
                    var c = this.range;
                    c = [c.min, c.max];
                    return b ? Kb(c, a[0]) && Kb(c, a[1]) : Kb(c, a);
                }
            };
            c.prototype.isInverted = function () {
                var a = z((this.currentOptions.scale || {}).invert, !1);
                ("x" !== this.prefix && "sp" !== this.prefix) || this.isHoriz || !this.type || !this.type.match("category|string|time") || (a = !a);
                if ("x" === this.prefix || "z" === this.prefix || "sp" === this.prefix) a = !a;
                this.chartArea && this.chartArea.isHoriz && ("x" === this.prefix || "y" === this.prefix || "sp" === this.prefix) && (a = !a);
                "sp" === this.prefix && (a = !a);
                this.isRadial && "x" === this.prefix && !this.isHoriz && (a = !a);
                return a;
            };
            c.prototype.clusterWidth = function (a) {
                return t(a) ? this.clusterWidthByValue(a) : z(this.options("staticColumnWidth"), this.getShortestDistPerc() * this._sizeMetrics.length * (1 - this.options("spacingPercentage")));
            };
            c.prototype.clusterWidthByValue = function (a) {
                var b = this.getValToLin(),
                    c = this.shortestValDistance / 2;
                return this._sizeMetrics.length * (b(a + c) - b(a - c));
            };
            c.prototype.duV = function (a) {
                void 0 === a && (a = !1);
                var b;
                if (!(b = this._duV)) {
                    b = void 0;
                    void 0 === b && (b = !1);
                    var c = this.isInverted(),
                        f = this.sideIndex(),
                        g = [-1, 0],
                        h = [0, -1],
                        k = [1, 0],
                        l = [0, 1],
                        m = [c ? 1 : -1, 0],
                        n = [c ? -1 : 1, 0],
                        p = [0, c ? 1 : -1];
                    c = [0, c ? -1 : 1];
                    f = [
                        { f: m, b: n, o: h, i: l, vc: 1, hc: 0 },
                        { f: p, b: c, o: k, i: g, vc: 0, hc: 1 },
                        { f: m, b: n, o: l, i: h, vc: 1, hc: 0 },
                        { f: p, b: c, o: g, i: k, vc: 0, hc: 1 },
                    ][b ? (f + 2) % 4 : f];
                    f.inside = b;
                    b = yi(f);
                }
                this._duV = b;
                b = this._duV();
                a && ((b.o[0] *= -1), (b.o[1] *= -1), (b.i[0] *= -1), (b.i[1] *= -1), (b.inside = a));
                return b;
            };
            c.prototype.measure = function (a) {
                var b = this.chartArea,
                    c = this.viewState,
                    f = this.rootVisuals,
                    g = this.sideIndex();
                this._isZoomLive = b.isZoomLive && b.isZoomLive();
                C(this.currentOptions, "label.text");
                if (c && !1 !== this.isVisible) {
                    var h = f.label.rootPanel.calculateMargin();
                    if (a && (a.pop && (a = this.viewState.caRect = { x: 0, y: 0, width: a[0], height: a[1] }), a)) {
                        c = this.measure_ticks(this.chartArea.isRendering);
                        var k = (this.tickBounds = c.slice(0));
                        this.isHoriz ? (k[1] += 2 === g ? a.height : -k[3]) : (k[0] += 1 === g ? a.width : -k[2]);
                        "caPaneLinear" === b.kind && b.hasRoundCaps && "x" === this.prefix && ((b = this.clusterWidth() / 2), (g = ha(a)), (g = Bl(g, this.isHoriz ? [-b, 0] : [0, -b])), (this.tickBounds = Ea([g, k])));
                        if (!c) return l;
                        var l = sh(c, ha(a));
                        b = this._sizeMetrics.clipped;
                        g = [0, 0];
                        var m = [0, 0];
                        this.isHoriz
                            ? ((k = this._sizeMetrics.clipped = [a.width, c[3]]), (this._sizeMetrics.length = a.width), (g[0] = Math.abs(Math.min(0, c[0]))), (m[0] = c[2] + c[0] - a.width))
                            : ((k = this._sizeMetrics.clipped = [c[2], a.height]), (this._sizeMetrics.length = a.height), (g[1] = Math.abs(Math.min(0, c[1]))), (m[1] = c[3] + c[1] - a.height));
                        if ("hidden" === this.options("overflow") || this.chartArea.isDragging) (g = [0, 0]), (m = [0, 0]);
                        this.overflowSize = { tL: g, bR: m };
                        !b.length || (b[0] === k[0] && b[1] === k[1]) || this.rootVisuals.main.attr(this.isHoriz ? { height: k[1], width: "*" } : { width: k[0], height: "*" });
                        a = f.label.getSize({ width: this._sizeMetrics.length - h.horizontal.px });
                        this._sizeMetrics.labelSize = a;
                        this.isHoriz ? (f.labelContainer.attr({ height: a[1] }), this.rootPanel.attr({ width: 0 })) : f.labelContainer.attr({ width: a[1] });
                        this.rootPanel.setPreliminarySize(!0);
                        f = this.rootPanel.getBbox();
                        0 === f.width && ("sp" !== this.prefix && (f = Gc(l)), this.isHoriz && (f.height += a[1] || 0));
                        this.isHoriz ? this.rootVisuals.labelContainer.attr({ height: a[1] }) : this.rootVisuals.labelContainer.attr({ width: a[1] });
                        this._sizeMetrics.bbox = c;
                        this._sizeMetrics.size = [f.width, f.height];
                        this.setViewState(!0);
                        this.setViewStateSize();
                        l = this._sizeMetrics.history;
                        a = this._sizeMetrics.clipped;
                        2 === l.length && (this._sizeMetrics.history = [l[1]]);
                        this._sizeMetrics.history.push([Math.round(a[0]), Math.round(a[1])]);
                        c[2] = f.width;
                        c[3] = f.height;
                        return [0, 0, f.width, f.height];
                    }
                } else if (!1 === this.isVisible) return (this._sizeMetrics.length = this.isHoriz ? a[0] : a[1]), [0, 0, 0, 0];
                return l;
            };
            c.prototype.requireReflow = function () {
                var a = this.currentOptions.defaultTick;
                if (a) {
                    var c = a.label;
                    if ("inside" === a.placement || (c && "inside" === c.placement)) return !1;
                }
                a = this._sizeMetrics.history;
                return 2 === a.length && ((this.isHoriz && a[0][1] !== a[1][1]) || (!this.isHoriz && a[0][0] !== a[1][0]));
            };
            c.prototype.resetMetricsData = function () {
                var a = {
                    maxTextSize: [0, 0],
                    maxLength: 0,
                    maxRadiusLen: 0,
                    maxLengthRange: 0,
                    getMaxLength: function () {
                        return a.overlapRange ? Math.max(a.maxLength, a.maxLengthRange) : a.maxLength + a.maxLengthRange;
                    },
                };
                this.tickMetricsData = a;
            };
            c.prototype.measure_ticks = function (a) {
                function b() {
                    var a = [],
                        b = C(g.currentOptions, "defaultTick.label.rotate") || 0;
                    if (g.isHoriz && (b || g.currentOptions.autoRotate))
                        return (
                            w(E, function (b) {
                                if (!b.invalid) {
                                    var c = b.angledBounds();
                                    Id(b.currentOptions.label) && a.push(c);
                                    b.metrics().rotated = c;
                                }
                            }),
                            Ea(a)
                        );
                }
                function c(a) {
                    var b = (g._rngData = Sr(g, a));
                    a = Ea(
                        B(a, function (a) {
                            return a._positionData.bbox;
                        })
                    );
                    a[1] = 0;
                    a[b.duV.vc + 2] = b.depth;
                    return a;
                }
                var f = this;
                void 0 === a && (a = !1);
                var g = this,
                    h = g.viewState,
                    k = [],
                    l = [],
                    m = [],
                    n = [],
                    p = [],
                    q = [],
                    r = g.isHoriz ? 1 : 0,
                    u = g.isHoriz
                        ? function (a, b, c) {
                              return (b && a.rotated ? a.rotated[3] : (c && a.altTextSize ? a.altTextSize : a.textSize)[1]) + a.tickLength + a.tickPadding || 0;
                          }
                        : function (a, b, c) {
                              return (b && a.rotated ? a.rotated[2] : (c && a.altTextSize ? a.altTextSize : a.textSize)[0]) + a.tickLength + a.tickPadding || 0;
                          },
                    x = C(g.currentOptions, "defaultTick"),
                    v = "inside" === x.placement;
                x = C(x, "label.rotate") || 0;
                x = g.isHoriz && 0 !== x;
                var y,
                    D = [],
                    E = [],
                    z = [],
                    A = function () {
                        y = Ei(g);
                        D = y.rngTicks;
                        E = y.valArrange;
                        z = y.rngArrange;
                    };
                if (h && !1 !== g.isVisible) {
                    g.setTicks(h).setAttribs();
                    A();
                    g._rngData = Oz(g, D);
                    A();
                    var G = 0;
                    w(E, function (a) {
                        if (a.invalid) wf(f, a);
                        else {
                            var b = a.metrics();
                            Id(a.currentOptions.label) && "inside" !== a.currentOptions.placement && (m.push(b.textSize[0]), n.push(b.textSize[1]), (G += b.primTextSize[1]), p.push(u(b)), q.push(u(b, !1, !0)), l.push(b));
                        }
                    });
                    A = m.length ? [Math.max.apply(Math, H(m)), Math.max.apply(Math, H(n))] : [0, 0];
                    var J = p.length ? Math.max.apply(Math, H(p)) : 0,
                        I = q.length ? Math.max.apply(Math, H(q)) : 0;
                    g.tickMetricsData.maxTextSize = A;
                    g.tickMetricsData.maxLength = J;
                    g.tickMetricsData.maxLengthAlt = I;
                    g.tickMetricsData.maxRadiusLen = 0;
                    A = [];
                    var M = void 0,
                        K = !1;
                    J = Q(C(g.currentOptions, "defaultTick.label.rotate")) && Q(g.userOptions.autoRotate) && "angled" !== g.labelMode;
                    h = !g.isHoriz && h.axisSize && h.axisSize[1] > 2 * G;
                    I = [];
                    for (var L = 0, O = E.length; L < O; L++) {
                        var P = E[L];
                        if (!P.invalid) {
                            var S = wf(this, P, { altTextSize: !1 }),
                                T = S.textBBox;
                            M = M && zd(M, T);
                            var V = h && 10 < T[2] / T[3],
                                X = M && g.isHoriz,
                                Y = !1 !== N(P.currentOptions, ["label", "autoWrap"]) && P._formattedText && !P._formattedText.match(/<br\s*\/?>/);
                            if (J && Y && P._metrics.altTextSize && (X || V)) {
                                if (
                                    !K &&
                                    M &&
                                    ((K = E[L - 1]),
                                    (S = wf(this, K, { altTextSize: !0 })),
                                    (M = S.textBBox),
                                    (I[I.length - 1] = S.textLength),
                                    Id(K.currentOptions.label) && g.tickVisible(K.value()) && ((k[k.length - 1] = K._bbox), (A[A.length - 1] = M)),
                                    !zd(M, T))
                                ) {
                                    M = T;
                                    K = !1;
                                    continue;
                                }
                                S = wf(this, P, { altTextSize: !0 });
                                T = S.textBBox;
                                K = !0;
                            } else K = !1;
                            I.push(S.textLength);
                            Id(P.currentOptions.label) && g.tickVisible(P.value()) && (k.push(P._bbox), A.push(T));
                            M = T;
                        }
                    }
                    I.length && (g.tickMetricsData.maxLength = Math.max.apply(Math, H(I)));
                    if (x || (g.isHoriz && qo(A)) || (a && "angled" === g.labelMode)) {
                        g.labelMode = "angled";
                        var W = b() || W;
                    } else g.labelMode = "normal";
                    "angled" === g.labelMode &&
                        ((p = []),
                        w(l, function (a) {
                            p.push(u(a, !0));
                        }),
                        (g.tickMetricsData.maxLength = Math.max.apply(Math, H(p))),
                        (k = []),
                        w(E, function (a) {
                            a.invalid || (wf(f, a, { tickPointsOnly: !0 }), Id(a.currentOptions.label) && k.push(a._bbox));
                        }));
                    W = Ea(k) || [0, 0, 0, 0];
                    a = ea(z, function (a) {
                        return a._rngData.visible;
                    });
                    a.length &&
                        ((a = c(a)), (x = 0 === y.fullRangesLevel), (W[r + 2] = v ? 0 : x ? Math.max(a[r + 2], W[r + 2]) : a[r + 2] + W[r + 2]), (g.tickMetricsData.maxLengthRange = v ? 0 : a[r + 2]), (g.tickMetricsData.overlapRange = x));
                }
                r = g.currentOptions.caOffset;
                t(r) && (g.isHoriz ? (W[3] = Math.max(0, W[3] + r)) : (W[2] = Math.max(0, W[2] + r)));
                return W || [0, 0, 0, 0];
            };
            c.prototype.sideIndex = function () {
                var a = this.currentOptions.orientation;
                a = "right" === a || "top" === a || "opposite" === a;
                return this.isHoriz ? (a ? 0 : 2) : a ? 1 : 3;
            };
            c.prototype.sideDepth = function () {
                var a = this._sizeMetrics.size;
                return this.isHoriz ? a[1] : a[0];
            };
            c.prototype.autoHideGrid = function () {
                t(this._autoHideGrid) || (this._autoHideGrid = vD(this));
                return this._autoHideGrid;
            };
            c.prototype.render = function (a, c) {
                void 0 === c && (c = this.updateOptions);
                var b,
                    d = this.viewState,
                    g = this.viewStatePrev;
                if ((b = this.syncAxis)) (d = this.viewState = qa(b.viewState)), (g = this.viewStatePrev = qa(b.viewStatePrev));
                if (d) {
                    var h = A({}, c);
                    h.isTransitioning = this.isTransitioning;
                    if (!1 !== this.isVisible && this.isAdded) {
                        a = a || this.chartArea.renderRect;
                        var k = this.isTransitioning ? [g, d] : d;
                        if ((d.caRect = a))
                            this.measure(a),
                                (this._autoHideGrid = void 0),
                                Fz(this),
                                Gz(this),
                                this.render_rngLines(a, h),
                                w(this._ticks, function (a) {
                                    return a.render(k, h);
                                }),
                                this.garbageCollection(),
                                this.render_line(a, c),
                                this.render_alignLabel();
                    } else !1 === this.isVisible && this.isAdded && this.resetVisuals();
                    !c.invalidate && this.validate();
                }
                return this;
            };
            c.prototype.garbageCollection = function () {
                w(this._ticks.slice(0), function (a) {
                    a && 6 < a._age && a.destroy();
                });
            };
            c.prototype.render_alignLabel = function () {
                var a = this.currentOptions.label,
                    c = this.sideIndex(),
                    e = this._sizeMetrics.labelSize;
                this.isHoriz ||
                    ((a.rotation = 0 === c || 1 === c ? 90 : -90), (c = va([0, 0, e[1], e[0]])), this.rootVisuals.labelContainer.attr({ offsetX: c[0] - e[0] / 2, offsetY: c[1] - e[1] / 2, rotate: [a.rotation, e[0] / 2, e[1] / 2] }));
            };
            c.prototype.renderOnCa = function (a, c) {
                void 0 === c && (c = this.updateOptions);
                var b = this.viewState,
                    d = this.viewStatePrev;
                (a = a || this.chartArea.renderRect) && this.isVisible && b && ((b.caRect = a), (a = this.isTransitioning ? [d, b] : b), this.renderGridLines(a, c), this.render_markers(a, c), this.validate());
            };
            c.prototype.renderGridLines = function (a, c) {
                w(this._ticks, function (b) {
                    return b.render(a, A({ onCa: !0 }, c));
                });
                this.render_altGrid(a, c);
            };
            c.prototype.getGridLinesTarget = function () {
                var a = C(this.currentOptions, "defaultTick.gridLine.onTop"),
                    c = this.chartArea.rootVisuals;
                return a ? c.gridLinesFront : c.gridLinesBehind;
            };
            c.prototype.render_altGrid = function (a, c) {
                void 0 === a && (a = this.chartArea);
                void 0 === c && (c = {});
                var b = this;
                a = Qr("time" === b.type ? b.tickPositions.all : b.tickPositions);
                var d = b.renderer.renderer,
                    g = b.attribs.altGrid,
                    h = b.viewState,
                    k = b.viewStatePrev,
                    l = b.altGridFillVisuals,
                    m,
                    n,
                    p = b.getGridLinesTarget(),
                    q = function () {
                        return w(l, function (a) {
                            return (a.invalid = !0);
                        });
                    },
                    r = function (a) {
                        return S(l, function (b) {
                            return b.value[0] === a[0] && b.value[1] === a[1];
                        });
                    },
                    u = function (a) {
                        a.visual.attr(A({ opacity: 0, d: b.getCaPath(a.value, p, h) }, c));
                    },
                    x = k && !1 !== c;
                if (g && "none" !== g.fill && !wD(b)) {
                    q();
                    for (var v = 0, t = a.length; v < t - 1; v += 2) {
                        var D = [a[v], a[v + 1]];
                        if ((m = b.getCaPath(D, p, h)))
                            (q = r(D))
                                ? ((q.invalid = !1), q.visual.attr(A({ d: m, opacity: 1 }, c)))
                                : (x && (n = b.getCaPath(D, p, k)),
                                  (q = { value: D, visual: d.path(A({ d: n || m, opacity: 0, animation: !1, zIndex: 4 }, Ga(g, ["animation"]))).add(p), invalid: !1 }),
                                  l.push(q),
                                  (D = A({ d: m, opacity: 1, "fill-rule": "evenodd" }, g, c)),
                                  x || (D.animation = !1),
                                  q.visual.attr(D));
                    }
                    w(ea(l, { invalid: !0 }), u);
                }
            };
            c.prototype.init_markers = function () {
                var a = this.currentOptions.markers || [];
                if (((a && a.length) || this._markers.length) && !this._markers.length)
                    for (var c = 0, e = a.length; c < e; c++) {
                        var f = a[c];
                        if (f.value && f.value.pattern) {
                            var g = Wr(this, [f.value.pattern]);
                            f.value = B(g, function (a) {
                                return a.slice(0, 2);
                            });
                        }
                        this._markers.push(new Xr(this, f));
                    }
            };
            c.prototype.render_markers = function (a, c) {
                void 0 === c && (c = {});
                var b = this;
                a = !b.isRadial;
                var d = b.currentOptions.markers || [];
                b.init_markers();
                if ((d && d.length) || b._markers.length)
                    a && Iz(b._markers),
                        w(b._markers, function (a) {
                            a.render(b.viewState, c);
                        });
            };
            c.prototype.render_line = function (a, c) {
                var b = this;
                c = b.rootVisuals.line;
                var d = b.currentOptions,
                    g = d.line,
                    h = b.userOptions.line,
                    k = b.chart.options("defaultAxis.line");
                g.visible = g.visible || (h ? tf(h) : !1) || (k ? tf(k) : !1);
                h = Bb(g);
                h.d = this.getLinePath(a);
                var l = b.options("line.breaks");
                if (l) {
                    k = function (a) {
                        var b = 0;
                        return Aa(a).translate(function (a) {
                            var c = 1e-4 * b++;
                            return [a[0] + c, a[1] + c];
                        });
                    };
                    var m = 0;
                    h.d = Aa(h.d).translate(function (a) {
                        var b = 1e-4 * m++;
                        return [a[0] + b, a[1] + b];
                    });
                    b.isRadial ? (a = Aa(h.d).length()) : ((a = b.getLinePathPoints(a)), (a = mc(a[0], a[1])));
                    a = b.ticksToDashAttr(a, d.line.width, l);
                    L(h, a);
                    h["stroke-linecap"] = "round";
                    a = g.color;
                    if (-1 < a.toLowerCase().indexOf("smartpalette")) {
                        a = a.split(/:/gi);
                        if ((a = b.chart.getSmartPalette(1 < a.length ? a[1] : b.chart.palette)))
                            (a = a.getTraditionalStops(!1, [b.range.min, b.range.max])),
                                b.isInverted() ||
                                    ((a = B(a, function (a) {
                                        return [1 - a[0], a[1], a[2]];
                                    })),
                                    (a = sa(a, function (a) {
                                        return a[0];
                                    }))),
                                (h.stroke = oc({ stops: a, angle: b.isHoriz ? 0 : 90 })),
                                (h.d = k(h.d));
                        h["stroke-opacity"] = 1;
                    }
                } else if (g.caps && ((k = b.originValue), h.caps)) {
                    g = void 0;
                    g = { eachShape: !0, size: "300%" };
                    t(this.originValue) && (g.start = { overflow: !0 });
                    h.caps = qd(h.caps, g);
                    var n = b.duV();
                    a = b.getLinePathPoints(a);
                    var p = a[0][n.vc];
                    g = function (a) {
                        var c = [];
                        c[n.vc] = p;
                        c[n.hc] = b.getCaLen(a);
                        return c;
                    };
                    t(k) && b.valVisible(k)
                        ? ((k = g(k)), (g = fb([k, a[0]]).join(" ")), (g += fb([k, a[1]]).join(" ")), (h.d = g))
                        : t(k) && ((k = [b.range.min, b.range.max]), 0 >= k[1] && k.reverse(), (g = fb(k.map(g))), (h.d = g), (h.caps.start = { type: "none" }));
                }
                c.attr(h);
            };
            c.prototype.render_rngLines = function (a, c) {
                a = { width: 1, color: "#4c4c4c", dashStyle: "dash", opacity: 0.2 };
                c = this.renderer;
                var b = this.rootVisuals.mainRng,
                    d = C(this._rngData, "connectorLines"),
                    g = this.rootVisuals.rngConnectors,
                    h = [];
                if (d && d.length) {
                    var k = Bb(a);
                    w(d, function (a) {
                        fb(a, h);
                    });
                    k.d = xa(h);
                }
                k ? (g ? g.attr(k) : (g = this.rootVisuals.rngConnectors = c.renderer.path().attr(k).add(b))) : g && g.attr({ opacity: 0 });
            };
            c.prototype.setRootVisuals = function () {
                var a = this.renderer;
                if (!this.rootVisuals && !1 !== this.options("visible")) {
                    var c = a.panel({ cssClass: "labelContainer" }),
                        e = a.panel("stack:" + (this.isHoriz ? "y" : "x")),
                        f = a.panel(),
                        g = a.renderer.path().add(f),
                        h = a.panel({ zIndex: 2 }).add(f);
                    a = new Fi(this.chart, this.currentOptions.label).add(c);
                    var k = this.duV();
                    0 > k.o[k.vc] ? (c.add(e), f.add(e)) : (f.add(e), c.add(e));
                    this.rootVisuals = { stack: e, main: f, label: a, labelContainer: c, line: g, mainRng: h };
                    this.applyCaOffset();
                    this.rootPanel && e.add(this.rootPanel);
                    this.rootPanel = e;
                }
                return this;
            };
            c.prototype.applyCaOffset = function () {
                var a = this.currentOptions,
                    c = t(a.anchorWidth) ? a.anchorWidth : z(C((this.chartArea || this.chart.chartAreas(0)).currentOptions, "outline.width"), 1) / 2,
                    e = this.duV(),
                    f = e.o,
                    g = e.hc;
                e = e.i.slice(0);
                e[g] = 1;
                c = we([0, 0], e, c);
                a = we(c, f, a.caOffset || 0);
                this.rootVisuals.stack.attr({ offsetX: a[0], offsetY: a[1] });
            };
            c.prototype.setAttribs = function () {
                var a = this.isHoriz,
                    c = this.currentOptions.alternateGridFill,
                    e = I(c);
                a = this.isRadial ? Fa.altGridFillRad : a ? Fa.altGridFillX : Fa.altGridFillY;
                var f = { fill: c || "none" };
                c && "none" !== c ? ("object" !== e ? (f = { fill: dd(a, c) }) : ni(f, c)) : (f = { fill: "none" });
                this.attribs.altGrid = f;
                return this;
            };
            c.prototype.setViewState = function (a, c) {
                var b = this.viewState,
                    d;
                (d = this.syncAxis)
                    ? ((this.viewState = qa(d.viewState)), (this.viewStatePrev = qa(d.viewStatePrev)))
                    : b && b.equalsRange(this)
                    ? (this.posDirty = !1)
                    : (b && (this.isTransitioning = !0),
                      (this.viewStatePrev = b),
                      (this.coordinatesDirty = this.posDirty = !0),
                      (this.viewState = new bu(this, this._getValToLin(), this.chartArea)),
                      !a && this.viewState.isValid() && this.render(null, c),
                      this.trigger("setRange", this.viewState.range));
                return this;
            };
            c.prototype.setViewStateSize = function () {
                var a;
                if ((a = this.viewState)) (a.axisSize = this._sizeMetrics.clipped.slice(0)), (a.axisBBox = this._sizeMetrics.bbox.slice(0));
                return this;
            };
            c.prototype.validate = function () {
                this.isTransitioning = this.coordinatesDirty = this.posDirty = !1;
                return this;
            };
            c.prototype.getCaPath = function (a, c, e, f) {
                var b = this;
                void 0 === e && (e = this.viewState);
                void 0 === f && (f = 1);
                var d = t(a.pop),
                    k = !1,
                    l = a;
                if (!d || (t(a[0]) && !t(a[0].pop))) l = [a];
                if ("object" === typeof f) {
                    var m = f;
                    f = z(m.lineWidth, 1);
                    k = m.multiShape;
                }
                var n = "";
                w(k && d ? a : l, function (a) {
                    a = b.getCaPoints(a, c, e, f);
                    n += fb(a).join(" ") + (k || (!d && !b.isRadial) ? "" : "Z");
                });
                return n;
            };
            c.prototype.getCaPoints = function (a, c, e, f) {
                void 0 === e && (e = this.viewState);
                void 0 === f && (f = 1);
                a = this.toPosition(a);
                var b = !1;
                if ("object" === typeof f) {
                    var d = f;
                    f = z(d.lineWidth, 1);
                    b = d.posOnly;
                }
                var k = function (a) {
                        return Math.max(-1e6, Math.min(1e6, e.valToLin(a)));
                    },
                    l = e.caRect || e.chartArea.contentRect || e.chartArea.innerRect,
                    m = e.chartArea,
                    n = this.isHoriz,
                    p = t(a.pop),
                    q = m.rootVisuals.gridLinesBehind;
                d = function (a) {
                    a = k(a);
                    a = n ? a * l.width : a * l.height;
                    a = n
                        ? [
                              [a, l.y],
                              [a, l.y + l.height],
                          ]
                        : [
                              [l.x, a],
                              [l.x + l.width, a],
                          ];
                    return (2 === a.length ? zr : ue)(c || q, a, f);
                };
                if (this.isRadial) {
                    var r = ha(l),
                        u = r[2],
                        x = r[3],
                        v = r[1],
                        y = r[0];
                    r = m.getRadarType();
                    var w = function (a) {
                            return b ? [a[0], a[1]] : [y + a[0] * u, v + a[1] * x];
                        },
                        E = this.interpolationAxis;
                    if (this.isHoriz) {
                        var F = m.projection.val2linxy,
                            A = function (a, b) {
                                return w(F(a, b));
                            };
                        "polar" === r
                            ? (d = function (a) {
                                  a = k(a);
                                  return [A(a, 0), A(a, 1)];
                              })
                            : p ||
                              ((A = m.projection.webVal2linxy),
                              (d = function (a) {
                                  a = k(a);
                                  return [A(a, 0), A(a, 1)];
                              }));
                    } else if (!this.isHoriz) {
                        var C = m.projection.val2linxy,
                            G = E.getTicksPos();
                        d = function (a) {
                            var b = k(a);
                            return B(G, function (a) {
                                return w(C(a, b));
                            });
                        };
                    }
                }
                p ? ((m = d(a[0])), m.push.apply(m, H(d(a[1]).reverse()))) : (m = d(a));
                return m;
            };
            c.prototype.ticksToDashAttr = function (a, c, e) {
                void 0 === c && (c = 1);
                e = e || {};
                id(e, { gap: 0.01, cap: !0, invert: !1 });
                var b = this,
                    d = e.custom,
                    h = [],
                    k = 0,
                    l = {},
                    m = b.getTicksPos();
                d
                    ? ((m = d),
                      1 < Math.max.apply(Math, H(d)) &&
                          (m = B(d, function (a) {
                              return b.viewState.valToLin(a);
                          })))
                    : (m = d || b.getTicksPos());
                c = (2 * ((a * e.gap) / 2 + (e.cap ? c / 2 : 0))) / a;
                m[0] > m[m.length - 1] &&
                    (m = B(m, function (a) {
                        return 1 - a;
                    }));
                m = Zj(m, [0, 1], c);
                var n = cg(m, [0, 1]);
                w(n, function (b, c) {
                    var d = c === n.length - 1,
                        e = d ? void 0 : n[c + 1],
                        f = b[1] - b[0];
                    0 === c && 0 < b[0] && (k = b[0] * a);
                    h.push(f * a);
                    e && h.push((e[0] - b[1]) * a);
                    d && 1 > b[1] && h.push((1 - b[1]) * a + 2);
                });
                e.invert && h.unshift(0);
                l["stroke-dasharray"] = h.join(",");
                k && (l["stroke-dashoffset"] = -k);
                return l;
            };
            c.prototype.getCaLen = function (a, c) {
                void 0 === c && (c = this.viewState);
                var b = c.caRect || c.chartArea.contentRect,
                    d = this.isHoriz,
                    g = c.valToLin;
                return hb(a, function (a) {
                    a = g(a);
                    return d ? a * b.width : a * b.height;
                });
            };
            c.prototype.getLinePath = function (a) {
                var b = this.currentOptions,
                    c = G(this.getLinePathPoints(a), 2),
                    f = c[0];
                c = c[1];
                b = Bb(b.line);
                return this.breakLine(a, [f, c], b["stroke-width"]);
            };
            c.prototype.getLinePathPoints = function (a) {
                a = "inside" === C(this.currentOptions, "defaultTick.placement");
                var b = this.range,
                    c = a ? 0 : this.tickMetricsData.getMaxLength();
                a = this.getCaLen(b.min);
                b = this.getCaLen(b.max);
                switch (this.sideIndex()) {
                    case 0:
                        var f = [b, c],
                            g = [a, c];
                        break;
                    case 1:
                        c = [0, b];
                        g = [0, a];
                        f = c;
                        break;
                    case 2:
                        c = [b, 0];
                        g = [a, 0];
                        f = c;
                        break;
                    case 3:
                        (f = [c, b]), (g = [c, a]);
                }
                return [g, f];
            };
            c.prototype.breakLine = function (a, c, e, f) {
                var b = this,
                    d = b.currentOptions,
                    k = b.rootVisuals.main,
                    l = [],
                    m = c[0][0],
                    n = c[0][1],
                    p = b.isInverted();
                c = (C(d, "scale.defaultBreak.type") || "").toLowerCase();
                c = "gap" === c || "zigzag" === c ? C(d, "scale.defaultBreak.line.width") / 2 : 0;
                var q = a.y,
                    r = a.x,
                    u = a.x + a.width,
                    x = a.y + a.height;
                a = b._openRanges();
                var v = function (a) {
                        return b.isHoriz ? [a, n] : [m, a];
                    },
                    y = function (a, c) {
                        var f = "";
                        c = p ? -c : c;
                        b.isHoriz && (c = -c);
                        for (var g = 0, h = a.length; g < h; g++) {
                            var m = a[g],
                                n = b.getCaLen(m[0]),
                                y = b.getCaLen(m[1]),
                                w = (t(d.anchorWidth) ? d.anchorWidth : z((b.chartArea || b.chart.chartAreas(0)).options("outline.width"), 1)) / 2,
                                E = v(n > y ? n + w : n - w),
                                D = v(y > n ? y + w : y - w),
                                A = v(n),
                                B = v(y);
                            B = [A, B];
                            b.isHoriz ? (B.push([A[0], q]), B.push([A[0], x])) : (B.push([u, A[1]]), B.push([r, A[1]]));
                            A = rb(Ua(B), -0.5);
                            l.push(A);
                            1 < a.length && g < a.length - 1 && (D = v(b.getCaLen(m[1]) + (y > n ? w - c : c - w)));
                            g && (E = v(b.getCaLen(m[0]) + (n > y ? w - c : c - w)));
                            k && ((m = zr(k, [E, D], e, w || void 0)), (E = m[0]), (D = m[1]));
                            f += xa(fb([E, D]));
                        }
                        return f;
                    };
                b._nRects = l;
                return f ? y(bg(a.ranges, f), c) : y(a.ranges, c);
            };
            c.prototype.getBreakRects = function () {
                return this._nRects.slice(0);
            };
            c.prototype.resetTimers = function () {
                w(this._markers, function (a) {
                    return a.resetTimers();
                });
            };
            c.prototype.getPointTicks = function () {
                var a = this,
                    c = a.dataInfo.serColl,
                    e = a.prefix,
                    f = e + "AxisTick",
                    g = "category" === a.type && "x" === e,
                    h = a._isZoomLive,
                    k = !!a.syncAxis,
                    l = a.usedDataKeys;
                c && !c.items.length && a.syncAxis && (c = a.syncAxis.dataInfo.serColl);
                if (!h) {
                    var m = [],
                        n = [],
                        p = function (a) {
                            var b = a && a.series[("x" === e ? "y" : "x") + "Axis"];
                            if (b) return b.getValToLin()("x" === e ? a.y : a.x);
                        },
                        q = function (b, c, d, f, h) {
                            f = g ? z(f.name, f.x) : a.isStacked() && h.hasKey(e + "s") ? [h.getValue(e + "s", c), h.getValue(e + "e", c)] : z(f[e], h.getValue(e, c), h.getValue(l[0], c));
                            f = a.normUserValue(f);
                            d = {
                                point: function () {
                                    b._points.length || b.setPoints();
                                    return b._points[c];
                                },
                                config: d,
                                value: f,
                            };
                            if ((h = S(m, { value: f }))) {
                                var k = h.point(),
                                    q = d.point();
                                if (k !== q)
                                    switch (((k = p(k)), (q = p(q)), a.sideIndex())) {
                                        case 0:
                                        case 3:
                                            var r = k > q;
                                            break;
                                        case 1:
                                        case 2:
                                            r = k < q;
                                    }
                                else r = !0;
                            }
                            h ? r && (pb(m, h), m.push(d)) : (m.push(d), n.push(f));
                        },
                        r = function (b, c) {
                            var d = a.id && a.id === b.axisId;
                            c = c[a.prefix + "Axis"].id === a.id;
                            return k ? d || c : !b.axisId || d;
                        };
                    c &&
                        c.each(function (a) {
                            var b = function (a) {
                                    return a && a[f];
                                },
                                c = a.indexer,
                                d = a.currentOptions,
                                e = c.data[f] && 0 < c.data[f].length,
                                g = a.userPoints,
                                h = g.length,
                                k = b(d.defaultPoint),
                                l = b(d.firstPoint) || b(d.lastPoint),
                                m = function (a) {
                                    return a;
                                };
                            if (k) {
                                var n = yi(k);
                                m = function (a) {
                                    return A(n(), a);
                                };
                            }
                            if (k) {
                                if (r(k, a)) for (e = 0; e < h; e++) (k = c.getValue(f, e)), q(a, e, m(k || {}), g[e], c);
                            } else if (e) {
                                var p = c.data[f],
                                    u = c.indexes[f];
                                for (e = 0; e < (u ? u.length : 0); e++) {
                                    var x = u[e];
                                    (k = p[x]) && r(k, a) && q(a, x, m(k), g[x], c);
                                }
                            }
                            l && ((l = b(d.firstPoint)) && r(l, a) && null !== g[0].y && q(a, 0, l, g[0], c), (b = b(d.lastPoint)) && r(b, a) && null !== g[h - 1].y && q(a, h - 1, b, g[h - 1], c));
                        });
                    var u = [];
                    n.length &&
                        ((n = $a(n)),
                        w(n, function (a) {
                            return u.push(S(m, { value: a }));
                        }),
                        (u.positions = n));
                    a._getPointTicks = u;
                }
                return a._getPointTicks;
            };
            c.prototype.getCustomTicks = function () {
                if (!this._isZoomLive) {
                    var a = this.currentOptions,
                        c = this.userOptions,
                        e = B(a.customTicks || [], function (b) {
                            var c = A({}, a.defaultTick);
                            return A(c, b);
                        });
                    if (t(this.originValue) && c.originTick && !1 !== C(a, "defaultTick.enabled") && !1 !== C(a, "originTick.enabled")) {
                        var f = A({}, a.defaultTick);
                        f = A(f, c.originTick);
                        f.value = this.originValue;
                        e.push(f);
                    }
                    this._getCustomTicks = e;
                }
                return this._getCustomTicks;
            };
            c.prototype.setTicks = function (a) {
                var b = this,
                    c = b.currentOptions,
                    f = b._isZoomLive,
                    g = b.isLog(),
                    h = function (a, b) {
                        return Y(a, a + b, 0, 1, m.valToLin(a));
                    },
                    k = function (a, c) {
                        a = a.rect();
                        return b.isHoriz ? h(a.x, a.width) : h(a.y, a.height);
                    };
                a = G(a.pop ? a : [void 0, a], 2);
                var l = a[0],
                    m = a[1];
                m.rect();
                if (m.isValid()) {
                    var n = void 0;
                    a = void 0;
                    b.setTickPositions().invalidateTicks();
                    var p = A(g ? { label: { visible: !1 } } : {}, c.defaultTick, c.defaultMinorTick);
                    c = a = "inside" !== p.placement || b.isRadial || "category" === b.type ? 0 : 1;
                    for (var q = b.tickPositions.all.length - a; c < q; c++) {
                        n = b.tickPositions.all[c];
                        var r = b.findTickInfo(n);
                        (a = b.findTick(n, g ? r.type : void 0))
                            ? (a.type !== r.type && (a.options(r.config, !1), (a._needUpdateText = !0)), !f && a.setType(r.type))
                            : ((r.config.defaultMinorTick = p), b._ticks.push((a = new cu(this, n, r.config, r.type))));
                        a.validate();
                    }
                    c = 0;
                    for (q = b._ticks.length; c < q; c++) (a = b._ticks[c]), b.isTransitioning && !a.invalid ? a.px(k(l || b.viewStatePrev), k(m, a.value())) : a.px(k(m, a.value()));
                    b._ticks = sa(b._ticks, function (a) {
                        return z(a._value[0], a._value);
                    });
                    b._ticks = sa(b._ticks, function (a) {
                        return a._isRange && "custom" === a.type ? 2 : 1;
                    });
                    g = !1;
                    c = f = 0;
                    for (q = b._ticks.length; c < q; c++) (a = b._ticks[c]), (k = b.tickVisible(a.value())) && f++, !g && k ? (g = a.isFirst = !0) : (a.isFirst = !1);
                    100 < f &&
                        ((g = "category" === b.type), (k = !!N(b.currentOptions, ["scale", "interval"])) || g) &&
                        ((f = { data: [b.prefix, f], container: this.chart.getWrapper() }), k && !g ? Ma.emit("tip", b.id, "time" === b.type ? "manyTicksTime" : "manyTicks", f) : g && Ma.emit("tip", b.id, "manyTicksCat", f));
                }
                return this;
            };
            c.prototype.resetTicksLabels = function () {
                w(this._ticks, function (a) {
                    delete a._formattedText;
                });
            };
            c.prototype.invalidateTicks = function () {
                for (var a = this._ticks, c = 0, e = a.length; c < e; c++) a[c].invalidate();
                return this;
            };
            c.prototype.findTick = function (a, c) {
                for (var b = 0, d = this._ticks.length; b < d; b++) {
                    var g = this._ticks[b],
                        h = g.value(),
                        k = a;
                    if ((h.pop ? h[0] === k[0] && h[1] === k[1] : h === k) && (c ? g.type === c : 1)) return g;
                }
            };
            c.prototype.findTickInfo = function (a) {
                var b = this,
                    c = {};
                if (t(a.v)) {
                    var f = "custom",
                        g = b.getCustomTicks();
                    c = S(g, { value: a.v });
                    c = A({}, c);
                    delete c.value;
                } else {
                    var h = b.tickPositions,
                        k = h.minor || [],
                        l = h.custom || [],
                        m = b.originValue;
                    g = xe(b.pointTicks.values || [], a);
                    if (-1 < g) {
                        f = "custom";
                        c = b.pointTicks;
                        var n = c.points[g];
                        c = c.configs[g];
                        c.target = function () {
                            return n && n();
                        };
                    } else
                        -1 < xe(l, a)
                            ? ((f = "custom"),
                              (g = b.getCustomTicks()),
                              (c = S(g, function (c) {
                                  c = c.value;
                                  var d = b.toPosition(c);
                                  "category" === b.type && "string" === typeof c && (d = [d - 0.5, d + 0.5]);
                                  return d.pop ? Qe(d, a) : d === a;
                              })),
                              (c = A({}, c)))
                            : t(m) && a === m
                            ? (f = "origin")
                            : -1 < xe(h, a)
                            ? (f = "major")
                            : -1 < xe(k, a) && (f = "minor");
                }
                return { type: f, config: c };
            };
            c.prototype.getTicksPos = function (a) {
                void 0 === a && (a = this.viewState);
                !this.tickPositions && this.setTickPositions();
                return hb(this.tickPositions.all, function (b) {
                    return a.valToLin(b);
                });
            };
            c.prototype.add = function (a) {
                this.isAdded || ((this.isAdded = !0), !1 !== this.isVisible && ((this.parentLayoutItem = (a = this.getParentPanel(a)) || this.renderer), this.rootPanel.add(a)));
                return this;
            };
            c.prototype.crosshairXy = function (a, c, e) {
                var b = this.prefix,
                    d = this.isHoriz ? 0 : 1;
                a = a["x" === b ? d : "y" === b ? d : -1];
                e = this.crossLinToVal(a, e);
                t(a) && this.crosshair(c ? A({ value: e }, c) : { value: e });
                return e;
            };
            c.prototype.crossLinToVal = function (a, c) {
                var b = this.syncAxis || this,
                    d = this.options("crosshair");
                a = this.linToVal(a);
                return d.snapToData || ("x" === this.prefix && !1 !== d.snapToData) || c ? NA(b.dataPositions.toArray(), a) : a;
            };
            c.prototype.crosshair = function (a) {
                var b = this;
                clearTimeout(b.crossTimeout);
                if (b.isVisible && !b.isRadial && !b.childAxes.length) {
                    var c = (b.crossTicks = b.crossTicks || []),
                        f = function (a) {
                            wf(b, a);
                            a.render(b.viewState, { onCa: !0, animation: !1 });
                            a.render(b.viewState, { onCa: !1, animation: !1 });
                        },
                        g = b.options("crosshair");
                    if (t(a) && !0 === g.enabled) {
                        if (((a = a.pop ? a : [a]), t(a[0])))
                            var h = a.map(function (a, b) {
                                    return A({ key: b }, g, a);
                                }),
                                k = !0;
                    } else h = [];
                    Ub(
                        h,
                        c,
                        function (a) {
                            a = new cu(b, a.value, A({ internal: !0 }, a), "custom");
                            b.crossTicks.push(a);
                            f(a);
                        },
                        function (a, b) {
                            b.options(a, !1);
                            f(b);
                        },
                        function (a) {
                            pb(b.crossTicks, a);
                            a.remove();
                        },
                        function (a) {
                            return a.key;
                        },
                        function (a) {
                            return a.currentOptions.key;
                        }
                    );
                    b.rootPanel.refresh();
                    k &&
                        (b.crossTimeout = setTimeout(function () {
                            b.crosshair();
                            b.chart.series().each(function (a) {
                                return a.visualizer.hideHalo();
                            });
                        }, 8e3));
                    return a && 1 === a.length ? a[0] : a;
                }
            };
            c.prototype.setDataRange = function (a) {
                this.min = a[0];
                this.max = a[1];
                a = this.range = { min: a[0], max: a[1] };
                this.unZoomedRange = Oa(a);
                this._isMapHost = !0;
            };
            c.prototype.setMapRange = function (a, c) {
                this.min = Math.min(a[0], c[0]);
                this.max = Math.max(a[1], c[1]);
                this.range = { min: c[0], max: c[1] };
                this.unZoomedRange = { min: this.min, max: this.max };
                this.zoomLimit = Math.max(a[1], c[1]) - Math.min(a[0], c[0]);
                this.zoomRange = this.zoomRange || [Math.min(a[0], c[0]), Math.max(a[1], c[1])];
                this._isMapHost = !0;
            };
            c.prototype.setStaticRange = function (a, c) {
                this._isDragHost = !0;
                this.min = a[0];
                this.max = a[1];
                this.range = { min: c[0], max: c[1] };
                this.zoomLimit = this._sizeMetrics.length = c[1] - c[0];
                this.zoomRange = this.zoomRange.length ? this.zoomRange : c;
                this.linToVal = function (a) {
                    return a;
                };
            };
            c.prototype.zoom = function (a, c, e) {
                var b = !1;
                b = !this.isZoomed;
                var d = this._isDragHost ? [this.min, this.max] : this.unZoomedRange,
                    h = this._isDragHost ? this.zoomRange : [this.range.min, this.range.max];
                d = d || { min: this.min, max: this.max };
                var k = 1 < la(d.min, d.max) ? 2 : 5,
                    l = function (a, b) {
                        return 0 === ts(a[0], b[0], k) && 0 === ts(a[1], b[1], k);
                    };
                t(a) || t(c)
                    ? this.canZoom(a, c) &&
                      ((c = G(du(a, c), 2)),
                      (a = c[0]),
                      (c = c[1]),
                      (this._formatInfo = void 0),
                      a !== c &&
                          ((this.zoomRange = [a, c]),
                          (this.isZoomed = !0),
                          this._isDragHost || (b && (this.unZoomedRange = { min: this.range.min, max: this.range.max }), (d = this.unZoomedRange), (this.isZoomed = !l([a, c], [d.min, d.max]))),
                          "map" === this.options("type") ? ((this.range.min = a), (this.range.max = c)) : this._isDragHost || this.setRange(!1, e),
                          (b = !0)))
                    : ((this.isDragging = this.isZoomed = !1), (this.zoomRange = []), (this.isZoomed = !1), this.setRange(!0, e));
                b = !l(this.isZoomed ? this.zoomRange : [this.range.min, this.range.max], h);
                !this._isDragHost &&
                    w(this.serList, function (a) {
                        return a.seriesDirty.pos(!0);
                    });
                !1 !== e && this.chart.redraw(e);
                a = this.chartArea;
                b && a.zoomUpdated();
                return b;
            };
            c.prototype.drag = function (a) {
                var b = this.zoomRange.slice(0),
                    c = this.unZoomedRange ? this.unZoomedRange : this;
                c = [c.min, c.max];
                this.isDragging = !0;
                b[0] + a < c[0] && (a = c[0] - b[0]);
                b[1] + a > c[1] && (a = c[1] - b[1]);
                b[0] += a;
                b[1] += a;
                if (a) return this._isDragHost ? (this.zoomRange = b) : this.zoom(b[0], b[1], !1), !0;
            };
            c.prototype.canDrag = function () {
                if (this._isDragHost) {
                    var a = this.zoomRange.slice(0),
                        c = this.unZoomedRange ? this.unZoomedRange : this;
                    return la(a[0], a[1]) < la(c.min, c.max);
                }
                return this.isZoomed;
            };
            c.prototype.canZoom = function (a, c) {
                c = G(du(a, c), 2);
                a = c[0];
                c = c[1];
                if (this._isMapHost || (this._isDragHost && (this.min !== this.range.min || this.max !== this.range.max))) return !0;
                if (a !== c) {
                    var b = this.zoomLimit;
                    "object" === I(this.zoomLimit) && "time" === this.type && (b = lg(this.zoomLimit));
                    if (la(c, a) > b) return !0;
                }
            };
            c.prototype.destroyVisuals = function () {
                w(this.rootVisuals, function (a) {
                    return a && a.destroy();
                });
                w(this._ticks.slice(0), function (a) {
                    return a && a.destroy();
                });
                this._ticks = [];
                this.rootPanel.destroy();
                this.rootVisuals = this.rootPanel = void 0;
            };
            c.prototype.destroy = function () {
                a.prototype.destroy.call(this);
                var b = this.chartArea._axes.indexOf(this);
                -1 < b && this.chartArea._axes.splice(b, 1);
            };
            c.prototype.resetVisuals = function () {
                this.isAdded = !1;
                this._duV = void 0;
                this.destroyVisuals();
                this.setRootVisuals();
                this.initSizeMetrics();
                this.chartArea.rootPanel.refresh();
            };
            c.prototype.getVisualTargets = function (a, c) {
                void 0 === a && (a = {});
                void 0 === c && (c = !1);
                var b = this.rootVisuals,
                    d = this.chartArea.rootVisuals,
                    g = d.axisFront,
                    h = d.axisBehind,
                    k = d.axisBehindAll,
                    l = z(a.onTop, this.options("onTop")),
                    m = z(C(a, "label.onTop"), l);
                a = z(C(a, "gridLine.onTop"), l) ? d.gridLinesFront : d.gridLinesBehind;
                d = b = c = c ? b.mainRng : b.main;
                g && h && ((c = l ? g : h), (b = m ? g : h), (d = m ? g : k));
                return { tick: c, label: b, line: d, grid: a };
            };
            return c;
        })(jc),
        Kf = (function (a) {
            function c(b, d) {
                d = a.call(this, b, d) || this;
                d.items = b;
                d.kindObject = c;
                d.markers = Xa(wb, Sz(d), xc);
                d.ticks = Xa(wb, Rz(d), xc);
                return d;
            }
            K(c, a);
            return c;
        })(wb),
        xD = (function (a) {
            function c(b, c) {
                b = a.call(this, b, c, "sp") || this;
                b.possibleKeys = ["spValue"];
                b.initFP();
                b.options(c, !1);
                return b;
            }
            K(c, a);
            c.prototype.init = function () {
                for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
                this.prefix = G(a, 3)[1];
                this.defaultContextOptions = {};
                this.updateOptions = { animation: this.chart.options("animation") };
            };
            c.prototype.defaultOptions = function () {
                return A(a.prototype.defaultOptions.call(this), { crosshair: { enabled: !0 } });
            };
            c.prototype.renderGridLines = function (a, c) {};
            return c;
        })(jj),
        gu = (function (a) {
            function c(b, c, e) {
                var d = a.call(this, b.chart, e) || this;
                d.parent = b;
                d.palette = c;
                d._axes = [];
                d.isHoriz = z(e.isHoriz, "horizontal" === b.layoutDirection);
                b = A({ orientation: d.isHoriz ? "bottom" : "right", anchorWidth: 0 }, C(c.currentOptions, "colorBar.axis"));
                b = d.axis = new xD(d, b);
                d._axes.push(b);
                d.initFP();
                b.chartArea = d;
                b.setRootVisuals();
                b.isHoriz = d.isHoriz;
                d.collisionManager = new Tm(d);
                return d;
            }
            K(c, a);
            c.prototype.getAxisMarkerVisualTargets = function () {
                var a = this.rootVisuals;
                return { behind: a.axisMarkersFront, front: a.axisMarkersFront };
            };
            c.prototype.requestLegend = function (a) {
                return null;
            };
            c.prototype.initFP = function () {
                var a = this;
                this.axes = Xa(
                    Kf,
                    function () {
                        return a._axes;
                    },
                    function (a) {}
                );
            };
            c.prototype.getBarSize = function (a) {
                var b = this.palette.options("colorBar") || {},
                    c;
                b = this.isHoriz ? (this.swatchSize = [z(b.length, eu), z(b.width, fu)]) : (this.swatchSize = [z(b.width, fu), z(b.length, eu)]);
                if ((a = this.updateChartBox(a))) {
                    var f = [0, 0];
                    if ((c = this.overflows)) f = [c[1] + c[3], c[0] + c[2]];
                    this.swatchSize = [Math.min(b[0], a[2] - f[0]), Math.min(b[1], a[3] - f[1])];
                }
                return this.swatchSize;
            };
            c.prototype.updateChartBox = function (a) {
                a && t(a[2]) && t(a[3]) && (this.chartBox = rb(a, 10));
                return this.chartBox;
            };
            c.prototype.pointOver = function (a) {
                var b = this.axis,
                    c = this.palette,
                    f = c.getPointValue(a.currentOptions, a.series);
                null === f || Ha(f) || ((c = c.getValueColor(f)), b.crosshair(Sm({ point: a, yVal: f, color: c })));
            };
            c.prototype.pointOut = function () {
                this.axis.crosshair();
            };
            c.prototype.getUserWH = function () {
                var a = this.isHoriz,
                    c = this.palette.options("colorBar") || {};
                return [a ? c.length : c.width, a ? c.width : c.length];
            };
            c.prototype.measure = function (a, c) {
                var b = this.axis;
                this.setRootVisuals();
                var d = this.palette.axisConfig,
                    g = this.getBarSize(a);
                this.axisSize = void 0;
                if (d) {
                    b.range = d;
                    b.fitRange = !0;
                    b.setViewState();
                    this.axisSize = b.measure(g);
                    d = this.updateOverflows();
                    var h = this.getBarSize(a);
                    if (h[0] !== g[0] || h[1] !== g[1]) (g = h), (this.axisSize = b.measure(g));
                    g = this.size = this.isHoriz ? [g[0] + d[0], g[1] + this.axisSize[3] + d[1]] : [g[0] + this.axisSize[2] + d[0], g[1] + d[1]];
                    b = g[0] > a[2];
                    g = g[1] > a[3];
                    if (b || g) if (((d = this.getUserWH()), (!c && b && !t(d[0])) || (g && !t(d[1])))) return this.measure(a, !0);
                }
                return this.size;
            };
            c.prototype.renderAxis = function () {
                var a = this.contentRect;
                this.axis.render(a).renderOnCa(a);
            };
            c.prototype.patchAxis = function () {
                var a = this,
                    c = a.rootVisuals,
                    e = a.axis;
                e.isAdded ||
                    ((c = [c.topAxes, c.rightAxes, c.bottomAxes, c.leftAxes][a.axis.sideIndex()]),
                    e.isVisible &&
                        e.rootPanel &&
                        (e.add(c),
                        c.on("pixelCorrection", function () {
                            a.renderAxis();
                        }),
                        e.rootPanel.isPatched ||
                            e.rootPanel.await(function () {
                                return a.renderAxis();
                            })));
            };
            c.prototype.render = function (a) {
                var b = this.rootVisuals;
                a = this.getBarSize(a);
                this.rootPanel.attr({ width: this.size[0], height: this.size[1] });
                this.contentRect = { x: 0, y: 0, width: a[0], height: a[1] };
                this.patchAxis();
                var c = this.axis.options("scale.invert");
                c = { stops: this.palette.getTraditionalStops(null, !0), angle: this.isHoriz ? (c ? 180 : 0) : c ? 90 : -90 };
                c = oc(c);
                b.colorContent.attr({ fill: c, width: a[0], height: a[1] });
                return this;
            };
            c.prototype.updateOverflows = function () {
                var a = Br(this);
                this.overflows = a.slice(0);
                return [a[1] + a[3], a[0] + a[2]];
            };
            c.prototype.setRootVisuals = function () {
                var a = this.renderer;
                if (!this.rootVisuals) {
                    var c = (this.rootVisuals = Hl(a).build({ outline: { width: 0 }, axis: { offset: 0.5 }, content: { holder: { stretch: !1 } }, axisMarkers: !0, overflow: !0 }));
                    c.colorContent = a.rect().add(c.dataContent);
                    this.rootPanel = c.mainStacks;
                }
                return this;
            };
            c.prototype.destroy = function () {
                a.prototype.destroy.call(this);
                this.axis.destroy();
            };
            return c;
        })(jc),
        fu = 25,
        eu = 300,
        ye = function (a) {
            return a && "Series" === a.kind;
        },
        ze = function (a) {
            return a && "Point" === a.kind;
        },
        yD = (function (a) {
            function c(b, c, e) {
                var d = a.call(this, b.chart, C(c.currentOptions, "legendEntry") || {}, [b, c]) || this;
                d.legend = b;
                d.target = c;
                d.sortOrderValue = e;
                d.rowVisuals = [];
                d.textVisualsRef = [];
                d.state = "";
                d.icons = {};
                d.legend = b;
                d.bindEvents();
                d.optionsApplied();
                return d;
            }
            K(c, a);
            c.prototype.init = function () {
                for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
                a = G(a, 2);
                c = a[1];
                this.legend = a[0];
                this.target = c;
            };
            c.prototype.defaultOptions = function () {
                return A(A({ set: 0, checkbox: { color: "#555555", size: 12 } }, this.legend.currentOptions.defaultEntry), this.target.currentOptions.legendEntry);
            };
            c.prototype.options = function (b, c) {
                var d = this.optionsGetter(b);
                if ("NotGetter" !== d) return d;
                var f = z(C(b, "checkbox.checked"), C(b, "checkbox_checked")),
                    g = t(f),
                    h = C(this.currentOptions, "checkbox.checked");
                d = t(h) && !t(C(this.userOptions, "checkbox.checked")) && !g;
                this.isCustom && !this.legend._isSyncing && this.chart.isRendered && this._onUserOptions && this._onUserOptions(b);
                var k = a.prototype.options.call(this, b, c);
                d ? Z(this.currentOptions, "checkbox.checked", h) : g && this.chart.isRendered && !1 !== c && (this.updateCheckbox(f), this.checkbox && this.checkbox.refresh());
                "EntryWrapper" === this.target.kind && (this.target.options({ legendEntry: b }, c), (this.legend.isDirty = !0), !1 !== c && this.chart.chartAreaSet.reflow(void 0, !1, !0));
                this.optionsApplied();
                this.afterUpdate(c);
                return k;
            };
            c.prototype.optionsApplied = function () {
                this.userOptions.checkbox && delete this.userOptions.checkbox.checked;
                this.chart.triggerOptionsApplied("legendEntry", this);
            };
            c.prototype.render = function (a) {
                this.updateStyles(!0);
                return this;
            };
            c.prototype.zoomTo = function () {
                this.target && this.target.zoomTo && this.target.zoomTo();
                return this;
            };
            c.prototype.refreshOptions = function (a) {
                var b = this.target.options("legendEntry");
                b && this.options(b, a);
            };
            c.prototype.getBounds = function (b) {
                var c = this;
                if (b) return a.prototype.getBounds.call(this, b);
                var e = [];
                w(this.rowVisuals, function (a) {
                    e.push(c.getBounds(a));
                });
                return Ea(e);
            };
            c.prototype.updateTrackerPosition = function () {
                var a = this.getBounds();
                a && this.trackerElement.attr(Gc(rb(a, -2)));
            };
            c.prototype.updateCheckbox = function (a) {
                if (this.checkbox) {
                    var b = this.target,
                        c = this.checkbox.attrs.name;
                    a = "" + Yr(b) + (z(a, Zr(b)) ? "" : "-blank");
                    a !== c && this.checkbox.attr({ name: a });
                }
                return this;
            };
            c.prototype.setRootVisuals = function () {
                return this;
            };
            c.prototype.bindEvents = function () {
                var a = this,
                    c = a.chart,
                    e = a.target,
                    f;
                if (!a.trackerElement) {
                    var g = "pointer",
                        h = a.hasUserEvent("click");
                    (f = a.options("cursor")) ? (g = f) : ze(e) ? e.series.options("pointSelection") || h || e.series.chartArea.canZoom() || (g = "default") : ye(e) || h ? "EntryWrapper" !== e.kind || h || (g = "default") : (g = "default");
                    e = a.options("initialCursor");
                    !c.isRendered && e && (g = e);
                    c = a.trackerElement = a.trackerElement || a.renderer.renderer.rect().attr({ cursor: g, fill: "rgba(255,255,255,0)", zIndex: 1 }).add(c.rootVisuals.front);
                    c.on("mouseover", function (b) {
                        return a.mouseover(b);
                    });
                    c.on("mouseout", function (b) {
                        return a.mouseout(b);
                    });
                    c.on("vclick", function (b) {
                        return a.click(b);
                    });
                }
            };
            c.prototype.mouseover = function (a) {
                var b = this,
                    c = b.legend,
                    f = b.target,
                    g = ye(f),
                    h = ze(f),
                    k = h || g,
                    l = b.chart.ctManager,
                    m = l.isType("map"),
                    n = l.isType("calendar");
                l = "select" === f._state;
                c = c.chart.chartAreas(0);
                var p = c.debounce;
                a = "touchend" === a.type;
                m = Ul(b) && !m && !n;
                n = function () {
                    p.defer(
                        "mute",
                        function () {
                            Ol(f, "", Nl(b));
                        },
                        36
                    );
                };
                c.resetTimers();
                if (!1 !== b.triggerUser("mouseOver", f)) {
                    if (f.mouseOver) {
                        if (k && m)
                            if ((!l && f.setState(""), a && b.chart.highlighted === f)) p.run("unmute") || Qb(b.chart);
                            else {
                                n();
                                var q = !0;
                            }
                    } else if (g && m)
                        if (f.isVisible) n(), (q = !0);
                        else var r = !0;
                    else m && !h && (r = !0), !l && f.setState("hover");
                    b.setState("hover");
                    r
                        ? q &&
                          b.chart.touched() &&
                          p.defer(
                              "unmute",
                              function () {
                                  Qb(f.chart);
                              },
                              2e3
                          )
                        : p.clear("unmute");
                }
            };
            c.prototype.mouseout = function (a) {
                var b = this.target,
                    c = ye(b),
                    f = ze(b);
                a = "select" === b._state || "select" === b.state;
                !1 !== this.triggerUser("mouseOut", b) &&
                    ((c || f) &&
                        Ul(this) &&
                        ((c = (f ? b.series.chartArea : b.chartArea).debounce),
                        c.clear("mute"),
                        c.defer(
                            "unmute",
                            function () {
                                Qb(b.chart);
                            },
                            230
                        )),
                    b.setState && !a && b.setState(""),
                    this.updateStyles());
            };
            c.prototype.click = function (a) {
                var b = this,
                    c = b.target,
                    f = "touchend" === a.type,
                    g = ze(c),
                    h = (g ? c.series.chartArea : c.chartArea) || b.chart.chartAreaSet.items[0],
                    k,
                    l = ye(c) || g;
                f && h && h.debounce.clear("touchTimeout");
                var m = function (a) {
                    return Z(b.currentOptions, "checkbox.checked", a);
                };
                if (b.checkbox && !l) {
                    var n = m(!C(b.currentOptions, "checkbox.checked"));
                    b._onUserOptions = function (a) {
                        a = z(C(a, "checkbox.checked"), C(a, "checkbox_checked"));
                        t(a) && (k = !0);
                    };
                }
                if (!1 !== c.triggerUser("legendEntryClick") && !1 !== b.triggerUser("click", c)) {
                    if (l) {
                        l = b.chart.ctManager;
                        n = l.isType("map");
                        l = l.isType("calendar");
                        m = ye(c);
                        var p = c.isVisible,
                            q = b.chart.options("axisToZoom");
                        q = q && "none" !== q;
                        Ul(b) &&
                            (f && g && !b.checkbox
                                ? (b.mouseover(a),
                                  h.debounce.defer(
                                      "touchTimeout",
                                      function () {
                                          h.clickOff();
                                      },
                                      8e3
                                  ))
                                : !1 !== p && Qb(c.chart));
                        c.visible && !l && !n && m && c.visible();
                        c.zoomTo && (q || l) && c.zoomTo();
                        this.chart.resetTimers();
                    } else b.checkbox && (b.updateCheckbox(n), b.checkbox.refresh(), m(n));
                    b.checkbox && c.click && c.click({ eventArgs: a, accumulate: !!b.checkbox });
                } else b._onUserOptions && !k && m(!C(b.currentOptions, "checkbox.checked"));
                b._onUserOptions = void 0;
                a.preventDefault();
            };
            c.prototype.updateStyles = function (a) {
                var b = this.target,
                    c = this.chart.ctManager;
                c.isType("map");
                var f = C(this.currentOptions, "checkbox.checked");
                c = c.isType("calendar");
                f = t(f) || (this.checkbox && c);
                this.targetVisible = z(b.isVisible, !0);
                -1 < this.legend.getTemplateColumns().indexOf("%icon") && this.styleIconVisual();
                f && this.updateCheckbox(z(C(this.currentOptions, "checkbox.checked"), this.targetVisible));
                !1 === this.targetVisible ? this.setState("hidden", a) : this.setState("", a);
            };
            c.prototype.setColumns = function () {
                var a = this,
                    c = this,
                    e = c.currentOptions,
                    f = c.legend,
                    g = e.set,
                    h = f.getTemplateColumns(g),
                    k = c.target;
                c.refreshOptions(!1);
                var l = C(c.userOptions, "checkbox.enabled");
                C(f.currentOptions, "defaultEntry.checkbox.enabled");
                var m = f.checkboxManual ? l : Tz(k) ? !1 !== l : l;
                if (f.isVisible) {
                    var n = qc(e);
                    delete n.val;
                    n.autoWrap = "none";
                    var p = f.getColumnAlignments(g);
                    c.rowVisuals = B(h, function (b, d) {
                        var f = b.toLowerCase(),
                            g;
                        if ("%checkbox" === f)
                            (g = c.rowVisuals[d]) ||
                                (m
                                    ? ((d = A({ fill: e.checkbox.color }, e.checkbox, { name: "" + Yr(k) + (Zr(k) ? "" : "-blank") })),
                                      (g = b = c.renderer.panel({ yAlignment: "center" })),
                                      (c.checkbox = c.renderer.icon(d)),
                                      c.checkbox.add(b),
                                      (d = C(e, "checkbox.checked")),
                                      t(d) && c.updateCheckbox(d))
                                    : (g = c.renderer.panel({})));
                        else if ("%icon" === f)
                            if ((g = c.rowVisuals[d])) (c.iconVisual = g = a.getIconVisual()), (g = g.root);
                            else {
                                c.iconVisual = g = a.getIconVisual();
                                c.rootVisuals = { icon: g };
                                var h = g.base,
                                    l = g.extra;
                                g.root.attr({ width: a._iconSize ? c._iconSize[0] : e.iconWidth, height: a._iconSize ? c._iconSize[1] : 10, xAlignment: "center", yAlignment: "middle" });
                                g = g.root;
                                g.on("pixelCorrection", function () {
                                    var a = z(C(h, "data.attrs.stroke-width"), 1);
                                    a = nd(g, [0, 0], a);
                                    h && h.attr({ translate: a });
                                    l && l.attr({ translate: a });
                                });
                            }
                        else
                            "%name" === f ? (b = c.options("name")) : "%value" === f && (b = c.options("value")),
                                "function" === typeof b && (b = b(k)),
                                c.options("attributes") && (b = Gg({ attr: b }, c, A({ mode: "AttrOnly" }, c.chart.getFormatInfo()))),
                                (b = k.replaceTokens(b)),
                                (f = A({ xAlignment: p[d], yAlignment: "middle" }, n)),
                                (g = c.rowVisuals[d]) ? (f.val = b) : ((g = c.renderer.textStack(b)), c.textVisualsRef.push(g)),
                                (!1 === k.isVisible && k.chart.isRendered) || g.attr(f);
                        (!1 === k.isVisible && k.chart.isRendered) || c.refreshOptions(!1);
                        return g;
                    });
                }
                return this;
            };
            c.prototype.getIconVisual = function () {
                var a = this.currentOptions,
                    c = this.target,
                    e = a.iconWidth,
                    f = a.icon,
                    g = I(f);
                c = c.getIconVisual([this._iconSize ? this._iconSize[0] : e, this._iconSize ? this._iconSize[1] : 10], c, this);
                this._iconSize = null;
                if (f) {
                    var h = c.base || c.extra;
                    h && ((e = "object" === g ? ("none" === f.name ? 10 : z(f.size, f.width, e)) : "string" === g && "none" === f ? 10 : e), (a = Ld(a.icon, 0, 0, e, e))) && (h.attr({ d: a }), (this._iconSize = [e, e]));
                }
                return c;
            };
            c.prototype.styleIconVisual = function () {
                var a = this.currentOptions,
                    c = this.getIconVisual();
                this.target.styleIconVisual(c, this);
                c = this.getIconVisual();
                if ((a = a.icon)) if ((c = c.base || c.extra)) (a = fc(a)), c.attr(a);
            };
            c.prototype.setState = function (a, c) {
                if (a !== this.state || c) {
                    var b = A({}, this.currentOptions);
                    "normal" !== a && (c = this.options("states." + a)) && A(b, c);
                    var d = qc(b);
                    delete d.val;
                    d.autoWrap = "none";
                    c = this.legend.rootPanel;
                    b = c.getBbox();
                    w(this.textVisualsRef, function (a) {
                        a.attr(d);
                        a.isPatched && a.patch();
                    });
                    var g = c.setPreliminarySize(!0).getBbox();
                    (g.width === b.width && g.height === b.height) || c.refresh();
                    this.state = a;
                }
            };
            c.prototype.remove = function (a) {
                var b = this.legend;
                this.destroy();
                b.syncCustomEntries();
                b.isDirty = !0;
                !1 !== a && b.chart.chartAreaSet.reflow(!1, !1, !0);
            };
            c.prototype.hideTracker = function () {
                this.trackerElement && this.trackerElement.hide(!0);
            };
            c.prototype.destroy = function () {
                var a = this.legend,
                    c,
                    e = pb(this.legend.items, this);
                if ((c = S(a._userEntries, { id: this.id }))) pb(a._userEntries, c), pb(a.userOptions.customEntries, c), pb(a.currentOptions.customEntries, c);
                -1 < e && (this.legend.isDirty = !0);
                this.textVisualsRef = [];
                w(this.rowVisuals, function (a) {
                    return a.destroy();
                });
                this.trackerElement && this.trackerElement.destroy();
            };
            return c;
        })(jc),
        hu = [120, 70],
        zD = (function (a) {
            function c() {
                var b = (null !== a && a.apply(this, arguments)) || this;
                b.isDirty = !0;
                b.fillShading = "box";
                b.items = [];
                b.spItems = [];
                b.spMode = "none";
                b._aligmentsCache = [];
                b._customEntries = [];
                return b;
            }
            K(c, a);
            c.prototype.init = function (a) {
                this.alignTo = a;
                this.kind = "Legend";
                this.updateSp();
                this.initFP();
            };
            c.prototype.initFP = function () {
                var a = this;
                a.entries = Xa(
                    wb,
                    function () {
                        return a.items;
                    },
                    function () {
                        return 0;
                    },
                    {
                        push: function (b, c) {
                            a._userEntries = a._userEntries || [];
                            a._userEntries.push(b);
                            a.syncCustomEntries();
                            a.isDirty = !0;
                            !1 !== c && a.chart.chartAreaSet.reflow(void 0, !1, !0);
                        },
                    }
                );
            };
            c.prototype.options = function (b, c) {
                var d = this.optionsGetter(b);
                if ("NotGetter" !== d) return d;
                this.isDirty = !0;
                a.prototype.options.call(this, b, !1);
                !1 !== c && this.chart.chartAreaSet.reflow(void 0, !1, !0);
                this.afterUpdate(c);
                return this;
            };
            c.prototype.updateSp = function () {
                var a = this.chart,
                    c,
                    e = a.palette && !1 !== C(a.palette, "colorBar.visible");
                (a = this.smartPalette = "object" === I((c = a.palette)) && e ? a.getSmartPalette(c) : void 0) ? (this.spMode = a.mode) : !1 === e && (this.spMode = "colorBar");
                this.colorBar && ("colorBar" !== this.spMode ? (this.colorBar.destroy(), (this.colorBar = void 0)) : this.smartPalette.destroyEntries());
                return this;
            };
            c.prototype.allowEntries = function () {
                this.chart.ctManager.isType("calendar");
                return !0;
            };
            c.prototype.setOptions = function () {
                a.prototype.setOptions.call(this);
                this.isVisible = !1 !== this.currentOptions.visible;
                this.setLayoutDirection();
                this.updateSp();
                var b = (this._userEntries = this.currentOptions.customEntries || []);
                w(b, zb);
                return this;
            };
            c.prototype.defaultOptions = function () {
                var a = this.chart;
                a = a ? a.boxDefaults() : Cf();
                var c = a.label.style;
                return {
                    position: "right top",
                    fill: a.fill,
                    layout: "auto",
                    radius: a.radius,
                    boxPointerEvents: !1,
                    boxVisible: a.boxVisible,
                    corners: ["cut", "square", "cut", "square"],
                    outline: a.outline,
                    title: { label: { style: { fontSize: "13px" } } },
                    defaultEntry: { name: "%name", value: "%value", iconWidth: 20, style: { color: c.color, fontSize: "11px" }, states: { hidden: { style: { color: "#707070" } } } },
                    headerStyle: { color: c.color, fontSize: "12px", fontWeight: "normal" },
                    horizontalSpacing: 3,
                    margin: !1 === a.boxVisible ? 0 : 7,
                    template: "%value %icon %name",
                    name: "%name",
                    value: "%value",
                    shadow: z(a.shadow, !0),
                    sortOrder: 0,
                };
            };
            c.prototype.normalizeOptions = function (b, c) {
                b = a.prototype.normalizeOptions.call(this, b, c);
                t(b.width) && !t(b.maxWidth) && (b.maxWidth = b.width);
                return b;
            };
            c.prototype.contextOptions = function () {
                return A({}, this.defaultContextOptions || {}, C(this.chart, "typeContextOptions.legend") || {});
            };
            c.prototype.dependentOptions = function () {
                return [
                    {
                        option: "fill",
                        check: function (a) {
                            return a;
                        },
                        dependent: "margin",
                        value: 7,
                    },
                ];
            };
            c.prototype.defaultEntryOptions = function () {};
            c.prototype.pointOver = function (a) {
                this.colorBar && this.colorBar.pointOver(a);
            };
            c.prototype.pointOut = function () {
                this.colorBar && this.colorBar.pointOut();
            };
            c.prototype.setRootVisuals = function () {
                var a = this.currentOptions,
                    c = this.rootVisuals,
                    e = this.rootPanel;
                c ||
                    ((c = this.rootVisuals = { title: void 0, stack: void 0, background: void 0, grid: void 0 }),
                    (e = this.rootPanel = e || this.renderer.box()),
                    (e = c.stack = c.stack || this.renderer.panel({ type: "stack:y" }).add(e)),
                    (c.title = c.title || new Fi(this.chart, { text: "", margin: 3 }).add(e)),
                    (c.grid = c.grid || this.renderer.panel({ type: "grid", xAlignment: "center", cellSpacing: z(a.cellSpacing, 5) }).add(e)),
                    c.gridSp ||
                        ((c.gridSpDivider = this.renderer
                            .textStack("<hr>")
                            .attr({ xAlignment: "center", width: "100%", fontSize: 5, padding: [0, 5], suspend: !0 })
                            .visible(!1)
                            .add(e)),
                        (c.gridSp = this.renderer.panel({ type: "grid", xAlignment: "center", cellSpacing: z(a.cellSpacing, 5) }).add(e))));
                return this;
            };
            c.prototype.setAttribs = function () {
                var a = this.currentOptions,
                    c = a.margin;
                "position" === wr(a.position) && c && "number" === typeof c && (a.margin = this.getAdjustedMarginVal(c));
                a = Cg(a, this.fillShading);
                delete a.width;
                this.attribs = { bg: a };
                return this;
            };
            c.prototype.getAdjustedMarginVal = function (a) {
                var b = [0, 0, 0, 0];
                b[{ t: 2, r: 3, b: 0, l: 1 }[ur(this.options("position"))]] = a;
                return b;
            };
            c.prototype.measure = function (a) {
                this.render(t(a) ? Gc(a) : this.chart.renderer.rootBox);
                this.isMeasured = !0;
                return this.getLegendBoxWithMargins();
            };
            c.prototype.render = function (a) {
                var b = this,
                    c = b.currentOptions,
                    f = "vertical" !== b.layoutDirection,
                    g = b.rootPanel,
                    h = b.rootVisuals,
                    k = a ? ha(a) : void 0;
                if (a) {
                    a = qa(a);
                    var l = !0;
                } else a = {};
                b.updateSp();
                if (!l) return this;
                if (b.isDirty || a)
                    if (b.isVisible) {
                        g.visible(!0);
                        b.setTargetItems();
                        b.sortByInternalSortValue();
                        var m = "colorBar" === b.spMode && b.smartPalette,
                            n = 0 < b.entries().items.length,
                            p = m && n,
                            q = n && "ranges" === b.spMode;
                        h.grid.attr({ width: null, height: null });
                        b.setAttribs();
                        n = b.attribs;
                        var r = A({}, b.options("title.label"));
                        C(r, "text.length") && (r.text = b.chart.replaceTokens(r.text));
                        var u = void 0;
                        (u = C(r, "align")) && h.title.rootPanel.attr({ xAlignment: u });
                        h.title.options(r);
                        r = qa(a);
                        p && l && ((k = io(k, [0, -hu[f ? 1 : 0], 0, 0])), (r = Gc(k)));
                        var t = function (a, b) {
                            void 0 === b && (b = h.grid);
                            a.borders.length && b.attr({ borders: a.borders });
                            b.val(a.rows);
                        };
                        if (l && q) {
                            f = h.gridSp.getBboxArray();
                            l = h.gridSpDivider.getBboxArray();
                            f = [0, 0, 0, f[3] + h.title.getSize()[1] + l[3]];
                            a = jo(k, f);
                            h.gridSpDivider.suspend = !0;
                            f = b.getItemSets();
                            k = b.getItemBoxSets(a, f);
                            a = yv(k, { limitBox: a });
                            var v = [h.grid, h.gridSp],
                                y = 0,
                                z = a.ids;
                            w(f, function (a, c) {
                                a && t(b.getSetRows(a, z[Math.min(c, z.length - 1)]), v[c]);
                                a && y++;
                            });
                            h.gridSpDivider.visible(1 < y);
                            b.updateStyles();
                        } else {
                            b.allowEntries() && t(b.getRows());
                            k = void 0;
                            p = m ? r : b.chart.renderer.rootBox;
                            if (b.allowEntries() && l && ((k = Math.ceil(b.getApproximiteSplitFactor(p))), 1 < k)) for (t(b.getRows(k)); 1 < b.getApproximiteSplitFactor(p) && k < b.items.length; ) t(b.getRows(++k));
                            b.updateStyles();
                            m &&
                                l &&
                                (h.gridSpDivider.visible(0 < h.grid.childElements.length).setPreliminarySize(!0),
                                (k = h.grid.getBboxArray()),
                                (l = h.gridSpDivider.getBboxArray()),
                                (a = jo(ha(a), [0, 0, 0, k[3] + h.title.getSize()[1] + l[3]])),
                                (l = void 0),
                                !f && k[2] > 1.5 * a[3] && k[2] > hu[0] ? ((a = [0, 0, k[2], a[3]]), (l = !0)) : 140 < a[3] && (a[3] *= 0.8),
                                h.gridSp.val([[b.getSwatch(a, l)]]));
                        }
                        h.grid.attr({ width: c.width, height: c.height });
                        g.attr(n.bg);
                        b.isDirty = !1;
                    } else g.isPatched && (g.attr({ width: null, height: null }), g.visible(!1), g.refresh());
                b.chart.triggerOptionsApplied("legend", b);
                return this;
            };
            c.prototype.invalidate = function () {
                this.isDirty = !0;
                return this;
            };
            c.prototype.updateStyles = function () {
                this.isVisible &&
                    w(this.items, function (a) {
                        a.updateStyles();
                    });
                return this;
            };
            c.prototype.getApproximiteSplitFactor = function (a) {
                var b = this.rootVisuals,
                    c = this.currentOptions;
                this.rootPanel.update();
                var f = b.gridSp.getBbox(),
                    g = b.gridSpDivider.getBbox();
                b = b.stack.getBbox();
                b.height -= f.height + g.height;
                f = this.curRect = b;
                a = "vertical" === this.layoutDirection ? f.height / (a.height || f.height) : f.width / (a.width || f.width);
                a = Pj(a, 2);
                1 >= a && (c = z(c.maxWidth, c.width)) && (a = f.width / c);
                return a;
            };
            c.prototype.getRows = function (a) {
                void 0 === a && (a = 1);
                return this.getSetRows(this.getVisibleItems(), a);
            };
            c.prototype.getSetRows = function (a, c) {
                void 0 === c && (c = 1);
                var b = this,
                    d = [],
                    g = b.renderer,
                    h = b.currentOptions,
                    k = [],
                    l = [],
                    m = a.length && a[0].set,
                    n = function (a, b) {
                        return w(a, function (a) {
                            k.push(a);
                            l.push(b);
                        });
                    },
                    p = function (a, c) {
                        a ? (a.setColumns ? ((c = a.setColumns().rowVisuals), n(c, a.currentOptions.lineAbove ? [!0, !1, !1, !1] : null)) : n(a, null)) : n(b.getBlankEntry(m), null);
                    },
                    q = function () {
                        k.push(g.panel({ width: h.horizontalSpacing }));
                        l.push(null);
                    },
                    r = function (a) {
                        if (u && a) {
                            for (var c = 0; c < a; c++) p(b.getHeaderEntry()), c !== a - 1 && q();
                            d.push(k);
                            k = [];
                        }
                    },
                    u = void 0 !== b.getHeaderEntry(m),
                    t = Math.ceil(a.length / c);
                c = [];
                for (var v = 0, y = 0, z = a.length; y < z; y += t) {
                    var A = a.slice(y, y + t);
                    c.push(A);
                    v = Math.max(v, A.length);
                }
                if ("vertical" === b.layoutDirection)
                    for (r(c.length), a = 0; a < v; a++) {
                        k = [];
                        r = 0;
                        for (t = c.length; r < t; r++) p(c[r][a]), r !== t - 1 && q();
                        d.push(k);
                    }
                else
                    for (r(v), r = 0, t = c.length; r < t; r++) {
                        k = [];
                        for (a = 0; a < v; a++) p(c[r][a]), a !== v - 1 && q();
                        d.push(k);
                    }
                return { rows: d, borders: l };
            };
            c.prototype.setLayoutDirection = function () {
                var a = this.currentOptions,
                    c = a.layout;
                c = c || "auto";
                var e = { t: "horizontal", r: "vertical", b: "horizontal", l: "vertical" };
                a = ur(a.position) || "r";
                this.layoutDirection = ("auto" === c ? e[a[0]] : c) || "vertical";
            };
            c.prototype.getSwatch = function (a, c) {
                this.setLayoutDirection();
                var b = this.smartPalette;
                this.colorBar && b.id !== this.colorBar.palette.id
                    ? (this.colorBar.destroy(), (c = this.colorBar = new gu(this, b, { maxWidth: 400, maxHeight: 400, isHoriz: c })))
                    : (c = this.colorBar = this.colorBar || new gu(this, b, { maxWidth: 400, maxHeight: 400, isHoriz: c }));
                c.measure(a) && c.render();
                !this.allowEntries() &&
                    w(this.getVisibleItems(), function (a) {
                        a.hideTracker();
                    });
                return c.rootPanel;
            };
            c.prototype.setTargetItems = function () {
                var a = this.chart;
                this.smartPalette && (this._targetItems = "ranges" === this.spMode ? this.smartPalette.syncLegendEntries(this) : void 0);
                a.calIndexer && a.calIndexer.syncLegendEntries(this);
                this.syncCustomEntries();
            };
            c.prototype.getVisibleItems = function () {
                var a = z(this._targetItems, []).slice(0);
                this.allowEntries() && a.push.apply(a, H(this.items));
                a = $a(a);
                return ea(a, function (a) {
                    if (!1 !== a.options("visible")) return a;
                });
            };
            c.prototype.getItemSets = function () {
                var a = this.getVisibleItems(),
                    c = [];
                w(a, function (a) {
                    var b = z(a.currentOptions.set, 0);
                    c[b] ? c[b].push(a) : (c[b] = [a]);
                });
                return c;
            };
            c.prototype.getItemBoxSets = function (a, c) {
                var b = this,
                    d = b.rootPanel,
                    g = b.rootVisuals,
                    h = "vertical" !== b.layoutDirection;
                c = c || b.getItemSets();
                var k = [],
                    l = [g.grid, g.gridSp];
                w(c, function (c, e) {
                    if (c) {
                        e = l[e];
                        if (c) {
                            for (var f = [], g = Bv(c.length), m = void 0, n = 0, t = g.length; n < t; n++) {
                                var v = g[n],
                                    w = b.getSetRows(c, g[n]);
                                w.borders.length && e.attr({ borders: w.borders });
                                e.val(w.rows);
                                d.update();
                                w = e.getBboxArray();
                                if (h)
                                    if (w[2] < a[2]) {
                                        w.id = v;
                                        f.push(w);
                                        break;
                                    } else (m = w.slice(0)), (m.id = v);
                                else {
                                    if (w[2] > a[2]) {
                                        m = w.slice(0);
                                        m.id = v;
                                        break;
                                    }
                                    w[3] < a[3] ? ((w.id = v), f.push(w)) : ((m = w.slice(0)), (m.id = v));
                                }
                            }
                            !f.length && m.length && f.push(m);
                            c = f;
                        } else c = void 0;
                        c.length && k.push(c);
                    }
                });
                return k;
            };
            c.prototype.getBlankEntry = function (a) {
                var b = [],
                    c = this.renderer;
                a = this.getTemplateColumns(a).length;
                for (var f = 0; f < a; f++) b.push(c.panel());
                return b;
            };
            c.prototype.getColumnAlignments = function (a) {
                void 0 === a && (a = 0);
                var b = this,
                    c = !b.chart.chartAreaSet.series().length;
                if (b._aligmentsCache[a]) return b._aligmentsCache[a];
                var f = b.getTemplateColumns(a),
                    g =
                        (function () {
                            return S(b.items, function (a) {
                                return !a.isCustom;
                            });
                        })() ||
                        b.items[1] ||
                        b.items[0];
                if (!g) return [];
                var h = g.target,
                    k = function (a, c) {
                        var d = a.replace(",", ".");
                        a = parseFloat(d);
                        if (!a && 0 !== a) return !1;
                        a = a.toString();
                        if (a === d) return !0;
                        d = d.length - a.length;
                        for (var e = 1; e < b.items.length; e++) {
                            var f = b.items[e].target.replaceTokens(c);
                            a = parseFloat(f);
                            if (!a && 0 !== a) return !1;
                            a = a.toString();
                            if (f.length - a.length !== d) return !1;
                        }
                        return !0;
                    };
                f = B(f, function (a, b) {
                    if ("%icon" === a) return "center";
                    var d;
                    c ? (b = d = Gg({ attr: a }, g, g.chart.getFormatInfo())) : ((b = h.replaceTokens(a)), (d = h.replaceTokens({ token: a })));
                    var e = I(d);
                    "object" === e && ((e = "string"), (d = d.token || d));
                    "INVALID TOKEN" === d ? (e = "number") : "string" === e && k(b, a) && (e = "number");
                    return "string" === e ? "left" : "right";
                });
                return (b._aligmentsCache[a] = f);
            };
            c.prototype.getTemplateColumns = function (a) {
                var b = this.currentOptions.template,
                    c = !!b.pop,
                    f = t(a),
                    g = !0 === C(this.userOptions, "defaultEntry.checkbox.enabled");
                b = Vl(c ? b[f ? a : 0] : b, !1);
                c = this.userOptions.template;
                !a || (c && "%icon %name" !== c) || "ranges" !== this.spMode || (b = Vl("%icon %value", !1));
                S(b, function (a) {
                    return "%checkbox" === a.trim().toLowerCase();
                }) ||
                    (this.items.filter(function (a) {
                        return !0 === a.userOptions.checkbox || C(a.userOptions, "checkbox.enabled");
                    }).length
                        ? (b.unshift("%checkbox"), (this.checkboxManual = !0))
                        : (a = this.userOptions.customEntries) &&
                          a.filter(function (a) {
                              return !0 === a.checkbox || C(a, "checkbox.enabled");
                          }).length &&
                          (b.unshift("%checkbox"), (this.checkboxManual = !0)),
                    !ae(b, "%checkbox") && g && b.unshift("%checkbox"));
                g && this.checkboxManual && (this.checkboxManual = !1);
                return b;
            };
            c.prototype.getHeaderEntry = function (a) {
                var b = this,
                    c = b.currentOptions,
                    f = Vl(c.header, !1);
                if (f) {
                    var g = b.getTemplateColumns(a);
                    a = g.length;
                    var h = qc({ style: c.headerStyle });
                    f && f.length && f.length !== g.length && ((c = g.indexOf("%checkbox")), -1 < c && f.splice(c, 0, ""));
                    S(b.items, function (a) {
                        return !a.isCustom;
                    });
                    var k = b.getColumnAlignments();
                    c = [];
                    if (f.length === a)
                        return (c = B(f, function (a, c) {
                            -1 < a.indexOf("%") && (a = b.chart.replaceTokens(a));
                            a = b.renderer.textStack().val(a);
                            a.attr(A({ xAlignment: k[c] || "left", yAlignment: "bottom" }, h));
                            return a;
                        }));
                }
            };
            c.prototype.getLegendBoxWithMargins = function () {
                var a = this.rootPanel;
                1 < a.combinations.length ? this.rootPanel.refresh(!0) : this.rootPanel.setPreliminarySize(!0);
                return a.getGlobalBboxArray(!0);
            };
            c.prototype.positionUpdated = function (a) {
                w(this.items, function (a, b) {
                    a.updateTrackerPosition();
                });
            };
            c.prototype.addEntry = function (a, c, e) {
                void 0 === c && (c = 0);
                var b;
                a.legend = this;
                e && (!t((b = e.replaceIndex)) || 0 > b) && (b = this.items.indexOf(e));
                a = new yD(this, a, c);
                -1 < b ? (this.items.splice(b + 1, 0, a), (e.replaceIndex = b + 1)) : this.items.push(a);
                this.sortByInternalSortValue();
                this.isDirty = !0;
                return a;
            };
            c.prototype.syncCustomEntries = function () {
                var a = this,
                    c = Qt.custom;
                a._isSyncing = !0;
                Ub(
                    a._userEntries,
                    a._customEntries,
                    function (b) {
                        var d = a.addEntry(new Qm(a.chart, { legendEntry: b }));
                        t(C(b, "checkbox.checked")) && delete b.checkbox.checked;
                        d.isCustom = !0;
                        d.sortOrderValue = c++;
                        return d;
                    },
                    function (a, b) {
                        return b.options(a, !1);
                    }
                );
                w(a._customEntries, function (a) {
                    return a.setColumns();
                });
                a._isSyncing = !1;
            };
            c.prototype.sortByInternalSortValue = function () {
                this.items.sort(function (a, c) {
                    a = z(a.currentOptions.sortOrder, a.sortOrderValue);
                    c = z(c.currentOptions.sortOrder, c.sortOrderValue);
                    return a < c ? -1 : a > c ? 1 : 0;
                });
                this.options("reversed") && this.items.reverse();
            };
            c.prototype.add = function (a) {
                this.render();
                this.rootPanel && this.rootPanel.add(a);
                return this;
            };
            return c;
        })(jc),
        Vz = {
            zigzag: as,
            gap: function (a, c, b, d) {
                var e = c / 2,
                    f = "c" === a || "l" === a,
                    g = "m" === a || "t" === a;
                f = G(d([b[0] + (f ? e : 0), b[1] + (g ? e : 0), b[2] - (f || "r" === a ? ("c" === a ? c : e) : 0), b[3] - (g || "b" === a ? ("m" === a ? c : e) : 0)]), 4);
                b = f[0];
                d = f[1];
                e = f[2];
                g = f[3];
                f = { clipPath: Yh(b, d, e, g) };
                if ("r" !== a && "b" !== a) {
                    var h = d + 0.5,
                        k = b + 0.5;
                    a =
                        "t" === a || "m" === a
                            ? [
                                  [
                                      [b, h],
                                      [b + e, h],
                                  ],
                                  [
                                      [b, h - c],
                                      [b + e, h - c],
                                  ],
                              ]
                            : [
                                  [
                                      [k, d],
                                      [k, d + g],
                                  ],
                                  [
                                      [k - c, d],
                                      [k - c, d + g],
                                  ],
                              ];
                    f.outlinePath = fb(a[0]).concat(fb(a[1]));
                }
                return f;
            },
            line: function (a, c, b, d) {
                if ("r" === a || "b" === a) return null;
                var e = c / 2,
                    f = "c" === a || "l" === a;
                a = "m" === a || "t" === a;
                c = d([b[0] - (f ? e : 0), b[1] - (a ? e : 0), f ? c : b[2], a ? c : b[3]]);
                return { path: Yh(c[0], c[1], c[2], c[3]) };
            },
            hidden: function () {
                return null;
            },
        },
        Xz = function (a, c, b) {
            var d = c.id,
                e = function (a) {
                    return a.crosshair(b);
                };
            a.axes()
                .filter({ userOptions: { scale: { syncWith: d } } })
                .each(e);
            e(c);
        },
        Yz = function (a) {
            var c = [];
            w(a, function (a) {
                a.yVal.pop
                    ? w(a.yVal, function (b) {
                          c.push(Sm(A({}, a, { yVal: b })));
                      })
                    : c.push(Sm(a));
            });
            return c;
        },
        iu = ["column", "area", "candlestick", "ohlc", "variwide"],
        kj = ["column", "candlestick", "ohlc", "variwide"],
        ju = (function (a) {
            function c(b, c) {
                var d = a.call(this, b.chart, c, [b.chart, c]) || this;
                d.chartAreaSet = b;
                d.kind = "chartArea";
                d._series = [];
                d.yAxis = [];
                d.xAxis = [];
                d.zAxis = [];
                d._axes = [];
                d.axConfList = {};
                d.renderedRect = Gk();
                d.preRenderedRect = Gk();
                d.isDirtyPreRender = !0;
                d.isRendering = !1;
                d.renderRect = { x: 0, y: 0, width: 0, height: 0, borderWidth: 0 };
                d.projection = {
                    lin2valxy: function (a, b) {
                        return [a, b];
                    },
                    val2linxy: function (a, b) {
                        return [a, b];
                    },
                };
                d._awaitRenderCallbacks = [];
                d.maxSeriesZIndex = 0;
                d.events = { contentBox: new rd(), click: new rd() };
                d.isZoomedDragArea = !1;
                d.zoomAxes = [];
                d.computeVals2 = function (a, b) {
                    var c = a.slice(0, 2);
                    d.isHoriz && c.reverse();
                    var e = [];
                    w(d.zoomAxes, function (a, d) {
                        return (e[d] = a ? a.linToVal(c[d], b) : void 0);
                    });
                    return d.projection.lin2valxy(e[0], e[1]);
                };
                d.computeValsTouch = function (a, b) {
                    return B(a, function (a) {
                        return d.computeVals2(a, b);
                    });
                };
                d._lastPointers = [];
                d.mouseMove = Ni(function (a) {
                    var b = function () {
                            var a = e.getCursor();
                            return !a || "crosshair" === a || "move" === a;
                        },
                        c = a.pointers || [[a.x, a.y]],
                        e = d.chart,
                        f = "touch" === a.device,
                        g;
                    if (2 === c.length && d.isPinchZooming) d.pinch(a);
                    else if (1 === c.length) {
                        c = c[0];
                        var h = void 0;
                        if (d.isZooming) return (d.zoomEndVals = h = d.computeVals2(c, !0)), d.moveZoom(d, h), !0;
                        if (d.isDragging) return d.drag(d.computeVals2(c));
                        var r = d.renderer.renderer.isAnimating() && !d._ignoreAnimation;
                        h = d.isType("map");
                        if (!r && (g = d.renderBySortedSeriesRev)) {
                            r = void 0;
                            if (d.crosshair(c, a)) d.debounce.run("unmute");
                            else for (var u = 0, t = g.length; u < t && !(r = g[u].mouseMove(a, c)); u++);
                            d.crossPDD().length && a.eventArgs.cancelable && a.eventArgs.preventDefault();
                            f &&
                                (r
                                    ? (d.debounce.defer(
                                          "touchTimeout",
                                          function () {
                                              d.clickOff();
                                          },
                                          8e3
                                      ),
                                      (d._hoveredItem = d.chart.hoveredPoint))
                                    : (d._hoveredItem = void 0));
                            !r &&
                                b() &&
                                d._axisToZoom &&
                                (h || d._isStaticDragArea
                                    ? (d.isZoomed || d.isZoomedDragArea) && e.setCursor("move")
                                    : d.isZoomed && !h
                                    ? d.isInDragArea(c[1])
                                        ? e.setCursor("move")
                                        : h || e.setCursor("crosshair")
                                    : e.setCursor("crosshair"));
                            return r || !0;
                        }
                    }
                }, 13);
                d.docMM = void 0;
                d.docVUp = void 0;
                b.items.push(d);
                var f = (d.readyDefer = new $A()),
                    g = f.hold("caConst");
                d.initFP();
                d.chart = b.chart;
                d.collisionManager = new Tm(d);
                d.legend = d.chart.legends(0);
                d.legend.alignTo = d.legend.alignTo || d;
                d.prepAxisConfigs();
                f.release(g);
                d._firstOpCall = !0;
                d.options(c, !1);
                d.tooltip = new oD(d);
                return d;
            }
            K(c, a);
            c.prototype.init = function (a) {
                this._renderDataCallMonitor = new aB();
                this.ctManager = Ht();
                this.ctManager.init(a.userOptions);
                this.debounce = new Ae();
            };
            c.prototype.initFP = function () {
                var a = this;
                this.axes = Xa(
                    Kf,
                    function () {
                        return a._axes;
                    },
                    function (a) {}
                );
                this.series = Xa(
                    Ym,
                    function () {
                        return a._series;
                    },
                    function (a) {}
                );
            };
            c.prototype.defaultOptions = function () {
                var a = this.chart,
                    c = a.boxDefaults(this.userOptions.boxVisible ? 1 : void 0),
                    e = qe(c.fill, "white", 30),
                    f = C(a.typeContextOptions, "chartArea");
                c = { fill: e, outline: c.outline, boxVisible: c.boxVisible, shadow: c.shadow };
                f && A(c, f);
                a.chartAreaSet.hasScaleBreaks && (c.boxVisible = !0);
                return c;
            };
            c.prototype.normalizeOptions = function (b) {
                b = a.prototype.normalizeOptions.call(this, b, "series");
                Gh(b, "xAxis");
                Gh(b, "yAxis");
                cp(b, "orientation");
                qw(b);
                return b;
            };
            c.prototype.options = function (b, c) {
                var d = this.optionsGetter(b);
                if ("NotGetter" !== d) return d;
                (d = b.series) && !this._firstOpCall && (delete this.userOptions.series, delete this.currentOptions.series);
                !this._firstOpCall && a.prototype.options.call(this, b, c);
                this.isHoriz = this.ctManager.isHoriz();
                d && this.setSeries(c);
                this.applyOptions();
                !1 !== c && this.chartAreaSet.tryReflow();
                this._firstOpCall = !1;
                return this;
            };
            c.prototype.applyOptions = function () {
                var a = this.options(),
                    c;
                if (this.rootVisuals.caBackground) {
                    var e = Bg(a, void 0, Fa.chartArea);
                    this.rootVisuals.caBackground.attr(e.fill);
                }
                e = a.height;
                var f = a.width;
                if (e || f) {
                    var g = {};
                    f && (g.width = f);
                    e && (g.height = e);
                    this.rootPanel.attr(g);
                }
                (c = a.title) && this.rootVisuals.titleBox.options(c);
                (this._isStaticDragArea = this.isType("organization"))
                    ? (this._axisToZoom = "xy")
                    : ((this._axisToZoom = this.chart.currentOptions.axisToZoom || this.currentOptions.axisToZoom), "none" === this._axisToZoom && (this._axisToZoom = ""));
                this.chart.triggerOptionsApplied("chartArea", this);
                return this;
            };
            c.prototype.canZoom = function () {
                return !!this._axisToZoom;
            };
            c.prototype.setSeries = function (a) {
                var b = this;
                b.log("setSeries()");
                var c = b.processSeriesConfigs(),
                    f = function (a, b) {
                        return a.currentOptions ? a.currentOptions.id || a.currentOptions.name || b : a.id || a.name || b;
                    };
                Ub(
                    c,
                    b._series,
                    function (a) {
                        b.addSeries(a);
                    },
                    function (b, c) {
                        return c.options(b, a || !1);
                    },
                    function () {},
                    f,
                    f
                );
                b.triggerUser("setSeries", b);
                b.updateMapData(a);
                return this;
            };
            c.prototype.processSeriesConfigs = function () {
                var a = this.options(),
                    c = this.ctManager;
                a = a.series || [];
                if (c.shouldDataMerge() && a.length && 1 < a.length) {
                    var e = c.dataMergeType(a);
                    c = c.shouldDataMerge(a);
                    c.length &&
                        (a = B(c, function (a) {
                            return Dz(a, "collect" === e);
                        }));
                }
                return a;
            };
            c.prototype.spliceSeries = function (a, c, e, f) {
                var b = this,
                    d = this.readyDefer,
                    k = this._series,
                    l = d.hold("spliceSer"),
                    m = k.slice(0, a),
                    n = k.slice(a, a + c);
                a = k.slice(a + c, k.length);
                c = 0;
                for (k = n.length; c < k; c++) n[c].destroy();
                e = B(e, function (a) {
                    return new Xm(b).options(a, f || !1);
                });
                m.push.apply(m, H(e));
                m.push.apply(m, H(a));
                this._series = m;
                this.updateMapData(f);
                this.triggerUser("addSeries");
                d.release(l);
            };
            c.prototype.updateMapData = function (a) {
                var b = this;
                b.isType("map") &&
                    b.triggerUser("updateMapData", [
                        b,
                        function () {
                            return b.chart.redraw(a);
                        },
                    ]);
            };
            c.prototype.addSeries = function (a, c) {
                this.isDirtyPreRender = !0;
                var b,
                    d = this.readyDefer,
                    g = d.hold("addSer");
                this._series.push((b = new Xm(this)));
                b.options(a, c || !1);
                this.isType("map");
                d.release(g);
                this.triggerUser("addSeries");
                return b;
            };
            c.prototype.preRender = function () {
                var a = this;
                if (a.isDirtyPreRender) {
                    var c = !a.renderedRect.width;
                    a.setAxes();
                    var e = function (b) {
                        b = a.axes(b).items.sort(function (a, b) {
                            a = a.options("scale.syncWith");
                            b = b.options("scale.syncWith");
                            return (a && b) || a === b ? 0 : a ? 1 : -1;
                        });
                        for (var c = 0; c < b.length; c++) {
                            var d = b[c];
                            d.setData().setRange(!0);
                            d.init_markers();
                        }
                    };
                    e(function (a) {
                        return "x" === a.prefix;
                    });
                    a.dataLayout_clustersAndStacks();
                    a.series().each(function (a) {
                        return a.setColor();
                    });
                    e(function (a) {
                        return "x" !== a.prefix;
                    });
                    a.isMultiType() && ((a.panes = a.panes || (Rm ? new Rm(a) : null)), a.panes.setPanes());
                    a.preRenderedRect = a.contentRect;
                    a.isDirtyPreRender = !1;
                    c && a.triggerUser("firstPreRender", a);
                }
            };
            c.prototype.setAxes = function () {
                var a = this,
                    c = this,
                    e = (N(c.chart.currentOptions, ["defaultAxis", "scale"]) || {}).syncWith,
                    f = c.chartAreaSet.allAxes;
                c.series().each(function (a) {
                    a.setAxes();
                });
                w(["x", "y", "z"], function (b) {
                    if (1 < f[b].length)
                        for (var d = 0, g = f[b].length; d < g; d++)
                            if (d) {
                                var l = f[b][d],
                                    m = !1,
                                    n = l.scale || {},
                                    p = !!n.range;
                                p && Sl(n.range);
                                var q = n.syncWith || e,
                                    r = N(c._series[0], ["visualizer", "kind"]) || "";
                                "none" === q ||
                                    c.ciManager.exists(l.id) ||
                                    r.match(/^map|^annotation|^funnel|^venn|^pie/) ||
                                    (l.scale
                                        ? p && !Sl(n.range) && (m = !0)
                                        : l.defaultTick
                                        ? t(l.defaultTick.enabled) || Ma.emit("tip", l.id, "multiAxDTE", { data: [l.id, b], container: c.chart.getWrapper() })
                                        : (l = A({ defaultTick: { enabled: !1 } }, l)),
                                    m || new jj(a, l, b));
                            }
                });
                c.setZoomAxes();
                c.triggerUser("setAxes", c);
            };
            c.prototype.isType = function (a) {
                return this.ctManager.isType(a);
            };
            c.prototype.isMultiType = function () {
                return this.isType("radar") || this.isType("gauge");
            };
            c.prototype.requestAxis = function (a, c, e, f) {
                var b,
                    d = this.chart.chartItemManager;
                if (e) {
                    if ((b = d.exists(e))) return b;
                    a = this.getAxConfig(e) || {};
                } else a = this.chartAreaSet.freeAxes[c];
                ((e = z(e, a ? a.id : void 0)) && (b = d.exists(a.id))) || ((b = A({}, a)), e && (b.id = e), (b = new jj(this, f ? A(b, f) : b, c)));
                return b;
            };
            c.prototype.getAxConfig = function (a) {
                if (a)
                    for (var b = this.axConfList, c = pa(b), f = this.chartAreaSet.currentOptions.rootAx, g, h = 0, k = c.length; h < k; h++) {
                        var l = c[h];
                        if ((g = S(b[l], { id: a })) || (g = S(f[l + "Axis"], { id: a }))) return g;
                    }
            };
            c.prototype.prepAxisConfigs = function () {
                var a = this,
                    c,
                    e;
                w(["x", "y", "z"], function (b) {
                    e = b + "Axis";
                    c = a.currentOptions[e] || [];
                    c.push(a.chartAreaSet.freeAxes[b]);
                    w(c, zb);
                    a.axConfList[b] = c;
                });
                return a;
            };
            c.prototype.populateAxisPanels = function () {
                function a(a) {
                    return function (b) {
                        b.isVisible && b.rootPanel && !b.isAdded && b.add(a);
                    };
                }
                if (!this.isMultiType()) {
                    var c = this.rootVisuals,
                        e = this.readyDefer,
                        f = Rr(this.axes()),
                        g = [this.rootRect.width, this.rootRect.height],
                        h,
                        k = [c.topAxes, c.rightAxes, c.bottomAxes, c.leftAxes];
                    c = function (a) {
                        return !a.isHoriz;
                    };
                    var l = function (a) {
                            return a.isHoriz;
                        },
                        m = e.hold("axM");
                    ob(4, function (b) {
                        w(f[b], a(k[b]));
                    });
                    this.axes(c).each(function (a) {
                        a.resetMetricsData();
                        if ((h = a.measure(g))) g[0] -= h[2];
                    });
                    this.axes(l).each(function (a) {
                        a.resetMetricsData();
                        if ((h = a.measure(g))) g[1] -= h[3];
                    });
                    var n = function (a) {
                        return a.measure(g);
                    };
                    this.axes(c).each(n);
                    this.axes(l).each(n);
                    e.release(m);
                }
                return this;
            };
            c.prototype.measureAxes = function () {
                this.populateAxisPanels();
                Ar(this);
            };
            c.prototype.measureAxes_resetOverflows = function () {
                var a = this.rootVisuals;
                a.leftOverflow.attr({ width: 0 });
                a.topOverflow.attr({ height: 0 });
                a.rightOverflow.attr({ width: 0 });
                a.bottomOverflow.attr({ height: 0 });
                this.overflows = [0, 0, 0, 0];
            };
            c.prototype.tryRenderData = function (a) {
                var b = this.rootVisuals.content.getGlobalBbox();
                if (!b.width || !b.height) return !1;
                var c = this.contentRect;
                if (c && c.width === b.width && c.height === b.height) return !1;
                c = this.contentRect = b;
                c.x = 0;
                c.y = 0;
                this.renderData(a);
                return !0;
            };
            c.prototype.renderData = function (a) {
                var b = this,
                    c = b.chart,
                    f = b.rootVisuals;
                b.log("renderData");
                b.isRendering = !0;
                var g = b.readyDefer,
                    h = b.contentRect;
                if (!g.isReady())
                    return (
                        g.onReady(b.id + "renderD", function () {
                            b.isType("map") && b.chartAreaSet.reflow();
                            b.renderData(a || b._updateOptions || void 0);
                        }),
                        b
                    );
                var k = b._renderDataCallMonitor;
                if (!(10 < k.callCount)) {
                    k.open();
                    b._updateOptions = void 0;
                    h || (h = b.contentRect = Gc([0, 0, 800, 500]));
                    var l = !1;
                    if (h) {
                        l = b.chart.disableAnimation(a);
                        b.triggerUser("preRenderData", [b, !b.renderedRect.width]);
                        if (b._cancelBubble) {
                            k.close();
                            b._cancelBubble = 0 < k.callCount;
                            return;
                        }
                        b.trigger("contentBox", f.content.getGlobalBbox());
                        Yy(b);
                        g = b.currentOptions.outline.width;
                        var m = (b.renderRect = Ik(h, g / 2)),
                            n = { x: 0, y: 0, width: m.width, height: m.height };
                        g = { x: 0, y: 0, width: h.width - 2 * g, height: h.height - 2 * g, borderWidth: g };
                        var p = f.titleBox.currentOptions;
                        m = p.position && "full" !== p.position ? p.position : "left";
                        p = Bg(p);
                        f.titleBox.alignTo(f.content, m, m, [0, p.stroke["stroke-width"]]);
                        var q = [],
                            r;
                        c.flowEvents.beforeRenderSeries.trigger([
                            b,
                            h,
                            g,
                            a,
                            q,
                            function () {
                                return (r = !0);
                            },
                        ]);
                        r ||
                            ((f = b
                                .series(function (a) {
                                    return a.chartArea.id === b.id && !1 === a.info.type.isShape && void 0 === a.pane;
                                })
                                .sortBy("zIndex")),
                            f.each(function (b) {
                                return q.push(function () {
                                    return b.render(n, a);
                                });
                            }),
                            f.each(function (b) {
                                return q.push(function () {
                                    return b.renderLabels(n, a);
                                });
                            }));
                        Uv(
                            function (a) {
                                return c.ensureLoadingApplied(a);
                            },
                            q,
                            function () {
                                c.flowEvents.nextRenderSeries.trigger([
                                    b,
                                    h,
                                    n,
                                    a,
                                    function () {
                                        return (r = !0);
                                    },
                                ]);
                                b.renderedRect = h;
                                b.isMultiType() ||
                                    b.axes().each(function (b) {
                                        b.render(n, A({ invalidate: !0 }, a));
                                        b.renderOnCa(n, a);
                                    });
                                b.render_caClip();
                                l && b.chart.enableAnimation();
                                b.rootPanel.refresh();
                                b.legend.updateStyles();
                                b.renderBySortedSeriesRev = b
                                    .series(function (a) {
                                        return a.chartArea.id === b.id;
                                    })
                                    .sortBy("zIndex")
                                    .items.slice(0);
                                b.renderBySortedSeriesRev.reverse();
                                b._chartFirstTimeRendered || ((b._chartFirstTimeRendered = !0), b.triggerUser("chartAreaRenderDataFirstTime", b));
                                var d = b._awaitRenderCallbacks.slice();
                                b._awaitRenderCallbacks = [];
                                b.isRendering = !1;
                                b.isRendered = !0;
                                w(d, function (a) {
                                    return a();
                                });
                                b._cancelBubble = 1 < k.callCount;
                                k.close();
                            }
                        );
                    }
                    return this;
                }
            };
            c.prototype.getContentGlobalBbox = function () {
                return this.rootVisuals.content.getGlobalBboxArray();
            };
            c.prototype.awaitRender = function (a) {
                this._awaitRenderCallbacks.push(a);
            };
            c.prototype.render_caClip = function () {
                var a = this,
                    c = a.rootVisuals,
                    e = a.currentOptions,
                    f = a.rootVisuals.content,
                    g = a.axes(),
                    h = rb(ha(a.renderRect), -1),
                    k = e.outline.width || 0;
                g = $r(f, g, k);
                h = g.clipPath || Cc(ha(md(f, Gc(h), k)));
                k = Bg(e);
                k = A({ d: h }, Ga(k.stroke, "fill"));
                var l = { shadow: a.currentOptions.shadow };
                !1 !== e.clipContent && (l.clipPath = h);
                f.attr(l);
                if (g.outlines) {
                    var m = [];
                    c.outlinePaths &&
                        w(c.outlinePaths, function (a) {
                            return a.destroy();
                        });
                    w(g.outlines, function (b) {
                        m.push(a.renderer.renderer.path({ fill: "none", stroke: b.stroke, d: b.path, zIndex: gb.breakPath }).add(f));
                    });
                    c.outlinePaths = m;
                }
                if (g.paths) {
                    var n = [];
                    c.breakPaths &&
                        w(c.breakPaths, function (a) {
                            return a.destroy();
                        });
                    w(g.paths, function (b) {
                        n.push(a.renderer.renderer.path({ fill: b.color, stroke: "none", d: b.path, zIndex: gb.breakPath }).add(f));
                    });
                    c.breakPaths = n;
                }
                k["stroke-width"] || (k.stroke = "none");
                c.contentStroke.attr(k);
            };
            c.prototype.setRootVisuals = function () {
                var a = this.renderer;
                if (!this.rootVisuals) {
                    var c = this.currentOptions.outline.width;
                    this.rootPanel = (this.rootVisuals = Hl(a).build({
                        axis: {},
                        axisMarkers: !0,
                        annotationLayer: !0,
                        contentOverlay: !0,
                        background: !0,
                        gridLines: !0,
                        overflow: !0,
                        outline: { width: c },
                        title: { holder: this },
                        content: { stroke: { width: 1 } },
                    })).mainStacks;
                    this.bindRootEvents();
                }
                return this;
            };
            c.prototype.getAxisMarkerVisualTargets = function () {
                var a = this.rootVisuals;
                return { behind: a.axisMarkersBehind, front: a.axisMarkersFront };
            };
            c.prototype.invalidate = function () {
                this.isDirtyPreRender = !0;
                this.series().each(function (a) {
                    a.seriesDirty.pos(!0);
                    a.seriesDirty.coord(!0);
                });
                this.legend.invalidate();
                this.chartAreaSet.invalidateCache();
                return this;
            };
            c.prototype.dataLayout_clustersAndStacks = function () {
                var a = this,
                    c = [],
                    e = [],
                    f = {},
                    g = function () {
                        w(kj, function (a, b) {
                            f[a] = 0;
                        });
                    },
                    h = 0;
                w(this.xAxis, function (b) {
                    var d = a.series({ isVisible: !0 });
                    g();
                    d.items.reverse();
                    var k = $a(
                        d.items.map(function (a) {
                            return a.type;
                        })
                    );
                    d.each(function (g) {
                        var l = -1 < iu.indexOf(g.type);
                        e = [];
                        l || (g.zIndex = h += 8);
                        g = gc(iu, k);
                        w(g, function (g) {
                            d.filter(function (a) {
                                return a.isVisible && a.type === g && a.xAxis.id === b.id;
                            })
                                .reverse()
                                .each(function (k) {
                                    if (-1 === c.indexOf(k.id)) {
                                        if (k.yAxis.isStacked()) {
                                            var l = d.filter({ yAxis: { id: k.yAxis.id }, xAxis: { id: b.id }, isVisible: !0, type: g }).each(function (a) {
                                                -1 < kj.indexOf(g) && (a.clusterIndex = f[g]);
                                                a.isStacked = !0;
                                                c.push(a.id);
                                            }).items;
                                            h = Bz(l, b, h);
                                            -1 < kj.indexOf(g) && (f[g]++, e.push(g));
                                        } else -1 < kj.indexOf(g) && ((k.clusterIndex = f[g]), e.push(g), k.info.type.clusters && f[g]++), (k.zIndex = h += 8), c.push(k.id);
                                        k.xAxis.isStackedFull() && "category" === k.xAxis.type && ((k = a.yAxis[0].isStacked()), (l = d.filter({ isVisible: !0, type: g }).items), Cz(l, b, k));
                                    }
                                });
                        });
                        e.length &&
                            ((e = $a(e)),
                            w(e, function (a) {
                                b.clusterCounts[a] = f[a] || 1;
                            }));
                    });
                });
                this.maxSeriesZIndex = h;
                this.dataLayoutExperiment();
            };
            c.prototype.dataLayoutExperiment = function () {
                var a = this._series.slice(0),
                    c = [],
                    e = function (a) {
                        return a.pop ? w(a, e) : c.push(a.id);
                    },
                    f = 0,
                    g = function (a) {
                        a.zIndex = f += 8;
                    },
                    h = function (a) {
                        var b = a.type,
                            c = a.info.type.snapToZero,
                            d = a.info.type.clusters;
                        c && a.yAxis.isStacked() && (b += a.yAxis.id);
                        d && (b += a.xAxis.id);
                        c || d || (b += a.id);
                        return b;
                    },
                    k = function (b) {
                        return ea(a, function (a) {
                            return h(a) === b;
                        });
                    };
                c = [];
                w(a, function (a) {
                    -1 < c.indexOf(a.id) || ((a = h(a)), (a = k(a)), 1 === a.length ? g(a[0]) : w(a, g), e(a));
                });
                this.maxSeriesZIndex = f;
            };
            c.prototype.resetTimers = function () {
                w(this._axes, function (a) {
                    return a.resetTimers();
                });
                this.chart.hideTooltip();
                this.crosshair();
            };
            c.prototype.ignoreAnimationFor = function (a) {
                var b = this;
                a
                    ? ((b._ignoreAnimation = !0),
                      b.debounce.defer(
                          "ignoreAnim",
                          function () {
                              b._ignoreAnimation = !1;
                          },
                          a
                      ))
                    : b._ignoreAnimation && (b.debounce.clear("ignoreAnim"), (b._ignoreAnimation = !1));
            };
            c.prototype.isZoomLive = function () {
                return this.isPinchZooming || this.isDragging || this.isMapZooming;
            };
            c.prototype.setZoomAxes = function () {
                var a = this,
                    c = a.isType("map");
                a.axes().each(function (b) {
                    if (b.isVisible || b._isDragHost || c) a.zoomAxes["x" === b.prefix ? 0 : "y" === b.prefix ? 1 : 2] = b;
                });
                return a;
            };
            c.prototype.getZoomAxes = function () {
                this.zoomAxes.length || this.setZoomAxes();
                return this.zoomAxes;
            };
            c.prototype.keyup = function (a) {
                "Escape" === a.eventArgs.key && this.cancelAll();
            };
            c.prototype.clickData = function (a) {
                var b = this,
                    c = { yAxis: [], xAxis: [] };
                if (!t(a.x)) {
                    var f = b.rootVisuals.content.toRelativeXY(a.eventArgs);
                    a.x = f[0];
                    a.y = f[1];
                }
                var g = [];
                b.axes().each(function (d) {
                    if ((d.isVisible && !d.noData) || b.isType("map")) "x" === d.prefix ? c.xAxis.push({ value: (g[0] = d.linToVal(a.x)) }) : "y" === d.prefix && c.yAxis.push({ value: (g[1] = d.linToVal(a.y)) });
                });
                c.xAxis = B(c.xAxis, function (a) {
                    return { value: b.projection.lin2valxy(a.value, g[1])[0] };
                });
                c.yAxis = B(c.yAxis, function (a) {
                    return { value: b.projection.lin2valxy(g[0], a.value)[1] };
                });
                return c;
            };
            c.prototype.click = function (a) {
                this.debounce.clear("clickoff");
                this.cancelAll();
                clearTimeout(this.zoomStartIntervalId);
                var b = a.pointers || [[a.x, a.y]];
                if (1 === b.length) {
                    b = { yAxis: [], xAxis: [], event: a.eventArgs };
                    var c = !1,
                        f = "touch" === a.device;
                    if (!this.isZooming && !this.isDragging) {
                        var g = this.chart.highlighted,
                            h = void 0;
                        f && ((h = this._hoveredItem), this.mouseMove(a), this.mouseUp(a));
                        for (
                            var k = ea(this._series, function (a) {
                                    return a.isVisible;
                                }),
                                l = 0,
                                m = k.length;
                            l < m;
                            l++
                        )
                            if (k[l].mouseClick(a)) {
                                c = !0;
                                break;
                            }
                        f && (h && h === this._hoveredItem ? this.clickOff(a) : c ? (f = this.chart.hoveredPoint) && g && Qb(this.chart, f) : Qb(this.chart));
                    }
                    this.hasAnyNamedEvent("click") && (L(b, this.clickData(a)), c || (this.trigger("click", b), this.triggerUser("click", b)));
                } else 2 === b.length ? this.zoom("-100%") : 3 === b.length && this.zoom("initial");
            };
            c.prototype.clickOff = function (a, c) {
                function b() {
                    var a = d.chart,
                        b;
                    d.cancelAll();
                    d.crosshair();
                    d.chart.hideTooltip();
                    d.legend.pointOut();
                    (b = a.hoveredPoint) && "hover" === b._state && b.mouseOut();
                    d.debounce.has("unmue") ? d.debounce.run("unmute") : Qb(d.chart);
                    d._hoveredItem = void 0;
                }
                var d = this;
                c ? b() : d.debounce.defer("clickoff", b, 30);
            };
            c.prototype.dblclick = function (a) {
                this.cancelAll();
                a = a.pointers || [[a.x, a.y]];
                1 === a.length && this.zoom({ level: "+100%", at: this.computeVals2(a[0]) });
            };
            c.prototype.mouseDown = function (a) {
                var b = this,
                    c = b.chart,
                    f = b.getZoomAxes(),
                    g = a.device,
                    h = a.pointers || [[a.x, a.y]],
                    k = b.computeValsTouch(h),
                    l = h.length,
                    m = h[0];
                b._lastPointers.length !== h.length && (clearTimeout(b.zoomStartIntervalId), b.cancelAll());
                b.zoomEndVals = void 0;
                var n = [],
                    p = b._axisToZoom;
                n = k[0];
                !p && b._isStaticDragArea && (b._axisToZoom = p = "xy");
                var q = function () {
                    b.isPinchZooming = p;
                    b.pinchStartTouches = h;
                    b.zoomStartRanges = B(f, function (a) {
                        return [a.range.min, a.range.max];
                    });
                    b.renderer.attr("disableAnimation", !0);
                };
                (function () {
                    if (b.isType("map")) return b.isZoomed || 2 === l ? !0 : !1;
                    if (b._isStaticDragArea || (b.isZoomed && b.isInDragArea(m[1]))) {
                        var a = !1;
                        b.axes().each(function (b) {
                            b.canDrag() && (a = !0);
                        });
                        return a;
                    }
                    return !!p;
                })() &&
                    ((b.zoomStartIntervalId = setTimeout(function () {
                        b.attachDoc();
                        if (1 === l)
                            if (b.isType("map") || b._isStaticDragArea || (b.isZoomed && b.isInDragArea(m[1])) || ("touch" === g && b.isZoomed)) {
                                var a;
                                if ((a = p)) (b.isDragging = a), (b.dragPrevVals = n), b.renderer.attr("disableAnimation", !0), (b._prevCursor = c.getCursor()), !b._prevCursor && b.isZoomed && c.setCursor("move");
                            } else {
                                if ((!b.isZoomed && "touch" === g) || "touch" !== g) if ((a = p)) (b.isZooming = a), (b.zoomStartVals = n), b.renderer.attr("disableAnimation", !0);
                            }
                        else 2 === l && q();
                        b.isDragging || b.isZooming || b.chart.setCursor();
                        b.mouseLeft = !1;
                        b.chart.resetTimers();
                    }, 10)),
                    a.eventArgs.cancelable && a.eventArgs.preventDefault());
                b._lastPointers = h;
            };
            c.prototype.mouseUp = function (a) {
                clearTimeout(this.zoomStartIntervalId);
                this.isDragging && this.mouseLeft && this.chart.setCursor();
                this.endDrag().endZoom();
                this.isPinchZooming = !1;
                this._lastPointers = a.pointers || [];
            };
            c.prototype.isInDragArea = function (a) {
                var b = this.isHoriz ? 0 : 1;
                return (b = this.zoomAxes[b] || this._axes[b]) && 0.5 < b.linToPos(a);
            };
            c.prototype.mouseOut = function (a) {
                a = a.eventArgs;
                for (var b = 0, c = this._series.length; b < c; b++) this._series[b].mouseOut(a);
                a = this.chart.getCursor();
                ("crosshair" !== a && "move" !== a) || this.isDragging || this.chart.setCursor();
                this.isDragging && (this.mouseLeft = !0);
                this.crosshair();
            };
            c.prototype.wheelHandler = function (a) {
                var b = [a.x, a.y],
                    c = a.eventArgs;
                this._axisToZoom &&
                    (this.setZoomAxes(),
                    this._isStaticDragArea
                        ? ((this.isDragging = this._axisToZoom),
                          (this.dragPrevVals = this.computeVals2(b)),
                          (b = this.computeVals2([b[0] - 0.5 * c.deltaX, b[1] - 0.5 * c.deltaY])),
                          this.drag(b) && a.eventArgs.preventDefault(),
                          this.endDrag())
                        : c.altKey && ((b = this.computeVals2(b)), this.zoom({ at: b, level: (0 > c.deltaY ? "+" : "-") + Math.abs(0.5 * c.deltaY) }), this.resetTimers(), a.eventArgs.preventDefault()));
            };
            c.prototype.pinch = function (a) {
                var b = this,
                    c = b.isType("map");
                a = a.pointers;
                var f = b.getZoomAxes(),
                    g = (b.isType("map") && "xy") || b.chart.currentOptions.axisToZoom,
                    h = function () {
                        return c
                            ? zs(b.zoomBBox || b.zoomBBoxSet)
                            : B(f, function (a) {
                                  return [a.range.min, a.range.max];
                              });
                    };
                b.isPinchZooming
                    ? (b.pinchZoom(b.computeValsTouch(b.pinchStartTouches), b.computeValsTouch(a)), (b.pinchStartTouches = a), (b.zoomStartRanges = h()))
                    : (b.cancelAll(), g && "none" !== g && ((b.isPinchZooming = g), (b.pinchStartTouches = a), (b.zoomStartRanges = h()), b.renderer.attr("disableAnimation", !0)));
            };
            c.prototype.resetZoom = function () {
                clearInterval(this.zoomStartIntervalId);
                var a = (this.isDragging = this.isZooming = !1);
                this.isZoomed = !1;
                this.isType("map")
                    ? this.chart.zoom("initial")
                    : (w(this.zoomAxes, function (b) {
                          b && ((a = !0), b.zoom(void 0, void 0, !1));
                      }),
                      this.series().each(function (a) {
                          a.seriesDirty.pos(!0);
                          a.seriesDirty.coord(!0);
                      }),
                      this.renderData());
                this.chart.setCursor();
                a && this.chart.redraw();
                return this;
            };
            c.prototype.cancelAll = function () {
                this.endDrag();
                this.isZooming = !1;
                this.zoomVisual && this.zoomVisual.attr({ display: "none" });
                this.isPinchZooming = !1;
                return this;
            };
            c.prototype.endDrag = function () {
                this.isDragging &&
                    ((this.isDragging = !1),
                    this.series().each(function (a) {
                        a.setCoordinates(void 0, { forceCoordinates: !0 });
                    }),
                    this.renderer.attr("disableAnimation", !1),
                    !this._prevCursor && this.chart.setCursor(),
                    (this._prevCursor = null));
                return this;
            };
            c.prototype.endZoom = function () {
                var a = this;
                clearInterval(a.zoomStartIntervalId);
                a.renderer.attr("disableAnimation", !1);
                if (a.isZooming && a.zoomEndVals) {
                    var c = {},
                        e = !1,
                        f = [],
                        g = function (b, d) {
                            if (-1 < a.isZooming.indexOf(b)) (b = c[b + "Axis"] = [a.zoomStartVals[d], a.zoomEndVals[d]]), (f[d] = b);
                            else if ((b = a.zoomAxes[d])) (b = b.range), (f[d] = [b.min, b.max]);
                        };
                    a.isZoomingReflow = !0;
                    g("x", 0);
                    g("y", 1);
                    g = (function (a) {
                        var b = a[0];
                        a = a[1];
                        return Ua([
                            [b ? b[0] : 0, a ? a[0] : 0],
                            [b ? b[1] : 0, a ? a[1] : 0],
                        ]);
                    })(f);
                    !1 !== a.triggerUser("selection", c) &&
                        (a.zoom(g),
                        (a.isZoomingReflow = !1),
                        (e = !!S(a.zoomAxes, function (a) {
                            return a && a.isZoomed;
                        })) && a.triggerUser("selection", c));
                    a.cancelAll();
                    a.isZoomed = e;
                } else a.isZooming = !1;
                a.detachDoc();
                return a;
            };
            c.prototype.pinchZoom = function (a, c) {
                var b = this.isPinchZooming,
                    d = this.zoomStartRanges,
                    g = th(Ua(a), [1, 1]),
                    h = th(Ua(c), [1, 1]);
                c = va(g);
                a = va(h);
                var k = h[2] / g[2] || 1;
                g = h[3] / g[3] || 1;
                if (b) {
                    if (-1 < b.indexOf("x")) {
                        var l = d[0],
                            m = l[1] - l[0];
                        k = m / k;
                        h = (a[0] - l[0]) / m;
                        l = (l[1] - a[0]) / m;
                        h = c[0] - k * h;
                        l = c[0] + k * l;
                        k = [h, l];
                    } else k = d[0];
                    -1 < b.indexOf("y") ? ((d = d[1]), (l = d[1] - d[0]), (b = l / g), (h = (a[1] - d[0]) / l), (l = (d[1] - a[1]) / l), (h = c[1] - b * h), (l = c[1] + b * l), (c = [h, l])) : (c = d[1]);
                    c = Ua([
                        [k[0], c[0]],
                        [k[1], c[1]],
                    ]);
                    this.triggerUser("cazoom", [this, c]);
                    this.zoom(c);
                }
            };
            c.prototype.drag = function (a) {
                var b = this.isDragging,
                    c = [0, 0];
                if (b) {
                    var f = O(b);
                    f && -1 < b.indexOf("x") && (c[0] = this.dragPrevVals[0] - a[0]);
                    f && -1 < b.indexOf("y") && (c[1] = this.dragPrevVals[1] - a[1]);
                    this._isStaticDragArea && (this.dragPrevVals = a);
                    this.isType("map") ? (this.triggerUser("pan", [this, c]), this.chart.redraw({ animation: !1 })) : this.zoom(c);
                }
                return !1;
            };
            c.prototype.moveZoom = function (a, c) {
                if (a.isZooming) {
                    var b = {},
                        d = a.isHoriz ? "y" : "x",
                        g = "x" === d ? 0 : 1,
                        h = a.isHoriz ? "x" : "y",
                        k = "x" === h ? 0 : 1,
                        l = a.rootVisuals.content.getGlobalBbox(),
                        m = (a.zoomVisual = a.zoomVisual || a.renderer.renderer.path({ d: "M0 0" }).add(a.rootVisuals.front)),
                        n = [0 + l.x, 0 + l.y, a.contentRect.width, a.contentRect.height];
                    if (-1 < a.isZooming.indexOf(d)) {
                        var p = a.zoomAxes[g].getCaLen(c[g]),
                            q = a.zoomAxes[g].getCaLen(a.zoomStartVals[g]);
                        p = ua(p, 0, a.contentRect.width);
                        q = ua(q, 0, a.contentRect.width);
                        n[0] = p + l.x;
                        n[2] = q - p;
                        b[d + "Axis"] = [a.zoomStartVals[g], c[g]];
                    }
                    -1 < a.isZooming.indexOf(h) && ((d = a.zoomAxes[k].getCaLen(c[k])), (g = a.zoomAxes[k].getCaLen(a.zoomStartVals[k])), (n[1] = d + l.y), (n[3] = g - d), (b[h + "Axis"] = [a.zoomStartVals[k], c[k]]));
                    c = Cc(n);
                    m.attr({ d: c, fill: "rgba(0,0,200,.2)", display: "block", "pointer-events": "none" });
                    a.triggerUser("selecting", b);
                }
            };
            c.prototype.zoomUpdated = function (a) {
                var b = this,
                    c = this,
                    f = c._axisToZoom;
                if (c._isStaticDragArea) var g = !1;
                else t(a) ? (g = a) : c.isType("map") ? (g = !!fo(c.zoomBBox || c.zoomBBoxSet, c.zoomBBoxInitial, 3)) : c._isStaticDragArea || ((g = c.getZoomAxes()), (g = !!S(g, { isZoomed: !0 })));
                c.isZoomed = g;
                a = c.chart.toolbar();
                f && a && a.zoomInOut(g);
                if (!this._eventWaitingId) {
                    var h = c.isDragging ? "scrolled" : "zoomed";
                    this._eventWaitingId = setInterval(function () {
                        (b.renderer.renderer.isAnimating() && !b._ignoreAnimation) ||
                            c.isDragging ||
                            (clearTimeout(b._eventWaitingId),
                            (b._eventWaitingId = void 0),
                            b.triggerUser(
                                h,
                                b.axes().map(function (a) {
                                    return a.range;
                                })
                            ));
                    }, 100);
                }
            };
            c.prototype.bindRootEvents = function () {
                this.bindEvents();
            };
            c.prototype.bindEvents = function () {
                var a = this;
                if (!a._evBound) {
                    var c = a.rootVisuals.content;
                    c.on("touchmove", function (b) {
                        (a.isZooming || a.isDragging || a.isPinchZooming) && b.eventArgs.cancelable && b.eventArgs.preventDefault();
                    });
                    var e;
                    c.on("mouseover", function (b) {
                        e || (a.triggerUser("mouseOver", b), (e = !0));
                    });
                    c.on("mouseout", function (b) {
                        a.evInsideCA(b) || (a.mouseMove.cancel(), a.mouseOut(b), a.triggerUser("mouseOut", b), (e = !1));
                    });
                    c.on("vmove", function (b) {
                        return !a.docMM && a.mouseMove(b);
                    });
                    c.on("vclick", function (b) {
                        a.click(b);
                        b.eventArgs.preventDefault();
                    });
                    c.on("vdown", function (b) {
                        return a.mouseDown(b);
                    });
                    c.on("wheel", function (b) {
                        return a.wheelHandler(b);
                    });
                    a._docElement || (a._docElement = a.chart.renderer.renderer.documentElement);
                    a._docElement.on("keyup", function (b) {
                        return a.keyup({ eventArgs: b });
                    });
                    a._docElement.on("vclick", function (b) {
                        return !a.evInsideChart(b) && a.clickOff({ eventArgs: b });
                    });
                    a._evBound = !0;
                }
            };
            c.prototype.attachDoc = function () {
                var a = this,
                    c = a._docElement;
                if (!a.docMM || !a.docVUp) {
                    var e = a.rootVisuals.content;
                    a.docMM = e.externalOn(c, "vmove", function (b) {
                        return a.docVMoveHandler(b);
                    });
                    a.docVUp = e.externalOn(c, "vup", function (b) {
                        return a.mouseUp(b);
                    });
                }
            };
            c.prototype.detachDoc = function () {
                this.docMM && this.docMM.un();
                this.docVUp && this.docVUp.un();
                this.docMM = this.docVUp = null;
            };
            c.prototype.docVMoveHandler = function (a) {
                this.mouseMove(a) && a.eventArgs.preventDefault();
            };
            c.prototype.evInsideCA = function (a) {
                var b;
                if ((b = C(this.rootPanel, "el")) && a.composedPath) return -1 < (a.composedPath && a.composedPath()).indexOf(b);
                if ((b = this.contentRect)) return (b = rb(ha(b), 0)), Ad(b, [a.x, a.y]);
            };
            c.prototype.evInsideChart = function (a) {
                var b = C(this.chart.rootPanel, "el.parentNode.el");
                return b && a.composedPath ? -1 < a.composedPath().indexOf(b) : this.evInsideCA(a);
            };
            c.prototype.crosshair = function (a, c, e) {
                var b = !a && !c;
                b && this.tooltip && this.tooltip.hideTooltip();
                if (-1 !== ["vertical", "horizontal"].indexOf(this.ctManager.settingVal("chartType")))
                    return b
                        ? (this.series().each(function (a) {
                              return a.hideHalo();
                          }),
                          Zz(this))
                        : Wz(this, a, c, e);
            };
            c.prototype.crossPDD = function () {
                var a = this.isHoriz,
                    c,
                    e;
                this.axes().each(function (a) {
                    var b = a.prefix;
                    if (C(a.currentOptions, "crosshair.enabled") && ((c = c || "x" === b), (e = e || "y" === b), c && e)) return !1;
                });
                return a ? (e ? "X" : "") + (c ? "Y" : "") : (c ? "X" : "") + (e ? "Y" : "");
            };
            c.prototype.zoom = function (a, c) {
                (a = this.zoomConfToBox(a)) && this.setZoomBox(a, c);
                return this.getZoomBoxes().zoom;
            };
            c.prototype.zoomConfToBox = function (a) {
                var b = this.isType("map"),
                    c = I(a),
                    f = this._isStaticDragArea,
                    g = b && this.chart.options("mapping.zoomLimit"),
                    h = this.getZoomAxes();
                b = this.getZoomBoxes();
                var k = b.full,
                    l = b.zoom,
                    m = function (a) {
                        var b;
                        if ("string" === typeof a) {
                            if ("initial" === a) return 1;
                            var c = "+" === a[0] ? 1 : "-" === a[0] ? -1 : 0;
                            (b = a.replace(/^\D+/g, "")).length && (b = parseFloat(b) / 100);
                            0 === c ? (c = b) : ((a = k[2] / l[2]), (c = a + a * b * c));
                        } else c = a;
                        return ua(c, 1, g || 99999);
                    };
                b = function (a) {
                    return B(a, function (a, b) {
                        return h[b].posToVal(a);
                    });
                };
                var n = function (a, b) {
                        b = b ? b.slice(0) : va(l);
                        b.push(a);
                        return q(b);
                    },
                    p = function (a, b) {
                        b = m(b);
                        var c = f ? l[2] : ua(k[2] / b, 1, k[2]);
                        b = f ? l[3] : ua(k[3] / b, 1, k[3]);
                        var d = la(a[0], l[0]) / l[2],
                            e = la(a[0], xs(l)) / l[2],
                            g = la(a[1], l[1]) / l[3],
                            h = la(a[1], ys(l)) / l[3];
                        return Zc(Ze([a[0] - c * d, a[1] - b * g, a[0] + c * e, a[1] + b * h]), k);
                    },
                    q = function (a) {
                        var b = m(a[2]),
                            c = f ? l[2] : ua(k[2] / b, 1, k[2]);
                        b = f ? l[3] : ua(k[3] / b, 1, k[3]);
                        return Zc(mb(a, [c, b]), k);
                    },
                    r = function (a) {
                        a = a.slice(0);
                        a[2] = "+0";
                        return q(a);
                    };
                if ("number" === c) var u = n(a);
                else
                    "string" === c
                        ? (u = n(m(a)))
                        : 4 === a.length
                        ? (u = a)
                        : 3 === a.length
                        ? (u = q(a))
                        : 2 === a.length
                        ? (u = Zc(Xc(l, a), k))
                        : (t(a.at) && t(a.level) && (u = p(a.at, a.level)), t(a.offset) && (u = Zc(Xc(l, a.offset), k)), t(a.pos) ? (u = r(b(a.pos))) : t(a.center) && (u = r(a.center)));
                return (u = sh(u, k));
            };
            c.prototype.getZoomBoxes = function () {
                var a = this.isType("map"),
                    c = this.getZoomAxes(),
                    e = function (a) {
                        var b = a[0];
                        a = a[1];
                        return Ua([
                            [b ? b.min : 0, a ? a.min : 0],
                            [b ? b.max : 0, a ? a.max : 0],
                        ]);
                    },
                    f = a
                        ? this.zoomBBoxMax
                        : e(
                              B(c, function (a) {
                                  return a && a.unZoomedRange ? a.unZoomedRange : a;
                              })
                          );
                a = a
                    ? this.zoomBBox || this.zoomBBoxSet
                    : e(
                          B(c, function (a) {
                              a && (a.zoomRange.length ? ((a = a.zoomRange), (a = a.pop ? { min: a[0], max: a[1] } : a)) : (a = a.range));
                              return a;
                          })
                      );
                return { full: f, zoom: a };
            };
            c.prototype.setZoomBox = function (a, c) {
                var b = this._isStaticDragArea,
                    d = this.getZoomAxes(),
                    g = this.isType("map"),
                    h = !1,
                    k = this.chart.currentOptions.axisToZoom || this._axisToZoom,
                    l = !1,
                    m = zs(a),
                    n = function (a, b) {
                        k && -1 < k.indexOf(a) && ((a = "x" === a ? 0 : 1), (h = d[a].zoom(b[0], b[1], !1) || h), (l = l || d[a].isZoomed));
                    },
                    p = this.isDragging;
                this.isZoomingReflow = !0;
                b && (this.isDragging = !0);
                g ? ((this.zoomBBox = a), (h = !0)) : (n("x", m[0]), n("y", m[1]));
                !1 !== c && h && this.chart.redraw(A({ forceCoordinates: !0 }, c));
                b && (this.isDragging = p);
                this.isZoomingReflow = !1;
                this.isZoomed = l;
                this.zoomUpdated();
            };
            c.prototype.add = function (a) {
                var b = this.readyDefer,
                    c = b.hold("addCA");
                this.setRootVisuals();
                this.rootPanel.add(a);
                b.release(c);
                return this;
            };
            c.prototype.replaceTokens = function (a, c) {
                c || (c = this._series && this._series.length ? this.series(0).getFormatInfo() : this.chart.getFormatInfo());
                return vi(a, this.chartAreaSet, c);
            };
            c.prototype.tokenValue = function (a) {
                return this.replaceTokens({ token: a });
            };
            c.prototype.log = function (a) {};
            return c;
        })(jc),
        AD = (function () {
            function a(a) {
                var b = this;
                this.chart = a;
                this.items = [];
                this.indexer = new Fl();
                this.freeAxes = {};
                this.allAxes = {};
                this._axes = [];
                this.enumerationData = { sI: 0, cpbOffset: 0 };
                this._reflowsCount = 0;
                this.id = de(5);
                this.axes = function () {
                    return new Kf(b._axes);
                };
            }
            a.prototype.init = function () {
                var a = $z(this.chart.currentOptions);
                if (this.userOptions) {
                    A(this.userOptions.rootAx, a.rootAx);
                    this.userOptions.rootItems = a.rootItems;
                    for (var b = 0, d = a.length; b < d; b++) this.userOptions[b] ? A(this.userOptions[b], a[b]) : (this.userOptions[b] = a[b]);
                } else this.userOptions = a;
                this.setRootVisuals().setOptions().setObjects(this.currentOptions).enumerateData();
                w(this.series(), function (a) {
                    return a.seriesDirty.resetCache();
                });
                this._calcCache = void 0;
                return this;
            };
            a.prototype.setOptions = function () {
                var a = (this.currentOptions = this.userOptions = this.normalizeOptions(this.userOptions)),
                    b = function (b) {
                        return a.rootAx[b + "Axis"];
                    };
                this.freeAxes = { x: b("x")[0], y: b("y")[0], z: b("z")[0] };
                this.allAxes = { x: b("x"), y: b("y"), z: b("z") };
                b = function (a) {
                    return a.scale && a.scale.breaks;
                };
                this.hasScaleBreaks = b(this.freeAxes.x) || b(this.freeAxes.y) || b(this.freeAxes.x);
                return this;
            };
            a.prototype.normalizeOptions = function (a) {
                a = Sa(a, "series", !0);
                var b = ["xAxis", "yAxis", "zAxis"];
                w(b, function (b) {
                    return Gh(a.rootAx, b);
                });
                w(b, function (b) {
                    return a.rootAx[b] && w(a.rootAx[b], zb);
                });
                return a;
            };
            a.prototype.enumerateData = function () {
                var a = this;
                this.enumerationData = { sI: 0, cpbOffset: 0 };
                w(this.series(), function (b) {
                    a.enumerateSeries(b);
                });
                return this;
            };
            a.prototype.enumerateSeries = function (a) {
                var b = this.enumerationData,
                    c = b.sI;
                b = b.cpbOffset;
                a._i = c++;
                a.info.type.colorByPoint && ((a.cpbIndexOffset = b), (b += a.info.type.colorByPoint ? a.userPoints.length : 1));
                this.enumerationData = { sI: c, cpbOffset: b };
            };
            a.prototype.setObjects = function (a) {
                var b = this,
                    c = b.rootVisuals.stack;
                b.log("setObjects()");
                Ub(
                    a,
                    b.items,
                    function (a, d) {
                        new ju(b, a).add(c);
                    },
                    function (a, b) {
                        return b.options(a);
                    }
                );
                return b;
            };
            a.prototype.series = function () {
                var a = [];
                w(this.items, function (b) {
                    return a.push.apply(a, H(b._series));
                });
                return a;
            };
            a.prototype.add = function (a) {
                var b = this.visualWrapper;
                (b = this.visualWrapper) ? (b.setRootVisuals(), this.setRootVisuals(), this.rootVisuals.stack.add(b.rootPanel)) : this.setRootVisuals();
                w(this.items, function (a) {});
                this.rootPanel.add(a);
                return this;
            };
            a.prototype.setRootVisuals = function () {
                var a = this.chart.renderer,
                    b = this.rootVisuals,
                    d = (this.rootPanel = this.rootPanel || a.panel({ width: "*", height: "*" }));
                b || (b = this.rootVisuals = { stack: void 0 });
                b.stack = b.stack || a.panel("stack").attr({ orientation: "y" }).add(d);
                return this;
            };
            a.prototype.replaceTokens = function (a, b) {
                return vi(a, this, b || this.getFormatInfo());
            };
            a.prototype.getFormatInfo = function () {
                return this.chart.series(0).getFormatInfo();
            };
            a.prototype.getCalcCache = function () {
                var a;
                (a = this._calcCache) || (a = this._calcCache = Cy(this));
                return a;
            };
            a.prototype.invalidateCache = function () {
                this._calcCache = void 0;
                this.chart.series().each(function (a) {
                    a.calcCache = void 0;
                });
            };
            a.prototype.invalidate = function () {
                this.each(function (a) {
                    return a.invalidate();
                });
            };
            a.prototype.each = function (a) {
                w(this.items, a);
            };
            a.prototype.log = function (a) {};
            a.prototype.tryReflow = function (a) {
                return this.reflow(a, !1, !1, !0);
            };
            a.prototype.reflow = function (a, b, d, e) {
                var c = this;
                if (c._reflowStarted) (c._needRenderData = c._needRenderData || b), (c._needLayoutRefresh = c._needLayoutRefresh || d);
                else if (((c._reflowStarted = !0), (c._needRenderData = c._needLayoutRefresh = !1), (e && !c.needReflow()) || 9 < c._reflowsCount)) (c._reflowsCount = 0), (c._reflowStarted = !1);
                else {
                    var g,
                        h = c.items,
                        k = [],
                        l = {};
                    e = function (a) {
                        return w(h, m[a]);
                    };
                    var m = {
                        beforeMeasure: function (d) {
                            var e = d.readyDefer,
                                f = e.hold("rootSetSize");
                            k.push(function () {
                                return e.release(f);
                            });
                            d.rootRect = d.rootVisuals.grid.getBbox();
                            b && (d.isDirtyPreRender = !0) && (d._cancelBubble = !1);
                            d._updateOptions = a || d._updateOptions;
                            d.preRender();
                            g = g || (!d.isZoomingReflow && (d.isDragging || d.isZooming));
                            l[d.id] = { renderDataResult: !1 };
                            c.invalidateCache();
                        },
                        startMeasure: function (a) {
                            var b = a.rootVisuals;
                            b.titleBox.applyOptions();
                            b.titleBoxPanel.attr({ width: null });
                            a.measureAxes_resetOverflows();
                        },
                        measureAxes: function (a) {
                            return !a.isMultiType() && a.measureAxes();
                        },
                        applyOverflows: function (a) {
                            return !a.isMultiType() && Il(a, a.overflows);
                        },
                        endMeasure: function (a) {
                            var b = a.rootVisuals;
                            a.rootRect = b.grid.getBbox();
                            a = b.content.getGlobalBbox().width;
                            b.titleBoxPanel.attr({ width: a });
                            b.titleBox.rootPanel.attr({ maxWidth: a });
                        },
                        tryRenderData: function (b) {
                            l[b.id].renderDataResult = b.tryRenderData(a);
                        },
                        renderData: function (e) {
                            var f = l[e.id].renderDataResult;
                            !f && (f = b && e.renderData(a));
                            !f && d && c.rootPanel.refresh();
                        },
                    };
                    e("beforeMeasure");
                    if (!g || d) {
                        e("startMeasure");
                        c.chart.refreshAnnotations();
                        c.axes().each(function (a) {
                            return a.syncLegend();
                        });
                        e("measureAxes");
                        if (1 < h.length) {
                            var n = [0, 0, 0, 0],
                                p,
                                q;
                            w(h, function (a) {
                                p = a.axSizes;
                                ob(4, function (a) {
                                    return (n[a] = Math.max(n[a], p[a]));
                                });
                            });
                            var r = n[3],
                                t = n[1];
                            w(h, function (a) {
                                q = a.overflows.slice(0);
                                p = a.axSizes;
                                q[1] = Math.max(q[1], t - p[1]);
                                q[3] = Math.max(q[3], r - p[3]);
                                Il(a, q);
                            });
                        } else e("applyOverflows");
                        var x = (c.measureResult = Oy(c));
                        c.rootPanel.attr({ margin: x.casMargin });
                        c.rootPanel.refresh(!0);
                        e("endMeasure");
                        Qy(c, a);
                        e("tryRenderData");
                    }
                    e("renderData");
                    w(k, function (a) {
                        return a();
                    });
                    c._reflowStarted = !1;
                    c._reflowsCount++;
                    c.reflow(a, c._needRenderData, c._needLayoutRefresh, !c._needRenderData && !c._needLayoutRefresh);
                }
            };
            a.prototype.chartItems = function () {
                var a = this.chart,
                    b = a.toolbar();
                a = a.legends().items.concat(a.annotations().items);
                b && (a = a.concat(b.children()));
                return a;
            };
            a.prototype.needReflow = function () {
                var a;
                w(this.items, function (b) {
                    if (!a) {
                        var c = b.rootVisuals.grid.getBbox(),
                            e = b.rootRect;
                        b.axes().each(function (b) {
                            b.requireReflow() && (a = !0);
                        });
                        !c.width || !c.height || (e && na(e.width, 4) === na(c.width, 4) && na(e.height, 4) === na(c.height, 4))
                            ? c.width || c.height || Ma.emit("warning", b.id, "cantGetSize", { container: b.chart.getWrapper() })
                            : (a = !0);
                    }
                });
                return a;
            };
            return a;
        })(),
        BD = (function (a) {
            function c(b, d) {
                d = a.call(this, b, d) || this;
                d.items = b;
                d.kindObject = c;
                d.points = Xa(
                    wb,
                    wo(d, function (a) {
                        return a.series().points().items;
                    }),
                    mk(d, function () {
                        throw "Not implemented. ";
                    })
                );
                d.series = Xa(
                    Ym,
                    wo(d, function (a) {
                        return a.series().items;
                    }),
                    mk(d, function () {
                        throw "Not implemented. ";
                    })
                );
                return d;
            }
            K(c, a);
            return c;
        })(wb),
        CD = (function (a) {
            function c(b, d) {
                d = a.call(this, b, d) || this;
                d.items = b;
                d.kindObject = c;
                d.entries = Xa(
                    wb,
                    aA(d),
                    mk(d, function () {})
                );
                return d;
            }
            K(c, a);
            return c;
        })(wb),
        Yl = {
            "modules/debug": {
                checker: function (a) {
                    return !0 === a.debug;
                },
            },
            "modules/types": {
                checker: function (a, c, b, d) {
                    if (a.navigator || J(b, "types") || (d && ds(d))) return !0;
                    if ((c = a.series) && c.length) for (b = 0; b < c.length; b++) if (d && ds(d, c[b])) return !0;
                    d = Hb(a, { series: void 0, targetElement: void 0 });
                    a = a.series && a.series[0];
                    d.series = a && (a.map ? {} : { name: a.name, points: a.points ? [a.points[0]] : [] });
                    return nr.test(JSON.stringify(d)) ? !0 : !1;
                },
            },
            "modules/toolbar": {
                checker: function (a, c) {
                    void 0 === c && (c = !1);
                    if (!c) return !1;
                    if (a.navigator || ((c = a.axisToZoom) && "none" !== c) || a.export || (t(a.toolbar) && !1 !== a.toolbar.visible)) return !0;
                    for (var b in a) if (Hg(b, "toolbar") && !1 !== a.toolbar_visible && !1 !== a["toolbar.visible"]) return !0;
                    return !1;
                },
            },
            "modules/maps": {
                checker: function (a) {
                    return a.type && Hg(a.type, "map");
                },
            },
            "modules/accessibility": {
                checker: function (a) {
                    return a.tabIndex || a.description;
                },
            },
            "https://code.jscharting.com/polyfill/intl": {
                checker: function (a) {
                    return !T.Intl;
                },
            },
            "modules/datagrid": {
                checker: function (a) {
                    return (a.grid && !1 !== a.grid.enabled) || (a.grid_enabled && !1 !== a.grid_enabled);
                },
            },
        },
        fA = fa("pie organization gauge radar treemap funnel cone pyramid heatmap calendar venn".split(" ")),
        Hi = [],
        sc = {},
        Zl = {
            animation: function (a, c) {
                c.renderer.attr({ transition: { animation: a } });
            },
            box: function (a, c, b) {
                a = Cg(a);
                a.fill && c._loader && c._loader.options({ fill: a.fill });
                b.boxAttr = a;
                a.padding && c.isRendered && (b.needRedraw = !0);
            },
            loading: function (a, c) {
                c._loader && c._loader.options(a);
            },
            width: function (a, c, b) {
                c.isRendered && Z(b.layoutAttr, "width", a);
            },
            height: function (a, c, b) {
                c.isRendered && Z(b.layoutAttr, "height", a);
            },
            targetElement: function (a, c, b) {
                c.isRendered && (O(a) && (a = ba.getElementById(a)), Z(b.layoutAttr, "container", a));
            },
            annotations: function (a, c, b) {
                c.isRendered && (c.annotations(a), (b.needRedraw = !0));
            },
            defaultAnnotation: function (a, c) {
                c.isRendered && c.annotations().options({});
            },
            defaultBox: function (a, c, b) {
                c.isRendered && (c.annotations().options({}), (b.needRefresh = !0));
            },
            defaultSeries: function (a, c, b) {
                c.isRendered &&
                    (c.series().each(function (a) {
                        return a.seriesDirty.all(!0);
                    }),
                    c.series().options({}, !1),
                    (b.needRedraw = !0));
            },
            defaultCultureName: function (a, c, b) {
                c.isRendered &&
                    (c.axes().each(function (a) {
                        return a.invalidate().options({}, !1);
                    }),
                    c.chartAreaSet.invalidate(),
                    (b.needRedraw = !0));
            },
            palette: function (a, c) {
                c.palette = wy("palette", a);
                c.series().each(function (a) {
                    return a.seriesDirty.all(!0);
                });
                c.dirty = !0;
                c._spDirty = !0;
            },
            title: function (a, c) {
                c.isRendered && (c.chartAreas(0).options({ title: a }), a.position && (c.dirty = !0));
            },
            type: function (a, c, b) {
                c.isRendered &&
                    (c.ctManager.init(c.currentOptions),
                    w(c.chartAreaSet.items, function (a) {
                        a.ctManager.init(c.currentOptions);
                    }),
                    c.series().each(function (a) {
                        return a.seriesDirty.all(!0);
                    }),
                    (b.needRedraw = !0),
                    c.calIndexer ? (c.calIndexer.options({}), (b.updateCalendar = !0)) : (c.typeContextOptions = c.typeContextOptions || {}));
                c.ctManager.hasSetting("behavior", "noLegend") && ((c.typeContextOptions || (c.typeContextOptions = {})).legend = { visible: !1 });
            },
            mapping: function (a, c) {
                c.isRendered &&
                    (J(a, "base") || J(a, "referenceLayers") || J(a, "projection")
                        ? c.chartAreas(0).triggerUser("updateMapData", [c.chartAreas(0), !1])
                        : J(a, "projection") && a.projection !== c.currentOptions.projection && c.chartAreas(0).triggerUser("updateMapData", [c.chartAreas(0), !1]),
                    (c.dirty = !0));
            },
            axisToZoom: function (a, c) {
                ("" === a || "none" === a) && (a = (a = c.toolbar()) && a.items ? a.items("zoom") : void 0) && a.options({ visible: !1 });
            },
            series: function (a, c, b) {
                c.isRendered && c.calIndexer ? ((c.userOptions.series = a), (b.updateCalendar = !0), (b.needRedraw = !0)) : c.isRendered && (c.chartAreas(0).options({ series: a }, !1), (b.needRedraw = !0));
            },
            defaultTooltip: function (a, c, b) {
                c.isRendered &&
                    (c.chartAreas().each(function (b) {
                        return b.tooltip.options(a);
                    }),
                    c.series().each(function (b) {
                        return b.tooltip.options(a);
                    }));
            },
            defaultAxis: function (a, c, b) {
                c.isRendered && (c.axes().options({}, !1), (b.needRefresh = !0));
            },
            xAxis: function (a, c, b) {
                !a.pop && c.isRendered && (c.axes("x").options(a, !1), (b.needRefresh = !0));
            },
            yAxis: function (a, c, b) {
                !a.pop && c.isRendered && (c.axes("y").options(a, !1), (b.needRefresh = !0));
            },
        },
        $l = {},
        fs,
        ku = function () {
            return { fontFamily: "tahoma, geneva, sans-serif", fontSize: "12px", fontWeight: "normal", fontStyle: "normal", "user-select": "none", transition: { animation: { duration: 330, easing: "ease-in-out-circ" } } };
        },
        DD = function (a) {
            var c = { defaultAnnotation: Pm(a), animation: ku().transition.animation, languageStrings: lA, debug: !0 };
            a.ctManager.isType("map") && L(c, { legend: { template: "%icon %name" }, axisToZoom: "xy" });
            return c;
        },
        $m = {},
        lu,
        lj = (function () {
            function a(c, b) {
                void 0 === c && (c = {});
                this.kind = "Chart";
                this.cpbIndex = 0;
                this.isRtlCulture = !1;
                this.flowEvents = {
                    optionsApplied: new sd(),
                    beforeSetUserOptions: new sd(),
                    beforeApplyLayout: new sd(),
                    beforeSnapshot: new sd(),
                    afterSnapshot: new sd(),
                    beforeOptionsNormalization: new sd(),
                    beforeDefaultsApply: new sd(),
                    beforeRenderSeries: new sd(),
                    nextRenderSeries: new sd(),
                };
                var d = this;
                if (!(d instanceof a)) return new a(c, b);
                d.rootVisuals = { box: void 0, front: void 0, tooltip: void 0 };
                d.internal = {
                    ctManager: d.ctManager,
                    mappingInfo: { contextMaps: "", dataMaps: [], allMaps: [], loadedCallStack: [], regionList: [], mapsLoading: !1, internalMapsUsed: !1, customMapsUsed: !1, projection: "mercator", mapsLoadingList: [] },
                };
                d._annotations = [];
                d._legends = [];
                d._highlights = [];
                d.palette = Fh(0);
                d.use3D = !1;
                d.internalConfigs = { chartAreas: [] };
                d.ctManager = Ht();
                d.mapsLoaded = !1;
                d.action = new ED();
                d.dirty = !0;
                var e = 1 === arguments.length ? [arguments[0]] : Array.apply(null, arguments),
                    f = B(e, I);
                "string" === f[0] || Fv(e[0]) ? ((c = e[1] || {}), (c.targetElement = e[0]), (b = e[2])) : "object" === f[0] && ((c = e[0]), (b = e[1]));
                var g = Ii(c),
                    h = function () {
                        d.triggerUser("load");
                        d.checkGridOption();
                        d.dirty = !1;
                        d.loading(!1);
                        d.inited = !0;
                        b && b.call(d, d);
                    };
                d.id = g.id || de(5);
                d.isColorized = !0;
                d.initRenderer(g);
                d.renderer.refresh();
                d.currentOptions = g;
                d.ctManager.init(g);
                (g && !1 === g.loading) || d.loading(!0);
                dg = g.baseUrl;
                cs(
                    d,
                    g,
                    function () {
                        d.init(g, h);
                    },
                    !0
                );
            }
            a.prototype.toGrid = function (a, b) {
                var c = this,
                    e = Ii(b),
                    f = (this._grid = sc.chartToGrid && sc.chartToGrid(this, a, e));
                if (f)
                    return (
                        (f.then = function (a) {
                            return a && a(f);
                        }),
                        f
                    );
                var g = { grid_enabled: !0 };
                e && ((g.baseUrl = e.baseUrl), (g.notificationContainer = e.notificationContainer));
                return gf(function (b, d) {
                    Xl("modules/datagrid", g, function () {
                        c._grid = sc.chartToGrid && sc.chartToGrid(c, a, e);
                        b(c._grid);
                    });
                });
            };
            a.prototype.checkGridOption = function () {
                var a = this,
                    b = a.currentOptions.grid,
                    d = a.currentOptions.targetElement;
                b &&
                    (!0 === b.enabled
                        ? a._grid
                            ? (a._grid.setDataFromChart(!1), a._grid.options(b))
                            : a.toGrid(d, L({ className: "dataTable", exportFile: !0 }, b)).then(function (b) {
                                  a._gridSwitch = sc.createGridSwitch && sc.createGridSwitch(a, d, b);
                              })
                        : !1 === b.enabled && (a._grid && a._grid.destroy(), a._gridSwitch && a._gridSwitch.destroy(), delete a._grid, delete a._gridSwitch),
                    a.triggerOptionsApplied("grid", a));
            };
            a.prototype.init = function (a, b) {
                var c = this,
                    e = c.options("navigator.enabled");
                a = c.userOptions = yf(a);
                if (!c.renderer.renderer.isRootDestroyed()) {
                    c.chartItemManager = new OC(this);
                    c.initFP();
                    Da($m, function (a) {
                        return $m[a](c);
                    });
                    if (!c.ctManager.isType("calendar") && c.data && !c.userOptions.series) {
                        var f = mp(c.data.val);
                        c.userOptions.series = [
                            {
                                points: B(f, function (a) {
                                    return { x: a[0], y: a[1], z: a[2] };
                                }),
                            },
                        ];
                    }
                    c.seriesCount = a.series ? a.series.length : 0;
                    c.isRtlCulture = Is(a.defaultCultureName);
                    c.setRootVisuals();
                    c.disableAnimation(!1);
                    c.flowEvents.beforeSetUserOptions.trigger({ type: "chart", owner: c });
                    c.options(c.userOptions);
                    var g = c.chartAreaSet.add();
                    c.drawAnnotations();
                    c.flowEvents.beforeApplyLayout.trigger({ type: "chart", owner: c });
                    c.rootPanel.refresh(!0);
                    g.tryReflow();
                    c._lastRefreshedRect = c.renderer.getRootBox();
                    c.rootPanel.on("finalSize", function (a) {
                        var b = c._lastRefreshedRect;
                        (b && b.width === a.width && b.height === a.height) || ((c._lastRefreshedRect = a), g.tryReflow());
                    });
                    c.enableAnimation();
                    var h = [],
                        k = function () {
                            c.isRendered = !0;
                            h.length || b.call(c, c);
                        };
                    w(c.chartAreaSet.items, function (a) {
                        !a.isRendered &&
                            a.isRendering &&
                            (h.push(a.id),
                            e && (a.navHold = a.readyDefer.hold("Navigator")),
                            a.awaitRender(function () {
                                h.splice(h.indexOf(a.id), 1);
                                k();
                            }));
                    });
                    k();
                }
            };
            a.prototype.exportImage = function (a, b) {
                void 0 === a && (a = {});
                this.renderer.attr("disableAnimation", !0);
                this.flowEvents.beforeSnapshot.trigger({ type: "chart", owner: this });
                this.triggerUser("beforeExport");
                this.rootPanel.refresh();
                
                this.chartAreaSet.items.forEach(function (a) {
                    return a.clickOff(null, !0);
                });

                b && this.options(b);
                b = a.imageType || a.type;
                b = { png: "image/png", jpg: "image/jpeg", pdf: "application/pdf", svg: "image/svg+xml" }[b.toLowerCase()] || b;
                var c = a.server || "https://export.jscharting.com/download",
                    e = this.getSVG(),
                    f = a.title || this.options("title_label_text"),
                    g = a.author,
                    h = a.subject,
                    k = a.keywords,
                    l = a.comment,
                    m = a.rating;
                    
                this.submitForm(e.svgString, b, c, a.width, e.width, e.height, gs(), f, g, h, k, l, m);
                this.flowEvents.afterSnapshot.trigger({ type: "chart", owner: this });
                this.triggerUser("afterExport");
                this.rootPanel.refresh();
                this.renderer.attr("disableAnimation", !1);
            };
            a.prototype.print = function () {
                var a = this,
                    b = a.getWrapper(),
                    d = b.style,
                    e = a.renderer,
                    f = T,
                    g = f.document.documentElement,
                    h = g.style;
                a.chartAreaSet.items.forEach(function (a) {
                    return a.clickOff(null, !0);
                });
                h.visibility = "hidden";
                var k = L({}, d),
                    l = e.attr("width"),
                    m = e.attr("height"),
                    n = function (a) {
                        a = a.getBoundingClientRect();
                        return { top: a.top + (f.pageYOffset || g.scrollTop), left: a.left + (f.pageXOffset || g.scrollLeft) };
                    };
                n = (b = (function (a) {
                    for (var b = (a = a.parentNode) && a.style && a.style.position, c = ["absolute", "relative", "fixed"]; a && (!b || !~c.indexOf(b)); ) b = (a = a.parentNode) && a.style && a.style.position;
                    return a;
                })(b))
                    ? n(b)
                    : { left: 0, top: 0 };
                A(d, { visibility: "visible", position: "absolute", top: -n.top, left: -n.left });
                e.attr("disableAnimation", !0);
                e.attr("width", "21cm");
                e.attr("height", e.rootBox.height || "100%");
                a.flowEvents.beforeSnapshot.trigger({ type: "chart", owner: a });
                a.triggerUser("beforeExport");
                e.refresh();
                setTimeout(function () {
                    f.focus();
                    f.print();
                    setTimeout(
                        function () {
                            A(d, { visibility: k.visibility, position: k.position, top: k.top, left: k.left });
                            e.attr("width", l);
                            e.attr("height", m);
                            a.flowEvents.afterSnapshot.trigger({ type: "chart", owner: a });
                            a.triggerUser("afterExport");
                            e.refresh();
                            e.attr("disableAnimation", !1);
                            h.visibility = "visible";
                        },
                        RA ? 3e3 : 1
                    );
                }, 1);
            };
            a.prototype.submitForm = function (a, b, d, e, f, g, h, k, l, m, n, p, q) {
                var c = ba.createElement("form");
                c.action = d;
                c.method = "POST";
                this.createFormInput(c, "svg", a);
                this.createFormInput(c, "type", b);
                this.createFormInput(c, "width", e);
                this.createFormInput(c, "actualWidth", f);
                this.createFormInput(c, "actualHeight", g);
                this.createFormInput(c, "version", h);
                this.createFormInput(c, "title", k);
                this.createFormInput(c, "author", l);
                this.createFormInput(c, "subject", m);
                this.createFormInput(c, "keywords", n);
                this.createFormInput(c, "comment", p);
                this.createFormInput(c, "rating", q);
                ba.body.appendChild(c);
                c.submit();
                //ba.body.removeChild(c);
            };
            a.prototype.createFormInput = function (a, b, d) {
                if (d) {
                    var c = ba.createElement("input");
                    c.value = encodeURIComponent(d);
                    c.name = b;
                    a.appendChild(c);
                    return c;
                }
            };
            a.prototype.toolbar = function () {
                return this._toolbar;
            };
            a.prototype.initFP = function () {
                var a = this;
                a.series = Xa(
                    Ym,
                    function () {
                        return a.chartAreaSet.series();
                    },
                    function (b) {
                        w(b, zb);
                        a.userOptions.series = b;
                        var c = a.chartAreas(0).readyDefer,
                            e = c.hold("splS");
                        a.chartAreas(0).spliceSeries(0, a.chartAreas(0).series().items.length, b, !1);
                        a.redraw({ animation: a.currentOptions.animation });
                        c.release(e);
                    },
                    {
                        push: function (b, c) {
                            var d = a.chartAreas(0);
                            b = d.addSeries(b, !1);
                            d.triggerUser("updateMapData", [d, b]);
                            !1 !== c && a.redraw(c);
                            a.action.log("data");
                        },
                        splice: function (b, c, e, f) {
                            a.chartAreas(0).spliceSeries(b, c, ja(e) ? e : [e], !1);
                            !1 !== f && a.redraw(f);
                            a.action.log("data");
                        },
                    }
                );
                a.annotations = Xa(
                    wb,
                    function () {
                        return a._annotations;
                    },
                    function (b) {
                        w(b, zb);
                        Z(a.userOptions, "annotations", b);
                        a.drawAnnotations();
                        a.chartAreaSet.reflow(null, !1, !0);
                    },
                    {
                        push: function (b, c) {
                            zb(b);
                            a.userOptions.annotations = a.userOptions.annotations || [];
                            a.userOptions.annotations.push(b);
                            a.drawAnnotations();
                            Pa(c) && (c = Sa(c));
                            a.chartAreaSet.reflow(c, !1, !0);
                        },
                        splice: function (b, c, e, f) {
                            var d;
                            w(e, zb);
                            a.userOptions.annotations = a.userOptions.annotations || [];
                            (d = a.userOptions.annotations).splice.apply(d, H([b, c], e));
                            a.drawAnnotations();
                            Pa(f) && (f = Sa(f));
                            a.chartAreaSet.reflow(f, !1, !0);
                        },
                    }
                );
                a.chartAreas = Xa(
                    BD,
                    function () {
                        return a.chartAreaSet.items;
                    },
                    function (a) {}
                );
                a.xAxis = Xa(
                    Kf,
                    function () {
                        a.chartAreaSet.axes({ prefix: "x" });
                    },
                    function (b) {
                        a.currentOptions.xAxis = b;
                    }
                );
                a.axes = Xa(
                    Kf,
                    function () {
                        return a.chartAreaSet.axes().items;
                    },
                    function (a) {}
                );
                a.legends = Xa(
                    CD,
                    function () {
                        return a._legends;
                    },
                    function (a) {},
                    { push: function (a, c) {}, splice: function (a, c, e, f) {} }
                );
            };
            a.prototype.options = function (a, b) {
                var c = this,
                    e = I(a);
                if ("undefined" === e) return c.currentOptions;
                if ("string" === e) return C(c.currentOptions, a);
                var f = c.inited && !c.isRendered && c.loading(!0);
                c.ctManager.init(c.currentOptions);
                c.initApi();
                c.isRendered && (a = Sa(a, "series,targetElement"));
                a = iA(c, a, b);
                a = c.setUserOptions(a);
                c.optionsNormalized = !0;
                cs(c, a, function () {
                    hA(c, a, b);
                    a.series && !c.isRendered ? c.initControls() : c.dirty && !1 !== b && (c.setCursor(), c.chartAreaSet.invalidate(), c.redraw());
                    c.inited && a.grid && c.checkGridOption();
                    c.triggerOptionsApplied("chart", c);
                    f && c.loading(!1);
                });
                b &&
                    b.then &&
                    Ce.await(function () {
                        b.then && (b.then.call(c), delete b.then);
                    });
                return c;
            };
            a.prototype.triggerOptionsApplied = function (a, b) {
                this.flowEvents.optionsApplied.trigger({ type: a, owner: b });
            };
            a.prototype.replaceTokens = function (a, b) {
                return this.chartAreaSet.series().length ? vi(a, this.chartAreaSet, this.getFormatInfo()) : a;
            };
            a.prototype.tokenValue = function (a) {
                return this.replaceTokens({ token: a });
            };
            a.prototype.getFormatInfo = function () {
                return this.chartAreaSet.series().length ? this.series(0).getFormatInfo() : { x: {}, y: {}, z: {} };
            };
            a.prototype.getSVG = function () {
                var a = this.getWrapper().getElementsByTagName("svg")[0],
                    b = a.getBoundingClientRect(),
                    d = a.outerHTML;
                d || ((d = new XMLSerializer().serializeToString(a)), (d = d.replace('xmlns="http://www.w3.org/2000/svg"', "")), (d = d.replace('xmlns:NS1=""', "")), (d = d.replace('NS1:xmlns:xlink="http://www.w3.org/1999/xlink"', "")));
                return { svgString: d, width: b.width, height: b.height };
            };
            a.prototype.zoom = function (a, b) {
                return this.chartAreas(0).zoom(a || 1, b);
            };
            a.prototype.setUserOptions = function (a) {
                var b = a.series,
                    c = a.data;
                delete a.series;
                delete a.data;
                var e = this.normalizeOptions(a);
                this.userOptions = A(this.userOptions, e);
                var f = DD(this);
                this.flowEvents.beforeDefaultsApply.trigger({ type: "chart", owner: this, options: f });
                f = A(f, this.userOptions);
                w(["defaultBox", "defaultAxis"], function (a) {
                    f[a] && (f[a] = Nm(f[a]));
                });
                this.currentOptions = A(this.currentOptions, this.contextOptions(), f);
                b && (e.series = this.currentOptions.series = b);
                c && (e.data = this.currentOptions.data = c);
                a.defaultCultureName && (this.isRtlCulture = Is(a.defaultCultureName));
                return e;
            };
            a.prototype.contextOptions = function () {
                return C(this, "typeContextOptions.chart") || {};
            };
            a.prototype.normalizeOptions = function (a) {
                var b = a.annotations;
                b && w(b, zb);
                a.defaultPoint && Z(a, "defaultSeries.defaultPoint", A(C(a, "defaultSeries.defaultPoint") || {}, a.defaultPoint || {}));
                (b = a.hatchPalette) && !0 === b && (a.hatchPalette = mu("hatch"));
                a.export && Vf(a, ["toolbar", "items", "export", "visible"], !0);
                this.flowEvents.beforeOptionsNormalization.trigger({ type: "chart", owner: this, options: a });
                return a;
            };
            a.prototype.initApi = function () {
                var a = this.userOptions,
                    b = this.internal,
                    d = a.template;
                delete a.template;
                b.spv = Z;
                a = Sa(a, "data,series,targetElement");
                a.series = a.series || [];
                d && ((d = Sa(d)), (a = qd(a, d)));
                this.currentOptions = A({}, a);
            };
            a.prototype.initControls = function () {
                this.drawLegends();
                this.chartAreaSet.init();
            };
            a.prototype.initRenderer = function (a) {
                var b = a.targetElement,
                    c = O(b) ? ba.getElementById(b) : b;
                c || (O(b) && Ma.emit("error", this.id, "targetElIdNotFound", { data: [b] }));
                (this.renderer = new Al({ container: c, width: this.getSizeOrMin(a.width, 25), height: this.getSizeOrMin(a.height, 25), defaultWidth: 640, defaultHeight: 350, pixelCorrection: a.pixelCorrection })).attr(ku());
            };
            a.prototype.getSizeOrMin = function (a, b) {
                var c = 0;
                "number" === typeof a ? (c = a) : "string" === typeof a && -1 === a.indexOf("%") && (c = parseInt(a));
                return c ? Math.max(c, b) : a;
            };
            a.prototype.setRootVisuals = function () {
                var a = this,
                    b = a.renderer,
                    d = { width: "*", height: "*" },
                    e = a.rootPanel;
                e ||
                    (a.isRtlCulture && ((d.direction = "rtl"), (d["text-anchor"] = "end")),
                    (e = a.rootPanel = b.panel(d)),
                    e.on("touchstart", function (b) {
                        return a.touched(!0);
                    }));
                d = a.rootVisuals = a.rootVisuals || { box: void 0, front: void 0, uiItemsFront: void 0, itemsBox: void 0 };
                var f = (d.box = d.box || b.box({ width: "*", height: "*", stroke: "none", fill: "#FFFFFF", margin: 3 }).add(e));
                d.uiItemsFront = d.uiItemsFront || b.panel({ width: "*", height: "*" }).add(e);
                d.front = d.front || b.panel({ width: "*", height: "*" }).add(e);
                a.isColorized &&
                    !a.chartAreaSet &&
                    (a.renderer.getRootBox(),
                    (e = b.box({ xAlignment: "left", yAlignment: "bottom", cursor: "pointer", borderWidth: 0, height: 17, fill: "transparent", margin: [0, 0, 4, 4] }).add(e)),
                    a.renderer.renderer
                        .element("title")
                        .attr({ text: "Chart created using ".concat("JSCharting") })
                        .add(e),
                    b
                        .svgContainer(
                            '<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="8.4" x2="8.4" y1="16.327" y2="1.765"><stop offset="0" stop-color="#4a4949"/><stop offset="1" stop-color="#666565"/></linearGradient><linearGradient id="b"><stop offset="0" stop-color="#0d48a1"/><stop offset="1" stop-color="#20ade2"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="24.226" x2="24.226" xlink:href="#b" y1="16.343" y2="4.618"/><filter id="d" width="120%" height="120%" x="-10%" y="-10%"><feColorMatrix type="saturate" values="0"></feColorMatrix></filter><g opacity=0.4 filter="url(#d)" id=\'brandingLogo\'><rect x=0 y=0 width=31 height=16.4 fill="rgba(255,255,255,0)"/><path d="m4.7 12.9s.1.9-.9.9c-1.2 0-1.9-1.3-1.9-1.3l-1.9 1.8s1.7 2 3.9 2c2.4 0 3.5-1.6 3.5-2.6v-11.6h-2.7zm6.7-6.9c-.7-.7.9-3 3.2-.2l1.9-1.8s-1.7-2.2-4-2.2c-2.8 0-4.8 3.2-3.4 5 1.8 2.4 5.1 4.2 5.1 5.4 0 .7-.4 1.5-1.4 1.5-2.1 0-2.5-1.8-2.5-1.8l-2.3 1.4s1.5 3 4.3 3c2.7 0 4.5-1.3 4.5-4.3-.1-2.2-4.2-4.7-5.4-6z" fill="#FF5353"/><path d="m23.7 0c-2.3-.1-5.1 2.1-5.1 2.1l5.3 5.2-.2-7.3z" fill="#1faae0"/><path d="m25.1 1-.3 7.2 3-6.4c.1 0-.9-.6-2.7-.8z" fill="#0e4da4"/><path d="m28.8 2.7-1.2 2.2s1.7 1.1 1.7 1.3l1.7-1.7s-1.6-1.7-2.2-1.8z" fill="#1d9fd9"/><path d="m23.3 13.6c-5.2-2-2.5-7.5-2.5-7.5l-1.8-1.5c-3.4 4.5-.7 10.4 3.3 11.4 6 1.5 8.7-2.4 8.7-2.4l-1.7-1.7c-2 1.7-4.1 2.5-6 1.7z" fill="url(#c)"/></g>'
                        )
                        .add(e),
                    e.on("click", function (a) {
                        ba.location.href = "https://jscharting.com";
                    }),
                    a.renderer.renderer.cssText(
                        "#brandingLogo:hover{\n\t\t\t\topacity:1;\n\t\t\t\tfilter:none;\n\t\t\t} #brandingLogo {\n\t\t\t\t-webkit-transition: opacity 1s ease;\n\t\t\t\t-moz-transition: opacity 1s ease;\n\t\t\t\t-o-transition: opacity 1s ease;\n\t\t\t\ttransition: opacity 1s ease;\n\t\t\t}"
                    ));
                a.chartAreaSet = a.chartAreaSet || new AD(this).add(f);
                d.itemsBox = d.itemsBox || b.panel({ width: "*", height: "*" }).add(f);
            };
            a.prototype.boxDefaults = function (a) {
                var b = Sa(this.userOptions.defaultBox);
                a = Cf(z(a, this.getStyling()));
                b && (b.fill || (b.outline && 0 !== b.outline.width)) && (a.boxVisible = !0);
                return b ? A(a, b) : a;
            };
            a.prototype.getStyling = function () {
                var a = this.currentOptions,
                    b = Sa(this.userOptions.defaultBox);
                return z(a.legacyStyling, b && b.boxVisible) ? 1 : 0;
            };
            a.prototype.touched = function (a) {
                if (t(a)) lu = !0;
                else return lu;
            };
            a.prototype.setCursor = function (a) {
                this.renderer.renderer.setCursor(a);
            };
            a.prototype.getCursor = function () {
                return this.renderer.renderer.getCursor();
            };
            a.prototype.getWrapper = function () {
                return C(this, "renderer.renderer.wrapper.el");
            };
            a.prototype.resetTimers = function () {
                this.chartAreas().each(function (a) {
                    return a.resetTimers();
                });
            };
            a.prototype.redraw = function (a) {
                var b = this;
                if (!1 === b.dirty) {
                    var c = b.renderer.getRootBox(),
                        e = b.renderer.renderer.isDefaultSizeSet();
                    if (!c.height || !c.width || e) {
                        b.renderer.refreshRootBox();
                        b.renderer.refresh();
                        b.renderer.renderer.rootResize();
                        e
                            ? setTimeout(function () {
                                  return b.renderer.renderer.resubscribeResize();
                              }, 1e3)
                            : b.renderer.renderer.resubscribeResize();
                        return;
                    }
                }
                a = Sa(a);
                c = b.disableAnimation(a);
                b.tooltipRef && b.tooltipRef.hide();
                b.series().each(function (a) {
                    return a.visualizer.hideHalo();
                });
                b.chartAreaSet.enumerateData();
                b.chartAreaSet.reflow(a, !0);
                b.triggerUser("redraw");
                c && b.enableAnimation();
                b.dirty = !1;
                a &&
                    a.then &&
                    Ce.await(function () {
                        a.then && (a.then.call(b), delete a.then);
                    });
            };
            a.prototype.updateSideItems = function (a) {
                this._grid && this._grid.setDataFromChart(a);
            };
            a.prototype.disableAnimation = function (a) {
                var b = this.renderer;
                (a = t(a) && (!1 === a || !1 === a.animation) && b.disableAnimation()) && b.attr("disableAnimation", !0);
                return a;
            };
            a.prototype.enableAnimation = function () {
                this.renderer.attr("disableAnimation", !1);
            };
            a.prototype.hideTooltip = function () {
                var a = this.tooltipRef;
                a && a.isVisible && a.hideActiveTooltip(this);
            };
            a.prototype.zoomInOut = function (a) {};
            a.prototype.refreshAnnotations = function () {
                this.annotations().each(function (a) {
                    var b = a.options("label_text");
                    b && -1 < b.indexOf("%") && a.applyOptions();
                });
            };
            a.prototype.drawAnnotations = function (a) {
                var b = this;
                (a = b.userOptions.annotations) &&
                    Ub(
                        a,
                        b._annotations,
                        function (a) {
                            a = new ej(b, a);
                            a.add(b.rootVisuals.itemsBox);
                            return a;
                        },
                        function (a, b) {
                            return b.options(a);
                        }
                    );
            };
            a.prototype.requestLegend = function (a) {
                return this._legends[0];
            };
            a.prototype.drawLegends = function (a) {
                var b = this;
                a = b.options("legend") || {};
                var c = b.rootVisuals.itemsBox;
                Ub(
                    [a],
                    b._legends,
                    function (a) {
                        return new zD(b, a).add(c);
                    },
                    function (a, b) {
                        return b.options(a);
                    }
                );
            };
            a.prototype.triggerUser = function (a, b) {
                var c = this.currentOptions.events;
                c = (a = c && mh(c, a)) && c[a];
                if (Fb(c)) return c.call(this, b);
            };
            a.prototype.loading = function (a, b) {
                return (this._loader = this._loader || new XC(this.renderer, L({ fill: this.currentOptions.box ? this.currentOptions.box.fill : "#fff" }, this.currentOptions.loading || {}))).loading(a, b);
            };
            a.prototype.ensureLoadingApplied = function (a) {
                this._loader ? this._loader.ensureAnimationApplied(a) : a();
            };
            a.prototype.destroy = function () {
                this._selDeBouncer && this._selDeBouncer.clearAll();
                this.chartAreaSet &&
                    w(this.chartAreaSet.items, function (a) {
                        return a.debounce.clearAll();
                    });
                this._loader && this._loader.destroy();
                this.renderer.destroy();
            };
            a.prototype.dispose = function () {
                this.destroy();
            };
            a.prototype.getSmartPalette = function (a) {
                var b = this.chartItemManager,
                    c,
                    e,
                    f = I(a);
                if ("string" === f) return b.exists(a);
                var g = b.getSPItems(),
                    h = 1 === g.length && (a.colors || a.ranges || a.stops) ? !1 : !0;
                this._spDirty &&
                    !h &&
                    (w(b.getSPItems(), function (a) {
                        return b.destroyItem(a.id);
                    }),
                    (g = b.getSPItems()));
                if (h && 1 === g.length) {
                    g[0].setOptions(a);
                    var k = g[0];
                } else (c = a.id) && (e = b.exists(c)) ? (e.setOptions(a), (k = e)) : "object" === f && (k = new Nt(this, a));
                this._spDirty = !1;
                return k;
            };
            a.prototype._pointSelection = function () {
                var a = this;
                (a._selDeBouncer = a._selDeBouncer || new Ae()).defer(
                    "pSel",
                    function () {
                        var b = a._sMaxList && a._sMaxList.length ? a._sMaxList.slice(0) : a.series().points({ selected: !0 }).items;
                        a.triggerUser("pointSelectionChanged", b);
                    },
                    30
                );
            };
            a.prototype._seriesSelection = function () {
                var a = this;
                (a._selDeBouncer = a._selDeBouncer || new Ae()).defer(
                    "pSel",
                    function () {
                        var b = a.series(function (a) {
                            return a.options("selected");
                        }).items;
                        a.triggerUser("seriesSelectionChanged", b);
                    },
                    30
                );
            };
            return a;
        })(),
        ED = (function () {
            function a() {
                this._log = [];
            }
            a.prototype.log = function (a) {
                this._log.push((this._last = a));
            };
            a.prototype.last = function () {
                return this._last;
            };
            a.prototype.clear = function () {
                this._log = [];
            };
            return a;
        })(),
        nu = [];
    (function (a, c) {
        T.JSC = A(T.JSC, { Chart: c });
        jA(T.jQuery, a, c);
    })(nu, lj);
    var mu = Xi,
        FD = B,
        GD = A,
        HD = Wl,
        mj = function (a, c, b) {
            return Pk(b ? a.map(Sk(b)) : a, c);
        };
    nk(
        {
            "system/default/area":
                "M 23 0 A 12 12 0 0 0 11 12 A 12 12 0 0 0 23 24 A 12 12 0 0 0 35 12 A 12 12 0 0 0 23 0 z M 48 0 L 35.785156 6.1074219 A 14.10924 14.10924 0 0 1 37.109375 12.033203 A 14.10924 14.10924 0 0 1 30.458984 24 L 48 24 L 48 0 z M 10.583984 18.708984 L 0 24 L 15.556641 24 A 14.10924 14.10924 0 0 1 10.583984 18.708984 z ",
            "system/default/areaSolo": "M 0,24 48,0 48,24 Z",
            "system/default/checkbox-blank": "M38 10v28H10V10h28m0-4H10c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h28c2.21 0 4-1.79 4-4V10c0-2.21-1.79-4-4-4z",
            "system/default/checkbox": "M38 6H10c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h28c2.21 0 4-1.79 4-4V10c0-2.21-1.79-4-4-4zM20 34L10 24l2.83-2.83L20 28.34l15.17-15.17L38 16 20 34z",
            "system/default/circle": "M0,12a12,12 0 1,0 24,0a12,12 0 1,0 -24,0",
            "system/default/diamond": "M12 .001l12 12-12 12-12-12 12-12z",
            "system/default/line":
                "M 46.076172 -0.001953125 L 34.929688 4.7050781 A 14.000001 14 0 0 1 36.732422 9.3027344 L 47.996094 4.546875 L 46.076172 -0.001953125 z M 23 0 A 12 12 0 0 0 11 12 A 12 12 0 0 0 23 24 A 12 12 0 0 0 35 12 A 12 12 0 0 0 23 0 z M 9.453125 15.460938 L 0 19.451172 L 1.9199219 24 L 11.488281 19.960938 A 14.000001 14 0 0 1 9.453125 15.460938 z",
            "system/default/lineSolo": "M 46.076172,-0.00195313 0,19.451172 1.9199219,24 47.996094,4.546875 46.076172,-0.00195313 Z",
            "system/default/radio-button-blank": "M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm0 36c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z",
            "system/default/radio-button":
                "M24 14c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0-10C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm0 36c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z",
            "system/default/square": "M18 24H6c-3.3 0-6-2.7-6-6V6c0-3.3 2.7-6 6-6h12c3.3 0 6 2.7 6 6v12c0 3.3-2.7 6-6 6z",
            "system/default/triangle": "M24 22h-24l12-20z",
            "system/default/triangleDown": "M12 21l-12-18h24z",
            "system/default/warning":
                "M18.9 18.3l-9-16c0-.1-.1-.1-.2-.2-.2-.2-.5-.1-.6.2l-9 16c-.1 0-.1.1-.1.2 0 .3.2.5.5.5h18c.1 0 .2 0 .2-.1.3-.1.4-.4.2-.6zM10 16.5c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-1c0-.3.2-.5.5-.5s.5.2.5.5v1zm0-3c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5s.5.2.5.5v5z",
        },
        !1
    );
    Z(T, "JSC.internal.registerIcons", nk);
    Z(T, "JSC.internal.setPathVal", Z);
    ["log", "warning", "error"].forEach(function (a) {
        Z(T, "JSC.internal." + a, function (c, b) {
            Ma.emit(a, null, c, { container: b });
        });
    });
    var Je = C(T, "JSC.internal"),
        od,
        ID = Object.freeze({ SELECT_STATE: "select", NORMAL_STATE: "", zIndexReference: gb, boxDefaults: Cf }),
        JD = Object.freeze({
            def: t,
            has: J,
            noop: xc,
            removeArrItem: pb,
            evalPath: C,
            epa: N,
            contains: ae,
            getValType: I,
            isNull: an,
            mergeCollections: Ub,
            extend: L,
            extendCopy: W,
            copy: Oa,
            extendScoped: Na,
            extendScopedNegate: Sc,
            extendCopyScopedNegate: be,
            plainArray: fa,
            arraySum: Kj,
            last: P,
            pick: z,
            isString: O,
            isObject: Pa,
            isUndefined: Q,
            keys: pa,
            eachKey: Da,
            detect: yc,
            setPathVal: Z,
            applySetting: zc,
            findInArrSimple: nh,
            throttle: Ni,
            parseMargin: Ac,
            mapDeep: hb,
            expandOptionsProperties: Sa,
            isNaN: Ha,
            filter: ea,
            find: S,
            defaults: id,
            defaultsDeep: qd,
            clone: qa,
            cloneDeep: yf,
            merge: A,
            each: w,
            map: B,
            reduce: jm,
            uniq: $a,
            sortedUniq: ad,
            toString: oh,
            sortBy: sa,
            remove: Af,
            join: pc,
            slice: yg,
            times: ob,
            omit: Ga,
            isArray: ja,
            isFunction: Fb,
            isNumber: nb,
            isEmpty: ub,
            startsWith: Hg,
            max: oa,
            sum: Ta,
            clamp: ua,
            Memoize: Rb,
        }),
        KD = Object.freeze({
            boxPoints: ie,
            rightX: xs,
            bottomY: ys,
            compareBoxes: fo,
            pad: rb,
            setSize: Ye,
            bboxUnion: Ea,
            intersect: ho,
            bboxFromPoints: Ua,
            center: va,
            clip: sh,
            fitInTarget: function (a, c) {
                var b = G(a, 4);
                a = b[2];
                var d = b[3];
                b = G(c, 4);
                c = b[2];
                b = b[3];
                a = d / a;
                d = a * b;
                var e = c / a;
                d > c ? (d = a * e) : e > b && (e = d / a);
                return [e, d];
            },
            ltrbMargins: function (a, c, b) {
                a = Yb(a);
                c = Yb(c);
                var d = function (a) {
                        return 0 < a ? a : 0;
                    },
                    e = [];
                e[0] = a[0] - c[0];
                e[1] = a[1] - c[1];
                e[2] = c[2] - a[2];
                e[3] = c[3] - a[3];
                return b ? B(e, d) : e;
            },
            fromRect: ha,
            fromCenter: mb,
            toPath: Cc,
            toLTRB: Yb,
            fromLTRB: Ze,
            toPoints: function (a, c) {
                void 0 === c && (c = 4);
                return ie(a, "tl,tr,br,bl" + (5 === c ? ",tl" : ""));
            },
            alignTo: lo,
            offsetBetween: fk,
            unsquishSnapTo: function (a, c, b) {
                void 0 === b && (b = "d");
                var d = { v: oo, h: no }[{ u: "v", d: "v", l: "h", r: "h" }[b]];
                a = uh(a.slice(0), b);
                mo(a, b);
                b = Ea(a);
                c = d(b, c);
                var e = [c[0] - b[0], c[1] - b[1]];
                w(a, function (a) {
                    return mm(a, e);
                });
                return a;
            },
            unsquishBoxes: mo,
            unsquishBoxesCb: function (a, c, b) {
                for (var d = uh(a.slice(0), c), e = [], f = 0, g = d.length; f < g; f++) {
                    var h = d[f];
                    if (f) {
                        var k = vh(h, e, c),
                            l = fk(k, h);
                        if (l[0] || l[1]) (h[0] = k[0]), (h[1] = k[1]), b && b(a.indexOf(h), l, h);
                    }
                    e.push(h);
                }
                return e;
            },
            snapInside: Zc,
            bInsideA: $c,
            pointInside: Ad,
            collideAny: qo,
            collideList: Yc,
            rotatedAt: hk,
            translate: Xc,
            translateRef: mm,
            bestLayout: function (a, c, b) {
                for (var d = !1, e = 1, f, g, h = 0; !d; ) (f = c.width / Math.ceil(a / e)), (g = c.height / e), (f = Math.min(f, g)), f <= h ? ((d = !0), e--) : (e++, (h = f)), 100 < e && (d = !0);
                a /= e;
                a > parseInt(a) && (a = parseInt(a) + 1);
                b || (f = (f / Math.min(c.width, c.height)) * 100);
                return { cols: a, rows: e, maxSize: f };
            },
        }),
        LD = Object.freeze({
            changeBrightness: function (a, c) {
                return ma(Ak(a, c));
            },
            brightness: function (a) {
                return df(a);
            },
            cushionEffect: ig,
            aquaEffect: jg,
            roundedEffect: ef,
            colorMods: La,
            parseJscColor: Lb,
            toHexOpacity: Dh,
            parseJscFill: oc,
            modifyColor: ia,
            modifyFill: dd,
            addOpacity: Eh,
            tween: qe,
            colorToPalette: Uo,
            simplify: zh,
        }),
        MD = Object.freeze({
            math: Vb,
            round: na,
            avg: Wf,
            mapValue: Y,
            arraySum: function (a) {
                return Ta(a);
            },
            diff: la,
            decimalPlaces: Yf,
        }),
        ND = Object.freeze({ lowerFirst: Se, getRandomString: de, shortenEllipsis: Ir }),
        OD = Object.freeze({
            toDegrees: Vn,
            toRadians: yb,
            normalizeAngle: rh,
            quadrant: function (a) {
                a = rh(Vn(a));
                return 180 > a ? (90 <= a ? 2 : 3) : 270 <= a ? 0 : 1;
            },
            getPolarPoint: ee,
            getPolarDegPoint: Uc,
            gpdp: ra,
            gpdp_text: function (a, c, b, d, e, f) {
                var g = G(e, 2);
                e = g[0];
                g = g[1];
                e += b;
                g += b;
                var h = function (a, b) {
                        void 0 === b && (b = 0);
                        if (0 === b) return a;
                        b = Math.min(Math.abs(b), 1);
                        return 1 === b ? 1 : cl(a, Math.max(1 - b, 0.1));
                    },
                    k = (c * Math.PI) / 180,
                    l = function (a) {
                        return 0.001 > Math.abs(a) ? 0 : a;
                    };
                c = l(Math.cos(k));
                var m = Math.cos(2 * k);
                k = l(Math.sin(k));
                l = Math.abs;
                var n = function (a) {
                        return 0 < a ? 1 : 0 > a ? -1 : 0;
                    },
                    p = n(c),
                    q = n(k),
                    r = h(l(k), f[0]) * q;
                h = h(l(c), f[1]) * p;
                f = (((0 > m ? q : r) - 1) * e) / 2;
                m = (-((0 < m ? p : h) + 1) * g) / 2;
                d = (d + c * (l(m) - (0 < c ? g : 0))) / k || -e / 2;
                d = Math.min(l(d), e / 2) * n(d);
                0 > k ? ((d = -e - d), (f = Math.max(l(f), l(d)) * n(f))) : (f = Math.min(l(f), l(d)) * n(f));
                return [a[0] + b + f, a[1] + b + m];
            },
            gpp: Jb,
            angleOfPoints: Ia,
            pointDistance: Xb,
            pDist: mc,
            lineIntersect: Te,
            lineDistance: Wn,
            pointInsidePolygon: Zf,
            arcCapDegOffset: function (a, c) {
                var b = a - c;
                a = [ra([0, 0], 0, (a + c) / 2)];
                b = ra(a[0], 108, b);
                return Math.abs(yb(Ia([0, 0], b))) / 2;
            },
            ensureUprightText: Yn,
        }),
        PD = Object.freeze({ isValInsideInc: Kb, intersect: Ue, positionsToPadRanges: Zj, invert: cg }),
        QD = Object.freeze({
            win: T,
            doc: ba,
            getRootScriptPath: je,
            getScript: lk,
            getJson: function (a, c, b, d) {
                wh(a, c, b, d, JSON.parse);
            },
        }),
        RD = Object.freeze({ Formatter: Ng, formatString: Si }),
        SD = Object.freeze({ getApiEnum: ke }),
        TD = Object.freeze({
            zero: Gk,
            resize: Hk,
            scale: Cd,
            moveTL: function (a, c, b) {
                "undefined" !== typeof c && ((a.width -= c - a.x), (a.x = c));
                "undefined" !== typeof b && ((a.height -= b - a.y), (a.y = b));
                return a;
            },
            padBox: Ik,
            padRect: Vo,
            translate: Wo,
            padBoxRel: Xo,
            centerRect: kg,
            normalize: Yo,
            toLTRB: Zo,
            fromLTRB: $o,
            round: function (a) {
                a = Zo(a);
                a = B(a, Math.round);
                return $o(a);
            },
            fromBBox: Gc,
            compare: ap,
        }),
        UD = Object.freeze({ registerIcons: nk }),
        VD = Object.freeze({ measureText: fg }),
        WD = Object.freeze({ getPalette: Xi, getPaletteConfig: Rs }),
        XD = Object.freeze({
            registerModule: function (a, c) {
                a = ff[a] = ff[a] || {};
                a.afterLoad = c;
                return a.loaded ? !1 : (a.loaded = !0);
            },
        }),
        YD = Object.freeze({ idFyObj: zb, percOrNum: db }),
        ZD = Object.freeze({ toDate: X, toDateNum: ed, intervalToSpan: lg, addTimeInterval: bc, unitToFormatOptions: hf, unitListToFormatOptions: Kh, GroupingFunctions: Vs, CalendarPattern: Ok }),
        $D = Object.freeze({ calculations: Pk }),
        aE = Object.freeze({
            fromPoints: eb,
            bbox: kl,
            pathIntersects: function (a, c, b) {
                return Rh(a.shapes[0], c, b);
            },
            Path: mf,
            fromString: Aa,
            subPath: Ed,
            shapeBbox: Mb,
            visualCenterForShape: og,
            shapeIntersects: Rh,
        }),
        bE = Object.freeze({ pointsToPath: fb, multiLineToPath: tg, flattenD: xa, arcCornerR: rp, arc: ll, arcSegment: Kc, pointsEqual: ab }),
        cE = Object.freeze({ parseSize: Qa }),
        dE = Object.freeze({ padMargin: Bl, lineToAttr: Bb, shapeToAttr: fc, boxToAttr: Bg, completeDependentOptions: Nm, annotationToHtmlAttr: br, labelToAttr: qc, offsetToAttr: cr, boxToLayoutBoxAttr: Cg }),
        eE = Object.freeze({
            fitBoxInPath: or,
            fitBoxData: function (a, c) {
                var b = pr(a),
                    d = function (a) {
                        return [Y(0, 1, c[0], c[0] + c[2], a[0]), Y(0, 1, c[1], c[1] + c[3], a[1])];
                    };
                a = xi(a);
                a = Mb(a);
                return (b = b ? rr(b, d) : void 0) ? { scans: b, pathBBox: RC(a, d) } : void 0;
            },
            fitBoxInScanData: function (a, c, b, d) {
                var e = b[1];
                a = Ny(a, c).scans;
                var f = Math.max(c[2], c[3]),
                    g = [],
                    h = c[1] + 1;
                try {
                    for (; h + e < c[1] + c[3] - 2; ) {
                        var k = qr(a, h, e);
                        k && k[2] >= b[0] && g.push([f - Xb(va(k), d), k]);
                        h += 1;
                    }
                } catch (m) {}
                if (g.length) {
                    g.sort(function (a, b) {
                        return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0;
                    }).reverse();
                    var l = g[0][1];
                }
                l && (l = mb(va(l), b));
                return l;
            },
        }),
        fE = Object.freeze({
            parseObjectTokens: wi,
            parseGridTokens: function (a, c, b) {
                void 0 === b && (b = {});
                var d = uf(a);
                return d.result ? vf(a, {}, { gOptions: b, item: c, atribs: c }) : d.text;
            },
        }),
        gE = Object.freeze({ snapToPanel: md, snapPointToPanel: nd, snapPointsToPanel: ue }),
        hE = Object.freeze({ axesBySideIndex: Rr }),
        Lf = Object.freeze({
            __proto__: null,
            jsLib: JD,
            mathLib: MD,
            layoutLib: cE,
            rectLib: TD,
            trigLib: OD,
            SeriesBaseType: Ie,
            SeriesTypeColumn: Vg,
            minimumHittestSize: 15,
            registerSeriesType: function (a, c) {
                Oc[a] = c;
            },
            undefVal: void 0,
            undef: "undefined",
            bboxLib: KD,
            stylingLib: dE,
            polyFitLib: eE,
            shapeLib: bE,
            Annotation: ej,
            moduleLoader: XD,
            collectionPropFactory: Xa,
            consts: ID,
            en: { error: {} },
            idleDefer: Ae,
            platform: QD,
            strLib: ND,
            getColumnIconPathsStatic: Pl,
            BaseChartItem: jc,
            AxisCollectionWrapper: Kf,
            AxisViewState: bu,
            getShapeOptions: Gr,
            Axis: jj,
            panels: Hl,
            dmUtils: gE,
            ChartArea: ju,
            CollisionManager: Tm,
            getBreaksPath: $r,
            zIndexReference: Pt,
            registerPanes: function (a) {
                Rm = a;
            },
            shapes: dc,
            colorLib: LD,
            Series: Xm,
            parsePointValues: Ai,
            columnPointBodyD: Ql,
            getIconPathsStatic: Ci,
            getShapePath: Ld,
            registerTag: function (a, c) {
                Im[a] = c;
            },
            VirtualElement: tb,
            rangeLib: PD,
            TextBox: Ft,
            LayoutItem: Gf,
            Panel: Sg,
            StackPanel: Tg,
            Layout: Al,
            registerPanel: function (a, c) {
                Mc[a] = c;
            },
            UpdatablesCollection: wb,
            miUtils: SD,
            isTouchDevice: function () {
                return "ontouchstart" in T;
            },
            annotationDefaults: Pm,
            getAlignToOffsets: mt,
            iconsStore: UD,
            chartOptionsAppliers: Zl,
            pathLib: aE,
            updateOverflows: Br,
            cachedPositionInfo: Ig,
            isAlignInside: Mr,
            EntryWrapper: Qm,
            formatting: RD,
            timeLib: ZD,
            chartOptionsModifiers: $l,
            registerVisual: function (a, c) {
                Md[a] = c;
            },
            generateId: Dd,
            snapPixels: Ff,
            textLib: VD,
            palettes: WD,
            chartInitializers: $m,
            CompositeElement: kC,
            CompositeAttrApplier: jt,
            Label: Fi,
            tokenLib: fE,
            label: Yq,
            dataUtil: $D,
            registerDataGridFunction: function (a, c) {
                sc[a] = c;
            },
            jscLabel: es,
            normalizationUtils: YD,
            rendererFactory: ft,
            emitter: Ma,
            BaseOptions: Kt,
            axisUtils: hE,
            hideVisual: Ra,
            generateIdRandom: qp,
        });
    Z(Je, "_modules.types.export", Lf);
    Z(Je, "_modules.maps.export", Lf);
    Z(Je, "_modules.toolbar.export", Lf);
    Z(Je, "_modules.accessibility.export", Lf);
    Z(Je, "_modules.datagrid.export", Lf);
    Z(Je, "_modules.debug.export", Lf);
    aa.Chart = lj;
    aa.Grid = is;
    aa.Nest = HD;
    aa.chart = function (a, c) {
        var b = Object.create(lj.prototype);
        lj.apply(b, arguments);
        return b;
    };
    aa.colorToPalette = function (a, c, b, d) {
        return Uo(a, c, b, d);
    };
    aa.csv2Json = function (a, c) {
        return Wk(a, ",", c);
    };
    aa.defaults = function (a) {
        if (t(a))
            if (null === a) var c = {};
            else (c = od ? od() : {}), A(c, a);
        else return od ? od() : {};
        c.baseUrl && (dg = c.baseUrl);
        return (od = yi(c)) ? od() : {};
    };
    aa.dsv2Json = function (a, c, b) {
        void 0 === b && (b = {});
        return Wk(a, c, b);
    };
    aa.fetch = function (a, c) {
        Ih || (Ih = T.fetch || vw);
        return Ih(a, c);
    };
    aa.fontsReady = function (a) {
        return Ws(a);
    };
    aa.formatDate = function (a, c, b) {
        void 0 === c && (c = "d");
        return Si(new Date(a), c, b);
    };
    aa.formatNumber = function (a, c, b) {
        void 0 === c && (c = "n");
        return Si(parseFloat(a), c, b);
    };
    aa.formatString = function (a, c, b) {
        void 0 === b && (b = "en-US");
        return Si(a, c, b);
    };
    aa.getPalette = mu;
    aa.getVersion = gs;
    aa.globalCharts = nu;
    aa.internal = Je;
    aa.json2Csv = function (a, c) {
        return Xk(a, ",", c);
    };
    aa.json2Dsv = function (a, c, b) {
        void 0 === b && (b = {});
        return Xk(a, c, b);
    };
    aa.json2Tsv = function (a, c) {
        return Xk(a, "\t", c);
    };
    aa.label = function (a, c, b) {
        return es(a, c, Ii(b));
    };
    aa.map = FD;
    aa.max = function (a, c) {
        return mj(a, "max", c);
    };
    aa.mean = function (a, c) {
        return mj(a, "average", c);
    };
    aa.merge = GD;
    aa.min = function (a, c) {
        return mj(a, "min", c);
    };
    aa.nest = function () {
        return new Wl();
    };
    aa.parseCsv = function (a, c) {
        void 0 === c && (c = {});
        return pp(a, c);
    };
    aa.parsePoints = function (a, c) {
        return np(a, c);
    };
    aa.pointsFromArray = function (a, c) {
        return op(a, c);
    };
    aa.ready = function () {
        for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
        return gf(function (b) {
            var c = [],
                e = [];
            a.forEach(function (a) {
                O(a) ? c.push(a) : a === ba && e.push(kA());
            });
            c.length && e.push(Ws(c));
            e.length ? uw(e, b) : b({ ok: !0 });
        });
    };
    aa.smartPalette = {
        getPaletteCSS: function (a, c) {
            return new Nt(null, a).getPaletteCSS(a, c);
        },
    };
    aa.sortBy = function () {
        for (var a = [], c = 0; c < arguments.length; c++) a[c] = arguments[c];
        return sa.apply(LA, H(a));
    };
    aa.sourcePath = function () {
        return je();
    };
    aa.sum = function (a, c) {
        return mj(a, "sum", c);
    };
    aa.tsv2Json = function (a, c) {
        return Wk(a, "\t", c);
    };
    Object.defineProperty(aa, "__esModule", { value: !0 });
});
