function createChartConfig(mapData, name, toolTipName, toolTipInfo, subtitle, legendTitle){
//Highcharts Map builder. Configuration options can been found at api.highcharts.com/highcharts/
  return {
    chart: {
      map: 'countries/us/us-all',
      borderWidth: 0
    },

    title: {
      text: name,
    },
    subtitle: {
        text: subtitle
    },
    exporting: {
      sourceWidth: 600,
      sourceHeight: 500
    },

    legend: {
      title: {text: legendTitle},
      layout: 'vertical',
      borderWidth: 0,
      backgroundColor: 'rgba(255,255,255,0.85)',
      floating: false,
      align: 'right',
      verticalAlign: 'bottom',
      y: 0,
      symbolRadius: 0,
      symbolHeight: 18
    },

    mapNavigation: {
      enabled: true
    },

    colorAxis: {
      dataClasses: mapData[1]
   },

    series: [{
      animation: {
        duration: 1000
      },
      data: mapData[0],
      joinBy: ['postal-code', 'code'],
      dataLabels: {
        enabled: true,
        format: '{point.code}'
      },
      name: toolTipName,
      tooltip: {
        pointFormat: '{point.code}: {point.value}' + toolTipInfo
      }
    }]
  }};
/*
 Highmaps JS v9.1.0 (2021-05-03)

 (c) 2011-2021 Torstein Honsi

 License: www.highcharts.com/license
*/
(function (X, J) { "object" === typeof module && module.exports ? (J["default"] = J, module.exports = X.document ? J(X) : J) : "function" === typeof define && define.amd ? define("highcharts/highmaps", function () { return J(X) }) : (X.Highcharts && X.Highcharts.error(16, !0), X.Highcharts = J(X)) })("undefined" !== typeof window ? window : this, function (X) {
    function J(b, f, D, y) { b.hasOwnProperty(f) || (b[f] = y.apply(null, D)) } var b = {}; J(b, "Core/Globals.js", [], function () {
        var b = "undefined" !== typeof X ? X : "undefined" !== typeof window ? window : {}, f; (function (f) {
        f.SVG_NS =
            "http://www.w3.org/2000/svg"; f.product = "Highcharts"; f.version = "9.1.0"; f.win = b; f.doc = f.win.document; f.svg = f.doc && f.doc.createElementNS && !!f.doc.createElementNS(f.SVG_NS, "svg").createSVGRect; f.userAgent = f.win.navigator && f.win.navigator.userAgent || ""; f.isChrome = -1 !== f.userAgent.indexOf("Chrome"); f.isFirefox = -1 !== f.userAgent.indexOf("Firefox"); f.isMS = /(edge|msie|trident)/i.test(f.userAgent) && !f.win.opera; f.isSafari = !f.isChrome && -1 !== f.userAgent.indexOf("Safari"); f.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(f.userAgent);
            f.isWebKit = -1 !== f.userAgent.indexOf("AppleWebKit"); f.deg2rad = 2 * Math.PI / 360; f.hasBidiBug = f.isFirefox && 4 > parseInt(f.userAgent.split("Firefox/")[1], 10); f.hasTouch = !!f.win.TouchEvent; f.marginNames = ["plotTop", "marginRight", "marginBottom", "plotLeft"]; f.noop = function () { }; f.supportsPassiveEvents = function () {
                var b = !1; if (!f.isMS) {
                    var B = Object.defineProperty({}, "passive", { get: function () { b = !0 } }); f.win.addEventListener && f.win.removeEventListener && (f.win.addEventListener("testPassive", f.noop, B), f.win.removeEventListener("testPassive",
                        f.noop, B))
                } return b
            }(); f.charts = []; f.dateFormats = {}; f.seriesTypes = {}; f.symbolSizes = {}
        })(f || (f = {})); return f
    }); J(b, "Core/Utilities.js", [b["Core/Globals.js"]], function (b) {
        function f(a, c, h, k) {
            var E = c ? "Highcharts error" : "Highcharts warning"; 32 === a && (a = E + ": Deprecated member"); var m = l(a), v = m ? E + " #" + a + ": www.highcharts.com/errors/" + a + "/" : a.toString(); if ("undefined" !== typeof k) { var G = ""; m && (v += "?"); w(k, function (x, a) { G += "\n - " + a + ": " + x; m && (v += encodeURI(a) + "=" + encodeURI(x)) }); v += G } q(Highcharts, "displayError",
                { chart: h, code: a, message: v, params: k }, function () { if (c) throw Error(v); n.console && -1 === f.messages.indexOf(v) && console.warn(v) }); f.messages.push(v)
        } function B(a, c) { var h = {}; w(a, function (E, k) { if (t(a[k], !0) && !a.nodeType && c[k]) E = B(a[k], c[k]), Object.keys(E).length && (h[k] = E); else if (t(a[k]) || a[k] !== c[k]) h[k] = a[k] }); return h } function y(a, c) { return parseInt(a, c || 10) } function C(a) { return "string" === typeof a } function A(a) {
            a = Object.prototype.toString.call(a); return "[object Array]" === a || "[object Array Iterator]" ===
                a
        } function t(a, c) { return !!a && "object" === typeof a && (!c || !A(a)) } function r(a) { return t(a) && "number" === typeof a.nodeType } function p(a) { var c = a && a.constructor; return !(!t(a, !0) || r(a) || !c || !c.name || "Object" === c.name) } function l(a) { return "number" === typeof a && !isNaN(a) && Infinity > a && -Infinity < a } function g(a) { return "undefined" !== typeof a && null !== a } function e(a, c, h) {
            var k; C(c) ? g(h) ? a.setAttribute(c, h) : a && a.getAttribute && ((k = a.getAttribute(c)) || "class" !== c || (k = a.getAttribute(c + "Name"))) : w(c, function (c, h) {
                a.setAttribute(h,
                    c)
            }); return k
        } function d(a, c) { var h; a || (a = {}); for (h in c) a[h] = c[h]; return a } function u() { for (var a = arguments, c = a.length, h = 0; h < c; h++) { var k = a[h]; if ("undefined" !== typeof k && null !== k) return k } } function H(a, c) { b.isMS && !b.svg && c && "undefined" !== typeof c.opacity && (c.filter = "alpha(opacity=" + 100 * c.opacity + ")"); d(a.style, c) } function I(a, h, k, n, m) { a = c.createElement(a); h && d(a, h); m && H(a, { padding: "0", border: "none", margin: "0" }); k && H(a, k); n && n.appendChild(a); return a } function K(a, c) {
            return parseFloat(a.toPrecision(c ||
                14))
        } function F(a, c, h) {
            var k = b.getStyle || F; if ("width" === c) return c = Math.min(a.offsetWidth, a.scrollWidth), h = a.getBoundingClientRect && a.getBoundingClientRect().width, h < c && h >= c - 1 && (c = Math.floor(h)), Math.max(0, c - (k(a, "padding-left", !0) || 0) - (k(a, "padding-right", !0) || 0)); if ("height" === c) return Math.max(0, Math.min(a.offsetHeight, a.scrollHeight) - (k(a, "padding-top", !0) || 0) - (k(a, "padding-bottom", !0) || 0)); n.getComputedStyle || f(27, !0); if (a = n.getComputedStyle(a, void 0)) {
                var m = a.getPropertyValue(c); u(h, "opacity" !==
                    c) && (m = y(m))
            } return m
        } function w(a, c, h) { for (var k in a) Object.hasOwnProperty.call(a, k) && c.call(h || a[k], a[k], k, a) } function z(a, c, h) {
            function k(c, x) { var G = a.removeEventListener || b.removeEventListenerPolyfill; G && G.call(a, c, x, !1) } function n(G) { var x; if (a.nodeName) { if (c) { var h = {}; h[c] = !0 } else h = G; w(h, function (a, c) { if (G[c]) for (x = G[c].length; x--;)k(c, G[c][x].fn) }) } } var m = "function" === typeof a && a.prototype || a; if (Object.hasOwnProperty.call(m, "hcEvents")) {
                var v = m.hcEvents; c ? (m = v[c] || [], h ? (v[c] = m.filter(function (a) {
                    return h !==
                        a.fn
                }), k(c, h)) : (n(v), v[c] = [])) : (n(v), delete m.hcEvents)
            }
        } function q(a, h, k, n) {
            k = k || {}; if (c.createEvent && (a.dispatchEvent || a.fireEvent && a !== b)) { var m = c.createEvent("Events"); m.initEvent(h, !0, !0); k = d(m, k); a.dispatchEvent ? a.dispatchEvent(k) : a.fireEvent(h, k) } else if (a.hcEvents) {
            k.target || d(k, { preventDefault: function () { k.defaultPrevented = !0 }, target: a, type: h }); m = []; for (var v = a, E = !1; v.hcEvents;)Object.hasOwnProperty.call(v, "hcEvents") && v.hcEvents[h] && (m.length && (E = !0), m.unshift.apply(m, v.hcEvents[h])), v =
                Object.getPrototypeOf(v); E && m.sort(function (a, x) { return a.order - x.order }); m.forEach(function (c) { !1 === c.fn.call(a, k) && k.preventDefault() })
            } n && !k.defaultPrevented && n.call(a, k)
        } var m = b.charts, c = b.doc, n = b.win; ""; (f || (f = {})).messages = []; var a; Math.easeInOutSine = function (a) { return -.5 * (Math.cos(Math.PI * a) - 1) }; var k = Array.prototype.find ? function (a, c) { return a.find(c) } : function (a, c) { var h, k = a.length; for (h = 0; h < k; h++)if (c(a[h], h)) return a[h] }; w({ map: "map", each: "forEach", grep: "filter", reduce: "reduce", some: "some" },
            function (a, c) { b[c] = function (h) { var k; f(32, !1, void 0, (k = {}, k["Highcharts." + c] = "use Array." + a, k)); return Array.prototype[a].apply(h, [].slice.call(arguments, 1)) } }); var h, v = function () { var a = Math.random().toString(36).substring(2, 9) + "-", c = 0; return function () { return "highcharts-" + (h ? "" : a) + c++ } }(); n.jQuery && (n.jQuery.fn.highcharts = function () { var a = [].slice.call(arguments); if (this[0]) return a[0] ? (new (b[C(a[0]) ? a.shift() : "Chart"])(this[0], a[0], a[1]), this) : m[e(this[0], "data-highcharts-chart")] }); return {
                addEvent: function (a,
                    c, h, k) {
                    void 0 === k && (k = {}); var n = "function" === typeof a && a.prototype || a; Object.hasOwnProperty.call(n, "hcEvents") || (n.hcEvents = {}); n = n.hcEvents; b.Point && a instanceof b.Point && a.series && a.series.chart && (a.series.chart.runTrackerClick = !0); var m = a.addEventListener || b.addEventListenerPolyfill; m && m.call(a, c, h, b.supportsPassiveEvents ? { passive: void 0 === k.passive ? -1 !== c.indexOf("touch") : k.passive, capture: !1 } : !1); n[c] || (n[c] = []); n[c].push({ fn: h, order: "number" === typeof k.order ? k.order : Infinity }); n[c].sort(function (a,
                        c) { return a.order - c.order }); return function () { z(a, c, h) }
                }, arrayMax: function (a) { for (var c = a.length, h = a[0]; c--;)a[c] > h && (h = a[c]); return h }, arrayMin: function (a) { for (var c = a.length, h = a[0]; c--;)a[c] < h && (h = a[c]); return h }, attr: e, clamp: function (a, c, h) { return a > c ? a < h ? a : h : c }, cleanRecursively: B, clearTimeout: function (a) { g(a) && clearTimeout(a) }, correctFloat: K, createElement: I, css: H, defined: g, destroyObjectProperties: function (a, c) { w(a, function (h, k) { h && h !== c && h.destroy && h.destroy(); delete a[k] }) }, discardElement: function (c) {
                    a ||
                    (a = I("div")); c && a.appendChild(c); a.innerHTML = ""
                }, erase: function (a, c) { for (var h = a.length; h--;)if (a[h] === c) { a.splice(h, 1); break } }, error: f, extend: d, extendClass: function (a, c) { var h = function () { }; h.prototype = new a; d(h.prototype, c); return h }, find: k, fireEvent: q, getMagnitude: function (a) { return Math.pow(10, Math.floor(Math.log(a) / Math.LN10)) }, getNestedProperty: function (a, c) {
                    for (a = a.split("."); a.length && g(c);) {
                        var h = a.shift(); if ("undefined" === typeof h || "__proto__" === h) return; c = c[h]; if (!g(c) || "function" === typeof c ||
                            "number" === typeof c.nodeType || c === n) return
                    } return c
                }, getStyle: F, inArray: function (a, c, h) { f(32, !1, void 0, { "Highcharts.inArray": "use Array.indexOf" }); return c.indexOf(a, h) }, isArray: A, isClass: p, isDOMElement: r, isFunction: function (a) { return "function" === typeof a }, isNumber: l, isObject: t, isString: C, keys: function (a) { f(32, !1, void 0, { "Highcharts.keys": "use Object.keys" }); return Object.keys(a) }, merge: function () {
                    var a, c = arguments, h = {}, k = function (a, c) {
                    "object" !== typeof a && (a = {}); w(c, function (h, x) {
                    "__proto__" !== x &&
                        "constructor" !== x && (!t(h, !0) || p(h) || r(h) ? a[x] = c[x] : a[x] = k(a[x] || {}, h))
                    }); return a
                    }; !0 === c[0] && (h = c[1], c = Array.prototype.slice.call(c, 2)); var n = c.length; for (a = 0; a < n; a++)h = k(h, c[a]); return h
                }, normalizeTickInterval: function (a, c, h, k, n) {
                    var m = a; h = u(h, 1); var v = a / h; c || (c = n ? [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] : [1, 2, 2.5, 5, 10], !1 === k && (1 === h ? c = c.filter(function (a) { return 0 === a % 1 }) : .1 >= h && (c = [1 / h]))); for (k = 0; k < c.length && !(m = c[k], n && m * h >= a || !n && v <= (c[k] + (c[k + 1] || c[k])) / 2); k++); return m = K(m * h, -Math.round(Math.log(.001) /
                        Math.LN10))
                }, objectEach: w, offset: function (a) { var h = c.documentElement; a = a.parentElement || a.parentNode ? a.getBoundingClientRect() : { top: 0, left: 0, width: 0, height: 0 }; return { top: a.top + (n.pageYOffset || h.scrollTop) - (h.clientTop || 0), left: a.left + (n.pageXOffset || h.scrollLeft) - (h.clientLeft || 0), width: a.width, height: a.height } }, pad: function (a, c, h) { return Array((c || 2) + 1 - String(a).replace("-", "").length).join(h || "0") + a }, pick: u, pInt: y, relativeLength: function (a, c, h) { return /%$/.test(a) ? c * parseFloat(a) / 100 + (h || 0) : parseFloat(a) },
                removeEvent: z, splat: function (a) { return A(a) ? a : [a] }, stableSort: function (a, c) { var h = a.length, k, n; for (n = 0; n < h; n++)a[n].safeI = n; a.sort(function (a, h) { k = c(a, h); return 0 === k ? a.safeI - h.safeI : k }); for (n = 0; n < h; n++)delete a[n].safeI }, syncTimeout: function (a, c, h) { if (0 < c) return setTimeout(a, c, h); a.call(0, h); return -1 }, timeUnits: { millisecond: 1, second: 1E3, minute: 6E4, hour: 36E5, day: 864E5, week: 6048E5, month: 24192E5, year: 314496E5 }, uniqueKey: v, useSerialIds: function (a) { return h = u(a, h) }, wrap: function (a, c, h) {
                    var k = a[c]; a[c] =
                        function () { var a = Array.prototype.slice.call(arguments), c = arguments, n = this; n.proceed = function () { k.apply(n, arguments.length ? arguments : c) }; a.unshift(k); a = h.apply(this, a); n.proceed = null; return a }
                }
            }
    }); J(b, "Core/Color/Color.js", [b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f) {
        var B = f.isNumber, y = f.merge, C = f.pInt; ""; f = function () {
            function f(t) {
            this.parsers = [{
                regex: /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*\)/, parse: function (f) {
                    return [C(f[1]), C(f[2]),
                    C(f[3]), parseFloat(f[4], 10)]
                }
            }, { regex: /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/, parse: function (f) { return [C(f[1]), C(f[2]), C(f[3]), 1] } }]; this.rgba = []; if (b.Color !== f) return new b.Color(t); if (!(this instanceof f)) return new f(t); this.init(t)
            } f.parse = function (t) { return new f(t) }; f.prototype.init = function (t) {
                var r, p; if ((this.input = t = f.names[t && t.toLowerCase ? t.toLowerCase() : ""] || t) && t.stops) this.stops = t.stops.map(function (e) { return new f(e[1]) }); else {
                    if (t && t.charAt && "#" === t.charAt()) {
                        var l =
                            t.length; t = parseInt(t.substr(1), 16); 7 === l ? r = [(t & 16711680) >> 16, (t & 65280) >> 8, t & 255, 1] : 4 === l && (r = [(t & 3840) >> 4 | (t & 3840) >> 8, (t & 240) >> 4 | t & 240, (t & 15) << 4 | t & 15, 1])
                    } if (!r) for (p = this.parsers.length; p-- && !r;) { var g = this.parsers[p]; (l = g.regex.exec(t)) && (r = g.parse(l)) }
                } this.rgba = r || []
            }; f.prototype.get = function (f) {
                var r = this.input, p = this.rgba; if ("undefined" !== typeof this.stops) { var l = y(r); l.stops = [].concat(l.stops); this.stops.forEach(function (g, e) { l.stops[e] = [l.stops[e][0], g.get(f)] }) } else l = p && B(p[0]) ? "rgb" ===
                    f || !f && 1 === p[3] ? "rgb(" + p[0] + "," + p[1] + "," + p[2] + ")" : "a" === f ? p[3] : "rgba(" + p.join(",") + ")" : r; return l
            }; f.prototype.brighten = function (f) { var r, p = this.rgba; if (this.stops) this.stops.forEach(function (l) { l.brighten(f) }); else if (B(f) && 0 !== f) for (r = 0; 3 > r; r++)p[r] += C(255 * f), 0 > p[r] && (p[r] = 0), 255 < p[r] && (p[r] = 255); return this }; f.prototype.setOpacity = function (f) { this.rgba[3] = f; return this }; f.prototype.tweenTo = function (f, r) {
                var p = this.rgba, l = f.rgba; l.length && p && p.length ? (f = 1 !== l[3] || 1 !== p[3], r = (f ? "rgba(" : "rgb(") + Math.round(l[0] +
                    (p[0] - l[0]) * (1 - r)) + "," + Math.round(l[1] + (p[1] - l[1]) * (1 - r)) + "," + Math.round(l[2] + (p[2] - l[2]) * (1 - r)) + (f ? "," + (l[3] + (p[3] - l[3]) * (1 - r)) : "") + ")") : r = f.input || "none"; return r
            }; f.names = { white: "#ffffff", black: "#000000" }; return f
        }(); b.Color = f; b.color = f.parse; return f
    }); J(b, "Core/Color/Palette.js", [], function () {
        return {
            colors: "#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1".split(" "), backgroundColor: "#ffffff", neutralColor100: "#000000", neutralColor80: "#333333", neutralColor60: "#666666",
            neutralColor40: "#999999", neutralColor20: "#cccccc", neutralColor10: "#e6e6e6", neutralColor5: "#f2f2f2", neutralColor3: "#f7f7f7", highlightColor100: "#003399", highlightColor80: "#335cad", highlightColor60: "#6685c2", highlightColor20: "#ccd6eb", highlightColor10: "#e6ebf5", positiveColor: "#06b535", negativeColor: "#f21313"
        }
    }); J(b, "Core/Time.js", [b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f) {
        var B = b.win, y = f.defined, C = f.error, A = f.extend, t = f.isObject, r = f.merge, p = f.objectEach, l = f.pad, g = f.pick, e = f.splat, d =
            f.timeUnits; ""; f = function () {
                function u(d) { this.options = {}; this.variableTimezone = this.useUTC = !1; this.Date = B.Date; this.getTimezoneOffset = this.timezoneOffsetFunction(); this.update(d) } u.prototype.get = function (d, e) { if (this.variableTimezone || this.timezoneOffset) { var g = e.getTime(), u = g - this.getTimezoneOffset(e); e.setTime(u); d = e["getUTC" + d](); e.setTime(g); return d } return this.useUTC ? e["getUTC" + d]() : e["get" + d]() }; u.prototype.set = function (d, e, g) {
                    if (this.variableTimezone || this.timezoneOffset) {
                        if ("Milliseconds" ===
                            d || "Seconds" === d || "Minutes" === d && 0 === this.getTimezoneOffset(e) % 36E5) return e["setUTC" + d](g); var u = this.getTimezoneOffset(e); u = e.getTime() - u; e.setTime(u); e["setUTC" + d](g); d = this.getTimezoneOffset(e); u = e.getTime() + d; return e.setTime(u)
                    } return this.useUTC ? e["setUTC" + d](g) : e["set" + d](g)
                }; u.prototype.update = function (d) {
                    var e = g(d && d.useUTC, !0); this.options = d = r(!0, this.options || {}, d); this.Date = d.Date || B.Date || Date; this.timezoneOffset = (this.useUTC = e) && d.timezoneOffset; this.getTimezoneOffset = this.timezoneOffsetFunction();
                    this.variableTimezone = e && !(!d.getTimezoneOffset && !d.timezone)
                }; u.prototype.makeTime = function (d, e, u, l, w, z) { if (this.useUTC) { var q = this.Date.UTC.apply(0, arguments); var m = this.getTimezoneOffset(q); q += m; var c = this.getTimezoneOffset(q); m !== c ? q += c - m : m - 36E5 !== this.getTimezoneOffset(q - 36E5) || b.isSafari || (q -= 36E5) } else q = (new this.Date(d, e, g(u, 1), g(l, 0), g(w, 0), g(z, 0))).getTime(); return q }; u.prototype.timezoneOffsetFunction = function () {
                    var d = this, e = this.options, g = e.moment || B.moment; if (!this.useUTC) return function (d) {
                        return 6E4 *
                            (new Date(d.toString())).getTimezoneOffset()
                    }; if (e.timezone) { if (g) return function (d) { return 6E4 * -g.tz(d, e.timezone).utcOffset() }; C(25) } return this.useUTC && e.getTimezoneOffset ? function (d) { return 6E4 * e.getTimezoneOffset(d.valueOf()) } : function () { return 6E4 * (d.timezoneOffset || 0) }
                }; u.prototype.dateFormat = function (d, e, u) {
                    if (!y(e) || isNaN(e)) return b.defaultOptions.lang && b.defaultOptions.lang.invalidDate || ""; d = g(d, "%Y-%m-%d %H:%M:%S"); var F = this, w = new this.Date(e), z = this.get("Hours", w), q = this.get("Day", w),
                        m = this.get("Date", w), c = this.get("Month", w), n = this.get("FullYear", w), a = b.defaultOptions.lang, k = a && a.weekdays, h = a && a.shortWeekdays; w = A({ a: h ? h[q] : k[q].substr(0, 3), A: k[q], d: l(m), e: l(m, 2, " "), w: q, b: a.shortMonths[c], B: a.months[c], m: l(c + 1), o: c + 1, y: n.toString().substr(2, 2), Y: n, H: l(z), k: z, I: l(z % 12 || 12), l: z % 12 || 12, M: l(this.get("Minutes", w)), p: 12 > z ? "AM" : "PM", P: 12 > z ? "am" : "pm", S: l(w.getSeconds()), L: l(Math.floor(e % 1E3), 3) }, b.dateFormats); p(w, function (a, c) {
                            for (; -1 !== d.indexOf("%" + c);)d = d.replace("%" + c, "function" ===
                                typeof a ? a.call(F, e) : a)
                        }); return u ? d.substr(0, 1).toUpperCase() + d.substr(1) : d
                }; u.prototype.resolveDTLFormat = function (d) { return t(d, !0) ? d : (d = e(d), { main: d[0], from: d[1], to: d[2] }) }; u.prototype.getTimeTicks = function (e, u, l, F) {
                    var w = this, z = [], q = {}; var m = new w.Date(u); var c = e.unitRange, n = e.count || 1, a; F = g(F, 1); if (y(u)) {
                        w.set("Milliseconds", m, c >= d.second ? 0 : n * Math.floor(w.get("Milliseconds", m) / n)); c >= d.second && w.set("Seconds", m, c >= d.minute ? 0 : n * Math.floor(w.get("Seconds", m) / n)); c >= d.minute && w.set("Minutes", m,
                            c >= d.hour ? 0 : n * Math.floor(w.get("Minutes", m) / n)); c >= d.hour && w.set("Hours", m, c >= d.day ? 0 : n * Math.floor(w.get("Hours", m) / n)); c >= d.day && w.set("Date", m, c >= d.month ? 1 : Math.max(1, n * Math.floor(w.get("Date", m) / n))); if (c >= d.month) { w.set("Month", m, c >= d.year ? 0 : n * Math.floor(w.get("Month", m) / n)); var k = w.get("FullYear", m) } c >= d.year && w.set("FullYear", m, k - k % n); c === d.week && (k = w.get("Day", m), w.set("Date", m, w.get("Date", m) - k + F + (k < F ? -7 : 0))); k = w.get("FullYear", m); F = w.get("Month", m); var h = w.get("Date", m), v = w.get("Hours", m);
                        u = m.getTime(); !w.variableTimezone && w.useUTC || !y(l) || (a = l - u > 4 * d.month || w.getTimezoneOffset(u) !== w.getTimezoneOffset(l)); u = m.getTime(); for (m = 1; u < l;)z.push(u), u = c === d.year ? w.makeTime(k + m * n, 0) : c === d.month ? w.makeTime(k, F + m * n) : !a || c !== d.day && c !== d.week ? a && c === d.hour && 1 < n ? w.makeTime(k, F, h, v + m * n) : u + c * n : w.makeTime(k, F, h + m * n * (c === d.day ? 1 : 7)), m++; z.push(u); c <= d.hour && 1E4 > z.length && z.forEach(function (a) { 0 === a % 18E5 && "000000000" === w.dateFormat("%H%M%S%L", a) && (q[a] = "day") })
                    } z.info = A(e, {
                        higherRanks: q, totalRange: c *
                            n
                    }); return z
                }; return u
            }(); b.Time = f; return b.Time
    }); J(b, "Core/Options.js", [b["Core/Globals.js"], b["Core/Color/Color.js"], b["Core/Color/Palette.js"], b["Core/Time.js"], b["Core/Utilities.js"]], function (b, f, D, y, C) {
        var B = b.isTouchDevice, t = b.svg; f = f.parse; var r = C.merge; ""; var p = {
            colors: D.colors, symbols: ["circle", "diamond", "square", "triangle", "triangle-down"], lang: {
                loading: "Loading...", months: "January February March April May June July August September October November December".split(" "), shortMonths: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
                weekdays: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "), decimalPoint: ".", numericSymbols: "kMGTPE".split(""), resetZoom: "Reset zoom", resetZoomTitle: "Reset zoom level 1:1", thousandsSep: " "
            }, global: {}, time: { Date: void 0, getTimezoneOffset: void 0, timezone: void 0, timezoneOffset: 0, useUTC: !0 }, chart: {
                panning: { enabled: !1, type: "x" }, styledMode: !1, borderRadius: 0, colorCount: 10, defaultSeriesType: "line", ignoreHiddenSeries: !0, spacing: [10, 10, 15, 10], resetZoomButton: {
                    theme: { zIndex: 6 }, position: {
                        align: "right",
                        x: -10, y: 10
                    }
                }, zoomBySingleTouch: !1, width: null, height: null, borderColor: D.highlightColor80, backgroundColor: D.backgroundColor, plotBorderColor: D.neutralColor20
            }, title: { text: "Chart title", align: "center", margin: 15, widthAdjust: -44 }, subtitle: { text: "", align: "center", widthAdjust: -44 }, caption: { margin: 15, text: "", align: "left", verticalAlign: "bottom" }, plotOptions: {}, labels: { style: { position: "absolute", color: D.neutralColor80 } }, legend: {
                enabled: !0, align: "center", alignColumns: !0, layout: "horizontal", labelFormatter: function () { return this.name },
                borderColor: D.neutralColor40, borderRadius: 0, navigation: { activeColor: D.highlightColor100, inactiveColor: D.neutralColor20 }, itemStyle: { color: D.neutralColor80, cursor: "pointer", fontSize: "12px", fontWeight: "bold", textOverflow: "ellipsis" }, itemHoverStyle: { color: D.neutralColor100 }, itemHiddenStyle: { color: D.neutralColor20 }, shadow: !1, itemCheckboxStyle: { position: "absolute", width: "13px", height: "13px" }, squareSymbol: !0, symbolPadding: 5, verticalAlign: "bottom", x: 0, y: 0, title: { style: { fontWeight: "bold" } }
            }, loading: {
                labelStyle: {
                    fontWeight: "bold",
                    position: "relative", top: "45%"
                }, style: { position: "absolute", backgroundColor: D.backgroundColor, opacity: .5, textAlign: "center" }
            }, tooltip: {
                enabled: !0, animation: t, borderRadius: 3, dateTimeLabelFormats: { millisecond: "%A, %b %e, %H:%M:%S.%L", second: "%A, %b %e, %H:%M:%S", minute: "%A, %b %e, %H:%M", hour: "%A, %b %e, %H:%M", day: "%A, %b %e, %Y", week: "Week from %A, %b %e, %Y", month: "%B %Y", year: "%Y" }, footerFormat: "", padding: 8, snap: B ? 25 : 10, headerFormat: '<span style="font-size: 10px">{point.key}</span><br/>', pointFormat: '<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.y}</b><br/>',
                backgroundColor: f(D.neutralColor3).setOpacity(.85).get(), borderWidth: 1, shadow: !0, style: { color: D.neutralColor80, cursor: "default", fontSize: "12px", whiteSpace: "nowrap" }
            }, credits: { enabled: !0, href: "https://www.highcharts.com?credits", position: { align: "right", x: -10, verticalAlign: "bottom", y: -5 }, style: { cursor: "pointer", color: D.neutralColor40, fontSize: "9px" }, text: "Highcharts.com" }
        }; p.chart.styledMode = !1; ""; var l = new y(r(p.global, p.time)); return {
            defaultOptions: p, defaultTime: l, getOptions: function () { return p },
            setOptions: function (g) { r(!0, p, g); if (g.time || g.global) b.time ? b.time.update(r(p.global, p.time, g.global, g.time)) : b.time = l; return p }
        }
    }); J(b, "Core/Animation/Fx.js", [b["Core/Color/Color.js"], b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f, D) {
        var B = b.parse, C = f.win, A = D.isNumber, t = D.objectEach; return function () {
            function f(p, l, g) { this.pos = NaN; this.options = l; this.elem = p; this.prop = g } f.prototype.dSetter = function () {
                var p = this.paths, l = p && p[0]; p = p && p[1]; var g = this.now || 0, e = []; if (1 !== g && l && p) if (l.length ===
                    p.length && 1 > g) for (var d = 0; d < p.length; d++) { for (var u = l[d], f = p[d], I = [], K = 0; K < f.length; K++) { var F = u[K], w = f[K]; A(F) && A(w) && ("A" !== f[0] || 4 !== K && 5 !== K) ? I[K] = F + g * (w - F) : I[K] = w } e.push(I) } else e = p; else e = this.toD || []; this.elem.attr("d", e, void 0, !0)
            }; f.prototype.update = function () { var p = this.elem, l = this.prop, g = this.now, e = this.options.step; if (this[l + "Setter"]) this[l + "Setter"](); else p.attr ? p.element && p.attr(l, g, null, !0) : p.style[l] = g + this.unit; e && e.call(p, g, this) }; f.prototype.run = function (p, l, g) {
                var e = this, d = e.options,
                u = function (d) { return u.stopped ? !1 : e.step(d) }, H = C.requestAnimationFrame || function (d) { setTimeout(d, 13) }, I = function () { for (var d = 0; d < f.timers.length; d++)f.timers[d]() || f.timers.splice(d--, 1); f.timers.length && H(I) }; p !== l || this.elem["forceAnimate:" + this.prop] ? (this.startTime = +new Date, this.start = p, this.end = l, this.unit = g, this.now = this.start, this.pos = 0, u.elem = this.elem, u.prop = this.prop, u() && 1 === f.timers.push(u) && H(I)) : (delete d.curAnim[this.prop], d.complete && 0 === Object.keys(d.curAnim).length && d.complete.call(this.elem))
            };
            f.prototype.step = function (p) { var l = +new Date, g = this.options, e = this.elem, d = g.complete, u = g.duration, f = g.curAnim; if (e.attr && !e.element) p = !1; else if (p || l >= u + this.startTime) { this.now = this.end; this.pos = 1; this.update(); var I = f[this.prop] = !0; t(f, function (d) { !0 !== d && (I = !1) }); I && d && d.call(e); p = !1 } else this.pos = g.easing((l - this.startTime) / u), this.now = this.start + (this.end - this.start) * this.pos, this.update(), p = !0; return p }; f.prototype.initPath = function (p, l, g) {
                function e(d, m) {
                    for (; d.length < z;) {
                        var c = d[0], n = m[z -
                            d.length]; n && "M" === c[0] && (d[0] = "C" === n[0] ? ["C", c[1], c[2], c[1], c[2], c[1], c[2]] : ["L", c[1], c[2]]); d.unshift(c); I && (c = d.pop(), d.push(d[d.length - 1], c))
                    }
                } function d(d, m) { for (; d.length < z;)if (m = d[Math.floor(d.length / K) - 1].slice(), "C" === m[0] && (m[1] = m[5], m[2] = m[6]), I) { var c = d[Math.floor(d.length / K)].slice(); d.splice(d.length / 2, 0, m, c) } else d.push(m) } var u = p.startX, f = p.endX; g = g.slice(); var I = p.isArea, K = I ? 2 : 1; l = l && l.slice(); if (!l) return [g, g]; if (u && f && f.length) {
                    for (p = 0; p < u.length; p++)if (u[p] === f[0]) { var F = p; break } else if (u[0] ===
                        f[f.length - u.length + p]) { F = p; var w = !0; break } else if (u[u.length - 1] === f[f.length - u.length + p]) { F = u.length - p; break } "undefined" === typeof F && (l = [])
                } if (l.length && A(F)) { var z = g.length + F * K; w ? (e(l, g), d(g, l)) : (e(g, l), d(l, g)) } return [l, g]
            }; f.prototype.fillSetter = function () { f.prototype.strokeSetter.apply(this, arguments) }; f.prototype.strokeSetter = function () { this.elem.attr(this.prop, B(this.start).tweenTo(B(this.end), this.pos), null, !0) }; f.timers = []; return f
        }()
    }); J(b, "Core/Animation/AnimationUtilities.js", [b["Core/Animation/Fx.js"],
    b["Core/Utilities.js"]], function (b, f) {
        function B(d) { return p(d) ? l({ duration: 500, defer: 0 }, d) : { duration: d ? 500 : 0, defer: 0 } } function y(d, e) { for (var g = b.timers.length; g--;)b.timers[g].elem !== d || e && e !== b.timers[g].prop || (b.timers[g].stopped = !0) } var C = f.defined, A = f.getStyle, t = f.isArray, r = f.isNumber, p = f.isObject, l = f.merge, g = f.objectEach, e = f.pick; return {
            animate: function (d, e, f) {
                var u, K = "", F, w; if (!p(f)) { var z = arguments; f = { duration: z[2], easing: z[3], complete: z[4] } } r(f.duration) || (f.duration = 400); f.easing = "function" ===
                    typeof f.easing ? f.easing : Math[f.easing] || Math.easeInOutSine; f.curAnim = l(e); g(e, function (q, m) { y(d, m); w = new b(d, f, m); F = void 0; "d" === m && t(e.d) ? (w.paths = w.initPath(d, d.pathArray, e.d), w.toD = e.d, u = 0, F = 1) : d.attr ? u = d.attr(m) : (u = parseFloat(A(d, m)) || 0, "opacity" !== m && (K = "px")); F || (F = q); "string" === typeof F && F.match("px") && (F = F.replace(/px/g, "")); w.run(u, F, K) })
            }, animObject: B, getDeferredAnimation: function (d, e, g) {
                var u = B(e), l = 0, f = 0; (g ? [g] : d.series).forEach(function (d) {
                    d = B(d.options.animation); l = e && C(e.defer) ? u.defer :
                        Math.max(l, d.duration + d.defer); f = Math.min(u.duration, d.duration)
                }); d.renderer.forExport && (l = 0); return { defer: Math.max(0, l - f), duration: Math.min(l, f) }
            }, setAnimation: function (d, g) { g.renderer.globalAnimation = e(d, g.options.chart.animation, !0) }, stop: y
        }
    }); J(b, "Core/Renderer/HTML/AST.js", [b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f) {
        var B = b.SVG_NS, y = f.attr, C = f.createElement, A = f.discardElement, t = f.error, r = f.isString, p = f.objectEach, l = f.splat; ""; var g = !1; try {
            g = !!(new DOMParser).parseFromString("",
                "text/html")
        } catch (e) { } return function () {
            function e(d) { this.nodes = "string" === typeof d ? this.parseMarkup(d) : d } e.filterUserAttributes = function (d) { p(d, function (g, l) { var u = !0; -1 === e.allowedAttributes.indexOf(l) && (u = !1); -1 !== ["background", "dynsrc", "href", "lowsrc", "src"].indexOf(l) && (u = r(g) && e.allowedReferences.some(function (d) { return 0 === g.indexOf(d) })); u || (t("Highcharts warning: Invalid attribute '" + l + "' in config"), delete d[l]) }); return d }; e.setElementHTML = function (d, g) { d.innerHTML = ""; g && (new e(g)).addToDOM(d) };
            e.prototype.addToDOM = function (d) {
                function g(d, u) {
                    var f; l(d).forEach(function (d) {
                        var w = d.tagName, l = d.textContent ? b.doc.createTextNode(d.textContent) : void 0; if (w) if ("#text" === w) var q = l; else if (-1 !== e.allowedTags.indexOf(w)) { w = b.doc.createElementNS("svg" === w ? B : u.namespaceURI || B, w); var m = d.attributes || {}; p(d, function (c, n) { "tagName" !== n && "attributes" !== n && "children" !== n && "textContent" !== n && (m[n] = c) }); y(w, e.filterUserAttributes(m)); l && w.appendChild(l); g(d.children || [], w); q = w } else t("Highcharts warning: Invalid tagName '" +
                            w + "' in config"); q && u.appendChild(q); f = q
                    }); return f
                } return g(this.nodes, d)
            }; e.prototype.parseMarkup = function (d) {
                var e = []; if (g) d = (new DOMParser).parseFromString(d, "text/html"); else { var l = C("div"); l.innerHTML = d; d = { body: l } } var f = function (d, e) {
                    var g = d.nodeName.toLowerCase(), l = { tagName: g }; if ("#text" === g) { g = d.textContent || ""; if (/^[\s]*$/.test(g)) return; l.textContent = g } if (g = d.attributes) { var q = {};[].forEach.call(g, function (c) { q[c.name] = c.value }); l.attributes = q } if (d.childNodes.length) {
                        var m = [];[].forEach.call(d.childNodes,
                            function (c) { f(c, m) }); m.length && (l.children = m)
                    } e.push(l)
                };[].forEach.call(d.body.childNodes, function (d) { return f(d, e) }); l && A(l); return e
            }; e.allowedTags = "a b br button caption circle clipPath code dd defs div dl dt em feComponentTransfer feFuncA feFuncB feFuncG feFuncR feGaussianBlur feOffset feMerge feMergeNode filter h1 h2 h3 h4 h5 h6 hr i img li linearGradient marker ol p path pattern pre rect small span stop strong style sub sup svg table text thead tbody tspan td th tr u ul #text".split(" "); e.allowedAttributes =
                "aria-controls aria-describedby aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-pressed aria-readonly aria-roledescription aria-selected class clip-path color colspan cx cy d dx dy disabled fill height href id in markerHeight markerWidth offset opacity orient padding paddingLeft patternUnits r refX refY role scope slope src startOffset stdDeviation stroke stroke-linecap stroke-width style result rowspan summary target tabindex text-align textAnchor textLength type valign width x x1 x2 y y1 y2 zIndex".split(" ");
            e.allowedReferences = "https:// http:// mailto: / ../ ./ #".split(" "); return e
        }()
    }); J(b, "Core/FormatUtilities.js", [b["Core/Options.js"], b["Core/Utilities.js"]], function (b, f) {
        function B(l, g, e, d) {
            l = +l || 0; g = +g; var u = y.lang, f = (l.toString().split(".")[1] || "").split("e")[0].length, I = l.toString().split("e"), K = g; if (-1 === g) g = Math.min(f, 20); else if (!t(g)) g = 2; else if (g && I[1] && 0 > I[1]) {
                var F = g + +I[1]; 0 <= F ? (I[0] = (+I[0]).toExponential(F).split("e")[0], g = F) : (I[0] = I[0].split(".")[0] || 0, l = 20 > g ? (I[0] * Math.pow(10, I[1])).toFixed(g) :
                    0, I[1] = 0)
            } F = (Math.abs(I[1] ? I[0] : l) + Math.pow(10, -Math.max(g, f) - 1)).toFixed(g); f = String(p(F)); var w = 3 < f.length ? f.length % 3 : 0; e = r(e, u.decimalPoint); d = r(d, u.thousandsSep); l = (0 > l ? "-" : "") + (w ? f.substr(0, w) + d : ""); l = 0 > +I[1] && !K ? "0" : l + f.substr(w).replace(/(\d{3})(?=\d)/g, "$1" + d); g && (l += e + F.slice(-g)); I[1] && 0 !== +l && (l += "e" + I[1]); return l
        } var y = b.defaultOptions, C = b.defaultTime, A = f.getNestedProperty, t = f.isNumber, r = f.pick, p = f.pInt; return {
            dateFormat: function (l, g, e) { return C.dateFormat(l, g, e) }, format: function (l, g,
                e) { var d = "{", u = !1, f = /f$/, p = /\.([0-9])/, K = y.lang, F = e && e.time || C; e = e && e.numberFormatter || B; for (var w = []; l;) { var z = l.indexOf(d); if (-1 === z) break; var q = l.slice(0, z); if (u) { q = q.split(":"); d = A(q.shift() || "", g); if (q.length && "number" === typeof d) if (q = q.join(":"), f.test(q)) { var m = parseInt((q.match(p) || ["", "-1"])[1], 10); null !== d && (d = e(d, m, K.decimalPoint, -1 < q.indexOf(",") ? K.thousandsSep : "")) } else d = F.dateFormat(q, d); w.push(d) } else w.push(q); l = l.slice(z + 1); d = (u = !u) ? "}" : "{" } w.push(l); return w.join("") }, numberFormat: B
        }
    });
    J(b, "Core/Renderer/SVG/SVGElement.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/Renderer/HTML/AST.js"], b["Core/Color/Color.js"], b["Core/Globals.js"], b["Core/Color/Palette.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A) {
        var t = b.animate, r = b.animObject, p = b.stop, l = y.deg2rad, g = y.doc, e = y.noop, d = y.svg, u = y.SVG_NS, H = y.win, I = A.addEvent, K = A.attr, F = A.createElement, w = A.css, z = A.defined, q = A.erase, m = A.extend, c = A.fireEvent, n = A.isArray, a = A.isFunction, k = A.isNumber, h = A.isString, v = A.merge, E = A.objectEach, L =
            A.pick, M = A.pInt, S = A.syncTimeout, B = A.uniqueKey; b = function () {
                function b() { this.element = void 0; this.onEvents = {}; this.opacity = 1; this.renderer = void 0; this.SVG_NS = u; this.symbolCustomAttribs = "x y width height r start end innerR anchorX anchorY rounded".split(" ") } b.prototype._defaultGetter = function (a) { a = L(this[a + "Value"], this[a], this.element ? this.element.getAttribute(a) : null, 0); /^[\-0-9\.]+$/.test(a) && (a = parseFloat(a)); return a }; b.prototype._defaultSetter = function (a, c, x) { x.setAttribute(c, a) }; b.prototype.add =
                    function (a) { var c = this.renderer, x = this.element; a && (this.parentGroup = a); this.parentInverted = a && a.inverted; "undefined" !== typeof this.textStr && "text" === this.element.nodeName && c.buildText(this); this.added = !0; if (!a || a.handleZ || this.zIndex) var h = this.zIndexSetter(); h || (a ? a.element : c.box).appendChild(x); if (this.onAdd) this.onAdd(); return this }; b.prototype.addClass = function (a, c) {
                        var x = c ? "" : this.attr("class") || ""; a = (a || "").split(/ /g).reduce(function (a, c) { -1 === x.indexOf(c) && a.push(c); return a }, x ? [x] : []).join(" ");
                        a !== x && this.attr("class", a); return this
                    }; b.prototype.afterSetters = function () { this.doTransform && (this.updateTransform(), this.doTransform = !1) }; b.prototype.align = function (a, c, x) {
                        var G = {}, k = this.renderer, n = k.alignedObjects, d, m, v; if (a) { if (this.alignOptions = a, this.alignByTranslate = c, !x || h(x)) this.alignTo = d = x || "renderer", q(n, this), n.push(this), x = void 0 } else a = this.alignOptions, c = this.alignByTranslate, d = this.alignTo; x = L(x, k[d], "scrollablePlotBox" === d ? k.plotBox : void 0, k); d = a.align; var e = a.verticalAlign; k =
                            (x.x || 0) + (a.x || 0); n = (x.y || 0) + (a.y || 0); "right" === d ? m = 1 : "center" === d && (m = 2); m && (k += (x.width - (a.width || 0)) / m); G[c ? "translateX" : "x"] = Math.round(k); "bottom" === e ? v = 1 : "middle" === e && (v = 2); v && (n += (x.height - (a.height || 0)) / v); G[c ? "translateY" : "y"] = Math.round(n); this[this.placed ? "animate" : "attr"](G); this.placed = !0; this.alignAttr = G; return this
                    }; b.prototype.alignSetter = function (a) { var c = { left: "start", center: "middle", right: "end" }; c[a] && (this.alignValue = a, this.element.setAttribute("text-anchor", c[a])) }; b.prototype.animate =
                        function (a, c, x) { var h = this, k = r(L(c, this.renderer.globalAnimation, !0)); c = k.defer; L(g.hidden, g.msHidden, g.webkitHidden, !1) && (k.duration = 0); 0 !== k.duration ? (x && (k.complete = x), S(function () { h.element && t(h, a, k) }, c)) : (this.attr(a, void 0, x), E(a, function (a, c) { k.step && k.step.call(this, a, { prop: c, pos: 1, elem: this }) }, this)); return this }; b.prototype.applyTextOutline = function (a) {
                            var c = this.element; -1 !== a.indexOf("contrast") && (a = a.replace(/contrast/g, this.renderer.getContrast(c.style.fill))); var x = a.split(" "); a = x[x.length -
                                1]; if ((x = x[0]) && "none" !== x && y.svg) {
                                this.fakeTS = !0; this.ySetter = this.xSetter; x = x.replace(/(^[\d\.]+)(.*?)$/g, function (a, c, x) { return 2 * Number(c) + x }); this.removeTextOutline(); var h = g.createElementNS(u, "tspan"); K(h, { "class": "highcharts-text-outline", fill: a, stroke: a, "stroke-width": x, "stroke-linejoin": "round" });[].forEach.call(c.childNodes, function (a) { var c = a.cloneNode(!0); c.removeAttribute && ["fill", "stroke", "stroke-width", "stroke"].forEach(function (a) { return c.removeAttribute(a) }); h.appendChild(c) }); var k =
                                    g.createElementNS(u, "tspan"); k.textContent = "\u200b";["x", "y"].forEach(function (a) { var x = c.getAttribute(a); x && k.setAttribute(a, x) }); h.appendChild(k); c.insertBefore(h, c.firstChild)
                                }
                        }; b.prototype.attr = function (a, c, x, h) {
                            var k = this.element, G = this.symbolCustomAttribs, n, d = this, m, v; if ("string" === typeof a && "undefined" !== typeof c) { var e = a; a = {}; a[e] = c } "string" === typeof a ? d = (this[a + "Getter"] || this._defaultGetter).call(this, a, k) : (E(a, function (c, x) {
                                m = !1; h || p(this, x); this.symbolName && -1 !== G.indexOf(x) && (n || (this.symbolAttr(a),
                                    n = !0), m = !0); !this.rotation || "x" !== x && "y" !== x || (this.doTransform = !0); m || (v = this[x + "Setter"] || this._defaultSetter, v.call(this, c, x, k), !this.styledMode && this.shadows && /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(x) && this.updateShadows(x, c, v))
                            }, this), this.afterSetters()); x && x.call(this); return d
                        }; b.prototype.clip = function (a) { return this.attr("clip-path", a ? "url(" + this.renderer.url + "#" + a.id + ")" : "none") }; b.prototype.crisp = function (a, c) {
                            c = c || a.strokeWidth || 0; var x = Math.round(c) % 2 / 2; a.x = Math.floor(a.x ||
                                this.x || 0) + x; a.y = Math.floor(a.y || this.y || 0) + x; a.width = Math.floor((a.width || this.width || 0) - 2 * x); a.height = Math.floor((a.height || this.height || 0) - 2 * x); z(a.strokeWidth) && (a.strokeWidth = c); return a
                        }; b.prototype.complexColor = function (a, h, x) {
                            var k = this.renderer, G, d, m, e, N, g, q, O, l, w, u = [], f; c(this.renderer, "complexColor", { args: arguments }, function () {
                                a.radialGradient ? d = "radialGradient" : a.linearGradient && (d = "linearGradient"); if (d) {
                                    m = a[d]; N = k.gradients; g = a.stops; l = x.radialReference; n(m) && (a[d] = m = {
                                        x1: m[0], y1: m[1],
                                        x2: m[2], y2: m[3], gradientUnits: "userSpaceOnUse"
                                    }); "radialGradient" === d && l && !z(m.gradientUnits) && (e = m, m = v(m, k.getRadialAttr(l, e), { gradientUnits: "userSpaceOnUse" })); E(m, function (a, c) { "id" !== c && u.push(c, a) }); E(g, function (a) { u.push(a) }); u = u.join(","); if (N[u]) w = N[u].attr("id"); else {
                                    m.id = w = B(); var c = N[u] = k.createElement(d).attr(m).add(k.defs); c.radAttr = e; c.stops = []; g.forEach(function (a) {
                                        0 === a[1].indexOf("rgba") ? (G = D.parse(a[1]), q = G.get("rgb"), O = G.get("a")) : (q = a[1], O = 1); a = k.createElement("stop").attr({
                                            offset: a[0],
                                            "stop-color": q, "stop-opacity": O
                                        }).add(c); c.stops.push(a)
                                    })
                                    } f = "url(" + k.url + "#" + w + ")"; x.setAttribute(h, f); x.gradient = u; a.toString = function () { return f }
                                }
                            })
                        }; b.prototype.css = function (a) {
                            var c = this.styles, x = {}, h = this.element, k = ["textOutline", "textOverflow", "width"], n = "", v = !c; a && a.color && (a.fill = a.color); c && E(a, function (a, h) { c && c[h] !== a && (x[h] = a, v = !0) }); if (v) {
                                c && (a = m(c, x)); if (a) if (null === a.width || "auto" === a.width) delete this.textWidth; else if ("text" === h.nodeName.toLowerCase() && a.width) var e = this.textWidth =
                                    M(a.width); this.styles = a; e && !d && this.renderer.forExport && delete a.width; if (h.namespaceURI === this.SVG_NS) { var N = function (a, c) { return "-" + c.toLowerCase() }; E(a, function (a, c) { -1 === k.indexOf(c) && (n += c.replace(/([A-Z])/g, N) + ":" + a + ";") }); n && K(h, "style", n) } else w(h, a); this.added && ("text" === this.element.nodeName && this.renderer.buildText(this), a && a.textOutline && this.applyTextOutline(a.textOutline))
                            } return this
                        }; b.prototype.dashstyleSetter = function (a) {
                            var c = this["stroke-width"]; "inherit" === c && (c = 1); if (a = a && a.toLowerCase()) {
                                var x =
                                    a.replace("shortdashdotdot", "3,1,1,1,1,1,").replace("shortdashdot", "3,1,1,1").replace("shortdot", "1,1,").replace("shortdash", "3,1,").replace("longdash", "8,3,").replace(/dot/g, "1,3,").replace("dash", "4,3,").replace(/,$/, "").split(","); for (a = x.length; a--;)x[a] = "" + M(x[a]) * L(c, NaN); a = x.join(",").replace(/NaN/g, "none"); this.element.setAttribute("stroke-dasharray", a)
                            }
                        }; b.prototype.destroy = function () {
                            var a = this, c = a.element || {}, x = a.renderer, h = c.ownerSVGElement, k = x.isSVG && "SPAN" === c.nodeName && a.parentGroup ||
                                void 0; c.onclick = c.onmouseout = c.onmouseover = c.onmousemove = c.point = null; p(a); if (a.clipPath && h) { var n = a.clipPath;[].forEach.call(h.querySelectorAll("[clip-path],[CLIP-PATH]"), function (a) { -1 < a.getAttribute("clip-path").indexOf(n.element.id) && a.removeAttribute("clip-path") }); a.clipPath = n.destroy() } if (a.stops) { for (h = 0; h < a.stops.length; h++)a.stops[h].destroy(); a.stops.length = 0; a.stops = void 0 } a.safeRemoveChild(c); for (x.styledMode || a.destroyShadows(); k && k.div && 0 === k.div.childNodes.length;)c = k.parentGroup,
                                    a.safeRemoveChild(k.div), delete k.div, k = c; a.alignTo && q(x.alignedObjects, a); E(a, function (c, x) { a[x] && a[x].parentGroup === a && a[x].destroy && a[x].destroy(); delete a[x] })
                        }; b.prototype.destroyShadows = function () { (this.shadows || []).forEach(function (a) { this.safeRemoveChild(a) }, this); this.shadows = void 0 }; b.prototype.destroyTextPath = function (a, c) {
                            var x = a.getElementsByTagName("text")[0]; if (x) {
                                if (x.removeAttribute("dx"), x.removeAttribute("dy"), c.element.setAttribute("id", ""), this.textPathWrapper && x.getElementsByTagName("textPath").length) {
                                    for (a =
                                        this.textPathWrapper.element.childNodes; a.length;)x.appendChild(a[0]); x.removeChild(this.textPathWrapper.element)
                                }
                            } else if (a.getAttribute("dx") || a.getAttribute("dy")) a.removeAttribute("dx"), a.removeAttribute("dy"); this.textPathWrapper && (this.textPathWrapper = this.textPathWrapper.destroy())
                        }; b.prototype.dSetter = function (a, c, x) {
                        n(a) && ("string" === typeof a[0] && (a = this.renderer.pathToSegments(a)), this.pathArray = a, a = a.reduce(function (a, c, x) { return c && c.join ? (x ? a + " " : "") + c.join(" ") : (c || "").toString() }, ""));
                            /(NaN| {2}|^$)/.test(a) && (a = "M 0 0"); this[c] !== a && (x.setAttribute(c, a), this[c] = a)
                        }; b.prototype.fadeOut = function (a) { var c = this; c.animate({ opacity: 0 }, { duration: L(a, 150), complete: function () { c.attr({ y: -9999 }).hide() } }) }; b.prototype.fillSetter = function (a, c, x) { "string" === typeof a ? x.setAttribute(c, a) : a && this.complexColor(a, c, x) }; b.prototype.getBBox = function (c, h) {
                            var x = this.renderer, k = this.element, n = this.styles, d = this.textStr, G = x.cache, v = x.cacheKeys, e = k.namespaceURI === this.SVG_NS; h = L(h, this.rotation, 0); var g =
                                x.styledMode ? k && b.prototype.getStyle.call(k, "font-size") : n && n.fontSize, q; if (z(d)) { var E = d.toString(); -1 === E.indexOf("<") && (E = E.replace(/[0-9]/g, "0")); E += ["", h, g, this.textWidth, n && n.textOverflow, n && n.fontWeight].join() } E && !c && (q = G[E]); if (!q) {
                                    if (e || x.forExport) {
                                        try { var u = this.fakeTS && function (a) { var c = k.querySelector(".highcharts-text-outline"); c && w(c, { display: a }) }; a(u) && u("none"); q = k.getBBox ? m({}, k.getBBox()) : { width: k.offsetWidth, height: k.offsetHeight }; a(u) && u("") } catch (U) { "" } if (!q || 0 > q.width) q = {
                                            width: 0,
                                            height: 0
                                        }
                                    } else q = this.htmlGetBBox(); x.isSVG && (c = q.width, x = q.height, e && (q.height = x = { "11px,17": 14, "13px,20": 16 }[n && n.fontSize + "," + Math.round(x)] || x), h && (n = h * l, q.width = Math.abs(x * Math.sin(n)) + Math.abs(c * Math.cos(n)), q.height = Math.abs(x * Math.cos(n)) + Math.abs(c * Math.sin(n)))); if (E && 0 < q.height) { for (; 250 < v.length;)delete G[v.shift()]; G[E] || v.push(E); G[E] = q }
                                } return q
                        }; b.prototype.getStyle = function (a) { return H.getComputedStyle(this.element || this, "").getPropertyValue(a) }; b.prototype.hasClass = function (a) {
                            return -1 !==
                                ("" + this.attr("class")).split(" ").indexOf(a)
                        }; b.prototype.hide = function (a) { a ? this.attr({ y: -9999 }) : this.attr({ visibility: "hidden" }); return this }; b.prototype.htmlGetBBox = function () { return { height: 0, width: 0, x: 0, y: 0 } }; b.prototype.init = function (a, h) { this.element = "span" === h ? F(h) : g.createElementNS(this.SVG_NS, h); this.renderer = a; c(this, "afterInit") }; b.prototype.invert = function (a) { this.inverted = a; this.updateTransform(); return this }; b.prototype.on = function (a, c) {
                            var h = this.onEvents; if (h[a]) h[a](); h[a] = I(this.element,
                                a, c); return this
                        }; b.prototype.opacitySetter = function (a, c, h) { this.opacity = a = Number(Number(a).toFixed(3)); h.setAttribute(c, a) }; b.prototype.removeClass = function (a) { return this.attr("class", ("" + this.attr("class")).replace(h(a) ? new RegExp("(^| )" + a + "( |$)") : a, " ").replace(/ +/g, " ").trim()) }; b.prototype.removeTextOutline = function () { var a = this.element.querySelector("tspan.highcharts-text-outline"); a && this.safeRemoveChild(a) }; b.prototype.safeRemoveChild = function (a) { var c = a.parentNode; c && c.removeChild(a) };
                b.prototype.setRadialReference = function (a) { var c = this.element.gradient && this.renderer.gradients[this.element.gradient]; this.element.radialReference = a; c && c.radAttr && c.animate(this.renderer.getRadialAttr(a, c.radAttr)); return this }; b.prototype.setTextPath = function (a, c) {
                    var h = this.element, n = this.text ? this.text.element : h, d = { textAnchor: "text-anchor" }, m = !1, G = this.textPathWrapper, q = !G; c = v(!0, { enabled: !0, attributes: { dy: -5, startOffset: "50%", textAnchor: "middle" } }, c); var N = f.filterUserAttributes(c.attributes);
                    if (a && c && c.enabled) {
                        G && null === G.element.parentNode ? (q = !0, G = G.destroy()) : G && this.removeTextOutline.call(G.parentGroup); this.options && this.options.padding && (N.dx = -this.options.padding); G || (this.textPathWrapper = G = this.renderer.createElement("textPath"), m = !0); var g = G.element; (c = a.element.getAttribute("id")) || a.element.setAttribute("id", c = B()); if (q) for (n.setAttribute("y", 0), k(N.dx) && n.setAttribute("x", -N.dx), a = [].slice.call(n.childNodes), q = 0; q < a.length; q++) {
                            var l = a[q]; l.nodeType !== Node.TEXT_NODE && "tspan" !==
                                l.nodeName || g.appendChild(l)
                        } m && G && G.add({ element: n }); g.setAttributeNS("http://www.w3.org/1999/xlink", "href", this.renderer.url + "#" + c); z(N.dy) && (g.parentNode.setAttribute("dy", N.dy), delete N.dy); z(N.dx) && (g.parentNode.setAttribute("dx", N.dx), delete N.dx); E(N, function (a, c) { g.setAttribute(d[c] || c, a) }); h.removeAttribute("transform"); this.removeTextOutline.call(G); this.text && !this.renderer.styledMode && this.attr({ fill: "none", "stroke-width": 0 }); this.applyTextOutline = this.updateTransform = e
                    } else G && (delete this.updateTransform,
                        delete this.applyTextOutline, this.destroyTextPath(h, a), this.updateTransform(), this.options && this.options.rotation && this.applyTextOutline(this.options.style.textOutline)); return this
                }; b.prototype.shadow = function (a, c, h) {
                    var x = [], k = this.element, n = this.oldShadowOptions, d = { color: C.neutralColor100, offsetX: 1, offsetY: 1, opacity: .15, width: 3 }, G = !1, v; !0 === a ? v = d : "object" === typeof a && (v = m(d, a)); v && (v && n && E(v, function (a, c) { a !== n[c] && (G = !0) }), G && this.destroyShadows(), this.oldShadowOptions = v); if (!v) this.destroyShadows();
                    else if (!this.shadows) {
                        var e = v.opacity / v.width; var q = this.parentInverted ? "translate(-1,-1)" : "translate(" + v.offsetX + ", " + v.offsetY + ")"; for (d = 1; d <= v.width; d++) {
                            var g = k.cloneNode(!1); var l = 2 * v.width + 1 - 2 * d; K(g, { stroke: a.color || C.neutralColor100, "stroke-opacity": e * d, "stroke-width": l, transform: q, fill: "none" }); g.setAttribute("class", (g.getAttribute("class") || "") + " highcharts-shadow"); h && (K(g, "height", Math.max(K(g, "height") - l, 0)), g.cutHeight = l); c ? c.element.appendChild(g) : k.parentNode && k.parentNode.insertBefore(g,
                                k); x.push(g)
                        } this.shadows = x
                    } return this
                }; b.prototype.show = function (a) { return this.attr({ visibility: a ? "inherit" : "visible" }) }; b.prototype.strokeSetter = function (a, c, h) {
                this[c] = a; this.stroke && this["stroke-width"] ? (b.prototype.fillSetter.call(this, this.stroke, "stroke", h), h.setAttribute("stroke-width", this["stroke-width"]), this.hasStroke = !0) : "stroke-width" === c && 0 === a && this.hasStroke ? (h.removeAttribute("stroke"), this.hasStroke = !1) : this.renderer.styledMode && this["stroke-width"] && (h.setAttribute("stroke-width",
                    this["stroke-width"]), this.hasStroke = !0)
                }; b.prototype.strokeWidth = function () { if (!this.renderer.styledMode) return this["stroke-width"] || 0; var a = this.getStyle("stroke-width"), c = 0; if (a.indexOf("px") === a.length - 2) c = M(a); else if ("" !== a) { var h = g.createElementNS(u, "rect"); K(h, { width: a, "stroke-width": 0 }); this.element.parentNode.appendChild(h); c = h.getBBox().width; h.parentNode.removeChild(h) } return c }; b.prototype.symbolAttr = function (a) {
                    var c = this; "x y r start end width height innerR anchorX anchorY clockwise".split(" ").forEach(function (h) {
                    c[h] =
                        L(a[h], c[h])
                    }); c.attr({ d: c.renderer.symbols[c.symbolName](c.x, c.y, c.width, c.height, c) })
                }; b.prototype.textSetter = function (a) { a !== this.textStr && (delete this.textPxLength, this.textStr = a, this.added && this.renderer.buildText(this)) }; b.prototype.titleSetter = function (a) {
                    var c = this.element, h = c.getElementsByTagName("title")[0] || g.createElementNS(this.SVG_NS, "title"); c.insertBefore ? c.insertBefore(h, c.firstChild) : c.appendChild(h); h.textContent = String(L(a, "")).replace(/<[^>]*>/g, "").replace(/&lt;/g, "<").replace(/&gt;/g,
                        ">")
                }; b.prototype.toFront = function () { var a = this.element; a.parentNode.appendChild(a); return this }; b.prototype.translate = function (a, c) { return this.attr({ translateX: a, translateY: c }) }; b.prototype.updateShadows = function (a, c, h) { var x = this.shadows; if (x) for (var k = x.length; k--;)h.call(x[k], "height" === a ? Math.max(c - (x[k].cutHeight || 0), 0) : "d" === a ? this.d : c, a, x[k]) }; b.prototype.updateTransform = function () {
                    var a = this.scaleX, c = this.scaleY, h = this.inverted, k = this.rotation, n = this.matrix, d = this.element, m = this.translateX ||
                        0, v = this.translateY || 0; h && (m += this.width, v += this.height); m = ["translate(" + m + "," + v + ")"]; z(n) && m.push("matrix(" + n.join(",") + ")"); h ? m.push("rotate(90) scale(-1,1)") : k && m.push("rotate(" + k + " " + L(this.rotationOriginX, d.getAttribute("x"), 0) + " " + L(this.rotationOriginY, d.getAttribute("y") || 0) + ")"); (z(a) || z(c)) && m.push("scale(" + L(a, 1) + " " + L(c, 1) + ")"); m.length && d.setAttribute("transform", m.join(" "))
                }; b.prototype.visibilitySetter = function (a, c, h) {
                    "inherit" === a ? h.removeAttribute(c) : this[c] !== a && h.setAttribute(c,
                        a); this[c] = a
                }; b.prototype.xGetter = function (a) { "circle" === this.element.nodeName && ("x" === a ? a = "cx" : "y" === a && (a = "cy")); return this._defaultGetter(a) }; b.prototype.zIndexSetter = function (a, c) {
                    var h = this.renderer, k = this.parentGroup, n = (k || h).element || h.box, d = this.element; h = n === h.box; var m = !1; var v = this.added; var G; z(a) ? (d.setAttribute("data-z-index", a), a = +a, this[c] === a && (v = !1)) : z(this[c]) && d.removeAttribute("data-z-index"); this[c] = a; if (v) {
                    (a = this.zIndex) && k && (k.handleZ = !0); c = n.childNodes; for (G = c.length - 1; 0 <=
                        G && !m; G--) { k = c[G]; v = k.getAttribute("data-z-index"); var e = !z(v); if (k !== d) if (0 > a && e && !h && !G) n.insertBefore(d, c[G]), m = !0; else if (M(v) <= a || e && (!z(a) || 0 <= a)) n.insertBefore(d, c[G + 1] || null), m = !0 } m || (n.insertBefore(d, c[h ? 3 : 0] || null), m = !0)
                    } return m
                }; return b
            }(); b.prototype["stroke-widthSetter"] = b.prototype.strokeSetter; b.prototype.yGetter = b.prototype.xGetter; b.prototype.matrixSetter = b.prototype.rotationOriginXSetter = b.prototype.rotationOriginYSetter = b.prototype.rotationSetter = b.prototype.scaleXSetter = b.prototype.scaleYSetter =
                b.prototype.translateXSetter = b.prototype.translateYSetter = b.prototype.verticalAlignSetter = function (a, c) { this[c] = a; this.doTransform = !0 }; ""; return b
    }); J(b, "Core/Renderer/SVG/SVGLabel.js", [b["Core/Renderer/SVG/SVGElement.js"], b["Core/Utilities.js"]], function (b, f) {
        function B(g, e) { t(g) ? g !== this[e] && (this[e] = g, this.updateTextPadding()) : this[e] = void 0 } var y = this && this.__extends || function () {
            var g = function (e, d) {
                g = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, e) { d.__proto__ = e } || function (d,
                    e) { for (var g in e) e.hasOwnProperty(g) && (d[g] = e[g]) }; return g(e, d)
            }; return function (e, d) { function l() { this.constructor = e } g(e, d); e.prototype = null === d ? Object.create(d) : (l.prototype = d.prototype, new l) }
        }(), C = f.defined, A = f.extend, t = f.isNumber, r = f.merge, p = f.pick, l = f.removeEvent; return function (g) {
            function e(d, l, f, b, p, F, w, z, q, m) {
                var c = g.call(this) || this; c.paddingSetter = B; c.paddingLeftSetter = B; c.paddingRightSetter = B; c.init(d, "g"); c.textStr = l; c.x = f; c.y = b; c.anchorX = F; c.anchorY = w; c.baseline = q; c.className = m; "button" !==
                    m && c.addClass("highcharts-label"); m && c.addClass("highcharts-" + m); c.text = d.text("", 0, 0, z).attr({ zIndex: 1 }); if ("string" === typeof p) { var n = /^url\((.*?)\)$/.test(p); if (c.renderer.symbols[p] || n) c.symbolKey = p } c.bBox = e.emptyBBox; c.padding = 3; c.baselineOffset = 0; c.needsBox = d.styledMode || n; c.deferredAttr = {}; c.alignFactor = 0; return c
            } y(e, g); e.prototype.alignSetter = function (d) { d = { left: 0, center: .5, right: 1 }[d]; d !== this.alignFactor && (this.alignFactor = d, this.bBox && t(this.xSetting) && this.attr({ x: this.xSetting })) }; e.prototype.anchorXSetter =
                function (d, e) { this.anchorX = d; this.boxAttr(e, Math.round(d) - this.getCrispAdjust() - this.xSetting) }; e.prototype.anchorYSetter = function (d, e) { this.anchorY = d; this.boxAttr(e, d - this.ySetting) }; e.prototype.boxAttr = function (d, e) { this.box ? this.box.attr(d, e) : this.deferredAttr[d] = e }; e.prototype.css = function (d) {
                    if (d) {
                        var g = {}, l = void 0; d = r(d); e.textProps.forEach(function (e) { "undefined" !== typeof d[e] && (g[e] = d[e], delete d[e]) }); this.text.css(g); l = "width" in g; "fontSize" in g || "fontWeight" in g ? this.updateTextPadding() :
                            l && this.updateBoxSize()
                    } return b.prototype.css.call(this, d)
                }; e.prototype.destroy = function () { l(this.element, "mouseenter"); l(this.element, "mouseleave"); this.text && this.text.destroy(); this.box && (this.box = this.box.destroy()); b.prototype.destroy.call(this) }; e.prototype.fillSetter = function (d, e) { d && (this.needsBox = !0); this.fill = d; this.boxAttr(e, d) }; e.prototype.getBBox = function () {
                this.textStr && 0 === this.bBox.width && 0 === this.bBox.height && this.updateBoxSize(); var d = this.padding, e = p(this.paddingLeft, d); return {
                    width: this.width,
                    height: this.height, x: this.bBox.x - e, y: this.bBox.y - d
                }
                }; e.prototype.getCrispAdjust = function () { return this.renderer.styledMode && this.box ? this.box.strokeWidth() % 2 / 2 : (this["stroke-width"] ? parseInt(this["stroke-width"], 10) : 0) % 2 / 2 }; e.prototype.heightSetter = function (d) { this.heightSetting = d }; e.prototype.on = function (d, e) {
                    var g = this, l = g.text, f = l && "SPAN" === l.element.tagName ? l : void 0; if (f) {
                        var u = function (l) {
                        ("mouseenter" === d || "mouseleave" === d) && l.relatedTarget instanceof Element && (g.element.compareDocumentPosition(l.relatedTarget) &
                            Node.DOCUMENT_POSITION_CONTAINED_BY || f.element.compareDocumentPosition(l.relatedTarget) & Node.DOCUMENT_POSITION_CONTAINED_BY) || e.call(g.element, l)
                        }; f.on(d, u)
                    } b.prototype.on.call(g, d, u || e); return g
                }; e.prototype.onAdd = function () { var d = this.textStr; this.text.add(this); this.attr({ text: C(d) ? d : "", x: this.x, y: this.y }); this.box && C(this.anchorX) && this.attr({ anchorX: this.anchorX, anchorY: this.anchorY }) }; e.prototype.rSetter = function (d, e) { this.boxAttr(e, d) }; e.prototype.shadow = function (d) {
                d && !this.renderer.styledMode &&
                    (this.updateBoxSize(), this.box && this.box.shadow(d)); return this
                }; e.prototype.strokeSetter = function (d, e) { this.stroke = d; this.boxAttr(e, d) }; e.prototype["stroke-widthSetter"] = function (d, e) { d && (this.needsBox = !0); this["stroke-width"] = d; this.boxAttr(e, d) }; e.prototype["text-alignSetter"] = function (d) { this.textAlign = d }; e.prototype.textSetter = function (d) { "undefined" !== typeof d && this.text.attr({ text: d }); this.updateTextPadding() }; e.prototype.updateBoxSize = function () {
                    var d = this.text.element.style, g = {}, l = this.padding,
                    f = this.bBox = t(this.widthSetting) && t(this.heightSetting) && !this.textAlign || !C(this.text.textStr) ? e.emptyBBox : this.text.getBBox(); this.width = this.getPaddedWidth(); this.height = (this.heightSetting || f.height || 0) + 2 * l; this.baselineOffset = l + Math.min(this.renderer.fontMetrics(d && d.fontSize, this.text).b, f.height || Infinity); this.needsBox && (this.box || (d = this.box = this.symbolKey ? this.renderer.symbol(this.symbolKey) : this.renderer.rect(), d.addClass(("button" === this.className ? "" : "highcharts-label-box") + (this.className ?
                        " highcharts-" + this.className + "-box" : "")), d.add(this)), d = this.getCrispAdjust(), g.x = d, g.y = (this.baseline ? -this.baselineOffset : 0) + d, g.width = Math.round(this.width), g.height = Math.round(this.height), this.box.attr(A(g, this.deferredAttr)), this.deferredAttr = {})
                }; e.prototype.updateTextPadding = function () {
                    var d = this.text; this.updateBoxSize(); var e = this.baseline ? 0 : this.baselineOffset, g = p(this.paddingLeft, this.padding); C(this.widthSetting) && this.bBox && ("center" === this.textAlign || "right" === this.textAlign) && (g +=
                        { center: .5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width)); if (g !== d.x || e !== d.y) d.attr("x", g), d.hasBoxWidthChanged && (this.bBox = d.getBBox(!0)), "undefined" !== typeof e && d.attr("y", e); d.x = g; d.y = e
                }; e.prototype.widthSetter = function (d) { this.widthSetting = t(d) ? d : void 0 }; e.prototype.getPaddedWidth = function () { var d = this.padding, e = p(this.paddingLeft, d); d = p(this.paddingRight, d); return (this.widthSetting || this.bBox.width || 0) + e + d }; e.prototype.xSetter = function (d) {
                this.x = d; this.alignFactor && (d -= this.alignFactor *
                    this.getPaddedWidth(), this["forceAnimate:x"] = !0); this.xSetting = Math.round(d); this.attr("translateX", this.xSetting)
                }; e.prototype.ySetter = function (d) { this.ySetting = this.y = Math.round(d); this.attr("translateY", this.ySetting) }; e.emptyBBox = { width: 0, height: 0, x: 0, y: 0 }; e.textProps = "color direction fontFamily fontSize fontStyle fontWeight lineHeight textAlign textDecoration textOutline textOverflow width".split(" "); return e
        }(b)
    }); J(b, "Core/Renderer/SVG/TextBuilder.js", [b["Core/Globals.js"], b["Core/Utilities.js"],
    b["Core/Renderer/HTML/AST.js"]], function (b, f, D) {
        var B = b.doc, C = b.SVG_NS, A = f.attr, t = f.isString, r = f.objectEach, p = f.pick; return function () {
            function l(g) { var e = g.styles; this.renderer = g.renderer; this.svgElement = g; this.width = g.textWidth; this.textLineHeight = e && e.lineHeight; this.textOutline = e && e.textOutline; this.ellipsis = !(!e || "ellipsis" !== e.textOverflow); this.noWrap = !(!e || "nowrap" !== e.whiteSpace); this.fontSize = e && e.fontSize } l.prototype.buildSVG = function () {
                var g = this.svgElement, e = g.element, d = g.renderer, l =
                    p(g.textStr, "").toString(), f = -1 !== l.indexOf("<"), b = e.childNodes, K = b.length; d = this.width && !g.added && d.box; var F = /<br.*?>/g; var w = [l, this.ellipsis, this.noWrap, this.textLineHeight, this.textOutline, this.fontSize, this.width].join(); if (w !== g.textCache) {
                    g.textCache = w; for (delete g.actualWidth; K--;)e.removeChild(b[K]); f || this.ellipsis || this.width || -1 !== l.indexOf(" ") && (!this.noWrap || F.test(l)) ? "" !== l && (d && d.appendChild(e), l = new D(l), this.modifyTree(l.nodes), l.addToDOM(g.element), this.modifyDOM(), this.ellipsis &&
                        -1 !== (e.textContent || "").indexOf("\u2026") && g.attr("title", this.unescapeEntities(g.textStr || "", ["&lt;", "&gt;"])), d && d.removeChild(e)) : e.appendChild(B.createTextNode(this.unescapeEntities(l))); t(this.textOutline) && g.applyTextOutline && g.applyTextOutline(this.textOutline)
                    }
            }; l.prototype.modifyDOM = function () {
                var g = this, e = this.svgElement, d = A(e.element, "x");[].forEach.call(e.element.querySelectorAll("tspan.highcharts-br"), function (e) {
                e.nextSibling && e.previousSibling && A(e, {
                    dy: g.getLineHeight(e.nextSibling),
                    x: d
                })
                }); var l = this.width || 0; if (l) {
                    var f = function (f, b) {
                        var w = f.textContent || "", z = w.replace(/([^\^])-/g, "$1- ").split(" "), q = !g.noWrap && (1 < z.length || 1 < e.element.childNodes.length), m = g.getLineHeight(b), c = 0, n = e.actualWidth; if (g.ellipsis) w && g.truncate(f, w, void 0, 0, Math.max(0, l - parseInt(g.fontSize || 12, 10)), function (a, c) { return a.substring(0, c) + "\u2026" }); else if (q) {
                            w = []; for (q = []; b.firstChild && b.firstChild !== f;)q.push(b.firstChild), b.removeChild(b.firstChild); for (; z.length;)z.length && !g.noWrap && 0 < c && (w.push(f.textContent ||
                                ""), f.textContent = z.join(" ").replace(/- /g, "-")), g.truncate(f, void 0, z, 0 === c ? n || 0 : 0, l, function (a, c) { return z.slice(0, c).join(" ").replace(/- /g, "-") }), n = e.actualWidth, c++; q.forEach(function (a) { b.insertBefore(a, f) }); w.forEach(function (a) { b.insertBefore(B.createTextNode(a), f); a = B.createElementNS(C, "tspan"); a.textContent = "\u200b"; A(a, { dy: m, x: d }); b.insertBefore(a, f) })
                        }
                    }, b = function (d) {
                        [].slice.call(d.childNodes).forEach(function (g) {
                        g.nodeType === Node.TEXT_NODE ? f(g, d) : (-1 !== g.className.baseVal.indexOf("highcharts-br") &&
                            (e.actualWidth = 0), b(g))
                        })
                    }; b(e.element)
                }
            }; l.prototype.getLineHeight = function (g) { var e; g = g.nodeType === Node.TEXT_NODE ? g.parentElement : g; this.renderer.styledMode || (e = g && /(px|em)$/.test(g.style.fontSize) ? g.style.fontSize : this.fontSize || this.renderer.style.fontSize || 12); return this.textLineHeight ? parseInt(this.textLineHeight.toString(), 10) : this.renderer.fontMetrics(e, g || this.svgElement.element).h }; l.prototype.modifyTree = function (g) {
                var e = this, d = function (l, f) {
                    var b = l.tagName, p = e.renderer.styledMode, u = l.attributes ||
                        {}; if ("b" === b || "strong" === b) p ? u["class"] = "highcharts-strong" : u.style = "font-weight:bold;" + (u.style || ""); else if ("i" === b || "em" === b) p ? u["class"] = "highcharts-emphasized" : u.style = "font-style:italic;" + (u.style || ""); t(u.style) && (u.style = u.style.replace(/(;| |^)color([ :])/, "$1fill$2")); "br" === b && (u["class"] = "highcharts-br", l.textContent = "\u200b", (f = g[f + 1]) && f.textContent && (f.textContent = f.textContent.replace(/^ +/gm, ""))); "#text" !== b && "a" !== b && (l.tagName = "tspan"); l.attributes = u; l.children && l.children.filter(function (d) {
                            return "#text" !==
                                d.tagName
                        }).forEach(d)
                }; for (g.forEach(d); g[0] && "tspan" === g[0].tagName && !g[0].children;)g.splice(0, 1)
            }; l.prototype.truncate = function (g, e, d, l, f, b) {
                var p = this.svgElement, u = p.renderer, w = p.rotation, z = [], q = d ? 1 : 0, m = (e || d || "").length, c = m, n, a = function (a, c) { c = c || a; var h = g.parentNode; if (h && "undefined" === typeof z[c]) if (h.getSubStringLength) try { z[c] = l + h.getSubStringLength(0, d ? c + 1 : c) } catch (L) { "" } else u.getSpanWidth && (g.textContent = b(e || d, a), z[c] = l + u.getSpanWidth(p, g)); return z[c] }; p.rotation = 0; var k = a(g.textContent.length);
                if (l + k > f) { for (; q <= m;)c = Math.ceil((q + m) / 2), d && (n = b(d, c)), k = a(c, n && n.length - 1), q === m ? q = m + 1 : k > f ? m = c - 1 : q = c; 0 === m ? g.textContent = "" : e && m === e.length - 1 || (g.textContent = n || b(e || d, c)) } d && d.splice(0, c); p.actualWidth = k; p.rotation = w
            }; l.prototype.unescapeEntities = function (g, e) { r(this.renderer.escapes, function (d, l) { e && -1 !== e.indexOf(d) || (g = g.toString().replace(new RegExp(d, "g"), l)) }); return g }; return l
        }()
    }); J(b, "Core/Renderer/SVG/SVGRenderer.js", [b["Core/Color/Color.js"], b["Core/Globals.js"], b["Core/Color/Palette.js"],
    b["Core/Renderer/SVG/SVGElement.js"], b["Core/Renderer/SVG/SVGLabel.js"], b["Core/Renderer/HTML/AST.js"], b["Core/Renderer/SVG/TextBuilder.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t, r) {
        var p = r.addEvent, l = r.attr, g = r.createElement, e = r.css, d = r.defined, u = r.destroyObjectProperties, H = r.extend, I = r.isArray, K = r.isNumber, F = r.isObject, w = r.isString, z = r.merge, q = r.pick, m = r.pInt, c = r.uniqueKey, n = f.charts, a = f.deg2rad, k = f.doc, h = f.isFirefox, v = f.isMS, E = f.isWebKit, L = f.noop, M = f.SVG_NS, S = f.symbolSizes, B = f.win, R; r =
            function () {
                function G(a, c, h, k, n, d, m) { this.width = this.url = this.style = this.isSVG = this.imgCount = this.height = this.gradients = this.globalAnimation = this.defs = this.chartIndex = this.cacheKeys = this.cache = this.boxWrapper = this.box = this.alignedObjects = void 0; this.init(a, c, h, k, n, d, m) } G.prototype.init = function (a, c, n, d, m, G, v) {
                    var x = this.createElement("svg").attr({ version: "1.1", "class": "highcharts-root" }); v || x.css(this.getStyle(d)); d = x.element; a.appendChild(d); l(a, "dir", "ltr"); -1 === a.innerHTML.indexOf("xmlns") && l(d,
                        "xmlns", this.SVG_NS); this.isSVG = !0; this.box = d; this.boxWrapper = x; this.alignedObjects = []; this.url = this.getReferenceURL(); this.createElement("desc").add().element.appendChild(k.createTextNode("Created with Highcharts 9.1.0")); this.defs = this.createElement("defs").add(); this.allowHTML = G; this.forExport = m; this.styledMode = v; this.gradients = {}; this.cache = {}; this.cacheKeys = []; this.imgCount = 0; this.setSize(c, n, !1); var g; h && a.getBoundingClientRect && (c = function () {
                            e(a, { left: 0, top: 0 }); g = a.getBoundingClientRect();
                            e(a, { left: Math.ceil(g.left) - g.left + "px", top: Math.ceil(g.top) - g.top + "px" })
                        }, c(), this.unSubPixelFix = p(B, "resize", c))
                }; G.prototype.definition = function (a) { return (new A([a])).addToDOM(this.defs.element) }; G.prototype.getReferenceURL = function () {
                    if ((h || E) && k.getElementsByTagName("base").length) {
                        if (!d(R)) {
                            var a = c(); a = (new A([{
                                tagName: "svg", attributes: { width: 8, height: 8 }, children: [{ tagName: "defs", children: [{ tagName: "clipPath", attributes: { id: a }, children: [{ tagName: "rect", attributes: { width: 4, height: 4 } }] }] }, {
                                    tagName: "rect",
                                    attributes: { id: "hitme", width: 8, height: 8, "clip-path": "url(#" + a + ")", fill: "rgba(0,0,0,0.001)" }
                                }]
                            }])).addToDOM(k.body); e(a, { position: "fixed", top: 0, left: 0, zIndex: 9E5 }); var n = k.elementFromPoint(6, 6); R = "hitme" === (n && n.id); k.body.removeChild(a)
                        } if (R) return B.location.href.split("#")[0].replace(/<[^>]*>/g, "").replace(/([\('\)])/g, "\\$1").replace(/ /g, "%20")
                    } return ""
                }; G.prototype.getStyle = function (a) {
                    return this.style = H({ fontFamily: '"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif', fontSize: "12px" },
                        a)
                }; G.prototype.setStyle = function (a) { this.boxWrapper.css(this.getStyle(a)) }; G.prototype.isHidden = function () { return !this.boxWrapper.getBBox().width }; G.prototype.destroy = function () { var a = this.defs; this.box = null; this.boxWrapper = this.boxWrapper.destroy(); u(this.gradients || {}); this.gradients = null; a && (this.defs = a.destroy()); this.unSubPixelFix && this.unSubPixelFix(); return this.alignedObjects = null }; G.prototype.createElement = function (a) { var c = new this.Element; c.init(this, a); return c }; G.prototype.getRadialAttr =
                    function (a, c) { return { cx: a[0] - a[2] / 2 + (c.cx || 0) * a[2], cy: a[1] - a[2] / 2 + (c.cy || 0) * a[2], r: (c.r || 0) * a[2] } }; G.prototype.buildText = function (a) { (new t(a)).buildSVG() }; G.prototype.getContrast = function (a) { a = b.parse(a).rgba; a[0] *= 1; a[1] *= 1.2; a[2] *= .5; return 459 < a[0] + a[1] + a[2] ? "#000000" : "#FFFFFF" }; G.prototype.button = function (a, c, h, k, n, d, m, e, G, g) {
                        var x = this.label(a, c, h, G, void 0, void 0, g, void 0, "button"), q = 0, l = this.styledMode, P = n ? z(n) : {}; a = P && P.style || {}; P = A.filterUserAttributes(P); x.attr(z({ padding: 8, r: 2 }, P)); if (!l) {
                            P =
                            z({ fill: D.neutralColor3, stroke: D.neutralColor20, "stroke-width": 1, style: { color: D.neutralColor80, cursor: "pointer", fontWeight: "normal" } }, { style: a }, P); var E = P.style; delete P.style; d = z(P, { fill: D.neutralColor10 }, A.filterUserAttributes(d || {})); var N = d.style; delete d.style; m = z(P, { fill: D.highlightColor10, style: { color: D.neutralColor100, fontWeight: "bold" } }, A.filterUserAttributes(m || {})); var f = m.style; delete m.style; e = z(P, { style: { color: D.neutralColor20 } }, A.filterUserAttributes(e || {})); var w = e.style; delete e.style
                        } p(x.element,
                            v ? "mouseover" : "mouseenter", function () { 3 !== q && x.setState(1) }); p(x.element, v ? "mouseout" : "mouseleave", function () { 3 !== q && x.setState(q) }); x.setState = function (a) { 1 !== a && (x.state = q = a); x.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-" + ["normal", "hover", "pressed", "disabled"][a || 0]); l || x.attr([P, d, m, e][a || 0]).css([E, N, f, w][a || 0]) }; l || x.attr(P).css(H({ cursor: "default" }, E)); return x.on("touchstart", function (a) { return a.stopPropagation() }).on("click", function (a) {
                            3 !==
                                q && k.call(x, a)
                            })
                    }; G.prototype.crispLine = function (a, c, h) { void 0 === h && (h = "round"); var k = a[0], x = a[1]; k[1] === x[1] && (k[1] = x[1] = Math[h](k[1]) - c % 2 / 2); k[2] === x[2] && (k[2] = x[2] = Math[h](k[2]) + c % 2 / 2); return a }; G.prototype.path = function (a) { var c = this.styledMode ? {} : { fill: "none" }; I(a) ? c.d = a : F(a) && H(c, a); return this.createElement("path").attr(c) }; G.prototype.circle = function (a, c, h) {
                        a = F(a) ? a : "undefined" === typeof a ? {} : { x: a, y: c, r: h }; c = this.createElement("circle"); c.xSetter = c.ySetter = function (a, c, h) {
                            h.setAttribute("c" +
                                c, a)
                        }; return c.attr(a)
                    }; G.prototype.arc = function (a, c, h, k, n, d) { F(a) ? (k = a, c = k.y, h = k.r, a = k.x) : k = { innerR: k, start: n, end: d }; a = this.symbol("arc", a, c, h, h, k); a.r = h; return a }; G.prototype.rect = function (a, c, h, k, n, d) {
                        n = F(a) ? a.r : n; var x = this.createElement("rect"); a = F(a) ? a : "undefined" === typeof a ? {} : { x: a, y: c, width: Math.max(h, 0), height: Math.max(k, 0) }; this.styledMode || ("undefined" !== typeof d && (a["stroke-width"] = d, a = x.crisp(a)), a.fill = "none"); n && (a.r = n); x.rSetter = function (a, c, h) { x.r = a; l(h, { rx: a, ry: a }) }; x.rGetter = function () {
                            return x.r ||
                                0
                        }; return x.attr(a)
                    }; G.prototype.setSize = function (a, c, h) { this.width = a; this.height = c; this.boxWrapper.animate({ width: a, height: c }, { step: function () { this.attr({ viewBox: "0 0 " + this.attr("width") + " " + this.attr("height") }) }, duration: q(h, !0) ? void 0 : 0 }); this.alignElements() }; G.prototype.g = function (a) { var c = this.createElement("g"); return a ? c.attr({ "class": "highcharts-" + a }) : c }; G.prototype.image = function (a, c, h, k, n, d) {
                        var x = { preserveAspectRatio: "none" }, m = function (a, c) {
                            a.setAttributeNS ? a.setAttributeNS("http://www.w3.org/1999/xlink",
                                "href", c) : a.setAttribute("hc-svg-href", c)
                        }, e = function (c) { m(G.element, a); d.call(G, c) }; 1 < arguments.length && H(x, { x: c, y: h, width: k, height: n }); var G = this.createElement("image").attr(x); d ? (m(G.element, "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="), x = new B.Image, p(x, "load", e), x.src = a, x.complete && e({})) : m(G.element, a); return G
                    }; G.prototype.symbol = function (a, c, h, m, G, v) {
                        var x = this, l = /^url\((.*?)\)$/, P = l.test(a), E = !P && (this.symbols[a] ? a : "circle"), f = E && this.symbols[E], w; if (f) {
                        "number" ===
                            typeof c && (w = f.call(this.symbols, Math.round(c || 0), Math.round(h || 0), m || 0, G || 0, v)); var b = this.path(w); x.styledMode || b.attr("fill", "none"); H(b, { symbolName: E, x: c, y: h, width: m, height: G }); v && H(b, v)
                        } else if (P) {
                            var z = a.match(l)[1]; b = this.image(z); b.imgwidth = q(S[z] && S[z].width, v && v.width); b.imgheight = q(S[z] && S[z].height, v && v.height); var p = function () { b.attr({ width: b.width, height: b.height }) };["width", "height"].forEach(function (a) {
                            b[a + "Setter"] = function (a, c) {
                                var h = this["img" + c]; this[c] = a; d(h) && (v && "within" ===
                                    v.backgroundSize && this.width && this.height && (h = Math.round(h * Math.min(this.width / this.imgwidth, this.height / this.imgheight))), this.element && this.element.setAttribute(c, h), this.alignByTranslate || (a = ((this[c] || 0) - h) / 2, this.attr("width" === c ? { translateX: a } : { translateY: a })))
                            }
                            }); d(c) && b.attr({ x: c, y: h }); b.isImg = !0; d(b.imgwidth) && d(b.imgheight) ? p() : (b.attr({ width: 0, height: 0 }), g("img", {
                                onload: function () {
                                    var a = n[x.chartIndex]; 0 === this.width && (e(this, { position: "absolute", top: "-999em" }), k.body.appendChild(this));
                                    S[z] = { width: this.width, height: this.height }; b.imgwidth = this.width; b.imgheight = this.height; b.element && p(); this.parentNode && this.parentNode.removeChild(this); x.imgCount--; if (!x.imgCount && a && !a.hasLoaded) a.onload()
                                }, src: z
                            }), this.imgCount++)
                        } return b
                    }; G.prototype.clipRect = function (a, h, k, n) { var d = c() + "-", x = this.createElement("clipPath").attr({ id: d }).add(this.defs); a = this.rect(a, h, k, n, 0).add(x); a.id = d; a.clipPath = x; a.count = 0; return a }; G.prototype.text = function (a, c, h, k) {
                        var n = {}; if (k && (this.allowHTML || !this.forExport)) return this.html(a,
                            c, h); n.x = Math.round(c || 0); h && (n.y = Math.round(h)); d(a) && (n.text = a); a = this.createElement("text").attr(n); k || (a.xSetter = function (a, c, h) { var k = h.getElementsByTagName("tspan"), n = h.getAttribute(c), d; for (d = 0; d < k.length; d++) { var x = k[d]; x.getAttribute(c) === n && x.setAttribute(c, a) } h.setAttribute(c, a) }); return a
                    }; G.prototype.fontMetrics = function (a, c) {
                        a = !this.styledMode && /px/.test(a) || !B.getComputedStyle ? a || c && c.style && c.style.fontSize || this.style && this.style.fontSize : c && y.prototype.getStyle.call(c, "font-size");
                        a = /px/.test(a) ? m(a) : 12; c = 24 > a ? a + 3 : Math.round(1.2 * a); return { h: c, b: Math.round(.8 * c), f: a }
                    }; G.prototype.rotCorr = function (c, h, k) { var n = c; h && k && (n = Math.max(n * Math.cos(h * a), 4)); return { x: -c / 3 * Math.sin(h * a), y: n } }; G.prototype.pathToSegments = function (a) {
                        for (var c = [], h = [], k = { A: 8, C: 7, H: 2, L: 3, M: 3, Q: 5, S: 5, T: 3, V: 2 }, n = 0; n < a.length; n++)w(h[0]) && K(a[n]) && h.length === k[h[0].toUpperCase()] && a.splice(n, 0, h[0].replace("M", "L").replace("m", "l")), "string" === typeof a[n] && (h.length && c.push(h.slice(0)), h.length = 0), h.push(a[n]);
                        c.push(h.slice(0)); return c
                    }; G.prototype.label = function (a, c, h, k, n, d, m, e, G) { return new C(this, a, c, h, k, n, d, m, e, G) }; G.prototype.alignElements = function () { this.alignedObjects.forEach(function (a) { return a.align() }) }; return G
            }(); r.prototype.Element = y; r.prototype.SVG_NS = M; r.prototype.draw = L; r.prototype.escapes = { "&": "&amp;", "<": "&lt;", ">": "&gt;", "'": "&#39;", '"': "&quot;" }; var O = function (a, c, h, k, n) {
                n = n && n.r || 0; return [["M", a + n, c], ["L", a + h - n, c], ["C", a + h, c, a + h, c, a + h, c + n], ["L", a + h, c + k - n], ["C", a + h, c + k, a + h, c + k, a +
                    h - n, c + k], ["L", a + n, c + k], ["C", a, c + k, a, c + k, a, c + k - n], ["L", a, c + n], ["C", a, c, a, c, a + n, c]]
            }; L = function (a, c, h, k, n) { return n && n.r ? O(a, c, h, k, n) : [["M", a, c], ["L", a + h, c], ["L", a + h, c + k], ["L", a, c + k], ["Z"]] }; r.prototype.symbols = {
                circle: function (a, c, h, k) { return this.arc(a + h / 2, c + k / 2, h / 2, k / 2, { start: .5 * Math.PI, end: 2.5 * Math.PI, open: !1 }) }, rect: L, square: L, triangle: function (a, c, h, k) { return [["M", a + h / 2, c], ["L", a + h, c + k], ["L", a, c + k], ["Z"]] }, "triangle-down": function (a, c, h, k) { return [["M", a, c], ["L", a + h, c], ["L", a + h / 2, c + k], ["Z"]] },
                diamond: function (a, c, h, k) { return [["M", a + h / 2, c], ["L", a + h, c + k / 2], ["L", a + h / 2, c + k], ["L", a, c + k / 2], ["Z"]] }, arc: function (a, c, h, k, n) {
                    var m = []; if (n) {
                        var x = n.start || 0, e = q(n.r, h); h = q(n.r, k || h); var v = (n.end || 0) - .001; k = n.innerR; var G = q(n.open, .001 > Math.abs((n.end || 0) - x - 2 * Math.PI)), g = Math.cos(x), l = Math.sin(x), E = Math.cos(v), f = Math.sin(v); x = q(n.longArc, .001 > v - x - Math.PI ? 0 : 1); m.push(["M", a + e * g, c + h * l], ["A", e, h, 0, x, q(n.clockwise, 1), a + e * E, c + h * f]); d(k) && m.push(G ? ["M", a + k * E, c + k * f] : ["L", a + k * E, c + k * f], ["A", k, k, 0, x, d(n.clockwise) ?
                            1 - n.clockwise : 0, a + k * g, c + k * l]); G || m.push(["Z"])
                    } return m
                }, callout: function (a, c, h, k, n) {
                    var d = Math.min(n && n.r || 0, h, k), m = d + 6, e = n && n.anchorX; n = n && n.anchorY || 0; var x = O(a, c, h, k, { r: d }); if (!K(e)) return x; a + e >= h ? n > c + m && n < c + k - m ? x.splice(3, 1, ["L", a + h, n - 6], ["L", a + h + 6, n], ["L", a + h, n + 6], ["L", a + h, c + k - d]) : x.splice(3, 1, ["L", a + h, k / 2], ["L", e, n], ["L", a + h, k / 2], ["L", a + h, c + k - d]) : 0 >= a + e ? n > c + m && n < c + k - m ? x.splice(7, 1, ["L", a, n + 6], ["L", a - 6, n], ["L", a, n - 6], ["L", a, c + d]) : x.splice(7, 1, ["L", a, k / 2], ["L", e, n], ["L", a, k / 2], ["L", a, c + d]) :
                        n && n > k && e > a + m && e < a + h - m ? x.splice(5, 1, ["L", e + 6, c + k], ["L", e, c + k + 6], ["L", e - 6, c + k], ["L", a + d, c + k]) : n && 0 > n && e > a + m && e < a + h - m && x.splice(1, 1, ["L", e - 6, c], ["L", e, c - 6], ["L", e + 6, c], ["L", h - d, c]); return x
                }
            }; f.SVGRenderer = r; f.Renderer = f.SVGRenderer; return f.Renderer
    }); J(b, "Core/Renderer/HTML/HTMLElement.js", [b["Core/Globals.js"], b["Core/Renderer/SVG/SVGElement.js"], b["Core/Utilities.js"]], function (b, f, D) {
        var B = b.isFirefox, C = b.isMS, A = b.isWebKit, t = b.win, r = D.css, p = D.defined, l = D.extend, g = D.pick, e = D.pInt; l(f.prototype,
            {
                htmlCss: function (d) { var e = "SPAN" === this.element.tagName && d && "width" in d, f = g(e && d.width, void 0); if (e) { delete d.width; this.textWidth = f; var b = !0 } d && "ellipsis" === d.textOverflow && (d.whiteSpace = "nowrap", d.overflow = "hidden"); this.styles = l(this.styles, d); r(this.element, d); b && this.htmlUpdateTransform(); return this }, htmlGetBBox: function () { var d = this.element; return { x: d.offsetLeft, y: d.offsetTop, width: d.offsetWidth, height: d.offsetHeight } }, htmlUpdateTransform: function () {
                    if (this.added) {
                        var d = this.renderer, g = this.element,
                        l = this.translateX || 0, f = this.translateY || 0, b = this.x || 0, F = this.y || 0, w = this.textAlign || "left", z = { left: 0, center: .5, right: 1 }[w], q = this.styles; q = q && q.whiteSpace; r(g, { marginLeft: l, marginTop: f }); !d.styledMode && this.shadows && this.shadows.forEach(function (a) { r(a, { marginLeft: l + 1, marginTop: f + 1 }) }); this.inverted && [].forEach.call(g.childNodes, function (a) { d.invertChild(a, g) }); if ("SPAN" === g.tagName) {
                            var m = this.rotation, c = void 0; c = this.textWidth && e(this.textWidth); var n = [m, w, g.innerHTML, this.textWidth, this.textAlign].join(),
                                a; (a = c !== this.oldTextWidth) && !(a = c > this.oldTextWidth) && ((a = this.textPxLength) || (r(g, { width: "", whiteSpace: q || "nowrap" }), a = g.offsetWidth), a = a > c); a && (/[ \-]/.test(g.textContent || g.innerText) || "ellipsis" === g.style.textOverflow) ? (r(g, { width: c + "px", display: "block", whiteSpace: q || "normal" }), this.oldTextWidth = c, this.hasBoxWidthChanged = !0) : this.hasBoxWidthChanged = !1; n !== this.cTT && (c = d.fontMetrics(g.style.fontSize, g).b, !p(m) || m === (this.oldRotation || 0) && w === this.oldAlign || this.setSpanRotation(m, z, c), this.getSpanCorrection(!p(m) &&
                                    this.textPxLength || g.offsetWidth, c, z, m, w)); r(g, { left: b + (this.xCorr || 0) + "px", top: F + (this.yCorr || 0) + "px" }); this.cTT = n; this.oldRotation = m; this.oldAlign = w
                        }
                    } else this.alignOnAdd = !0
                }, setSpanRotation: function (d, e, g) { var l = {}, f = C && !/Edge/.test(t.navigator.userAgent) ? "-ms-transform" : A ? "-webkit-transform" : B ? "MozTransform" : t.opera ? "-o-transform" : void 0; f && (l[f] = l.transform = "rotate(" + d + "deg)", l[f + (B ? "Origin" : "-origin")] = l.transformOrigin = 100 * e + "% " + g + "px", r(this.element, l)) }, getSpanCorrection: function (d, e, g) {
                this.xCorr =
                    -d * g; this.yCorr = -e
                }
            }); return f
    }); J(b, "Core/Renderer/HTML/HTMLRenderer.js", [b["Core/Renderer/HTML/AST.js"], b["Core/Renderer/SVG/SVGElement.js"], b["Core/Renderer/SVG/SVGRenderer.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
        var B = y.attr, A = y.createElement, t = y.extend, r = y.pick; t(D.prototype, {
            html: function (p, l, g) {
                var e = this.createElement("span"), d = e.element, u = e.renderer, H = u.isSVG, I = function (d, e) {
                    ["opacity", "visibility"].forEach(function (g) {
                    d[g + "Setter"] = function (l, q, m) {
                        var c = d.div ? d.div.style : e; f.prototype[g +
                            "Setter"].call(this, l, q, m); c && (c[q] = l)
                    }
                    }); d.addedSetters = !0
                }; e.textSetter = function (d) { d !== this.textStr && (delete this.bBox, delete this.oldTextWidth, b.setElementHTML(this.element, r(d, "")), this.textStr = d, e.doTransform = !0) }; H && I(e, e.element.style); e.xSetter = e.ySetter = e.alignSetter = e.rotationSetter = function (d, g) { "align" === g ? e.alignValue = e.textAlign = d : e[g] = d; e.doTransform = !0 }; e.afterSetters = function () { this.doTransform && (this.htmlUpdateTransform(), this.doTransform = !1) }; e.attr({ text: p, x: Math.round(l), y: Math.round(g) }).css({ position: "absolute" });
                u.styledMode || e.css({ fontFamily: this.style.fontFamily, fontSize: this.style.fontSize }); d.style.whiteSpace = "nowrap"; e.css = e.htmlCss; H && (e.add = function (g) {
                    var l = u.box.parentNode, f = []; if (this.parentGroup = g) {
                        var b = g.div; if (!b) {
                            for (; g;)f.push(g), g = g.parentGroup; f.reverse().forEach(function (d) {
                                function m(c, h) { d[h] = c; "translateX" === h ? a.left = c + "px" : a.top = c + "px"; d.doTransform = !0 } var c = B(d.element, "class"), n = d.styles || {}; b = d.div = d.div || A("div", c ? { className: c } : void 0, {
                                    position: "absolute", left: (d.translateX || 0) +
                                        "px", top: (d.translateY || 0) + "px", display: d.display, opacity: d.opacity, cursor: n.cursor, pointerEvents: n.pointerEvents
                                }, b || l); var a = b.style; t(d, { classSetter: function (a) { return function (c) { this.element.setAttribute("class", c); a.className = c } }(b), on: function () { f[0].div && e.on.apply({ element: f[0].div, onEvents: e.onEvents }, arguments); return d }, translateXSetter: m, translateYSetter: m }); d.addedSetters || I(d)
                            })
                        }
                    } else b = l; b.appendChild(d); e.added = !0; e.alignOnAdd && e.htmlUpdateTransform(); return e
                }); return e
            }
        }); return D
    });
    J(b, "Core/Axis/Tick.js", [b["Core/FormatUtilities.js"], b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f, D) {
        var B = f.deg2rad, C = D.clamp, A = D.correctFloat, t = D.defined, r = D.destroyObjectProperties, p = D.extend, l = D.fireEvent, g = D.isNumber, e = D.merge, d = D.objectEach, u = D.pick; ""; D = function () {
            function f(d, e, g, f, b) {
            this.isNewLabel = this.isNew = !0; this.axis = d; this.pos = e; this.type = g || ""; this.parameters = b || {}; this.tickmarkOffset = this.parameters.tickmarkOffset; this.options = this.parameters.options; l(this, "init");
                g || f || this.addLabel()
            } f.prototype.addLabel = function () {
                var d = this, e = d.axis, f = e.options, w = e.chart, z = e.categories, q = e.logarithmic, m = e.names, c = d.pos, n = u(d.options && d.options.labels, f.labels), a = e.tickPositions, k = c === a[0], h = c === a[a.length - 1], v = d.label, E = (!n.step || 1 === n.step) && 1 === e.tickInterval; a = a.info; var L, M; z = this.parameters.category || (z ? u(z[c], m[c], c) : c); q && g(z) && (z = A(q.lin2log(z))); if (e.dateTime && a) {
                    var r = w.time.resolveDTLFormat(f.dateTimeLabelFormats[!f.grid && a.higherRanks[c] || a.unitName]); var H =
                        r.main
                } d.isFirst = k; d.isLast = h; var R = { axis: e, chart: w, dateTimeLabelFormat: H, isFirst: k, isLast: h, pos: c, tick: d, tickPositionInfo: a, value: z }; l(this, "labelFormat", R); var O = function (a) { return n.formatter ? n.formatter.call(a, a) : n.format ? (a.text = e.defaultLabelFormatter.call(a), b.format(n.format, a, w)) : e.defaultLabelFormatter.call(a, a) }; f = O.call(R, R); if (M = r && r.list) d.shortenLabel = function () {
                    for (L = 0; L < M.length; L++)if (p(R, { dateTimeLabelFormat: M[L] }), v.attr({ text: O.call(R, R) }), v.getBBox().width < e.getSlotWidth(d) -
                        2 * n.padding) return; v.attr({ text: "" })
                }; E && e._addedPlotLB && d.moveLabel(f, n); t(v) || d.movedLabel ? v && v.textStr !== f && !E && (!v.textWidth || n.style.width || v.styles.width || v.css({ width: null }), v.attr({ text: f }), v.textPxLength = v.getBBox().width) : (d.label = v = d.createLabel({ x: 0, y: 0 }, f, n), d.rotation = 0)
            }; f.prototype.createLabel = function (d, g, l) { var f = this.axis, b = f.chart; if (d = t(g) && l.enabled ? b.renderer.text(g, d.x, d.y, l.useHTML).add(f.labelGroup) : null) b.styledMode || d.css(e(l.style)), d.textPxLength = d.getBBox().width; return d };
            f.prototype.destroy = function () { r(this, this.axis) }; f.prototype.getPosition = function (d, e, g, f) { var b = this.axis, q = b.chart, m = f && q.oldChartHeight || q.chartHeight; d = { x: d ? A(b.translate(e + g, null, null, f) + b.transB) : b.left + b.offset + (b.opposite ? (f && q.oldChartWidth || q.chartWidth) - b.right - b.left : 0), y: d ? m - b.bottom + b.offset - (b.opposite ? b.height : 0) : A(m - b.translate(e + g, null, null, f) - b.transB) }; d.y = C(d.y, -1E5, 1E5); l(this, "afterGetPosition", { pos: d }); return d }; f.prototype.getLabelPosition = function (d, e, g, f, b, q, m, c) {
                var n =
                    this.axis, a = n.transA, k = n.isLinked && n.linkedParent ? n.linkedParent.reversed : n.reversed, h = n.staggerLines, v = n.tickRotCorr || { x: 0, y: 0 }, E = b.y, w = f || n.reserveSpaceDefault ? 0 : -n.labelOffset * ("center" === n.labelAlign ? .5 : 1), p = {}; t(E) || (E = 0 === n.side ? g.rotation ? -8 : -g.getBBox().height : 2 === n.side ? v.y + 8 : Math.cos(g.rotation * B) * (v.y - g.getBBox(!1, 0).height / 2)); d = d + b.x + w + v.x - (q && f ? q * a * (k ? -1 : 1) : 0); e = e + E - (q && !f ? q * a * (k ? 1 : -1) : 0); h && (g = m / (c || 1) % h, n.opposite && (g = h - g - 1), e += n.labelOffset / h * g); p.x = d; p.y = Math.round(e); l(this, "afterGetLabelPosition",
                        { pos: p, tickmarkOffset: q, index: m }); return p
            }; f.prototype.getLabelSize = function () { return this.label ? this.label.getBBox()[this.axis.horiz ? "height" : "width"] : 0 }; f.prototype.getMarkPath = function (d, e, g, l, f, q) { return q.crispLine([["M", d, e], ["L", d + (f ? 0 : -g), e + (f ? g : 0)]], l) }; f.prototype.handleOverflow = function (d) {
                var e = this.axis, g = e.options.labels, l = d.x, f = e.chart.chartWidth, q = e.chart.spacing, m = u(e.labelLeft, Math.min(e.pos, q[3])); q = u(e.labelRight, Math.max(e.isRadial ? 0 : e.pos + e.len, f - q[1])); var c = this.label, n = this.rotation,
                    a = { left: 0, center: .5, right: 1 }[e.labelAlign || c.attr("align")], k = c.getBBox().width, h = e.getSlotWidth(this), v = h, b = 1, p, M = {}; if (n || "justify" !== g.overflow) 0 > n && l - a * k < m ? p = Math.round(l / Math.cos(n * B) - m) : 0 < n && l + a * k > q && (p = Math.round((f - l) / Math.cos(n * B))); else if (f = l + (1 - a) * k, l - a * k < m ? v = d.x + v * (1 - a) - m : f > q && (v = q - d.x + v * a, b = -1), v = Math.min(h, v), v < h && "center" === e.labelAlign && (d.x += b * (h - v - a * (h - Math.min(k, v)))), k > v || e.autoRotation && (c.styles || {}).width) p = v; p && (this.shortenLabel ? this.shortenLabel() : (M.width = Math.floor(p) +
                        "px", (g.style || {}).textOverflow || (M.textOverflow = "ellipsis"), c.css(M)))
            }; f.prototype.moveLabel = function (e, g) {
                var l = this, f = l.label, b = !1, q = l.axis, m = q.reversed; f && f.textStr === e ? (l.movedLabel = f, b = !0, delete l.label) : d(q.ticks, function (c) { b || c.isNew || c === l || !c.label || c.label.textStr !== e || (l.movedLabel = c.label, b = !0, c.labelPos = l.movedLabel.xy, delete c.label) }); if (!b && (l.labelPos || f)) {
                    var c = l.labelPos || f.xy; f = q.horiz ? m ? 0 : q.width + q.left : c.x; q = q.horiz ? c.y : m ? q.width + q.left : 0; l.movedLabel = l.createLabel({ x: f, y: q },
                        e, g); l.movedLabel && l.movedLabel.attr({ opacity: 0 })
                }
            }; f.prototype.render = function (d, e, g) { var f = this.axis, b = f.horiz, q = this.pos, m = u(this.tickmarkOffset, f.tickmarkOffset); q = this.getPosition(b, q, m, e); m = q.x; var c = q.y; f = b && m === f.pos + f.len || !b && c === f.pos ? -1 : 1; b = u(g, this.label && this.label.newOpacity, 1); g = u(g, 1); this.isActive = !0; this.renderGridLine(e, g, f); this.renderMark(q, g, f); this.renderLabel(q, e, b, d); this.isNew = !1; l(this, "afterRender") }; f.prototype.renderGridLine = function (d, e, g) {
                var l = this.axis, f = l.options,
                b = this.gridLine, m = {}, c = this.pos, n = this.type, a = u(this.tickmarkOffset, l.tickmarkOffset), k = l.chart.renderer, h = f.gridLineWidth, v = f.gridLineColor, E = f.gridLineDashStyle; "minor" === this.type && (h = f.minorGridLineWidth, v = f.minorGridLineColor, E = f.minorGridLineDashStyle); b || (l.chart.styledMode || (m.stroke = v, m["stroke-width"] = h || 0, m.dashstyle = E), n || (m.zIndex = 1), d && (e = 0), this.gridLine = b = k.path().attr(m).addClass("highcharts-" + (n ? n + "-" : "") + "grid-line").add(l.gridGroup)); if (b && (g = l.getPlotLinePath({
                    value: c + a, lineWidth: b.strokeWidth() *
                        g, force: "pass", old: d
                }))) b[d || this.isNew ? "attr" : "animate"]({ d: g, opacity: e })
            }; f.prototype.renderMark = function (d, e, g) {
                var l = this.axis, f = l.options, b = l.chart.renderer, m = this.type, c = l.tickSize(m ? m + "Tick" : "tick"), n = this.mark, a = !n, k = d.x; d = d.y; var h = u(f["minor" !== m ? "tickWidth" : "minorTickWidth"], !m && l.isXAxis ? 1 : 0); f = f["minor" !== m ? "tickColor" : "minorTickColor"]; c && (l.opposite && (c[0] = -c[0]), a && (this.mark = n = b.path().addClass("highcharts-" + (m ? m + "-" : "") + "tick").add(l.axisGroup), l.chart.styledMode || n.attr({
                    stroke: f,
                    "stroke-width": h
                })), n[a ? "attr" : "animate"]({ d: this.getMarkPath(k, d, c[0], n.strokeWidth() * g, l.horiz, b), opacity: e }))
            }; f.prototype.renderLabel = function (d, e, l, f) {
                var b = this.axis, q = b.horiz, m = b.options, c = this.label, n = m.labels, a = n.step; b = u(this.tickmarkOffset, b.tickmarkOffset); var k = !0, h = d.x; d = d.y; c && g(h) && (c.xy = d = this.getLabelPosition(h, d, c, q, n, b, f, a), this.isFirst && !this.isLast && !m.showFirstLabel || this.isLast && !this.isFirst && !m.showLastLabel ? k = !1 : !q || n.step || n.rotation || e || 0 === l || this.handleOverflow(d), a &&
                    f % a && (k = !1), k && g(d.y) ? (d.opacity = l, c[this.isNewLabel ? "attr" : "animate"](d), this.isNewLabel = !1) : (c.attr("y", -9999), this.isNewLabel = !0))
            }; f.prototype.replaceMovedLabel = function () { var d = this.label, e = this.axis, g = e.reversed; if (d && !this.isNew) { var l = e.horiz ? g ? e.left : e.width + e.left : d.xy.x; g = e.horiz ? d.xy.y : g ? e.width + e.top : e.top; d.animate({ x: l, y: g, opacity: 0 }, void 0, d.destroy); delete this.label } e.isDirty = !0; this.label = this.movedLabel; delete this.movedLabel }; return f
        }(); f.Tick = D; return f.Tick
    }); J(b, "Core/Axis/Axis.js",
        [b["Core/Animation/AnimationUtilities.js"], b["Core/Color/Color.js"], b["Core/Globals.js"], b["Core/Color/Palette.js"], b["Core/Options.js"], b["Core/Axis/Tick.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t) {
            var r = b.animObject, p = C.defaultOptions, l = t.addEvent, g = t.arrayMax, e = t.arrayMin, d = t.clamp, u = t.correctFloat, H = t.defined, I = t.destroyObjectProperties, B = t.erase, F = t.error, w = t.extend, z = t.fireEvent, q = t.getMagnitude, m = t.isArray, c = t.isFunction, n = t.isNumber, a = t.isString, k = t.merge, h = t.normalizeTickInterval,
            v = t.objectEach, E = t.pick, L = t.relativeLength, M = t.removeEvent, S = t.splat, Y = t.syncTimeout; ""; var R = D.deg2rad; b = function () {
                function b(a, c) {
                this.zoomEnabled = this.width = this.visible = this.userOptions = this.translationSlope = this.transB = this.transA = this.top = this.ticks = this.tickRotCorr = this.tickPositions = this.tickmarkOffset = this.tickInterval = this.tickAmount = this.side = this.series = this.right = this.positiveValuesOnly = this.pos = this.pointRangePadding = this.pointRange = this.plotLinesAndBandsGroups = this.plotLinesAndBands =
                    this.paddedTicks = this.overlap = this.options = this.offset = this.names = this.minPixelPadding = this.minorTicks = this.minorTickInterval = this.min = this.maxLabelLength = this.max = this.len = this.left = this.labelFormatter = this.labelEdge = this.isLinked = this.height = this.hasVisibleSeries = this.hasNames = this.coll = this.closestPointRange = this.chart = this.categories = this.bottom = this.alternateBands = void 0; this.init(a, c)
                } b.prototype.init = function (a, h) {
                    var k = h.isX, d = this; d.chart = a; d.horiz = a.inverted && !d.isZAxis ? !k : k; d.isXAxis = k;
                    d.coll = d.coll || (k ? "xAxis" : "yAxis"); z(this, "init", { userOptions: h }); d.opposite = E(h.opposite, d.opposite); d.side = E(h.side, d.side, d.horiz ? d.opposite ? 0 : 2 : d.opposite ? 1 : 3); d.setOptions(h); var e = this.options, m = e.labels, x = e.type; d.userOptions = h; d.minPixelPadding = 0; d.reversed = E(e.reversed, d.reversed); d.visible = e.visible; d.zoomEnabled = e.zoomEnabled; d.hasNames = "category" === x || !0 === e.categories; d.categories = e.categories || d.hasNames; d.names || (d.names = [], d.names.keys = {}); d.plotLinesAndBandsGroups = {}; d.positiveValuesOnly =
                        !!d.logarithmic; d.isLinked = H(e.linkedTo); d.ticks = {}; d.labelEdge = []; d.minorTicks = {}; d.plotLinesAndBands = []; d.alternateBands = {}; d.len = 0; d.minRange = d.userMinRange = e.minRange || e.maxZoom; d.range = e.range; d.offset = e.offset || 0; d.max = null; d.min = null; h = E(e.crosshair, S(a.options.tooltip.crosshairs)[k ? 0 : 1]); d.crosshair = !0 === h ? {} : h; h = d.options.events; -1 === a.axes.indexOf(d) && (k ? a.axes.splice(a.xAxis.length, 0, d) : a.axes.push(d), a[d.coll].push(d)); d.series = d.series || []; a.inverted && !d.isZAxis && k && "undefined" === typeof d.reversed &&
                            (d.reversed = !0); d.labelRotation = n(m.rotation) ? m.rotation : void 0; v(h, function (a, h) { c(a) && l(d, h, a) }); z(this, "afterInit")
                }; b.prototype.setOptions = function (a) { this.options = k(b.defaultOptions, "yAxis" === this.coll && b.defaultYAxisOptions, [b.defaultTopAxisOptions, b.defaultRightAxisOptions, b.defaultBottomAxisOptions, b.defaultLeftAxisOptions][this.side], k(p[this.coll], a)); z(this, "afterSetOptions", { userOptions: a }) }; b.prototype.defaultLabelFormatter = function () {
                    var a = this.axis, c = n(this.value) ? this.value : NaN, h =
                        a.chart.time, d = this.dateTimeLabelFormat, k = p.lang, e = k.numericSymbols; k = k.numericSymbolMagnitude || 1E3; var m = e && e.length, v = a.logarithmic ? Math.abs(c) : a.tickInterval, g = this.chart.numberFormatter; if (a.categories) var b = "" + this.value; else if (d) b = h.dateFormat(d, c); else if (m && 1E3 <= v) for (; m-- && "undefined" === typeof b;)a = Math.pow(k, m + 1), v >= a && 0 === 10 * c % a && null !== e[m] && 0 !== c && (b = g(c / a, -1) + e[m]); "undefined" === typeof b && (b = 1E4 <= Math.abs(c) ? g(c, -1) : g(c, -1, void 0, "")); return b
                }; b.prototype.getSeriesExtremes = function () {
                    var a =
                        this, c = a.chart, h; z(this, "getSeriesExtremes", null, function () {
                        a.hasVisibleSeries = !1; a.dataMin = a.dataMax = a.threshold = null; a.softThreshold = !a.isXAxis; a.stacking && a.stacking.buildStacks(); a.series.forEach(function (d) {
                            if (d.visible || !c.options.chart.ignoreHiddenSeries) {
                                var k = d.options, e = k.threshold; a.hasVisibleSeries = !0; a.positiveValuesOnly && 0 >= e && (e = null); if (a.isXAxis) {
                                    if (k = d.xData, k.length) {
                                        k = a.logarithmic ? k.filter(a.validatePositiveValue) : k; h = d.getXExtremes(k); var m = h.min; var v = h.max; n(m) || m instanceof
                                            Date || (k = k.filter(n), h = d.getXExtremes(k), m = h.min, v = h.max); k.length && (a.dataMin = Math.min(E(a.dataMin, m), m), a.dataMax = Math.max(E(a.dataMax, v), v))
                                    }
                                } else if (d = d.applyExtremes(), n(d.dataMin) && (m = d.dataMin, a.dataMin = Math.min(E(a.dataMin, m), m)), n(d.dataMax) && (v = d.dataMax, a.dataMax = Math.max(E(a.dataMax, v), v)), H(e) && (a.threshold = e), !k.softThreshold || a.positiveValuesOnly) a.softThreshold = !1
                            }
                        })
                        }); z(this, "afterGetSeriesExtremes")
                }; b.prototype.translate = function (a, c, h, d, k, e) {
                    var m = this.linkedParent || this, v = 1, x =
                        0, g = d && m.old ? m.old.transA : m.transA; d = d && m.old ? m.old.min : m.min; var b = m.minPixelPadding; k = (m.isOrdinal || m.brokenAxis && m.brokenAxis.hasBreaks || m.logarithmic && k) && m.lin2val; g || (g = m.transA); h && (v *= -1, x = m.len); m.reversed && (v *= -1, x -= v * (m.sector || m.len)); c ? (a = (a * v + x - b) / g + d, k && (a = m.lin2val(a))) : (k && (a = m.val2lin(a)), a = n(d) ? v * (a - d) * g + x + v * b + (n(e) ? g * e : 0) : void 0); return a
                }; b.prototype.toPixels = function (a, c) { return this.translate(a, !1, !this.horiz, null, !0) + (c ? 0 : this.pos) }; b.prototype.toValue = function (a, c) {
                    return this.translate(a -
                        (c ? 0 : this.pos), !0, !this.horiz, null, !0)
                }; b.prototype.getPlotLinePath = function (a) {
                    function c(a, c, h) { if ("pass" !== f && a < c || a > h) f ? a = d(a, c, h) : M = !0; return a } var h = this, k = h.chart, e = h.left, m = h.top, v = a.old, g = a.value, b = a.translatedValue, l = a.lineWidth, f = a.force, G, q, p, L, w = v && k.oldChartHeight || k.chartHeight, u = v && k.oldChartWidth || k.chartWidth, M, r = h.transB; a = { value: g, lineWidth: l, old: v, force: f, acrossPanes: a.acrossPanes, translatedValue: b }; z(this, "getPlotLinePath", a, function (a) {
                        b = E(b, h.translate(g, null, null, v)); b = d(b,
                            -1E5, 1E5); G = p = Math.round(b + r); q = L = Math.round(w - b - r); n(b) ? h.horiz ? (q = m, L = w - h.bottom, G = p = c(G, e, e + h.width)) : (G = e, p = u - h.right, q = L = c(q, m, m + h.height)) : (M = !0, f = !1); a.path = M && !f ? null : k.renderer.crispLine([["M", G, q], ["L", p, L]], l || 1)
                    }); return a.path
                }; b.prototype.getLinearTickPositions = function (a, c, h) { var d = u(Math.floor(c / a) * a); h = u(Math.ceil(h / a) * a); var k = [], n; u(d + a) === d && (n = 20); if (this.single) return [c]; for (c = d; c <= h;) { k.push(c); c = u(c + a, n); if (c === e) break; var e = c } return k }; b.prototype.getMinorTickInterval = function () {
                    var a =
                        this.options; return !0 === a.minorTicks ? E(a.minorTickInterval, "auto") : !1 === a.minorTicks ? null : a.minorTickInterval
                }; b.prototype.getMinorTickPositions = function () {
                    var a = this.options, c = this.tickPositions, h = this.minorTickInterval, d = [], k = this.pointRangePadding || 0, n = this.min - k; k = this.max + k; var e = k - n; if (e && e / h < this.len / 3) {
                        var m = this.logarithmic; if (m) this.paddedTicks.forEach(function (a, c, k) { c && d.push.apply(d, m.getLogTickPositions(h, k[c - 1], k[c], !0)) }); else if (this.dateTime && "auto" === this.getMinorTickInterval()) d =
                            d.concat(this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(h), n, k, a.startOfWeek)); else for (a = n + (c[0] - n) % h; a <= k && a !== d[0]; a += h)d.push(a)
                    } 0 !== d.length && this.trimTicks(d); return d
                }; b.prototype.adjustForMinRange = function () {
                    var a = this.options, c = this.min, h = this.max, d = this.logarithmic, k = 0, n, m, v, b; this.isXAxis && "undefined" === typeof this.minRange && !d && (H(a.min) || H(a.max) ? this.minRange = null : (this.series.forEach(function (a) {
                        v = a.xData; b = a.xIncrement ? 1 : v.length - 1; if (1 < v.length) for (n = b; 0 < n; n--)if (m = v[n] -
                            v[n - 1], !k || m < k) k = m
                    }), this.minRange = Math.min(5 * k, this.dataMax - this.dataMin))); if (h - c < this.minRange) { var l = this.dataMax - this.dataMin >= this.minRange; var f = this.minRange; var q = (f - h + c) / 2; q = [c - q, E(a.min, c - q)]; l && (q[2] = this.logarithmic ? this.logarithmic.log2lin(this.dataMin) : this.dataMin); c = g(q); h = [c + f, E(a.max, c + f)]; l && (h[2] = d ? d.log2lin(this.dataMax) : this.dataMax); h = e(h); h - c < f && (q[0] = h - f, q[1] = E(a.min, h - f), c = g(q)) } this.min = c; this.max = h
                }; b.prototype.getClosest = function () {
                    var a; this.categories ? a = 1 : this.series.forEach(function (c) {
                        var h =
                            c.closestPointRange, d = c.visible || !c.chart.options.chart.ignoreHiddenSeries; !c.noSharedTooltip && H(h) && d && (a = H(a) ? Math.min(a, h) : h)
                    }); return a
                }; b.prototype.nameToX = function (a) { var c = m(this.categories), h = c ? this.categories : this.names, d = a.options.x; a.series.requireSorting = !1; H(d) || (d = this.options.uniqueNames ? c ? h.indexOf(a.name) : E(h.keys[a.name], -1) : a.series.autoIncrement()); if (-1 === d) { if (!c) var k = h.length } else k = d; "undefined" !== typeof k && (this.names[k] = a.name, this.names.keys[a.name] = k); return k }; b.prototype.updateNames =
                    function () { var a = this, c = this.names; 0 < c.length && (Object.keys(c.keys).forEach(function (a) { delete c.keys[a] }), c.length = 0, this.minRange = this.userMinRange, (this.series || []).forEach(function (c) { c.xIncrement = null; if (!c.points || c.isDirtyData) a.max = Math.max(a.max, c.xData.length - 1), c.processData(), c.generatePoints(); c.data.forEach(function (h, d) { if (h && h.options && "undefined" !== typeof h.name) { var k = a.nameToX(h); "undefined" !== typeof k && k !== h.x && (h.x = k, c.xData[d] = k) } }) })) }; b.prototype.setAxisTranslation = function () {
                        var c =
                            this, h = c.max - c.min, d = c.axisPointRange || 0, k = 0, n = 0, e = c.linkedParent, m = !!c.categories, v = c.transA, g = c.isXAxis; if (g || m || d) {
                                var b = c.getClosest(); e ? (k = e.minPointOffset, n = e.pointRangePadding) : c.series.forEach(function (h) { var e = m ? 1 : g ? E(h.options.pointRange, b, 0) : c.axisPointRange || 0, v = h.options.pointPlacement; d = Math.max(d, e); if (!c.single || m) h = h.is("xrange") ? !g : g, k = Math.max(k, h && a(v) ? 0 : e / 2), n = Math.max(n, h && "on" === v ? 0 : e) }); e = c.ordinal && c.ordinal.slope && b ? c.ordinal.slope / b : 1; c.minPointOffset = k *= e; c.pointRangePadding =
                                    n *= e; c.pointRange = Math.min(d, c.single && m ? 1 : h); g && (c.closestPointRange = b)
                            } c.translationSlope = c.transA = v = c.staticScale || c.len / (h + n || 1); c.transB = c.horiz ? c.left : c.bottom; c.minPixelPadding = v * k; z(this, "afterSetAxisTranslation")
                    }; b.prototype.minFromRange = function () { return this.max - this.range }; b.prototype.setTickInterval = function (a) {
                        var c = this, d = c.chart, k = c.logarithmic, e = c.options, m = c.isXAxis, v = c.isLinked, g = e.maxPadding, b = e.minPadding, l = e.tickInterval, f = e.tickPixelInterval, G = c.categories, p = n(c.threshold) ?
                            c.threshold : null, L = c.softThreshold; c.dateTime || G || v || this.getTickAmount(); var w = E(c.userMin, e.min); var M = E(c.userMax, e.max); if (v) { c.linkedParent = d[c.coll][e.linkedTo]; var r = c.linkedParent.getExtremes(); c.min = E(r.min, r.dataMin); c.max = E(r.max, r.dataMax); e.type !== c.linkedParent.options.type && F(11, 1, d) } else { if (L && H(p)) if (c.dataMin >= p) r = p, b = 0; else if (c.dataMax <= p) { var t = p; g = 0 } c.min = E(w, r, c.dataMin); c.max = E(M, t, c.dataMax) } k && (c.positiveValuesOnly && !a && 0 >= Math.min(c.min, E(c.dataMin, c.min)) && F(10, 1, d), c.min =
                                u(k.log2lin(c.min), 16), c.max = u(k.log2lin(c.max), 16)); c.range && H(c.max) && (c.userMin = c.min = w = Math.max(c.dataMin, c.minFromRange()), c.userMax = M = c.max, c.range = null); z(c, "foundExtremes"); c.beforePadding && c.beforePadding(); c.adjustForMinRange(); !(G || c.axisPointRange || c.stacking && c.stacking.usePercentage || v) && H(c.min) && H(c.max) && (d = c.max - c.min) && (!H(w) && b && (c.min -= d * b), !H(M) && g && (c.max += d * g)); n(c.userMin) || (n(e.softMin) && e.softMin < c.min && (c.min = w = e.softMin), n(e.floor) && (c.min = Math.max(c.min, e.floor))); n(c.userMax) ||
                                    (n(e.softMax) && e.softMax > c.max && (c.max = M = e.softMax), n(e.ceiling) && (c.max = Math.min(c.max, e.ceiling))); L && H(c.dataMin) && (p = p || 0, !H(w) && c.min < p && c.dataMin >= p ? c.min = c.options.minRange ? Math.min(p, c.max - c.minRange) : p : !H(M) && c.max > p && c.dataMax <= p && (c.max = c.options.minRange ? Math.max(p, c.min + c.minRange) : p)); n(c.min) && n(c.max) && !this.chart.polar && c.min > c.max && (H(c.options.min) ? c.max = c.min : H(c.options.max) && (c.min = c.max)); c.tickInterval = c.min === c.max || "undefined" === typeof c.min || "undefined" === typeof c.max ? 1 :
                                        v && c.linkedParent && !l && f === c.linkedParent.options.tickPixelInterval ? l = c.linkedParent.tickInterval : E(l, this.tickAmount ? (c.max - c.min) / Math.max(this.tickAmount - 1, 1) : void 0, G ? 1 : (c.max - c.min) * f / Math.max(c.len, f)); m && !a && c.series.forEach(function (a) { a.processData(c.min !== (c.old && c.old.min) || c.max !== (c.old && c.old.max)) }); c.setAxisTranslation(); z(this, "initialAxisTranslation"); c.pointRange && !l && (c.tickInterval = Math.max(c.pointRange, c.tickInterval)); a = E(e.minTickInterval, c.dateTime && !c.series.some(function (a) { return a.noSharedTooltip }) ?
                                            c.closestPointRange : 0); !l && c.tickInterval < a && (c.tickInterval = a); c.dateTime || c.logarithmic || l || (c.tickInterval = h(c.tickInterval, void 0, q(c.tickInterval), E(e.allowDecimals, .5 > c.tickInterval || void 0 !== this.tickAmount), !!this.tickAmount)); this.tickAmount || (c.tickInterval = c.unsquish()); this.setTickPositions()
                    }; b.prototype.setTickPositions = function () {
                        var a = this.options, c = a.tickPositions; var h = this.getMinorTickInterval(); var d = a.tickPositioner, k = this.hasVerticalPanning(), n = "colorAxis" === this.coll, e = (n ||
                            !k) && a.startOnTick; k = (n || !k) && a.endOnTick; this.tickmarkOffset = this.categories && "between" === a.tickmarkPlacement && 1 === this.tickInterval ? .5 : 0; this.minorTickInterval = "auto" === h && this.tickInterval ? this.tickInterval / 5 : h; this.single = this.min === this.max && H(this.min) && !this.tickAmount && (parseInt(this.min, 10) === this.min || !1 !== a.allowDecimals); this.tickPositions = h = c && c.slice(); !h && (this.ordinal && this.ordinal.positions || !((this.max - this.min) / this.tickInterval > Math.max(2 * this.len, 200)) ? h = this.dateTime ? this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,
                                a.units), this.min, this.max, a.startOfWeek, this.ordinal && this.ordinal.positions, this.closestPointRange, !0) : this.logarithmic ? this.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max) : this.getLinearTickPositions(this.tickInterval, this.min, this.max) : (h = [this.min, this.max], F(19, !1, this.chart)), h.length > this.len && (h = [h[0], h.pop()], h[0] === h[1] && (h.length = 1)), this.tickPositions = h, d && (d = d.apply(this, [this.min, this.max]))) && (this.tickPositions = h = d); this.paddedTicks = h.slice(0); this.trimTicks(h,
                                    e, k); this.isLinked || (this.single && 2 > h.length && !this.categories && !this.series.some(function (a) { return a.is("heatmap") && "between" === a.options.pointPlacement }) && (this.min -= .5, this.max += .5), c || d || this.adjustTickAmount()); z(this, "afterSetTickPositions")
                    }; b.prototype.trimTicks = function (a, c, h) {
                        var d = a[0], k = a[a.length - 1], n = !this.isOrdinal && this.minPointOffset || 0; z(this, "trimTicks"); if (!this.isLinked) {
                            if (c && -Infinity !== d) this.min = d; else for (; this.min - n > a[0];)a.shift(); if (h) this.max = k; else for (; this.max + n <
                                a[a.length - 1];)a.pop(); 0 === a.length && H(d) && !this.options.tickPositions && a.push((k + d) / 2)
                        }
                    }; b.prototype.alignToOthers = function () { var a = {}, c, h = this.options; !1 !== this.chart.options.chart.alignTicks && h.alignTicks && !1 !== h.startOnTick && !1 !== h.endOnTick && !this.logarithmic && this.chart[this.coll].forEach(function (h) { var d = h.options; d = [h.horiz ? d.left : d.top, d.width, d.height, d.pane].join(); h.series.length && (a[d] ? c = !0 : a[d] = 1) }); return c }; b.prototype.getTickAmount = function () {
                        var a = this.options, c = a.tickAmount, h =
                            a.tickPixelInterval; !H(a.tickInterval) && !c && this.len < h && !this.isRadial && !this.logarithmic && a.startOnTick && a.endOnTick && (c = 2); !c && this.alignToOthers() && (c = Math.ceil(this.len / h) + 1); 4 > c && (this.finalTickAmt = c, c = 5); this.tickAmount = c
                    }; b.prototype.adjustTickAmount = function () {
                        var a = this.options, c = this.tickInterval, h = this.tickPositions, d = this.tickAmount, k = this.finalTickAmt, e = h && h.length, m = E(this.threshold, this.softThreshold ? 0 : null); if (this.hasData() && n(this.min) && n(this.max)) {
                            if (e < d) {
                                for (; h.length < d;)h.length %
                                    2 || this.min === m ? h.push(u(h[h.length - 1] + c)) : h.unshift(u(h[0] - c)); this.transA *= (e - 1) / (d - 1); this.min = a.startOnTick ? h[0] : Math.min(this.min, h[0]); this.max = a.endOnTick ? h[h.length - 1] : Math.max(this.max, h[h.length - 1])
                            } else e > d && (this.tickInterval *= 2, this.setTickPositions()); if (H(k)) { for (c = a = h.length; c--;)(3 === k && 1 === c % 2 || 2 >= k && 0 < c && c < a - 1) && h.splice(c, 1); this.finalTickAmt = void 0 }
                        }
                    }; b.prototype.setScale = function () {
                        var a, c = !1, h = !1; this.series.forEach(function (a) {
                            c = c || a.isDirtyData || a.isDirty; h = h || a.xAxis && a.xAxis.isDirty ||
                                !1
                        }); this.setAxisSize(); (a = this.len !== (this.old && this.old.len)) || c || h || this.isLinked || this.forceRedraw || this.userMin !== (this.old && this.old.userMin) || this.userMax !== (this.old && this.old.userMax) || this.alignToOthers() ? (this.stacking && this.stacking.resetStacks(), this.forceRedraw = !1, this.getSeriesExtremes(), this.setTickInterval(), this.isDirty || (this.isDirty = a || this.min !== (this.old && this.old.min) || this.max !== (this.old && this.old.max))) : this.stacking && this.stacking.cleanStacks(); c && this.panningState && (this.panningState.isDirty =
                            !0); z(this, "afterSetScale")
                    }; b.prototype.setExtremes = function (a, c, h, d, k) { var n = this, e = n.chart; h = E(h, !0); n.series.forEach(function (a) { delete a.kdTree }); k = w(k, { min: a, max: c }); z(n, "setExtremes", k, function () { n.userMin = a; n.userMax = c; n.eventArgs = k; h && e.redraw(d) }) }; b.prototype.zoom = function (a, c) {
                        var h = this, d = this.dataMin, k = this.dataMax, n = this.options, e = Math.min(d, E(n.min, d)), m = Math.max(k, E(n.max, k)); a = { newMin: a, newMax: c }; z(this, "zoom", a, function (a) {
                            var c = a.newMin, n = a.newMax; if (c !== h.min || n !== h.max) h.allowZoomOutside ||
                                (H(d) && (c < e && (c = e), c > m && (c = m)), H(k) && (n < e && (n = e), n > m && (n = m))), h.displayBtn = "undefined" !== typeof c || "undefined" !== typeof n, h.setExtremes(c, n, !1, void 0, { trigger: "zoom" }); a.zoomed = !0
                        }); return a.zoomed
                    }; b.prototype.setAxisSize = function () {
                        var a = this.chart, c = this.options, h = c.offsets || [0, 0, 0, 0], d = this.horiz, k = this.width = Math.round(L(E(c.width, a.plotWidth - h[3] + h[1]), a.plotWidth)), n = this.height = Math.round(L(E(c.height, a.plotHeight - h[0] + h[2]), a.plotHeight)), e = this.top = Math.round(L(E(c.top, a.plotTop + h[0]), a.plotHeight,
                            a.plotTop)); c = this.left = Math.round(L(E(c.left, a.plotLeft + h[3]), a.plotWidth, a.plotLeft)); this.bottom = a.chartHeight - n - e; this.right = a.chartWidth - k - c; this.len = Math.max(d ? k : n, 0); this.pos = d ? c : e
                    }; b.prototype.getExtremes = function () { var a = this.logarithmic; return { min: a ? u(a.lin2log(this.min)) : this.min, max: a ? u(a.lin2log(this.max)) : this.max, dataMin: this.dataMin, dataMax: this.dataMax, userMin: this.userMin, userMax: this.userMax } }; b.prototype.getThreshold = function (a) {
                        var c = this.logarithmic, h = c ? c.lin2log(this.min) : this.min;
                        c = c ? c.lin2log(this.max) : this.max; null === a || -Infinity === a ? a = h : Infinity === a ? a = c : h > a ? a = h : c < a && (a = c); return this.translate(a, 0, 1, 0, 1)
                    }; b.prototype.autoLabelAlign = function (a) { var c = (E(a, 0) - 90 * this.side + 720) % 360; a = { align: "center" }; z(this, "autoLabelAlign", a, function (a) { 15 < c && 165 > c ? a.align = "right" : 195 < c && 345 > c && (a.align = "left") }); return a.align }; b.prototype.tickSize = function (a) {
                        var c = this.options, h = c["tick" === a ? "tickLength" : "minorTickLength"], d = E(c["tick" === a ? "tickWidth" : "minorTickWidth"], "tick" === a && this.isXAxis &&
                            !this.categories ? 1 : 0); if (d && h) { "inside" === c[a + "Position"] && (h = -h); var k = [h, d] } a = { tickSize: k }; z(this, "afterTickSize", a); return a.tickSize
                    }; b.prototype.labelMetrics = function () { var a = this.tickPositions && this.tickPositions[0] || 0; return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize, this.ticks[a] && this.ticks[a].label) }; b.prototype.unsquish = function () {
                        var a = this.options.labels, c = this.horiz, h = this.tickInterval, d = h, k = this.len / (((this.categories ? 1 : 0) + this.max - this.min) / h), e, m = a.rotation,
                        v = this.labelMetrics(), g, b = Number.MAX_VALUE, l = Math.max(this.max - this.min, 0), f = function (a) { var c = a / (k || 1); c = 1 < c ? Math.ceil(c) : 1; c * h > l && Infinity !== a && Infinity !== k && l && (c = Math.ceil(l / h)); return u(c * h) }; if (c) { if (!a.staggerLines && !a.step) if (n(m)) var q = [m]; else k < a.autoRotationLimit && (q = a.autoRotation); q && q.forEach(function (a) { if (a === m || a && -90 <= a && 90 >= a) { g = f(Math.abs(v.h / Math.sin(R * a))); var c = g + Math.abs(a / 360); c < b && (b = c, e = a, d = g) } }) } else a.step || (d = f(v.h)); this.autoRotation = q; this.labelRotation = E(e, n(m) ? m :
                            0); return d
                    }; b.prototype.getSlotWidth = function (a) { var c = this.chart, h = this.horiz, d = this.options.labels, k = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1), e = c.margin[3]; if (a && n(a.slotWidth)) return a.slotWidth; if (h && 2 > d.step) return d.rotation ? 0 : (this.staggerLines || 1) * this.len / k; if (!h) { a = d.style.width; if (void 0 !== a) return parseInt(String(a), 10); if (e) return e - c.spacing[3] } return .33 * c.chartWidth }; b.prototype.renderUnsquish = function () {
                        var c = this.chart, h = c.renderer, d = this.tickPositions, k = this.ticks,
                        n = this.options.labels, e = n.style, m = this.horiz, v = this.getSlotWidth(), g = Math.max(1, Math.round(v - 2 * n.padding)), b = {}, l = this.labelMetrics(), f = e.textOverflow, q = 0; a(n.rotation) || (b.rotation = n.rotation || 0); d.forEach(function (a) { a = k[a]; a.movedLabel && a.replaceMovedLabel(); a && a.label && a.label.textPxLength > q && (q = a.label.textPxLength) }); this.maxLabelLength = q; if (this.autoRotation) q > g && q > l.h ? b.rotation = this.labelRotation : this.labelRotation = 0; else if (v) {
                            var E = g; if (!f) {
                                var p = "clip"; for (g = d.length; !m && g--;) {
                                    var L = d[g];
                                    if (L = k[L].label) L.styles && "ellipsis" === L.styles.textOverflow ? L.css({ textOverflow: "clip" }) : L.textPxLength > v && L.css({ width: v + "px" }), L.getBBox().height > this.len / d.length - (l.h - l.f) && (L.specificTextOverflow = "ellipsis")
                                }
                            }
                        } b.rotation && (E = q > .5 * c.chartHeight ? .33 * c.chartHeight : q, f || (p = "ellipsis")); if (this.labelAlign = n.align || this.autoLabelAlign(this.labelRotation)) b.align = this.labelAlign; d.forEach(function (a) {
                            var c = (a = k[a]) && a.label, h = e.width, d = {}; c && (c.attr(b), a.shortenLabel ? a.shortenLabel() : E && !h && "nowrap" !==
                                e.whiteSpace && (E < c.textPxLength || "SPAN" === c.element.tagName) ? (d.width = E + "px", f || (d.textOverflow = c.specificTextOverflow || p), c.css(d)) : c.styles && c.styles.width && !d.width && !h && c.css({ width: null }), delete c.specificTextOverflow, a.rotation = b.rotation)
                        }, this); this.tickRotCorr = h.rotCorr(l.b, this.labelRotation || 0, 0 !== this.side)
                    }; b.prototype.hasData = function () { return this.series.some(function (a) { return a.hasData() }) || this.options.showEmpty && H(this.min) && H(this.max) }; b.prototype.addTitle = function (a) {
                        var c = this.chart.renderer,
                        h = this.horiz, d = this.opposite, n = this.options.title, e, m = this.chart.styledMode; this.axisTitle || ((e = n.textAlign) || (e = (h ? { low: "left", middle: "center", high: "right" } : { low: d ? "right" : "left", middle: "center", high: d ? "left" : "right" })[n.align]), this.axisTitle = c.text(n.text || "", 0, 0, n.useHTML).attr({ zIndex: 7, rotation: n.rotation, align: e }).addClass("highcharts-axis-title"), m || this.axisTitle.css(k(n.style)), this.axisTitle.add(this.axisGroup), this.axisTitle.isNew = !0); m || n.style.width || this.isRadial || this.axisTitle.css({
                            width: this.len +
                                "px"
                        }); this.axisTitle[a ? "show" : "hide"](a)
                    }; b.prototype.generateTick = function (a) { var c = this.ticks; c[a] ? c[a].addLabel() : c[a] = new A(this, a) }; b.prototype.getOffset = function () {
                        var a = this, c = this, h = c.chart, d = h.renderer, k = c.options, n = c.tickPositions, e = c.ticks, m = c.horiz, g = c.side, b = h.inverted && !c.isZAxis ? [1, 0, 3, 2][g] : g, l, f = 0, q = 0, p = k.title, L = k.labels, w = 0, M = h.axisOffset; h = h.clipOffset; var u = [-1, 1, 1, -1][g], r = k.className, t = c.axisParent; var F = c.hasData(); c.showAxis = l = F || k.showEmpty; c.staggerLines = c.horiz && L.staggerLines ||
                            void 0; if (!c.axisGroup) { var S = function (c, h, k) { return d.g(c).attr({ zIndex: k }).addClass("highcharts-" + a.coll.toLowerCase() + h + " " + (a.isRadial ? "highcharts-radial-axis" + h + " " : "") + (r || "")).add(t) }; c.gridGroup = S("grid", "-grid", k.gridZIndex); c.axisGroup = S("axis", "", k.zIndex); c.labelGroup = S("axis-labels", "-labels", L.zIndex) } F || c.isLinked ? (n.forEach(function (a, h) { c.generateTick(a, h) }), c.renderUnsquish(), c.reserveSpaceDefault = 0 === g || 2 === g || { 1: "left", 3: "right" }[g] === c.labelAlign, E(L.reserveSpace, "center" === c.labelAlign ?
                                !0 : null, c.reserveSpaceDefault) && n.forEach(function (a) { w = Math.max(e[a].getLabelSize(), w) }), c.staggerLines && (w *= c.staggerLines), c.labelOffset = w * (c.opposite ? -1 : 1)) : v(e, function (a, c) { a.destroy(); delete e[c] }); if (p && p.text && !1 !== p.enabled && (c.addTitle(l), l && !1 !== p.reserveSpace)) { c.titleOffset = f = c.axisTitle.getBBox()[m ? "height" : "width"]; var R = p.offset; q = H(R) ? 0 : E(p.margin, m ? 5 : 10) } c.renderLine(); c.offset = u * E(k.offset, M[g] ? M[g] + (k.margin || 0) : 0); c.tickRotCorr = c.tickRotCorr || { x: 0, y: 0 }; p = 0 === g ? -c.labelMetrics().h :
                                    2 === g ? c.tickRotCorr.y : 0; q = Math.abs(w) + q; w && (q = q - p + u * (m ? E(L.y, c.tickRotCorr.y + 8 * u) : L.x)); c.axisTitleMargin = E(R, q); c.getMaxLabelDimensions && (c.maxLabelDimensions = c.getMaxLabelDimensions(e, n)); m = this.tickSize("tick"); M[g] = Math.max(M[g], (c.axisTitleMargin || 0) + f + u * c.offset, q, n && n.length && m ? m[0] + u * c.offset : 0); k = k.offset ? 0 : 2 * Math.floor(c.axisLine.strokeWidth() / 2); h[b] = Math.max(h[b], k); z(this, "afterGetOffset")
                    }; b.prototype.getLinePath = function (a) {
                        var c = this.chart, h = this.opposite, d = this.offset, k = this.horiz,
                        n = this.left + (h ? this.width : 0) + d; d = c.chartHeight - this.bottom - (h ? this.height : 0) + d; h && (a *= -1); return c.renderer.crispLine([["M", k ? this.left : n, k ? d : this.top], ["L", k ? c.chartWidth - this.right : n, k ? d : c.chartHeight - this.bottom]], a)
                    }; b.prototype.renderLine = function () { this.axisLine || (this.axisLine = this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup), this.chart.styledMode || this.axisLine.attr({ stroke: this.options.lineColor, "stroke-width": this.options.lineWidth, zIndex: 7 })) }; b.prototype.getTitlePosition =
                        function () {
                            var a = this.horiz, c = this.left, h = this.top, d = this.len, k = this.options.title, n = a ? c : h, e = this.opposite, m = this.offset, v = k.x, g = k.y, b = this.axisTitle, l = this.chart.renderer.fontMetrics(k.style.fontSize, b); b = Math.max(b.getBBox(null, 0).height - l.h - 1, 0); d = { low: n + (a ? 0 : d), middle: n + d / 2, high: n + (a ? d : 0) }[k.align]; c = (a ? h + this.height : c) + (a ? 1 : -1) * (e ? -1 : 1) * this.axisTitleMargin + [-b, b, l.f, -b][this.side]; a = { x: a ? d + v : c + (e ? this.width : 0) + m + v, y: a ? c + g - (e ? this.height : 0) + m : d + g }; z(this, "afterGetTitlePosition", { titlePosition: a });
                            return a
                        }; b.prototype.renderMinorTick = function (a) { var c = this.chart.hasRendered && this.old, h = this.minorTicks; h[a] || (h[a] = new A(this, a, "minor")); c && h[a].isNew && h[a].render(null, !0); h[a].render(null, !1, 1) }; b.prototype.renderTick = function (a, c) { var h = this.ticks, d = this.chart.hasRendered && this.old; if (!this.isLinked || a >= this.min && a <= this.max || this.grid && this.grid.isColumn) h[a] || (h[a] = new A(this, a)), d && h[a].isNew && h[a].render(c, !0, -1), h[a].render(c) }; b.prototype.render = function () {
                            var a = this, c = a.chart, h = a.logarithmic,
                            d = a.options, k = a.isLinked, e = a.tickPositions, m = a.axisTitle, g = a.ticks, b = a.minorTicks, l = a.alternateBands, f = d.stackLabels, q = d.alternateGridColor, E = a.tickmarkOffset, p = a.axisLine, L = a.showAxis, w = r(c.renderer.globalAnimation), M, u; a.labelEdge.length = 0; a.overlap = !1;[g, b, l].forEach(function (a) { v(a, function (a) { a.isActive = !1 }) }); if (a.hasData() || k) a.minorTickInterval && !a.categories && a.getMinorTickPositions().forEach(function (c) { a.renderMinorTick(c) }), e.length && (e.forEach(function (c, h) { a.renderTick(c, h) }), E && (0 ===
                                a.min || a.single) && (g[-1] || (g[-1] = new A(a, -1, null, !0)), g[-1].render(-1))), q && e.forEach(function (d, k) { u = "undefined" !== typeof e[k + 1] ? e[k + 1] + E : a.max - E; 0 === k % 2 && d < a.max && u <= a.max + (c.polar ? -E : E) && (l[d] || (l[d] = new D.PlotLineOrBand(a)), M = d + E, l[d].options = { from: h ? h.lin2log(M) : M, to: h ? h.lin2log(u) : u, color: q, className: "highcharts-alternate-grid" }, l[d].render(), l[d].isActive = !0) }), a._addedPlotLB || (a._addedPlotLB = !0, (d.plotLines || []).concat(d.plotBands || []).forEach(function (c) { a.addPlotBandOrLine(c) }));[g, b, l].forEach(function (a) {
                                    var h,
                                    d = [], k = w.duration; v(a, function (a, c) { a.isActive || (a.render(c, !1, 0), a.isActive = !1, d.push(c)) }); Y(function () { for (h = d.length; h--;)a[d[h]] && !a[d[h]].isActive && (a[d[h]].destroy(), delete a[d[h]]) }, a !== l && c.hasRendered && k ? k : 0)
                                }); p && (p[p.isPlaced ? "animate" : "attr"]({ d: this.getLinePath(p.strokeWidth()) }), p.isPlaced = !0, p[L ? "show" : "hide"](L)); m && L && (d = a.getTitlePosition(), n(d.y) ? (m[m.isNew ? "attr" : "animate"](d), m.isNew = !1) : (m.attr("y", -9999), m.isNew = !0)); f && f.enabled && a.stacking && a.stacking.renderStackTotals();
                            a.old = { len: a.len, max: a.max, min: a.min, transA: a.transA, userMax: a.userMax, userMin: a.userMin }; a.isDirty = !1; z(this, "afterRender")
                        }; b.prototype.redraw = function () { this.visible && (this.render(), this.plotLinesAndBands.forEach(function (a) { a.render() })); this.series.forEach(function (a) { a.isDirty = !0 }) }; b.prototype.getKeepProps = function () { return this.keepProps || b.keepProps }; b.prototype.destroy = function (a) {
                            var c = this, h = c.plotLinesAndBands, d; z(this, "destroy", { keepEvents: a }); a || M(c);[c.ticks, c.minorTicks, c.alternateBands].forEach(function (a) { I(a) });
                            if (h) for (a = h.length; a--;)h[a].destroy(); "axisLine axisTitle axisGroup gridGroup labelGroup cross scrollbar".split(" ").forEach(function (a) { c[a] && (c[a] = c[a].destroy()) }); for (d in c.plotLinesAndBandsGroups) c.plotLinesAndBandsGroups[d] = c.plotLinesAndBandsGroups[d].destroy(); v(c, function (a, h) { -1 === c.getKeepProps().indexOf(h) && delete c[h] })
                        }; b.prototype.drawCrosshair = function (a, c) {
                            var h = this.crosshair, d = E(h && h.snap, !0), k, n = this.cross, e = this.chart; z(this, "drawCrosshair", { e: a, point: c }); a || (a = this.cross &&
                                this.cross.e); if (h && !1 !== (H(c) || !d)) {
                                    d ? H(c) && (k = E("colorAxis" !== this.coll ? c.crosshairPos : null, this.isXAxis ? c.plotX : this.len - c.plotY)) : k = a && (this.horiz ? a.chartX - this.pos : this.len - a.chartY + this.pos); if (H(k)) { var m = { value: c && (this.isXAxis ? c.x : E(c.stackY, c.y)), translatedValue: k }; e.polar && w(m, { isCrosshair: !0, chartX: a && a.chartX, chartY: a && a.chartY, point: c }); m = this.getPlotLinePath(m) || null } if (!H(m)) { this.hideCrosshair(); return } d = this.categories && !this.isRadial; n || (this.cross = n = e.renderer.path().addClass("highcharts-crosshair highcharts-crosshair-" +
                                        (d ? "category " : "thin ") + (h.className || "")).attr({ zIndex: E(h.zIndex, 2) }).add(), e.styledMode || (n.attr({ stroke: h.color || (d ? f.parse(y.highlightColor20).setOpacity(.25).get() : y.neutralColor20), "stroke-width": E(h.width, 1) }).css({ "pointer-events": "none" }), h.dashStyle && n.attr({ dashstyle: h.dashStyle }))); n.show().attr({ d: m }); d && !h.width && n.attr({ "stroke-width": this.transA }); this.cross.e = a
                                } else this.hideCrosshair(); z(this, "afterDrawCrosshair", { e: a, point: c })
                        }; b.prototype.hideCrosshair = function () {
                        this.cross &&
                            this.cross.hide(); z(this, "afterHideCrosshair")
                        }; b.prototype.hasVerticalPanning = function () { var a = this.chart.options.chart.panning; return !!(a && a.enabled && /y/.test(a.type)) }; b.prototype.validatePositiveValue = function (a) { return n(a) && 0 < a }; b.prototype.update = function (a, c) { var h = this.chart, d = a && a.events || {}; a = k(this.userOptions, a); v(h.options[this.coll].events, function (a, c) { "undefined" === typeof d[c] && (d[c] = void 0) }); this.destroy(!0); this.init(h, w(a, { events: d })); h.isDirtyBox = !0; E(c, !0) && h.redraw() }; b.prototype.remove =
                            function (a) { for (var c = this.chart, h = this.coll, d = this.series, k = d.length; k--;)d[k] && d[k].remove(!1); B(c.axes, this); B(c[h], this); c[h].forEach(function (a, c) { a.options.index = a.userOptions.index = c }); this.destroy(); c.isDirtyBox = !0; E(a, !0) && c.redraw() }; b.prototype.setTitle = function (a, c) { this.update({ title: a }, c) }; b.prototype.setCategories = function (a, c) { this.update({ categories: a }, c) }; b.defaultOptions = {
                                alignTicks: !0, allowDecimals: void 0, zIndex: 2, zoomEnabled: !0, dateTimeLabelFormats: {
                                    millisecond: {
                                        main: "%H:%M:%S.%L",
                                        range: !1
                                    }, second: { main: "%H:%M:%S", range: !1 }, minute: { main: "%H:%M", range: !1 }, hour: { main: "%H:%M", range: !1 }, day: { main: "%e. %b" }, week: { main: "%e. %b" }, month: { main: "%b '%y" }, year: { main: "%Y" }
                                }, endOnTick: !1, gridLineDashStyle: "Solid", gridZIndex: 1, labels: { autoRotation: void 0, autoRotationLimit: 80, distance: void 0, enabled: !0, indentation: 10, overflow: "justify", padding: 5, reserveSpace: void 0, rotation: void 0, staggerLines: 0, step: 0, useHTML: !1, x: 0, zIndex: 7, style: { color: y.neutralColor60, cursor: "default", fontSize: "11px" } },
                                maxPadding: .01, minorGridLineDashStyle: "Solid", minorTickLength: 2, minorTickPosition: "outside", minPadding: .01, offset: void 0, opposite: !1, reversed: void 0, reversedStacks: !1, showEmpty: !0, showFirstLabel: !0, showLastLabel: !0, startOfWeek: 1, startOnTick: !1, tickLength: 10, tickPixelInterval: 100, tickmarkPlacement: "between", tickPosition: "outside", title: { align: "middle", rotation: 0, useHTML: !1, x: 0, y: 0, style: { color: y.neutralColor60 } }, type: "linear", uniqueNames: !0, visible: !0, minorGridLineColor: y.neutralColor5, minorGridLineWidth: 1,
                                minorTickColor: y.neutralColor40, lineColor: y.highlightColor20, lineWidth: 1, gridLineColor: y.neutralColor10, gridLineWidth: void 0, tickColor: y.highlightColor20
                            }; b.defaultYAxisOptions = {
                                reversedStacks: !0, endOnTick: !0, maxPadding: .05, minPadding: .05, tickPixelInterval: 72, showLastLabel: !0, labels: { x: -8 }, startOnTick: !0, title: { rotation: 270, text: "Values" }, stackLabels: {
                                    animation: {}, allowOverlap: !1, enabled: !1, crop: !0, overflow: "justify", formatter: function () { var a = this.axis.chart.numberFormatter; return a(this.total, -1) },
                                    style: { color: y.neutralColor100, fontSize: "11px", fontWeight: "bold", textOutline: "1px contrast" }
                                }, gridLineWidth: 1, lineWidth: 0
                            }; b.defaultLeftAxisOptions = { labels: { x: -15 }, title: { rotation: 270 } }; b.defaultRightAxisOptions = { labels: { x: 15 }, title: { rotation: 90 } }; b.defaultBottomAxisOptions = { labels: { autoRotation: [-45], x: 0 }, margin: 15, title: { rotation: 0 } }; b.defaultTopAxisOptions = { labels: { autoRotation: [-45], x: 0 }, margin: 15, title: { rotation: 0 } }; b.keepProps = "extKey hcEvents names series userMax userMin".split(" "); return b
            }();
            D.Axis = b; return D.Axis
        }); J(b, "Core/Axis/DateTimeAxis.js", [b["Core/Axis/Axis.js"], b["Core/Utilities.js"]], function (b, f) {
            var B = f.addEvent, y = f.getMagnitude, C = f.normalizeTickInterval, A = f.timeUnits, t = function () {
                function b(b) { this.axis = b } b.prototype.normalizeTimeTickInterval = function (b, l) {
                    var g = l || [["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]]; l = g[g.length -
                        1]; var e = A[l[0]], d = l[1], f; for (f = 0; f < g.length && !(l = g[f], e = A[l[0]], d = l[1], g[f + 1] && b <= (e * d[d.length - 1] + A[g[f + 1][0]]) / 2); f++); e === A.year && b < 5 * e && (d = [1, 2, 5]); b = C(b / e, d, "year" === l[0] ? Math.max(y(b / e), 1) : 1); return { unitRange: e, count: b, unitName: l[0] }
                }; return b
            }(); f = function () {
                function b() { } b.compose = function (b) {
                    b.keepProps.push("dateTime"); b.prototype.getTimeTicks = function () { return this.chart.time.getTimeTicks.apply(this.chart.time, arguments) }; B(b, "init", function (b) {
                        "datetime" !== b.userOptions.type ? this.dateTime =
                            void 0 : this.dateTime || (this.dateTime = new t(this))
                    })
                }; b.AdditionsClass = t; return b
            }(); f.compose(b); return f
        }); J(b, "Core/Axis/LogarithmicAxis.js", [b["Core/Axis/Axis.js"], b["Core/Utilities.js"]], function (b, f) {
            var B = f.addEvent, y = f.getMagnitude, C = f.normalizeTickInterval, A = f.pick, t = function () {
                function b(b) { this.axis = b } b.prototype.getLogTickPositions = function (b, l, g, e) {
                    var d = this.axis, f = d.len, p = d.options, r = []; e || (this.minorAutoInterval = void 0); if (.5 <= b) b = Math.round(b), r = d.getLinearTickPositions(b, l, g); else if (.08 <=
                        b) { var t = Math.floor(l), F, w = p = void 0; for (f = .3 < b ? [1, 2, 4] : .15 < b ? [1, 2, 4, 6, 8] : [1, 2, 3, 4, 5, 6, 7, 8, 9]; t < g + 1 && !w; t++) { var z = f.length; for (F = 0; F < z && !w; F++) { var q = this.log2lin(this.lin2log(t) * f[F]); q > l && (!e || p <= g) && "undefined" !== typeof p && r.push(p); p > g && (w = !0); p = q } } } else l = this.lin2log(l), g = this.lin2log(g), b = e ? d.getMinorTickInterval() : p.tickInterval, b = A("auto" === b ? null : b, this.minorAutoInterval, p.tickPixelInterval / (e ? 5 : 1) * (g - l) / ((e ? f / d.tickPositions.length : f) || 1)), b = C(b, void 0, y(b)), r = d.getLinearTickPositions(b,
                            l, g).map(this.log2lin), e || (this.minorAutoInterval = b / 5); e || (d.tickInterval = b); return r
                }; b.prototype.lin2log = function (b) { return Math.pow(10, b) }; b.prototype.log2lin = function (b) { return Math.log(b) / Math.LN10 }; return b
            }(); f = function () {
                function b() { } b.compose = function (b) {
                    b.keepProps.push("logarithmic"); B(b, "init", function (b) { var g = this.logarithmic; "logarithmic" !== b.userOptions.type ? this.logarithmic = void 0 : g || (this.logarithmic = new t(this)) }); B(b, "afterInit", function () {
                        var b = this.logarithmic; b && (this.lin2val =
                            function (g) { return b.lin2log(g) }, this.val2lin = function (g) { return b.log2lin(g) })
                    })
                }; return b
            }(); f.compose(b); return f
        }); J(b, "Core/Axis/PlotLineOrBand.js", [b["Core/Axis/Axis.js"], b["Core/Globals.js"], b["Core/Color/Palette.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
            var B = y.arrayMax, A = y.arrayMin, t = y.defined, r = y.destroyObjectProperties, p = y.erase, l = y.extend, g = y.fireEvent, e = y.isNumber, d = y.merge, u = y.objectEach, H = y.pick; y = function () {
                function e(d, e) { this.axis = d; e && (this.options = e, this.id = e.id) } e.prototype.render =
                    function () {
                        g(this, "render"); var e = this, b = e.axis, l = b.horiz, f = b.logarithmic, q = e.options, m = q.label, c = e.label, n = q.to, a = q.from, k = q.value, h = t(a) && t(n), v = t(k), E = e.svgElem, p = !E, M = [], r = q.color, B = H(q.zIndex, 0), R = q.events; M = { "class": "highcharts-plot-" + (h ? "band " : "line ") + (q.className || "") }; var O = {}, G = b.chart.renderer, x = h ? "bands" : "lines"; f && (a = f.log2lin(a), n = f.log2lin(n), k = f.log2lin(k)); b.chart.styledMode || (v ? (M.stroke = r || D.neutralColor40, M["stroke-width"] = H(q.width, 1), q.dashStyle && (M.dashstyle = q.dashStyle)) :
                            h && (M.fill = r || D.highlightColor10, q.borderWidth && (M.stroke = q.borderColor, M["stroke-width"] = q.borderWidth))); O.zIndex = B; x += "-" + B; (f = b.plotLinesAndBandsGroups[x]) || (b.plotLinesAndBandsGroups[x] = f = G.g("plot-" + x).attr(O).add()); p && (e.svgElem = E = G.path().attr(M).add(f)); if (v) M = b.getPlotLinePath({ value: k, lineWidth: E.strokeWidth(), acrossPanes: q.acrossPanes }); else if (h) M = b.getPlotBandPath(a, n, q); else return; !e.eventsAdded && R && (u(R, function (a, c) { E.on(c, function (a) { R[c].apply(e, [a]) }) }), e.eventsAdded = !0); (p ||
                                !E.d) && M && M.length ? E.attr({ d: M }) : E && (M ? (E.show(!0), E.animate({ d: M })) : E.d && (E.hide(), c && (e.label = c = c.destroy()))); m && (t(m.text) || t(m.formatter)) && M && M.length && 0 < b.width && 0 < b.height && !M.isFlat ? (m = d({ align: l && h && "center", x: l ? !h && 4 : 10, verticalAlign: !l && h && "middle", y: l ? h ? 16 : 10 : h ? 6 : -4, rotation: l && !h && 90 }, m), this.renderLabel(m, M, h, B)) : c && c.hide(); return e
                    }; e.prototype.renderLabel = function (d, e, b, g) {
                        var l = this.label, m = this.axis.chart.renderer; l || (l = {
                            align: d.textAlign || d.align, rotation: d.rotation, "class": "highcharts-plot-" +
                                (b ? "band" : "line") + "-label " + (d.className || "")
                        }, l.zIndex = g, g = this.getLabelText(d), this.label = l = m.text(g, 0, 0, d.useHTML).attr(l).add(), this.axis.chart.styledMode || l.css(d.style)); m = e.xBounds || [e[0][1], e[1][1], b ? e[2][1] : e[0][1]]; e = e.yBounds || [e[0][2], e[1][2], b ? e[2][2] : e[0][2]]; b = A(m); g = A(e); l.align(d, !1, { x: b, y: g, width: B(m) - b, height: B(e) - g }); l.show(!0)
                    }; e.prototype.getLabelText = function (d) { return t(d.formatter) ? d.formatter.call(this) : d.text }; e.prototype.destroy = function () {
                        p(this.axis.plotLinesAndBands,
                            this); delete this.axis; r(this)
                    }; return e
            }(); l(b.prototype, {
                getPlotBandPath: function (d, b, g) {
                void 0 === g && (g = this.options); var l = this.getPlotLinePath({ value: b, force: !0, acrossPanes: g.acrossPanes }); g = this.getPlotLinePath({ value: d, force: !0, acrossPanes: g.acrossPanes }); var f = [], q = this.horiz, m = 1; d = !e(this.min) || !e(this.max) || d < this.min && b < this.min || d > this.max && b > this.max; if (g && l) {
                    if (d) { var c = g.toString() === l.toString(); m = 0 } for (d = 0; d < g.length; d += 2) {
                        b = g[d]; var n = g[d + 1], a = l[d], k = l[d + 1]; "M" !== b[0] && "L" !== b[0] ||
                            "M" !== n[0] && "L" !== n[0] || "M" !== a[0] && "L" !== a[0] || "M" !== k[0] && "L" !== k[0] || (q && a[1] === b[1] ? (a[1] += m, k[1] += m) : q || a[2] !== b[2] || (a[2] += m, k[2] += m), f.push(["M", b[1], b[2]], ["L", n[1], n[2]], ["L", k[1], k[2]], ["L", a[1], a[2]], ["Z"])); f.isFlat = c
                    }
                } return f
                }, addPlotBand: function (d) { return this.addPlotBandOrLine(d, "plotBands") }, addPlotLine: function (d) { return this.addPlotBandOrLine(d, "plotLines") }, addPlotBandOrLine: function (d, e) {
                    var b = this, g = new f.PlotLineOrBand(this, d), l = this.userOptions; this.visible && (g = g.render());
                    if (g) { this._addedPlotLB || (this._addedPlotLB = !0, (l.plotLines || []).concat(l.plotBands || []).forEach(function (d) { b.addPlotBandOrLine(d) })); if (e) { var q = l[e] || []; q.push(d); l[e] = q } this.plotLinesAndBands.push(g) } return g
                }, removePlotBandOrLine: function (d) { for (var e = this.plotLinesAndBands, b = this.options, g = this.userOptions, l = e.length; l--;)e[l].id === d && e[l].destroy();[b.plotLines || [], g.plotLines || [], b.plotBands || [], g.plotBands || []].forEach(function (e) { for (l = e.length; l--;)(e[l] || {}).id === d && p(e, e[l]) }) }, removePlotBand: function (d) { this.removePlotBandOrLine(d) },
                removePlotLine: function (d) { this.removePlotBandOrLine(d) }
            }); f.PlotLineOrBand = y; return f.PlotLineOrBand
        }); J(b, "Core/Tooltip.js", [b["Core/FormatUtilities.js"], b["Core/Globals.js"], b["Core/Color/Palette.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
            var B = b.format, A = f.doc, t = y.clamp, r = y.css, p = y.defined, l = y.discardElement, g = y.extend, e = y.fireEvent, d = y.isArray, u = y.isNumber, H = y.isString, I = y.merge, K = y.pick, F = y.splat, w = y.syncTimeout, z = y.timeUnits; ""; b = function () {
                function b(d, c) {
                this.container = void 0; this.crosshairs =
                    []; this.distance = 0; this.isHidden = !0; this.isSticky = !1; this.now = {}; this.options = {}; this.outside = !1; this.chart = d; this.init(d, c)
                } b.prototype.applyFilter = function () {
                    var d = this.chart; d.renderer.definition({
                        tagName: "filter", attributes: { id: "drop-shadow-" + d.index, opacity: .5 }, children: [{ tagName: "feGaussianBlur", attributes: { "in": "SourceAlpha", stdDeviation: 1 } }, { tagName: "feOffset", attributes: { dx: 1, dy: 1 } }, { tagName: "feComponentTransfer", children: [{ tagName: "feFuncA", attributes: { type: "linear", slope: .3 } }] }, {
                            tagName: "feMerge",
                            children: [{ tagName: "feMergeNode" }, { tagName: "feMergeNode", attributes: { "in": "SourceGraphic" } }]
                        }]
                    }); d.renderer.definition({ tagName: "style", textContent: ".highcharts-tooltip-" + d.index + "{filter:url(#drop-shadow-" + d.index + ")}" })
                }; b.prototype.bodyFormatter = function (d) { return d.map(function (c) { var d = c.series.tooltipOptions; return (d[(c.point.formatPrefix || "point") + "Formatter"] || c.point.tooltipFormatter).call(c.point, d[(c.point.formatPrefix || "point") + "Format"] || "") }) }; b.prototype.cleanSplit = function (d) {
                    this.chart.series.forEach(function (c) {
                        var e =
                            c && c.tt; e && (!e.isActive || d ? c.tt = e.destroy() : e.isActive = !1)
                    })
                }; b.prototype.defaultFormatter = function (d) { var c = this.points || F(this); var e = [d.tooltipFooterHeaderFormatter(c[0])]; e = e.concat(d.bodyFormatter(c)); e.push(d.tooltipFooterHeaderFormatter(c[0], !0)); return e }; b.prototype.destroy = function () {
                this.label && (this.label = this.label.destroy()); this.split && this.tt && (this.cleanSplit(this.chart, !0), this.tt = this.tt.destroy()); this.renderer && (this.renderer = this.renderer.destroy(), l(this.container)); y.clearTimeout(this.hideTimer);
                    y.clearTimeout(this.tooltipTimeout)
                }; b.prototype.getAnchor = function (d, c) {
                    var e = this.chart; var a = e.pointer; var k = e.inverted, h = e.plotTop, m = e.plotLeft, b = 0, g = 0, l, f; d = F(d); this.followPointer && c ? ("undefined" === typeof c.chartX && (c = a.normalize(c)), a = [c.chartX - m, c.chartY - h]) : d[0].tooltipPos ? a = d[0].tooltipPos : (d.forEach(function (a) {
                        l = a.series.yAxis; f = a.series.xAxis; b += a.plotX || 0; g += a.plotLow ? (a.plotLow + (a.plotHigh || 0)) / 2 : a.plotY || 0; f && l && (k ? (b += h + e.plotHeight - f.len - f.pos, g += m + e.plotWidth - l.len - l.pos) : (b += f.pos -
                            m, g += l.pos - h))
                    }), b /= d.length, g /= d.length, a = [k ? e.plotWidth - g : b, k ? e.plotHeight - b : g], this.shared && 1 < d.length && c && (k ? a[0] = c.chartX - m : a[1] = c.chartY - h)); return a.map(Math.round)
                }; b.prototype.getDateFormat = function (d, c, e, a) {
                    var k = this.chart.time, h = k.dateFormat("%m-%d %H:%M:%S.%L", c), n = { millisecond: 15, second: 12, minute: 9, hour: 6, day: 3 }, m = "millisecond"; for (b in z) {
                        if (d === z.week && +k.dateFormat("%w", c) === e && "00:00:00.000" === h.substr(6)) { var b = "week"; break } if (z[b] > d) { b = m; break } if (n[b] && h.substr(n[b]) !== "01-01 00:00:00.000".substr(n[b])) break;
                        "week" !== b && (m = b)
                    } if (b) var g = k.resolveDTLFormat(a[b]).main; return g
                }; b.prototype.getLabel = function () {
                    var d = this, c = this.chart.renderer, e = this.chart.styledMode, a = this.options, k = "tooltip" + (p(a.className) ? " " + a.className : ""), h = a.style && a.style.pointerEvents || (!this.followPointer && a.stickOnContact ? "auto" : "none"), b, g = function () { d.inContact = !0 }, l = function () { var a = d.chart.hoverSeries; d.inContact = !1; if (a && a.onMouseOut) a.onMouseOut() }; if (!this.label) {
                        if (this.outside) {
                            var q = this.chart.options.chart.style; this.container =
                                b = f.doc.createElement("div"); b.className = "highcharts-tooltip-container"; r(b, { position: "absolute", top: "1px", pointerEvents: h, zIndex: Math.max(this.options.style && this.options.style.zIndex || 0, (q && q.zIndex || 0) + 3) }); f.doc.body.appendChild(b); this.renderer = c = new f.Renderer(b, 0, 0, q, void 0, void 0, c.styledMode)
                        } this.split ? this.label = c.g(k) : (this.label = c.label("", 0, 0, a.shape || "callout", null, null, a.useHTML, null, k).attr({ padding: a.padding, r: a.borderRadius }), e || this.label.attr({ fill: a.backgroundColor, "stroke-width": a.borderWidth }).css(a.style).css({ pointerEvents: h }).shadow(a.shadow));
                        e && (this.applyFilter(), this.label.addClass("highcharts-tooltip-" + this.chart.index)); if (d.outside && !d.split) { var u = this.label, w = u.xSetter, z = u.ySetter; u.xSetter = function (a) { w.call(u, d.distance); b.style.left = a + "px" }; u.ySetter = function (a) { z.call(u, d.distance); b.style.top = a + "px" } } this.label.on("mouseenter", g).on("mouseleave", l).attr({ zIndex: 8 }).add()
                    } return this.label
                }; b.prototype.getPosition = function (d, c, e) {
                    var a = this.chart, k = this.distance, h = {}, n = a.inverted && e.h || 0, b, m = this.outside, g = m ? A.documentElement.clientWidth -
                        2 * k : a.chartWidth, l = m ? Math.max(A.body.scrollHeight, A.documentElement.scrollHeight, A.body.offsetHeight, A.documentElement.offsetHeight, A.documentElement.clientHeight) : a.chartHeight, f = a.pointer.getChartPosition(), q = function (h) { var n = "x" === h; return [h, n ? g : l, n ? d : c].concat(m ? [n ? d * f.scaleX : c * f.scaleY, n ? f.left - k + (e.plotX + a.plotLeft) * f.scaleX : f.top - k + (e.plotY + a.plotTop) * f.scaleY, 0, n ? g : l] : [n ? d : c, n ? e.plotX + a.plotLeft : e.plotY + a.plotTop, n ? a.plotLeft : a.plotTop, n ? a.plotLeft + a.plotWidth : a.plotTop + a.plotHeight]) }, p =
                        q("y"), u = q("x"), w = !this.followPointer && K(e.ttBelow, !a.inverted === !!e.negative), z = function (a, c, d, e, b, g, v) { var l = m ? "y" === a ? k * f.scaleY : k * f.scaleX : k, q = (d - e) / 2, E = e < b - k, p = b + k + e < c, u = b - l - d + q; b = b + l - q; if (w && p) h[a] = b; else if (!w && E) h[a] = u; else if (E) h[a] = Math.min(v - e, 0 > u - n ? u : u - n); else if (p) h[a] = Math.max(g, b + n + d > c ? b : b + n); else return !1 }, r = function (a, c, d, e, n) { var b; n < k || n > c - k ? b = !1 : h[a] = n < d / 2 ? 1 : n > c - e / 2 ? c - e - 2 : n - d / 2; return b }, t = function (a) { var c = p; p = u; u = c; b = a }, P = function () {
                        !1 !== z.apply(0, p) ? !1 !== r.apply(0, u) || b || (t(!0),
                            P()) : b ? h.x = h.y = 0 : (t(!0), P())
                        }; (a.inverted || 1 < this.len) && t(); P(); return h
                }; b.prototype.getXDateFormat = function (d, c, e) { c = c.dateTimeLabelFormats; var a = e && e.closestPointRange; return (a ? this.getDateFormat(a, d.x, e.options.startOfWeek, c) : c.day) || c.year }; b.prototype.hide = function (d) { var c = this; y.clearTimeout(this.hideTimer); d = K(d, this.options.hideDelay, 500); this.isHidden || (this.hideTimer = w(function () { c.getLabel().fadeOut(d ? void 0 : d); c.isHidden = !0 }, d)) }; b.prototype.init = function (d, c) {
                this.chart = d; this.options =
                    c; this.crosshairs = []; this.now = { x: 0, y: 0 }; this.isHidden = !0; this.split = c.split && !d.inverted && !d.polar; this.shared = c.shared || this.split; this.outside = K(c.outside, !(!d.scrollablePixelsX && !d.scrollablePixelsY))
                }; b.prototype.isStickyOnContact = function () { return !(this.followPointer || !this.options.stickOnContact || !this.inContact) }; b.prototype.move = function (d, c, e, a) {
                    var k = this, h = k.now, n = !1 !== k.options.animation && !k.isHidden && (1 < Math.abs(d - h.x) || 1 < Math.abs(c - h.y)), b = k.followPointer || 1 < k.len; g(h, {
                        x: n ? (2 * h.x + d) /
                            3 : d, y: n ? (h.y + c) / 2 : c, anchorX: b ? void 0 : n ? (2 * h.anchorX + e) / 3 : e, anchorY: b ? void 0 : n ? (h.anchorY + a) / 2 : a
                    }); k.getLabel().attr(h); k.drawTracker(); n && (y.clearTimeout(this.tooltipTimeout), this.tooltipTimeout = setTimeout(function () { k && k.move(d, c, e, a) }, 32))
                }; b.prototype.refresh = function (b, c) {
                    var n = this.chart, a = this.options, k = F(b), h = k[0], m = {}, g = [], l = a.formatter || this.defaultFormatter; m = this.shared; var f = n.styledMode; if (a.enabled) {
                        y.clearTimeout(this.hideTimer); this.followPointer = !this.split && h.series.tooltipOptions.followPointer;
                        var q = this.getAnchor(b, c); var p = q[0]; var u = q[1]; !m || !d(b) && b.series && b.series.noSharedTooltip ? m = h.getLabelConfig() : (n.pointer.applyInactiveState(k), k.forEach(function (a) { a.setState("hover"); g.push(a.getLabelConfig()) }), m = { x: h.category, y: h.y }, m.points = g); this.len = g.length; b = l.call(m, this); l = h.series; this.distance = K(l.tooltipOptions.distance, 16); if (!1 === b) this.hide(); else {
                            if (this.split) this.renderSplit(b, k); else if (k = p, m = u, c && n.pointer.isDirectTouch && (k = c.chartX - n.plotLeft, m = c.chartY - n.plotTop), n.polar ||
                                !1 === l.options.clip || l.shouldShowTooltip(k, m)) c = this.getLabel(), a.style.width && !f || c.css({ width: this.chart.spacingBox.width + "px" }), c.attr({ text: b && b.join ? b.join("") : b }), c.removeClass(/highcharts-color-[\d]+/g).addClass("highcharts-color-" + K(h.colorIndex, l.colorIndex)), f || c.attr({ stroke: a.borderColor || h.color || l.color || D.neutralColor60 }), this.updatePosition({ plotX: p, plotY: u, negative: h.negative, ttBelow: h.ttBelow, h: q[2] || 0 }); else { this.hide(); return } this.isHidden && this.label && this.label.attr({ opacity: 1 }).show();
                            this.isHidden = !1
                        } e(this, "refresh")
                    }
                }; b.prototype.renderSplit = function (d, c) {
                    function e(c, h, d, k, e) { void 0 === e && (e = !0); d ? (h = I ? 0 : da, c = t(c - k / 2, Q.left, Q.right - k - (a.outside ? y : 0))) : (h -= W, c = e ? c - k - B : c + B, c = t(c, e ? c : Q.left, Q.right)); return { x: c, y: h } } var a = this, k = a.chart, h = a.chart, b = h.chartWidth, m = h.chartHeight, l = h.plotHeight, q = h.plotLeft, p = h.plotTop, u = h.pointer, w = h.scrollablePixelsY; w = void 0 === w ? 0 : w; var z = h.scrollablePixelsX, r = h.scrollingContainer; r = void 0 === r ? { scrollLeft: 0, scrollTop: 0 } : r; var x = r.scrollLeft; r =
                        r.scrollTop; var F = h.styledMode, B = a.distance, C = a.options, P = a.options.positioner, Q = a.outside && "number" !== typeof z ? A.documentElement.getBoundingClientRect() : { left: x, right: x + b, top: r, bottom: r + m }, N = a.getLabel(), T = this.renderer || k.renderer, I = !(!k.xAxis[0] || !k.xAxis[0].opposite); k = u.getChartPosition(); var y = k.left; k = k.top; var W = p + r, U = 0, da = l - w; H(d) && (d = [!1, d]); d = d.slice(0, c.length + 1).reduce(function (h, d, k) {
                            if (!1 !== d && "" !== d) {
                                k = c[k - 1] || { isHeader: !0, plotX: c[0].plotX, plotY: l, series: {} }; var n = k.isHeader, b = n ? a :
                                    k.series; d = d.toString(); var m = b.tt, g = k.isHeader; var v = k.series; var f = "highcharts-color-" + K(k.colorIndex, v.colorIndex, "none"); m || (m = { padding: C.padding, r: C.borderRadius }, F || (m.fill = C.backgroundColor, m["stroke-width"] = C.borderWidth), m = T.label("", 0, 0, C[g ? "headerShape" : "shape"] || "callout", void 0, void 0, C.useHTML).addClass((g ? "highcharts-tooltip-header " : "") + "highcharts-tooltip-box " + f).attr(m).add(N)); m.isActive = !0; m.attr({ text: d }); F || m.css(C.style).shadow(C.shadow).attr({
                                        stroke: C.borderColor || k.color ||
                                            v.color || D.neutralColor80
                                    }); b = b.tt = m; g = b.getBBox(); d = g.width + b.strokeWidth(); n && (U = g.height, da += U, I && (W -= U)); v = k.plotX; v = void 0 === v ? 0 : v; f = k.plotY; f = void 0 === f ? 0 : f; m = k.series; if (k.isHeader) { v = q + v; var E = p + l / 2 } else { var u = m.xAxis, w = m.yAxis; v = u.pos + t(v, -B, u.len + B); m.shouldShowTooltip(0, w.pos - p + f, { ignoreX: !0 }) && (E = w.pos + f) } v = t(v, Q.left - B, Q.right + B); "number" === typeof E ? (g = g.height + 1, f = P ? P.call(a, d, g, k) : e(v, E, n, d), h.push({
                                        align: P ? 0 : void 0, anchorX: v, anchorY: E, boxWidth: d, point: k, rank: K(f.rank, n ? 1 : 0), size: g,
                                        target: f.y, tt: b, x: f.x
                                    })) : b.isActive = !1
                            } return h
                        }, []); !P && d.some(function (c) { var h = (a.outside ? y : 0) + c.anchorX; return h < Q.left && h + c.boxWidth < Q.right ? !0 : h < y - Q.left + c.boxWidth && Q.right - h > h }) && (d = d.map(function (a) { var c = e(a.anchorX, a.anchorY, a.point.isHeader, a.boxWidth, !1); return g(a, { target: c.y, x: c.x }) })); a.cleanSplit(); f.distribute(d, da); var ba = y, J = y; d.forEach(function (c) { var h = c.x, d = c.boxWidth; c = c.isHeader; c || (a.outside && y + h < ba && (ba = y + h), !c && a.outside && ba + d > J && (J = y + h)) }); d.forEach(function (c) {
                            var h =
                                c.x, d = c.anchorX, k = c.pos, e = c.point.isHeader; k = { visibility: "undefined" === typeof k ? "hidden" : "inherit", x: h, y: k + W, anchorX: d, anchorY: c.anchorY }; if (a.outside && h < d) { var n = y - ba; 0 < n && (e || (k.x = h + n, k.anchorX = d + n), e && (k.x = (J - ba) / 2, k.anchorX = d + n)) } c.tt.attr(k)
                        }); d = a.container; w = a.renderer; a.outside && d && w && (h = N.getBBox(), w.setSize(h.width + h.x, h.height + h.y, !1), d.style.left = ba + "px", d.style.top = k + "px")
                }; b.prototype.drawTracker = function () {
                    if (this.followPointer || !this.options.stickOnContact) this.tracker && this.tracker.destroy();
                    else {
                        var d = this.chart, c = this.label, e = d.hoverPoint; if (c && e) {
                            var a = { x: 0, y: 0, width: 0, height: 0 }; e = this.getAnchor(e); var k = c.getBBox(); e[0] += d.plotLeft - c.translateX; e[1] += d.plotTop - c.translateY; a.x = Math.min(0, e[0]); a.y = Math.min(0, e[1]); a.width = 0 > e[0] ? Math.max(Math.abs(e[0]), k.width - e[0]) : Math.max(Math.abs(e[0]), k.width); a.height = 0 > e[1] ? Math.max(Math.abs(e[1]), k.height - Math.abs(e[1])) : Math.max(Math.abs(e[1]), k.height); this.tracker ? this.tracker.attr(a) : (this.tracker = c.renderer.rect(a).addClass("highcharts-tracker").add(c),
                                d.styledMode || this.tracker.attr({ fill: "rgba(0,0,0,0)" }))
                        }
                    }
                }; b.prototype.styledModeFormat = function (d) { return d.replace('style="font-size: 10px"', 'class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g, 'class="highcharts-color-{$1.colorIndex}"') }; b.prototype.tooltipFooterHeaderFormatter = function (d, c) {
                    var n = c ? "footer" : "header", a = d.series, k = a.tooltipOptions, h = k.xDateFormat, b = a.xAxis, m = b && "datetime" === b.options.type && u(d.key), g = k[n + "Format"]; c = { isFooter: c, labelConfig: d }; e(this, "headerFormatter",
                        c, function (c) { m && !h && (h = this.getXDateFormat(d, k, b)); m && h && (d.point && d.point.tooltipDateKeys || ["key"]).forEach(function (a) { g = g.replace("{point." + a + "}", "{point." + a + ":" + h + "}") }); a.chart.styledMode && (g = this.styledModeFormat(g)); c.text = B(g, { point: d, series: a }, this.chart) }); return c.text
                }; b.prototype.update = function (d) { this.destroy(); I(!0, this.chart.options.tooltip.userOptions, d); this.init(this.chart, I(!0, this.options, d)) }; b.prototype.updatePosition = function (d) {
                    var c = this.chart, e = c.pointer, a = this.getLabel(),
                    k = d.plotX + c.plotLeft; c = d.plotY + c.plotTop; e = e.getChartPosition(); d = (this.options.positioner || this.getPosition).call(this, a.width, a.height, d); if (this.outside) { var h = (this.options.borderWidth || 0) + 2 * this.distance; this.renderer.setSize(a.width + h, a.height + h, !1); if (1 !== e.scaleX || 1 !== e.scaleY) r(this.container, { transform: "scale(" + e.scaleX + ", " + e.scaleY + ")" }), k *= e.scaleX, c *= e.scaleY; k += e.left - d.x; c += e.top - d.y } this.move(Math.round(d.x), Math.round(d.y || 0), k, c)
                }; return b
            }(); f.Tooltip = b; return f.Tooltip
        }); J(b,
            "Core/Pointer.js", [b["Core/Color/Color.js"], b["Core/Globals.js"], b["Core/Color/Palette.js"], b["Core/Tooltip.js"], b["Core/Utilities.js"]], function (b, f, D, y, C) {
                var B = b.parse, t = f.charts, r = f.noop, p = C.addEvent, l = C.attr, g = C.css, e = C.defined, d = C.extend, u = C.find, H = C.fireEvent, I = C.isNumber, K = C.isObject, F = C.objectEach, w = C.offset, z = C.pick, q = C.splat; ""; b = function () {
                    function b(c, d) {
                    this.lastValidTouch = {}; this.pinchDown = []; this.runChartClick = !1; this.eventsToUnbind = []; this.chart = c; this.hasDragged = !1; this.options =
                        d; this.init(c, d)
                    } b.prototype.applyInactiveState = function (c) { var d = [], a; (c || []).forEach(function (c) { a = c.series; d.push(a); a.linkedParent && d.push(a.linkedParent); a.linkedSeries && (d = d.concat(a.linkedSeries)); a.navigatorSeries && d.push(a.navigatorSeries) }); this.chart.series.forEach(function (a) { -1 === d.indexOf(a) ? a.setState("inactive", !0) : a.options.inactiveOtherPoints && a.setAllPointsToState("inactive") }) }; b.prototype.destroy = function () {
                        var c = this; this.eventsToUnbind.forEach(function (c) { return c() }); this.eventsToUnbind =
                            []; f.chartCount || (f.unbindDocumentMouseUp && (f.unbindDocumentMouseUp = f.unbindDocumentMouseUp()), f.unbindDocumentTouchEnd && (f.unbindDocumentTouchEnd = f.unbindDocumentTouchEnd())); clearInterval(c.tooltipTimeout); F(c, function (d, a) { c[a] = void 0 })
                    }; b.prototype.drag = function (c) {
                        var d = this.chart, a = d.options.chart, k = c.chartX, h = c.chartY, e = this.zoomHor, b = this.zoomVert, g = d.plotLeft, m = d.plotTop, l = d.plotWidth, f = d.plotHeight, q = this.selectionMarker, p = this.mouseDownX || 0, u = this.mouseDownY || 0, w = K(a.panning) ? a.panning &&
                            a.panning.enabled : a.panning, z = a.panKey && c[a.panKey + "Key"]; if (!q || !q.touch) if (k < g ? k = g : k > g + l && (k = g + l), h < m ? h = m : h > m + f && (h = m + f), this.hasDragged = Math.sqrt(Math.pow(p - k, 2) + Math.pow(u - h, 2)), 10 < this.hasDragged) {
                                var r = d.isInsidePlot(p - g, u - m, { visiblePlotOnly: !0 }); d.hasCartesianSeries && (this.zoomX || this.zoomY) && r && !z && !q && (this.selectionMarker = q = d.renderer.rect(g, m, e ? 1 : l, b ? 1 : f, 0).attr({ "class": "highcharts-selection-marker", zIndex: 7 }).add(), d.styledMode || q.attr({ fill: a.selectionMarkerFill || B(D.highlightColor80).setOpacity(.25).get() }));
                                q && e && (k -= p, q.attr({ width: Math.abs(k), x: (0 < k ? 0 : k) + p })); q && b && (k = h - u, q.attr({ height: Math.abs(k), y: (0 < k ? 0 : k) + u })); r && !q && w && d.pan(c, a.panning)
                            }
                    }; b.prototype.dragStart = function (c) { var d = this.chart; d.mouseIsDown = c.type; d.cancelClick = !1; d.mouseDownX = this.mouseDownX = c.chartX; d.mouseDownY = this.mouseDownY = c.chartY }; b.prototype.drop = function (c) {
                        var b = this, a = this.chart, k = this.hasPinched; if (this.selectionMarker) {
                            var h = { originalEvent: c, xAxis: [], yAxis: [] }, m = this.selectionMarker, l = m.attr ? m.attr("x") : m.x, f = m.attr ?
                                m.attr("y") : m.y, q = m.attr ? m.attr("width") : m.width, p = m.attr ? m.attr("height") : m.height, u; if (this.hasDragged || k) a.axes.forEach(function (a) { if (a.zoomEnabled && e(a.min) && (k || b[{ xAxis: "zoomX", yAxis: "zoomY" }[a.coll]]) && I(l) && I(f)) { var d = a.horiz, n = "touchend" === c.type ? a.minPixelPadding : 0, g = a.toValue((d ? l : f) + n); d = a.toValue((d ? l + q : f + p) - n); h[a.coll].push({ axis: a, min: Math.min(g, d), max: Math.max(g, d) }); u = !0 } }), u && H(a, "selection", h, function (c) { a.zoom(d(c, k ? { animation: !1 } : null)) }); I(a.index) && (this.selectionMarker =
                                    this.selectionMarker.destroy()); k && this.scaleGroups()
                        } a && I(a.index) && (g(a.container, { cursor: a._cursor }), a.cancelClick = 10 < this.hasDragged, a.mouseIsDown = this.hasDragged = this.hasPinched = !1, this.pinchDown = [])
                    }; b.prototype.findNearestKDPoint = function (c, d, a) {
                        var k = this.chart, h = k.hoverPoint; k = k.tooltip; if (h && k && k.isStickyOnContact()) return h; var e; c.forEach(function (c) {
                            var h = !(c.noSharedTooltip && d) && 0 > c.options.findNearestPointBy.indexOf("y"); c = c.searchPoint(a, h); if ((h = K(c, !0) && c.series) && !(h = !K(e, !0))) {
                                h =
                                e.distX - c.distX; var k = e.dist - c.dist, b = (c.series.group && c.series.group.zIndex) - (e.series.group && e.series.group.zIndex); h = 0 < (0 !== h && d ? h : 0 !== k ? k : 0 !== b ? b : e.series.index > c.series.index ? -1 : 1)
                            } h && (e = c)
                        }); return e
                    }; b.prototype.getChartCoordinatesFromPoint = function (c, d) {
                        var a = c.series, k = a.xAxis; a = a.yAxis; var h = c.shapeArgs; if (k && a) { var e = z(c.clientX, c.plotX), b = c.plotY || 0; c.isNode && h && I(h.x) && I(h.y) && (e = h.x, b = h.y); return d ? { chartX: a.len + a.pos - b, chartY: k.len + k.pos - e } : { chartX: e + k.pos, chartY: b + a.pos } } if (h && h.x &&
                            h.y) return { chartX: h.x, chartY: h.y }
                    }; b.prototype.getChartPosition = function () { if (this.chartPosition) return this.chartPosition; var c = this.chart.container, d = w(c); this.chartPosition = { left: d.left, top: d.top, scaleX: 1, scaleY: 1 }; var a = c.offsetWidth; c = c.offsetHeight; 2 < a && 2 < c && (this.chartPosition.scaleX = d.width / a, this.chartPosition.scaleY = d.height / c); return this.chartPosition }; b.prototype.getCoordinates = function (c) {
                        var d = { xAxis: [], yAxis: [] }; this.chart.axes.forEach(function (a) {
                            d[a.isXAxis ? "xAxis" : "yAxis"].push({
                                axis: a,
                                value: a.toValue(c[a.horiz ? "chartX" : "chartY"])
                            })
                        }); return d
                    }; b.prototype.getHoverData = function (c, d, a, k, h, e) {
                        var b, n = []; k = !(!k || !c); var g = d && !d.stickyTracking, m = { chartX: e ? e.chartX : void 0, chartY: e ? e.chartY : void 0, shared: h }; H(this, "beforeGetHoverData", m); g = g ? [d] : a.filter(function (a) { return m.filter ? m.filter(a) : a.visible && !(!h && a.directTouch) && z(a.options.enableMouseTracking, !0) && a.stickyTracking }); d = (b = k || !e ? c : this.findNearestKDPoint(g, h, e)) && b.series; b && (h && !d.noSharedTooltip ? (g = a.filter(function (a) {
                            return m.filter ?
                                m.filter(a) : a.visible && !(!h && a.directTouch) && z(a.options.enableMouseTracking, !0) && !a.noSharedTooltip
                        }), g.forEach(function (a) { var c = u(a.points, function (a) { return a.x === b.x && !a.isNull }); K(c) && (a.chart.isBoosting && (c = a.getPoint(c)), n.push(c)) })) : n.push(b)); m = { hoverPoint: b }; H(this, "afterGetHoverData", m); return { hoverPoint: m.hoverPoint, hoverSeries: d, hoverPoints: n }
                    }; b.prototype.getPointFromEvent = function (c) { c = c.target; for (var d; c && !d;)d = c.point, c = c.parentNode; return d }; b.prototype.onTrackerMouseOut = function (c) {
                        c =
                        c.relatedTarget || c.toElement; var d = this.chart.hoverSeries; this.isDirectTouch = !1; if (!(!d || !c || d.stickyTracking || this.inClass(c, "highcharts-tooltip") || this.inClass(c, "highcharts-series-" + d.index) && this.inClass(c, "highcharts-tracker"))) d.onMouseOut()
                    }; b.prototype.inClass = function (c, d) { for (var a; c;) { if (a = l(c, "class")) { if (-1 !== a.indexOf(d)) return !0; if (-1 !== a.indexOf("highcharts-container")) return !1 } c = c.parentNode } }; b.prototype.init = function (c, d) {
                    this.options = d; this.chart = c; this.runChartClick = !(!d.chart.events ||
                        !d.chart.events.click); this.pinchDown = []; this.lastValidTouch = {}; y && (c.tooltip = new y(c, d.tooltip), this.followTouchMove = z(d.tooltip.followTouchMove, !0)); this.setDOMEvents()
                    }; b.prototype.normalize = function (c, e) { var a = c.touches, k = a ? a.length ? a.item(0) : z(a.changedTouches, c.changedTouches)[0] : c; e || (e = this.getChartPosition()); a = k.pageX - e.left; k = k.pageY - e.top; a /= e.scaleX; k /= e.scaleY; return d(c, { chartX: Math.round(a), chartY: Math.round(k) }) }; b.prototype.onContainerClick = function (c) {
                        var e = this.chart, a = e.hoverPoint;
                        c = this.normalize(c); var k = e.plotLeft, h = e.plotTop; e.cancelClick || (a && this.inClass(c.target, "highcharts-tracker") ? (H(a.series, "click", d(c, { point: a })), e.hoverPoint && a.firePointEvent("click", c)) : (d(c, this.getCoordinates(c)), e.isInsidePlot(c.chartX - k, c.chartY - h, { visiblePlotOnly: !0 }) && H(e, "click", c)))
                    }; b.prototype.onContainerMouseDown = function (c) {
                        var d = 1 === ((c.buttons || c.button) & 1); c = this.normalize(c); if (f.isFirefox && 0 !== c.button) this.onContainerMouseMove(c); if ("undefined" === typeof c.button || d) this.zoomOption(c),
                            d && c.preventDefault && c.preventDefault(), this.dragStart(c)
                    }; b.prototype.onContainerMouseLeave = function (c) { var d = t[z(f.hoverChartIndex, -1)], a = this.chart.tooltip; c = this.normalize(c); d && (c.relatedTarget || c.toElement) && (d.pointer.reset(), d.pointer.chartPosition = void 0); a && !a.isHidden && this.reset() }; b.prototype.onContainerMouseEnter = function (c) { delete this.chartPosition }; b.prototype.onContainerMouseMove = function (c) {
                        var d = this.chart; c = this.normalize(c); this.setHoverChartIndex(); c.preventDefault || (c.returnValue =
                            !1); ("mousedown" === d.mouseIsDown || this.touchSelect(c)) && this.drag(c); d.openMenu || !this.inClass(c.target, "highcharts-tracker") && !d.isInsidePlot(c.chartX - d.plotLeft, c.chartY - d.plotTop, { visiblePlotOnly: !0 }) || this.runPointActions(c)
                    }; b.prototype.onDocumentTouchEnd = function (c) { t[f.hoverChartIndex] && t[f.hoverChartIndex].pointer.drop(c) }; b.prototype.onContainerTouchMove = function (c) { if (this.touchSelect(c)) this.onContainerMouseMove(c); else this.touch(c) }; b.prototype.onContainerTouchStart = function (c) {
                        if (this.touchSelect(c)) this.onContainerMouseDown(c);
                        else this.zoomOption(c), this.touch(c, !0)
                    }; b.prototype.onDocumentMouseMove = function (c) { var d = this.chart, a = this.chartPosition; c = this.normalize(c, a); var k = d.tooltip; !a || k && k.isStickyOnContact() || d.isInsidePlot(c.chartX - d.plotLeft, c.chartY - d.plotTop, { visiblePlotOnly: !0 }) || this.inClass(c.target, "highcharts-tracker") || this.reset() }; b.prototype.onDocumentMouseUp = function (c) { var d = t[z(f.hoverChartIndex, -1)]; d && d.pointer.drop(c) }; b.prototype.pinch = function (c) {
                        var e = this, a = e.chart, k = e.pinchDown, h = c.touches ||
                            [], b = h.length, g = e.lastValidTouch, m = e.hasZoom, l = e.selectionMarker, f = {}, q = 1 === b && (e.inClass(c.target, "highcharts-tracker") && a.runTrackerClick || e.runChartClick), p = {}; 1 < b && (e.initiated = !0); m && e.initiated && !q && !1 !== c.cancelable && c.preventDefault();[].map.call(h, function (a) { return e.normalize(a) }); "touchstart" === c.type ? ([].forEach.call(h, function (a, c) { k[c] = { chartX: a.chartX, chartY: a.chartY } }), g.x = [k[0].chartX, k[1] && k[1].chartX], g.y = [k[0].chartY, k[1] && k[1].chartY], a.axes.forEach(function (c) {
                                if (c.zoomEnabled) {
                                    var d =
                                        a.bounds[c.horiz ? "h" : "v"], h = c.minPixelPadding, e = c.toPixels(Math.min(z(c.options.min, c.dataMin), c.dataMin)), k = c.toPixels(Math.max(z(c.options.max, c.dataMax), c.dataMax)), b = Math.max(e, k); d.min = Math.min(c.pos, Math.min(e, k) - h); d.max = Math.max(c.pos + c.len, b + h)
                                }
                            }), e.res = !0) : e.followTouchMove && 1 === b ? this.runPointActions(e.normalize(c)) : k.length && (l || (e.selectionMarker = l = d({ destroy: r, touch: !0 }, a.plotBox)), e.pinchTranslate(k, h, f, l, p, g), e.hasPinched = m, e.scaleGroups(f, p), e.res && (e.res = !1, this.reset(!1, 0)))
                    }; b.prototype.pinchTranslate =
                        function (c, d, a, e, h, b) { this.zoomHor && this.pinchTranslateDirection(!0, c, d, a, e, h, b); this.zoomVert && this.pinchTranslateDirection(!1, c, d, a, e, h, b) }; b.prototype.pinchTranslateDirection = function (c, d, a, e, h, b, g, m) {
                            var k = this.chart, n = c ? "x" : "y", l = c ? "X" : "Y", f = "chart" + l, v = c ? "width" : "height", q = k["plot" + (c ? "Left" : "Top")], p, E, u = m || 1, w = k.inverted, P = k.bounds[c ? "h" : "v"], z = 1 === d.length, r = d[0][f], L = a[0][f], t = !z && d[1][f], H = !z && a[1][f]; a = function () {
                            "number" === typeof H && 20 < Math.abs(r - t) && (u = m || Math.abs(L - H) / Math.abs(r - t));
                                E = (q - L) / u + r; p = k["plot" + (c ? "Width" : "Height")] / u
                            }; a(); d = E; if (d < P.min) { d = P.min; var F = !0 } else d + p > P.max && (d = P.max - p, F = !0); F ? (L -= .8 * (L - g[n][0]), "number" === typeof H && (H -= .8 * (H - g[n][1])), a()) : g[n] = [L, H]; w || (b[n] = E - q, b[v] = p); b = w ? 1 / u : u; h[v] = p; h[n] = d; e[w ? c ? "scaleY" : "scaleX" : "scale" + l] = u; e["translate" + l] = b * q + (L - b * r)
                        }; b.prototype.reset = function (c, d) {
                            var a = this.chart, e = a.hoverSeries, h = a.hoverPoint, b = a.hoverPoints, g = a.tooltip, m = g && g.shared ? b : h; c && m && q(m).forEach(function (a) {
                                a.series.isCartesian && "undefined" ===
                                    typeof a.plotX && (c = !1)
                            }); if (c) g && m && q(m).length && (g.refresh(m), g.shared && b ? b.forEach(function (a) { a.setState(a.state, !0); a.series.isCartesian && (a.series.xAxis.crosshair && a.series.xAxis.drawCrosshair(null, a), a.series.yAxis.crosshair && a.series.yAxis.drawCrosshair(null, a)) }) : h && (h.setState(h.state, !0), a.axes.forEach(function (a) { a.crosshair && h.series[a.coll] === a && a.drawCrosshair(null, h) }))); else {
                                if (h) h.onMouseOut(); b && b.forEach(function (a) { a.setState() }); if (e) e.onMouseOut(); g && g.hide(d); this.unDocMouseMove &&
                                    (this.unDocMouseMove = this.unDocMouseMove()); a.axes.forEach(function (a) { a.hideCrosshair() }); this.hoverX = a.hoverPoints = a.hoverPoint = null
                            }
                        }; b.prototype.runPointActions = function (c, d) {
                            var a = this.chart, e = a.tooltip && a.tooltip.options.enabled ? a.tooltip : void 0, h = e ? e.shared : !1, b = d || a.hoverPoint, g = b && b.series || a.hoverSeries; g = this.getHoverData(b, g, a.series, (!c || "touchmove" !== c.type) && (!!d || g && g.directTouch && this.isDirectTouch), h, c); b = g.hoverPoint; var m = g.hoverPoints; d = (g = g.hoverSeries) && g.tooltipOptions.followPointer &&
                                !g.tooltipOptions.split; h = h && g && !g.noSharedTooltip; if (b && (b !== a.hoverPoint || e && e.isHidden)) { (a.hoverPoints || []).forEach(function (a) { -1 === m.indexOf(a) && a.setState() }); if (a.hoverSeries !== g) g.onMouseOver(); this.applyInactiveState(m); (m || []).forEach(function (a) { a.setState("hover") }); a.hoverPoint && a.hoverPoint.firePointEvent("mouseOut"); if (!b.series) return; a.hoverPoints = m; a.hoverPoint = b; b.firePointEvent("mouseOver"); e && e.refresh(h ? m : b, c) } else d && e && !e.isHidden && (b = e.getAnchor([{}], c), a.isInsidePlot(b[0],
                                    b[1], { visiblePlotOnly: !0 }) && e.updatePosition({ plotX: b[0], plotY: b[1] })); this.unDocMouseMove || (this.unDocMouseMove = p(a.container.ownerDocument, "mousemove", function (a) { var c = t[f.hoverChartIndex]; if (c) c.pointer.onDocumentMouseMove(a) }), this.eventsToUnbind.push(this.unDocMouseMove)); a.axes.forEach(function (d) { var h = z((d.crosshair || {}).snap, !0), e; h && ((e = a.hoverPoint) && e.series[d.coll] === d || (e = u(m, function (a) { return a.series[d.coll] === d }))); e || !h ? d.drawCrosshair(c, e) : d.hideCrosshair() })
                        }; b.prototype.scaleGroups =
                            function (c, d) { var a = this.chart, e; a.series.forEach(function (h) { e = c || h.getPlotBox(); h.xAxis && h.xAxis.zoomEnabled && h.group && (h.group.attr(e), h.markerGroup && (h.markerGroup.attr(e), h.markerGroup.clip(d ? a.clipRect : null)), h.dataLabelsGroup && h.dataLabelsGroup.attr(e)) }); a.clipRect.attr(d || a.clipBox) }; b.prototype.setDOMEvents = function () {
                                var c = this, d = this.chart.container, a = d.ownerDocument; d.onmousedown = this.onContainerMouseDown.bind(this); d.onmousemove = this.onContainerMouseMove.bind(this); d.onclick = this.onContainerClick.bind(this);
                                this.eventsToUnbind.push(p(d, "mouseenter", this.onContainerMouseEnter.bind(this))); this.eventsToUnbind.push(p(d, "mouseleave", this.onContainerMouseLeave.bind(this))); f.unbindDocumentMouseUp || (f.unbindDocumentMouseUp = p(a, "mouseup", this.onDocumentMouseUp.bind(this))); for (var e = this.chart.renderTo.parentElement; e && "BODY" !== e.tagName;)this.eventsToUnbind.push(p(e, "scroll", function () { delete c.chartPosition })), e = e.parentElement; f.hasTouch && (this.eventsToUnbind.push(p(d, "touchstart", this.onContainerTouchStart.bind(this),
                                    { passive: !1 })), this.eventsToUnbind.push(p(d, "touchmove", this.onContainerTouchMove.bind(this), { passive: !1 })), f.unbindDocumentTouchEnd || (f.unbindDocumentTouchEnd = p(a, "touchend", this.onDocumentTouchEnd.bind(this), { passive: !1 })))
                            }; b.prototype.setHoverChartIndex = function () { var c = this.chart, d = f.charts[z(f.hoverChartIndex, -1)]; if (d && d !== c) d.pointer.onContainerMouseLeave({ relatedTarget: !0 }); d && d.mouseIsDown || (f.hoverChartIndex = c.index) }; b.prototype.touch = function (c, d) {
                                var a = this.chart, e; this.setHoverChartIndex();
                                if (1 === c.touches.length) if (c = this.normalize(c), (e = a.isInsidePlot(c.chartX - a.plotLeft, c.chartY - a.plotTop, { visiblePlotOnly: !0 })) && !a.openMenu) { d && this.runPointActions(c); if ("touchmove" === c.type) { d = this.pinchDown; var h = d[0] ? 4 <= Math.sqrt(Math.pow(d[0].chartX - c.chartX, 2) + Math.pow(d[0].chartY - c.chartY, 2)) : !1 } z(h, !0) && this.pinch(c) } else d && this.reset(); else 2 === c.touches.length && this.pinch(c)
                            }; b.prototype.touchSelect = function (c) { return !(!this.chart.options.chart.zoomBySingleTouch || !c.touches || 1 !== c.touches.length) };
                    b.prototype.zoomOption = function (c) { var d = this.chart, a = d.options.chart, e = a.zoomType || ""; d = d.inverted; /touch/.test(c.type) && (e = z(a.pinchType, e)); this.zoomX = c = /x/.test(e); this.zoomY = e = /y/.test(e); this.zoomHor = c && !d || e && d; this.zoomVert = e && !d || c && d; this.hasZoom = c || e }; return b
                }(); return f.Pointer = b
            }); J(b, "Core/MSPointer.js", [b["Core/Globals.js"], b["Core/Pointer.js"], b["Core/Utilities.js"]], function (b, f, D) {
                function B() {
                    var d = []; d.item = function (d) { return this[d] }; e(u, function (e) {
                        d.push({
                            pageX: e.pageX, pageY: e.pageY,
                            target: e.target
                        })
                    }); return d
                } function C(d, e, g, l) { "touch" !== d.pointerType && d.pointerType !== d.MSPOINTER_TYPE_TOUCH || !t[b.hoverChartIndex] || (l(d), l = t[b.hoverChartIndex].pointer, l[e]({ type: g, target: d.currentTarget, preventDefault: p, touches: B() })) } var A = this && this.__extends || function () {
                    var d = function (e, b) { d = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, e) { d.__proto__ = e } || function (d, e) { for (var b in e) e.hasOwnProperty(b) && (d[b] = e[b]) }; return d(e, b) }; return function (e, b) {
                        function g() {
                        this.constructor =
                            e
                        } d(e, b); e.prototype = null === b ? Object.create(b) : (g.prototype = b.prototype, new g)
                    }
                }(), t = b.charts, r = b.doc, p = b.noop, l = D.addEvent, g = D.css, e = D.objectEach, d = D.removeEvent, u = {}, H = !!b.win.PointerEvent; return function (e) {
                    function b() { return null !== e && e.apply(this, arguments) || this } A(b, e); b.prototype.batchMSEvents = function (d) {
                        d(this.chart.container, H ? "pointerdown" : "MSPointerDown", this.onContainerPointerDown); d(this.chart.container, H ? "pointermove" : "MSPointerMove", this.onContainerPointerMove); d(r, H ? "pointerup" :
                            "MSPointerUp", this.onDocumentPointerUp)
                    }; b.prototype.destroy = function () { this.batchMSEvents(d); e.prototype.destroy.call(this) }; b.prototype.init = function (d, b) { e.prototype.init.call(this, d, b); this.hasZoom && g(d.container, { "-ms-touch-action": "none", "touch-action": "none" }) }; b.prototype.onContainerPointerDown = function (d) { C(d, "onContainerTouchStart", "touchstart", function (d) { u[d.pointerId] = { pageX: d.pageX, pageY: d.pageY, target: d.currentTarget } }) }; b.prototype.onContainerPointerMove = function (d) {
                        C(d, "onContainerTouchMove",
                            "touchmove", function (d) { u[d.pointerId] = { pageX: d.pageX, pageY: d.pageY }; u[d.pointerId].target || (u[d.pointerId].target = d.currentTarget) })
                    }; b.prototype.onDocumentPointerUp = function (d) { C(d, "onDocumentTouchEnd", "touchend", function (d) { delete u[d.pointerId] }) }; b.prototype.setDOMEvents = function () { e.prototype.setDOMEvents.call(this); (this.hasZoom || this.followTouchMove) && this.batchMSEvents(l) }; return b
                }(f)
            }); J(b, "Core/Series/Point.js", [b["Core/Renderer/HTML/AST.js"], b["Core/Animation/AnimationUtilities.js"],
            b["Core/FormatUtilities.js"], b["Core/Globals.js"], b["Core/Options.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A) {
                var t = f.animObject, r = D.format, p = C.defaultOptions, l = A.addEvent, g = A.defined, e = A.erase, d = A.extend, u = A.fireEvent, H = A.getNestedProperty, B = A.isArray, K = A.isFunction, F = A.isNumber, w = A.isObject, z = A.merge, q = A.objectEach, m = A.pick, c = A.syncTimeout, n = A.removeEvent, a = A.uniqueKey; ""; f = function () {
                    function k() {
                    this.colorIndex = this.category = void 0; this.formatPrefix = "point"; this.id = void 0; this.isNull = !1;
                        this.percentage = this.options = this.name = void 0; this.selected = !1; this.total = this.series = void 0; this.visible = !0; this.x = void 0
                    } k.prototype.animateBeforeDestroy = function () { var a = this, c = { x: a.startXPos, opacity: 0 }, e, k = a.getGraphicalProps(); k.singular.forEach(function (d) { e = "dataLabel" === d; a[d] = a[d].animate(e ? { x: a[d].startXPos, y: a[d].startYPos, opacity: 0 } : c) }); k.plural.forEach(function (c) { a[c].forEach(function (c) { c.element && c.animate(d({ x: a.startXPos }, c.startYPos ? { x: c.startXPos, y: c.startYPos } : {})) }) }) }; k.prototype.applyOptions =
                        function (a, c) {
                            var h = this.series, e = h.options.pointValKey || h.pointValKey; a = k.prototype.optionsToObject.call(this, a); d(this, a); this.options = this.options ? d(this.options, a) : a; a.group && delete this.group; a.dataLabels && delete this.dataLabels; e && (this.y = k.prototype.getNestedProperty.call(this, e)); this.formatPrefix = (this.isNull = m(this.isValid && !this.isValid(), null === this.x || !F(this.y))) ? "null" : "point"; this.selected && (this.state = "select"); "name" in this && "undefined" === typeof c && h.xAxis && h.xAxis.hasNames && (this.x =
                                h.xAxis.nameToX(this)); "undefined" === typeof this.x && h && (this.x = "undefined" === typeof c ? h.autoIncrement(this) : c); return this
                        }; k.prototype.destroy = function () {
                            function a() { if (d.graphic || d.dataLabel || d.dataLabels) n(d), d.destroyElements(); for (l in d) d[l] = null } var d = this, k = d.series, b = k.chart; k = k.options.dataSorting; var g = b.hoverPoints, m = t(d.series.chart.renderer.globalAnimation), l; d.legendItem && b.legend.destroyItem(d); g && (d.setState(), e(g, d), g.length || (b.hoverPoints = null)); if (d === b.hoverPoint) d.onMouseOut();
                            k && k.enabled ? (this.animateBeforeDestroy(), c(a, m.duration)) : a(); b.pointCount--
                        }; k.prototype.destroyElements = function (a) { var c = this; a = c.getGraphicalProps(a); a.singular.forEach(function (a) { c[a] = c[a].destroy() }); a.plural.forEach(function (a) { c[a].forEach(function (a) { a.element && a.destroy() }); delete c[a] }) }; k.prototype.firePointEvent = function (a, c, d) {
                            var h = this, e = this.series.options; (e.point.events[a] || h.options && h.options.events && h.options.events[a]) && h.importEvents(); "click" === a && e.allowPointSelect && (d =
                                function (a) { h.select && h.select(null, a.ctrlKey || a.metaKey || a.shiftKey) }); u(h, a, c, d)
                        }; k.prototype.getClassName = function () { return "highcharts-point" + (this.selected ? " highcharts-point-select" : "") + (this.negative ? " highcharts-negative" : "") + (this.isNull ? " highcharts-null-point" : "") + ("undefined" !== typeof this.colorIndex ? " highcharts-color-" + this.colorIndex : "") + (this.options.className ? " " + this.options.className : "") + (this.zone && this.zone.className ? " " + this.zone.className.replace("highcharts-negative", "") : "") };
                    k.prototype.getGraphicalProps = function (a) { var c = this, d = [], h, e = { singular: [], plural: [] }; a = a || { graphic: 1, dataLabel: 1 }; a.graphic && d.push("graphic", "upperGraphic", "shadowGroup"); a.dataLabel && d.push("dataLabel", "dataLabelUpper", "connector"); for (h = d.length; h--;) { var k = d[h]; c[k] && e.singular.push(k) } ["dataLabel", "connector"].forEach(function (d) { var h = d + "s"; a[d] && c[h] && e.plural.push(h) }); return e }; k.prototype.getLabelConfig = function () {
                        return {
                            x: this.category, y: this.y, color: this.color, colorIndex: this.colorIndex,
                            key: this.name || this.category, series: this.series, point: this, percentage: this.percentage, total: this.total || this.stackTotal
                        }
                    }; k.prototype.getNestedProperty = function (a) { if (a) return 0 === a.indexOf("custom.") ? H(a, this.options) : this[a] }; k.prototype.getZone = function () { var a = this.series, c = a.zones; a = a.zoneAxis || "y"; var d = 0, e; for (e = c[d]; this[a] >= e.value;)e = c[++d]; this.nonZonedColor || (this.nonZonedColor = this.color); this.color = e && e.color && !this.options.color ? e.color : this.nonZonedColor; return e }; k.prototype.hasNewShapeType =
                        function () { return (this.graphic && (this.graphic.symbolName || this.graphic.element.nodeName)) !== this.shapeType }; k.prototype.init = function (c, d, e) { this.series = c; this.applyOptions(d, e); this.id = g(this.id) ? this.id : a(); this.resolveColor(); c.chart.pointCount++; u(this, "afterInit"); return this }; k.prototype.optionsToObject = function (a) {
                            var c = {}, d = this.series, h = d.options.keys, e = h || d.pointArrayMap || ["y"], b = e.length, g = 0, m = 0; if (F(a) || null === a) c[e[0]] = a; else if (B(a)) for (!h && a.length > b && (d = typeof a[0], "string" === d ? c.name =
                                a[0] : "number" === d && (c.x = a[0]), g++); m < b;)h && "undefined" === typeof a[g] || (0 < e[m].indexOf(".") ? k.prototype.setNestedProperty(c, a[g], e[m]) : c[e[m]] = a[g]), g++ , m++; else "object" === typeof a && (c = a, a.dataLabels && (d._hasPointLabels = !0), a.marker && (d._hasPointMarkers = !0)); return c
                        }; k.prototype.resolveColor = function () {
                            var a = this.series; var c = a.chart.options.chart.colorCount; var d = a.chart.styledMode; delete this.nonZonedColor; if (a.options.colorByPoint) {
                                if (!d) {
                                    c = a.options.colors || a.chart.options.colors; var e = c[a.colorCounter];
                                    c = c.length
                                } d = a.colorCounter; a.colorCounter++; a.colorCounter === c && (a.colorCounter = 0)
                            } else d || (e = a.color), d = a.colorIndex; this.colorIndex = m(this.options.colorIndex, d); this.color = m(this.options.color, e)
                        }; k.prototype.setNestedProperty = function (a, c, d) { d.split(".").reduce(function (a, d, h, e) { a[d] = e.length - 1 === h ? c : w(a[d], !0) ? a[d] : {}; return a[d] }, a); return a }; k.prototype.tooltipFormatter = function (a) {
                            var c = this.series, d = c.tooltipOptions, h = m(d.valueDecimals, ""), e = d.valuePrefix || "", k = d.valueSuffix || ""; c.chart.styledMode &&
                                (a = c.chart.tooltip.styledModeFormat(a)); (c.pointArrayMap || ["y"]).forEach(function (c) { c = "{point." + c; if (e || k) a = a.replace(RegExp(c + "}", "g"), e + c + "}" + k); a = a.replace(RegExp(c + "}", "g"), c + ":,." + h + "f}") }); return r(a, { point: this, series: this.series }, c.chart)
                        }; k.prototype.update = function (a, c, d, e) {
                            function h() {
                                k.applyOptions(a); var h = g && k.hasDummyGraphic; h = null === k.y ? !h : h; g && h && (k.graphic = g.destroy(), delete k.hasDummyGraphic); w(a, !0) && (g && g.element && a && a.marker && "undefined" !== typeof a.marker.symbol && (k.graphic =
                                    g.destroy()), a && a.dataLabels && k.dataLabel && (k.dataLabel = k.dataLabel.destroy()), k.connector && (k.connector = k.connector.destroy())); n = k.index; b.updateParallelArrays(k, n); f.data[n] = w(f.data[n], !0) || w(a, !0) ? k.options : m(a, f.data[n]); b.isDirty = b.isDirtyData = !0; !b.fixedBox && b.hasCartesianSeries && (l.isDirtyBox = !0); "point" === f.legendType && (l.isDirtyLegend = !0); c && l.redraw(d)
                            } var k = this, b = k.series, g = k.graphic, n, l = b.chart, f = b.options; c = m(c, !0); !1 === e ? h() : k.firePointEvent("update", { options: a }, h)
                        }; k.prototype.remove =
                            function (a, c) { this.series.removePoint(this.series.data.indexOf(this), a, c) }; k.prototype.select = function (a, c) {
                                var d = this, h = d.series, e = h.chart; this.selectedStaging = a = m(a, !d.selected); d.firePointEvent(a ? "select" : "unselect", { accumulate: c }, function () {
                                d.selected = d.options.selected = a; h.options.data[h.data.indexOf(d)] = d.options; d.setState(a && "select"); c || e.getSelectedPoints().forEach(function (a) {
                                    var c = a.series; a.selected && a !== d && (a.selected = a.options.selected = !1, c.options.data[c.data.indexOf(a)] = a.options,
                                        a.setState(e.hoverPoints && c.options.inactiveOtherPoints ? "inactive" : ""), a.firePointEvent("unselect"))
                                })
                                }); delete this.selectedStaging
                            }; k.prototype.onMouseOver = function (a) { var c = this.series.chart, d = c.pointer; a = a ? d.normalize(a) : d.getChartCoordinatesFromPoint(this, c.inverted); d.runPointActions(a, this) }; k.prototype.onMouseOut = function () {
                                var a = this.series.chart; this.firePointEvent("mouseOut"); this.series.options.inactiveOtherPoints || (a.hoverPoints || []).forEach(function (a) { a.setState() }); a.hoverPoints = a.hoverPoint =
                                    null
                            }; k.prototype.importEvents = function () { if (!this.hasImportedEvents) { var a = this, c = z(a.series.options.point, a.options).events; a.events = c; q(c, function (c, d) { K(c) && l(a, d, c) }); this.hasImportedEvents = !0 } }; k.prototype.setState = function (a, c) {
                                var h = this.series, e = this.state, k = h.options.states[a || "normal"] || {}, g = p.plotOptions[h.type].marker && h.options.marker, n = g && !1 === g.enabled, l = g && g.states && g.states[a || "normal"] || {}, f = !1 === l.enabled, v = h.stateMarkerGraphic, q = this.marker || {}, w = h.chart, z = h.halo, r, P = g && h.markerAttribs;
                                a = a || ""; if (!(a === this.state && !c || this.selected && "select" !== a || !1 === k.enabled || a && (f || n && !1 === l.enabled) || a && q.states && q.states[a] && !1 === q.states[a].enabled)) {
                                this.state = a; P && (r = h.markerAttribs(this, a)); if (this.graphic && !this.hasDummyGraphic) {
                                    e && this.graphic.removeClass("highcharts-point-" + e); a && this.graphic.addClass("highcharts-point-" + a); if (!w.styledMode) {
                                        var t = h.pointAttribs(this, a); var N = m(w.options.chart.animation, k.animation); h.options.inactiveOtherPoints && F(t.opacity) && ((this.dataLabels || []).forEach(function (a) {
                                            a &&
                                            a.animate({ opacity: t.opacity }, N)
                                        }), this.connector && this.connector.animate({ opacity: t.opacity }, N)); this.graphic.animate(t, N)
                                    } r && this.graphic.animate(r, m(w.options.chart.animation, l.animation, g.animation)); v && v.hide()
                                } else {
                                    if (a && l) { e = q.symbol || h.symbol; v && v.currentSymbol !== e && (v = v.destroy()); if (r) if (v) v[c ? "animate" : "attr"]({ x: r.x, y: r.y }); else e && (h.stateMarkerGraphic = v = w.renderer.symbol(e, r.x, r.y, r.width, r.height).add(h.markerGroup), v.currentSymbol = e); !w.styledMode && v && v.attr(h.pointAttribs(this, a)) } v &&
                                        (v[a && this.isInside ? "show" : "hide"](), v.element.point = this)
                                } k = k.halo; r = (v = this.graphic || v) && v.visibility || "inherit"; k && k.size && v && "hidden" !== r && !this.isCluster ? (z || (h.halo = z = w.renderer.path().add(v.parentGroup)), z.show()[c ? "animate" : "attr"]({ d: this.haloPath(k.size) }), z.attr({ "class": "highcharts-halo highcharts-color-" + m(this.colorIndex, h.colorIndex) + (this.className ? " " + this.className : ""), visibility: r, zIndex: -1 }), z.point = this, w.styledMode || z.attr(d({ fill: this.color || h.color, "fill-opacity": k.opacity },
                                    b.filterUserAttributes(k.attributes || {})))) : z && z.point && z.point.haloPath && z.animate({ d: z.point.haloPath(0) }, null, z.hide); u(this, "afterSetState", { state: a })
                                }
                            }; k.prototype.haloPath = function (a) { return this.series.chart.renderer.symbols.circle(Math.floor(this.plotX) - a, this.plotY - a, 2 * a, 2 * a) }; return k
                }(); return y.Point = f
            }); J(b, "Core/Legend.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/FormatUtilities.js"], b["Core/Globals.js"], b["Core/Series/Point.js"], b["Core/Utilities.js"]], function (b, f, D, y, C) {
                var B =
                    b.animObject, t = b.setAnimation, r = f.format; b = D.isFirefox; var p = D.marginNames; f = D.win; var l = C.addEvent, g = C.createElement, e = C.css, d = C.defined, u = C.discardElement, H = C.find, I = C.fireEvent, K = C.isNumber, F = C.merge, w = C.pick, z = C.relativeLength, q = C.stableSort, m = C.syncTimeout; C = C.wrap; var c = function () {
                        function c(a, c) {
                        this.allItems = []; this.contentGroup = this.box = void 0; this.display = !1; this.group = void 0; this.offsetWidth = this.maxLegendWidth = this.maxItemWidth = this.legendWidth = this.legendHeight = this.lastLineHeight = this.lastItemY =
                            this.itemY = this.itemX = this.itemMarginTop = this.itemMarginBottom = this.itemHeight = this.initialItemY = 0; this.options = {}; this.padding = 0; this.pages = []; this.proximate = !1; this.scrollGroup = void 0; this.widthOption = this.totalItemWidth = this.titleHeight = this.symbolWidth = this.symbolHeight = 0; this.chart = a; this.init(a, c)
                        } c.prototype.init = function (a, c) {
                        this.chart = a; this.setOptions(c); c.enabled && (this.render(), l(this.chart, "endResize", function () { this.legend.positionCheckboxes() }), this.proximate ? this.unchartrender = l(this.chart,
                            "render", function () { this.legend.proximatePositions(); this.legend.positionItems() }) : this.unchartrender && this.unchartrender())
                        }; c.prototype.setOptions = function (a) {
                            var c = w(a.padding, 8); this.options = a; this.chart.styledMode || (this.itemStyle = a.itemStyle, this.itemHiddenStyle = F(this.itemStyle, a.itemHiddenStyle)); this.itemMarginTop = a.itemMarginTop || 0; this.itemMarginBottom = a.itemMarginBottom || 0; this.padding = c; this.initialItemY = c - 5; this.symbolWidth = w(a.symbolWidth, 16); this.pages = []; this.proximate = "proximate" ===
                                a.layout && !this.chart.inverted; this.baseline = void 0
                        }; c.prototype.update = function (a, c) { var d = this.chart; this.setOptions(F(!0, this.options, a)); this.destroy(); d.isDirtyLegend = d.isDirtyBox = !0; w(c, !0) && d.redraw(); I(this, "afterUpdate") }; c.prototype.colorizeItem = function (a, c) {
                        a.legendGroup[c ? "removeClass" : "addClass"]("highcharts-legend-item-hidden"); if (!this.chart.styledMode) {
                            var d = this.options, e = a.legendItem, k = a.legendLine, b = a.legendSymbol, g = this.itemHiddenStyle.color; d = c ? d.itemStyle.color : g; var m = c ? a.color ||
                                g : g, l = a.options && a.options.marker, n = { fill: m }; e && e.css({ fill: d, color: d }); k && k.attr({ stroke: m }); b && (l && b.isMarker && (n = a.pointAttribs(), c || (n.stroke = n.fill = g)), b.attr(n))
                        } I(this, "afterColorizeItem", { item: a, visible: c })
                        }; c.prototype.positionItems = function () { this.allItems.forEach(this.positionItem, this); this.chart.isResizing || this.positionCheckboxes() }; c.prototype.positionItem = function (a) {
                            var c = this, e = this.options, b = e.symbolPadding, g = !e.rtl, m = a._legendItemPos; e = m[0]; m = m[1]; var l = a.checkbox, n = a.legendGroup;
                            n && n.element && (b = { translateX: g ? e : this.legendWidth - e - 2 * b - 4, translateY: m }, g = function () { I(c, "afterPositionItem", { item: a }) }, d(n.translateY) ? n.animate(b, void 0, g) : (n.attr(b), g())); l && (l.x = e, l.y = m)
                        }; c.prototype.destroyItem = function (a) { var c = a.checkbox;["legendItem", "legendLine", "legendSymbol", "legendGroup"].forEach(function (c) { a[c] && (a[c] = a[c].destroy()) }); c && u(a.checkbox) }; c.prototype.destroy = function () {
                            function a(a) { this[a] && (this[a] = this[a].destroy()) } this.getAllItems().forEach(function (c) {
                                ["legendItem",
                                    "legendGroup"].forEach(a, c)
                            }); "clipRect up down pager nav box title group".split(" ").forEach(a, this); this.display = null
                        }; c.prototype.positionCheckboxes = function () { var a = this.group && this.group.alignAttr, c = this.clipHeight || this.legendHeight, d = this.titleHeight; if (a) { var b = a.translateY; this.allItems.forEach(function (h) { var k = h.checkbox; if (k) { var g = b + d + k.y + (this.scrollOffset || 0) + 3; e(k, { left: a.translateX + h.checkboxOffset + k.x - 20 + "px", top: g + "px", display: this.proximate || g > b - 6 && g < b + c - 6 ? "" : "none" }) } }, this) } };
                        c.prototype.renderTitle = function () { var a = this.options, c = this.padding, d = a.title, e = 0; d.text && (this.title || (this.title = this.chart.renderer.label(d.text, c - 3, c - 4, null, null, null, a.useHTML, null, "legend-title").attr({ zIndex: 1 }), this.chart.styledMode || this.title.css(d.style), this.title.add(this.group)), d.width || this.title.css({ width: this.maxLegendWidth + "px" }), a = this.title.getBBox(), e = a.height, this.offsetWidth = a.width, this.contentGroup.attr({ translateY: e })); this.titleHeight = e }; c.prototype.setText = function (a) {
                            var c =
                                this.options; a.legendItem.attr({ text: c.labelFormat ? r(c.labelFormat, a, this.chart) : c.labelFormatter.call(a) })
                        }; c.prototype.renderItem = function (a) {
                            var c = this.chart, d = c.renderer, e = this.options, b = this.symbolWidth, g = e.symbolPadding || 0, m = this.itemStyle, n = this.itemHiddenStyle, l = "horizontal" === e.layout ? w(e.itemDistance, 20) : 0, f = !e.rtl, q = a.legendItem, p = !a.series, u = !p && a.series.drawLegendSymbol ? a.series : a, r = u.options, z = this.createCheckboxForItem && r && r.showCheckbox; r = b + g + l + (z ? 20 : 0); var t = e.useHTML, P = a.options.className;
                            q || (a.legendGroup = d.g("legend-item").addClass("highcharts-" + u.type + "-series highcharts-color-" + a.colorIndex + (P ? " " + P : "") + (p ? " highcharts-series-" + a.index : "")).attr({ zIndex: 1 }).add(this.scrollGroup), a.legendItem = q = d.text("", f ? b + g : -g, this.baseline || 0, t), c.styledMode || q.css(F(a.visible ? m : n)), q.attr({ align: f ? "left" : "right", zIndex: 2 }).add(a.legendGroup), this.baseline || (this.fontMetrics = d.fontMetrics(c.styledMode ? 12 : m.fontSize, q), this.baseline = this.fontMetrics.f + 3 + this.itemMarginTop, q.attr("y", this.baseline),
                                this.symbolHeight = e.symbolHeight || this.fontMetrics.f, e.squareSymbol && (this.symbolWidth = w(e.symbolWidth, Math.max(this.symbolHeight, 16)), r = this.symbolWidth + g + l + (z ? 20 : 0), f && q.attr("x", this.symbolWidth + g))), u.drawLegendSymbol(this, a), this.setItemEvents && this.setItemEvents(a, q, t)); z && !a.checkbox && this.createCheckboxForItem && this.createCheckboxForItem(a); this.colorizeItem(a, a.visible); !c.styledMode && m.width || q.css({ width: (e.itemWidth || this.widthOption || c.spacingBox.width) - r + "px" }); this.setText(a); c = q.getBBox();
                            a.itemWidth = a.checkboxOffset = e.itemWidth || a.legendItemWidth || c.width + r; this.maxItemWidth = Math.max(this.maxItemWidth, a.itemWidth); this.totalItemWidth += a.itemWidth; this.itemHeight = a.itemHeight = Math.round(a.legendItemHeight || c.height || this.symbolHeight)
                        }; c.prototype.layoutItem = function (a) {
                            var c = this.options, d = this.padding, e = "horizontal" === c.layout, b = a.itemHeight, g = this.itemMarginBottom, m = this.itemMarginTop, l = e ? w(c.itemDistance, 20) : 0, n = this.maxLegendWidth; c = c.alignColumns && this.totalItemWidth > n ? this.maxItemWidth :
                                a.itemWidth; e && this.itemX - d + c > n && (this.itemX = d, this.lastLineHeight && (this.itemY += m + this.lastLineHeight + g), this.lastLineHeight = 0); this.lastItemY = m + this.itemY + g; this.lastLineHeight = Math.max(b, this.lastLineHeight); a._legendItemPos = [this.itemX, this.itemY]; e ? this.itemX += c : (this.itemY += m + b + g, this.lastLineHeight = b); this.offsetWidth = this.widthOption || Math.max((e ? this.itemX - d - (a.checkbox ? 0 : l) : c) + d, this.offsetWidth)
                        }; c.prototype.getAllItems = function () {
                            var a = []; this.chart.series.forEach(function (c) {
                                var e = c &&
                                    c.options; c && w(e.showInLegend, d(e.linkedTo) ? !1 : void 0, !0) && (a = a.concat(c.legendItems || ("point" === e.legendType ? c.data : c)))
                            }); I(this, "afterGetAllItems", { allItems: a }); return a
                        }; c.prototype.getAlignment = function () { var a = this.options; return this.proximate ? a.align.charAt(0) + "tv" : a.floating ? "" : a.align.charAt(0) + a.verticalAlign.charAt(0) + a.layout.charAt(0) }; c.prototype.adjustMargins = function (a, c) {
                            var e = this.chart, b = this.options, k = this.getAlignment(); k && [/(lth|ct|rth)/, /(rtv|rm|rbv)/, /(rbh|cb|lbh)/, /(lbv|lm|ltv)/].forEach(function (h,
                                g) { h.test(k) && !d(a[g]) && (e[p[g]] = Math.max(e[p[g]], e.legend[(g + 1) % 2 ? "legendHeight" : "legendWidth"] + [1, -1, -1, 1][g] * b[g % 2 ? "x" : "y"] + w(b.margin, 12) + c[g] + (e.titleOffset[g] || 0))) })
                        }; c.prototype.proximatePositions = function () {
                            var a = this.chart, c = [], d = "left" === this.options.align; this.allItems.forEach(function (e) {
                                var h; var b = d; if (e.yAxis) {
                                    e.xAxis.options.reversed && (b = !b); e.points && (h = H(b ? e.points : e.points.slice(0).reverse(), function (a) { return K(a.plotY) })); b = this.itemMarginTop + e.legendItem.getBBox().height + this.itemMarginBottom;
                                    var k = e.yAxis.top - a.plotTop; e.visible ? (h = h ? h.plotY : e.yAxis.height, h += k - .3 * b) : h = k + e.yAxis.height; c.push({ target: h, size: b, item: e })
                                }
                            }, this); D.distribute(c, a.plotHeight); c.forEach(function (c) { c.item._legendItemPos[1] = a.plotTop - a.spacing[0] + c.pos })
                        }; c.prototype.render = function () {
                            var a = this.chart, c = a.renderer, d = this.group, e = this.box, b = this.options, g = this.padding; this.itemX = g; this.itemY = this.initialItemY; this.lastItemY = this.offsetWidth = 0; this.widthOption = z(b.width, a.spacingBox.width - g); var m = a.spacingBox.width -
                                2 * g - b.x; -1 < ["rm", "lm"].indexOf(this.getAlignment().substring(0, 2)) && (m /= 2); this.maxLegendWidth = this.widthOption || m; d || (this.group = d = c.g("legend").attr({ zIndex: 7 }).add(), this.contentGroup = c.g().attr({ zIndex: 1 }).add(d), this.scrollGroup = c.g().add(this.contentGroup)); this.renderTitle(); var n = this.getAllItems(); q(n, function (a, c) { return (a.options && a.options.legendIndex || 0) - (c.options && c.options.legendIndex || 0) }); b.reversed && n.reverse(); this.allItems = n; this.display = m = !!n.length; this.itemHeight = this.totalItemWidth =
                                    this.maxItemWidth = this.lastLineHeight = 0; n.forEach(this.renderItem, this); n.forEach(this.layoutItem, this); n = (this.widthOption || this.offsetWidth) + g; var l = this.lastItemY + this.lastLineHeight + this.titleHeight; l = this.handleOverflow(l); l += g; e || (this.box = e = c.rect().addClass("highcharts-legend-box").attr({ r: b.borderRadius }).add(d), e.isNew = !0); a.styledMode || e.attr({ stroke: b.borderColor, "stroke-width": b.borderWidth || 0, fill: b.backgroundColor || "none" }).shadow(b.shadow); 0 < n && 0 < l && (e[e.isNew ? "attr" : "animate"](e.crisp.call({},
                                        { x: 0, y: 0, width: n, height: l }, e.strokeWidth())), e.isNew = !1); e[m ? "show" : "hide"](); a.styledMode && "none" === d.getStyle("display") && (n = l = 0); this.legendWidth = n; this.legendHeight = l; m && this.align(); this.proximate || this.positionItems(); I(this, "afterRender")
                        }; c.prototype.align = function (a) {
                        void 0 === a && (a = this.chart.spacingBox); var c = this.chart, d = this.options, e = a.y; /(lth|ct|rth)/.test(this.getAlignment()) && 0 < c.titleOffset[0] ? e += c.titleOffset[0] : /(lbh|cb|rbh)/.test(this.getAlignment()) && 0 < c.titleOffset[2] && (e -= c.titleOffset[2]);
                            e !== a.y && (a = F(a, { y: e })); this.group.align(F(d, { width: this.legendWidth, height: this.legendHeight, verticalAlign: this.proximate ? "top" : d.verticalAlign }), !0, a)
                        }; c.prototype.handleOverflow = function (a) {
                            var c = this, d = this.chart, e = d.renderer, b = this.options, g = b.y, m = this.padding; g = d.spacingBox.height + ("top" === b.verticalAlign ? -g : g) - m; var n = b.maxHeight, l, f = this.clipRect, q = b.navigation, p = w(q.animation, !0), u = q.arrowSize || 12, r = this.nav, z = this.pages, t, P = this.allItems, H = function (a) {
                                "number" === typeof a ? f.attr({ height: a }) :
                                f && (c.clipRect = f.destroy(), c.contentGroup.clip()); c.contentGroup.div && (c.contentGroup.div.style.clip = a ? "rect(" + m + "px,9999px," + (m + a) + "px,0)" : "auto")
                            }, N = function (a) { c[a] = e.circle(0, 0, 1.3 * u).translate(u / 2, u / 2).add(r); d.styledMode || c[a].attr("fill", "rgba(0,0,0,0.0001)"); return c[a] }; "horizontal" !== b.layout || "middle" === b.verticalAlign || b.floating || (g /= 2); n && (g = Math.min(g, n)); z.length = 0; a && 0 < g && a > g && !1 !== q.enabled ? (this.clipHeight = l = Math.max(g - 20 - this.titleHeight - m, 0), this.currentPage = w(this.currentPage,
                                1), this.fullHeight = a, P.forEach(function (a, c) { var d = a._legendItemPos[1], e = Math.round(a.legendItem.getBBox().height), h = z.length; if (!h || d - z[h - 1] > l && (t || d) !== z[h - 1]) z.push(t || d), h++; a.pageIx = h - 1; t && (P[c - 1].pageIx = h - 1); c === P.length - 1 && d + e - z[h - 1] > l && d !== t && (z.push(d), a.pageIx = h); d !== t && (t = d) }), f || (f = c.clipRect = e.clipRect(0, m, 9999, 0), c.contentGroup.clip(f)), H(l), r || (this.nav = r = e.g().attr({ zIndex: 1 }).add(this.group), this.up = e.symbol("triangle", 0, 0, u, u).add(r), N("upTracker").on("click", function () {
                                    c.scroll(-1,
                                        p)
                                }), this.pager = e.text("", 15, 10).addClass("highcharts-legend-navigation"), d.styledMode || this.pager.css(q.style), this.pager.add(r), this.down = e.symbol("triangle-down", 0, 0, u, u).add(r), N("downTracker").on("click", function () { c.scroll(1, p) })), c.scroll(0), a = g) : r && (H(), this.nav = r.destroy(), this.scrollGroup.attr({ translateY: 1 }), this.clipHeight = 0); return a
                        }; c.prototype.scroll = function (a, c) {
                            var d = this, e = this.chart, b = this.pages, k = b.length, g = this.currentPage + a; a = this.clipHeight; var n = this.options.navigation, l =
                                this.pager, f = this.padding; g > k && (g = k); 0 < g && ("undefined" !== typeof c && t(c, e), this.nav.attr({ translateX: f, translateY: a + this.padding + 7 + this.titleHeight, visibility: "visible" }), [this.up, this.upTracker].forEach(function (a) { a.attr({ "class": 1 === g ? "highcharts-legend-nav-inactive" : "highcharts-legend-nav-active" }) }), l.attr({ text: g + "/" + k }), [this.down, this.downTracker].forEach(function (a) { a.attr({ x: 18 + this.pager.getBBox().width, "class": g === k ? "highcharts-legend-nav-inactive" : "highcharts-legend-nav-active" }) }, this),
                                    e.styledMode || (this.up.attr({ fill: 1 === g ? n.inactiveColor : n.activeColor }), this.upTracker.css({ cursor: 1 === g ? "default" : "pointer" }), this.down.attr({ fill: g === k ? n.inactiveColor : n.activeColor }), this.downTracker.css({ cursor: g === k ? "default" : "pointer" })), this.scrollOffset = -b[g - 1] + this.initialItemY, this.scrollGroup.animate({ translateY: this.scrollOffset }), this.currentPage = g, this.positionCheckboxes(), c = B(w(c, e.renderer.globalAnimation, !0)), m(function () { I(d, "afterScroll", { currentPage: g }) }, c.duration))
                        }; c.prototype.setItemEvents =
                            function (a, c, d) {
                                var e = this, h = e.chart.renderer.boxWrapper, b = a instanceof y, k = "highcharts-legend-" + (b ? "point" : "series") + "-active", g = e.chart.styledMode; (d ? [c, a.legendSymbol] : [a.legendGroup]).forEach(function (d) {
                                    if (d) d.on("mouseover", function () { a.visible && e.allItems.forEach(function (c) { a !== c && c.setState("inactive", !b) }); a.setState("hover"); a.visible && h.addClass(k); g || c.css(e.options.itemHoverStyle) }).on("mouseout", function () {
                                        e.chart.styledMode || c.css(F(a.visible ? e.itemStyle : e.itemHiddenStyle)); e.allItems.forEach(function (c) {
                                        a !==
                                            c && c.setState("", !b)
                                        }); h.removeClass(k); a.setState()
                                    }).on("click", function (c) { var d = function () { a.setVisible && a.setVisible(); e.allItems.forEach(function (c) { a !== c && c.setState(a.visible ? "inactive" : "", !b) }) }; h.removeClass(k); c = { browserEvent: c }; a.firePointEvent ? a.firePointEvent("legendItemClick", c, d) : I(a, "legendItemClick", c, d) })
                                })
                            }; c.prototype.createCheckboxForItem = function (a) {
                            a.checkbox = g("input", { type: "checkbox", className: "highcharts-legend-checkbox", checked: a.selected, defaultChecked: a.selected }, this.options.itemCheckboxStyle,
                                this.chart.container); l(a.checkbox, "click", function (c) { I(a.series || a, "checkboxClick", { checked: c.target.checked, item: a }, function () { a.select() }) })
                            }; return c
                    }(); (/Trident\/7\.0/.test(f.navigator && f.navigator.userAgent) || b) && C(c.prototype, "positionItem", function (c, a) { var d = this, e = function () { a._legendItemPos && c.call(d, a) }; e(); d.bubbleLegend || setTimeout(e) }); D.Legend = c; return D.Legend
            }); J(b, "Core/Series/SeriesRegistry.js", [b["Core/Globals.js"], b["Core/Options.js"], b["Core/Series/Point.js"], b["Core/Utilities.js"]],
                function (b, f, D, y) {
                    var B = f.defaultOptions, A = y.error, t = y.extendClass, r = y.merge, p; (function (l) {
                        function g(e, d) { var b = B.plotOptions || {}, g = d.defaultOptions; d.prototype.pointClass || (d.prototype.pointClass = D); d.prototype.type = e; g && (b[e] = g); l.seriesTypes[e] = d } l.seriesTypes = b.seriesTypes; l.getSeries = function (e, d) { void 0 === d && (d = {}); var b = e.options.chart; b = d.type || b.type || b.defaultSeriesType || ""; var g = l.seriesTypes[b]; l || A(17, !0, e, { missingModuleFor: b }); b = new g; "function" === typeof b.init && b.init(e, d); return b };
                        l.registerSeriesType = g; l.seriesType = function (e, d, b, f, p) { var u = B.plotOptions || {}; d = d || ""; u[e] = r(u[d], b); g(e, t(l.seriesTypes[d] || function () { }, f)); l.seriesTypes[e].prototype.type = e; p && (l.seriesTypes[e].prototype.pointClass = t(D, p)); return l.seriesTypes[e] }
                    })(p || (p = {})); b.seriesType = p.seriesType; return p
                }); J(b, "Core/Chart/Chart.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/Axis/Axis.js"], b["Core/FormatUtilities.js"], b["Core/Globals.js"], b["Core/Legend.js"], b["Core/MSPointer.js"], b["Core/Options.js"],
                b["Core/Color/Palette.js"], b["Core/Pointer.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Time.js"], b["Core/Utilities.js"], b["Core/Renderer/HTML/AST.js"]], function (b, f, D, y, C, A, t, r, p, l, g, e, d) {
                    var u = b.animate, H = b.animObject, B = b.setAnimation, K = D.numberFormat, F = y.charts, w = y.doc, z = y.win, q = t.defaultOptions, m = t.defaultTime, c = l.seriesTypes, n = e.addEvent, a = e.attr, k = e.cleanRecursively, h = e.createElement, v = e.css, E = e.defined, L = e.discardElement, M = e.erase, S = e.error, Y = e.extend, R = e.find, O = e.fireEvent, G = e.getStyle,
                    x = e.isArray, J = e.isFunction, Z = e.isNumber, ea = e.isObject, P = e.isString, Q = e.merge, N = e.objectEach, T = e.pick, aa = e.pInt, V = e.relativeLength, W = e.removeEvent, U = e.splat, da = e.syncTimeout, ba = e.uniqueKey, fa = y.marginNames, ca = function () {
                        function b(a, c, d) {
                        this.series = this.renderTo = this.renderer = this.pointer = this.pointCount = this.plotWidth = this.plotTop = this.plotLeft = this.plotHeight = this.plotBox = this.options = this.numberFormatter = this.margin = this.legend = this.labelCollectors = this.isResizing = this.index = this.container = this.colorCounter =
                            this.clipBox = this.chartWidth = this.chartHeight = this.bounds = this.axisOffset = this.axes = void 0; this.sharedClips = {}; this.yAxis = this.xAxis = this.userOptions = this.titleOffset = this.time = this.symbolCounter = this.spacingBox = this.spacing = void 0; this.getArgs(a, c, d)
                        } b.prototype.getArgs = function (a, c, d) { P(a) || a.nodeName ? (this.renderTo = a, this.init(c, d)) : this.init(a, c) }; b.prototype.init = function (a, c) {
                            var d = a.plotOptions || {}; O(this, "init", { args: arguments }, function () {
                                var e = Q(q, a), h = e.chart; N(e.plotOptions, function (a,
                                    c) { ea(a) && (a.tooltip = d[c] && Q(d[c].tooltip) || void 0) }); e.tooltip.userOptions = a.chart && a.chart.forExport && a.tooltip.userOptions || a.tooltip; this.userOptions = a; var b = h.events; this.margin = []; this.spacing = []; this.bounds = { h: {}, v: {} }; this.labelCollectors = []; this.callback = c; this.isResizing = 0; this.options = e; this.axes = []; this.series = []; this.time = a.time && Object.keys(a.time).length ? new g(a.time) : y.time; this.numberFormatter = h.numberFormatter || K; this.styledMode = h.styledMode; this.hasCartesianSeries = h.showAxes; var k =
                                        this; k.index = F.length; F.push(k); y.chartCount++; b && N(b, function (a, c) { J(a) && n(k, c, a) }); k.xAxis = []; k.yAxis = []; k.pointCount = k.colorCounter = k.symbolCounter = 0; O(k, "afterInit"); k.firstRender()
                            })
                        }; b.prototype.initSeries = function (a) { var d = this.options.chart; d = a.type || d.type || d.defaultSeriesType; var e = c[d]; e || S(17, !0, this, { missingModuleFor: d }); d = new e; "function" === typeof d.init && d.init(this, a); return d }; b.prototype.setSeriesData = function () {
                            this.getSeriesOrderByLinks().forEach(function (a) {
                            a.points || a.data ||
                                !a.enabledDataSorting || a.setData(a.options.data, !1)
                            })
                        }; b.prototype.getSeriesOrderByLinks = function () { return this.series.concat().sort(function (a, c) { return a.linkedSeries.length || c.linkedSeries.length ? c.linkedSeries.length - a.linkedSeries.length : 0 }) }; b.prototype.orderSeries = function (a) { var c = this.series; for (a = a || 0; a < c.length; a++)c[a] && (c[a].index = a, c[a].name = c[a].getName()) }; b.prototype.isInsidePlot = function (a, c, d) {
                        void 0 === d && (d = {}); var e = this.inverted, h = this.plotBox, b = this.plotLeft, k = this.plotTop,
                            g = this.scrollablePlotBox, m = this.scrollingContainer; m = void 0 === m ? { scrollLeft: 0, scrollTop: 0 } : m; var n = m.scrollLeft; m = m.scrollTop; var l = d.series; h = d.visiblePlotOnly && g || h; g = d.inverted ? c : a; c = d.inverted ? a : c; a = { x: g, y: c, isInsidePlot: !0 }; if (!d.ignoreX) { var f = l && (e ? l.yAxis : l.xAxis) || { pos: b, len: Infinity }; g = d.paneCoordinates ? f.pos + g : b + g; g >= Math.max(n + b, f.pos) && g <= Math.min(n + b + h.width, f.pos + f.len) || (a.isInsidePlot = !1) } !d.ignoreY && a.isInsidePlot && (e = l && (e ? l.xAxis : l.yAxis) || { pos: k, len: Infinity }, d = d.paneCoordinates ?
                                e.pos + c : k + c, d >= Math.max(m + k, e.pos) && d <= Math.min(m + k + h.height, e.pos + e.len) || (a.isInsidePlot = !1)); O(this, "afterIsInsidePlot", a); return a.isInsidePlot
                        }; b.prototype.redraw = function (a) {
                            O(this, "beforeRedraw"); var c = this.hasCartesianSeries ? this.axes : this.colorAxis || [], d = this.series, e = this.pointer, h = this.legend, b = this.userOptions.legend, k = this.isDirtyLegend, g = this.isDirtyBox, m = this.renderer, l = m.isHidden(), n = []; this.setResponsive && this.setResponsive(!1); B(this.hasRendered ? a : !1, this); l && this.temporaryDisplay();
                            this.layOutTitles(); for (a = d.length; a--;) { var f = d[a]; if (f.options.stacking || f.options.centerInCategory) { var q = !0; if (f.isDirty) { var v = !0; break } } } if (v) for (a = d.length; a--;)f = d[a], f.options.stacking && (f.isDirty = !0); d.forEach(function (a) { a.isDirty && ("point" === a.options.legendType ? ("function" === typeof a.updateTotals && a.updateTotals(), k = !0) : b && (b.labelFormatter || b.labelFormat) && (k = !0)); a.isDirtyData && O(a, "updatedData") }); k && h && h.options.enabled && (h.render(), this.isDirtyLegend = !1); q && this.getStacks(); c.forEach(function (a) {
                                a.updateNames();
                                a.setScale()
                            }); this.getMargins(); c.forEach(function (a) { a.isDirty && (g = !0) }); c.forEach(function (a) { var c = a.min + "," + a.max; a.extKey !== c && (a.extKey = c, n.push(function () { O(a, "afterSetExtremes", Y(a.eventArgs, a.getExtremes())); delete a.eventArgs })); (g || q) && a.redraw() }); g && this.drawChartBox(); O(this, "predraw"); d.forEach(function (a) { (g || a.isDirty) && a.visible && a.redraw(); a.isDirtyData = !1 }); e && e.reset(!0); m.draw(); O(this, "redraw"); O(this, "render"); l && this.temporaryDisplay(!0); n.forEach(function (a) { a.call() })
                        };
                        b.prototype.get = function (a) { function c(c) { return c.id === a || c.options && c.options.id === a } var d = this.series, e; var h = R(this.axes, c) || R(this.series, c); for (e = 0; !h && e < d.length; e++)h = R(d[e].points || [], c); return h }; b.prototype.getAxes = function () { var a = this, c = this.options, d = c.xAxis = U(c.xAxis || {}); c = c.yAxis = U(c.yAxis || {}); O(this, "getAxes"); d.forEach(function (a, c) { a.index = c; a.isX = !0 }); c.forEach(function (a, c) { a.index = c }); d.concat(c).forEach(function (c) { new f(a, c) }); O(this, "afterGetAxes") }; b.prototype.getSelectedPoints =
                            function () { var a = []; this.series.forEach(function (c) { a = a.concat(c.getPointsCollection().filter(function (a) { return T(a.selectedStaging, a.selected) })) }); return a }; b.prototype.getSelectedSeries = function () { return this.series.filter(function (a) { return a.selected }) }; b.prototype.setTitle = function (a, c, d) { this.applyDescription("title", a); this.applyDescription("subtitle", c); this.applyDescription("caption", void 0); this.layOutTitles(d) }; b.prototype.applyDescription = function (a, c) {
                                var d = this, e = "title" === a ? {
                                    color: r.neutralColor80,
                                    fontSize: this.options.isStock ? "16px" : "18px"
                                } : { color: r.neutralColor60 }; e = this.options[a] = Q(!this.styledMode && { style: e }, this.options[a], c); var h = this[a]; h && c && (this[a] = h = h.destroy()); e && !h && (h = this.renderer.text(e.text, 0, 0, e.useHTML).attr({ align: e.align, "class": "highcharts-" + a, zIndex: e.zIndex || 4 }).add(), h.update = function (c) { d[{ title: "setTitle", subtitle: "setSubtitle", caption: "setCaption" }[a]](c) }, this.styledMode || h.css(e.style), this[a] = h)
                            }; b.prototype.layOutTitles = function (a) {
                                var c = [0, 0, 0], d = this.renderer,
                                e = this.spacingBox;["title", "subtitle", "caption"].forEach(function (a) { var h = this[a], b = this.options[a], k = b.verticalAlign || "top"; a = "title" === a ? -3 : "top" === k ? c[0] + 2 : 0; if (h) { if (!this.styledMode) var g = b.style.fontSize; g = d.fontMetrics(g, h).b; h.css({ width: (b.width || e.width + (b.widthAdjust || 0)) + "px" }); var m = Math.round(h.getBBox(b.useHTML).height); h.align(Y({ y: "bottom" === k ? g : a + g, height: m }, b), !1, "spacingBox"); b.floating || ("top" === k ? c[0] = Math.ceil(c[0] + m) : "bottom" === k && (c[2] = Math.ceil(c[2] + m))) } }, this); c[0] && "top" ===
                                    (this.options.title.verticalAlign || "top") && (c[0] += this.options.title.margin); c[2] && "bottom" === this.options.caption.verticalAlign && (c[2] += this.options.caption.margin); var h = !this.titleOffset || this.titleOffset.join(",") !== c.join(","); this.titleOffset = c; O(this, "afterLayOutTitles"); !this.isDirtyBox && h && (this.isDirtyBox = this.isDirtyLegend = h, this.hasRendered && T(a, !0) && this.isDirtyBox && this.redraw())
                            }; b.prototype.getChartSize = function () {
                                var a = this.options.chart, c = a.width; a = a.height; var d = this.renderTo; E(c) ||
                                    (this.containerWidth = G(d, "width")); E(a) || (this.containerHeight = G(d, "height")); this.chartWidth = Math.max(0, c || this.containerWidth || 600); this.chartHeight = Math.max(0, V(a, this.chartWidth) || (1 < this.containerHeight ? this.containerHeight : 400))
                            }; b.prototype.temporaryDisplay = function (a) {
                                var c = this.renderTo; if (a) for (; c && c.style;)c.hcOrigStyle && (v(c, c.hcOrigStyle), delete c.hcOrigStyle), c.hcOrigDetached && (w.body.removeChild(c), c.hcOrigDetached = !1), c = c.parentNode; else for (; c && c.style;) {
                                    w.body.contains(c) || c.parentNode ||
                                    (c.hcOrigDetached = !0, w.body.appendChild(c)); if ("none" === G(c, "display", !1) || c.hcOricDetached) c.hcOrigStyle = { display: c.style.display, height: c.style.height, overflow: c.style.overflow }, a = { display: "block", overflow: "hidden" }, c !== this.renderTo && (a.height = 0), v(c, a), c.offsetWidth || c.style.setProperty("display", "block", "important"); c = c.parentNode; if (c === w.body) break
                                }
                            }; b.prototype.setClassName = function (a) { this.container.className = "highcharts-container " + (a || "") }; b.prototype.getContainer = function () {
                                var c = this.options,
                                d = c.chart; var e = this.renderTo; var b = ba(), k, g; e || (this.renderTo = e = d.renderTo); P(e) && (this.renderTo = e = w.getElementById(e)); e || S(13, !0, this); var m = aa(a(e, "data-highcharts-chart")); Z(m) && F[m] && F[m].hasRendered && F[m].destroy(); a(e, "data-highcharts-chart", this.index); e.innerHTML = ""; d.skipClone || e.offsetWidth || this.temporaryDisplay(); this.getChartSize(); m = this.chartWidth; var l = this.chartHeight; v(e, { overflow: "hidden" }); this.styledMode || (k = Y({
                                    position: "relative", overflow: "hidden", width: m + "px", height: l + "px",
                                    textAlign: "left", lineHeight: "normal", zIndex: 0, "-webkit-tap-highlight-color": "rgba(0,0,0,0)", userSelect: "none", "touch-action": "manipulation", outline: "none"
                                }, d.style || {})); this.container = e = h("div", { id: b }, k, e); this._cursor = e.style.cursor; this.renderer = new (y[d.renderer] || y.Renderer)(e, m, l, null, d.forExport, c.exporting && c.exporting.allowHTML, this.styledMode); B(void 0, this); this.setClassName(d.className); if (this.styledMode) for (g in c.defs) this.renderer.definition(c.defs[g]); else this.renderer.setStyle(d.style);
                                this.renderer.chartIndex = this.index; O(this, "afterGetContainer")
                            }; b.prototype.getMargins = function (a) { var c = this.spacing, d = this.margin, e = this.titleOffset; this.resetMargins(); e[0] && !E(d[0]) && (this.plotTop = Math.max(this.plotTop, e[0] + c[0])); e[2] && !E(d[2]) && (this.marginBottom = Math.max(this.marginBottom, e[2] + c[2])); this.legend && this.legend.display && this.legend.adjustMargins(d, c); O(this, "getMargins"); a || this.getAxisMargins() }; b.prototype.getAxisMargins = function () {
                                var a = this, c = a.axisOffset = [0, 0, 0, 0], d = a.colorAxis,
                                e = a.margin, h = function (a) { a.forEach(function (a) { a.visible && a.getOffset() }) }; a.hasCartesianSeries ? h(a.axes) : d && d.length && h(d); fa.forEach(function (d, h) { E(e[h]) || (a[d] += c[h]) }); a.setChartSize()
                            }; b.prototype.reflow = function (a) {
                                var c = this, d = c.options.chart, h = c.renderTo, b = E(d.width) && E(d.height), k = d.width || G(h, "width"); d = d.height || G(h, "height"); h = a ? a.target : z; delete c.pointer.chartPosition; if (!b && !c.isPrinting && k && d && (h === z || h === w)) {
                                    if (k !== c.containerWidth || d !== c.containerHeight) e.clearTimeout(c.reflowTimeout),
                                        c.reflowTimeout = da(function () { c.container && c.setSize(void 0, void 0, !1) }, a ? 100 : 0); c.containerWidth = k; c.containerHeight = d
                                }
                            }; b.prototype.setReflow = function (a) { var c = this; !1 === a || this.unbindReflow ? !1 === a && this.unbindReflow && (this.unbindReflow = this.unbindReflow()) : (this.unbindReflow = n(z, "resize", function (a) { c.options && c.reflow(a) }), n(this, "destroy", this.unbindReflow)) }; b.prototype.setSize = function (a, c, d) {
                                var e = this, h = e.renderer; e.isResizing += 1; B(d, e); d = h.globalAnimation; e.oldChartHeight = e.chartHeight;
                                e.oldChartWidth = e.chartWidth; "undefined" !== typeof a && (e.options.chart.width = a); "undefined" !== typeof c && (e.options.chart.height = c); e.getChartSize(); e.styledMode || (d ? u : v)(e.container, { width: e.chartWidth + "px", height: e.chartHeight + "px" }, d); e.setChartSize(!0); h.setSize(e.chartWidth, e.chartHeight, d); e.axes.forEach(function (a) { a.isDirty = !0; a.setScale() }); e.isDirtyLegend = !0; e.isDirtyBox = !0; e.layOutTitles(); e.getMargins(); e.redraw(d); e.oldChartHeight = null; O(e, "resize"); da(function () {
                                    e && O(e, "endResize", null,
                                        function () { --e.isResizing })
                                }, H(d).duration)
                            }; b.prototype.setChartSize = function (a) {
                                var c = this.inverted, d = this.renderer, e = this.chartWidth, h = this.chartHeight, b = this.options.chart, k = this.spacing, g = this.clipOffset, m, l, n, f; this.plotLeft = m = Math.round(this.plotLeft); this.plotTop = l = Math.round(this.plotTop); this.plotWidth = n = Math.max(0, Math.round(e - m - this.marginRight)); this.plotHeight = f = Math.max(0, Math.round(h - l - this.marginBottom)); this.plotSizeX = c ? f : n; this.plotSizeY = c ? n : f; this.plotBorderWidth = b.plotBorderWidth ||
                                    0; this.spacingBox = d.spacingBox = { x: k[3], y: k[0], width: e - k[3] - k[1], height: h - k[0] - k[2] }; this.plotBox = d.plotBox = { x: m, y: l, width: n, height: f }; h = 2 * Math.floor(this.plotBorderWidth / 2); c = Math.ceil(Math.max(h, g[3]) / 2); e = Math.ceil(Math.max(h, g[0]) / 2); this.clipBox = { x: c, y: e, width: Math.floor(this.plotSizeX - Math.max(h, g[1]) / 2 - c), height: Math.max(0, Math.floor(this.plotSizeY - Math.max(h, g[2]) / 2 - e)) }; a || (this.axes.forEach(function (a) { a.setAxisSize(); a.setAxisTranslation() }), d.alignElements()); O(this, "afterSetChartSize",
                                        { skipAxes: a })
                            }; b.prototype.resetMargins = function () { O(this, "resetMargins"); var a = this, c = a.options.chart;["margin", "spacing"].forEach(function (d) { var e = c[d], h = ea(e) ? e : [e, e, e, e];["Top", "Right", "Bottom", "Left"].forEach(function (e, b) { a[d][b] = T(c[d + e], h[b]) }) }); fa.forEach(function (c, d) { a[c] = T(a.margin[d], a.spacing[d]) }); a.axisOffset = [0, 0, 0, 0]; a.clipOffset = [0, 0, 0, 0] }; b.prototype.drawChartBox = function () {
                                var a = this.options.chart, c = this.renderer, d = this.chartWidth, e = this.chartHeight, h = this.chartBackground, b =
                                    this.plotBackground, k = this.plotBorder, g = this.styledMode, m = this.plotBGImage, l = a.backgroundColor, n = a.plotBackgroundColor, f = a.plotBackgroundImage, q, v = this.plotLeft, p = this.plotTop, u = this.plotWidth, w = this.plotHeight, r = this.plotBox, z = this.clipRect, P = this.clipBox, N = "animate"; h || (this.chartBackground = h = c.rect().addClass("highcharts-background").add(), N = "attr"); if (g) var t = q = h.strokeWidth(); else {
                                        t = a.borderWidth || 0; q = t + (a.shadow ? 8 : 0); l = { fill: l || "none" }; if (t || h["stroke-width"]) l.stroke = a.borderColor, l["stroke-width"] =
                                            t; h.attr(l).shadow(a.shadow)
                                    } h[N]({ x: q / 2, y: q / 2, width: d - q - t % 2, height: e - q - t % 2, r: a.borderRadius }); N = "animate"; b || (N = "attr", this.plotBackground = b = c.rect().addClass("highcharts-plot-background").add()); b[N](r); g || (b.attr({ fill: n || "none" }).shadow(a.plotShadow), f && (m ? (f !== m.attr("href") && m.attr("href", f), m.animate(r)) : this.plotBGImage = c.image(f, v, p, u, w).add())); z ? z.animate({ width: P.width, height: P.height }) : this.clipRect = c.clipRect(P); N = "animate"; k || (N = "attr", this.plotBorder = k = c.rect().addClass("highcharts-plot-border").attr({ zIndex: 1 }).add());
                                g || k.attr({ stroke: a.plotBorderColor, "stroke-width": a.plotBorderWidth || 0, fill: "none" }); k[N](k.crisp({ x: v, y: p, width: u, height: w }, -k.strokeWidth())); this.isDirtyBox = !1; O(this, "afterDrawChartBox")
                            }; b.prototype.propFromSeries = function () { var a = this, d = a.options.chart, e, h = a.options.series, b, k;["inverted", "angular", "polar"].forEach(function (g) { e = c[d.type || d.defaultSeriesType]; k = d[g] || e && e.prototype[g]; for (b = h && h.length; !k && b--;)(e = c[h[b].type]) && e.prototype[g] && (k = !0); a[g] = k }) }; b.prototype.linkSeries = function () {
                                var a =
                                    this, c = a.series; c.forEach(function (a) { a.linkedSeries.length = 0 }); c.forEach(function (c) { var d = c.options.linkedTo; P(d) && (d = ":previous" === d ? a.series[c.index - 1] : a.get(d)) && d.linkedParent !== c && (d.linkedSeries.push(c), c.linkedParent = d, d.enabledDataSorting && c.setDataSortingOptions(), c.visible = T(c.options.visible, d.options.visible, c.visible)) }); O(this, "afterLinkSeries")
                            }; b.prototype.renderSeries = function () { this.series.forEach(function (a) { a.translate(); a.render() }) }; b.prototype.renderLabels = function () {
                                var a =
                                    this, c = a.options.labels; c.items && c.items.forEach(function (d) { var e = Y(c.style, d.style), h = aa(e.left) + a.plotLeft, b = aa(e.top) + a.plotTop + 12; delete e.left; delete e.top; a.renderer.text(d.html, h, b).attr({ zIndex: 2 }).css(e).add() })
                            }; b.prototype.render = function () {
                                var a = this.axes, c = this.colorAxis, d = this.renderer, e = this.options, h = 0, b = function (a) { a.forEach(function (a) { a.visible && a.render() }) }; this.setTitle(); this.legend = new C(this, e.legend); this.getStacks && this.getStacks(); this.getMargins(!0); this.setChartSize();
                                e = this.plotWidth; a.some(function (a) { if (a.horiz && a.visible && a.options.labels.enabled && a.series.length) return h = 21, !0 }); var k = this.plotHeight = Math.max(this.plotHeight - h, 0); a.forEach(function (a) { a.setScale() }); this.getAxisMargins(); var g = 1.1 < e / this.plotWidth; var m = 1.05 < k / this.plotHeight; if (g || m) a.forEach(function (a) { (a.horiz && g || !a.horiz && m) && a.setTickInterval(!0) }), this.getMargins(); this.drawChartBox(); this.hasCartesianSeries ? b(a) : c && c.length && b(c); this.seriesGroup || (this.seriesGroup = d.g("series-group").attr({ zIndex: 3 }).add());
                                this.renderSeries(); this.renderLabels(); this.addCredits(); this.setResponsive && this.setResponsive(); this.hasRendered = !0
                            }; b.prototype.addCredits = function (a) {
                                var c = this, d = Q(!0, this.options.credits, a); d.enabled && !this.credits && (this.credits = this.renderer.text(d.text + (this.mapCredits || ""), 0, 0).addClass("highcharts-credits").on("click", function () { d.href && (z.location.href = d.href) }).attr({ align: d.position.align, zIndex: 8 }), c.styledMode || this.credits.css(d.style), this.credits.add().align(d.position), this.credits.update =
                                    function (a) { c.credits = c.credits.destroy(); c.addCredits(a) })
                            }; b.prototype.destroy = function () {
                                var a = this, c = a.axes, d = a.series, e = a.container, h, b = e && e.parentNode; O(a, "destroy"); a.renderer.forExport ? M(F, a) : F[a.index] = void 0; y.chartCount--; a.renderTo.removeAttribute("data-highcharts-chart"); W(a); for (h = c.length; h--;)c[h] = c[h].destroy(); this.scroller && this.scroller.destroy && this.scroller.destroy(); for (h = d.length; h--;)d[h] = d[h].destroy(); "title subtitle chartBackground plotBackground plotBGImage plotBorder seriesGroup clipRect credits pointer rangeSelector legend resetZoomButton tooltip renderer".split(" ").forEach(function (c) {
                                    var d =
                                        a[c]; d && d.destroy && (a[c] = d.destroy())
                                }); e && (e.innerHTML = "", W(e), b && L(e)); N(a, function (c, d) { delete a[d] })
                            }; b.prototype.firstRender = function () {
                                var a = this, c = a.options; if (!a.isReadyToRender || a.isReadyToRender()) {
                                    a.getContainer(); a.resetMargins(); a.setChartSize(); a.propFromSeries(); a.getAxes(); (x(c.series) ? c.series : []).forEach(function (c) { a.initSeries(c) }); a.linkSeries(); a.setSeriesData(); O(a, "beforeRender"); p && (a.pointer = y.hasTouch || !z.PointerEvent && !z.MSPointerEvent ? new p(a, c) : new A(a, c)); a.render();
                                    a.pointer.getChartPosition(); if (!a.renderer.imgCount && !a.hasLoaded) a.onload(); a.temporaryDisplay(!0)
                                }
                            }; b.prototype.onload = function () { this.callbacks.concat([this.callback]).forEach(function (a) { a && "undefined" !== typeof this.index && a.apply(this, [this]) }, this); O(this, "load"); O(this, "render"); E(this.index) && this.setReflow(this.options.chart.reflow); this.hasLoaded = !0 }; b.prototype.addSeries = function (a, c, d) {
                                var e, h = this; a && (c = T(c, !0), O(h, "addSeries", { options: a }, function () {
                                    e = h.initSeries(a); h.isDirtyLegend =
                                        !0; h.linkSeries(); e.enabledDataSorting && e.setData(a.data, !1); O(h, "afterAddSeries", { series: e }); c && h.redraw(d)
                                })); return e
                            }; b.prototype.addAxis = function (a, c, d, e) { return this.createAxis(c ? "xAxis" : "yAxis", { axis: a, redraw: d, animation: e }) }; b.prototype.addColorAxis = function (a, c, d) { return this.createAxis("colorAxis", { axis: a, redraw: c, animation: d }) }; b.prototype.createAxis = function (a, c) {
                                var d = "colorAxis" === a, e = c.redraw, h = c.animation; a = Q(c.axis, { index: this[a].length, isX: "xAxis" === a }); a = d ? new y.ColorAxis(this,
                                    a) : new f(this, a); d && (this.isDirtyLegend = !0, this.axes.forEach(function (a) { a.series = [] }), this.series.forEach(function (a) { a.bindAxes(); a.isDirtyData = !0 })); T(e, !0) && this.redraw(h); return a
                            }; b.prototype.showLoading = function (a) {
                                var c = this, e = c.options, b = c.loadingDiv, k = c.loadingSpan, g = e.loading, m = function () { b && v(b, { left: c.plotLeft + "px", top: c.plotTop + "px", width: c.plotWidth + "px", height: c.plotHeight + "px" }) }; b || (c.loadingDiv = b = h("div", { className: "highcharts-loading highcharts-loading-hidden" }, null, c.container));
                                k || (c.loadingSpan = k = h("span", { className: "highcharts-loading-inner" }, null, b), n(c, "redraw", m)); b.className = "highcharts-loading"; d.setElementHTML(k, T(a, e.lang.loading, "")); c.styledMode || (v(b, Y(g.style, { zIndex: 10 })), v(k, g.labelStyle), c.loadingShown || (v(b, { opacity: 0, display: "" }), u(b, { opacity: g.style.opacity || .5 }, { duration: g.showDuration || 0 }))); c.loadingShown = !0; m()
                            }; b.prototype.hideLoading = function () {
                                var a = this.options, c = this.loadingDiv; c && (c.className = "highcharts-loading highcharts-loading-hidden", this.styledMode ||
                                    u(c, { opacity: 0 }, { duration: a.loading.hideDuration || 100, complete: function () { v(c, { display: "none" }) } })); this.loadingShown = !1
                            }; b.prototype.update = function (a, c, d, e) {
                                var h = this, b = { credits: "addCredits", title: "setTitle", subtitle: "setSubtitle", caption: "setCaption" }, l, n, f, q = a.isResponsiveOptions, v = []; O(h, "update", { options: a }); q || h.setResponsive(!1, !0); a = k(a, h.options); h.userOptions = Q(h.userOptions, a); if (l = a.chart) {
                                    Q(!0, h.options.chart, l); "className" in l && h.setClassName(l.className); "reflow" in l && h.setReflow(l.reflow);
                                    if ("inverted" in l || "polar" in l || "type" in l) { h.propFromSeries(); var p = !0 } "alignTicks" in l && (p = !0); N(l, function (a, c) { -1 !== h.propsRequireUpdateSeries.indexOf("chart." + c) && (n = !0); -1 !== h.propsRequireDirtyBox.indexOf(c) && (h.isDirtyBox = !0); -1 !== h.propsRequireReflow.indexOf(c) && (q ? h.isDirtyBox = !0 : f = !0) }); !h.styledMode && "style" in l && h.renderer.setStyle(l.style)
                                } !h.styledMode && a.colors && (this.options.colors = a.colors); a.time && (this.time === m && (this.time = new g(a.time)), Q(!0, h.options.time, a.time)); N(a, function (c,
                                    d) { if (h[d] && "function" === typeof h[d].update) h[d].update(c, !1); else if ("function" === typeof h[b[d]]) h[b[d]](c); else "colors" !== d && -1 === h.collectionsWithUpdate.indexOf(d) && Q(!0, h.options[d], a[d]); "chart" !== d && -1 !== h.propsRequireUpdateSeries.indexOf(d) && (n = !0) }); this.collectionsWithUpdate.forEach(function (c) {
                                        if (a[c]) {
                                            var e = []; h[c].forEach(function (a, c) { a.options.isInternal || e.push(T(a.options.index, c)) }); U(a[c]).forEach(function (a, b) {
                                                var k = E(a.id), g; k && (g = h.get(a.id)); !g && h[c] && (g = h[c][e ? e[b] : b]) && k &&
                                                    E(g.options.id) && (g = void 0); g && g.coll === c && (g.update(a, !1), d && (g.touched = !0)); !g && d && h.collectionsWithInit[c] && (h.collectionsWithInit[c][0].apply(h, [a].concat(h.collectionsWithInit[c][1] || []).concat([!1])).touched = !0)
                                            }); d && h[c].forEach(function (a) { a.touched || a.options.isInternal ? delete a.touched : v.push(a) })
                                        }
                                    }); v.forEach(function (a) { a.chart && a.remove(!1) }); p && h.axes.forEach(function (a) { a.update({}, !1) }); n && h.getSeriesOrderByLinks().forEach(function (a) { a.chart && a.update({}, !1) }, this); p = l && l.width; l =
                                        l && l.height; P(l) && (l = V(l, p || h.chartWidth)); f || Z(p) && p !== h.chartWidth || Z(l) && l !== h.chartHeight ? h.setSize(p, l, e) : T(c, !0) && h.redraw(e); O(h, "afterUpdate", { options: a, redraw: c, animation: e })
                            }; b.prototype.setSubtitle = function (a, c) { this.applyDescription("subtitle", a); this.layOutTitles(c) }; b.prototype.setCaption = function (a, c) { this.applyDescription("caption", a); this.layOutTitles(c) }; b.prototype.showResetZoom = function () {
                                function a() { c.zoomOut() } var c = this, d = q.lang, e = c.options.chart.resetZoomButton, h = e.theme,
                                    b = h.states, k = "chart" === e.relativeTo || "spacingBox" === e.relativeTo ? null : "scrollablePlotBox"; O(this, "beforeShowResetZoom", null, function () { c.resetZoomButton = c.renderer.button(d.resetZoom, null, null, a, h, b && b.hover).attr({ align: e.position.align, title: d.resetZoomTitle }).addClass("highcharts-reset-zoom").add().align(e.position, !1, k) }); O(this, "afterShowResetZoom")
                            }; b.prototype.zoomOut = function () { O(this, "selection", { resetSelection: !0 }, this.zoom) }; b.prototype.zoom = function (a) {
                                var c = this, d, e = c.pointer, h = !1, b =
                                    c.inverted ? e.mouseDownX : e.mouseDownY; !a || a.resetSelection ? (c.axes.forEach(function (a) { d = a.zoom() }), e.initiated = !1) : a.xAxis.concat(a.yAxis).forEach(function (a) { var k = a.axis, g = c.inverted ? k.left : k.top, m = c.inverted ? g + k.width : g + k.height, l = k.isXAxis, n = !1; if (!l && b >= g && b <= m || l || !E(b)) n = !0; e[l ? "zoomX" : "zoomY"] && n && (d = k.zoom(a.min, a.max), k.displayBtn && (h = !0)) }); var k = c.resetZoomButton; h && !k ? c.showResetZoom() : !h && ea(k) && (c.resetZoomButton = k.destroy()); d && c.redraw(T(c.options.chart.animation, a && a.animation, 100 >
                                        c.pointCount))
                            }; b.prototype.pan = function (a, c) {
                                var d = this, e = d.hoverPoints, h = d.options.chart, b = d.options.mapNavigation && d.options.mapNavigation.enabled, k; c = "object" === typeof c ? c : { enabled: c, type: "x" }; h && h.panning && (h.panning = c); var g = c.type; O(this, "pan", { originalEvent: a }, function () {
                                    e && e.forEach(function (a) { a.setState() }); var c = [1]; "xy" === g ? c = [1, 0] : "y" === g && (c = [0]); c.forEach(function (c) {
                                        var e = d[c ? "xAxis" : "yAxis"][0], h = e.horiz, m = a[h ? "chartX" : "chartY"]; h = h ? "mouseDownX" : "mouseDownY"; var l = d[h], n = (e.pointRange ||
                                            0) / 2, f = e.reversed && !d.inverted || !e.reversed && d.inverted ? -1 : 1, q = e.getExtremes(), p = e.toValue(l - m, !0) + n * f; f = e.toValue(l + e.len - m, !0) - n * f; var v = f < p; l = v ? f : p; p = v ? p : f; f = e.hasVerticalPanning(); var u = e.panningState; !f || c || u && !u.isDirty || e.series.forEach(function (a) {
                                                var c = a.getProcessedData(!0); c = a.getExtremes(c.yData, !0); u || (u = { startMin: Number.MAX_VALUE, startMax: -Number.MAX_VALUE }); Z(c.dataMin) && Z(c.dataMax) && (u.startMin = Math.min(T(a.options.threshold, Infinity), c.dataMin, u.startMin), u.startMax = Math.max(T(a.options.threshold,
                                                    -Infinity), c.dataMax, u.startMax))
                                            }); c = Math.min(T(u && u.startMin, q.dataMin), n ? q.min : e.toValue(e.toPixels(q.min) - e.minPixelPadding)); n = Math.max(T(u && u.startMax, q.dataMax), n ? q.max : e.toValue(e.toPixels(q.max) + e.minPixelPadding)); e.panningState = u; e.isOrdinal || (f = c - l, 0 < f && (p += f, l = c), f = p - n, 0 < f && (p = n, l -= f), e.series.length && l !== q.min && p !== q.max && l >= c && p <= n && (e.setExtremes(l, p, !1, !1, { trigger: "pan" }), d.resetZoomButton || b || l === c || p === n || !g.match("y") || (d.showResetZoom(), e.displayBtn = !1), k = !0), d[h] = m)
                                    }); k && d.redraw(!1);
                                    v(d.container, { cursor: "move" })
                                })
                            }; return b
                    }(); Y(ca.prototype, {
                        callbacks: [], collectionsWithInit: { xAxis: [ca.prototype.addAxis, [!0]], yAxis: [ca.prototype.addAxis, [!1]], series: [ca.prototype.addSeries] }, collectionsWithUpdate: ["xAxis", "yAxis", "zAxis", "series"], propsRequireDirtyBox: "backgroundColor borderColor borderWidth borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow".split(" "), propsRequireReflow: "margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft".split(" "),
                        propsRequireUpdateSeries: "chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions time tooltip".split(" ")
                    }); y.chart = function (a, c, d) { return new ca(a, c, d) }; y.Chart = ca; ""; return ca
                }); J(b, "Mixins/LegendSymbol.js", [b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f) {
                    var B = f.merge, y = f.pick; return b.LegendSymbolMixin = {
                        drawRectangle: function (b, f) {
                            var t = b.symbolHeight, r = b.options.squareSymbol; f.legendSymbol = this.chart.renderer.rect(r ? (b.symbolWidth - t) / 2 : 0, b.baseline - t + 1, r ?
                                t : b.symbolWidth, t, y(b.options.symbolRadius, t / 2)).addClass("highcharts-point").attr({ zIndex: 3 }).add(f.legendGroup)
                        }, drawLineMarker: function (b) {
                            var f = this.options, t = f.marker, r = b.symbolWidth, p = b.symbolHeight, l = p / 2, g = this.chart.renderer, e = this.legendGroup; b = b.baseline - Math.round(.3 * b.fontMetrics.b); var d = {}; this.chart.styledMode || (d = { "stroke-width": f.lineWidth || 0 }, f.dashStyle && (d.dashstyle = f.dashStyle)); this.legendLine = g.path([["M", 0, b], ["L", r, b]]).addClass("highcharts-graph").attr(d).add(e); t && !1 !==
                                t.enabled && r && (f = Math.min(y(t.radius, l), l), 0 === this.symbol.indexOf("url") && (t = B(t, { width: p, height: p }), f = 0), this.legendSymbol = t = g.symbol(this.symbol, r / 2 - f, b - f, 2 * f, 2 * f, t).addClass("highcharts-point").add(e), t.isMarker = !0)
                        }
                    }
                }); J(b, "Core/Series/Series.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/Globals.js"], b["Mixins/LegendSymbol.js"], b["Core/Options.js"], b["Core/Color/Palette.js"], b["Core/Series/Point.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Renderer/SVG/SVGElement.js"], b["Core/Utilities.js"]],
                    function (b, f, D, y, C, A, t, r, p) {
                        var l = b.animObject, g = b.setAnimation, e = f.hasTouch, d = f.svg, u = f.win, H = y.defaultOptions, B = t.seriesTypes, K = p.addEvent, F = p.arrayMax, w = p.arrayMin, z = p.clamp, q = p.cleanRecursively, m = p.correctFloat, c = p.defined, n = p.erase, a = p.error, k = p.extend, h = p.find, v = p.fireEvent, E = p.getNestedProperty, L = p.isArray, M = p.isFunction, S = p.isNumber, Y = p.isString, R = p.merge, O = p.objectEach, G = p.pick, x = p.removeEvent, J = p.splat, Z = p.syncTimeout; b = function () {
                            function b() {
                            this.zones = this.yAxis = this.xAxis = this.userOptions =
                                this.tooltipOptions = this.processedYData = this.processedXData = this.points = this.options = this.linkedSeries = this.index = this.eventsToUnbind = this.eventOptions = this.data = this.chart = this._i = void 0
                            } b.prototype.init = function (a, c) {
                                v(this, "init", { options: c }); var d = this, e = a.series, h; this.eventOptions = this.eventOptions || {}; this.eventsToUnbind = []; d.chart = a; d.options = d.setOptions(c); var b = d.options; d.linkedSeries = []; d.bindAxes(); k(d, { name: b.name, state: "", visible: !1 !== b.visible, selected: !0 === b.selected }); c = b.events;
                                O(c, function (a, c) { M(a) && d.eventOptions[c] !== a && (M(d.eventOptions[c]) && x(d, c, d.eventOptions[c]), d.eventOptions[c] = a, K(d, c, a)) }); if (c && c.click || b.point && b.point.events && b.point.events.click || b.allowPointSelect) a.runTrackerClick = !0; d.getColor(); d.getSymbol(); d.parallelArrays.forEach(function (a) { d[a + "Data"] || (d[a + "Data"] = []) }); d.isCartesian && (a.hasCartesianSeries = !0); e.length && (h = e[e.length - 1]); d._i = G(h && h._i, -1) + 1; d.opacity = d.options.opacity; a.orderSeries(this.insert(e)); b.dataSorting && b.dataSorting.enabled ?
                                    d.setDataSortingOptions() : d.points || d.data || d.setData(b.data, !1); v(this, "afterInit")
                            }; b.prototype.is = function (a) { return B[a] && this instanceof B[a] }; b.prototype.insert = function (a) { var c = this.options.index, d; if (S(c)) { for (d = a.length; d--;)if (c >= G(a[d].options.index, a[d]._i)) { a.splice(d + 1, 0, this); break } -1 === d && a.unshift(this); d += 1 } else a.push(this); return G(d, a.length - 1) }; b.prototype.bindAxes = function () {
                                var c = this, d = c.options, e = c.chart, h; v(this, "bindAxes", null, function () {
                                    (c.axisTypes || []).forEach(function (b) {
                                        var k =
                                            0; e[b].forEach(function (a) { h = a.options; if (d[b] === k && !h.isInternal || "undefined" !== typeof d[b] && d[b] === h.id || "undefined" === typeof d[b] && 0 === h.index) c.insert(a.series), c[b] = a, a.isDirty = !0; h.isInternal || k++ }); c[b] || c.optionalAxis === b || a(18, !0, e)
                                    })
                                }); v(this, "afterBindAxes")
                            }; b.prototype.updateParallelArrays = function (a, c) {
                                var d = a.series, e = arguments, h = S(c) ? function (e) { var h = "y" === e && d.toYData ? d.toYData(a) : a[e]; d[e + "Data"][c] = h } : function (a) {
                                Array.prototype[c].apply(d[a + "Data"], Array.prototype.slice.call(e,
                                    2))
                                }; d.parallelArrays.forEach(h)
                            }; b.prototype.hasData = function () { return this.visible && "undefined" !== typeof this.dataMax && "undefined" !== typeof this.dataMin || this.visible && this.yData && 0 < this.yData.length }; b.prototype.autoIncrement = function () {
                                var a = this.options, c = this.xIncrement, d, e = a.pointIntervalUnit, h = this.chart.time; c = G(c, a.pointStart, 0); this.pointInterval = d = G(this.pointInterval, a.pointInterval, 1); e && (a = new h.Date(c), "day" === e ? h.set("Date", a, h.get("Date", a) + d) : "month" === e ? h.set("Month", a, h.get("Month",
                                    a) + d) : "year" === e && h.set("FullYear", a, h.get("FullYear", a) + d), d = a.getTime() - c); this.xIncrement = c + d; return c
                            }; b.prototype.setDataSortingOptions = function () { var a = this.options; k(this, { requireSorting: !1, sorted: !1, enabledDataSorting: !0, allowDG: !1 }); c(a.pointRange) || (a.pointRange = 1) }; b.prototype.setOptions = function (a) {
                                var d = this.chart, e = d.options, h = e.plotOptions, b = d.userOptions || {}; a = R(a); d = d.styledMode; var k = { plotOptions: h, userOptions: a }; v(this, "setOptions", k); var g = k.plotOptions[this.type], m = b.plotOptions ||
                                    {}; this.userOptions = k.userOptions; b = R(g, h.series, b.plotOptions && b.plotOptions[this.type], a); this.tooltipOptions = R(H.tooltip, H.plotOptions.series && H.plotOptions.series.tooltip, H.plotOptions[this.type].tooltip, e.tooltip.userOptions, h.series && h.series.tooltip, h[this.type].tooltip, a.tooltip); this.stickyTracking = G(a.stickyTracking, m[this.type] && m[this.type].stickyTracking, m.series && m.series.stickyTracking, this.tooltipOptions.shared && !this.noSharedTooltip ? !0 : b.stickyTracking); null === g.marker && delete b.marker;
                                this.zoneAxis = b.zoneAxis; e = this.zones = (b.zones || []).slice(); !b.negativeColor && !b.negativeFillColor || b.zones || (h = { value: b[this.zoneAxis + "Threshold"] || b.threshold || 0, className: "highcharts-negative" }, d || (h.color = b.negativeColor, h.fillColor = b.negativeFillColor), e.push(h)); e.length && c(e[e.length - 1].value) && e.push(d ? {} : { color: this.color, fillColor: this.fillColor }); v(this, "afterSetOptions", { options: b }); return b
                            }; b.prototype.getName = function () { return G(this.options.name, "Series " + (this.index + 1)) }; b.prototype.getCyclic =
                                function (a, d, e) { var h = this.chart, b = this.userOptions, k = a + "Index", g = a + "Counter", m = e ? e.length : G(h.options.chart[a + "Count"], h[a + "Count"]); if (!d) { var l = G(b[k], b["_" + k]); c(l) || (h.series.length || (h[g] = 0), b["_" + k] = l = h[g] % m, h[g] += 1); e && (d = e[l]) } "undefined" !== typeof l && (this[k] = l); this[a] = d }; b.prototype.getColor = function () { this.chart.styledMode ? this.getCyclic("color") : this.options.colorByPoint ? this.color = C.neutralColor20 : this.getCyclic("color", this.options.color || H.plotOptions[this.type].color, this.chart.options.colors) };
                            b.prototype.getPointsCollection = function () { return (this.hasGroupedData ? this.points : this.data) || [] }; b.prototype.getSymbol = function () { this.getCyclic("symbol", this.options.marker.symbol, this.chart.options.symbols) }; b.prototype.findPointIndex = function (a, c) {
                                var d = a.id, e = a.x, b = this.points, k, g = this.options.dataSorting; if (d) var m = this.chart.get(d); else if (this.linkedParent || this.enabledDataSorting) { var l = g && g.matchByName ? "name" : "index"; m = h(b, function (c) { return !c.touched && c[l] === a[l] }); if (!m) return } if (m) {
                                    var n =
                                        m && m.index; "undefined" !== typeof n && (k = !0)
                                } "undefined" === typeof n && S(e) && (n = this.xData.indexOf(e, c)); -1 !== n && "undefined" !== typeof n && this.cropped && (n = n >= this.cropStart ? n - this.cropStart : n); !k && b[n] && b[n].touched && (n = void 0); return n
                            }; b.prototype.updateData = function (a, d) {
                                var e = this.options, h = e.dataSorting, b = this.points, k = [], g, m, l, n = this.requireSorting, f = a.length === b.length, q = !0; this.xIncrement = null; a.forEach(function (a, d) {
                                    var m = c(a) && this.pointClass.prototype.optionsToObject.call({ series: this }, a) || {};
                                    var q = m.x; if (m.id || S(q)) { if (q = this.findPointIndex(m, l), -1 === q || "undefined" === typeof q ? k.push(a) : b[q] && a !== e.data[q] ? (b[q].update(a, !1, null, !1), b[q].touched = !0, n && (l = q + 1)) : b[q] && (b[q].touched = !0), !f || d !== q || h && h.enabled || this.hasDerivedData) g = !0 } else k.push(a)
                                }, this); if (g) for (a = b.length; a--;)(m = b[a]) && !m.touched && m.remove && m.remove(!1, d); else !f || h && h.enabled ? q = !1 : (a.forEach(function (a, c) { b[c].update && a !== b[c].y && b[c].update(a, !1, null, !1) }), k.length = 0); b.forEach(function (a) { a && (a.touched = !1) }); if (!q) return !1;
                                k.forEach(function (a) { this.addPoint(a, !1, null, null, !1) }, this); null === this.xIncrement && this.xData && this.xData.length && (this.xIncrement = F(this.xData), this.autoIncrement()); return !0
                            }; b.prototype.setData = function (c, d, e, h) {
                                var b = this, k = b.points, g = k && k.length || 0, m, l = b.options, n = b.chart, f = l.dataSorting, q = null, p = b.xAxis; q = l.turboThreshold; var v = this.xData, u = this.yData, w = (m = b.pointArrayMap) && m.length, r = l.keys, z = 0, t = 1, E; c = c || []; m = c.length; d = G(d, !0); f && f.enabled && (c = this.sortData(c)); !1 !== h && m && g && !b.cropped &&
                                    !b.hasGroupedData && b.visible && !b.isSeriesBoosting && (E = this.updateData(c, e)); if (!E) {
                                    b.xIncrement = null; b.colorCounter = 0; this.parallelArrays.forEach(function (a) { b[a + "Data"].length = 0 }); if (q && m > q) if (q = b.getFirstValidPoint(c), S(q)) for (e = 0; e < m; e++)v[e] = this.autoIncrement(), u[e] = c[e]; else if (L(q)) if (w) for (e = 0; e < m; e++)h = c[e], v[e] = h[0], u[e] = h.slice(1, w + 1); else for (r && (z = r.indexOf("x"), t = r.indexOf("y"), z = 0 <= z ? z : 0, t = 0 <= t ? t : 1), e = 0; e < m; e++)h = c[e], v[e] = h[z], u[e] = h[t]; else a(12, !1, n); else for (e = 0; e < m; e++)"undefined" !==
                                        typeof c[e] && (h = { series: b }, b.pointClass.prototype.applyOptions.apply(h, [c[e]]), b.updateParallelArrays(h, e)); u && Y(u[0]) && a(14, !0, n); b.data = []; b.options.data = b.userOptions.data = c; for (e = g; e--;)k[e] && k[e].destroy && k[e].destroy(); p && (p.minRange = p.userMinRange); b.isDirty = n.isDirtyBox = !0; b.isDirtyData = !!k; e = !1
                                    } "point" === l.legendType && (this.processData(), this.generatePoints()); d && n.redraw(e)
                            }; b.prototype.sortData = function (a) {
                                var d = this, e = d.options.dataSorting.sortKey || "y", h = function (a, d) {
                                    return c(d) && a.pointClass.prototype.optionsToObject.call({ series: a },
                                        d) || {}
                                }; a.forEach(function (c, e) { a[e] = h(d, c); a[e].index = e }, this); a.concat().sort(function (a, c) { a = E(e, a); c = E(e, c); return c < a ? -1 : c > a ? 1 : 0 }).forEach(function (a, c) { a.x = c }, this); d.linkedSeries && d.linkedSeries.forEach(function (c) { var d = c.options, e = d.data; d.dataSorting && d.dataSorting.enabled || !e || (e.forEach(function (d, b) { e[b] = h(c, d); a[b] && (e[b].x = a[b].x, e[b].index = b) }), c.setData(e, !1)) }); return a
                            }; b.prototype.getProcessedData = function (c) {
                                var d = this.xData, e = this.yData, b = d.length; var h = 0; var k = this.xAxis, g =
                                    this.options; var m = g.cropThreshold; var l = c || this.getExtremesFromAll || g.getExtremesFromAll, n = this.isCartesian; c = k && k.val2lin; g = !(!k || !k.logarithmic); var f = this.requireSorting; if (k) { k = k.getExtremes(); var q = k.min; var p = k.max } if (n && this.sorted && !l && (!m || b > m || this.forceCrop)) if (d[b - 1] < q || d[0] > p) d = [], e = []; else if (this.yData && (d[0] < q || d[b - 1] > p)) { h = this.cropData(this.xData, this.yData, q, p); d = h.xData; e = h.yData; h = h.start; var v = !0 } for (m = d.length || 1; --m;)if (b = g ? c(d[m]) - c(d[m - 1]) : d[m] - d[m - 1], 0 < b && ("undefined" ===
                                        typeof u || b < u)) var u = b; else 0 > b && f && (a(15, !1, this.chart), f = !1); return { xData: d, yData: e, cropped: v, cropStart: h, closestPointRange: u }
                            }; b.prototype.processData = function (a) { var c = this.xAxis; if (this.isCartesian && !this.isDirty && !c.isDirty && !this.yAxis.isDirty && !a) return !1; a = this.getProcessedData(); this.cropped = a.cropped; this.cropStart = a.cropStart; this.processedXData = a.xData; this.processedYData = a.yData; this.closestPointRange = this.basePointRange = a.closestPointRange }; b.prototype.cropData = function (a, c, d, e, b) {
                                var h =
                                    a.length, k = 0, g = h, m; b = G(b, this.cropShoulder); for (m = 0; m < h; m++)if (a[m] >= d) { k = Math.max(0, m - b); break } for (d = m; d < h; d++)if (a[d] > e) { g = d + b; break } return { xData: a.slice(k, g), yData: c.slice(k, g), start: k, end: g }
                            }; b.prototype.generatePoints = function () {
                                var a = this.options, c = a.data, d = this.data, e, b = this.processedXData, h = this.processedYData, g = this.pointClass, m = b.length, l = this.cropStart || 0, n = this.hasGroupedData, f = a.keys, q = [], p; a = a.dataGrouping && a.dataGrouping.groupAll ? l : 0; d || n || (d = [], d.length = c.length, d = this.data = d); f &&
                                    n && (this.options.keys = !1); for (p = 0; p < m; p++) { var u = l + p; if (n) { var w = (new g).init(this, [b[p]].concat(J(h[p]))); w.dataGroup = this.groupMap[a + p]; w.dataGroup.options && (w.options = w.dataGroup.options, k(w, w.dataGroup.options), delete w.dataLabels) } else (w = d[u]) || "undefined" === typeof c[u] || (d[u] = w = (new g).init(this, c[u], b[p])); w && (w.index = n ? a + p : u, q[p] = w) } this.options.keys = f; if (d && (m !== (e = d.length) || n)) for (p = 0; p < e; p++)p !== l || n || (p += m), d[p] && (d[p].destroyElements(), d[p].plotX = void 0); this.data = d; this.points = q; v(this,
                                        "afterGeneratePoints")
                            }; b.prototype.getXExtremes = function (a) { return { min: w(a), max: F(a) } }; b.prototype.getExtremes = function (a, c) {
                                var d = this.xAxis, e = this.yAxis, b = this.processedXData || this.xData, h = [], k = 0, g = 0; var m = 0; var l = this.requireSorting ? this.cropShoulder : 0, n = e ? e.positiveValuesOnly : !1, f; a = a || this.stackedYData || this.processedYData || []; e = a.length; d && (m = d.getExtremes(), g = m.min, m = m.max); for (f = 0; f < e; f++) {
                                    var q = b[f]; var p = a[f]; var u = (S(p) || L(p)) && (p.length || 0 < p || !n); q = c || this.getExtremesFromAll || this.options.getExtremesFromAll ||
                                        this.cropped || !d || (b[f + l] || q) >= g && (b[f - l] || q) <= m; if (u && q) if (u = p.length) for (; u--;)S(p[u]) && (h[k++] = p[u]); else h[k++] = p
                                } a = { dataMin: w(h), dataMax: F(h) }; v(this, "afterGetExtremes", { dataExtremes: a }); return a
                            }; b.prototype.applyExtremes = function () { var a = this.getExtremes(); this.dataMin = a.dataMin; this.dataMax = a.dataMax; return a }; b.prototype.getFirstValidPoint = function (a) { for (var c = null, d = a.length, e = 0; null === c && e < d;)c = a[e], e++; return c }; b.prototype.translate = function () {
                            this.processedXData || this.processData();
                                this.generatePoints(); var a = this.options, d = a.stacking, e = this.xAxis, b = e.categories, h = this.enabledDataSorting, k = this.yAxis, g = this.points, l = g.length, n = !!this.modifyValue, f, q = this.pointPlacementToXValue(), p = !!q, u = a.threshold, w = a.startFromThreshold ? u : 0, r, t = this.zoneAxis || "y", E = Number.MAX_VALUE; for (f = 0; f < l; f++) {
                                    var x = g[f], H = x.x, F = x.y, B = x.low, M = d && k.stacking && k.stacking.stacks[(this.negStacks && F < (w ? 0 : u) ? "-" : "") + this.stackKey], C = void 0, A = void 0; if (k.positiveValuesOnly && !k.validatePositiveValue(F) || e.positiveValuesOnly &&
                                        !e.validatePositiveValue(H)) x.isNull = !0; x.plotX = r = m(z(e.translate(H, 0, 0, 0, 1, q, "flags" === this.type), -1E5, 1E5)); if (d && this.visible && M && M[H]) { var y = this.getStackIndicator(y, H, this.index); x.isNull || (C = M[H], A = C.points[y.key]) } L(A) && (B = A[0], F = A[1], B === w && y.key === M[H].base && (B = G(S(u) && u, k.min)), k.positiveValuesOnly && 0 >= B && (B = null), x.total = x.stackTotal = C.total, x.percentage = C.total && x.y / C.total * 100, x.stackY = F, this.irregularWidths || C.setOffset(this.pointXOffset || 0, this.barW || 0)); x.yBottom = c(B) ? z(k.translate(B,
                                            0, 1, 0, 1), -1E5, 1E5) : null; n && (F = this.modifyValue(F, x)); x.plotY = void 0; S(F) && (F = k.translate(F, !1, !0, !1, !0), "undefined" !== typeof F && (x.plotY = z(F, -1E5, 1E5))); x.isInside = this.isPointInside(x); x.clientX = p ? m(e.translate(H, 0, 0, 0, 1, q)) : r; x.negative = x[t] < (a[t + "Threshold"] || u || 0); x.category = b && "undefined" !== typeof b[x.x] ? b[x.x] : x.x; if (!x.isNull && !1 !== x.visible) { "undefined" !== typeof I && (E = Math.min(E, Math.abs(r - I))); var I = r } x.zone = this.zones.length && x.getZone(); !x.graphic && this.group && h && (x.isNew = !0)
                                } this.closestPointRangePx =
                                    E; v(this, "afterTranslate")
                            }; b.prototype.getValidPoints = function (a, c, d) { var e = this.chart; return (a || this.points || []).filter(function (a) { return c && !e.isInsidePlot(a.plotX, a.plotY, { inverted: e.inverted }) ? !1 : !1 !== a.visible && (d || !a.isNull) }) }; b.prototype.getClipBox = function (a, c) {
                                var d = this.options, e = this.chart, b = e.inverted, h = this.xAxis, k = h && this.yAxis, g = e.options.chart.scrollablePlotArea || {}; a && !1 === d.clip && k ? a = b ? {
                                    y: -e.chartWidth + k.len + k.pos, height: e.chartWidth, width: e.chartHeight, x: -e.chartHeight + h.len +
                                        h.pos
                                } : { y: -k.pos, height: e.chartHeight, width: e.chartWidth, x: -h.pos } : (a = this.clipBox || e.clipBox, c && (a.width = e.plotSizeX, a.x = (e.scrollablePixelsX || 0) * (g.scrollPositionX || 0))); return c ? { width: a.width, x: a.x } : a
                            }; b.prototype.getSharedClipKey = function (a) { if (this.sharedClipKey) return this.sharedClipKey; var c = [a && a.duration, a && a.easing, a && a.defer, this.getClipBox(a).height, this.options.xAxis, this.options.yAxis].join(); if (!1 !== this.options.clip || a) this.sharedClipKey = c; return c }; b.prototype.setClip = function (a) {
                                var c =
                                    this.chart, d = this.options, e = c.renderer, b = c.inverted, h = this.clipBox, k = this.getClipBox(a), g = this.getSharedClipKey(a), m = c.sharedClips[g], l = c.sharedClips[g + "m"]; a && (k.width = 0, b && (k.x = c.plotHeight + (!1 !== d.clip ? 0 : c.plotTop))); m ? c.hasLoaded || m.attr(k) : (a && (c.sharedClips[g + "m"] = l = e.clipRect(b ? (c.plotSizeX || 0) + 99 : -99, b ? -c.plotLeft : -c.plotTop, 99, b ? c.chartWidth : c.chartHeight)), c.sharedClips[g] = m = e.clipRect(k), m.count = { length: 0 }); a && !m.count[this.index] && (m.count[this.index] = !0, m.count.length += 1); if (!1 !== d.clip ||
                                        a) this.group.clip(a || h ? m : c.clipRect), this.markerGroup.clip(l); a || (m.count[this.index] && (delete m.count[this.index], --m.count.length), 0 === m.count.length && (h || (c.sharedClips[g] = m.destroy()), l && (c.sharedClips[g + "m"] = l.destroy())))
                            }; b.prototype.animate = function (a) {
                                var c = this.chart, d = l(this.options.animation), e = this.sharedClipKey; if (a) this.setClip(d); else if (e) {
                                    a = c.sharedClips[e]; e = c.sharedClips[e + "m"]; var b = this.getClipBox(d, !0); a && a.animate(b, d); e && e.animate({ width: b.width + 99, x: b.x - (c.inverted ? 0 : 99) },
                                        d)
                                }
                            }; b.prototype.afterAnimate = function () { this.setClip(); v(this, "afterAnimate"); this.finishedAnimating = !0 }; b.prototype.drawPoints = function () {
                                var a = this.points, c = this.chart, d, e, b = this.options.marker, h = this[this.specialGroup] || this.markerGroup, k = this.xAxis, g = G(b.enabled, !k || k.isRadial ? !0 : null, this.closestPointRangePx >= b.enabledThreshold * b.radius); if (!1 !== b.enabled || this._hasPointMarkers) for (d = 0; d < a.length; d++) {
                                    var m = a[d]; var l = (e = m.graphic) ? "animate" : "attr"; var n = m.marker || {}; var f = !!m.marker; if ((g &&
                                        "undefined" === typeof n.enabled || n.enabled) && !m.isNull && !1 !== m.visible) {
                                            var q = G(n.symbol, this.symbol); var p = this.markerAttribs(m, m.selected && "select"); this.enabledDataSorting && (m.startXPos = k.reversed ? -(p.width || 0) : k.width); var v = !1 !== m.isInside; e ? e[v ? "show" : "hide"](v).animate(p) : v && (0 < (p.width || 0) || m.hasImage) && (m.graphic = e = c.renderer.symbol(q, p.x, p.y, p.width, p.height, f ? n : b).add(h), this.enabledDataSorting && c.hasRendered && (e.attr({ x: m.startXPos }), l = "animate")); e && "animate" === l && e[v ? "show" : "hide"](v).animate(p);
                                        if (e && !c.styledMode) e[l](this.pointAttribs(m, m.selected && "select")); e && e.addClass(m.getClassName(), !0)
                                    } else e && (m.graphic = e.destroy())
                                }
                            }; b.prototype.markerAttribs = function (a, c) { var d = this.options, e = d.marker, b = a.marker || {}, h = b.symbol || e.symbol, k = G(b.radius, e.radius); c && (e = e.states[c], c = b.states && b.states[c], k = G(c && c.radius, e && e.radius, k + (e && e.radiusPlus || 0))); a.hasImage = h && 0 === h.indexOf("url"); a.hasImage && (k = 0); a = { x: d.crisp ? Math.floor(a.plotX - k) : a.plotX - k, y: a.plotY - k }; k && (a.width = a.height = 2 * k); return a };
                            b.prototype.pointAttribs = function (a, c) {
                                var d = this.options.marker, e = a && a.options, b = e && e.marker || {}, h = this.color, k = e && e.color, g = a && a.color; e = G(b.lineWidth, d.lineWidth); var m = a && a.zone && a.zone.color; a = 1; h = k || m || g || h; k = b.fillColor || d.fillColor || h; h = b.lineColor || d.lineColor || h; c = c || "normal"; d = d.states[c]; c = b.states && b.states[c] || {}; e = G(c.lineWidth, d.lineWidth, e + G(c.lineWidthPlus, d.lineWidthPlus, 0)); k = c.fillColor || d.fillColor || k; h = c.lineColor || d.lineColor || h; a = G(c.opacity, d.opacity, a); return {
                                    stroke: h, "stroke-width": e,
                                    fill: k, opacity: a
                                }
                            }; b.prototype.destroy = function (a) {
                                var c = this, d = c.chart, e = /AppleWebKit\/533/.test(u.navigator.userAgent), b, h, k = c.data || [], g, m; v(c, "destroy"); this.removeEvents(a); (c.axisTypes || []).forEach(function (a) { (m = c[a]) && m.series && (n(m.series, c), m.isDirty = m.forceRedraw = !0) }); c.legendItem && c.chart.legend.destroyItem(c); for (h = k.length; h--;)(g = k[h]) && g.destroy && g.destroy(); c.clips && c.clips.forEach(function (a) { return a.destroy() }); p.clearTimeout(c.animationTimeout); O(c, function (a, c) {
                                a instanceof
                                    r && !a.survive && (b = e && "group" === c ? "hide" : "destroy", a[b]())
                                }); d.hoverSeries === c && (d.hoverSeries = void 0); n(d.series, c); d.orderSeries(); O(c, function (d, e) { a && "hcEvents" === e || delete c[e] })
                            }; b.prototype.applyZones = function () {
                                var a = this, c = this.chart, d = c.renderer, e = this.zones, b, h, k = this.clips || [], g, m = this.graph, l = this.area, n = Math.max(c.chartWidth, c.chartHeight), f = this[(this.zoneAxis || "y") + "Axis"], q = c.inverted, p, v, u, w = !1, r, t; if (e.length && (m || l) && f && "undefined" !== typeof f.min) {
                                    var x = f.reversed; var E = f.horiz;
                                    m && !this.showLine && m.hide(); l && l.hide(); var H = f.getExtremes(); e.forEach(function (e, F) {
                                        b = x ? E ? c.plotWidth : 0 : E ? 0 : f.toPixels(H.min) || 0; b = z(G(h, b), 0, n); h = z(Math.round(f.toPixels(G(e.value, H.max), !0) || 0), 0, n); w && (b = h = f.toPixels(H.max)); p = Math.abs(b - h); v = Math.min(b, h); u = Math.max(b, h); f.isXAxis ? (g = { x: q ? u : v, y: 0, width: p, height: n }, E || (g.x = c.plotHeight - g.x)) : (g = { x: 0, y: q ? u : v, width: n, height: p }, E && (g.y = c.plotWidth - g.y)); q && d.isVML && (g = f.isXAxis ? { x: 0, y: x ? v : u, height: g.width, width: c.chartWidth } : {
                                            x: g.y - c.plotLeft - c.spacingBox.x,
                                            y: 0, width: g.height, height: c.chartHeight
                                        }); k[F] ? k[F].animate(g) : k[F] = d.clipRect(g); r = a["zone-area-" + F]; t = a["zone-graph-" + F]; m && t && t.clip(k[F]); l && r && r.clip(k[F]); w = e.value > H.max; a.resetZones && 0 === h && (h = void 0)
                                    }); this.clips = k
                                } else a.visible && (m && m.show(!0), l && l.show(!0))
                            }; b.prototype.invertGroups = function (a) {
                                function c() {
                                    ["group", "markerGroup"].forEach(function (c) {
                                    d[c] && (e.renderer.isVML && d[c].attr({ width: d.yAxis.len, height: d.xAxis.len }), d[c].width = d.yAxis.len, d[c].height = d.xAxis.len, d[c].invert(d.isRadialSeries ?
                                        !1 : a))
                                    })
                                } var d = this, e = d.chart; d.xAxis && (d.eventsToUnbind.push(K(e, "resize", c)), c(), d.invertGroups = c)
                            }; b.prototype.plotGroup = function (a, d, e, b, h) {
                                var k = this[a], g = !k; e = { visibility: e, zIndex: b || .1 }; "undefined" === typeof this.opacity || this.chart.styledMode || "inactive" === this.state || (e.opacity = this.opacity); g && (this[a] = k = this.chart.renderer.g().add(h)); k.addClass("highcharts-" + d + " highcharts-series-" + this.index + " highcharts-" + this.type + "-series " + (c(this.colorIndex) ? "highcharts-color-" + this.colorIndex + " " :
                                    "") + (this.options.className || "") + (k.hasClass("highcharts-tracker") ? " highcharts-tracker" : ""), !0); k.attr(e)[g ? "attr" : "animate"](this.getPlotBox()); return k
                            }; b.prototype.getPlotBox = function () { var a = this.chart, c = this.xAxis, d = this.yAxis; a.inverted && (c = d, d = this.xAxis); return { translateX: c ? c.left : a.plotLeft, translateY: d ? d.top : a.plotTop, scaleX: 1, scaleY: 1 } }; b.prototype.removeEvents = function (a) {
                                a || x(this); this.eventsToUnbind.length && (this.eventsToUnbind.forEach(function (a) { a() }), this.eventsToUnbind.length =
                                    0)
                            }; b.prototype.render = function () {
                                var a = this, c = a.chart, d = a.options, e = l(d.animation), b = !a.finishedAnimating && c.renderer.isSVG && e.duration, h = a.visible ? "inherit" : "hidden", k = d.zIndex, g = a.hasRendered, m = c.seriesGroup, n = c.inverted; v(this, "render"); var f = a.plotGroup("group", "series", h, k, m); a.markerGroup = a.plotGroup("markerGroup", "markers", h, k, m); b && a.animate && a.animate(!0); f.inverted = G(a.invertible, a.isCartesian) ? n : !1; a.drawGraph && (a.drawGraph(), a.applyZones()); a.visible && a.drawPoints(); a.drawDataLabels &&
                                    a.drawDataLabels(); a.redrawPoints && a.redrawPoints(); a.drawTracker && !1 !== a.options.enableMouseTracking && a.drawTracker(); a.invertGroups(n); !1 === d.clip || a.sharedClipKey || g || f.clip(c.clipRect); b && a.animate && a.animate(); g || (b && e.defer && (b += e.defer), a.animationTimeout = Z(function () { a.afterAnimate() }, b || 0)); a.isDirty = !1; a.hasRendered = !0; v(a, "afterRender")
                            }; b.prototype.redraw = function () {
                                var a = this.chart, c = this.isDirty || this.isDirtyData, d = this.group, e = this.xAxis, b = this.yAxis; d && (a.inverted && d.attr({
                                    width: a.plotWidth,
                                    height: a.plotHeight
                                }), d.animate({ translateX: G(e && e.left, a.plotLeft), translateY: G(b && b.top, a.plotTop) })); this.translate(); this.render(); c && delete this.kdTree
                            }; b.prototype.searchPoint = function (a, c) { var d = this.xAxis, e = this.yAxis, b = this.chart.inverted; return this.searchKDTree({ clientX: b ? d.len - a.chartY + d.pos : a.chartX - d.pos, plotY: b ? e.len - a.chartX + e.pos : a.chartY - e.pos }, c, a) }; b.prototype.buildKDTree = function (a) {
                                function c(a, e, b) {
                                    var h; if (h = a && a.length) {
                                        var k = d.kdAxisArray[e % b]; a.sort(function (a, c) {
                                            return a[k] -
                                                c[k]
                                        }); h = Math.floor(h / 2); return { point: a[h], left: c(a.slice(0, h), e + 1, b), right: c(a.slice(h + 1), e + 1, b) }
                                    }
                                } this.buildingKdTree = !0; var d = this, e = -1 < d.options.findNearestPointBy.indexOf("y") ? 2 : 1; delete d.kdTree; Z(function () { d.kdTree = c(d.getValidPoints(null, !d.directTouch), e, e); d.buildingKdTree = !1 }, d.options.kdNow || a && "touchstart" === a.type ? 0 : 1)
                            }; b.prototype.searchKDTree = function (a, d, e) {
                                function b(a, d, e, l) {
                                    var n = d.point, f = h.kdAxisArray[e % l], q = n; var p = c(a[k]) && c(n[k]) ? Math.pow(a[k] - n[k], 2) : null; var v = c(a[g]) &&
                                        c(n[g]) ? Math.pow(a[g] - n[g], 2) : null; v = (p || 0) + (v || 0); n.dist = c(v) ? Math.sqrt(v) : Number.MAX_VALUE; n.distX = c(p) ? Math.sqrt(p) : Number.MAX_VALUE; f = a[f] - n[f]; v = 0 > f ? "left" : "right"; p = 0 > f ? "right" : "left"; d[v] && (v = b(a, d[v], e + 1, l), q = v[m] < q[m] ? v : n); d[p] && Math.sqrt(f * f) < q[m] && (a = b(a, d[p], e + 1, l), q = a[m] < q[m] ? a : q); return q
                                } var h = this, k = this.kdAxisArray[0], g = this.kdAxisArray[1], m = d ? "distX" : "dist"; d = -1 < h.options.findNearestPointBy.indexOf("y") ? 2 : 1; this.kdTree || this.buildingKdTree || this.buildKDTree(e); if (this.kdTree) return b(a,
                                    this.kdTree, d, d)
                            }; b.prototype.pointPlacementToXValue = function () { var a = this.options, c = a.pointRange, d = this.xAxis; a = a.pointPlacement; "between" === a && (a = d.reversed ? -.5 : .5); return S(a) ? a * (c || d.pointRange) : 0 }; b.prototype.isPointInside = function (a) { return "undefined" !== typeof a.plotY && "undefined" !== typeof a.plotX && 0 <= a.plotY && a.plotY <= this.yAxis.len && 0 <= a.plotX && a.plotX <= this.xAxis.len }; b.prototype.drawTracker = function () {
                                var a = this, c = a.options, b = c.trackByArea, h = [].concat(b ? a.areaPath : a.graphPath), k = a.chart,
                                g = k.pointer, m = k.renderer, l = k.options.tooltip.snap, n = a.tracker, f = function (c) { if (k.hoverSeries !== a) a.onMouseOver() }, q = "rgba(192,192,192," + (d ? .0001 : .002) + ")"; n ? n.attr({ d: h }) : a.graph && (a.tracker = m.path(h).attr({ visibility: a.visible ? "visible" : "hidden", zIndex: 2 }).addClass(b ? "highcharts-tracker-area" : "highcharts-tracker-line").add(a.group), k.styledMode || a.tracker.attr({ "stroke-linecap": "round", "stroke-linejoin": "round", stroke: q, fill: b ? q : "none", "stroke-width": a.graph.strokeWidth() + (b ? 0 : 2 * l) }), [a.tracker,
                                a.markerGroup, a.dataLabelsGroup].forEach(function (a) { if (a && (a.addClass("highcharts-tracker").on("mouseover", f).on("mouseout", function (a) { g.onTrackerMouseOut(a) }), c.cursor && !k.styledMode && a.css({ cursor: c.cursor }), e)) a.on("touchstart", f) })); v(this, "afterDrawTracker")
                            }; b.prototype.addPoint = function (a, c, d, e, b) {
                                var h = this.options, k = this.data, g = this.chart, m = this.xAxis; m = m && m.hasNames && m.names; var l = h.data, n = this.xData, f; c = G(c, !0); var q = { series: this }; this.pointClass.prototype.applyOptions.apply(q, [a]); var p =
                                    q.x; var u = n.length; if (this.requireSorting && p < n[u - 1]) for (f = !0; u && n[u - 1] > p;)u--; this.updateParallelArrays(q, "splice", u, 0, 0); this.updateParallelArrays(q, u); m && q.name && (m[p] = q.name); l.splice(u, 0, a); f && (this.data.splice(u, 0, null), this.processData()); "point" === h.legendType && this.generatePoints(); d && (k[0] && k[0].remove ? k[0].remove(!1) : (k.shift(), this.updateParallelArrays(q, "shift"), l.shift())); !1 !== b && v(this, "addPoint", { point: q }); this.isDirtyData = this.isDirty = !0; c && g.redraw(e)
                            }; b.prototype.removePoint = function (a,
                                c, d) { var e = this, b = e.data, h = b[a], k = e.points, m = e.chart, l = function () { k && k.length === b.length && k.splice(a, 1); b.splice(a, 1); e.options.data.splice(a, 1); e.updateParallelArrays(h || { series: e }, "splice", a, 1); h && h.destroy(); e.isDirty = !0; e.isDirtyData = !0; c && m.redraw() }; g(d, m); c = G(c, !0); h ? h.firePointEvent("remove", null, l) : l() }; b.prototype.remove = function (a, c, d, e) { function b() { h.destroy(e); k.isDirtyLegend = k.isDirtyBox = !0; k.linkSeries(); G(a, !0) && k.redraw(c) } var h = this, k = h.chart; !1 !== d ? v(h, "remove", null, b) : b() }; b.prototype.update =
                                    function (c, d) {
                                        c = q(c, this.userOptions); v(this, "update", { options: c }); var e = this, b = e.chart, h = e.userOptions, g = e.initialType || e.type, m = b.options.plotOptions, l = c.type || h.type || b.options.chart.type, n = !(this.hasDerivedData || l && l !== this.type || "undefined" !== typeof c.pointStart || "undefined" !== typeof c.pointInterval || e.hasOptionChanged("dataGrouping") || e.hasOptionChanged("pointStart") || e.hasOptionChanged("pointInterval") || e.hasOptionChanged("pointIntervalUnit") || e.hasOptionChanged("keys")), f = B[g].prototype, p,
                                            u = ["eventOptions", "navigatorSeries", "baseSeries"], w = e.finishedAnimating && { animation: !1 }, r = {}; l = l || g; n && (u.push("data", "isDirtyData", "points", "processedXData", "processedYData", "xIncrement", "cropped", "_hasPointMarkers", "_hasPointLabels", "clips", "nodes", "layout", "mapMap", "mapData", "minY", "maxY", "minX", "maxX"), !1 !== c.visible && u.push("area", "graph"), e.parallelArrays.forEach(function (a) { u.push(a + "Data") }), c.data && (c.dataSorting && k(e.options.dataSorting, c.dataSorting), this.setData(c.data, !1))); c = R(h, w, {
                                                index: "undefined" ===
                                                    typeof h.index ? e.index : h.index, pointStart: G(m && m.series && m.series.pointStart, h.pointStart, e.xData[0])
                                            }, !n && { data: e.options.data }, c); n && c.data && (c.data = e.options.data); u = ["group", "markerGroup", "dataLabelsGroup", "transformGroup"].concat(u); u.forEach(function (a) { u[a] = e[a]; delete e[a] }); h = !1; if (B[l]) {
                                                if (h = l !== e.type, e.remove(!1, !1, !1, !0), h) if (Object.setPrototypeOf) Object.setPrototypeOf(e, B[l].prototype); else {
                                                    m = Object.hasOwnProperty.call(e, "hcEvents") && e.hcEvents; for (p in f) e[p] = void 0; k(e, B[l].prototype);
                                                    m ? e.hcEvents = m : delete e.hcEvents
                                                }
                                            } else a(17, !0, b, { missingModuleFor: l }); u.forEach(function (a) { e[a] = u[a] }); e.init(b, c); if (n && this.points) { var z = e.options; !1 === z.visible ? (r.graphic = 1, r.dataLabel = 1) : e._hasPointLabels || (c = z.marker, l = z.dataLabels, c && (!1 === c.enabled || "symbol" in c) && (r.graphic = 1), l && !1 === l.enabled && (r.dataLabel = 1)); this.points.forEach(function (a) { a && a.series && (a.resolveColor(), Object.keys(r).length && a.destroyElements(r), !1 === z.showInLegend && a.legendItem && b.legend.destroyItem(a)) }, this) } e.initialType =
                                                g; b.linkSeries(); h && e.linkedSeries.length && (e.isDirtyData = !0); v(this, "afterUpdate"); G(d, !0) && b.redraw(n ? void 0 : !1)
                                    }; b.prototype.setName = function (a) { this.name = this.options.name = this.userOptions.name = a; this.chart.isDirtyLegend = !0 }; b.prototype.hasOptionChanged = function (a) { var c = this.options[a], d = this.chart.options.plotOptions, e = this.userOptions[a]; return e ? c !== e : c !== G(d && d[this.type] && d[this.type][a], d && d.series && d.series[a], c) }; b.prototype.onMouseOver = function () {
                                        var a = this.chart, c = a.hoverSeries; a.pointer.setHoverChartIndex();
                                        if (c && c !== this) c.onMouseOut(); this.options.events.mouseOver && v(this, "mouseOver"); this.setState("hover"); a.hoverSeries = this
                                    }; b.prototype.onMouseOut = function () { var a = this.options, c = this.chart, d = c.tooltip, e = c.hoverPoint; c.hoverSeries = null; if (e) e.onMouseOut(); this && a.events.mouseOut && v(this, "mouseOut"); !d || this.stickyTracking || d.shared && !this.noSharedTooltip || d.hide(); c.series.forEach(function (a) { a.setState("", !0) }) }; b.prototype.setState = function (a, c) {
                                        var d = this, e = d.options, b = d.graph, h = e.inactiveOtherPoints,
                                        k = e.states, g = e.lineWidth, m = e.opacity, l = G(k[a || "normal"] && k[a || "normal"].animation, d.chart.options.chart.animation); e = 0; a = a || ""; if (d.state !== a && ([d.group, d.markerGroup, d.dataLabelsGroup].forEach(function (c) { c && (d.state && c.removeClass("highcharts-series-" + d.state), a && c.addClass("highcharts-series-" + a)) }), d.state = a, !d.chart.styledMode)) {
                                            if (k[a] && !1 === k[a].enabled) return; a && (g = k[a].lineWidth || g + (k[a].lineWidthPlus || 0), m = G(k[a].opacity, m)); if (b && !b.dashstyle) for (k = { "stroke-width": g }, b.animate(k, l); d["zone-graph-" +
                                                e];)d["zone-graph-" + e].animate(k, l), e += 1; h || [d.group, d.markerGroup, d.dataLabelsGroup, d.labelBySeries].forEach(function (a) { a && a.animate({ opacity: m }, l) })
                                        } c && h && d.points && d.setAllPointsToState(a || void 0)
                                    }; b.prototype.setAllPointsToState = function (a) { this.points.forEach(function (c) { c.setState && c.setState(a) }) }; b.prototype.setVisible = function (a, c) {
                                        var d = this, e = d.chart, b = d.legendItem, h = e.options.chart.ignoreHiddenSeries, k = d.visible; var g = (d.visible = a = d.options.visible = d.userOptions.visible = "undefined" ===
                                            typeof a ? !k : a) ? "show" : "hide";["group", "dataLabelsGroup", "markerGroup", "tracker", "tt"].forEach(function (a) { if (d[a]) d[a][g]() }); if (e.hoverSeries === d || (e.hoverPoint && e.hoverPoint.series) === d) d.onMouseOut(); b && e.legend.colorizeItem(d, a); d.isDirty = !0; d.options.stacking && e.series.forEach(function (a) { a.options.stacking && a.visible && (a.isDirty = !0) }); d.linkedSeries.forEach(function (c) { c.setVisible(a, !1) }); h && (e.isDirtyBox = !0); v(d, g); !1 !== c && e.redraw()
                                    }; b.prototype.show = function () { this.setVisible(!0) }; b.prototype.hide =
                                        function () { this.setVisible(!1) }; b.prototype.select = function (a) { this.selected = a = this.options.selected = "undefined" === typeof a ? !this.selected : a; this.checkbox && (this.checkbox.checked = a); v(this, a ? "select" : "unselect") }; b.prototype.shouldShowTooltip = function (a, c, d) { void 0 === d && (d = {}); d.series = this; d.visiblePlotOnly = !0; return this.chart.isInsidePlot(a, c, d) }; b.defaultOptions = {
                                            lineWidth: 2, allowPointSelect: !1, crisp: !0, showCheckbox: !1, animation: { duration: 1E3 }, events: {}, marker: {
                                                enabledThreshold: 2, lineColor: C.backgroundColor,
                                                lineWidth: 0, radius: 4, states: { normal: { animation: !0 }, hover: { animation: { duration: 50 }, enabled: !0, radiusPlus: 2, lineWidthPlus: 1 }, select: { fillColor: C.neutralColor20, lineColor: C.neutralColor100, lineWidth: 2 } }
                                            }, point: { events: {} }, dataLabels: { animation: {}, align: "center", defer: !0, formatter: function () { var a = this.series.chart.numberFormatter; return "number" !== typeof this.y ? "" : a(this.y, -1) }, padding: 5, style: { fontSize: "11px", fontWeight: "bold", color: "contrast", textOutline: "1px contrast" }, verticalAlign: "bottom", x: 0, y: 0 },
                                            cropThreshold: 300, opacity: 1, pointRange: 0, softThreshold: !0, states: { normal: { animation: !0 }, hover: { animation: { duration: 50 }, lineWidthPlus: 1, marker: {}, halo: { size: 10, opacity: .25 } }, select: { animation: { duration: 0 } }, inactive: { animation: { duration: 50 }, opacity: .2 } }, stickyTracking: !0, turboThreshold: 1E3, findNearestPointBy: "x"
                                        }; return b
                        }(); k(b.prototype, {
                            axisTypes: ["xAxis", "yAxis"], coll: "series", colorCounter: 0, cropShoulder: 1, directTouch: !1, drawLegendSymbol: D.drawLineMarker, isCartesian: !0, kdAxisArray: ["clientX", "plotY"],
                            parallelArrays: ["x", "y"], pointClass: A, requireSorting: !0, sorted: !0
                        }); t.series = b; ""; ""; return b
                    }); J(b, "Extensions/ScrollablePlotArea.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/Axis/Axis.js"], b["Core/Chart/Chart.js"], b["Core/Series/Series.js"], b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A) {
                        var t = b.stop, r = A.addEvent, p = A.createElement, l = A.merge, g = A.pick; ""; r(D, "afterSetChartSize", function (e) {
                            var d = this.options.chart.scrollablePlotArea, b = d && d.minWidth; d = d && d.minHeight; if (!this.renderer.forExport) {
                                if (b) {
                                    if (this.scrollablePixelsX =
                                        b = Math.max(0, b - this.chartWidth)) { this.scrollablePlotBox = this.renderer.scrollablePlotBox = l(this.plotBox); this.plotBox.width = this.plotWidth += b; this.inverted ? this.clipBox.height += b : this.clipBox.width += b; var g = { 1: { name: "right", value: b } } }
                                } else d && (this.scrollablePixelsY = b = Math.max(0, d - this.chartHeight)) && (this.scrollablePlotBox = this.renderer.scrollablePlotBox = l(this.plotBox), this.plotBox.height = this.plotHeight += b, this.inverted ? this.clipBox.width += b : this.clipBox.height += b, g = { 2: { name: "bottom", value: b } });
                                g && !e.skipAxes && this.axes.forEach(function (d) { g[d.side] ? d.getPlotLinePath = function () { var e = g[d.side].name, b = this[e]; this[e] = b - g[d.side].value; var l = C.Axis.prototype.getPlotLinePath.apply(this, arguments); this[e] = b; return l } : (d.setAxisSize(), d.setAxisTranslation()) })
                            }
                        }); r(D, "render", function () { this.scrollablePixelsX || this.scrollablePixelsY ? (this.setUpScrolling && this.setUpScrolling(), this.applyFixed()) : this.fixedDiv && this.applyFixed() }); D.prototype.setUpScrolling = function () {
                            var e = this, d = {
                                WebkitOverflowScrolling: "touch",
                                overflowX: "hidden", overflowY: "hidden"
                            }; this.scrollablePixelsX && (d.overflowX = "auto"); this.scrollablePixelsY && (d.overflowY = "auto"); this.scrollingParent = p("div", { className: "highcharts-scrolling-parent" }, { position: "relative" }, this.renderTo); this.scrollingContainer = p("div", { className: "highcharts-scrolling" }, d, this.scrollingParent); r(this.scrollingContainer, "scroll", function () { e.pointer && delete e.pointer.chartPosition }); this.innerContainer = p("div", { className: "highcharts-inner-container" }, null, this.scrollingContainer);
                            this.innerContainer.appendChild(this.container); this.setUpScrolling = null
                        }; D.prototype.moveFixedElements = function () {
                            var e = this.container, d = this.fixedRenderer, b = ".highcharts-contextbutton .highcharts-credits .highcharts-legend .highcharts-legend-checkbox .highcharts-navigator-series .highcharts-navigator-xaxis .highcharts-navigator-yaxis .highcharts-navigator .highcharts-reset-zoom .highcharts-drillup-button .highcharts-scrollbar .highcharts-subtitle .highcharts-title".split(" "), g; this.scrollablePixelsX &&
                                !this.inverted ? g = ".highcharts-yaxis" : this.scrollablePixelsX && this.inverted ? g = ".highcharts-xaxis" : this.scrollablePixelsY && !this.inverted ? g = ".highcharts-xaxis" : this.scrollablePixelsY && this.inverted && (g = ".highcharts-yaxis"); g && b.push(g + ":not(.highcharts-radial-axis)", g + "-labels:not(.highcharts-radial-axis-labels)"); b.forEach(function (b) { [].forEach.call(e.querySelectorAll(b), function (e) { (e.namespaceURI === d.SVG_NS ? d.box : d.box.parentNode).appendChild(e); e.style.pointerEvents = "auto" }) })
                        }; D.prototype.applyFixed =
                            function () {
                                var e = !this.fixedDiv; var d = this.options.chart; var b = d.scrollablePlotArea; e ? (this.fixedDiv = p("div", { className: "highcharts-fixed" }, { position: "absolute", overflow: "hidden", pointerEvents: "none", zIndex: (d.style && d.style.zIndex || 0) + 2, top: 0 }, null, !0), this.scrollingContainer && this.scrollingContainer.parentNode.insertBefore(this.fixedDiv, this.scrollingContainer), this.renderTo.style.overflow = "visible", this.fixedRenderer = d = new C.Renderer(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style),
                                    this.scrollableMask = d.path().attr({ fill: this.options.chart.backgroundColor || "#fff", "fill-opacity": g(b.opacity, .85), zIndex: -1 }).addClass("highcharts-scrollable-mask").add(), r(this, "afterShowResetZoom", this.moveFixedElements), r(this, "afterDrilldown", this.moveFixedElements), r(this, "afterLayOutTitles", this.moveFixedElements)) : this.fixedRenderer.setSize(this.chartWidth, this.chartHeight); if (this.scrollableDirty || e) this.scrollableDirty = !1, this.moveFixedElements(); d = this.chartWidth + (this.scrollablePixelsX ||
                                        0); var l = this.chartHeight + (this.scrollablePixelsY || 0); t(this.container); this.container.style.width = d + "px"; this.container.style.height = l + "px"; this.renderer.boxWrapper.attr({ width: d, height: l, viewBox: [0, 0, d, l].join(" ") }); this.chartBackground.attr({ width: d, height: l }); this.scrollingContainer.style.height = this.chartHeight + "px"; e && (b.scrollPositionX && (this.scrollingContainer.scrollLeft = this.scrollablePixelsX * b.scrollPositionX), b.scrollPositionY && (this.scrollingContainer.scrollTop = this.scrollablePixelsY *
                                            b.scrollPositionY)); l = this.axisOffset; e = this.plotTop - l[0] - 1; b = this.plotLeft - l[3] - 1; d = this.plotTop + this.plotHeight + l[2] + 1; l = this.plotLeft + this.plotWidth + l[1] + 1; var f = this.plotLeft + this.plotWidth - (this.scrollablePixelsX || 0), B = this.plotTop + this.plotHeight - (this.scrollablePixelsY || 0); e = this.scrollablePixelsX ? [["M", 0, e], ["L", this.plotLeft - 1, e], ["L", this.plotLeft - 1, d], ["L", 0, d], ["Z"], ["M", f, e], ["L", this.chartWidth, e], ["L", this.chartWidth, d], ["L", f, d], ["Z"]] : this.scrollablePixelsY ? [["M", b, 0], ["L", b, this.plotTop -
                                                1], ["L", l, this.plotTop - 1], ["L", l, 0], ["Z"], ["M", b, B], ["L", b, this.chartHeight], ["L", l, this.chartHeight], ["L", l, B], ["Z"]] : [["M", 0, 0]]; "adjustHeight" !== this.redrawTrigger && this.scrollableMask.attr({ d: e })
                            }; r(f, "afterInit", function () { this.chart.scrollableDirty = !0 }); r(y, "show", function () { this.chart.scrollableDirty = !0 })
                    }); J(b, "Core/Axis/StackingAxis.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/Utilities.js"]], function (b, f) {
                        var B = b.getDeferredAnimation, y = f.addEvent, C = f.destroyObjectProperties, A =
                            f.fireEvent, t = f.isNumber, r = f.objectEach, p = function () {
                                function b(b) { this.oldStacks = {}; this.stacks = {}; this.stacksTouched = 0; this.axis = b } b.prototype.buildStacks = function () { var b = this.axis, e = b.series, d = b.options.reversedStacks, l = e.length, f; if (!b.isXAxis) { this.usePercentage = !1; for (f = l; f--;) { var p = e[d ? f : l - f - 1]; p.setStackedPoints(); p.setGroupedPoints() } for (f = 0; f < l; f++)e[f].modifyStacks(); A(b, "afterBuildStacks") } }; b.prototype.cleanStacks = function () {
                                    if (!this.axis.isXAxis) {
                                        if (this.oldStacks) var b = this.stacks =
                                            this.oldStacks; r(b, function (e) { r(e, function (d) { d.cumulative = d.total }) })
                                    }
                                }; b.prototype.resetStacks = function () { var b = this, e = this.stacks; this.axis.isXAxis || r(e, function (d) { r(d, function (e, g) { t(e.touched) && e.touched < b.stacksTouched ? (e.destroy(), delete d[g]) : (e.total = null, e.cumulative = null) }) }) }; b.prototype.renderStackTotals = function () {
                                    var b = this.axis, e = b.chart, d = e.renderer, l = this.stacks; b = B(e, b.options.stackLabels && b.options.stackLabels.animation || !1); var f = this.stackTotalGroup = this.stackTotalGroup || d.g("stack-labels").attr({
                                        visibility: "visible",
                                        zIndex: 6, opacity: 0
                                    }).add(); f.translate(e.plotLeft, e.plotTop); r(l, function (d) { r(d, function (d) { d.render(f) }) }); f.animate({ opacity: 1 }, b)
                                }; return b
                            }(); return function () { function b() { } b.compose = function (g) { y(g, "init", b.onInit); y(g, "destroy", b.onDestroy) }; b.onDestroy = function () { var b = this.stacking; if (b) { var e = b.stacks; r(e, function (d, b) { C(d); e[b] = null }); b && b.stackTotalGroup && b.stackTotalGroup.destroy() } }; b.onInit = function () { this.stacking || (this.stacking = new p(this)) }; return b }()
                    }); J(b, "Extensions/Stacking.js",
                        [b["Core/Axis/Axis.js"], b["Core/Chart/Chart.js"], b["Core/FormatUtilities.js"], b["Core/Globals.js"], b["Core/Series/Series.js"], b["Core/Axis/StackingAxis.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t) {
                            var r = D.format, p = t.correctFloat, l = t.defined, g = t.destroyObjectProperties, e = t.isArray, d = t.isNumber, u = t.objectEach, H = t.pick; ""; var B = function () {
                                function e(d, e, b, g, m) {
                                    var c = d.chart.inverted; this.axis = d; this.isNegative = b; this.options = e = e || {}; this.x = g; this.total = null; this.points = {}; this.hasValidPoints =
                                        !1; this.stack = m; this.rightCliff = this.leftCliff = 0; this.alignOptions = { align: e.align || (c ? b ? "left" : "right" : "center"), verticalAlign: e.verticalAlign || (c ? "middle" : b ? "bottom" : "top"), y: e.y, x: e.x }; this.textAlign = e.textAlign || (c ? b ? "right" : "left" : "center")
                                } e.prototype.destroy = function () { g(this, this.axis) }; e.prototype.render = function (d) {
                                    var e = this.axis.chart, b = this.options, g = b.format; g = g ? r(g, this, e) : b.formatter.call(this); this.label ? this.label.attr({ text: g, visibility: "hidden" }) : (this.label = e.renderer.label(g,
                                        null, null, b.shape, null, null, b.useHTML, !1, "stack-labels"), g = { r: b.borderRadius || 0, text: g, rotation: b.rotation, padding: H(b.padding, 5), visibility: "hidden" }, e.styledMode || (g.fill = b.backgroundColor, g.stroke = b.borderColor, g["stroke-width"] = b.borderWidth, this.label.css(b.style)), this.label.attr(g), this.label.added || this.label.add(d)); this.label.labelrank = e.plotSizeY
                                }; e.prototype.setOffset = function (e, b, g, f, m) {
                                    var c = this.axis, n = c.chart; f = c.translate(c.stacking.usePercentage ? 100 : f ? f : this.total, 0, 0, 0, 1); g = c.translate(g ?
                                        g : 0); g = l(f) && Math.abs(f - g); e = H(m, n.xAxis[0].translate(this.x)) + e; c = l(f) && this.getStackBox(n, this, e, f, b, g, c); b = this.label; g = this.isNegative; e = "justify" === H(this.options.overflow, "justify"); var a = this.textAlign; b && c && (m = b.getBBox(), f = b.padding, a = "left" === a ? n.inverted ? -f : f : "right" === a ? m.width : n.inverted && "center" === a ? m.width / 2 : n.inverted ? g ? m.width + f : -f : m.width / 2, g = n.inverted ? m.height / 2 : g ? -f : m.height, this.alignOptions.x = H(this.options.x, 0), this.alignOptions.y = H(this.options.y, 0), c.x -= a, c.y -= g, b.align(this.alignOptions,
                                            null, c), n.isInsidePlot(b.alignAttr.x + a - this.alignOptions.x, b.alignAttr.y + g - this.alignOptions.y) ? b.show() : (b.alignAttr.y = -9999, e = !1), e && C.prototype.justifyDataLabel.call(this.axis, b, this.alignOptions, b.alignAttr, m, c), b.attr({ x: b.alignAttr.x, y: b.alignAttr.y }), H(!e && this.options.crop, !0) && ((n = d(b.x) && d(b.y) && n.isInsidePlot(b.x - f + b.width, b.y) && n.isInsidePlot(b.x + f, b.y)) || b.hide()))
                                }; e.prototype.getStackBox = function (d, e, b, g, m, c, l) {
                                    var a = e.axis.reversed, k = d.inverted, h = l.height + l.pos - (k ? d.plotLeft : d.plotTop);
                                    e = e.isNegative && !a || !e.isNegative && a; return { x: k ? e ? g - l.right : g - c + l.pos - d.plotLeft : b + d.xAxis[0].transB - d.plotLeft, y: k ? l.height - b - m : e ? h - g - c : h - g, width: k ? c : m, height: k ? m : c }
                                }; return e
                            }(); f.prototype.getStacks = function () {
                                var d = this, e = d.inverted; d.yAxis.forEach(function (d) { d.stacking && d.stacking.stacks && d.hasVisibleSeries && (d.stacking.oldStacks = d.stacking.stacks) }); d.series.forEach(function (b) {
                                    var g = b.xAxis && b.xAxis.options || {}; !b.options.stacking || !0 !== b.visible && !1 !== d.options.chart.ignoreHiddenSeries ||
                                        (b.stackKey = [b.type, H(b.options.stack, ""), e ? g.top : g.left, e ? g.height : g.width].join())
                                })
                            }; A.compose(b); C.prototype.setGroupedPoints = function () { var d = this.yAxis.stacking; this.options.centerInCategory && (this.is("column") || this.is("columnrange")) && !this.options.stacking && 1 < this.chart.series.length ? C.prototype.setStackedPoints.call(this, "group") : d && u(d.stacks, function (e, b) { "group" === b.slice(-5) && (u(e, function (d) { return d.destroy() }), delete d.stacks[b]) }) }; C.prototype.setStackedPoints = function (d) {
                                var b =
                                    d || this.options.stacking; if (b && (!0 === this.visible || !1 === this.chart.options.chart.ignoreHiddenSeries)) {
                                        var g = this.processedXData, f = this.processedYData, q = [], m = f.length, c = this.options, n = c.threshold, a = H(c.startFromThreshold && n, 0); c = c.stack; d = d ? this.type + "," + b : this.stackKey; var k = "-" + d, h = this.negStacks, v = this.yAxis, u = v.stacking.stacks, r = v.stacking.oldStacks, t, C; v.stacking.stacksTouched += 1; for (C = 0; C < m; C++) {
                                            var A = g[C]; var y = f[C]; var D = this.getStackIndicator(D, A, this.index); var G = D.key; var x = (t = h && y < (a ? 0 :
                                                n)) ? k : d; u[x] || (u[x] = {}); u[x][A] || (r[x] && r[x][A] ? (u[x][A] = r[x][A], u[x][A].total = null) : u[x][A] = new B(v, v.options.stackLabels, t, A, c)); x = u[x][A]; null !== y ? (x.points[G] = x.points[this.index] = [H(x.cumulative, a)], l(x.cumulative) || (x.base = G), x.touched = v.stacking.stacksTouched, 0 < D.index && !1 === this.singleStacks && (x.points[G][0] = x.points[this.index + "," + A + ",0"][0])) : x.points[G] = x.points[this.index] = null; "percent" === b ? (t = t ? d : k, h && u[t] && u[t][A] ? (t = u[t][A], x.total = t.total = Math.max(t.total, x.total) + Math.abs(y) || 0) :
                                                    x.total = p(x.total + (Math.abs(y) || 0))) : "group" === b ? (e(y) && (y = y[0]), null !== y && (x.total = (x.total || 0) + 1)) : x.total = p(x.total + (y || 0)); x.cumulative = "group" === b ? (x.total || 1) - 1 : H(x.cumulative, a) + (y || 0); null !== y && (x.points[G].push(x.cumulative), q[C] = x.cumulative, x.hasValidPoints = !0)
                                        } "percent" === b && (v.stacking.usePercentage = !0); "group" !== b && (this.stackedYData = q); v.stacking.oldStacks = {}
                                    }
                            }; C.prototype.modifyStacks = function () {
                                var d = this, e = d.stackKey, b = d.yAxis.stacking.stacks, g = d.processedXData, l, m = d.options.stacking;
                                d[m + "Stacker"] && [e, "-" + e].forEach(function (c) { for (var e = g.length, a, k; e--;)if (a = g[e], l = d.getStackIndicator(l, a, d.index, c), k = (a = b[c] && b[c][a]) && a.points[l.key]) d[m + "Stacker"](k, a, e) })
                            }; C.prototype.percentStacker = function (d, e, b) { e = e.total ? 100 / e.total : 0; d[0] = p(d[0] * e); d[1] = p(d[1] * e); this.stackedYData[b] = d[1] }; C.prototype.getStackIndicator = function (d, e, b, g) { !l(d) || d.x !== e || g && d.key !== g ? d = { x: e, index: 0, key: g } : d.index++; d.key = [b, e, d.index].join(); return d }; y.StackItem = B; return y.StackItem
                        }); J(b, "Series/Line/LineSeries.js",
                            [b["Core/Color/Palette.js"], b["Core/Series/Series.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
                                var B = this && this.__extends || function () { var b = function (f, l) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, e) { b.__proto__ = e } || function (b, e) { for (var d in e) e.hasOwnProperty(d) && (b[d] = e[d]) }; return b(f, l) }; return function (f, l) { function g() { this.constructor = f } b(f, l); f.prototype = null === l ? Object.create(l) : (g.prototype = l.prototype, new g) } }(), A = y.defined,
                                t = y.merge; y = function (r) {
                                    function p() { var b = null !== r && r.apply(this, arguments) || this; b.data = void 0; b.options = void 0; b.points = void 0; return b } B(p, r); p.prototype.drawGraph = function () {
                                        var l = this, g = this.options, e = (this.gappedPath || this.getGraphPath).call(this), d = this.chart.styledMode, f = [["graph", "highcharts-graph"]]; d || f[0].push(g.lineColor || this.color || b.neutralColor20, g.dashStyle); f = l.getZonesGraphs(f); f.forEach(function (b, f) {
                                            var p = b[0], u = l[p], r = u ? "animate" : "attr"; u ? (u.endX = l.preventGraphAnimation ? null :
                                                e.xMap, u.animate({ d: e })) : e.length && (l[p] = u = l.chart.renderer.path(e).addClass(b[1]).attr({ zIndex: 1 }).add(l.group)); u && !d && (p = { stroke: b[2], "stroke-width": g.lineWidth, fill: l.fillGraph && l.color || "none" }, b[3] ? p.dashstyle = b[3] : "square" !== g.linecap && (p["stroke-linecap"] = p["stroke-linejoin"] = "round"), u[r](p).shadow(2 > f && g.shadow)); u && (u.startX = e.xMap, u.isArea = e.isArea)
                                        })
                                    }; p.prototype.getGraphPath = function (b, g, e) {
                                        var d = this, l = d.options, f = l.step, p, r = [], t = [], w; b = b || d.points; (p = b.reversed) && b.reverse(); (f = {
                                            right: 1,
                                            center: 2
                                        }[f] || f && 3) && p && (f = 4 - f); b = this.getValidPoints(b, !1, !(l.connectNulls && !g && !e)); b.forEach(function (p, q) {
                                            var m = p.plotX, c = p.plotY, n = b[q - 1]; (p.leftCliff || n && n.rightCliff) && !e && (w = !0); p.isNull && !A(g) && 0 < q ? w = !l.connectNulls : p.isNull && !g ? w = !0 : (0 === q || w ? q = [["M", p.plotX, p.plotY]] : d.getPointSpline ? q = [d.getPointSpline(b, p, q)] : f ? (q = 1 === f ? [["L", n.plotX, c]] : 2 === f ? [["L", (n.plotX + m) / 2, n.plotY], ["L", (n.plotX + m) / 2, c]] : [["L", m, n.plotY]], q.push(["L", m, c])) : q = [["L", m, c]], t.push(p.x), f && (t.push(p.x), 2 === f && t.push(p.x)),
                                                r.push.apply(r, q), w = !1)
                                        }); r.xMap = t; return d.graphPath = r
                                    }; p.prototype.getZonesGraphs = function (b) { this.zones.forEach(function (g, e) { e = ["zone-graph-" + e, "highcharts-graph highcharts-zone-graph-" + e + " " + (g.className || "")]; this.chart.styledMode || e.push(g.color || this.color, g.dashStyle || this.options.dashStyle); b.push(e) }, this); return b }; p.defaultOptions = t(f.defaultOptions, {}); return p
                                }(f); D.registerSeriesType("line", y); ""; return y
                            }); J(b, "Series/Area/AreaSeries.js", [b["Core/Color/Color.js"], b["Mixins/LegendSymbol.js"],
                            b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
                                var B = this && this.__extends || function () { var b = function (e, d) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, e) { d.__proto__ = e } || function (d, e) { for (var b in e) e.hasOwnProperty(b) && (d[b] = e[b]) }; return b(e, d) }; return function (e, d) { function g() { this.constructor = e } b(e, d); e.prototype = null === d ? Object.create(d) : (g.prototype = d.prototype, new g) } }(), A = b.parse, t = D.seriesTypes.line; b = y.extend; var r = y.merge, p = y.objectEach,
                                    l = y.pick; y = function (b) {
                                        function e() { var d = null !== b && b.apply(this, arguments) || this; d.data = void 0; d.options = void 0; d.points = void 0; return d } B(e, b); e.prototype.drawGraph = function () {
                                        this.areaPath = []; b.prototype.drawGraph.apply(this); var d = this, e = this.areaPath, g = this.options, f = [["area", "highcharts-area", this.color, g.fillColor]]; this.zones.forEach(function (e, b) { f.push(["zone-area-" + b, "highcharts-area highcharts-zone-area-" + b + " " + e.className, e.color || d.color, e.fillColor || g.fillColor]) }); f.forEach(function (b) {
                                            var f =
                                                b[0], p = d[f], u = p ? "animate" : "attr", q = {}; p ? (p.endX = d.preventGraphAnimation ? null : e.xMap, p.animate({ d: e })) : (q.zIndex = 0, p = d[f] = d.chart.renderer.path(e).addClass(b[1]).add(d.group), p.isArea = !0); d.chart.styledMode || (q.fill = l(b[3], A(b[2]).setOpacity(l(g.fillOpacity, .75)).get())); p[u](q); p.startX = e.xMap; p.shiftUnit = g.step ? 2 : 1
                                        })
                                        }; e.prototype.getGraphPath = function (d) {
                                            var e = t.prototype.getGraphPath, b = this.options, g = b.stacking, f = this.yAxis, p, r = [], z = [], q = this.index, m = f.stacking.stacks[this.stackKey], c = b.threshold,
                                            n = Math.round(f.getThreshold(b.threshold)); b = l(b.connectNulls, "percent" === g); var a = function (a, e, b) { var k = d[a]; a = g && m[k.x].points[q]; var l = k[b + "Null"] || 0; b = k[b + "Cliff"] || 0; k = !0; if (b || l) { var p = (l ? a[0] : a[1]) + b; var v = a[0] + b; k = !!l } else !g && d[e] && d[e].isNull && (p = v = c); "undefined" !== typeof p && (z.push({ plotX: h, plotY: null === p ? n : f.getThreshold(p), isNull: k, isCliff: !0 }), r.push({ plotX: h, plotY: null === v ? n : f.getThreshold(v), doCurve: !1 })) }; d = d || this.points; g && (d = this.getStackPoints(d)); for (p = 0; p < d.length; p++) {
                                                g || (d[p].leftCliff =
                                                    d[p].rightCliff = d[p].leftNull = d[p].rightNull = void 0); var k = d[p].isNull; var h = l(d[p].rectPlotX, d[p].plotX); var v = g ? l(d[p].yBottom, n) : n; if (!k || b) b || a(p, p - 1, "left"), k && !g && b || (z.push(d[p]), r.push({ x: p, plotX: h, plotY: v })), b || a(p, p + 1, "right")
                                            } p = e.call(this, z, !0, !0); r.reversed = !0; k = e.call(this, r, !0, !0); (v = k[0]) && "M" === v[0] && (k[0] = ["L", v[1], v[2]]); k = p.concat(k); k.length && k.push(["Z"]); e = e.call(this, z, !1, b); k.xMap = p.xMap; this.areaPath = k; return e
                                        }; e.prototype.getStackPoints = function (d) {
                                            var e = this, b = [], g = [],
                                            f = this.xAxis, r = this.yAxis, t = r.stacking.stacks[this.stackKey], z = {}, q = r.series, m = q.length, c = r.options.reversedStacks ? 1 : -1, n = q.indexOf(e); d = d || this.points; if (this.options.stacking) {
                                                for (var a = 0; a < d.length; a++)d[a].leftNull = d[a].rightNull = void 0, z[d[a].x] = d[a]; p(t, function (a, c) { null !== a.total && g.push(c) }); g.sort(function (a, c) { return a - c }); var k = q.map(function (a) { return a.visible }); g.forEach(function (a, d) {
                                                    var h = 0, p, v; if (z[a] && !z[a].isNull) b.push(z[a]), [-1, 1].forEach(function (b) {
                                                        var h = 1 === b ? "rightNull" :
                                                            "leftNull", l = 0, f = t[g[d + b]]; if (f) for (var u = n; 0 <= u && u < m;) { var r = q[u].index; p = f.points[r]; p || (r === e.index ? z[a][h] = !0 : k[u] && (v = t[a].points[r]) && (l -= v[1] - v[0])); u += c } z[a][1 === b ? "rightCliff" : "leftCliff"] = l
                                                    }); else { for (var u = n; 0 <= u && u < m;) { if (p = t[a].points[q[u].index]) { h = p[1]; break } u += c } h = l(h, 0); h = r.translate(h, 0, 1, 0, 1); b.push({ isNull: !0, plotX: f.translate(a, 0, 0, 0, 1), x: a, plotY: h, yBottom: h }) }
                                                })
                                            } return b
                                        }; e.defaultOptions = r(t.defaultOptions, { threshold: 0 }); return e
                                    }(t); b(y.prototype, { singleStacks: !1, drawLegendSymbol: f.drawRectangle });
                                D.registerSeriesType("area", y); ""; return y
                            }); J(b, "Series/Spline/SplineSeries.js", [b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f) {
                                var B = this && this.__extends || function () {
                                    var b = function (f, p) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, g) { b.__proto__ = g } || function (b, g) { for (var e in g) g.hasOwnProperty(e) && (b[e] = g[e]) }; return b(f, p) }; return function (f, p) {
                                        function l() { this.constructor = f } b(f, p); f.prototype = null === p ? Object.create(p) : (l.prototype = p.prototype,
                                            new l)
                                    }
                                }(), y = b.seriesTypes.line, C = f.merge, A = f.pick; f = function (b) {
                                    function f() { var f = null !== b && b.apply(this, arguments) || this; f.data = void 0; f.options = void 0; f.points = void 0; return f } B(f, b); f.prototype.getPointSpline = function (b, f, g) {
                                        var e = f.plotX || 0, d = f.plotY || 0, l = b[g - 1]; g = b[g + 1]; if (l && !l.isNull && !1 !== l.doCurve && !f.isCliff && g && !g.isNull && !1 !== g.doCurve && !f.isCliff) {
                                            b = l.plotY || 0; var p = g.plotX || 0; g = g.plotY || 0; var r = 0; var t = (1.5 * e + (l.plotX || 0)) / 2.5; var B = (1.5 * d + b) / 2.5; p = (1.5 * e + p) / 2.5; var w = (1.5 * d + g) / 2.5;
                                            p !== t && (r = (w - B) * (p - e) / (p - t) + d - w); B += r; w += r; B > b && B > d ? (B = Math.max(b, d), w = 2 * d - B) : B < b && B < d && (B = Math.min(b, d), w = 2 * d - B); w > g && w > d ? (w = Math.max(g, d), B = 2 * d - w) : w < g && w < d && (w = Math.min(g, d), B = 2 * d - w); f.rightContX = p; f.rightContY = w
                                        } f = ["C", A(l.rightContX, l.plotX, 0), A(l.rightContY, l.plotY, 0), A(t, e, 0), A(B, d, 0), e, d]; l.rightContX = l.rightContY = void 0; return f
                                    }; f.defaultOptions = C(y.defaultOptions); return f
                                }(y); b.registerSeriesType("spline", f); ""; return f
                            }); J(b, "Series/AreaSpline/AreaSplineSeries.js", [b["Series/Area/AreaSeries.js"],
                            b["Series/Spline/SplineSeries.js"], b["Mixins/LegendSymbol.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y, C) {
                                var B = this && this.__extends || function () { var b = function (g, e) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, e) { d.__proto__ = e } || function (d, e) { for (var b in e) e.hasOwnProperty(b) && (d[b] = e[b]) }; return b(g, e) }; return function (g, e) { function d() { this.constructor = g } b(g, e); g.prototype = null === e ? Object.create(e) : (d.prototype = e.prototype, new d) } }(), t =
                                    b.prototype, r = C.extend, p = C.merge; C = function (l) { function g() { var e = null !== l && l.apply(this, arguments) || this; e.data = void 0; e.points = void 0; e.options = void 0; return e } B(g, l); g.defaultOptions = p(f.defaultOptions, b.defaultOptions); return g }(f); r(C.prototype, { getGraphPath: t.getGraphPath, getStackPoints: t.getStackPoints, drawGraph: t.drawGraph, drawLegendSymbol: D.drawRectangle }); y.registerSeriesType("areaspline", C); ""; return C
                            }); J(b, "Series/Column/ColumnSeries.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/Color/Color.js"],
                            b["Core/Globals.js"], b["Mixins/LegendSymbol.js"], b["Core/Color/Palette.js"], b["Core/Series/Series.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t, r) {
                                var p = this && this.__extends || function () {
                                    var c = function (d, a) { c = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (a, c) { a.__proto__ = c } || function (a, c) { for (var d in c) c.hasOwnProperty(d) && (a[d] = c[d]) }; return c(d, a) }; return function (d, a) {
                                        function e() { this.constructor = d } c(d, a); d.prototype = null === a ? Object.create(a) :
                                            (e.prototype = a.prototype, new e)
                                    }
                                }(), l = b.animObject, g = f.parse, e = D.hasTouch; b = D.noop; var d = r.clamp, u = r.css, B = r.defined, I = r.extend, K = r.fireEvent, F = r.isArray, w = r.isNumber, z = r.merge, q = r.pick, m = r.objectEach; r = function (c) {
                                    function b() { var a = null !== c && c.apply(this, arguments) || this; a.borderWidth = void 0; a.data = void 0; a.group = void 0; a.options = void 0; a.points = void 0; return a } p(b, c); b.prototype.animate = function (a) {
                                        var c = this, e = this.yAxis, b = c.options, g = this.chart.inverted, m = {}, f = g ? "translateX" : "translateY"; if (a) m.scaleY =
                                            .001, a = d(e.toPixels(b.threshold), e.pos, e.pos + e.len), g ? m.translateX = a - e.len : m.translateY = a, c.clipBox && c.setClip(), c.group.attr(m); else { var n = Number(c.group.attr(f)); c.group.animate({ scaleY: 1 }, I(l(c.options.animation), { step: function (a, d) { c.group && (m[f] = n + d.pos * (e.pos - n), c.group.attr(m)) } })) }
                                    }; b.prototype.init = function (a, d) { c.prototype.init.apply(this, arguments); var e = this; a = e.chart; a.hasRendered && a.series.forEach(function (a) { a.type === e.type && (a.isDirty = !0) }) }; b.prototype.getColumnMetrics = function () {
                                        var a =
                                            this, c = a.options, d = a.xAxis, e = a.yAxis, b = d.options.reversedStacks; b = d.reversed && !b || !d.reversed && b; var g, m = {}, f = 0; !1 === c.grouping ? f = 1 : a.chart.series.forEach(function (c) { var d = c.yAxis, b = c.options; if (c.type === a.type && (c.visible || !a.chart.options.chart.ignoreHiddenSeries) && e.len === d.len && e.pos === d.pos) { if (b.stacking && "group" !== b.stacking) { g = c.stackKey; "undefined" === typeof m[g] && (m[g] = f++); var h = m[g] } else !1 !== b.grouping && (h = f++); c.columnIndex = h } }); var l = Math.min(Math.abs(d.transA) * (d.ordinal && d.ordinal.slope ||
                                                c.pointRange || d.closestPointRange || d.tickInterval || 1), d.len), n = l * c.groupPadding, p = (l - 2 * n) / (f || 1); c = Math.min(c.maxPointWidth || d.len, q(c.pointWidth, p * (1 - 2 * c.pointPadding))); a.columnMetrics = { width: c, offset: (p - c) / 2 + (n + ((a.columnIndex || 0) + (b ? 1 : 0)) * p - l / 2) * (b ? -1 : 1), paddedWidth: p, columnCount: f }; return a.columnMetrics
                                    }; b.prototype.crispCol = function (a, c, d, e) {
                                        var b = this.chart, h = this.borderWidth, k = -(h % 2 ? .5 : 0); h = h % 2 ? .5 : 1; b.inverted && b.renderer.isVML && (h += 1); this.options.crisp && (d = Math.round(a + d) + k, a = Math.round(a) +
                                            k, d -= a); e = Math.round(c + e) + h; k = .5 >= Math.abs(c) && .5 < e; c = Math.round(c) + h; e -= c; k && e && (--c, e += 1); return { x: a, y: c, width: d, height: e }
                                    }; b.prototype.adjustForMissingColumns = function (a, c, d, e) {
                                        var b = this, h = this.options.stacking; if (!d.isNull && 1 < e.columnCount) {
                                            var k = 0, g = 0; m(this.yAxis.stacking && this.yAxis.stacking.stacks, function (a) { if ("number" === typeof d.x && (a = a[d.x.toString()])) { var c = a.points[b.index], e = a.total; h ? (c && (k = g), a.hasValidPoints && g++) : F(c) && (k = c[1], g = e || 0) } }); a = (d.plotX || 0) + ((g - 1) * e.paddedWidth + c) /
                                                2 - c - k * e.paddedWidth
                                        } return a
                                    }; b.prototype.translate = function () {
                                        var a = this, c = a.chart, e = a.options, b = a.dense = 2 > a.closestPointRange * a.xAxis.transA; b = a.borderWidth = q(e.borderWidth, b ? 0 : 1); var g = a.xAxis, m = a.yAxis, f = e.threshold, l = a.translatedThreshold = m.getThreshold(f), n = q(e.minPointLength, 5), p = a.getColumnMetrics(), u = p.width, r = a.barW = Math.max(u, 1 + 2 * b), t = a.pointXOffset = p.offset, z = a.dataMin, C = a.dataMax; c.inverted && (l -= .5); e.pointPadding && (r = Math.ceil(r)); A.prototype.translate.apply(a); a.points.forEach(function (b) {
                                            var h =
                                                q(b.yBottom, l), k = 999 + Math.abs(h), v = u, x = b.plotX || 0; k = d(b.plotY, -k, m.len + k); x += t; var E = r, A = Math.min(k, h), y = Math.max(k, h) - A; if (n && Math.abs(y) < n) { y = n; var H = !m.reversed && !b.negative || m.reversed && b.negative; w(f) && w(C) && b.y === f && C <= f && (m.min || 0) < f && (z !== C || (m.max || 0) <= f) && (H = !H); A = Math.abs(A - l) > n ? h - n : l - (H ? n : 0) } B(b.options.pointWidth) && (v = E = Math.ceil(b.options.pointWidth), x -= Math.round((v - u) / 2)); e.centerInCategory && (x = a.adjustForMissingColumns(x, v, b, p)); b.barX = x; b.pointWidth = v; b.tooltipPos = c.inverted ? [d(m.len +
                                                    m.pos - c.plotLeft - k, m.pos - c.plotLeft, m.len + m.pos - c.plotLeft), g.len + g.pos - c.plotTop - x - E / 2, y] : [g.left - c.plotLeft + x + E / 2, d(k + m.pos - c.plotTop, m.pos - c.plotTop, m.len + m.pos - c.plotTop), y]; b.shapeType = a.pointClass.prototype.shapeType || "rect"; b.shapeArgs = a.crispCol.apply(a, b.isNull ? [x, l, E, 0] : [x, A, E, y])
                                        })
                                    }; b.prototype.drawGraph = function () { this.group[this.dense ? "addClass" : "removeClass"]("highcharts-dense-data") }; b.prototype.pointAttribs = function (a, c) {
                                        var d = this.options, e = this.pointAttrToOptions || {}; var b = e.stroke ||
                                            "borderColor"; var k = e["stroke-width"] || "borderWidth", m = a && a.color || this.color, f = a && a[b] || d[b] || m, l = a && a[k] || d[k] || this[k] || 0; e = a && a.options.dashStyle || d.dashStyle; var n = q(a && a.opacity, d.opacity, 1); if (a && this.zones.length) { var p = a.getZone(); m = a.options.color || p && (p.color || a.nonZonedColor) || this.color; p && (f = p.borderColor || f, e = p.dashStyle || e, l = p.borderWidth || l) } c && a && (a = z(d.states[c], a.options.states && a.options.states[c] || {}), c = a.brightness, m = a.color || "undefined" !== typeof c && g(m).brighten(a.brightness).get() ||
                                                m, f = a[b] || f, l = a[k] || l, e = a.dashStyle || e, n = q(a.opacity, n)); b = { fill: m, stroke: f, "stroke-width": l, opacity: n }; e && (b.dashstyle = e); return b
                                    }; b.prototype.drawPoints = function () {
                                        var a = this, c = this.chart, d = a.options, e = c.renderer, b = d.animationLimit || 250, g; a.points.forEach(function (h) {
                                            var k = h.graphic, m = !!k, f = k && c.pointCount < b ? "animate" : "attr"; if (w(h.plotY) && null !== h.y) {
                                                g = h.shapeArgs; k && h.hasNewShapeType() && (k = k.destroy()); a.enabledDataSorting && (h.startXPos = a.xAxis.reversed ? -(g ? g.width || 0 : 0) : a.xAxis.width); k || (h.graphic =
                                                    k = e[h.shapeType](g).add(h.group || a.group)) && a.enabledDataSorting && c.hasRendered && c.pointCount < b && (k.attr({ x: h.startXPos }), m = !0, f = "animate"); if (k && m) k[f](z(g)); if (d.borderRadius) k[f]({ r: d.borderRadius }); c.styledMode || k[f](a.pointAttribs(h, h.selected && "select")).shadow(!1 !== h.allowShadow && d.shadow, null, d.stacking && !d.borderRadius); k && (k.addClass(h.getClassName(), !0), k.attr({ visibility: h.visible ? "inherit" : "hidden" }))
                                            } else k && (h.graphic = k.destroy())
                                        })
                                    }; b.prototype.drawTracker = function () {
                                        var a = this, c =
                                            a.chart, d = c.pointer, b = function (a) { var c = d.getPointFromEvent(a); "undefined" !== typeof c && (d.isDirectTouch = !0, c.onMouseOver(a)) }, g; a.points.forEach(function (a) { g = F(a.dataLabels) ? a.dataLabels : a.dataLabel ? [a.dataLabel] : []; a.graphic && (a.graphic.element.point = a); g.forEach(function (c) { c.div ? c.div.point = a : c.element.point = a }) }); a._hasTracking || (a.trackerGroups.forEach(function (h) {
                                                if (a[h]) {
                                                    a[h].addClass("highcharts-tracker").on("mouseover", b).on("mouseout", function (a) { d.onTrackerMouseOut(a) }); if (e) a[h].on("touchstart",
                                                        b); !c.styledMode && a.options.cursor && a[h].css(u).css({ cursor: a.options.cursor })
                                                }
                                            }), a._hasTracking = !0); K(this, "afterDrawTracker")
                                    }; b.prototype.remove = function () { var a = this, c = a.chart; c.hasRendered && c.series.forEach(function (c) { c.type === a.type && (c.isDirty = !0) }); A.prototype.remove.apply(a, arguments) }; b.defaultOptions = z(A.defaultOptions, {
                                        borderRadius: 0, centerInCategory: !1, groupPadding: .2, marker: null, pointPadding: .1, minPointLength: 0, cropThreshold: 50, pointRange: null, states: {
                                            hover: { halo: !1, brightness: .1 },
                                            select: { color: C.neutralColor20, borderColor: C.neutralColor100 }
                                        }, dataLabels: { align: void 0, verticalAlign: void 0, y: void 0 }, startFromThreshold: !0, stickyTracking: !1, tooltip: { distance: 6 }, threshold: 0, borderColor: C.backgroundColor
                                    }); return b
                                }(A); I(r.prototype, { cropShoulder: 0, directTouch: !0, drawLegendSymbol: y.drawRectangle, getSymbol: b, negStacks: !0, trackerGroups: ["group", "dataLabelsGroup"] }); t.registerSeriesType("column", r); ""; ""; return r
                            }); J(b, "Series/Bar/BarSeries.js", [b["Series/Column/ColumnSeries.js"], b["Core/Series/SeriesRegistry.js"],
                            b["Core/Utilities.js"]], function (b, f, D) {
                                var B = this && this.__extends || function () { var b = function (f, p) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, g) { b.__proto__ = g } || function (b, g) { for (var e in g) g.hasOwnProperty(e) && (b[e] = g[e]) }; return b(f, p) }; return function (f, p) { function l() { this.constructor = f } b(f, p); f.prototype = null === p ? Object.create(p) : (l.prototype = p.prototype, new l) } }(), C = D.extend, A = D.merge; D = function (f) {
                                    function r() {
                                        var b = null !== f && f.apply(this, arguments) || this; b.data = void 0;
                                        b.options = void 0; b.points = void 0; return b
                                    } B(r, f); r.defaultOptions = A(b.defaultOptions, {}); return r
                                }(b); C(D.prototype, { inverted: !0 }); f.registerSeriesType("bar", D); ""; return D
                            }); J(b, "Series/Scatter/ScatterSeries.js", [b["Series/Column/ColumnSeries.js"], b["Series/Line/LineSeries.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
                                var B = this && this.__extends || function () {
                                    var b = function (f, g) {
                                        b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, d) { e.__proto__ = d } ||
                                        function (e, d) { for (var b in d) d.hasOwnProperty(b) && (e[b] = d[b]) }; return b(f, g)
                                    }; return function (f, g) { function e() { this.constructor = f } b(f, g); f.prototype = null === g ? Object.create(g) : (e.prototype = g.prototype, new e) }
                                }(), A = y.addEvent, t = y.extend, r = y.merge; y = function (b) {
                                    function l() { var g = null !== b && b.apply(this, arguments) || this; g.data = void 0; g.options = void 0; g.points = void 0; return g } B(l, b); l.prototype.applyJitter = function () {
                                        var b = this, e = this.options.jitter, d = this.points.length; e && this.points.forEach(function (g,
                                            f) { ["x", "y"].forEach(function (l, p) { var u = "plot" + l.toUpperCase(); if (e[l] && !g.isNull) { var r = b[l + "Axis"]; var t = e[l] * r.transA; if (r && !r.isLog) { var q = Math.max(0, g[u] - t); r = Math.min(r.len, g[u] + t); p = 1E4 * Math.sin(f + p * d); g[u] = q + (r - q) * (p - Math.floor(p)); "x" === l && (g.clientX = g.plotX) } } }) })
                                    }; l.prototype.drawGraph = function () { (this.options.lineWidth || 0 === this.options.lineWidth && this.graph && this.graph.strokeWidth()) && b.prototype.drawGraph.call(this) }; l.defaultOptions = r(f.defaultOptions, {
                                        lineWidth: 0, findNearestPointBy: "xy",
                                        jitter: { x: 0, y: 0 }, marker: { enabled: !0 }, tooltip: { headerFormat: '<span style="color:{point.color}">\u25cf</span> <span style="font-size: 10px"> {series.name}</span><br/>', pointFormat: "x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>" }
                                    }); return l
                                }(f); t(y.prototype, { drawTracker: b.prototype.drawTracker, sorted: !1, requireSorting: !1, noSharedTooltip: !0, trackerGroups: ["group", "markerGroup", "dataLabelsGroup"], takeOrdinalPosition: !1 }); A(y, "afterTranslate", function () { this.applyJitter() }); D.registerSeriesType("scatter",
                                    y); ""; return y
                            }); J(b, "Mixins/CenteredSeries.js", [b["Core/Globals.js"], b["Core/Series/Series.js"], b["Core/Utilities.js"]], function (b, f, D) {
                                var B = D.isNumber, C = D.pick, A = D.relativeLength, t = b.deg2rad; return b.CenteredSeriesMixin = {
                                    getCenter: function () {
                                        var b = this.options, p = this.chart, l = 2 * (b.slicedOffset || 0), g = p.plotWidth - 2 * l, e = p.plotHeight - 2 * l, d = b.center, u = Math.min(g, e), t = b.size, B = b.innerSize || 0; "string" === typeof t && (t = parseFloat(t)); "string" === typeof B && (B = parseFloat(B)); b = [C(d[0], "50%"), C(d[1], "50%"), C(t &&
                                            0 > t ? void 0 : b.size, "100%"), C(B && 0 > B ? void 0 : b.innerSize || 0, "0%")]; !p.angular || this instanceof f || (b[3] = 0); for (d = 0; 4 > d; ++d)t = b[d], p = 2 > d || 2 === d && /%$/.test(t), b[d] = A(t, [g, e, u, b[2]][d]) + (p ? l : 0); b[3] > b[2] && (b[3] = b[2]); return b
                                    }, getStartAndEndRadians: function (b, f) { b = B(b) ? b : 0; f = B(f) && f > b && 360 > f - b ? f : b + 360; return { start: t * (b + -90), end: t * (f + -90) } }
                                }
                            }); J(b, "Series/Pie/PiePoint.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/Series/Point.js"], b["Core/Utilities.js"]], function (b, f, D) {
                                var B = this && this.__extends ||
                                    function () { var b = function (e, d) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, e) { d.__proto__ = e } || function (d, e) { for (var b in e) e.hasOwnProperty(b) && (d[b] = e[b]) }; return b(e, d) }; return function (e, d) { function g() { this.constructor = e } b(e, d); e.prototype = null === d ? Object.create(d) : (g.prototype = d.prototype, new g) } }(), C = b.setAnimation, A = D.addEvent, t = D.defined; b = D.extend; var r = D.isNumber, p = D.pick, l = D.relativeLength; D = function (b) {
                                        function e() {
                                            var d = null !== b && b.apply(this, arguments) || this;
                                            d.labelDistance = void 0; d.options = void 0; d.series = void 0; return d
                                        } B(e, b); e.prototype.getConnectorPath = function () { var d = this.labelPosition, e = this.series.options.dataLabels, b = e.connectorShape, g = this.connectorShapes; g[b] && (b = g[b]); return b.call(this, { x: d.final.x, y: d.final.y, alignment: d.alignment }, d.connectorPosition, e) }; e.prototype.getTranslate = function () { return this.sliced ? this.slicedTranslation : { translateX: 0, translateY: 0 } }; e.prototype.haloPath = function (d) {
                                            var e = this.shapeArgs; return this.sliced || !this.visible ?
                                                [] : this.series.chart.renderer.symbols.arc(e.x, e.y, e.r + d, e.r + d, { innerR: e.r - 1, start: e.start, end: e.end })
                                        }; e.prototype.init = function () { f.prototype.init.apply(this, arguments); var d = this; d.name = p(d.name, "Slice"); var e = function (e) { d.slice("select" === e.type) }; A(d, "select", e); A(d, "unselect", e); return d }; e.prototype.isValid = function () { return r(this.y) && 0 <= this.y }; e.prototype.setVisible = function (d, e) {
                                            var b = this, g = b.series, f = g.chart, l = g.options.ignoreHiddenPoint; e = p(e, l); d !== b.visible && (b.visible = b.options.visible =
                                                d = "undefined" === typeof d ? !b.visible : d, g.options.data[g.data.indexOf(b)] = b.options, ["graphic", "dataLabel", "connector", "shadowGroup"].forEach(function (e) { if (b[e]) b[e][d ? "show" : "hide"](d) }), b.legendItem && f.legend.colorizeItem(b, d), d || "hover" !== b.state || b.setState(""), l && (g.isDirty = !0), e && f.redraw())
                                        }; e.prototype.slice = function (d, e, b) {
                                            var g = this.series; C(b, g.chart); p(e, !0); this.sliced = this.options.sliced = t(d) ? d : !this.sliced; g.options.data[g.data.indexOf(this)] = this.options; this.graphic && this.graphic.animate(this.getTranslate());
                                            this.shadowGroup && this.shadowGroup.animate(this.getTranslate())
                                        }; return e
                                    }(f); b(D.prototype, {
                                        connectorShapes: {
                                            fixedOffset: function (b, e, d) { var g = e.breakAt; e = e.touchingSliceAt; return [["M", b.x, b.y], d.softConnector ? ["C", b.x + ("left" === b.alignment ? -5 : 5), b.y, 2 * g.x - e.x, 2 * g.y - e.y, g.x, g.y] : ["L", g.x, g.y], ["L", e.x, e.y]] }, straight: function (b, e) { e = e.touchingSliceAt; return [["M", b.x, b.y], ["L", e.x, e.y]] }, crookedLine: function (b, e, d) {
                                                e = e.touchingSliceAt; var g = this.series, f = g.center[0], p = g.chart.plotWidth, r = g.chart.plotLeft;
                                                g = b.alignment; var t = this.shapeArgs.r; d = l(d.crookDistance, 1); p = "left" === g ? f + t + (p + r - f - t) * (1 - d) : r + (f - t) * d; d = ["L", p, b.y]; f = !0; if ("left" === g ? p > b.x || p < e.x : p < b.x || p > e.x) f = !1; b = [["M", b.x, b.y]]; f && b.push(d); b.push(["L", e.x, e.y]); return b
                                            }
                                        }
                                    }); return D
                            }); J(b, "Series/Pie/PieSeries.js", [b["Mixins/CenteredSeries.js"], b["Series/Column/ColumnSeries.js"], b["Core/Globals.js"], b["Mixins/LegendSymbol.js"], b["Core/Color/Palette.js"], b["Series/Pie/PiePoint.js"], b["Core/Series/Series.js"], b["Core/Series/SeriesRegistry.js"],
                            b["Core/Renderer/SVG/SVGRenderer.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t, r, p, l) {
                                var g = this && this.__extends || function () { var d = function (b, e) { d = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, c) { d.__proto__ = c } || function (d, c) { for (var b in c) c.hasOwnProperty(b) && (d[b] = c[b]) }; return d(b, e) }; return function (b, e) { function g() { this.constructor = b } d(b, e); b.prototype = null === e ? Object.create(e) : (g.prototype = e.prototype, new g) } }(), e = b.getStartAndEndRadians; D = D.noop; var d = l.clamp, u =
                                    l.extend, B = l.fireEvent, I = l.merge, K = l.pick, F = l.relativeLength; l = function (b) {
                                        function f() { var d = null !== b && b.apply(this, arguments) || this; d.center = void 0; d.data = void 0; d.maxLabelDistance = void 0; d.options = void 0; d.points = void 0; return d } g(f, b); f.prototype.animate = function (d) { var b = this, c = b.points, e = b.startAngleRad; d || c.forEach(function (a) { var c = a.graphic, d = a.shapeArgs; c && d && (c.attr({ r: K(a.startR, b.center && b.center[3] / 2), start: e, end: e }), c.animate({ r: d.r, start: d.start, end: d.end }, b.options.animation)) }) };
                                        f.prototype.drawEmpty = function () {
                                            var d = this.startAngleRad, b = this.endAngleRad, c = this.options; if (0 === this.total && this.center) {
                                                var e = this.center[0]; var a = this.center[1]; this.graph || (this.graph = this.chart.renderer.arc(e, a, this.center[1] / 2, 0, d, b).addClass("highcharts-empty-series").add(this.group)); this.graph.attr({ d: p.prototype.symbols.arc(e, a, this.center[2] / 2, 0, { start: d, end: b, innerR: this.center[3] / 2 }) }); this.chart.styledMode || this.graph.attr({
                                                    "stroke-width": c.borderWidth, fill: c.fillColor || "none", stroke: c.color ||
                                                        C.neutralColor20
                                                })
                                            } else this.graph && (this.graph = this.graph.destroy())
                                        }; f.prototype.drawPoints = function () { var d = this.chart.renderer; this.points.forEach(function (b) { b.graphic && b.hasNewShapeType() && (b.graphic = b.graphic.destroy()); b.graphic || (b.graphic = d[b.shapeType](b.shapeArgs).add(b.series.group), b.delayedRendering = !0) }) }; f.prototype.generatePoints = function () { b.prototype.generatePoints.call(this); this.updateTotals() }; f.prototype.getX = function (b, e, c) {
                                            var g = this.center, a = this.radii ? this.radii[c.index] ||
                                                0 : g[2] / 2; b = Math.asin(d((b - g[1]) / (a + c.labelDistance), -1, 1)); return g[0] + (e ? -1 : 1) * Math.cos(b) * (a + c.labelDistance) + (0 < c.labelDistance ? (e ? -1 : 1) * this.options.dataLabels.padding : 0)
                                        }; f.prototype.hasData = function () { return !!this.processedXData.length }; f.prototype.redrawPoints = function () {
                                            var d = this, b = d.chart, c = b.renderer, e, a, k, h, g = d.options.shadow; this.drawEmpty(); !g || d.shadowGroup || b.styledMode || (d.shadowGroup = c.g("shadow").attr({ zIndex: -1 }).add(d.group)); d.points.forEach(function (m) {
                                                var f = {}; a = m.graphic;
                                                if (!m.isNull && a) {
                                                    var l = void 0; h = m.shapeArgs; e = m.getTranslate(); b.styledMode || (l = m.shadowGroup, g && !l && (l = m.shadowGroup = c.g("shadow").add(d.shadowGroup)), l && l.attr(e), k = d.pointAttribs(m, m.selected && "select")); m.delayedRendering ? (a.setRadialReference(d.center).attr(h).attr(e), b.styledMode || a.attr(k).attr({ "stroke-linejoin": "round" }).shadow(g, l), m.delayedRendering = !1) : (a.setRadialReference(d.center), b.styledMode || I(!0, f, k), I(!0, f, h, e), a.animate(f)); a.attr({ visibility: m.visible ? "inherit" : "hidden" }); a.addClass(m.getClassName(),
                                                        !0)
                                                } else a && (m.graphic = a.destroy())
                                            })
                                        }; f.prototype.sortByAngle = function (d, b) { d.sort(function (c, d) { return "undefined" !== typeof c.angle && (d.angle - c.angle) * b }) }; f.prototype.translate = function (d) {
                                            this.generatePoints(); var b = 0, c = this.options, g = c.slicedOffset, a = g + (c.borderWidth || 0), k = e(c.startAngle, c.endAngle), h = this.startAngleRad = k.start; k = (this.endAngleRad = k.end) - h; var f = this.points, l = c.dataLabels.distance; c = c.ignoreHiddenPoint; var p, q = f.length; d || (this.center = d = this.getCenter()); for (p = 0; p < q; p++) {
                                                var r =
                                                    f[p]; var u = h + b * k; !r.isValid() || c && !r.visible || (b += r.percentage / 100); var t = h + b * k; var z = { x: d[0], y: d[1], r: d[2] / 2, innerR: d[3] / 2, start: Math.round(1E3 * u) / 1E3, end: Math.round(1E3 * t) / 1E3 }; r.shapeType = "arc"; r.shapeArgs = z; r.labelDistance = K(r.options.dataLabels && r.options.dataLabels.distance, l); r.labelDistance = F(r.labelDistance, z.r); this.maxLabelDistance = Math.max(this.maxLabelDistance || 0, r.labelDistance); t = (t + u) / 2; t > 1.5 * Math.PI ? t -= 2 * Math.PI : t < -Math.PI / 2 && (t += 2 * Math.PI); r.slicedTranslation = {
                                                        translateX: Math.round(Math.cos(t) *
                                                            g), translateY: Math.round(Math.sin(t) * g)
                                                    }; z = Math.cos(t) * d[2] / 2; var w = Math.sin(t) * d[2] / 2; r.tooltipPos = [d[0] + .7 * z, d[1] + .7 * w]; r.half = t < -Math.PI / 2 || t > Math.PI / 2 ? 1 : 0; r.angle = t; u = Math.min(a, r.labelDistance / 5); r.labelPosition = { natural: { x: d[0] + z + Math.cos(t) * r.labelDistance, y: d[1] + w + Math.sin(t) * r.labelDistance }, "final": {}, alignment: 0 > r.labelDistance ? "center" : r.half ? "right" : "left", connectorPosition: { breakAt: { x: d[0] + z + Math.cos(t) * u, y: d[1] + w + Math.sin(t) * u }, touchingSliceAt: { x: d[0] + z, y: d[1] + w } } }
                                            } B(this, "afterTranslate")
                                        };
                                        f.prototype.updateTotals = function () { var d, b = 0, c = this.points, e = c.length, a = this.options.ignoreHiddenPoint; for (d = 0; d < e; d++) { var k = c[d]; !k.isValid() || a && !k.visible || (b += k.y) } this.total = b; for (d = 0; d < e; d++)k = c[d], k.percentage = 0 < b && (k.visible || !a) ? k.y / b * 100 : 0, k.total = b }; f.defaultOptions = I(t.defaultOptions, {
                                            center: [null, null], clip: !1, colorByPoint: !0, dataLabels: {
                                                allowOverlap: !0, connectorPadding: 5, connectorShape: "fixedOffset", crookDistance: "70%", distance: 30, enabled: !0, formatter: function () {
                                                    return this.point.isNull ?
                                                        void 0 : this.point.name
                                                }, softConnector: !0, x: 0
                                            }, fillColor: void 0, ignoreHiddenPoint: !0, inactiveOtherPoints: !0, legendType: "point", marker: null, size: null, showInLegend: !1, slicedOffset: 10, stickyTracking: !1, tooltip: { followPointer: !0 }, borderColor: C.backgroundColor, borderWidth: 1, lineWidth: void 0, states: { hover: { brightness: .1 } }
                                        }); return f
                                    }(t); u(l.prototype, {
                                        axisTypes: [], directTouch: !0, drawGraph: void 0, drawLegendSymbol: y.drawRectangle, drawTracker: f.prototype.drawTracker, getCenter: b.getCenter, getSymbol: D, isCartesian: !1,
                                        noSharedTooltip: !0, pointAttribs: f.prototype.pointAttribs, pointClass: A, requireSorting: !1, searchPoint: D, trackerGroups: ["group", "dataLabelsGroup"]
                                    }); r.registerSeriesType("pie", l); ""; return l
                            }); J(b, "Core/Series/DataLabels.js", [b["Core/Animation/AnimationUtilities.js"], b["Core/FormatUtilities.js"], b["Core/Globals.js"], b["Core/Color/Palette.js"], b["Core/Series/Series.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t) {
                                var r = b.getDeferredAnimation, p = f.format; b = D.noop;
                                A = A.seriesTypes; var l = t.arrayMax, g = t.clamp, e = t.defined, d = t.extend, u = t.fireEvent, B = t.isArray, I = t.merge, K = t.objectEach, F = t.pick, w = t.relativeLength, z = t.splat, q = t.stableSort; ""; D.distribute = function (d, c, b) {
                                    function a(a, c) { return a.target - c.target } var e, h = !0, f = d, m = []; var l = 0; var n = f.reducedLen || c; for (e = d.length; e--;)l += d[e].size; if (l > n) { q(d, function (a, c) { return (c.rank || 0) - (a.rank || 0) }); for (l = e = 0; l <= n;)l += d[e].size, e++; m = d.splice(e - 1, d.length) } q(d, a); for (d = d.map(function (a) {
                                        return {
                                            size: a.size, targets: [a.target],
                                            align: F(a.align, .5)
                                        }
                                    }); h;) { for (e = d.length; e--;)h = d[e], l = (Math.min.apply(0, h.targets) + Math.max.apply(0, h.targets)) / 2, h.pos = g(l - h.size * h.align, 0, c - h.size); e = d.length; for (h = !1; e--;)0 < e && d[e - 1].pos + d[e - 1].size > d[e].pos && (d[e - 1].size += d[e].size, d[e - 1].targets = d[e - 1].targets.concat(d[e].targets), d[e - 1].align = .5, d[e - 1].pos + d[e - 1].size > c && (d[e - 1].pos = c - d[e - 1].size), d.splice(e, 1), h = !0) } f.push.apply(f, m); e = 0; d.some(function (a) {
                                        var d = 0; if (a.targets.some(function () {
                                            f[e].pos = a.pos + d; if ("undefined" !== typeof b &&
                                                Math.abs(f[e].pos - f[e].target) > b) return f.slice(0, e + 1).forEach(function (a) { delete a.pos }), f.reducedLen = (f.reducedLen || c) - .1 * c, f.reducedLen > .1 * c && D.distribute(f, c, b), !0; d += f[e].size; e++
                                        })) return !0
                                    }); q(f, a)
                                }; C.prototype.drawDataLabels = function () {
                                    function d(a, c) { var d = c.filter; return d ? (c = d.operator, a = a[d.property], d = d.value, ">" === c && a > d || "<" === c && a < d || ">=" === c && a >= d || "<=" === c && a <= d || "==" === c && a == d || "===" === c && a === d ? !0 : !1) : !0 } function c(a, c) {
                                        var d = [], b; if (B(a) && !B(c)) d = a.map(function (a) { return I(a, c) });
                                        else if (B(c) && !B(a)) d = c.map(function (c) { return I(a, c) }); else if (B(a) || B(c)) for (b = Math.max(a.length, c.length); b--;)d[b] = I(a[b], c[b]); else d = I(a, c); return d
                                    } var b = this, a = b.chart, k = b.options, h = k.dataLabels, g = b.points, f, l = b.hasRendered || 0, q = h.animation; q = h.defer ? r(a, q, b) : { defer: 0, duration: 0 }; var t = a.renderer; h = c(c(a.options.plotOptions && a.options.plotOptions.series && a.options.plotOptions.series.dataLabels, a.options.plotOptions && a.options.plotOptions[b.type] && a.options.plotOptions[b.type].dataLabels),
                                        h); u(this, "drawDataLabels"); if (B(h) || h.enabled || b._hasPointLabels) {
                                            var w = b.plotGroup("dataLabelsGroup", "data-labels", l ? "inherit" : "hidden", h.zIndex || 6); w.attr({ opacity: +l }); !l && (l = b.dataLabelsGroup) && (b.visible && w.show(!0), l[k.animation ? "animate" : "attr"]({ opacity: 1 }, q)); g.forEach(function (g) {
                                                f = z(c(h, g.dlOptions || g.options && g.options.dataLabels)); f.forEach(function (c, h) {
                                                    var f = c.enabled && (!g.isNull || g.dataLabelOnNull) && d(g, c), m = g.dataLabels ? g.dataLabels[h] : g.dataLabel, l = g.connectors ? g.connectors[h] :
                                                        g.connector, n = F(c.distance, g.labelDistance), q = !m; if (f) {
                                                            var v = g.getLabelConfig(); var r = F(c[g.formatPrefix + "Format"], c.format); v = e(r) ? p(r, v, a) : (c[g.formatPrefix + "Formatter"] || c.formatter).call(v, c); r = c.style; var u = c.rotation; a.styledMode || (r.color = F(c.color, r.color, b.color, y.neutralColor100), "contrast" === r.color ? (g.contrastColor = t.getContrast(g.color || b.color), r.color = !e(n) && c.inside || 0 > n || k.stacking ? g.contrastColor : y.neutralColor100) : delete g.contrastColor, k.cursor && (r.cursor = k.cursor)); var z = {
                                                                r: c.borderRadius ||
                                                                    0, rotation: u, padding: c.padding, zIndex: 1
                                                            }; a.styledMode || (z.fill = c.backgroundColor, z.stroke = c.borderColor, z["stroke-width"] = c.borderWidth); K(z, function (a, c) { "undefined" === typeof a && delete z[c] })
                                                        } !m || f && e(v) ? f && e(v) && (m ? z.text = v : (g.dataLabels = g.dataLabels || [], m = g.dataLabels[h] = u ? t.text(v, 0, -9999, c.useHTML).addClass("highcharts-data-label") : t.label(v, 0, -9999, c.shape, null, null, c.useHTML, null, "data-label"), h || (g.dataLabel = m), m.addClass(" highcharts-data-label-color-" + g.colorIndex + " " + (c.className || "") +
                                                            (c.useHTML ? " highcharts-tracker" : ""))), m.options = c, m.attr(z), a.styledMode || m.css(r).shadow(c.shadow), m.added || m.add(w), c.textPath && !c.useHTML && (m.setTextPath(g.getDataLabelPath && g.getDataLabelPath(m) || g.graphic, c.textPath), g.dataLabelPath && !c.textPath.enabled && (g.dataLabelPath = g.dataLabelPath.destroy())), b.alignDataLabel(g, m, c, null, q)) : (g.dataLabel = g.dataLabel && g.dataLabel.destroy(), g.dataLabels && (1 === g.dataLabels.length ? delete g.dataLabels : delete g.dataLabels[h]), h || delete g.dataLabel, l && (g.connector =
                                                                g.connector.destroy(), g.connectors && (1 === g.connectors.length ? delete g.connectors : delete g.connectors[h])))
                                                })
                                            })
                                        } u(this, "afterDrawDataLabels")
                                }; C.prototype.alignDataLabel = function (b, c, e, a, g) {
                                    var h = this, k = this.chart, f = this.isCartesian && k.inverted, m = this.enabledDataSorting, l = F(b.dlBox && b.dlBox.centerX, b.plotX, -9999), n = F(b.plotY, -9999), p = c.getBBox(), q = e.rotation, r = e.align, u = k.isInsidePlot(l, Math.round(n), { inverted: f, paneCoordinates: !0, series: h }), t = "justify" === F(e.overflow, m ? "none" : "justify"), z = this.visible &&
                                        !1 !== b.visible && (b.series.forceDL || m && !t || u || F(e.inside, !!this.options.stacking) && a && k.isInsidePlot(l, f ? a.x + 1 : a.y + a.height - 1, { inverted: f, paneCoordinates: !0, series: h })); var w = function (a) { m && h.xAxis && !t && h.setDataLabelStartPos(b, c, g, u, a) }; if (z) {
                                            var B = k.renderer.fontMetrics(k.styledMode ? void 0 : e.style.fontSize, c).b; a = d({ x: f ? this.yAxis.len - n : l, y: Math.round(f ? this.xAxis.len - l : n), width: 0, height: 0 }, a); d(e, { width: p.width, height: p.height }); q ? (t = !1, l = k.renderer.rotCorr(B, q), l = {
                                                x: a.x + (e.x || 0) + a.width / 2 + l.x,
                                                y: a.y + (e.y || 0) + { top: 0, middle: .5, bottom: 1 }[e.verticalAlign] * a.height
                                            }, w(l), c[g ? "attr" : "animate"](l).attr({ align: r }), w = (q + 720) % 360, w = 180 < w && 360 > w, "left" === r ? l.y -= w ? p.height : 0 : "center" === r ? (l.x -= p.width / 2, l.y -= p.height / 2) : "right" === r && (l.x -= p.width, l.y -= w ? 0 : p.height), c.placed = !0, c.alignAttr = l) : (w(a), c.align(e, void 0, a), l = c.alignAttr); t && 0 <= a.height ? this.justifyDataLabel(c, e, l, p, a, g) : F(e.crop, !0) && (z = k.isInsidePlot(l.x, l.y, { paneCoordinates: !0, series: h }) && k.isInsidePlot(l.x + p.width, l.y + p.height, {
                                                paneCoordinates: !0,
                                                series: h
                                            })); if (e.shape && !q) c[g ? "attr" : "animate"]({ anchorX: f ? k.plotWidth - b.plotY : b.plotX, anchorY: f ? k.plotHeight - b.plotX : b.plotY })
                                        } g && m && (c.placed = !1); z || m && !t || (c.hide(!0), c.placed = !1)
                                }; C.prototype.setDataLabelStartPos = function (d, c, b, a, e) {
                                    var h = this.chart, g = h.inverted, k = this.xAxis, f = k.reversed, m = g ? c.height / 2 : c.width / 2; d = (d = d.pointWidth) ? d / 2 : 0; k = g ? e.x : f ? -m - d : k.width - m + d; e = g ? f ? this.yAxis.height - m + d : -m - d : e.y; c.startXPos = k; c.startYPos = e; a ? "hidden" === c.visibility && (c.show(), c.attr({ opacity: 0 }).animate({ opacity: 1 })) :
                                        c.attr({ opacity: 1 }).animate({ opacity: 0 }, void 0, c.hide); h.hasRendered && (b && c.attr({ x: c.startXPos, y: c.startYPos }), c.placed = !0)
                                }; C.prototype.justifyDataLabel = function (d, c, b, a, e, h) {
                                    var g = this.chart, k = c.align, f = c.verticalAlign, m = d.box ? 0 : d.padding || 0, l = c.x; l = void 0 === l ? 0 : l; var n = c.y; var p = void 0 === n ? 0 : n; n = (b.x || 0) + m; if (0 > n) { "right" === k && 0 <= l ? (c.align = "left", c.inside = !0) : l -= n; var q = !0 } n = (b.x || 0) + a.width - m; n > g.plotWidth && ("left" === k && 0 >= l ? (c.align = "right", c.inside = !0) : l += g.plotWidth - n, q = !0); n = b.y + m; 0 > n &&
                                        ("bottom" === f && 0 <= p ? (c.verticalAlign = "top", c.inside = !0) : p -= n, q = !0); n = (b.y || 0) + a.height - m; n > g.plotHeight && ("top" === f && 0 >= p ? (c.verticalAlign = "bottom", c.inside = !0) : p += g.plotHeight - n, q = !0); q && (c.x = l, c.y = p, d.placed = !h, d.align(c, void 0, e)); return q
                                }; A.pie && (A.pie.prototype.dataLabelPositioners = {
                                    radialDistributionY: function (d) { return d.top + d.distributeBox.pos }, radialDistributionX: function (d, c, b, a) { return d.getX(b < c.top + 2 || b > c.bottom - 2 ? a : b, c.half, c) }, justify: function (d, c, b) { return b[0] + (d.half ? -1 : 1) * (c + d.labelDistance) },
                                    alignToPlotEdges: function (d, c, b, a) { d = d.getBBox().width; return c ? d + a : b - d - a }, alignToConnectors: function (d, c, b, a) { var e = 0, h; d.forEach(function (a) { h = a.dataLabel.getBBox().width; h > e && (e = h) }); return c ? e + a : b - e - a }
                                }, A.pie.prototype.drawDataLabels = function () {
                                    var d = this, c = d.data, b, a = d.chart, g = d.options.dataLabels || {}, h = g.connectorPadding, f, p = a.plotWidth, q = a.plotHeight, r = a.plotLeft, u = Math.round(a.chartWidth / 3), t, z = d.center, w = z[2] / 2, B = z[1], x, A, H, K, J = [[], []], Q, N, T, aa, V = [0, 0, 0, 0], W = d.dataLabelPositioners, U; d.visible &&
                                        (g.enabled || d._hasPointLabels) && (c.forEach(function (a) { a.dataLabel && a.visible && a.dataLabel.shortened && (a.dataLabel.attr({ width: "auto" }).css({ width: "auto", textOverflow: "clip" }), a.dataLabel.shortened = !1) }), C.prototype.drawDataLabels.apply(d), c.forEach(function (a) {
                                        a.dataLabel && (a.visible ? (J[a.half].push(a), a.dataLabel._pos = null, !e(g.style.width) && !e(a.options.dataLabels && a.options.dataLabels.style && a.options.dataLabels.style.width) && a.dataLabel.getBBox().width > u && (a.dataLabel.css({
                                            width: Math.round(.7 *
                                                u) + "px"
                                        }), a.dataLabel.shortened = !0)) : (a.dataLabel = a.dataLabel.destroy(), a.dataLabels && 1 === a.dataLabels.length && delete a.dataLabels))
                                        }), J.forEach(function (c, k) {
                                            var f = c.length, l = [], m; if (f) {
                                                d.sortByAngle(c, k - .5); if (0 < d.maxLabelDistance) {
                                                    var n = Math.max(0, B - w - d.maxLabelDistance); var v = Math.min(B + w + d.maxLabelDistance, a.plotHeight); c.forEach(function (c) {
                                                    0 < c.labelDistance && c.dataLabel && (c.top = Math.max(0, B - w - c.labelDistance), c.bottom = Math.min(B + w + c.labelDistance, a.plotHeight), m = c.dataLabel.getBBox().height ||
                                                        21, c.distributeBox = { target: c.labelPosition.natural.y - c.top + m / 2, size: m, rank: c.y }, l.push(c.distributeBox))
                                                    }); n = v + m - n; D.distribute(l, n, n / 5)
                                                } for (aa = 0; aa < f; aa++) {
                                                    b = c[aa]; H = b.labelPosition; x = b.dataLabel; T = !1 === b.visible ? "hidden" : "inherit"; N = n = H.natural.y; l && e(b.distributeBox) && ("undefined" === typeof b.distributeBox.pos ? T = "hidden" : (K = b.distributeBox.size, N = W.radialDistributionY(b))); delete b.positionIndex; if (g.justify) Q = W.justify(b, w, z); else switch (g.alignTo) {
                                                        case "connectors": Q = W.alignToConnectors(c, k, p,
                                                            r); break; case "plotEdges": Q = W.alignToPlotEdges(x, k, p, r); break; default: Q = W.radialDistributionX(d, b, N, n)
                                                    }x._attr = { visibility: T, align: H.alignment }; U = b.options.dataLabels || {}; x._pos = { x: Q + F(U.x, g.x) + ({ left: h, right: -h }[H.alignment] || 0), y: N + F(U.y, g.y) - 10 }; H.final.x = Q; H.final.y = N; F(g.crop, !0) && (A = x.getBBox().width, n = null, Q - A < h && 1 === k ? (n = Math.round(A - Q + h), V[3] = Math.max(n, V[3])) : Q + A > p - h && 0 === k && (n = Math.round(Q + A - p + h), V[1] = Math.max(n, V[1])), 0 > N - K / 2 ? V[0] = Math.max(Math.round(-N + K / 2), V[0]) : N + K / 2 > q && (V[2] = Math.max(Math.round(N +
                                                        K / 2 - q), V[2])), x.sideOverflow = n)
                                                }
                                            }
                                        }), 0 === l(V) || this.verifyDataLabelOverflow(V)) && (this.placeDataLabels(), this.points.forEach(function (c) {
                                            U = I(g, c.options.dataLabels); if (f = F(U.connectorWidth, 1)) {
                                                var b; t = c.connector; if ((x = c.dataLabel) && x._pos && c.visible && 0 < c.labelDistance) {
                                                    T = x._attr.visibility; if (b = !t) c.connector = t = a.renderer.path().addClass("highcharts-data-label-connector  highcharts-color-" + c.colorIndex + (c.className ? " " + c.className : "")).add(d.dataLabelsGroup), a.styledMode || t.attr({
                                                        "stroke-width": f,
                                                        stroke: U.connectorColor || c.color || y.neutralColor60
                                                    }); t[b ? "attr" : "animate"]({ d: c.getConnectorPath() }); t.attr("visibility", T)
                                                } else t && (c.connector = t.destroy())
                                            }
                                        }))
                                }, A.pie.prototype.placeDataLabels = function () {
                                    this.points.forEach(function (d) {
                                        var c = d.dataLabel, b; c && d.visible && ((b = c._pos) ? (c.sideOverflow && (c._attr.width = Math.max(c.getBBox().width - c.sideOverflow, 0), c.css({ width: c._attr.width + "px", textOverflow: (this.options.dataLabels.style || {}).textOverflow || "ellipsis" }), c.shortened = !0), c.attr(c._attr),
                                            c[c.moved ? "animate" : "attr"](b), c.moved = !0) : c && c.attr({ y: -9999 })); delete d.distributeBox
                                    }, this)
                                }, A.pie.prototype.alignDataLabel = b, A.pie.prototype.verifyDataLabelOverflow = function (d) {
                                    var c = this.center, b = this.options, a = b.center, e = b.minSize || 80, h = null !== b.size; if (!h) {
                                        if (null !== a[0]) var f = Math.max(c[2] - Math.max(d[1], d[3]), e); else f = Math.max(c[2] - d[1] - d[3], e), c[0] += (d[3] - d[1]) / 2; null !== a[1] ? f = g(f, e, c[2] - Math.max(d[0], d[2])) : (f = g(f, e, c[2] - d[0] - d[2]), c[1] += (d[0] - d[2]) / 2); f < c[2] ? (c[2] = f, c[3] = Math.min(w(b.innerSize ||
                                            0, f), f), this.translate(c), this.drawDataLabels && this.drawDataLabels()) : h = !0
                                    } return h
                                }); A.column && (A.column.prototype.alignDataLabel = function (d, c, b, a, e) {
                                    var h = this.chart.inverted, g = d.series, k = d.dlBox || d.shapeArgs, f = F(d.below, d.plotY > F(this.translatedThreshold, g.yAxis.len)), l = F(b.inside, !!this.options.stacking); k && (a = I(k), 0 > a.y && (a.height += a.y, a.y = 0), k = a.y + a.height - g.yAxis.len, 0 < k && k < a.height && (a.height -= k), h && (a = { x: g.yAxis.len - a.y - a.height, y: g.xAxis.len - a.x - a.width, width: a.height, height: a.width }), l ||
                                        (h ? (a.x += f ? 0 : a.width, a.width = 0) : (a.y += f ? a.height : 0, a.height = 0))); b.align = F(b.align, !h || l ? "center" : f ? "right" : "left"); b.verticalAlign = F(b.verticalAlign, h || l ? "middle" : f ? "top" : "bottom"); C.prototype.alignDataLabel.call(this, d, c, b, a, e); b.inside && d.contrastColor && c.css({ color: d.contrastColor })
                                })
                            }); J(b, "Extensions/OverlappingDataLabels.js", [b["Core/Chart/Chart.js"], b["Core/Utilities.js"]], function (b, f) {
                                function B(b, g) {
                                    var e = !1; if (b) {
                                        var d = b.newOpacity; b.oldOpacity !== d && (b.alignAttr && b.placed ? (b[d ? "removeClass" :
                                            "addClass"]("highcharts-data-label-hidden"), e = !0, b.alignAttr.opacity = d, b[b.isOld ? "animate" : "attr"](b.alignAttr, null, function () { g.styledMode || b.css({ pointerEvents: d ? "auto" : "none" }); b.visibility = d ? "inherit" : "hidden" }), C(g, "afterHideOverlappingLabel")) : b.attr({ opacity: d })); b.isOld = !0
                                    } return e
                                } var y = f.addEvent, C = f.fireEvent, A = f.isArray, t = f.isNumber, r = f.objectEach, p = f.pick; y(b, "render", function () {
                                    var b = this, g = []; (this.labelCollectors || []).forEach(function (b) { g = g.concat(b()) }); (this.yAxis || []).forEach(function (b) {
                                    b.stacking &&
                                        b.options.stackLabels && !b.options.stackLabels.allowOverlap && r(b.stacking.stacks, function (d) { r(d, function (d) { g.push(d.label) }) })
                                    }); (this.series || []).forEach(function (e) {
                                        var d = e.options.dataLabels; e.visible && (!1 !== d.enabled || e._hasPointLabels) && (d = function (d) {
                                            return d.forEach(function (d) {
                                            d.visible && (A(d.dataLabels) ? d.dataLabels : d.dataLabel ? [d.dataLabel] : []).forEach(function (e) {
                                                var f = e.options; e.labelrank = p(f.labelrank, d.labelrank, d.shapeArgs && d.shapeArgs.height); f.allowOverlap ? (e.oldOpacity = e.opacity,
                                                    e.newOpacity = 1, B(e, b)) : g.push(e)
                                            })
                                            })
                                        }, d(e.nodes || []), d(e.points))
                                    }); this.hideOverlappingLabels(g)
                                }); b.prototype.hideOverlappingLabels = function (b) {
                                    var g = this, e = b.length, d = g.renderer, f, l, p, r = !1; var A = function (b) {
                                        var e, c = b.box ? 0 : b.padding || 0, g = e = 0, a; if (b && (!b.alignAttr || b.placed)) {
                                            var k = b.alignAttr || { x: b.attr("x"), y: b.attr("y") }; var h = b.parentGroup; b.width || (e = b.getBBox(), b.width = e.width, b.height = e.height, e = d.fontMetrics(null, b.element).h); var f = b.width - 2 * c; (a = { left: "0", center: "0.5", right: "1" }[b.alignValue]) ?
                                                g = +a * f : t(b.x) && Math.round(b.x) !== b.translateX && (g = b.x - b.translateX); return { x: k.x + (h.translateX || 0) + c - (g || 0), y: k.y + (h.translateY || 0) + c - e, width: b.width - 2 * c, height: b.height - 2 * c }
                                        }
                                    }; for (l = 0; l < e; l++)if (f = b[l]) f.oldOpacity = f.opacity, f.newOpacity = 1, f.absoluteBox = A(f); b.sort(function (d, b) { return (b.labelrank || 0) - (d.labelrank || 0) }); for (l = 0; l < e; l++) {
                                        var w = (A = b[l]) && A.absoluteBox; for (f = l + 1; f < e; ++f) {
                                            var z = (p = b[f]) && p.absoluteBox; !w || !z || A === p || 0 === A.newOpacity || 0 === p.newOpacity || z.x >= w.x + w.width || z.x + z.width <=
                                                w.x || z.y >= w.y + w.height || z.y + z.height <= w.y || ((A.labelrank < p.labelrank ? A : p).newOpacity = 0)
                                        }
                                    } b.forEach(function (d) { B(d, g) && (r = !0) }); r && C(g, "afterHideAllOverlappingLabels")
                                }
                            }); J(b, "Core/Responsive.js", [b["Core/Chart/Chart.js"], b["Core/Utilities.js"]], function (b, f) {
                                var B = f.find, y = f.isArray, C = f.isObject, A = f.merge, t = f.objectEach, r = f.pick, p = f.splat, l = f.uniqueKey; b.prototype.setResponsive = function (b, e) {
                                    var d = this.options.responsive, g = [], f = this.currentResponsive; !e && d && d.rules && d.rules.forEach(function (d) {
                                    "undefined" ===
                                        typeof d._id && (d._id = l()); this.matchResponsiveRule(d, g)
                                    }, this); e = A.apply(0, g.map(function (b) { return B(d.rules, function (d) { return d._id === b }).chartOptions })); e.isResponsiveOptions = !0; g = g.toString() || void 0; g !== (f && f.ruleIds) && (f && this.update(f.undoOptions, b, !0), g ? (f = this.currentOptions(e), f.isResponsiveOptions = !0, this.currentResponsive = { ruleIds: g, mergedOptions: e, undoOptions: f }, this.update(e, b, !0)) : this.currentResponsive = void 0)
                                }; b.prototype.matchResponsiveRule = function (b, e) {
                                    var d = b.condition; (d.callback ||
                                        function () { return this.chartWidth <= r(d.maxWidth, Number.MAX_VALUE) && this.chartHeight <= r(d.maxHeight, Number.MAX_VALUE) && this.chartWidth >= r(d.minWidth, 0) && this.chartHeight >= r(d.minHeight, 0) }).call(this) && e.push(b._id)
                                }; b.prototype.currentOptions = function (b) {
                                    function e(b, g, f, l) {
                                        var r; t(b, function (b, q) {
                                            if (!l && -1 < d.collectionsWithUpdate.indexOf(q) && g[q]) for (b = p(b), f[q] = [], r = 0; r < Math.max(b.length, g[q].length); r++)g[q][r] && (void 0 === b[r] ? f[q][r] = g[q][r] : (f[q][r] = {}, e(b[r], g[q][r], f[q][r], l + 1))); else C(b) ?
                                                (f[q] = y(b) ? [] : {}, e(b, g[q] || {}, f[q], l + 1)) : f[q] = "undefined" === typeof g[q] ? null : g[q]
                                        })
                                    } var d = this, g = {}; e(b, this.options, g, 0); return g
                                }
                            }); J(b, "masters/highcharts.src.js", [b["Core/Globals.js"], b["Core/Utilities.js"], b["Core/Options.js"], b["Core/Animation/Fx.js"], b["Core/Animation/AnimationUtilities.js"], b["Core/Renderer/HTML/AST.js"], b["Core/FormatUtilities.js"], b["Core/Renderer/SVG/SVGElement.js"], b["Core/Series/Series.js"]], function (b, f, D, y, C, A, t, r, p) {
                            b.animate = C.animate; b.animObject = C.animObject; b.getDeferredAnimation =
                                C.getDeferredAnimation; b.setAnimation = C.setAnimation; b.stop = C.stop; b.timers = y.timers; b.AST = A; b.Fx = y; b.Series = p; b.SVGElement = r; b.dateFormat = t.dateFormat; b.format = t.format; b.numberFormat = t.numberFormat; b.defaultOptions = D.defaultOptions; b.getOptions = D.getOptions; b.time = D.defaultTime; b.setOptions = D.setOptions; b.addEvent = f.addEvent; b.arrayMax = f.arrayMax; b.arrayMin = f.arrayMin; b.attr = f.attr; b.clearTimeout = f.clearTimeout; b.correctFloat = f.correctFloat; b.createElement = f.createElement; b.css = f.css; b.defined =
                                    f.defined; b.destroyObjectProperties = f.destroyObjectProperties; b.discardElement = f.discardElement; b.erase = f.erase; b.error = f.error; b.extend = f.extend; b.extendClass = f.extendClass; b.find = f.find; b.fireEvent = f.fireEvent; b.getMagnitude = f.getMagnitude; b.getStyle = f.getStyle; b.inArray = f.inArray; b.isArray = f.isArray; b.isClass = f.isClass; b.isDOMElement = f.isDOMElement; b.isFunction = f.isFunction; b.isNumber = f.isNumber; b.isObject = f.isObject; b.isString = f.isString; b.keys = f.keys; b.merge = f.merge; b.normalizeTickInterval = f.normalizeTickInterval;
                                b.objectEach = f.objectEach; b.offset = f.offset; b.pad = f.pad; b.pick = f.pick; b.pInt = f.pInt; b.relativeLength = f.relativeLength; b.removeEvent = f.removeEvent; b.splat = f.splat; b.stableSort = f.stableSort; b.syncTimeout = f.syncTimeout; b.timeUnits = f.timeUnits; b.uniqueKey = f.uniqueKey; b.useSerialIds = f.useSerialIds; b.wrap = f.wrap; return b
                            }); J(b, "Core/Axis/MapAxis.js", [b["Core/Axis/Axis.js"], b["Core/Utilities.js"]], function (b, f) {
                                var B = f.addEvent, y = f.pick, C = function () { return function (b) { this.axis = b } }(); f = function () {
                                    function b() { }
                                    b.compose = function (b) {
                                        b.keepProps.push("mapAxis"); B(b, "init", function () { this.mapAxis || (this.mapAxis = new C(this)) }); B(b, "getSeriesExtremes", function () { if (this.mapAxis) { var b = []; this.isXAxis && (this.series.forEach(function (f, l) { f.useMapGeometry && (b[l] = f.xData, f.xData = []) }), this.mapAxis.seriesXData = b) } }); B(b, "afterGetSeriesExtremes", function () {
                                            if (this.mapAxis) {
                                                var b = this.mapAxis.seriesXData || [], f; if (this.isXAxis) {
                                                    var l = y(this.dataMin, Number.MAX_VALUE); var g = y(this.dataMax, -Number.MAX_VALUE); this.series.forEach(function (e,
                                                        d) { e.useMapGeometry && (l = Math.min(l, y(e.minX, l)), g = Math.max(g, y(e.maxX, g)), e.xData = b[d], f = !0) }); f && (this.dataMin = l, this.dataMax = g); this.mapAxis.seriesXData = void 0
                                                }
                                            }
                                        }); B(b, "afterSetAxisTranslation", function () {
                                            if (this.mapAxis) {
                                                var b = this.chart, f = b.plotWidth / b.plotHeight; b = b.xAxis[0]; var l; "yAxis" === this.coll && "undefined" !== typeof b.transA && this.series.forEach(function (b) { b.preserveAspectRatio && (l = !0) }); if (l && (this.transA = b.transA = Math.min(this.transA, b.transA), f /= (b.max - b.min) / (this.max - this.min), f =
                                                    1 > f ? this : b, b = (f.max - f.min) * f.transA, f.mapAxis.pixelPadding = f.len - b, f.minPixelPadding = f.mapAxis.pixelPadding / 2, b = f.mapAxis.fixTo)) { b = b[1] - f.toValue(b[0], !0); b *= f.transA; if (Math.abs(b) > f.minPixelPadding || f.min === f.dataMin && f.max === f.dataMax) b = 0; f.minPixelPadding -= b }
                                            }
                                        }); B(b, "render", function () { this.mapAxis && (this.mapAxis.fixTo = void 0) })
                                    }; return b
                                }(); f.compose(b); return f
                            }); J(b, "Mixins/ColorSeries.js", [], function () {
                                return {
                                    colorPointMixin: {
                                        setVisible: function (b) {
                                            var f = this, B = b ? "show" : "hide"; f.visible =
                                                f.options.visible = !!b;["graphic", "dataLabel"].forEach(function (b) { if (f[b]) f[b][B]() }); this.series.buildKDTree()
                                        }
                                    }, colorSeriesMixin: {
                                        optionalAxis: "colorAxis", colorAxis: 0, translateColors: function () {
                                            var b = this, f = this.options.nullColor, D = this.colorAxis, y = this.colorKey; (this.data.length ? this.data : this.points).forEach(function (C) {
                                                var A = C.getNestedProperty(y); (A = C.options.color || (C.isNull || null === C.value ? f : D && "undefined" !== typeof A ? D.toColor(A, C) : C.color || b.color)) && C.color !== A && (C.color = A, "point" === b.options.legendType &&
                                                    C.legendItem && b.chart.legend.colorizeItem(C, C.visible))
                                            })
                                        }
                                    }
                                }
                            }); J(b, "Core/Axis/ColorAxis.js", [b["Core/Axis/Axis.js"], b["Core/Chart/Chart.js"], b["Core/Color/Color.js"], b["Mixins/ColorSeries.js"], b["Core/Animation/Fx.js"], b["Core/Globals.js"], b["Core/Legend.js"], b["Mixins/LegendSymbol.js"], b["Core/Color/Palette.js"], b["Core/Series/Point.js"], b["Core/Series/Series.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t, r, p, l, g, e) {
                                var d = this && this.__extends || function () {
                                    var c = function (d, a) {
                                        c = Object.setPrototypeOf ||
                                        { __proto__: [] } instanceof Array && function (a, c) { a.__proto__ = c } || function (a, c) { for (var d in c) c.hasOwnProperty(d) && (a[d] = c[d]) }; return c(d, a)
                                    }; return function (d, a) { function b() { this.constructor = d } c(d, a); d.prototype = null === a ? Object.create(a) : (b.prototype = a.prototype, new b) }
                                }(), u = D.parse; D = y.colorPointMixin; y = y.colorSeriesMixin; var B = A.noop, I = e.addEvent, K = e.extend, F = e.isNumber, w = e.merge, z = e.pick, q = e.splat; ""; K(g.prototype, y); K(l.prototype, D); f.prototype.collectionsWithUpdate.push("colorAxis"); f.prototype.collectionsWithInit.colorAxis =
                                    [f.prototype.addColorAxis]; var m = function (c) {
                                        function b(a, d) { var b = c.call(this, a, d) || this; b.beforePadding = !1; b.chart = void 0; b.coll = "colorAxis"; b.dataClasses = void 0; b.legendItem = void 0; b.legendItems = void 0; b.name = ""; b.options = void 0; b.stops = void 0; b.visible = !0; b.init(a, d); return b } d(b, c); b.prototype.init = function (a, d) {
                                            var e = a.options.legend || {}, g = d.layout ? "vertical" !== d.layout : "vertical" !== e.layout; e = w(b.defaultColorAxisOptions, d, { showEmpty: !1, title: null, visible: e.enabled && (d ? !1 !== d.visible : !0) });
                                            this.coll = "colorAxis"; this.side = d.side || g ? 2 : 1; this.reversed = d.reversed || !g; this.opposite = !g; c.prototype.init.call(this, a, e); d.dataClasses && this.initDataClasses(d); this.initStops(); this.horiz = g; this.zoomEnabled = !1
                                        }; b.prototype.initDataClasses = function (a) {
                                            var c = this.chart, d, b = 0, e = c.options.chart.colorCount, g = this.options, f = a.dataClasses.length; this.dataClasses = d = []; this.legendItems = []; a.dataClasses.forEach(function (a, h) {
                                                a = w(a); d.push(a); if (c.styledMode || !a.color) "category" === g.dataClassColor ? (c.styledMode ||
                                                    (h = c.options.colors, e = h.length, a.color = h[b]), a.colorIndex = b, b++ , b === e && (b = 0)) : a.color = u(g.minColor).tweenTo(u(g.maxColor), 2 > f ? .5 : h / (f - 1))
                                            })
                                        }; b.prototype.hasData = function () { return !!(this.tickPositions || []).length }; b.prototype.setTickPositions = function () { if (!this.dataClasses) return c.prototype.setTickPositions.call(this) }; b.prototype.initStops = function () { this.stops = this.options.stops || [[0, this.options.minColor], [1, this.options.maxColor]]; this.stops.forEach(function (a) { a.color = u(a[1]) }) }; b.prototype.setOptions =
                                            function (a) { c.prototype.setOptions.call(this, a); this.options.crosshair = this.options.marker }; b.prototype.setAxisSize = function () { var a = this.legendSymbol, c = this.chart, d = c.options.legend || {}, e, g; a ? (this.left = d = a.attr("x"), this.top = e = a.attr("y"), this.width = g = a.attr("width"), this.height = a = a.attr("height"), this.right = c.chartWidth - d - g, this.bottom = c.chartHeight - e - a, this.len = this.horiz ? g : a, this.pos = this.horiz ? d : e) : this.len = (this.horiz ? d.symbolWidth : d.symbolHeight) || b.defaultLegendLength }; b.prototype.normalizedValue =
                                                function (a) { this.logarithmic && (a = this.logarithmic.log2lin(a)); return 1 - (this.max - a) / (this.max - this.min || 1) }; b.prototype.toColor = function (a, c) {
                                                    var d = this.dataClasses, b = this.stops, e; if (d) for (e = d.length; e--;) { var g = d[e]; var k = g.from; b = g.to; if (("undefined" === typeof k || a >= k) && ("undefined" === typeof b || a <= b)) { var f = g.color; c && (c.dataClass = e, c.colorIndex = g.colorIndex); break } } else {
                                                        a = this.normalizedValue(a); for (e = b.length; e-- && !(a > b[e][0]);); k = b[e] || b[e + 1]; b = b[e + 1] || k; a = 1 - (b[0] - a) / (b[0] - k[0] || 1); f = k.color.tweenTo(b.color,
                                                            a)
                                                    } return f
                                                }; b.prototype.getOffset = function () { var a = this.legendGroup, d = this.chart.axisOffset[this.side]; a && (this.axisParent = a, c.prototype.getOffset.call(this), this.added || (this.added = !0, this.labelLeft = 0, this.labelRight = this.width), this.chart.axisOffset[this.side] = d) }; b.prototype.setLegendColor = function () { var a = this.reversed, c = a ? 1 : 0; a = a ? 0 : 1; c = this.horiz ? [c, 0, a, 0] : [0, a, 0, c]; this.legendColor = { linearGradient: { x1: c[0], y1: c[1], x2: c[2], y2: c[3] }, stops: this.stops } }; b.prototype.drawLegendSymbol = function (a,
                                                    c) { var d = a.padding, e = a.options, g = this.horiz, k = z(e.symbolWidth, g ? b.defaultLegendLength : 12), f = z(e.symbolHeight, g ? 12 : b.defaultLegendLength), l = z(e.labelPadding, g ? 16 : 30); e = z(e.itemDistance, 10); this.setLegendColor(); c.legendSymbol = this.chart.renderer.rect(0, a.baseline - 11, k, f).attr({ zIndex: 1 }).add(c.legendGroup); this.legendItemWidth = k + d + (g ? e : l); this.legendItemHeight = f + d + (g ? l : 0) }; b.prototype.setState = function (a) { this.series.forEach(function (c) { c.setState(a) }) }; b.prototype.setVisible = function () { }; b.prototype.getSeriesExtremes =
                                                        function () {
                                                            var a = this.series, c = a.length, d; this.dataMin = Infinity; for (this.dataMax = -Infinity; c--;) {
                                                                var b = a[c]; var e = b.colorKey = z(b.options.colorKey, b.colorKey, b.pointValKey, b.zoneAxis, "y"); var f = b.pointArrayMap; var l = b[e + "Min"] && b[e + "Max"]; if (b[e + "Data"]) var m = b[e + "Data"]; else if (f) { m = []; f = f.indexOf(e); var n = b.yData; if (0 <= f && n) for (d = 0; d < n.length; d++)m.push(z(n[d][f], n[d])) } else m = b.yData; l ? (b.minColorValue = b[e + "Min"], b.maxColorValue = b[e + "Max"]) : (m = g.prototype.getExtremes.call(b, m), b.minColorValue = m.dataMin,
                                                                    b.maxColorValue = m.dataMax); "undefined" !== typeof b.minColorValue && (this.dataMin = Math.min(this.dataMin, b.minColorValue), this.dataMax = Math.max(this.dataMax, b.maxColorValue)); l || g.prototype.applyExtremes.call(b)
                                                            }
                                                        }; b.prototype.drawCrosshair = function (a, d) {
                                                            var b = d && d.plotX, e = d && d.plotY, g = this.pos, k = this.len; if (d) {
                                                                var f = this.toPixels(d.getNestedProperty(d.series.colorKey)); f < g ? f = g - 2 : f > g + k && (f = g + k + 2); d.plotX = f; d.plotY = this.len - f; c.prototype.drawCrosshair.call(this, a, d); d.plotX = b; d.plotY = e; this.cross && !this.cross.addedToColorAxis &&
                                                                    this.legendGroup && (this.cross.addClass("highcharts-coloraxis-marker").add(this.legendGroup), this.cross.addedToColorAxis = !0, this.chart.styledMode || "object" !== typeof this.crosshair || this.cross.attr({ fill: this.crosshair.color }))
                                                            }
                                                        }; b.prototype.getPlotLinePath = function (a) { var d = this.left, b = a.translatedValue, e = this.top; return F(b) ? this.horiz ? [["M", b - 4, e - 6], ["L", b + 4, e - 6], ["L", b, e], ["Z"]] : [["M", d, b], ["L", d - 6, b + 6], ["L", d - 6, b - 6], ["Z"]] : c.prototype.getPlotLinePath.call(this, a) }; b.prototype.update = function (a,
                                                            d) { var b = this.chart.legend; this.series.forEach(function (a) { a.isDirtyData = !0 }); (a.dataClasses && b.allItems || this.dataClasses) && this.destroyItems(); c.prototype.update.call(this, a, d); this.legendItem && (this.setLegendColor(), b.colorizeItem(this, !0)) }; b.prototype.destroyItems = function () { var a = this.chart; this.legendItem ? a.legend.destroyItem(this) : this.legendItems && this.legendItems.forEach(function (c) { a.legend.destroyItem(c) }); a.isDirtyLegend = !0 }; b.prototype.destroy = function () {
                                                                this.chart.isDirtyLegend = !0;
                                                                this.destroyItems(); c.prototype.destroy.apply(this, [].slice.call(arguments))
                                                            }; b.prototype.remove = function (a) { this.destroyItems(); c.prototype.remove.call(this, a) }; b.prototype.getDataClassLegendSymbols = function () {
                                                                var a = this, c = a.chart, d = a.legendItems, b = c.options.legend, e = b.valueDecimals, g = b.valueSuffix || "", f; d.length || a.dataClasses.forEach(function (b, h) {
                                                                    var k = !0, l = b.from, m = b.to, n = c.numberFormatter; f = ""; "undefined" === typeof l ? f = "< " : "undefined" === typeof m && (f = "> "); "undefined" !== typeof l && (f += n(l, e) +
                                                                        g); "undefined" !== typeof l && "undefined" !== typeof m && (f += " - "); "undefined" !== typeof m && (f += n(m, e) + g); d.push(K({ chart: c, name: f, options: {}, drawLegendSymbol: r.drawRectangle, visible: !0, setState: B, isDataClass: !0, setVisible: function () { k = a.visible = !k; a.series.forEach(function (a) { a.points.forEach(function (a) { a.dataClass === h && a.setVisible(k) }) }); c.legend.colorizeItem(this, k) } }, b))
                                                                }); return d
                                                            }; b.defaultLegendLength = 200; b.defaultColorAxisOptions = {
                                                                lineWidth: 0, minPadding: 0, maxPadding: 0, gridLineWidth: 1, tickPixelInterval: 72,
                                                                startOnTick: !0, endOnTick: !0, offset: 0, marker: { animation: { duration: 50 }, width: .01, color: p.neutralColor40 }, labels: { overflow: "justify", rotation: 0 }, minColor: p.highlightColor10, maxColor: p.highlightColor100, tickLength: 5, showInLegend: !0
                                                            }; b.keepProps = ["legendGroup", "legendItemHeight", "legendItemWidth", "legendItem", "legendSymbol"]; return b
                                    }(b); Array.prototype.push.apply(b.keepProps, m.keepProps); A.ColorAxis = m;["fill", "stroke"].forEach(function (c) {
                                    C.prototype[c + "Setter"] = function () {
                                        this.elem.attr(c, u(this.start).tweenTo(u(this.end),
                                            this.pos), null, !0)
                                    }
                                    }); I(f, "afterGetAxes", function () { var c = this, d = c.options; this.colorAxis = []; d.colorAxis && (d.colorAxis = q(d.colorAxis), d.colorAxis.forEach(function (a, d) { a.index = d; new m(c, a) })) }); I(g, "bindAxes", function () { var c = this.axisTypes; c ? -1 === c.indexOf("colorAxis") && c.push("colorAxis") : this.axisTypes = ["colorAxis"] }); I(t, "afterGetAllItems", function (c) {
                                        var d = this, a = [], b, e, g = function (a) { a = c.allItems.indexOf(a); -1 !== a && (d.destroyItem(c.allItems[a]), c.allItems.splice(a, 1)) }; (this.chart.colorAxis ||
                                            []).forEach(function (c) { (b = c.options) && b.showInLegend && (b.dataClasses && b.visible ? a = a.concat(c.getDataClassLegendSymbols()) : b.visible && a.push(c), c.series.forEach(function (a) { if (!a.options.showInLegend || b.dataClasses) "point" === a.options.legendType ? a.points.forEach(function (a) { g(a) }) : g(a) })) }); for (e = a.length; e--;)c.allItems.unshift(a[e])
                                    }); I(t, "afterColorizeItem", function (c) { c.visible && c.item.legendColor && c.item.legendSymbol.attr({ fill: c.item.legendColor }) }); I(t, "afterUpdate", function () {
                                        var c = this.chart.colorAxis;
                                        c && c.forEach(function (c, a, d) { c.update({}, d) })
                                    }); I(g, "afterTranslate", function () { (this.chart.colorAxis && this.chart.colorAxis.length || this.colorAttribs) && this.translateColors() }); return m
                            }); J(b, "Mixins/ColorMapSeries.js", [b["Core/Globals.js"], b["Core/Series/Point.js"], b["Core/Utilities.js"]], function (b, f, D) {
                                var y = D.defined; D = D.addEvent; var C = b.noop; b = b.seriesTypes; D(f, "afterSetState", function (b) { this.moveToTopOnHover && this.graphic && this.graphic.attr({ zIndex: b && "hover" === b.state ? 1 : 0 }) }); return {
                                    colorMapPointMixin: {
                                        dataLabelOnNull: !0,
                                        moveToTopOnHover: !0, isValid: function () { return null !== this.value && Infinity !== this.value && -Infinity !== this.value }
                                    }, colorMapSeriesMixin: { pointArrayMap: ["value"], axisTypes: ["xAxis", "yAxis", "colorAxis"], trackerGroups: ["group", "markerGroup", "dataLabelsGroup"], getSymbol: C, parallelArrays: ["x", "y", "value"], colorKey: "value", pointAttribs: b.column.prototype.pointAttribs, colorAttribs: function (b) { var f = {}; y(b.color) && (f[this.colorProp || "fill"] = b.color); return f } }
                                }
                            }); J(b, "Maps/MapNavigationOptionsDefault.js", [b["Core/Options.js"],
                            b["Core/Utilities.js"]], function (b, f) {
                                f = f.extend; var B = { buttonOptions: { alignTo: "plotBox", align: "left", verticalAlign: "top", x: 0, width: 18, height: 18, padding: 5, style: { fontSize: "15px", fontWeight: "bold" }, theme: { "stroke-width": 1, "text-align": "center" } }, buttons: { zoomIn: { onclick: function () { this.mapZoom(.5) }, text: "+", y: 0 }, zoomOut: { onclick: function () { this.mapZoom(2) }, text: "-", y: 28 } }, mouseWheelSensitivity: 1.1 }; f(b.defaultOptions.lang, { zoomIn: "Zoom in", zoomOut: "Zoom out" }); return b.defaultOptions.mapNavigation =
                                    B
                            }); J(b, "Maps/MapNavigation.js", [b["Core/Chart/Chart.js"], b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f, D) {
                                function y(b) { b && (b.preventDefault && b.preventDefault(), b.stopPropagation && b.stopPropagation(), b.cancelBubble = !0) } function C(b) { this.init(b) } var A = f.doc, t = D.addEvent, r = D.extend, p = D.merge, l = D.objectEach, g = D.pick; C.prototype.init = function (b) { this.chart = b; b.mapNavButtons = [] }; C.prototype.update = function (b) {
                                    var d = this.chart, e = d.options.mapNavigation, f, A, C, B, w = function (b) {
                                        this.handler.call(d,
                                            b); y(b)
                                    }, z = d.mapNavButtons; b && (e = d.options.mapNavigation = p(d.options.mapNavigation, b)); for (; z.length;)z.pop().destroy(); g(e.enableButtons, e.enabled) && !d.renderer.forExport && l(e.buttons, function (b, g) {
                                        b = p(e.buttonOptions, b); !d.styledMode && b.theme && (f = b.theme, f.style = p(b.theme.style, b.style), C = (A = f.states) && A.hover, B = A && A.select, delete f.states); var c = d.renderer.button(b.text || "", 0, 0, w, f, C, B, void 0, "zoomIn" === g ? "topbutton" : "bottombutton").addClass("highcharts-map-navigation highcharts-" + {
                                            zoomIn: "zoom-in",
                                            zoomOut: "zoom-out"
                                        }[g]).attr({ width: b.width, height: b.height, title: d.options.lang[g], padding: b.padding, zIndex: 5 }).add(); c.handler = b.onclick; t(c.element, "dblclick", y); z.push(c); r(b, { width: c.width, height: 2 * c.height }); if (d.hasLoaded) c.align(b, !1, b.alignTo); else var l = t(d, "load", function () { c.element && c.align(b, !1, b.alignTo); l() })
                                    }); this.updateEvents(e)
                                }; C.prototype.updateEvents = function (b) {
                                    var d = this.chart; g(b.enableDoubleClickZoom, b.enabled) || b.enableDoubleClickZoomTo ? this.unbindDblClick = this.unbindDblClick ||
                                        t(d.container, "dblclick", function (b) { d.pointer.onContainerDblClick(b) }) : this.unbindDblClick && (this.unbindDblClick = this.unbindDblClick()); g(b.enableMouseWheelZoom, b.enabled) ? this.unbindMouseWheel = this.unbindMouseWheel || t(d.container, void 0 !== A.onwheel ? "wheel" : void 0 !== A.onmousewheel ? "mousewheel" : "DOMMouseScroll", function (b) { d.pointer.inClass(b.target, "highcharts-no-mousewheel") || (d.pointer.onContainerMouseWheel(b), y(b)); return !1 }) : this.unbindMouseWheel && (this.unbindMouseWheel = this.unbindMouseWheel())
                                };
                                r(b.prototype, {
                                    fitToBox: function (b, d) { [["x", "width"], ["y", "height"]].forEach(function (e) { var g = e[0]; e = e[1]; b[g] + b[e] > d[g] + d[e] && (b[e] > d[e] ? (b[e] = d[e], b[g] = d[g]) : b[g] = d[g] + d[e] - b[e]); b[e] > d[e] && (b[e] = d[e]); b[g] < d[g] && (b[g] = d[g]) }); return b }, mapZoom: function (b, d, f, l, p, r) {
                                        var e = this.xAxis[0], t = e.max - e.min, u = g(d, e.min + t / 2), q = t * b; t = this.yAxis[0]; var m = t.max - t.min, c = g(f, t.min + m / 2); m *= b; u = this.fitToBox({ x: u - q * (l ? (l - e.pos) / e.len : .5), y: c - m * (p ? (p - t.pos) / t.len : .5), width: q, height: m }, {
                                            x: e.dataMin, y: t.dataMin,
                                            width: e.dataMax - e.dataMin, height: t.dataMax - t.dataMin
                                        }); q = u.x <= e.dataMin && u.width >= e.dataMax - e.dataMin && u.y <= t.dataMin && u.height >= t.dataMax - t.dataMin; l && e.mapAxis && (e.mapAxis.fixTo = [l - e.pos, d]); p && t.mapAxis && (t.mapAxis.fixTo = [p - t.pos, f]); "undefined" === typeof b || q ? (e.setExtremes(void 0, void 0, !1), t.setExtremes(void 0, void 0, !1)) : (e.setExtremes(u.x, u.x + u.width, !1), t.setExtremes(u.y, u.y + u.height, !1)); this.redraw(r)
                                    }
                                }); t(b, "beforeRender", function () { this.mapNavigation = new C(this); this.mapNavigation.update() });
                                f.MapNavigation = C
                            }); J(b, "Maps/MapPointer.js", [b["Core/Pointer.js"], b["Core/Utilities.js"]], function (b, f) {
                                var B = f.extend, y = f.pick; f = f.wrap; var C = 0, A; B(b.prototype, {
                                    onContainerDblClick: function (b) {
                                        var f = this.chart; b = this.normalize(b); f.options.mapNavigation.enableDoubleClickZoomTo ? f.pointer.inClass(b.target, "highcharts-tracker") && f.hoverPoint && f.hoverPoint.zoomTo() : f.isInsidePlot(b.chartX - f.plotLeft, b.chartY - f.plotTop) && f.mapZoom(.5, f.xAxis[0].toValue(b.chartX), f.yAxis[0].toValue(b.chartY), b.chartX,
                                            b.chartY)
                                    }, onContainerMouseWheel: function (b) { var f = this.chart; b = this.normalize(b); var p = b.deltaY || b.detail || -(b.wheelDelta / 120); 1 <= Math.abs(p) && (C += Math.abs(p), A && clearTimeout(A), A = setTimeout(function () { C = 0 }, 50)); 10 > C && f.isInsidePlot(b.chartX - f.plotLeft, b.chartY - f.plotTop) && f.mapZoom(Math.pow(f.options.mapNavigation.mouseWheelSensitivity, p), f.xAxis[0].toValue(b.chartX), f.yAxis[0].toValue(b.chartY), b.chartX, b.chartY, 1 > Math.abs(p) ? !1 : void 0) }
                                }); f(b.prototype, "zoomOption", function (b) {
                                    var f = this.chart.options.mapNavigation;
                                    y(f.enableTouchZoom, f.enabled) && (this.chart.options.chart.pinchType = "xy"); b.apply(this, [].slice.call(arguments, 1))
                                }); f(b.prototype, "pinchTranslate", function (b, f, p, l, g, e, d) { b.call(this, f, p, l, g, e, d); "map" === this.chart.options.chart.type && this.hasZoom && (b = l.scaleX > l.scaleY, this.pinchTranslateDirection(!b, f, p, l, g, e, d, b ? l.scaleX : l.scaleY)) })
                            }); J(b, "Maps/MapSymbols.js", [b["Core/Globals.js"], b["Core/Renderer/SVG/SVGRenderer.js"]], function (b, f) {
                                function B(b, f, t, r, p, l, g, e) {
                                    return [["M", b + p, f], ["L", b + t - l, f],
                                    ["C", b + t - l / 2, f, b + t, f + l / 2, b + t, f + l], ["L", b + t, f + r - g], ["C", b + t, f + r - g / 2, b + t - g / 2, f + r, b + t - g, f + r], ["L", b + e, f + r], ["C", b + e / 2, f + r, b, f + r - e / 2, b, f + r - e], ["L", b, f + p], ["C", b, f + p / 2, b + p / 2, f, b + p, f], ["Z"]]
                                } var y = b.Renderer; f.prototype.symbols.topbutton = function (b, f, t, r, p) { p = p && p.r || 0; return B(b - 1, f - 1, t, r, p, p, 0, 0) }; f.prototype.symbols.bottombutton = function (b, f, t, r, p) { p = p && p.r || 0; return B(b - 1, f - 1, t, r, 0, 0, p, p) }; y !== f && ["topbutton", "bottombutton"].forEach(function (b) { y.prototype.symbols[b] = f.prototype.symbols[b] }); return f.prototype.symbols
                            });
    J(b, "Core/Chart/MapChart.js", [b["Core/Chart/Chart.js"], b["Core/Options.js"], b["Core/Renderer/SVG/SVGRenderer.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
        var B = this && this.__extends || function () {
            var b = function (f, g) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, d) { b.__proto__ = d } || function (b, d) { for (var e in d) d.hasOwnProperty(e) && (b[e] = d[e]) }; return b(f, g) }; return function (f, g) {
                function e() { this.constructor = f } b(f, g); f.prototype = null === g ? Object.create(g) : (e.prototype = g.prototype,
                    new e)
            }
        }(), A = f.getOptions, t = y.merge, r = y.pick; b = function (b) {
            function f() { return null !== b && b.apply(this, arguments) || this } B(f, b); f.prototype.init = function (g, e) {
                var d = { endOnTick: !1, visible: !1, minPadding: 0, maxPadding: 0, startOnTick: !1 }, f = g.series, l = A().credits; g.series = void 0; g = t({
                    chart: { panning: { enabled: !0, type: "xy" }, type: "map" }, credits: { mapText: r(l.mapText, ' \u00a9 <a href="{geojson.copyrightUrl}">{geojson.copyrightShort}</a>'), mapTextFull: r(l.mapTextFull, "{geojson.copyright}") }, tooltip: { followTouchMove: !1 },
                    xAxis: d, yAxis: t(d, { reversed: !0 })
                }, g, { chart: { inverted: !1, alignTicks: !1 } }); g.series = f; b.prototype.init.call(this, g, e)
            }; return f
        }(b); (function (b) { b.maps = {}; b.mapChart = function (f, g, e) { return new b(f, g, e) }; b.splitPath = function (b) { "string" === typeof b && (b = b.replace(/([A-Za-z])/g, " $1 ").replace(/^\s*/, "").replace(/\s*$/, ""), b = b.split(/[ ,;]+/).map(function (b) { return /[A-za-z]/.test(b) ? b : parseFloat(b) })); return D.prototype.pathToSegments(b) } })(b || (b = {})); return b
    }); J(b, "Series/Map/MapPoint.js", [b["Mixins/ColorMapSeries.js"],
    b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D) {
        var y = this && this.__extends || function () { var b = function (f, r) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, f) { b.__proto__ = f } || function (b, f) { for (var g in f) f.hasOwnProperty(g) && (b[g] = f[g]) }; return b(f, r) }; return function (f, r) { function p() { this.constructor = f } b(f, r); f.prototype = null === r ? Object.create(r) : (p.prototype = r.prototype, new p) } }(); b = b.colorMapPointMixin; var B = D.extend; f = function (b) {
            function f() {
                var f =
                    null !== b && b.apply(this, arguments) || this; f.options = void 0; f.path = void 0; f.series = void 0; return f
            } y(f, b); f.prototype.applyOptions = function (f, p) { var l = this.series; f = b.prototype.applyOptions.call(this, f, p); p = l.joinBy; l.mapData && l.mapMap && (p = b.prototype.getNestedProperty.call(f, p[1]), (p = "undefined" !== typeof p && l.mapMap[p]) ? (l.xyFromShape && (f.x = p._midX, f.y = p._midY), B(f, p)) : f.value = f.value || null); return f }; f.prototype.onMouseOver = function (f) {
                D.clearTimeout(this.colorInterval); if (null !== this.value || this.series.options.nullInteraction) b.prototype.onMouseOver.call(this,
                    f); else this.series.onMouseOut(f)
            }; f.prototype.zoomTo = function () { var b = this.series; b.xAxis.setExtremes(this._minX, this._maxX, !1); b.yAxis.setExtremes(this._minY, this._maxY, !1); b.chart.redraw() }; return f
        }(f.seriesTypes.scatter.prototype.pointClass); B(f.prototype, { dataLabelOnNull: b.dataLabelOnNull, isValid: b.isValid, moveToTopOnHover: b.moveToTopOnHover }); return f
    }); J(b, "Series/Map/MapSeries.js", [b["Mixins/ColorMapSeries.js"], b["Core/Globals.js"], b["Mixins/LegendSymbol.js"], b["Core/Chart/MapChart.js"],
    b["Series/Map/MapPoint.js"], b["Core/Color/Palette.js"], b["Core/Series/Series.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Renderer/SVG/SVGRenderer.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t, r, p, l) {
        var g = this && this.__extends || function () {
            var a = function (c, b) { a = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (a, c) { a.__proto__ = c } || function (a, c) { for (var b in c) c.hasOwnProperty(b) && (a[b] = c[b]) }; return a(c, b) }; return function (c, b) {
                function d() { this.constructor = c } a(c, b); c.prototype =
                    null === b ? Object.create(b) : (d.prototype = b.prototype, new d)
            }
        }(); b = b.colorMapSeriesMixin; var e = f.noop, d = y.maps, u = y.splitPath; y = r.seriesTypes; var B = y.column, I = y.scatter; y = l.extend; var K = l.fireEvent, F = l.getNestedProperty, w = l.isArray, z = l.isNumber, q = l.merge, m = l.objectEach, c = l.pick, n = l.splat; l = function (a) {
            function b() { var c = null !== a && a.apply(this, arguments) || this; c.baseTrans = void 0; c.chart = void 0; c.data = void 0; c.group = void 0; c.joinBy = void 0; c.options = void 0; c.points = void 0; c.transformGroup = void 0; return c }
            g(b, a); b.prototype.animate = function (a) { var c = this.options.animation, b = this.group, d = this.xAxis, e = this.yAxis, h = d.pos, g = e.pos; this.chart.renderer.isSVG && (!0 === c && (c = { duration: 1E3 }), a ? b.attr({ translateX: h + d.len / 2, translateY: g + e.len / 2, scaleX: .001, scaleY: .001 }) : b.animate({ translateX: h, translateY: g, scaleX: 1, scaleY: 1 }, c)) }; b.prototype.animateDrilldown = function (a) {
                var c = this.chart.plotBox, b = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1], d = b.bBox, e = this.chart.options.drilldown.animation; a ||
                    (a = Math.min(d.width / c.width, d.height / c.height), b.shapeArgs = { scaleX: a, scaleY: a, translateX: d.x, translateY: d.y }, this.points.forEach(function (a) { a.graphic && a.graphic.attr(b.shapeArgs).animate({ scaleX: 1, scaleY: 1, translateX: 0, translateY: 0 }, e) }))
            }; b.prototype.animateDrillupFrom = function (a) { B.prototype.animateDrillupFrom.call(this, a) }; b.prototype.animateDrillupTo = function (a) { B.prototype.animateDrillupTo.call(this, a) }; b.prototype.doFullTranslate = function () {
                return this.isDirtyData || this.chart.isResizing || this.chart.renderer.isVML ||
                    !this.baseTrans
            }; b.prototype.drawMapDataLabels = function () { t.prototype.drawDataLabels.call(this); this.dataLabelsGroup && this.dataLabelsGroup.clip(this.chart.clipRect) }; b.prototype.drawPoints = function () {
                var a = this, b = a.xAxis, d = a.yAxis, e = a.group, g = a.chart, f = g.renderer, k = this.baseTrans; a.transformGroup || (a.transformGroup = f.g().attr({ scaleX: 1, scaleY: 1 }).add(e), a.transformGroup.survive = !0); if (a.doFullTranslate()) g.hasRendered && !g.styledMode && a.points.forEach(function (c) {
                c.shapeArgs && (c.shapeArgs.fill = a.pointAttribs(c,
                    c.state).fill)
                }), a.group = a.transformGroup, B.prototype.drawPoints.apply(a), a.group = e, a.points.forEach(function (c) { if (c.graphic) { var b = ""; c.name && (b += "highcharts-name-" + c.name.replace(/ /g, "-").toLowerCase()); c.properties && c.properties["hc-key"] && (b += " highcharts-key-" + c.properties["hc-key"].toLowerCase()); b && c.graphic.addClass(b); g.styledMode && c.graphic.css(a.pointAttribs(c, c.selected && "select" || void 0)) } }), this.baseTrans = {
                    originX: b.min - b.minPixelPadding / b.transA, originY: d.min - d.minPixelPadding / d.transA +
                        (d.reversed ? 0 : d.len / d.transA), transAX: b.transA, transAY: d.transA
                }, this.transformGroup.animate({ translateX: 0, translateY: 0, scaleX: 1, scaleY: 1 }); else {
                    var l = b.transA / k.transAX; var m = d.transA / k.transAY; var n = b.toPixels(k.originX, !0); var p = d.toPixels(k.originY, !0); .99 < l && 1.01 > l && .99 < m && 1.01 > m && (m = l = 1, n = Math.round(n), p = Math.round(p)); var q = this.transformGroup; if (g.renderer.globalAnimation) {
                        var r = q.attr("translateX"); var t = q.attr("translateY"); var u = q.attr("scaleX"); var z = q.attr("scaleY"); q.attr({ animator: 0 }).animate({ animator: 1 },
                            { step: function (a, c) { q.attr({ translateX: r + (n - r) * c.pos, translateY: t + (p - t) * c.pos, scaleX: u + (l - u) * c.pos, scaleY: z + (m - z) * c.pos }) } })
                    } else q.attr({ translateX: n, translateY: p, scaleX: l, scaleY: m })
                } g.styledMode || e.element.setAttribute("stroke-width", c(a.options[a.pointAttrToOptions && a.pointAttrToOptions["stroke-width"] || "borderWidth"], 1) / (l || 1)); this.drawMapDataLabels()
            }; b.prototype.getBox = function (a) {
                var b = Number.MAX_VALUE, d = -b, e = b, h = -b, g = b, f = b, k = this.xAxis, l = this.yAxis, m; (a || []).forEach(function (a) {
                    if (a.path) {
                        "string" ===
                        typeof a.path ? a.path = u(a.path) : "M" === a.path[0] && (a.path = p.prototype.pathToSegments(a.path)); var k = a.path || [], l = -b, n = b, q = -b, r = b, t = a.properties; a._foundBox || (k.forEach(function (a) { var c = a[a.length - 2]; a = a[a.length - 1]; "number" === typeof c && "number" === typeof a && (n = Math.min(n, c), l = Math.max(l, c), r = Math.min(r, a), q = Math.max(q, a)) }), a._midX = n + (l - n) * c(a.middleX, t && t["hc-middle-x"], .5), a._midY = r + (q - r) * c(a.middleY, t && t["hc-middle-y"], .5), a._maxX = l, a._minX = n, a._maxY = q, a._minY = r, a.labelrank = c(a.labelrank, (l - n) * (q -
                            r)), a._foundBox = !0); d = Math.max(d, a._maxX); e = Math.min(e, a._minX); h = Math.max(h, a._maxY); g = Math.min(g, a._minY); f = Math.min(a._maxX - a._minX, a._maxY - a._minY, f); m = !0
                    }
                }); m && (this.minY = Math.min(g, c(this.minY, b)), this.maxY = Math.max(h, c(this.maxY, -b)), this.minX = Math.min(e, c(this.minX, b)), this.maxX = Math.max(d, c(this.maxX, -b)), k && "undefined" === typeof k.options.minRange && (k.minRange = Math.min(5 * f, (this.maxX - this.minX) / 5, k.minRange || b)), l && "undefined" === typeof l.options.minRange && (l.minRange = Math.min(5 * f, (this.maxY -
                    this.minY) / 5, l.minRange || b)))
            }; b.prototype.getExtremes = function () { var a = t.prototype.getExtremes.call(this, this.valueData), c = a.dataMin; a = a.dataMax; this.chart.hasRendered && this.isDirtyData && this.getBox(this.options.data); z(c) && (this.valueMin = c); z(a) && (this.valueMax = a); return { dataMin: this.minY, dataMax: this.maxY } }; b.prototype.hasData = function () { return !!this.processedXData.length }; b.prototype.pointAttribs = function (a, b) {
                b = a.series.chart.styledMode ? this.colorAttribs(a) : B.prototype.pointAttribs.call(this,
                    a, b); b["stroke-width"] = c(a.options[this.pointAttrToOptions && this.pointAttrToOptions["stroke-width"] || "borderWidth"], "inherit"); return b
            }; b.prototype.render = function () { var a = this, c = t.prototype.render; a.chart.renderer.isVML && 3E3 < a.data.length ? setTimeout(function () { c.call(a) }) : c.call(a) }; b.prototype.setData = function (a, c, b, e) {
                var h = this.options, g = this.chart.options.chart, k = g && g.map, l = h.mapData, n = this.joinBy, p = h.keys || this.pointArrayMap, r = [], u = {}, v = this.chart.mapTransforms; !l && k && (l = "string" === typeof k ?
                    d[k] : k); a && a.forEach(function (c, b) { var d = 0; if (z(c)) a[b] = { value: c }; else if (w(c)) { a[b] = {}; !h.keys && c.length > p.length && "string" === typeof c[0] && (a[b]["hc-key"] = c[0], ++d); for (var e = 0; e < p.length; ++e, ++d)p[e] && "undefined" !== typeof c[d] && (0 < p[e].indexOf(".") ? C.prototype.setNestedProperty(a[b], c[d], p[e]) : a[b][p[e]] = c[d]) } n && "_i" === n[0] && (a[b]._i = b) }); this.getBox(a); (this.chart.mapTransforms = v = g.mapTransforms || l && l["hc-transform"] || v) && m(v, function (a) {
                    a.rotation && (a.cosAngle = Math.cos(a.rotation), a.sinAngle =
                        Math.sin(a.rotation))
                    }); if (l) {
                    "FeatureCollection" === l.type && (this.mapTitle = l.title, l = f.geojson(l, this.type, this)); this.mapData = l; this.mapMap = {}; for (v = 0; v < l.length; v++)g = l[v], k = g.properties, g._i = v, n[0] && k && k[n[0]] && (g[n[0]] = k[n[0]]), u[g[n[0]]] = g; this.mapMap = u; if (a && n[1]) { var y = n[1]; a.forEach(function (a) { a = F(y, a); u[a] && r.push(u[a]) }) } if (h.allAreas) {
                        this.getBox(l); a = a || []; if (n[1]) { var A = n[1]; a.forEach(function (a) { r.push(F(A, a)) }) } r = "|" + r.map(function (a) { return a && a[n[0]] }).join("|") + "|"; l.forEach(function (c) {
                        n[0] &&
                            -1 !== r.indexOf("|" + c[n[0]] + "|") || (a.push(q(c, { value: null })), e = !1)
                        })
                    } else this.getBox(r)
                    } t.prototype.setData.call(this, a, c, b, e)
            }; b.prototype.setOptions = function (a) { a = t.prototype.setOptions.call(this, a); var c = a.joinBy; null === c && (c = "_i"); c = this.joinBy = n(c); c[1] || (c[1] = c[0]); return a }; b.prototype.translate = function () {
                var a = this, c = a.xAxis, b = a.yAxis, d = a.doFullTranslate(); a.generatePoints(); a.data.forEach(function (e) {
                z(e._midX) && z(e._midY) && (e.plotX = c.toPixels(e._midX, !0), e.plotY = b.toPixels(e._midY, !0));
                    d && (e.shapeType = "path", e.shapeArgs = { d: a.translatePath(e.path) })
                }); K(a, "afterTranslate")
            }; b.prototype.translatePath = function (a) {
                var c = this.xAxis, b = this.yAxis, d = c.min, e = c.transA, h = c.minPixelPadding, g = b.min, f = b.transA, k = b.minPixelPadding, l = []; a && a.forEach(function (a) {
                    "M" === a[0] ? l.push(["M", (a[1] - (d || 0)) * e + h, (a[2] - (g || 0)) * f + k]) : "L" === a[0] ? l.push(["L", (a[1] - (d || 0)) * e + h, (a[2] - (g || 0)) * f + k]) : "C" === a[0] ? l.push(["C", (a[1] - (d || 0)) * e + h, (a[2] - (g || 0)) * f + k, (a[3] - (d || 0)) * e + h, (a[4] - (g || 0)) * f + k, (a[5] - (d || 0)) * e + h, (a[6] -
                        (g || 0)) * f + k]) : "Q" === a[0] ? l.push(["Q", (a[1] - (d || 0)) * e + h, (a[2] - (g || 0)) * f + k, (a[3] - (d || 0)) * e + h, (a[4] - (g || 0)) * f + k]) : "Z" === a[0] && l.push(["Z"])
                }); return l
            }; b.defaultOptions = q(I.defaultOptions, {
                animation: !1, dataLabels: { crop: !1, formatter: function () { return this.point.value }, inside: !0, overflow: !1, padding: 0, verticalAlign: "middle" }, marker: null, nullColor: A.neutralColor3, stickyTracking: !1, tooltip: { followPointer: !0, pointFormat: "{point.name}: {point.value}<br/>" }, turboThreshold: 0, allAreas: !0, borderColor: A.neutralColor20,
                borderWidth: 1, joinBy: "hc-key", states: { hover: { halo: null, brightness: .2 }, normal: { animation: !0 }, select: { color: A.neutralColor20 }, inactive: { opacity: 1 } }
            }); return b
        }(I); y(l.prototype, {
            type: "map", axisTypes: b.axisTypes, colorAttribs: b.colorAttribs, colorKey: b.colorKey, directTouch: !0, drawDataLabels: e, drawGraph: e, drawLegendSymbol: D.drawRectangle, forceDL: !0, getExtremesFromAll: !0, getSymbol: b.getSymbol, parallelArrays: b.parallelArrays, pointArrayMap: b.pointArrayMap, pointClass: C, preserveAspectRatio: !0, searchPoint: e,
            trackerGroups: b.trackerGroups, useMapGeometry: !0
        }); r.registerSeriesType("map", l); ""; return l
    }); J(b, "Series/MapLine/MapLineSeries.js", [b["Series/Map/MapSeries.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D) {
        var y = this && this.__extends || function () {
            var b = function (f, l) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, e) { b.__proto__ = e } || function (b, e) { for (var d in e) e.hasOwnProperty(d) && (b[d] = e[d]) }; return b(f, l) }; return function (f, l) {
                function g() {
                this.constructor =
                    f
                } b(f, l); f.prototype = null === l ? Object.create(l) : (g.prototype = l.prototype, new g)
            }
        }(), C = f.series, A = D.extend, t = D.merge; D = function (f) { function p() { var b = null !== f && f.apply(this, arguments) || this; b.data = void 0; b.options = void 0; b.points = void 0; return b } y(p, f); p.prototype.pointAttribs = function (f, g) { f = b.prototype.pointAttribs.call(this, f, g); f.fill = this.options.fillColor; return f }; p.defaultOptions = t(b.defaultOptions, { lineWidth: 1, fillColor: "none" }); return p }(b); A(D.prototype, {
            type: "mapline", colorProp: "stroke",
            drawLegendSymbol: C.prototype.drawLegendSymbol, pointAttrToOptions: { stroke: "color", "stroke-width": "lineWidth" }
        }); f.registerSeriesType("mapline", D); ""; return D
    }); J(b, "Series/MapPoint/MapPointPoint.js", [b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f) {
        var B = this && this.__extends || function () {
            var b = function (f, t) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, f) { b.__proto__ = f } || function (b, f) { for (var l in f) f.hasOwnProperty(l) && (b[l] = f[l]) }; return b(f, t) }; return function (f,
                t) { function r() { this.constructor = f } b(f, t); f.prototype = null === t ? Object.create(t) : (r.prototype = t.prototype, new r) }
        }(), y = f.merge; return function (b) { function f() { var f = null !== b && b.apply(this, arguments) || this; f.options = void 0; f.series = void 0; return f } B(f, b); f.prototype.applyOptions = function (f, r) { f = "undefined" !== typeof f.lat && "undefined" !== typeof f.lon ? y(f, this.series.chart.fromLatLonToPoint(f)) : f; return b.prototype.applyOptions.call(this, f, r) }; return f }(b.seriesTypes.scatter.prototype.pointClass)
    }); J(b,
        "Series/MapPoint/MapPointSeries.js", [b["Series/MapPoint/MapPointPoint.js"], b["Core/Color/Palette.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
            var B = this && this.__extends || function () {
                var b = function (f, g) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, d) { b.__proto__ = d } || function (b, d) { for (var e in d) d.hasOwnProperty(e) && (b[e] = d[e]) }; return b(f, g) }; return function (f, g) {
                    function e() { this.constructor = f } b(f, g); f.prototype = null === g ? Object.create(g) :
                        (e.prototype = g.prototype, new e)
                }
            }(), A = D.seriesTypes.scatter, t = y.extend, r = y.merge; y = function (b) {
                function l() { var g = null !== b && b.apply(this, arguments) || this; g.data = void 0; g.options = void 0; g.points = void 0; return g } B(l, b); l.prototype.drawDataLabels = function () { b.prototype.drawDataLabels.call(this); this.dataLabelsGroup && this.dataLabelsGroup.clip(this.chart.clipRect) }; l.defaultOptions = r(A.defaultOptions, { dataLabels: { crop: !1, defer: !1, enabled: !0, formatter: function () { return this.point.name }, overflow: !1, style: { color: f.neutralColor100 } } });
                return l
            }(A); t(y.prototype, { type: "mappoint", forceDL: !0, pointClass: b }); D.registerSeriesType("mappoint", y); ""; return y
        }); J(b, "Series/Bubble/BubblePoint.js", [b["Core/Series/Point.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D) {
            var y = this && this.__extends || function () {
                var b = function (f, t) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, f) { b.__proto__ = f } || function (b, f) { for (var l in f) f.hasOwnProperty(l) && (b[l] = f[l]) }; return b(f, t) }; return function (f, t) {
                    function r() {
                    this.constructor =
                        f
                    } b(f, t); f.prototype = null === t ? Object.create(t) : (r.prototype = t.prototype, new r)
                }
            }(); D = D.extend; f = function (f) { function B() { var b = null !== f && f.apply(this, arguments) || this; b.options = void 0; b.series = void 0; return b } y(B, f); B.prototype.haloPath = function (f) { return b.prototype.haloPath.call(this, 0 === f ? 0 : (this.marker ? this.marker.radius || 0 : 0) + f) }; return B }(f.seriesTypes.scatter.prototype.pointClass); D(f.prototype, { ttBelow: !1 }); return f
        }); J(b, "Series/Bubble/BubbleLegend.js", [b["Core/Chart/Chart.js"], b["Core/Color/Color.js"],
        b["Core/FormatUtilities.js"], b["Core/Globals.js"], b["Core/Legend.js"], b["Core/Options.js"], b["Core/Color/Palette.js"], b["Core/Series/Series.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t, r, p) {
            var l = f.parse, g = y.noop; A = A.setOptions; f = p.addEvent; var e = p.arrayMax, d = p.arrayMin, u = p.isNumber, B = p.merge, I = p.objectEach, K = p.pick, F = p.stableSort; p = p.wrap; ""; A({
                legend: {
                    bubbleLegend: {
                        borderColor: void 0, borderWidth: 2, className: void 0, color: void 0, connectorClassName: void 0, connectorColor: void 0, connectorDistance: 60,
                        connectorWidth: 1, enabled: !1, labels: { className: void 0, allowOverlap: !1, format: "", formatter: void 0, align: "right", style: { fontSize: "10px", color: t.neutralColor100 }, x: 0, y: 0 }, maxSize: 60, minSize: 10, legendIndex: 0, ranges: { value: void 0, borderColor: void 0, color: void 0, connectorColor: void 0 }, sizeBy: "area", sizeByAbsoluteValue: !1, zIndex: 1, zThreshold: 0
                    }
                }
            }); t = function () {
                function b(b, d) {
                this.options = this.symbols = this.visible = this.ranges = this.movementX = this.maxLabel = this.legendSymbol = this.legendItemWidth = this.legendItemHeight =
                    this.legendItem = this.legendGroup = this.legend = this.fontMetrics = this.chart = void 0; this.setState = g; this.init(b, d)
                } b.prototype.init = function (b, d) { this.options = b; this.visible = !0; this.chart = d.chart; this.legend = d }; b.prototype.addToLegend = function (b) { b.splice(this.options.legendIndex, 0, this) }; b.prototype.drawLegendSymbol = function (b) {
                    var d = this.chart, e = this.options, c = K(b.options.itemDistance, 20), f = e.ranges; var a = e.connectorDistance; this.fontMetrics = d.renderer.fontMetrics(e.labels.style.fontSize); f && f.length &&
                        u(f[0].value) ? (F(f, function (a, c) { return c.value - a.value }), this.ranges = f, this.setOptions(), this.render(), d = this.getMaxLabelSize(), f = this.ranges[0].radius, b = 2 * f, a = a - f + d.width, a = 0 < a ? a : 0, this.maxLabel = d, this.movementX = "left" === e.labels.align ? a : 0, this.legendItemWidth = b + a + c, this.legendItemHeight = b + this.fontMetrics.h / 2) : b.options.bubbleLegend.autoRanges = !0
                }; b.prototype.setOptions = function () {
                    var b = this.ranges, d = this.options, e = this.chart.series[d.seriesIndex], c = this.legend.baseline, f = { zIndex: d.zIndex, "stroke-width": d.borderWidth },
                    a = { zIndex: d.zIndex, "stroke-width": d.connectorWidth }, g = { align: this.legend.options.rtl || "left" === d.labels.align ? "right" : "left", zIndex: d.zIndex }, h = e.options.marker.fillOpacity, p = this.chart.styledMode; b.forEach(function (k, m) {
                        p || (f.stroke = K(k.borderColor, d.borderColor, e.color), f.fill = K(k.color, d.color, 1 !== h ? l(e.color).setOpacity(h).get("rgba") : e.color), a.stroke = K(k.connectorColor, d.connectorColor, e.color)); b[m].radius = this.getRangeRadius(k.value); b[m] = B(b[m], { center: b[0].radius - b[m].radius + c }); p || B(!0,
                            b[m], { bubbleAttribs: B(f), connectorAttribs: B(a), labelAttribs: g })
                    }, this)
                }; b.prototype.getRangeRadius = function (b) { var d = this.options; return this.chart.series[this.options.seriesIndex].getRadius.call(this, d.ranges[d.ranges.length - 1].value, d.ranges[0].value, d.minSize, d.maxSize, b) }; b.prototype.render = function () {
                    var b = this.chart.renderer, d = this.options.zThreshold; this.symbols || (this.symbols = { connectors: [], bubbleItems: [], labels: [] }); this.legendSymbol = b.g("bubble-legend"); this.legendItem = b.g("bubble-legend-item");
                    this.legendSymbol.translateX = 0; this.legendSymbol.translateY = 0; this.ranges.forEach(function (b) { b.value >= d && this.renderRange(b) }, this); this.legendSymbol.add(this.legendItem); this.legendItem.add(this.legendGroup); this.hideOverlappingLabels()
                }; b.prototype.renderRange = function (b) {
                    var d = this.options, e = d.labels, c = this.chart, f = c.series[d.seriesIndex], a = c.renderer, g = this.symbols; c = g.labels; var h = b.center, l = Math.abs(b.radius), p = d.connectorDistance || 0, r = e.align; p = this.legend.options.rtl || "left" === r ? -p : p; var t =
                        d.connectorWidth, u = this.ranges[0].radius || 0, w = h - l - d.borderWidth / 2 + t / 2, z = this.fontMetrics; z = z.f / 2 - (z.h - z.f) / 2; var y = a.styledMode; "center" === r && (p = 0, d.connectorDistance = 0, b.labelAttribs.align = "center"); r = w + d.labels.y; var B = u + p + d.labels.x; g.bubbleItems.push(a.circle(u, h + ((w % 1 ? 1 : .5) - (t % 2 ? 0 : .5)), l).attr(y ? {} : b.bubbleAttribs).addClass((y ? "highcharts-color-" + f.colorIndex + " " : "") + "highcharts-bubble-legend-symbol " + (d.className || "")).add(this.legendSymbol)); g.connectors.push(a.path(a.crispLine([["M", u, w],
                        ["L", u + p, w]], d.connectorWidth)).attr(y ? {} : b.connectorAttribs).addClass((y ? "highcharts-color-" + this.options.seriesIndex + " " : "") + "highcharts-bubble-legend-connectors " + (d.connectorClassName || "")).add(this.legendSymbol)); b = a.text(this.formatLabel(b), B, r + z).attr(y ? {} : b.labelAttribs).css(y ? {} : e.style).addClass("highcharts-bubble-legend-labels " + (d.labels.className || "")).add(this.legendSymbol); c.push(b); b.placed = !0; b.alignAttr = { x: B, y: r + z }
                }; b.prototype.getMaxLabelSize = function () {
                    var b, d; this.symbols.labels.forEach(function (e) {
                        d =
                        e.getBBox(!0); b = b ? d.width > b.width ? d : b : d
                    }); return b || {}
                }; b.prototype.formatLabel = function (b) { var d = this.options, e = d.labels.formatter; d = d.labels.format; var c = this.chart.numberFormatter; return d ? D.format(d, b) : e ? e.call(b) : c(b.value, 1) }; b.prototype.hideOverlappingLabels = function () { var b = this.chart, d = this.symbols; !this.options.labels.allowOverlap && d && (b.hideOverlappingLabels(d.labels), d.labels.forEach(function (b, c) { b.newOpacity ? b.newOpacity !== b.oldOpacity && d.connectors[c].show() : d.connectors[c].hide() })) };
                b.prototype.getRanges = function () {
                    var b = this.legend.bubbleLegend, f = b.options.ranges, g, c = Number.MAX_VALUE, l = -Number.MAX_VALUE; b.chart.series.forEach(function (a) { a.isBubble && !a.ignoreSeries && (g = a.zData.filter(u), g.length && (c = K(a.options.zMin, Math.min(c, Math.max(d(g), !1 === a.options.displayNegative ? a.options.zThreshold : -Number.MAX_VALUE))), l = K(a.options.zMax, Math.max(l, e(g))))) }); var a = c === l ? [{ value: l }] : [{ value: c }, { value: (c + l) / 2 }, { value: l, autoRanges: !0 }]; f.length && f[0].radius && a.reverse(); a.forEach(function (c,
                        b) { f && f[b] && (a[b] = B(f[b], c)) }); return a
                }; b.prototype.predictBubbleSizes = function () { var b = this.chart, d = this.fontMetrics, e = b.legend.options, c = "horizontal" === e.layout, f = c ? b.legend.lastLineHeight : 0, a = b.plotSizeX, g = b.plotSizeY, h = b.series[this.options.seriesIndex]; b = Math.ceil(h.minPxSize); var l = Math.ceil(h.maxPxSize); h = h.options.maxSize; var p = Math.min(g, a); if (e.floating || !/%$/.test(h)) d = l; else if (h = parseFloat(h), d = (p + f - d.h / 2) * h / 100 / (h / 100 + 1), c && g - d >= a || !c && a - d >= g) d = l; return [b, Math.ceil(d)] }; b.prototype.updateRanges =
                    function (b, d) { var e = this.legend.options.bubbleLegend; e.minSize = b; e.maxSize = d; e.ranges = this.getRanges() }; b.prototype.correctSizes = function () { var b = this.legend, d = this.chart.series[this.options.seriesIndex]; 1 < Math.abs(Math.ceil(d.maxPxSize) - this.options.maxSize) && (this.updateRanges(this.options.minSize, d.maxPxSize), b.render()) }; return b
            }(); f(C, "afterGetAllItems", function (b) {
                var d = this.bubbleLegend, e = this.options, f = e.bubbleLegend, c = this.chart.getVisibleBubbleSeriesIndex(); d && d.ranges && d.ranges.length &&
                    (f.ranges.length && (f.autoRanges = !!f.ranges[0].autoRanges), this.destroyItem(d)); 0 <= c && e.enabled && f.enabled && (f.seriesIndex = c, this.bubbleLegend = new y.BubbleLegend(f, this), this.bubbleLegend.addToLegend(b.allItems))
            }); b.prototype.getVisibleBubbleSeriesIndex = function () { for (var b = this.series, d = 0; d < b.length;) { if (b[d] && b[d].isBubble && b[d].visible && b[d].zData.length) return d; d++ } return -1 }; C.prototype.getLinesHeights = function () {
                var b = this.allItems, d = [], e = b.length, f, c = 0; for (f = 0; f < e; f++)if (b[f].legendItemHeight &&
                    (b[f].itemHeight = b[f].legendItemHeight), b[f] === b[e - 1] || b[f + 1] && b[f]._legendItemPos[1] !== b[f + 1]._legendItemPos[1]) { d.push({ height: 0 }); var g = d[d.length - 1]; for (c; c <= f; c++)b[c].itemHeight > g.height && (g.height = b[c].itemHeight); g.step = f } return d
            }; C.prototype.retranslateItems = function (b) {
                var d, e, f, c = this.options.rtl, g = 0; this.allItems.forEach(function (a, k) {
                    d = a.legendGroup.translateX; e = a._legendItemPos[1]; if ((f = a.movementX) || c && a.ranges) f = c ? d - a.options.maxSize / 2 : d + f, a.legendGroup.attr({ translateX: f }); k > b[g].step &&
                        g++; a.legendGroup.attr({ translateY: Math.round(e + b[g].height / 2) }); a._legendItemPos[1] = e + b[g].height / 2
                })
            }; f(r, "legendItemClick", function () { var b = this.chart, d = this.visible, e = this.chart.legend; e && e.bubbleLegend && (this.visible = !d, this.ignoreSeries = d, b = 0 <= b.getVisibleBubbleSeriesIndex(), e.bubbleLegend.visible !== b && (e.update({ bubbleLegend: { enabled: b } }), e.bubbleLegend.visible = b), this.visible = d) }); p(b.prototype, "drawChartBox", function (b, d, e) {
                var f = this.legend, c = 0 <= this.getVisibleBubbleSeriesIndex(); if (f &&
                    f.options.enabled && f.bubbleLegend && f.options.bubbleLegend.autoRanges && c) {
                        var g = f.bubbleLegend.options; c = f.bubbleLegend.predictBubbleSizes(); f.bubbleLegend.updateRanges(c[0], c[1]); g.placed || (f.group.placed = !1, f.allItems.forEach(function (a) { a.legendGroup.translateY = null })); f.render(); this.getMargins(); this.axes.forEach(function (a) { a.visible && a.render(); g.placed || (a.setScale(), a.updateNames(), I(a.ticks, function (a) { a.isNew = !0; a.isNewLabel = !0 })) }); g.placed = !0; this.getMargins(); b.call(this, d, e); f.bubbleLegend.correctSizes();
                    f.retranslateItems(f.getLinesHeights())
                } else b.call(this, d, e), f && f.options.enabled && f.bubbleLegend && (f.render(), f.retranslateItems(f.getLinesHeights()))
            }); y.BubbleLegend = t; return y.BubbleLegend
        }); J(b, "Series/Bubble/BubbleSeries.js", [b["Core/Axis/Axis.js"], b["Series/Bubble/BubblePoint.js"], b["Core/Color/Color.js"], b["Core/Globals.js"], b["Core/Series/Series.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t) {
            var r = this && this.__extends || function () {
                var b = function (d,
                    e) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (c, b) { c.__proto__ = b } || function (c, b) { for (var a in b) b.hasOwnProperty(a) && (c[a] = b[a]) }; return b(d, e) }; return function (d, e) { function c() { this.constructor = d } b(d, e); d.prototype = null === e ? Object.create(e) : (c.prototype = e.prototype, new c) }
            }(), p = D.parse; D = y.noop; var l = A.seriesTypes; y = l.column; var g = l.scatter, e = t.arrayMax, d = t.arrayMin, u = t.clamp, B = t.extend, I = t.isNumber, K = t.merge, F = t.pick, w = t.pInt; t = function (b) {
                function d() {
                    var d = null !== b && b.apply(this,
                        arguments) || this; d.data = void 0; d.maxPxSize = void 0; d.minPxSize = void 0; d.options = void 0; d.points = void 0; d.radii = void 0; d.yData = void 0; d.zData = void 0; return d
                } r(d, b); d.prototype.animate = function (b) { !b && this.points.length < this.options.animationLimit && this.points.forEach(function (b) { var c = b.graphic; c && c.width && (this.hasRendered || c.attr({ x: b.plotX, y: b.plotY, width: 1, height: 1 }), c.animate(this.markerAttribs(b), this.options.animation)) }, this) }; d.prototype.getRadii = function (b, c, d) {
                    var a = this.zData, e = this.yData,
                    f = d.minPxSize, g = d.maxPxSize, l = []; var m = 0; for (d = a.length; m < d; m++) { var n = a[m]; l.push(this.getRadius(b, c, f, g, n, e[m])) } this.radii = l
                }; d.prototype.getRadius = function (b, c, d, a, e, f) { var g = this.options, h = "width" !== g.sizeBy, k = g.zThreshold, l = c - b, m = .5; if (null === f || null === e) return null; if (I(e)) { g.sizeByAbsoluteValue && (e = Math.abs(e - k), l = Math.max(c - k, Math.abs(b - k)), b = 0); if (e < b) return d / 2 - 1; 0 < l && (m = (e - b) / l) } h && 0 <= m && (m = Math.sqrt(m)); return Math.ceil(d + m * (a - d)) / 2 }; d.prototype.hasData = function () { return !!this.processedXData.length };
                d.prototype.pointAttribs = function (b, c) { var d = this.options.marker.fillOpacity; b = C.prototype.pointAttribs.call(this, b, c); 1 !== d && (b.fill = p(b.fill).setOpacity(d).get("rgba")); return b }; d.prototype.translate = function () { var d, c = this.data, e = this.radii; b.prototype.translate.call(this); for (d = c.length; d--;) { var a = c[d]; var f = e ? e[d] : 0; I(f) && f >= this.minPxSize / 2 ? (a.marker = B(a.marker, { radius: f, width: 2 * f, height: 2 * f }), a.dlBox = { x: a.plotX - f, y: a.plotY - f, width: 2 * f, height: 2 * f }) : a.shapeArgs = a.plotY = a.dlBox = void 0 } }; d.defaultOptions =
                    K(g.defaultOptions, { dataLabels: { formatter: function () { return this.point.z }, inside: !0, verticalAlign: "middle" }, animationLimit: 250, marker: { lineColor: null, lineWidth: 1, fillOpacity: .5, radius: null, states: { hover: { radiusPlus: 0 } }, symbol: "circle" }, minSize: 8, maxSize: "20%", softThreshold: !1, states: { hover: { halo: { size: 5 } } }, tooltip: { pointFormat: "({point.x}, {point.y}), Size: {point.z}" }, turboThreshold: 0, zThreshold: 0, zoneAxis: "z" }); return d
            }(g); B(t.prototype, {
                alignDataLabel: y.prototype.alignDataLabel, applyZones: D, bubblePadding: !0,
                buildKDTree: D, directTouch: !0, isBubble: !0, pointArrayMap: ["y", "z"], pointClass: f, parallelArrays: ["x", "y", "z"], trackerGroups: ["group", "dataLabelsGroup"], specialGroup: "group", zoneAxis: "z"
            }); b.prototype.beforePadding = function () {
                var b = this, f = this.len, g = this.chart, c = 0, l = f, a = this.isXAxis, k = a ? "xData" : "yData", h = this.min, p = {}, r = Math.min(g.plotWidth, g.plotHeight), t = Number.MAX_VALUE, y = -Number.MAX_VALUE, B = this.max - h, A = f / B, C = []; this.series.forEach(function (c) {
                    var f = c.options; !c.bubblePadding || !c.visible && g.options.chart.ignoreHiddenSeries ||
                        (b.allowZoomOutside = !0, C.push(c), a && (["minSize", "maxSize"].forEach(function (a) { var b = f[a], c = /%$/.test(b); b = w(b); p[a] = c ? r * b / 100 : b }), c.minPxSize = p.minSize, c.maxPxSize = Math.max(p.maxSize, p.minSize), c = c.zData.filter(I), c.length && (t = F(f.zMin, u(d(c), !1 === f.displayNegative ? f.zThreshold : -Number.MAX_VALUE, t)), y = F(f.zMax, Math.max(y, e(c))))))
                }); C.forEach(function (d) {
                    var e = d[k], f = e.length; a && d.getRadii(t, y, d); if (0 < B) for (; f--;)if (I(e[f]) && b.dataMin <= e[f] && e[f] <= b.max) {
                        var g = d.radii ? d.radii[f] : 0; c = Math.min((e[f] -
                            h) * A - g, c); l = Math.max((e[f] - h) * A + g, l)
                    }
                }); C.length && 0 < B && !this.logarithmic && (l -= f, A *= (f + Math.max(0, c) - Math.min(l, f)) / f, [["min", "userMin", c], ["max", "userMax", l]].forEach(function (a) { "undefined" === typeof F(b.options[a[0]], b[a[1]]) && (b[a[0]] += a[2] / A) }))
            }; A.registerSeriesType("bubble", t); ""; ""; return t
        }); J(b, "Series/MapBubble/MapBubblePoint.js", [b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f) {
            var B = this && this.__extends || function () {
                var b = function (f, p) {
                    b = Object.setPrototypeOf || { __proto__: [] } instanceof
                    Array && function (b, f) { b.__proto__ = f } || function (b, f) { for (var e in f) f.hasOwnProperty(e) && (b[e] = f[e]) }; return b(f, p)
                }; return function (f, p) { function l() { this.constructor = f } b(f, p); f.prototype = null === p ? Object.create(p) : (l.prototype = p.prototype, new l) }
            }(), y = b.seriesTypes, C = y.map; b = f.extend; var A = f.merge; f = function (b) {
                function f() { return null !== b && b.apply(this, arguments) || this } B(f, b); f.prototype.applyOptions = function (f, l) {
                    return f && "undefined" !== typeof f.lat && "undefined" !== typeof f.lon ? b.prototype.applyOptions.call(this,
                        A(f, this.series.chart.fromLatLonToPoint(f)), l) : C.prototype.pointClass.prototype.applyOptions.call(this, f, l)
                }; f.prototype.isValid = function () { return "number" === typeof this.z }; return f
            }(y.bubble.prototype.pointClass); b(f.prototype, { ttBelow: !1 }); return f
        }); J(b, "Series/MapBubble/MapBubbleSeries.js", [b["Series/Bubble/BubbleSeries.js"], b["Series/MapBubble/MapBubblePoint.js"], b["Series/Map/MapSeries.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D, y, C) {
            var B = this && this.__extends ||
                function () { var b = function (f, g) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, d) { b.__proto__ = d } || function (b, d) { for (var e in d) d.hasOwnProperty(e) && (b[e] = d[e]) }; return b(f, g) }; return function (f, g) { function e() { this.constructor = f } b(f, g); f.prototype = null === g ? Object.create(g) : (e.prototype = g.prototype, new e) } }(), t = C.extend, r = C.merge; C = function (f) {
                    function l() { var b = null !== f && f.apply(this, arguments) || this; b.data = void 0; b.options = void 0; b.points = void 0; return b } B(l, f); l.defaultOptions =
                        r(b.defaultOptions, { animationLimit: 500, tooltip: { pointFormat: "{point.name}: {point.z}" } }); return l
                }(b); t(C.prototype, { type: "mapbubble", getBox: D.prototype.getBox, pointArrayMap: ["z"], pointClass: f, setData: D.prototype.setData, setOptions: D.prototype.setOptions, xyFromShape: !0 }); y.registerSeriesType("mapbubble", C); ""; return C
        }); J(b, "Series/Heatmap/HeatmapPoint.js", [b["Mixins/ColorMapSeries.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Utilities.js"]], function (b, f, D) {
            var y = this && this.__extends || function () {
                var b =
                    function (f, l) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, e) { b.__proto__ = e } || function (b, e) { for (var d in e) e.hasOwnProperty(d) && (b[d] = e[d]) }; return b(f, l) }; return function (f, l) { function g() { this.constructor = f } b(f, l); f.prototype = null === l ? Object.create(l) : (g.prototype = l.prototype, new g) }
            }(); b = b.colorMapPointMixin; var B = D.clamp, A = D.extend, t = D.pick; f = function (b) {
                function f() {
                    var f = null !== b && b.apply(this, arguments) || this; f.options = void 0; f.series = void 0; f.value = void 0; f.x = void 0;
                    f.y = void 0; return f
                } y(f, b); f.prototype.applyOptions = function (f, g) { f = b.prototype.applyOptions.call(this, f, g); f.formatPrefix = f.isNull || null === f.value ? "null" : "point"; return f }; f.prototype.getCellAttributes = function () {
                    var b = this.series, f = b.options, e = (f.colsize || 1) / 2, d = (f.rowsize || 1) / 2, p = b.xAxis, r = b.yAxis, y = this.options.marker || b.options.marker; b = b.pointPlacementToXValue(); var A = t(this.pointPadding, f.pointPadding, 0), C = {
                        x1: B(Math.round(p.len - (p.translate(this.x - e, !1, !0, !1, !0, -b) || 0)), -p.len, 2 * p.len), x2: B(Math.round(p.len -
                            (p.translate(this.x + e, !1, !0, !1, !0, -b) || 0)), -p.len, 2 * p.len), y1: B(Math.round(r.translate(this.y - d, !1, !0, !1, !0) || 0), -r.len, 2 * r.len), y2: B(Math.round(r.translate(this.y + d, !1, !0, !1, !0) || 0), -r.len, 2 * r.len)
                    };[["width", "x"], ["height", "y"]].forEach(function (b) { var d = b[0]; b = b[1]; var e = b + "1", f = b + "2", c = Math.abs(C[e] - C[f]), g = y && y.lineWidth || 0, a = Math.abs(C[e] + C[f]) / 2; y[d] && y[d] < c && (C[e] = a - y[d] / 2 - g / 2, C[f] = a + y[d] / 2 + g / 2); A && ("y" === b && (e = f, f = b + "1"), C[e] += A, C[f] -= A) }); return C
                }; f.prototype.haloPath = function (b) {
                    if (!b) return [];
                    var f = this.shapeArgs; return ["M", f.x - b, f.y - b, "L", f.x - b, f.y + f.height + b, f.x + f.width + b, f.y + f.height + b, f.x + f.width + b, f.y - b, "Z"]
                }; f.prototype.isValid = function () { return Infinity !== this.value && -Infinity !== this.value }; return f
            }(f.seriesTypes.scatter.prototype.pointClass); A(f.prototype, { dataLabelOnNull: b.dataLabelOnNull, moveToTopOnHover: b.moveToTopOnHover }); return f
        }); J(b, "Series/Heatmap/HeatmapSeries.js", [b["Mixins/ColorMapSeries.js"], b["Core/Globals.js"], b["Series/Heatmap/HeatmapPoint.js"], b["Mixins/LegendSymbol.js"],
        b["Core/Color/Palette.js"], b["Core/Series/SeriesRegistry.js"], b["Core/Renderer/SVG/SVGRenderer.js"], b["Core/Utilities.js"]], function (b, f, D, y, C, A, t, r) {
            var p = this && this.__extends || function () { var b = function (d, e) { b = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (b, d) { b.__proto__ = d } || function (b, d) { for (var a in d) d.hasOwnProperty(a) && (b[a] = d[a]) }; return b(d, e) }; return function (d, e) { function c() { this.constructor = d } b(d, e); d.prototype = null === e ? Object.create(e) : (c.prototype = e.prototype, new c) } }();
            b = b.colorMapSeriesMixin; var l = A.series, g = A.seriesTypes, e = g.column, d = g.scatter, u = t.prototype.symbols, B = r.extend, I = r.fireEvent, K = r.isNumber, F = r.merge, w = r.pick; t = function (b) {
                function e() { var d = null !== b && b.apply(this, arguments) || this; d.colorAxis = void 0; d.data = void 0; d.options = void 0; d.points = void 0; d.valueMax = NaN; d.valueMin = NaN; return d } p(e, b); e.prototype.drawPoints = function () {
                    var b = this; if ((this.options.marker || {}).enabled || this._hasPointMarkers) l.prototype.drawPoints.call(this), this.points.forEach(function (c) {
                    c.graphic &&
                        c.graphic[b.chart.styledMode ? "css" : "animate"](b.colorAttribs(c))
                    })
                }; e.prototype.getExtremes = function () { var b = l.prototype.getExtremes.call(this, this.valueData), c = b.dataMin; b = b.dataMax; K(c) && (this.valueMin = c); K(b) && (this.valueMax = b); return l.prototype.getExtremes.call(this) }; e.prototype.getValidPoints = function (b, c) { return l.prototype.getValidPoints.call(this, b, c, !0) }; e.prototype.hasData = function () { return !!this.processedXData.length }; e.prototype.init = function () {
                    l.prototype.init.apply(this, arguments);
                    var b = this.options; b.pointRange = w(b.pointRange, b.colsize || 1); this.yAxis.axisPointRange = b.rowsize || 1; B(u, { ellipse: u.circle })
                }; e.prototype.markerAttribs = function (b, c) {
                    var d = b.marker || {}, a = this.options.marker || {}, e = b.shapeArgs || {}, f = {}; if (b.hasImage) return { x: b.plotX, y: b.plotY }; if (c) { var g = a.states[c] || {}; var l = d.states && d.states[c] || {};[["width", "x"], ["height", "y"]].forEach(function (a) { f[a[0]] = (l[a[0]] || g[a[0]] || e[a[0]]) + (l[a[0] + "Plus"] || g[a[0] + "Plus"] || 0); f[a[1]] = e[a[1]] + (e[a[0]] - f[a[0]]) / 2 }) } return c ?
                        f : e
                }; e.prototype.pointAttribs = function (b, c) {
                    var d = l.prototype.pointAttribs.call(this, b, c), a = this.options || {}, e = this.chart.options.plotOptions || {}, g = e.series || {}, m = e.heatmap || {}; e = a.borderColor || m.borderColor || g.borderColor; g = a.borderWidth || m.borderWidth || g.borderWidth || d["stroke-width"]; d.stroke = b && b.marker && b.marker.lineColor || a.marker && a.marker.lineColor || e || this.color; d["stroke-width"] = g; c && (b = F(a.states[c], a.marker && a.marker.states[c], b && b.options.states && b.options.states[c] || {}), c = b.brightness,
                        d.fill = b.color || f.color(d.fill).brighten(c || 0).get(), d.stroke = b.lineColor); return d
                }; e.prototype.setClip = function (b) { var c = this.chart; l.prototype.setClip.apply(this, arguments); (!1 !== this.options.clip || b) && this.markerGroup.clip((b || this.clipBox) && this.sharedClipKey ? c.sharedClips[this.sharedClipKey] : c.clipRect) }; e.prototype.translate = function () {
                    var b = this.options, c = b.marker && b.marker.symbol || "", d = u[c] ? c : "rect", a = -1 !== ["circle", "square"].indexOf(d); this.generatePoints(); this.points.forEach(function (b) {
                        var e =
                            b.getCellAttributes(), f = {}; f.x = Math.min(e.x1, e.x2); f.y = Math.min(e.y1, e.y2); f.width = Math.max(Math.abs(e.x2 - e.x1), 0); f.height = Math.max(Math.abs(e.y2 - e.y1), 0); var g = b.hasImage = 0 === (b.marker && b.marker.symbol || c || "").indexOf("url"); if (a) { var k = Math.abs(f.width - f.height); f.x = Math.min(e.x1, e.x2) + (f.width < f.height ? 0 : k / 2); f.y = Math.min(e.y1, e.y2) + (f.width < f.height ? k / 2 : 0); f.width = f.height = Math.min(f.width, f.height) } k = {
                                plotX: (e.x1 + e.x2) / 2, plotY: (e.y1 + e.y2) / 2, clientX: (e.x1 + e.x2) / 2, shapeType: "path", shapeArgs: F(!0,
                                    f, { d: u[d](f.x, f.y, f.width, f.height) })
                            }; g && (b.marker = { width: f.width, height: f.height }); B(b, k)
                    }); I(this, "afterTranslate")
                }; e.defaultOptions = F(d.defaultOptions, {
                    animation: !1, borderWidth: 0, nullColor: C.neutralColor3, dataLabels: { formatter: function () { return this.point.value }, inside: !0, verticalAlign: "middle", crop: !1, overflow: !1, padding: 0 }, marker: { symbol: "rect", radius: 0, lineColor: void 0, states: { hover: { lineWidthPlus: 0 }, select: {} } }, clip: !0, pointRange: null, tooltip: { pointFormat: "{point.x}, {point.y}: {point.value}<br/>" },
                    states: { hover: { halo: !1, brightness: .2 } }
                }); return e
            }(d); B(t.prototype, { alignDataLabel: e.prototype.alignDataLabel, axisTypes: b.axisTypes, colorAttribs: b.colorAttribs, colorKey: b.colorKey, directTouch: !0, drawLegendSymbol: y.drawRectangle, getExtremesFromAll: !0, getSymbol: l.prototype.getSymbol, parallelArrays: b.parallelArrays, pointArrayMap: ["y", "value"], pointClass: D, trackerGroups: b.trackerGroups }); A.registerSeriesType("heatmap", t); ""; ""; return t
        }); J(b, "Extensions/GeoJSON.js", [b["Core/Chart/Chart.js"], b["Core/FormatUtilities.js"],
        b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, f, D, y) {
            function B(b, e) { var d, f = !1, g = b.x, l = b.y; b = 0; for (d = e.length - 1; b < e.length; d = b++) { var p = e[b][1] > l; var r = e[d][1] > l; p !== r && g < (e[d][0] - e[b][0]) * (l - e[b][1]) / (e[d][1] - e[b][1]) + e[b][0] && (f = !f) } return f } var A = f.format, t = D.win, r = y.error, p = y.extend, l = y.merge; f = y.wrap; ""; b.prototype.transformFromLatLon = function (b, e) {
                var d = this.userOptions.chart && this.userOptions.chart.proj4 || t.proj4; if (!d) return r(21, !1, this), { x: 0, y: null }; b = d(e.crs, [b.lon, b.lat]); d =
                    e.cosAngle || e.rotation && Math.cos(e.rotation); var f = e.sinAngle || e.rotation && Math.sin(e.rotation); b = e.rotation ? [b[0] * d + b[1] * f, -b[0] * f + b[1] * d] : b; return { x: ((b[0] - (e.xoffset || 0)) * (e.scale || 1) + (e.xpan || 0)) * (e.jsonres || 1) + (e.jsonmarginX || 0), y: (((e.yoffset || 0) - b[1]) * (e.scale || 1) + (e.ypan || 0)) * (e.jsonres || 1) - (e.jsonmarginY || 0) }
            }; b.prototype.transformToLatLon = function (b, e) {
                if ("undefined" === typeof t.proj4) r(21, !1, this); else {
                    b = {
                        x: ((b.x - (e.jsonmarginX || 0)) / (e.jsonres || 1) - (e.xpan || 0)) / (e.scale || 1) + (e.xoffset || 0),
                        y: ((-b.y - (e.jsonmarginY || 0)) / (e.jsonres || 1) + (e.ypan || 0)) / (e.scale || 1) + (e.yoffset || 0)
                    }; var d = e.cosAngle || e.rotation && Math.cos(e.rotation), f = e.sinAngle || e.rotation && Math.sin(e.rotation); e = t.proj4(e.crs, "WGS84", e.rotation ? { x: b.x * d + b.y * -f, y: b.x * f + b.y * d } : b); return { lat: e.y, lon: e.x }
                }
            }; b.prototype.fromPointToLatLon = function (b) {
                var e = this.mapTransforms, d; if (e) {
                    for (d in e) if (Object.hasOwnProperty.call(e, d) && e[d].hitZone && B({ x: b.x, y: -b.y }, e[d].hitZone.coordinates[0])) return this.transformToLatLon(b, e[d]); return this.transformToLatLon(b,
                        e["default"])
                } r(22, !1, this)
            }; b.prototype.fromLatLonToPoint = function (b) { var e = this.mapTransforms, d; if (!e) return r(22, !1, this), { x: 0, y: null }; for (d in e) if (Object.hasOwnProperty.call(e, d) && e[d].hitZone) { var f = this.transformFromLatLon(b, e[d]); if (B({ x: f.x, y: -f.y }, e[d].hitZone.coordinates[0])) return f } return this.transformFromLatLon(b, e["default"]) }; D.geojson = function (b, e, d) {
                var f = [], g = [], l = function (b) { b.forEach(function (b, d) { 0 === d ? g.push(["M", b[0], -b[1]]) : g.push(["L", b[0], -b[1]]) }) }; e = e || "map"; b.features.forEach(function (b) {
                    var d =
                        b.geometry, r = d.type; d = d.coordinates; b = b.properties; var t; g = []; "map" === e || "mapbubble" === e ? ("Polygon" === r ? (d.forEach(l), g.push(["Z"])) : "MultiPolygon" === r && (d.forEach(function (b) { b.forEach(l) }), g.push(["Z"])), g.length && (t = { path: g })) : "mapline" === e ? ("LineString" === r ? l(d) : "MultiLineString" === r && d.forEach(l), g.length && (t = { path: g })) : "mappoint" === e && "Point" === r && (t = { x: d[0], y: -d[1] }); t && f.push(p(t, { name: b.name || b.NAME, properties: b }))
                }); d && b.copyrightShort && (d.chart.mapCredits = A(d.chart.options.credits.mapText,
                    { geojson: b }), d.chart.mapCreditsFull = A(d.chart.options.credits.mapTextFull, { geojson: b })); return f
            }; f(b.prototype, "addCredits", function (b, e) { e = l(!0, this.options.credits, e); this.mapCredits && (e.href = null); b.call(this, e); this.credits && this.mapCreditsFull && this.credits.attr({ title: this.mapCreditsFull }) })
        }); J(b, "masters/modules/map.src.js", [b["Core/Globals.js"], b["Core/Chart/MapChart.js"]], function (b, f) { b.MapChart = f; b.mapChart = b.Map = f.mapChart; b.maps = f.maps }); J(b, "masters/highmaps.src.js", [b["masters/highcharts.src.js"]],
            function (b) { b.product = "Highmaps"; return b }); b["masters/highmaps.src.js"]._modules = b; return b["masters/highmaps.src.js"]
});
//# sourceMappingURL=highmaps.js.map


/*
 Highcharts JS v9.1.0 (2021-05-03)

 (c) 2009-2021 Torstein Honsi

 License: www.highcharts.com/license
*/
(function(e){"object"===typeof module&&module.exports?(e["default"]=e,module.exports=e):"function"===typeof define&&define.amd?define("highcharts/highcharts-more",["highcharts"],function(z){e(z);e.Highcharts=z;return e}):e("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(e){function z(e,d,h,c){e.hasOwnProperty(d)||(e[d]=c.apply(null,h))}e=e?e._modules:{};z(e,"Extensions/Pane.js",[e["Core/Chart/Chart.js"],e["Core/Globals.js"],e["Core/Color/Palette.js"],e["Core/Pointer.js"],e["Core/Utilities.js"],
e["Mixins/CenteredSeries.js"]],function(e,d,h,c,a,n){function k(b,a,f){return Math.sqrt(Math.pow(b-f[0],2)+Math.pow(a-f[1],2))<=f[2]/2}var t=a.addEvent,q=a.extend,y=a.merge,b=a.pick,f=a.splat;e.prototype.collectionsWithUpdate.push("pane");a=function(){function b(b,a){this.options=this.chart=this.center=this.background=void 0;this.coll="pane";this.defaultOptions={center:["50%","50%"],size:"85%",innerSize:"0%",startAngle:0};this.defaultBackgroundOptions={shape:"circle",borderWidth:1,borderColor:h.neutralColor20,
backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,h.backgroundColor],[1,h.neutralColor10]]},from:-Number.MAX_VALUE,innerRadius:0,to:Number.MAX_VALUE,outerRadius:"105%"};this.init(b,a)}b.prototype.init=function(b,a){this.chart=a;this.background=[];a.pane.push(this);this.setOptions(b)};b.prototype.setOptions=function(b){this.options=y(this.defaultOptions,this.chart.angular?{background:{}}:void 0,b)};b.prototype.render=function(){var b=this.options,a=this.options.background,m=this.chart.renderer;
this.group||(this.group=m.g("pane-group").attr({zIndex:b.zIndex||0}).add());this.updateCenter();if(a)for(a=f(a),b=Math.max(a.length,this.background.length||0),m=0;m<b;m++)a[m]&&this.axis?this.renderBackground(y(this.defaultBackgroundOptions,a[m]),m):this.background[m]&&(this.background[m]=this.background[m].destroy(),this.background.splice(m,1))};b.prototype.renderBackground=function(b,a){var f="animate",m={"class":"highcharts-pane "+(b.className||"")};this.chart.styledMode||q(m,{fill:b.backgroundColor,
stroke:b.borderColor,"stroke-width":b.borderWidth});this.background[a]||(this.background[a]=this.chart.renderer.path().add(this.group),f="attr");this.background[a][f]({d:this.axis.getPlotBandPath(b.from,b.to,b)}).attr(m)};b.prototype.updateCenter=function(b){this.center=(b||this.axis||{}).center=n.getCenter.call(this)};b.prototype.update=function(b,a){y(!0,this.options,b);y(!0,this.chart.options.pane,b);this.setOptions(this.options);this.render();this.chart.axes.forEach(function(b){b.pane===this&&
(b.pane=null,b.update({},a))},this)};return b}();e.prototype.getHoverPane=function(b){var a=this,f;b&&a.pane.forEach(function(m){var M=b.chartX-a.plotLeft,d=b.chartY-a.plotTop;k(a.inverted?d:M,a.inverted?M:d,m.center)&&(f=m)});return f};t(e,"afterIsInsidePlot",function(b){this.polar&&(b.isInsidePlot=this.pane.some(function(a){return k(b.x,b.y,a.center)}))});t(c,"beforeGetHoverData",function(a){var f=this.chart;f.polar?(f.hoverPane=f.getHoverPane(a),a.filter=function(m){return m.visible&&!(!a.shared&&
m.directTouch)&&b(m.options.enableMouseTracking,!0)&&(!f.hoverPane||m.xAxis.pane===f.hoverPane)}):f.hoverPane=void 0});t(c,"afterGetHoverData",function(b){var a=this.chart;b.hoverPoint&&b.hoverPoint.plotX&&b.hoverPoint.plotY&&a.hoverPane&&!k(b.hoverPoint.plotX,b.hoverPoint.plotY,a.hoverPane.center)&&(b.hoverPoint=void 0)});d.Pane=a;return d.Pane});z(e,"Core/Axis/HiddenAxis.js",[],function(){return function(){function e(){}e.init=function(d){d.getOffset=function(){};d.redraw=function(){this.isDirty=
!1};d.render=function(){this.isDirty=!1};d.createLabelCollector=function(){return function(){}};d.setScale=function(){};d.setCategories=function(){};d.setTitle=function(){};d.isHidden=!0};return e}()});z(e,"Core/Axis/RadialAxis.js",[e["Core/Axis/Axis.js"],e["Core/Axis/Tick.js"],e["Core/Axis/HiddenAxis.js"],e["Core/Utilities.js"]],function(e,d,h,c){var a=c.addEvent,n=c.correctFloat,k=c.defined,t=c.extend,q=c.fireEvent,y=c.merge,b=c.pick,f=c.relativeLength,m=c.wrap;c=function(){function d(){}d.init=
function(a){var m=e.prototype;a.setOptions=function(b){b=this.options=y(a.constructor.defaultOptions,this.defaultPolarOptions,b);b.plotBands||(b.plotBands=[]);q(this,"afterSetOptions")};a.getOffset=function(){m.getOffset.call(this);this.chart.axisOffset[this.side]=0};a.getLinePath=function(a,f,u){a=this.pane.center;var r=this.chart,l=b(f,a[2]/2-this.offset),g=this.left||0,x=this.top||0;"undefined"===typeof u&&(u=this.horiz?0:this.center&&-this.center[3]/2);u&&(l+=u);this.isCircular||"undefined"!==
typeof f?(f=this.chart.renderer.symbols.arc(g+a[0],x+a[1],l,l,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0}),f.xBounds=[g+a[0]],f.yBounds=[x+a[1]-l]):(f=this.postTranslate(this.angleRad,l),f=[["M",this.center[0]+r.plotLeft,this.center[1]+r.plotTop],["L",f.x,f.y]]);return f};a.setAxisTranslation=function(){m.setAxisTranslation.call(this);this.center&&(this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/(this.max-this.min||1):(this.center[2]-this.center[3])/2/(this.max-
this.min||1),this.minPixelPadding=this.isXAxis?this.transA*this.minPointOffset:0)};a.beforeSetTickPositions=function(){this.autoConnect=this.isCircular&&"undefined"===typeof b(this.userMax,this.options.max)&&n(this.endAngleRad-this.startAngleRad)===n(2*Math.PI);!this.isCircular&&this.chart.inverted&&this.max++;this.autoConnect&&(this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0)};a.setAxisSize=function(){m.setAxisSize.call(this);if(this.isRadial){this.pane.updateCenter(this);
var a=this.center=this.pane.center.slice();if(this.isCircular)this.sector=this.endAngleRad-this.startAngleRad;else{var f=this.postTranslate(this.angleRad,a[3]/2);a[0]=f.x-this.chart.plotLeft;a[1]=f.y-this.chart.plotTop}this.len=this.width=this.height=(a[2]-a[3])*b(this.sector,1)/2}};a.getPosition=function(a,f){a=this.translate(a);return this.postTranslate(this.isCircular?a:this.angleRad,b(this.isCircular?f:0>a?0:a,this.center[2]/2)-this.offset)};a.postTranslate=function(b,a){var f=this.chart,r=this.center;
b=this.startAngleRad+b;return{x:f.plotLeft+r[0]+Math.cos(b)*a,y:f.plotTop+r[1]+Math.sin(b)*a}};a.getPlotBandPath=function(a,f,u){var r=function(g){if("string"===typeof g){var l=parseInt(g,10);m.test(g)&&(l=l*x/100);return l}return g},l=this.center,g=this.startAngleRad,x=l[2]/2,p=Math.min(this.offset,0),C=this.left||0,A=this.top||0,m=/%$/;var d=this.isCircular;var k=b(r(u.outerRadius),x),c=r(u.innerRadius);r=b(r(u.thickness),10);if("polygon"===this.options.gridLineInterpolation)p=this.getPlotLinePath({value:a}).concat(this.getPlotLinePath({value:f,
reverse:!0}));else{a=Math.max(a,this.min);f=Math.min(f,this.max);a=this.translate(a);f=this.translate(f);d||(k=a||0,c=f||0);if("circle"!==u.shape&&d)u=g+(a||0),g+=f||0;else{u=-Math.PI/2;g=1.5*Math.PI;var h=!0}k-=p;p=this.chart.renderer.symbols.arc(C+l[0],A+l[1],k,k,{start:Math.min(u,g),end:Math.max(u,g),innerR:b(c,k-(r-p)),open:h});d&&(d=(g+u)/2,C=C+l[0]+l[2]/2*Math.cos(d),p.xBounds=d>-Math.PI/2&&d<Math.PI/2?[C,this.chart.plotWidth]:[0,C],p.yBounds=[A+l[1]+l[2]/2*Math.sin(d)],p.yBounds[0]+=d>-Math.PI&&
0>d||d>Math.PI?-10:10)}return p};a.getCrosshairPosition=function(b,a,f){var r=b.value,l=this.pane.center;if(this.isCircular){if(k(r))b.point&&(g=b.point.shapeArgs||{},g.start&&(r=this.chart.inverted?this.translate(b.point.rectPlotY,!0):b.point.x));else{var g=b.chartX||0;var x=b.chartY||0;r=this.translate(Math.atan2(x-f,g-a)-this.startAngleRad,!0)}b=this.getPosition(r);g=b.x;x=b.y}else k(r)||(g=b.chartX,x=b.chartY),k(g)&&k(x)&&(f=l[1]+this.chart.plotTop,r=this.translate(Math.min(Math.sqrt(Math.pow(g-
a,2)+Math.pow(x-f,2)),l[2]/2)-l[3]/2,!0));return[r,g||0,x||0]};a.getPlotLinePath=function(b){var a=this,u=a.pane.center,r=a.chart,l=r.inverted,g=b.value,x=b.reverse,p=a.getPosition(g),C=a.pane.options.background?a.pane.options.background[0]||a.pane.options.background:{},A=C.innerRadius||"0%",d=C.outerRadius||"100%";C=u[0]+r.plotLeft;var m=u[1]+r.plotTop,k=p.x,c=p.y,h=a.height;p=u[3]/2;var t;b.isCrosshair&&(c=this.getCrosshairPosition(b,C,m),g=c[0],k=c[1],c=c[2]);if(a.isCircular)g=Math.sqrt(Math.pow(k-
C,2)+Math.pow(c-m,2)),x="string"===typeof A?f(A,1):A/g,r="string"===typeof d?f(d,1):d/g,u&&p&&(g=p/g,x<g&&(x=g),r<g&&(r=g)),u=[["M",C+x*(k-C),m-x*(m-c)],["L",k-(1-r)*(k-C),c+(1-r)*(m-c)]];else if((g=a.translate(g))&&(0>g||g>h)&&(g=0),"circle"===a.options.gridLineInterpolation)u=a.getLinePath(0,g,p);else if(u=[],r[l?"yAxis":"xAxis"].forEach(function(g){g.pane===a.pane&&(t=g)}),t)for(C=t.tickPositions,t.autoConnect&&(C=C.concat([C[0]])),x&&(C=C.slice().reverse()),g&&(g+=p),k=0;k<C.length;k++)m=t.getPosition(C[k],
g),u.push(k?["L",m.x,m.y]:["M",m.x,m.y]);return u};a.getTitlePosition=function(){var b=this.center,a=this.chart,f=this.options.title;return{x:a.plotLeft+b[0]+(f.x||0),y:a.plotTop+b[1]-{high:.5,middle:.25,low:0}[f.align]*b[2]+(f.y||0)}};a.createLabelCollector=function(){var b=this;return function(){if(b.isRadial&&b.tickPositions&&!0!==b.options.labels.allowOverlap)return b.tickPositions.map(function(a){return b.ticks[a]&&b.ticks[a].label}).filter(function(b){return!!b})}}};d.compose=function(c,e){a(c,
"init",function(b){var a=this.chart,f=a.inverted,r=a.angular,l=a.polar,g=this.isXAxis,x=this.coll,p=r&&g,C,A=a.options;b=b.userOptions.pane||0;b=this.pane=a.pane&&a.pane[b];if("colorAxis"===x)this.isRadial=!1;else{if(r){if(p?h.init(this):d.init(this),C=!g)this.defaultPolarOptions=d.defaultRadialGaugeOptions}else l&&(d.init(this),this.defaultPolarOptions=(C=this.horiz)?d.defaultCircularOptions:y("xAxis"===x?c.defaultOptions:c.defaultYAxisOptions,d.defaultRadialOptions),f&&"yAxis"===x&&(this.defaultPolarOptions.stackLabels=
c.defaultYAxisOptions.stackLabels,this.defaultPolarOptions.reversedStacks=!0));r||l?(this.isRadial=!0,A.chart.zoomType=null,this.labelCollector||(this.labelCollector=this.createLabelCollector()),this.labelCollector&&a.labelCollectors.push(this.labelCollector)):this.isRadial=!1;b&&C&&(b.axis=this);this.isCircular=C}});a(c,"afterInit",function(){var a=this.chart,f=this.options,u=this.pane,r=u&&u.options;a.angular&&this.isXAxis||!u||!a.angular&&!a.polar||(this.angleRad=(f.angle||0)*Math.PI/180,this.startAngleRad=
(r.startAngle-90)*Math.PI/180,this.endAngleRad=(b(r.endAngle,r.startAngle+360)-90)*Math.PI/180,this.offset=f.offset||0)});a(c,"autoLabelAlign",function(b){this.isRadial&&(b.align=void 0,b.preventDefault())});a(c,"destroy",function(){if(this.chart&&this.chart.labelCollectors){var b=this.labelCollector?this.chart.labelCollectors.indexOf(this.labelCollector):-1;0<=b&&this.chart.labelCollectors.splice(b,1)}});a(c,"initialAxisTranslation",function(){this.isRadial&&this.beforeSetTickPositions()});a(e,"afterGetPosition",
function(b){this.axis.getPosition&&t(b.pos,this.axis.getPosition(this.pos))});a(e,"afterGetLabelPosition",function(a){var m=this.axis,u=this.label;if(u){var r=u.getBBox(),l=m.options.labels,g=l.y,x=20,p=l.align,C=(m.translate(this.pos)+m.startAngleRad+Math.PI/2)/Math.PI*180%360,A=Math.round(C),d="end",c=0>A?A+360:A,h=c,t=0,e=0,y=k(g)?0:.3*-r.height;if(m.isRadial){var q=m.getPosition(this.pos,m.center[2]/2+f(b(l.distance,-25),m.center[2]/2,-m.center[2]/2));"auto"===l.rotation?u.attr({rotation:C}):
k(g)||(g=m.chart.renderer.fontMetrics(u.styles&&u.styles.fontSize).b-r.height/2);k(p)||(m.isCircular?(r.width>m.len*m.tickInterval/(m.max-m.min)&&(x=0),p=C>x&&C<180-x?"left":C>180+x&&C<360-x?"right":"center"):p="center",u.attr({align:p}));if("auto"===p&&2===m.tickPositions.length&&m.isCircular){90<c&&180>c?c=180-c:270<c&&360>=c&&(c=540-c);180<h&&360>=h&&(h=360-h);if(m.pane.options.startAngle===A||m.pane.options.startAngle===A+360||m.pane.options.startAngle===A-360)d="start";p=-90<=A&&90>=A||-360<=
A&&-270>=A||270<=A&&360>=A?"start"===d?"right":"left":"start"===d?"left":"right";70<h&&110>h&&(p="center");15>c||180<=c&&195>c?t=.3*r.height:15<=c&&35>=c?t="start"===d?0:.75*r.height:195<=c&&215>=c?t="start"===d?.75*r.height:0:35<c&&90>=c?t="start"===d?.25*-r.height:r.height:215<c&&270>=c&&(t="start"===d?r.height:.25*-r.height);15>h?e="start"===d?.15*-r.height:.15*r.height:165<h&&180>=h&&(e="start"===d?.15*r.height:.15*-r.height);u.attr({align:p});u.translate(e,t+y)}a.pos.x=q.x+(l.x||0);a.pos.y=q.y+
(g||0)}}});m(e.prototype,"getMarkPath",function(b,a,f,r,l,g,x){var p=this.axis;p.isRadial?(b=p.getPosition(this.pos,p.center[2]/2+r),a=["M",a,f,"L",b.x,b.y]):a=b.call(this,a,f,r,l,g,x);return a})};d.defaultCircularOptions={gridLineWidth:1,labels:{align:void 0,distance:15,x:0,y:void 0,style:{textOverflow:"none"}},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0};d.defaultRadialGaugeOptions={labels:{align:"center",x:0,y:void 0},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,
minorTickPosition:"inside",minorTickWidth:1,tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2};d.defaultRadialOptions={gridLineInterpolation:"circle",gridLineWidth:1,labels:{align:"right",x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}};return d}();c.compose(e,d);return c});z(e,"Series/AreaRange/AreaRangePoint.js",[e["Series/Area/AreaSeries.js"],e["Core/Series/Point.js"],e["Core/Utilities.js"]],function(e,d,h){var c=this&&this.__extends||function(){var a=function(d,
c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,a){b.__proto__=a}||function(b,a){for(var f in a)a.hasOwnProperty(f)&&(b[f]=a[f])};return a(d,c)};return function(d,c){function b(){this.constructor=d}a(d,c);d.prototype=null===c?Object.create(c):(b.prototype=c.prototype,new b)}}(),a=d.prototype,n=h.defined,k=h.isNumber;return function(d){function h(){var a=null!==d&&d.apply(this,arguments)||this;a.high=void 0;a.low=void 0;a.options=void 0;a.plotHigh=void 0;a.plotLow=void 0;a.plotHighX=
void 0;a.plotLowX=void 0;a.plotX=void 0;a.series=void 0;return a}c(h,d);h.prototype.setState=function(){var d=this.state,b=this.series,f=b.chart.polar;n(this.plotHigh)||(this.plotHigh=b.yAxis.toPixels(this.high,!0));n(this.plotLow)||(this.plotLow=this.plotY=b.yAxis.toPixels(this.low,!0));b.stateMarkerGraphic&&(b.lowerStateMarkerGraphic=b.stateMarkerGraphic,b.stateMarkerGraphic=b.upperStateMarkerGraphic);this.graphic=this.upperGraphic;this.plotY=this.plotHigh;f&&(this.plotX=this.plotHighX);a.setState.apply(this,
arguments);this.state=d;this.plotY=this.plotLow;this.graphic=this.lowerGraphic;f&&(this.plotX=this.plotLowX);b.stateMarkerGraphic&&(b.upperStateMarkerGraphic=b.stateMarkerGraphic,b.stateMarkerGraphic=b.lowerStateMarkerGraphic,b.lowerStateMarkerGraphic=void 0);a.setState.apply(this,arguments)};h.prototype.haloPath=function(){var d=this.series.chart.polar,b=[];this.plotY=this.plotLow;d&&(this.plotX=this.plotLowX);this.isInside&&(b=a.haloPath.apply(this,arguments));this.plotY=this.plotHigh;d&&(this.plotX=
this.plotHighX);this.isTopInside&&(b=b.concat(a.haloPath.apply(this,arguments)));return b};h.prototype.isValid=function(){return k(this.low)&&k(this.high)};return h}(e.prototype.pointClass)});z(e,"Series/AreaRange/AreaRangeSeries.js",[e["Series/AreaRange/AreaRangePoint.js"],e["Series/Area/AreaSeries.js"],e["Series/Column/ColumnSeries.js"],e["Core/Globals.js"],e["Core/Series/Series.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h,c,a,n,k){var t=this&&this.__extends||function(){var b=
function(a,f){b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,l){b.__proto__=l}||function(b,l){for(var g in l)l.hasOwnProperty(g)&&(b[g]=l[g])};return b(a,f)};return function(a,f){function r(){this.constructor=a}b(a,f);a.prototype=null===f?Object.create(f):(r.prototype=f.prototype,new r)}}(),q=d.prototype,y=h.prototype;h=c.noop;var b=a.prototype,f=k.defined,m=k.extend,v=k.isArray,w=k.pick,L=k.merge;a=function(a){function c(){var b=null!==a&&a.apply(this,arguments)||this;b.data=
void 0;b.options=void 0;b.points=void 0;b.lowerStateMarkerGraphic=void 0;b.xAxis=void 0;return b}t(c,a);c.prototype.toYData=function(b){return[b.low,b.high]};c.prototype.highToXY=function(b){var a=this.chart,l=this.xAxis.postTranslate(b.rectPlotX||0,this.yAxis.len-b.plotHigh);b.plotHighX=l.x-a.plotLeft;b.plotHigh=l.y-a.plotTop;b.plotLowX=b.plotX};c.prototype.translate=function(){var b=this,a=b.yAxis,l=!!b.modifyValue;q.translate.apply(b);b.points.forEach(function(g){var x=g.high,p=g.plotY;g.isNull?
g.plotY=null:(g.plotLow=p,g.plotHigh=a.translate(l?b.modifyValue(x,g):x,0,1,0,1),l&&(g.yBottom=g.plotHigh))});this.chart.polar&&this.points.forEach(function(g){b.highToXY(g);g.tooltipPos=[(g.plotHighX+g.plotLowX)/2,(g.plotHigh+g.plotLow)/2]})};c.prototype.getGraphPath=function(b){var a=[],l=[],g,x=q.getGraphPath;var p=this.options;var C=this.chart.polar,f=C&&!1!==p.connectEnds,d=p.connectNulls,m=p.step;b=b||this.points;for(g=b.length;g--;){var c=b[g];var k=C?{plotX:c.rectPlotX,plotY:c.yBottom,doCurve:!1}:
{plotX:c.plotX,plotY:c.plotY,doCurve:!1};c.isNull||f||d||b[g+1]&&!b[g+1].isNull||l.push(k);var h={polarPlotY:c.polarPlotY,rectPlotX:c.rectPlotX,yBottom:c.yBottom,plotX:w(c.plotHighX,c.plotX),plotY:c.plotHigh,isNull:c.isNull};l.push(h);a.push(h);c.isNull||f||d||b[g-1]&&!b[g-1].isNull||l.push(k)}b=x.call(this,b);m&&(!0===m&&(m="left"),p.step={left:"right",center:"center",right:"left"}[m]);a=x.call(this,a);l=x.call(this,l);p.step=m;p=[].concat(b,a);!this.chart.polar&&l[0]&&"M"===l[0][0]&&(l[0]=["L",
l[0][1],l[0][2]]);this.graphPath=p;this.areaPath=b.concat(l);p.isArea=!0;p.xMap=b.xMap;this.areaPath.xMap=b.xMap;return p};c.prototype.drawDataLabels=function(){var a=this.points,f=a.length,l,g=[],x=this.options.dataLabels,p,C=this.chart.inverted;if(x){if(v(x)){var A=x[0]||{enabled:!1};var c=x[1]||{enabled:!1}}else A=m({},x),A.x=x.xHigh,A.y=x.yHigh,c=m({},x),c.x=x.xLow,c.y=x.yLow;if(A.enabled||this._hasPointLabels){for(l=f;l--;)if(p=a[l]){var d=A.inside?p.plotHigh<p.plotLow:p.plotHigh>p.plotLow;p.y=
p.high;p._plotY=p.plotY;p.plotY=p.plotHigh;g[l]=p.dataLabel;p.dataLabel=p.dataLabelUpper;p.below=d;C?A.align||(A.align=d?"right":"left"):A.verticalAlign||(A.verticalAlign=d?"top":"bottom")}this.options.dataLabels=A;b.drawDataLabels&&b.drawDataLabels.apply(this,arguments);for(l=f;l--;)if(p=a[l])p.dataLabelUpper=p.dataLabel,p.dataLabel=g[l],delete p.dataLabels,p.y=p.low,p.plotY=p._plotY}if(c.enabled||this._hasPointLabels){for(l=f;l--;)if(p=a[l])d=c.inside?p.plotHigh<p.plotLow:p.plotHigh>p.plotLow,p.below=
!d,C?c.align||(c.align=d?"left":"right"):c.verticalAlign||(c.verticalAlign=d?"bottom":"top");this.options.dataLabels=c;b.drawDataLabels&&b.drawDataLabels.apply(this,arguments)}if(A.enabled)for(l=f;l--;)if(p=a[l])p.dataLabels=[p.dataLabelUpper,p.dataLabel].filter(function(g){return!!g});this.options.dataLabels=x}};c.prototype.alignDataLabel=function(){y.alignDataLabel.apply(this,arguments)};c.prototype.drawPoints=function(){var a=this.points.length,r;b.drawPoints.apply(this,arguments);for(r=0;r<a;){var l=
this.points[r];l.origProps={plotY:l.plotY,plotX:l.plotX,isInside:l.isInside,negative:l.negative,zone:l.zone,y:l.y};l.lowerGraphic=l.graphic;l.graphic=l.upperGraphic;l.plotY=l.plotHigh;f(l.plotHighX)&&(l.plotX=l.plotHighX);l.y=w(l.high,l.origProps.y);l.negative=l.y<(this.options.threshold||0);this.zones.length&&(l.zone=l.getZone());this.chart.polar||(l.isInside=l.isTopInside="undefined"!==typeof l.plotY&&0<=l.plotY&&l.plotY<=this.yAxis.len&&0<=l.plotX&&l.plotX<=this.xAxis.len);r++}b.drawPoints.apply(this,
arguments);for(r=0;r<a;)l=this.points[r],l.upperGraphic=l.graphic,l.graphic=l.lowerGraphic,l.origProps&&(m(l,l.origProps),delete l.origProps),r++};c.defaultOptions=L(d.defaultOptions,{lineWidth:1,threshold:null,tooltip:{pointFormat:'<span style="color:{series.color}">\u25cf</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},trackByArea:!0,dataLabels:{align:void 0,verticalAlign:void 0,xLow:0,xHigh:0,yLow:0,yHigh:0}});return c}(d);m(a.prototype,{pointArrayMap:["low","high"],pointValKey:"low",
deferTranslatePolar:!0,pointClass:e,setStackedPoints:h});n.registerSeriesType("arearange",a);"";return a});z(e,"Series/AreaSplineRange/AreaSplineRangeSeries.js",[e["Series/AreaRange/AreaRangeSeries.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h){var c=this&&this.__extends||function(){var a=function(c,d){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,a){b.__proto__=a}||function(b,a){for(var f in a)a.hasOwnProperty(f)&&(b[f]=a[f])};return a(c,d)};
return function(c,d){function b(){this.constructor=c}a(c,d);c.prototype=null===d?Object.create(d):(b.prototype=d.prototype,new b)}}(),a=d.seriesTypes.spline,n=h.merge;h=h.extend;var k=function(a){function d(){var c=null!==a&&a.apply(this,arguments)||this;c.options=void 0;c.data=void 0;c.points=void 0;return c}c(d,a);d.defaultOptions=n(e.defaultOptions);return d}(e);h(k.prototype,{getPointSpline:a.prototype.getPointSpline});d.registerSeriesType("areasplinerange",k);"";return k});z(e,"Series/ColumnRange/ColumnRangePoint.js",
[e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d){var h=this&&this.__extends||function(){var a=function(c,d){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var f in b)b.hasOwnProperty(f)&&(a[f]=b[f])};return a(c,d)};return function(c,d){function k(){this.constructor=c}a(c,d);c.prototype=null===d?Object.create(d):(k.prototype=d.prototype,new k)}}(),c=e.seriesTypes;e=c.column.prototype.pointClass;var a=d.extend,n=d.isNumber;
d=function(a){function c(){var c=null!==a&&a.apply(this,arguments)||this;c.series=void 0;c.options=void 0;c.barX=void 0;c.pointWidth=void 0;c.shapeType=void 0;return c}h(c,a);c.prototype.isValid=function(){return n(this.low)};return c}(c.arearange.prototype.pointClass);a(d.prototype,{setState:e.prototype.setState});return d});z(e,"Series/ColumnRange/ColumnRangeSeries.js",[e["Series/ColumnRange/ColumnRangePoint.js"],e["Core/Globals.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,
d,h,c){var a=this&&this.__extends||function(){var b=function(a,f){b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,a){b.__proto__=a}||function(b,a){for(var f in a)a.hasOwnProperty(f)&&(b[f]=a[f])};return b(a,f)};return function(a,f){function c(){this.constructor=a}b(a,f);a.prototype=null===f?Object.create(f):(c.prototype=f.prototype,new c)}}();d=d.noop;var n=h.seriesTypes,k=n.arearange,t=n.column,q=t.prototype,y=k.prototype,b=c.clamp,f=c.merge,m=c.pick;c=c.extend;var v={pointRange:null,
marker:null,states:{hover:{halo:!1}}};n=function(c){function d(){var b=null!==c&&c.apply(this,arguments)||this;b.data=void 0;b.points=void 0;b.options=void 0;return b}a(d,c);d.prototype.setOptions=function(){f(!0,arguments[0],{stacking:void 0});return y.setOptions.apply(this,arguments)};d.prototype.translate=function(){var a=this,f=a.yAxis,c=a.xAxis,d=c.startAngleRad,l,g=a.chart,x=a.xAxis.isRadial,p=Math.max(g.chartWidth,g.chartHeight)+999,C;q.translate.apply(a);a.points.forEach(function(r){var A=
r.shapeArgs||{},k=a.options.minPointLength;r.plotHigh=C=b(f.translate(r.high,0,1,0,1),-p,p);r.plotLow=b(r.plotY,-p,p);var h=C;var e=m(r.rectPlotY,r.plotY)-C;Math.abs(e)<k?(k-=e,e+=k,h-=k/2):0>e&&(e*=-1,h-=e);x?(l=r.barX+d,r.shapeType="arc",r.shapeArgs=a.polarArc(h+e,h,l,l+r.pointWidth)):(A.height=e,A.y=h,k=A.x,k=void 0===k?0:k,A=A.width,A=void 0===A?0:A,r.tooltipPos=g.inverted?[f.len+f.pos-g.plotLeft-h-e/2,c.len+c.pos-g.plotTop-k-A/2,e]:[c.left-g.plotLeft+k+A/2,f.pos-g.plotTop+h+e/2,e])})};d.prototype.crispCol=
function(){return q.crispCol.apply(this,arguments)};d.prototype.drawPoints=function(){return q.drawPoints.apply(this,arguments)};d.prototype.drawTracker=function(){return q.drawTracker.apply(this,arguments)};d.prototype.getColumnMetrics=function(){return q.getColumnMetrics.apply(this,arguments)};d.prototype.pointAttribs=function(){return q.pointAttribs.apply(this,arguments)};d.prototype.adjustForMissingColumns=function(){return q.adjustForMissingColumns.apply(this,arguments)};d.prototype.animate=
function(){return q.animate.apply(this,arguments)};d.prototype.translate3dPoints=function(){return q.translate3dPoints.apply(this,arguments)};d.prototype.translate3dShapes=function(){return q.translate3dShapes.apply(this,arguments)};d.defaultOptions=f(t.defaultOptions,k.defaultOptions,v);return d}(k);c(n.prototype,{directTouch:!0,trackerGroups:["group","dataLabelsGroup"],drawGraph:d,getSymbol:d,polarArc:function(){return q.polarArc.apply(this,arguments)},pointClass:e});h.registerSeriesType("columnrange",
n);"";return n});z(e,"Series/ColumnPyramid/ColumnPyramidSeries.js",[e["Series/Column/ColumnSeries.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h){var c=this&&this.__extends||function(){var a=function(c,b){a=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 a(c,b)};return function(c,b){function f(){this.constructor=c}a(c,b);c.prototype=null===b?Object.create(b):(f.prototype=
b.prototype,new f)}}(),a=e.prototype,n=h.clamp,k=h.merge,t=h.pick;h=function(d){function h(){var b=null!==d&&d.apply(this,arguments)||this;b.data=void 0;b.options=void 0;b.points=void 0;return b}c(h,d);h.prototype.translate=function(){var b=this,c=b.chart,d=b.options,k=b.dense=2>b.closestPointRange*b.xAxis.transA;k=b.borderWidth=t(d.borderWidth,k?0:1);var h=b.yAxis,e=d.threshold,q=b.translatedThreshold=h.getThreshold(e),y=t(d.minPointLength,5),u=b.getColumnMetrics(),r=u.width,l=b.barW=Math.max(r,
1+2*k),g=b.pointXOffset=u.offset;c.inverted&&(q-=.5);d.pointPadding&&(l=Math.ceil(l));a.translate.apply(b);b.points.forEach(function(a){var p=t(a.yBottom,q),f=999+Math.abs(p),x=n(a.plotY,-f,h.len+f);f=a.plotX+g;var m=l/2,k=Math.min(x,p);p=Math.max(x,p)-k;var u;a.barX=f;a.pointWidth=r;a.tooltipPos=c.inverted?[h.len+h.pos-c.plotLeft-x,b.xAxis.len-f-m,p]:[f+m,x+h.pos-c.plotTop,p];x=e+(a.total||a.y);"percent"===d.stacking&&(x=e+(0>a.y)?-100:100);x=h.toPixels(x,!0);var F=(u=c.plotHeight-x-(c.plotHeight-
q))?m*(k-x)/u:0;var v=u?m*(k+p-x)/u:0;u=f-F+m;F=f+F+m;var w=f+v+m;v=f-v+m;var H=k-y;var G=k+p;0>a.y&&(H=k,G=k+p+y);c.inverted&&(w=c.plotWidth-k,u=x-(c.plotWidth-q),F=m*(x-w)/u,v=m*(x-(w-p))/u,u=f+m+F,F=u-2*F,w=f-v+m,v=f+v+m,H=k,G=k+p-y,0>a.y&&(G=k+p+y));a.shapeType="path";a.shapeArgs={x:u,y:H,width:F-u,height:p,d:[["M",u,H],["L",F,H],["L",w,G],["L",v,G],["Z"]]}})};h.defaultOptions=k(e.defaultOptions,{});return h}(e);d.registerSeriesType("columnpyramid",h);"";return h});z(e,"Series/Gauge/GaugePoint.js",
[e["Core/Series/SeriesRegistry.js"]],function(e){var d=this&&this.__extends||function(){var d=function(c,a){d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])};return d(c,a)};return function(c,a){function h(){this.constructor=c}d(c,a);c.prototype=null===a?Object.create(a):(h.prototype=a.prototype,new h)}}();return function(h){function c(){var a=null!==h&&h.apply(this,arguments)||this;a.options=void 0;
a.series=void 0;a.shapeArgs=void 0;return a}d(c,h);c.prototype.setState=function(a){this.state=a};return c}(e.series.prototype.pointClass)});z(e,"Series/Gauge/GaugeSeries.js",[e["Series/Gauge/GaugePoint.js"],e["Core/Globals.js"],e["Core/Color/Palette.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h,c,a){var n=this&&this.__extends||function(){var a=function(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&
(a[c]=b[c])};return a(b,c)};return function(b,c){function d(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}();d=d.noop;var k=c.series,t=c.seriesTypes.column,q=a.clamp,y=a.isNumber,b=a.extend,f=a.merge,m=a.pick,v=a.pInt;a=function(b){function a(){var a=null!==b&&b.apply(this,arguments)||this;a.data=void 0;a.points=void 0;a.options=void 0;a.yAxis=void 0;return a}n(a,b);a.prototype.translate=function(){var a=this.yAxis,b=this.options,c=a.center;this.generatePoints();
this.points.forEach(function(d){var l=f(b.dial,d.dial),g=v(m(l.radius,"80%"))*c[2]/200,x=v(m(l.baseLength,"70%"))*g/100,p=v(m(l.rearLength,"10%"))*g/100,r=l.baseWidth||3,A=l.topWidth||1,k=b.overshoot,h=a.startAngleRad+a.translate(d.y,null,null,null,!0);if(y(k)||!1===b.wrap)k=y(k)?k/180*Math.PI:0,h=q(h,a.startAngleRad-k,a.endAngleRad+k);h=180*h/Math.PI;d.shapeType="path";d.shapeArgs={d:l.path||[["M",-p,-r/2],["L",x,-r/2],["L",g,-A/2],["L",g,A/2],["L",x,r/2],["L",-p,r/2],["Z"]],translateX:c[0],translateY:c[1],
rotation:h};d.plotX=c[0];d.plotY=c[1]})};a.prototype.drawPoints=function(){var a=this,b=a.chart,c=a.yAxis.center,d=a.pivot,l=a.options,g=l.pivot,x=b.renderer;a.points.forEach(function(g){var c=g.graphic,p=g.shapeArgs,d=p.d,r=f(l.dial,g.dial);c?(c.animate(p),p.d=d):g.graphic=x[g.shapeType](p).attr({rotation:p.rotation,zIndex:1}).addClass("highcharts-dial").add(a.group);if(!b.styledMode)g.graphic[c?"animate":"attr"]({stroke:r.borderColor||"none","stroke-width":r.borderWidth||0,fill:r.backgroundColor||
h.neutralColor100})});d?d.animate({translateX:c[0],translateY:c[1]}):(a.pivot=x.circle(0,0,m(g.radius,5)).attr({zIndex:2}).addClass("highcharts-pivot").translate(c[0],c[1]).add(a.group),b.styledMode||a.pivot.attr({"stroke-width":g.borderWidth||0,stroke:g.borderColor||h.neutralColor20,fill:g.backgroundColor||h.neutralColor100}))};a.prototype.animate=function(a){var b=this;a||b.points.forEach(function(a){var c=a.graphic;c&&(c.attr({rotation:180*b.yAxis.startAngleRad/Math.PI}),c.animate({rotation:a.shapeArgs.rotation},
b.options.animation))})};a.prototype.render=function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);k.prototype.render.call(this);this.group.clip(this.chart.clipRect)};a.prototype.setData=function(a,b){k.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();m(b,!0)&&this.chart.redraw()};a.prototype.hasData=function(){return!!this.points.length};a.defaultOptions=f(k.defaultOptions,{dataLabels:{borderColor:h.neutralColor20,
borderRadius:3,borderWidth:1,crop:!1,defer:!1,enabled:!0,verticalAlign:"top",y:15,zIndex:2},dial:{},pivot:{},tooltip:{headerFormat:""},showInLegend:!1});return a}(k);b(a.prototype,{angular:!0,directTouch:!0,drawGraph:d,drawTracker:t.prototype.drawTracker,fixedBox:!0,forceDL:!0,noSharedTooltip:!0,pointClass:e,trackerGroups:["group","dataLabelsGroup"]});c.registerSeriesType("gauge",a);"";return a});z(e,"Series/BoxPlot/BoxPlotSeries.js",[e["Series/Column/ColumnSeries.js"],e["Core/Globals.js"],e["Core/Color/Palette.js"],
e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h,c,a){var n=this&&this.__extends||function(){var a=function(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return a(b,c)};return function(b,c){function d(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}();d=d.noop;var k=a.extend,t=a.merge,q=a.pick;a=function(a){function b(){var b=
null!==a&&a.apply(this,arguments)||this;b.data=void 0;b.options=void 0;b.points=void 0;return b}n(b,a);b.prototype.pointAttribs=function(){return{}};b.prototype.translate=function(){var b=this.yAxis,c=this.pointArrayMap;a.prototype.translate.apply(this);this.points.forEach(function(a){c.forEach(function(c){null!==a[c]&&(a[c+"Plot"]=b.translate(a[c],0,1,0,1))});a.plotHigh=a.highPlot})};b.prototype.drawPoints=function(){var a=this,b=a.options,c=a.chart,d=c.renderer,k,h,e,u,r,l,g=0,x,p,C,A,t=!1!==a.doQuartiles,
n,y=a.options.whiskerLength;a.points.forEach(function(f){var m=f.graphic,J=m?"animate":"attr",v=f.shapeArgs,I={},F={},w={},K={},B=f.color||a.color;"undefined"!==typeof f.plotY&&(x=Math.round(v.width),p=Math.floor(v.x),C=p+x,A=Math.round(x/2),k=Math.floor(t?f.q1Plot:f.lowPlot),h=Math.floor(t?f.q3Plot:f.lowPlot),e=Math.floor(f.highPlot),u=Math.floor(f.lowPlot),m||(f.graphic=m=d.g("point").add(a.group),f.stem=d.path().addClass("highcharts-boxplot-stem").add(m),y&&(f.whiskers=d.path().addClass("highcharts-boxplot-whisker").add(m)),
t&&(f.box=d.path(void 0).addClass("highcharts-boxplot-box").add(m)),f.medianShape=d.path(void 0).addClass("highcharts-boxplot-median").add(m)),c.styledMode||(F.stroke=f.stemColor||b.stemColor||B,F["stroke-width"]=q(f.stemWidth,b.stemWidth,b.lineWidth),F.dashstyle=f.stemDashStyle||b.stemDashStyle||b.dashStyle,f.stem.attr(F),y&&(w.stroke=f.whiskerColor||b.whiskerColor||B,w["stroke-width"]=q(f.whiskerWidth,b.whiskerWidth,b.lineWidth),w.dashstyle=f.whiskerDashStyle||b.whiskerDashStyle||b.dashStyle,f.whiskers.attr(w)),
t&&(I.fill=f.fillColor||b.fillColor||B,I.stroke=b.lineColor||B,I["stroke-width"]=b.lineWidth||0,I.dashstyle=f.boxDashStyle||b.boxDashStyle||b.dashStyle,f.box.attr(I)),K.stroke=f.medianColor||b.medianColor||B,K["stroke-width"]=q(f.medianWidth,b.medianWidth,b.lineWidth),K.dashstyle=f.medianDashStyle||b.medianDashStyle||b.dashStyle,f.medianShape.attr(K)),l=f.stem.strokeWidth()%2/2,g=p+A+l,m=[["M",g,h],["L",g,e],["M",g,k],["L",g,u]],f.stem[J]({d:m}),t&&(l=f.box.strokeWidth()%2/2,k=Math.floor(k)+l,h=Math.floor(h)+
l,p+=l,C+=l,m=[["M",p,h],["L",p,k],["L",C,k],["L",C,h],["L",p,h],["Z"]],f.box[J]({d:m})),y&&(l=f.whiskers.strokeWidth()%2/2,e+=l,u+=l,n=/%$/.test(y)?A*parseFloat(y)/100:y/2,m=[["M",g-n,e],["L",g+n,e],["M",g-n,u],["L",g+n,u]],f.whiskers[J]({d:m})),r=Math.round(f.medianPlot),l=f.medianShape.strokeWidth()%2/2,r+=l,m=[["M",p,r],["L",C,r]],f.medianShape[J]({d:m}))})};b.prototype.toYData=function(a){return[a.low,a.q1,a.median,a.q3,a.high]};b.defaultOptions=t(e.defaultOptions,{threshold:null,tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span> <b> {series.name}</b><br/>Maximum: {point.high}<br/>Upper quartile: {point.q3}<br/>Median: {point.median}<br/>Lower quartile: {point.q1}<br/>Minimum: {point.low}<br/>'},
whiskerLength:"50%",fillColor:h.backgroundColor,lineWidth:1,medianWidth:2,whiskerWidth:2});return b}(e);k(a.prototype,{pointArrayMap:["low","q1","median","q3","high"],pointValKey:"high",drawDataLabels:d,setStackedPoints:d});c.registerSeriesType("boxplot",a);"";return a});z(e,"Series/ErrorBar/ErrorBarSeries.js",[e["Series/BoxPlot/BoxPlotSeries.js"],e["Series/Column/ColumnSeries.js"],e["Core/Color/Palette.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h,c,a){var n=this&&
this.__extends||function(){var a=function(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return a(b,c)};return function(b,c){function d(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}(),k=c.seriesTypes.arearange,t=a.merge;a=a.extend;var q=function(a){function b(){var b=null!==a&&a.apply(this,arguments)||this;b.data=void 0;b.options=void 0;
b.points=void 0;return b}n(b,a);b.prototype.getColumnMetrics=function(){return this.linkedParent&&this.linkedParent.columnMetrics||d.prototype.getColumnMetrics.call(this)};b.prototype.drawDataLabels=function(){var a=this.pointValKey;k&&(k.prototype.drawDataLabels.call(this),this.data.forEach(function(b){b.y=b[a]}))};b.prototype.toYData=function(a){return[a.low,a.high]};b.defaultOptions=t(e.defaultOptions,{color:h.neutralColor100,grouping:!1,linkedTo:":previous",tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},
whiskerWidth:null});return b}(e);a(q.prototype,{pointArrayMap:["low","high"],pointValKey:"high",doQuartiles:!1});c.registerSeriesType("errorbar",q);"";return q});z(e,"Core/Axis/WaterfallAxis.js",[e["Extensions/Stacking.js"],e["Core/Utilities.js"]],function(e,d){var h=d.addEvent,c=d.objectEach,a;(function(a){function d(){var a=this.waterfall.stacks;a&&(a.changed=!1,delete a.alreadyChanged)}function t(){var a=this.options.stackLabels;a&&a.enabled&&this.waterfall.stacks&&this.waterfall.renderStackTotals()}
function n(){for(var a=this.axes,b=this.series,c=b.length;c--;)b[c].options.stacking&&(a.forEach(function(a){a.isXAxis||(a.waterfall.stacks.changed=!0)}),c=0)}function y(){this.waterfall||(this.waterfall=new b(this))}var b=function(){function a(a){this.axis=a;this.stacks={changed:!1}}a.prototype.renderStackTotals=function(){var a=this.axis,b=a.waterfall.stacks,d=a.stacking&&a.stacking.stackTotalGroup,f=new e(a,a.options.stackLabels,!1,0,void 0);this.dummyStackItem=f;c(b,function(a){c(a,function(a){f.total=
a.stackTotal;a.label&&(f.label=a.label);e.prototype.render.call(f,d);a.label=f.label;delete f.label})});f.total=null};return a}();a.Composition=b;a.compose=function(a,b){h(a,"init",y);h(a,"afterBuildStacks",d);h(a,"afterRender",t);h(b,"beforeRedraw",n)}})(a||(a={}));return a});z(e,"Series/Waterfall/WaterfallPoint.js",[e["Series/Column/ColumnSeries.js"],e["Core/Series/Point.js"],e["Core/Utilities.js"]],function(e,d,h){var c=this&&this.__extends||function(){var a=function(c,d){a=Object.setPrototypeOf||
{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var b in c)c.hasOwnProperty(b)&&(a[b]=c[b])};return a(c,d)};return function(c,d){function h(){this.constructor=c}a(c,d);c.prototype=null===d?Object.create(d):(h.prototype=d.prototype,new h)}}(),a=h.isNumber;return function(h){function e(){var a=null!==h&&h.apply(this,arguments)||this;a.options=void 0;a.series=void 0;return a}c(e,h);e.prototype.getClassName=function(){var a=d.prototype.getClassName.call(this);this.isSum?
a+=" highcharts-sum":this.isIntermediateSum&&(a+=" highcharts-intermediate-sum");return a};e.prototype.isValid=function(){return a(this.y)||this.isSum||!!this.isIntermediateSum};return e}(e.prototype.pointClass)});z(e,"Series/Waterfall/WaterfallSeries.js",[e["Core/Chart/Chart.js"],e["Core/Globals.js"],e["Core/Color/Palette.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"],e["Core/Axis/WaterfallAxis.js"],e["Series/Waterfall/WaterfallPoint.js"]],function(e,d,h,c,a,n,k){var t=this&&this.__extends||
function(){var a=function(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,g){a.__proto__=g}||function(a,g){for(var b in g)g.hasOwnProperty(b)&&(a[b]=g[b])};return a(b,c)};return function(b,c){function l(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(l.prototype=c.prototype,new l)}}(),q=c.seriesTypes,y=q.column,b=q.line,f=a.arrayMax,m=a.arrayMin,v=a.correctFloat;q=a.extend;var w=a.merge,B=a.objectEach,z=a.pick;a=function(a){function c(){var b=null!==a&&
a.apply(this,arguments)||this;b.chart=void 0;b.data=void 0;b.options=void 0;b.points=void 0;b.stackedYNeg=void 0;b.stackedYPos=void 0;b.stackKey=void 0;b.xData=void 0;b.yAxis=void 0;b.yData=void 0;return b}t(c,a);c.prototype.generatePoints=function(){var a;y.prototype.generatePoints.apply(this);var b=0;for(a=this.points.length;b<a;b++){var g=this.points[b];var c=this.processedYData[b];if(g.isIntermediateSum||g.isSum)g.y=v(c)}};c.prototype.translate=function(){var a=this.options,b=this.yAxis,g,c=z(a.minPointLength,
5),d=c/2,f=a.threshold,A=a.stacking,h=b.waterfall.stacks[this.stackKey];y.prototype.translate.apply(this);var e=g=f;var k=this.points;var m=0;for(a=k.length;m<a;m++){var t=k[m];var u=this.processedYData[m];var n=t.shapeArgs;var v=[0,u];var q=t.y;if(A){if(h){v=h[m];if("overlap"===A){var w=v.stackState[v.stateIndex--];w=0<=q?w:w-q;Object.hasOwnProperty.call(v,"absolutePos")&&delete v.absolutePos;Object.hasOwnProperty.call(v,"absoluteNeg")&&delete v.absoluteNeg}else 0<=q?(w=v.threshold+v.posTotal,v.posTotal-=
q):(w=v.threshold+v.negTotal,v.negTotal-=q,w-=q),!v.posTotal&&Object.hasOwnProperty.call(v,"absolutePos")&&(v.posTotal=v.absolutePos,delete v.absolutePos),!v.negTotal&&Object.hasOwnProperty.call(v,"absoluteNeg")&&(v.negTotal=v.absoluteNeg,delete v.absoluteNeg);t.isSum||(v.connectorThreshold=v.threshold+v.stackTotal);b.reversed?(u=0<=q?w-q:w+q,q=w):(u=w,q=w-q);t.below=u<=z(f,0);n.y=b.translate(u,0,1,0,1);n.height=Math.abs(n.y-b.translate(q,0,1,0,1));if(q=b.waterfall.dummyStackItem)q.x=m,q.label=h[m].label,
q.setOffset(this.pointXOffset||0,this.barW||0,this.stackedYNeg[m],this.stackedYPos[m])}}else w=Math.max(e,e+q)+v[0],n.y=b.translate(w,0,1,0,1),t.isSum?(n.y=b.translate(v[1],0,1,0,1),n.height=Math.min(b.translate(v[0],0,1,0,1),b.len)-n.y):t.isIntermediateSum?(0<=q?(u=v[1]+g,q=g):(u=g,q=v[1]+g),b.reversed&&(u^=q,q^=u,u^=q),n.y=b.translate(u,0,1,0,1),n.height=Math.abs(n.y-Math.min(b.translate(q,0,1,0,1),b.len)),g+=v[1]):(n.height=0<u?b.translate(e,0,1,0,1)-n.y:b.translate(e,0,1,0,1)-b.translate(e-u,
0,1,0,1),e+=u,t.below=e<z(f,0)),0>n.height&&(n.y+=n.height,n.height*=-1);t.plotY=n.y=Math.round(n.y)-this.borderWidth%2/2;n.height=Math.max(Math.round(n.height),.001);t.yBottom=n.y+n.height;n.height<=c&&!t.isNull?(n.height=c,n.y-=d,t.plotY=n.y,t.minPointLengthOffset=0>t.y?-d:d):(t.isNull&&(n.width=0),t.minPointLengthOffset=0);n=t.plotY+(t.negative?n.height:0);this.chart.inverted?t.tooltipPos[0]=b.len-n:t.tooltipPos[1]=n}};c.prototype.processData=function(b){var c=this.options,g=this.yData,d=c.data,
p=g.length,f=c.threshold||0,r,e,h,k,m;for(m=e=r=h=k=0;m<p;m++){var t=g[m];var n=d&&d[m]?d[m]:{};"sum"===t||n.isSum?g[m]=v(e):"intermediateSum"===t||n.isIntermediateSum?(g[m]=v(r),r=0):(e+=t,r+=t);h=Math.min(e,h);k=Math.max(e,k)}a.prototype.processData.call(this,b);c.stacking||(this.dataMin=h+f,this.dataMax=k)};c.prototype.toYData=function(a){return a.isSum?"sum":a.isIntermediateSum?"intermediateSum":a.y};c.prototype.updateParallelArrays=function(b,c){a.prototype.updateParallelArrays.call(this,b,c);
if("sum"===this.yData[0]||"intermediateSum"===this.yData[0])this.yData[0]=null};c.prototype.pointAttribs=function(a,b){var g=this.options.upColor;g&&!a.options.color&&(a.color=0<a.y?g:null);a=y.prototype.pointAttribs.call(this,a,b);delete a.dashstyle;return a};c.prototype.getGraphPath=function(){return[["M",0,0]]};c.prototype.getCrispPath=function(){var a=this.data,b=this.yAxis,g=a.length,c=Math.round(this.graph.strokeWidth())%2/2,d=Math.round(this.borderWidth)%2/2,f=this.xAxis.reversed,e=this.yAxis.reversed,
h=this.options.stacking,k=[],m;for(m=1;m<g;m++){var t=a[m].shapeArgs;var n=a[m-1];var v=a[m-1].shapeArgs;var u=b.waterfall.stacks[this.stackKey];var q=0<n.y?-v.height:0;u&&v&&t&&(u=u[m-1],h?(u=u.connectorThreshold,q=Math.round(b.translate(u,0,1,0,1)+(e?q:0))-c):q=v.y+n.minPointLengthOffset+d-c,k.push(["M",(v.x||0)+(f?0:v.width||0),q],["L",(t.x||0)+(f?t.width||0:0),q]));v&&k.length&&(!h&&0>n.y&&!e||0<n.y&&e)&&((n=k[k.length-2])&&"number"===typeof n[2]&&(n[2]+=v.height||0),(n=k[k.length-1])&&"number"===
typeof n[2]&&(n[2]+=v.height||0))}return k};c.prototype.drawGraph=function(){b.prototype.drawGraph.call(this);this.graph.attr({d:this.getCrispPath()})};c.prototype.setStackedPoints=function(){function a(a,b,g,c){if(z)for(g;g<z;g++)w.stackState[g]+=c;else w.stackState[0]=a,z=w.stackState.length;w.stackState.push(w.stackState[z-1]+b)}var b=this.options,g=this.yAxis.waterfall.stacks,c=b.threshold,d=c||0,f=d,e=this.stackKey,h=this.xData,k=h.length,m,n,t;this.yAxis.stacking.usePercentage=!1;var v=n=t=
d;if(this.visible||!this.chart.options.chart.ignoreHiddenSeries){var u=g.changed;(m=g.alreadyChanged)&&0>m.indexOf(e)&&(u=!0);g[e]||(g[e]={});m=g[e];for(var q=0;q<k;q++){var y=h[q];if(!m[y]||u)m[y]={negTotal:0,posTotal:0,stackTotal:0,threshold:0,stateIndex:0,stackState:[],label:u&&m[y]?m[y].label:void 0};var w=m[y];var B=this.yData[q];0<=B?w.posTotal+=B:w.negTotal+=B;var D=b.data[q];y=w.absolutePos=w.posTotal;var L=w.absoluteNeg=w.negTotal;w.stackTotal=y+L;var z=w.stackState.length;D&&D.isIntermediateSum?
(a(t,n,0,t),t=n,n=c,d^=f,f^=d,d^=f):D&&D.isSum?(a(c,v,z),d=c):(a(d,B,0,v),D&&(v+=B,n+=B));w.stateIndex++;w.threshold=d;d+=w.stackTotal}g.changed=!1;g.alreadyChanged||(g.alreadyChanged=[]);g.alreadyChanged.push(e)}};c.prototype.getExtremes=function(){var a=this.options.stacking;if(a){var b=this.yAxis;b=b.waterfall.stacks;var g=this.stackedYNeg=[];var c=this.stackedYPos=[];"overlap"===a?B(b[this.stackKey],function(a){g.push(m(a.stackState));c.push(f(a.stackState))}):B(b[this.stackKey],function(a){g.push(a.negTotal+
a.threshold);c.push(a.posTotal+a.threshold)});return{dataMin:m(g),dataMax:f(c)}}return{dataMin:this.dataMin,dataMax:this.dataMax}};c.defaultOptions=w(y.defaultOptions,{dataLabels:{inside:!0},lineWidth:1,lineColor:h.neutralColor80,dashStyle:"Dot",borderColor:h.neutralColor80,states:{hover:{lineWidthPlus:0}}});return c}(y);q(a.prototype,{getZonesGraphs:b.prototype.getZonesGraphs,pointValKey:"y",showLine:!0,pointClass:k});c.registerSeriesType("waterfall",a);n.compose(d.Axis,e);"";return a});z(e,"Series/Polygon/PolygonSeries.js",
[e["Core/Globals.js"],e["Mixins/LegendSymbol.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h,c){var a=this&&this.__extends||function(){var a=function(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return a(b,c)};return function(b,c){function d(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}();e=e.noop;var n=h.series,
k=h.seriesTypes,t=k.area,q=k.line,y=k.scatter;k=c.extend;var b=c.merge;c=function(c){function d(){var a=null!==c&&c.apply(this,arguments)||this;a.data=void 0;a.options=void 0;a.points=void 0;return a}a(d,c);d.prototype.getGraphPath=function(){for(var a=q.prototype.getGraphPath.call(this),b=a.length+1;b--;)(b===a.length||"M"===a[b][0])&&0<b&&a.splice(b,0,["Z"]);return this.areaPath=a};d.prototype.drawGraph=function(){this.options.fillColor=this.color;t.prototype.drawGraph.call(this)};d.defaultOptions=
b(y.defaultOptions,{marker:{enabled:!1,states:{hover:{enabled:!1}}},stickyTracking:!1,tooltip:{followPointer:!0,pointFormat:""},trackByArea:!0});return d}(y);k(c.prototype,{type:"polygon",drawLegendSymbol:d.drawRectangle,drawTracker:n.prototype.drawTracker,setStackedPoints:e});h.registerSeriesType("polygon",c);"";return c});z(e,"Series/Bubble/BubblePoint.js",[e["Core/Series/Point.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h){var c=this&&this.__extends||function(){var a=
function(c,d){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])};return a(c,d)};return function(c,d){function e(){this.constructor=c}a(c,d);c.prototype=null===d?Object.create(d):(e.prototype=d.prototype,new e)}}();h=h.extend;d=function(a){function d(){var c=null!==a&&a.apply(this,arguments)||this;c.options=void 0;c.series=void 0;return c}c(d,a);d.prototype.haloPath=function(a){return e.prototype.haloPath.call(this,
0===a?0:(this.marker?this.marker.radius||0:0)+a)};return d}(d.seriesTypes.scatter.prototype.pointClass);h(d.prototype,{ttBelow:!1});return d});z(e,"Series/Bubble/BubbleLegend.js",[e["Core/Chart/Chart.js"],e["Core/Color/Color.js"],e["Core/FormatUtilities.js"],e["Core/Globals.js"],e["Core/Legend.js"],e["Core/Options.js"],e["Core/Color/Palette.js"],e["Core/Series/Series.js"],e["Core/Utilities.js"]],function(e,d,h,c,a,n,k,t,q){var y=d.parse,b=c.noop;n=n.setOptions;d=q.addEvent;var f=q.arrayMax,m=q.arrayMin,
v=q.isNumber,w=q.merge,B=q.objectEach,z=q.pick,E=q.stableSort;q=q.wrap;"";n({legend:{bubbleLegend:{borderColor:void 0,borderWidth:2,className:void 0,color:void 0,connectorClassName:void 0,connectorColor:void 0,connectorDistance:60,connectorWidth:1,enabled:!1,labels:{className:void 0,allowOverlap:!1,format:"",formatter:void 0,align:"right",style:{fontSize:"10px",color:k.neutralColor100},x:0,y:0},maxSize:60,minSize:10,legendIndex:0,ranges:{value:void 0,borderColor:void 0,color:void 0,connectorColor:void 0},
sizeBy:"area",sizeByAbsoluteValue:!1,zIndex:1,zThreshold:0}}});k=function(){function a(a,c){this.options=this.symbols=this.visible=this.ranges=this.movementX=this.maxLabel=this.legendSymbol=this.legendItemWidth=this.legendItemHeight=this.legendItem=this.legendGroup=this.legend=this.fontMetrics=this.chart=void 0;this.setState=b;this.init(a,c)}a.prototype.init=function(a,b){this.options=a;this.visible=!0;this.chart=b.chart;this.legend=b};a.prototype.addToLegend=function(a){a.splice(this.options.legendIndex,
0,this)};a.prototype.drawLegendSymbol=function(a){var b=this.chart,g=this.options,c=z(a.options.itemDistance,20),d=g.ranges;var f=g.connectorDistance;this.fontMetrics=b.renderer.fontMetrics(g.labels.style.fontSize);d&&d.length&&v(d[0].value)?(E(d,function(a,b){return b.value-a.value}),this.ranges=d,this.setOptions(),this.render(),b=this.getMaxLabelSize(),d=this.ranges[0].radius,a=2*d,f=f-d+b.width,f=0<f?f:0,this.maxLabel=b,this.movementX="left"===g.labels.align?f:0,this.legendItemWidth=a+f+c,this.legendItemHeight=
a+this.fontMetrics.h/2):a.options.bubbleLegend.autoRanges=!0};a.prototype.setOptions=function(){var a=this.ranges,b=this.options,g=this.chart.series[b.seriesIndex],c=this.legend.baseline,d={zIndex:b.zIndex,"stroke-width":b.borderWidth},f={zIndex:b.zIndex,"stroke-width":b.connectorWidth},e={align:this.legend.options.rtl||"left"===b.labels.align?"right":"left",zIndex:b.zIndex},h=g.options.marker.fillOpacity,m=this.chart.styledMode;a.forEach(function(l,p){m||(d.stroke=z(l.borderColor,b.borderColor,g.color),
d.fill=z(l.color,b.color,1!==h?y(g.color).setOpacity(h).get("rgba"):g.color),f.stroke=z(l.connectorColor,b.connectorColor,g.color));a[p].radius=this.getRangeRadius(l.value);a[p]=w(a[p],{center:a[0].radius-a[p].radius+c});m||w(!0,a[p],{bubbleAttribs:w(d),connectorAttribs:w(f),labelAttribs:e})},this)};a.prototype.getRangeRadius=function(a){var b=this.options;return this.chart.series[this.options.seriesIndex].getRadius.call(this,b.ranges[b.ranges.length-1].value,b.ranges[0].value,b.minSize,b.maxSize,
a)};a.prototype.render=function(){var a=this.chart.renderer,b=this.options.zThreshold;this.symbols||(this.symbols={connectors:[],bubbleItems:[],labels:[]});this.legendSymbol=a.g("bubble-legend");this.legendItem=a.g("bubble-legend-item");this.legendSymbol.translateX=0;this.legendSymbol.translateY=0;this.ranges.forEach(function(a){a.value>=b&&this.renderRange(a)},this);this.legendSymbol.add(this.legendItem);this.legendItem.add(this.legendGroup);this.hideOverlappingLabels()};a.prototype.renderRange=
function(a){var b=this.options,g=b.labels,c=this.chart,d=c.series[b.seriesIndex],f=c.renderer,e=this.symbols;c=e.labels;var h=a.center,m=Math.abs(a.radius),k=b.connectorDistance||0,r=g.align;k=this.legend.options.rtl||"left"===r?-k:k;var n=b.connectorWidth,t=this.ranges[0].radius||0,v=h-m-b.borderWidth/2+n/2,u=this.fontMetrics;u=u.f/2-(u.h-u.f)/2;var q=f.styledMode;"center"===r&&(k=0,b.connectorDistance=0,a.labelAttribs.align="center");r=v+b.labels.y;var w=t+k+b.labels.x;e.bubbleItems.push(f.circle(t,
h+((v%1?1:.5)-(n%2?0:.5)),m).attr(q?{}:a.bubbleAttribs).addClass((q?"highcharts-color-"+d.colorIndex+" ":"")+"highcharts-bubble-legend-symbol "+(b.className||"")).add(this.legendSymbol));e.connectors.push(f.path(f.crispLine([["M",t,v],["L",t+k,v]],b.connectorWidth)).attr(q?{}:a.connectorAttribs).addClass((q?"highcharts-color-"+this.options.seriesIndex+" ":"")+"highcharts-bubble-legend-connectors "+(b.connectorClassName||"")).add(this.legendSymbol));a=f.text(this.formatLabel(a),w,r+u).attr(q?{}:a.labelAttribs).css(q?
{}:g.style).addClass("highcharts-bubble-legend-labels "+(b.labels.className||"")).add(this.legendSymbol);c.push(a);a.placed=!0;a.alignAttr={x:w,y:r+u}};a.prototype.getMaxLabelSize=function(){var a,b;this.symbols.labels.forEach(function(g){b=g.getBBox(!0);a=a?b.width>a.width?b:a:b});return a||{}};a.prototype.formatLabel=function(a){var b=this.options,g=b.labels.formatter;b=b.labels.format;var c=this.chart.numberFormatter;return b?h.format(b,a):g?g.call(a):c(a.value,1)};a.prototype.hideOverlappingLabels=
function(){var a=this.chart,b=this.symbols;!this.options.labels.allowOverlap&&b&&(a.hideOverlappingLabels(b.labels),b.labels.forEach(function(a,c){a.newOpacity?a.newOpacity!==a.oldOpacity&&b.connectors[c].show():b.connectors[c].hide()}))};a.prototype.getRanges=function(){var a=this.legend.bubbleLegend,b=a.options.ranges,g,c=Number.MAX_VALUE,d=-Number.MAX_VALUE;a.chart.series.forEach(function(a){a.isBubble&&!a.ignoreSeries&&(g=a.zData.filter(v),g.length&&(c=z(a.options.zMin,Math.min(c,Math.max(m(g),
!1===a.options.displayNegative?a.options.zThreshold:-Number.MAX_VALUE))),d=z(a.options.zMax,Math.max(d,f(g)))))});var e=c===d?[{value:d}]:[{value:c},{value:(c+d)/2},{value:d,autoRanges:!0}];b.length&&b[0].radius&&e.reverse();e.forEach(function(a,g){b&&b[g]&&(e[g]=w(b[g],a))});return e};a.prototype.predictBubbleSizes=function(){var a=this.chart,b=this.fontMetrics,g=a.legend.options,c="horizontal"===g.layout,d=c?a.legend.lastLineHeight:0,f=a.plotSizeX,e=a.plotSizeY,h=a.series[this.options.seriesIndex];
a=Math.ceil(h.minPxSize);var m=Math.ceil(h.maxPxSize);h=h.options.maxSize;var k=Math.min(e,f);if(g.floating||!/%$/.test(h))b=m;else if(h=parseFloat(h),b=(k+d-b.h/2)*h/100/(h/100+1),c&&e-b>=f||!c&&f-b>=e)b=m;return[a,Math.ceil(b)]};a.prototype.updateRanges=function(a,b){var g=this.legend.options.bubbleLegend;g.minSize=a;g.maxSize=b;g.ranges=this.getRanges()};a.prototype.correctSizes=function(){var a=this.legend,b=this.chart.series[this.options.seriesIndex];1<Math.abs(Math.ceil(b.maxPxSize)-this.options.maxSize)&&
(this.updateRanges(this.options.minSize,b.maxPxSize),a.render())};return a}();d(a,"afterGetAllItems",function(a){var b=this.bubbleLegend,d=this.options,g=d.bubbleLegend,f=this.chart.getVisibleBubbleSeriesIndex();b&&b.ranges&&b.ranges.length&&(g.ranges.length&&(g.autoRanges=!!g.ranges[0].autoRanges),this.destroyItem(b));0<=f&&d.enabled&&g.enabled&&(g.seriesIndex=f,this.bubbleLegend=new c.BubbleLegend(g,this),this.bubbleLegend.addToLegend(a.allItems))});e.prototype.getVisibleBubbleSeriesIndex=function(){for(var a=
this.series,b=0;b<a.length;){if(a[b]&&a[b].isBubble&&a[b].visible&&a[b].zData.length)return b;b++}return-1};a.prototype.getLinesHeights=function(){var a=this.allItems,b=[],c=a.length,g,d=0;for(g=0;g<c;g++)if(a[g].legendItemHeight&&(a[g].itemHeight=a[g].legendItemHeight),a[g]===a[c-1]||a[g+1]&&a[g]._legendItemPos[1]!==a[g+1]._legendItemPos[1]){b.push({height:0});var f=b[b.length-1];for(d;d<=g;d++)a[d].itemHeight>f.height&&(f.height=a[d].itemHeight);f.step=g}return b};a.prototype.retranslateItems=function(a){var b,
c,g,d=this.options.rtl,f=0;this.allItems.forEach(function(l,p){b=l.legendGroup.translateX;c=l._legendItemPos[1];if((g=l.movementX)||d&&l.ranges)g=d?b-l.options.maxSize/2:b+g,l.legendGroup.attr({translateX:g});p>a[f].step&&f++;l.legendGroup.attr({translateY:Math.round(c+a[f].height/2)});l._legendItemPos[1]=c+a[f].height/2})};d(t,"legendItemClick",function(){var a=this.chart,b=this.visible,c=this.chart.legend;c&&c.bubbleLegend&&(this.visible=!b,this.ignoreSeries=b,a=0<=a.getVisibleBubbleSeriesIndex(),
c.bubbleLegend.visible!==a&&(c.update({bubbleLegend:{enabled:a}}),c.bubbleLegend.visible=a),this.visible=b)});q(e.prototype,"drawChartBox",function(a,b,c){var g=this.legend,d=0<=this.getVisibleBubbleSeriesIndex();if(g&&g.options.enabled&&g.bubbleLegend&&g.options.bubbleLegend.autoRanges&&d){var f=g.bubbleLegend.options;d=g.bubbleLegend.predictBubbleSizes();g.bubbleLegend.updateRanges(d[0],d[1]);f.placed||(g.group.placed=!1,g.allItems.forEach(function(a){a.legendGroup.translateY=null}));g.render();
this.getMargins();this.axes.forEach(function(a){a.visible&&a.render();f.placed||(a.setScale(),a.updateNames(),B(a.ticks,function(a){a.isNew=!0;a.isNewLabel=!0}))});f.placed=!0;this.getMargins();a.call(this,b,c);g.bubbleLegend.correctSizes();g.retranslateItems(g.getLinesHeights())}else a.call(this,b,c),g&&g.options.enabled&&g.bubbleLegend&&(g.render(),g.retranslateItems(g.getLinesHeights()))});c.BubbleLegend=k;return c.BubbleLegend});z(e,"Series/Bubble/BubbleSeries.js",[e["Core/Axis/Axis.js"],e["Series/Bubble/BubblePoint.js"],
e["Core/Color/Color.js"],e["Core/Globals.js"],e["Core/Series/Series.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h,c,a,n,k){var t=this&&this.__extends||function(){var a=function(b,g){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var g in b)b.hasOwnProperty(g)&&(a[g]=b[g])};return a(b,g)};return function(b,g){function c(){this.constructor=b}a(b,g);b.prototype=null===g?Object.create(g):(c.prototype=g.prototype,
new c)}}(),q=h.parse;h=c.noop;var y=n.seriesTypes;c=y.column;var b=y.scatter,f=k.arrayMax,m=k.arrayMin,v=k.clamp,w=k.extend,B=k.isNumber,z=k.merge,E=k.pick,u=k.pInt;k=function(c){function d(){var a=null!==c&&c.apply(this,arguments)||this;a.data=void 0;a.maxPxSize=void 0;a.minPxSize=void 0;a.options=void 0;a.points=void 0;a.radii=void 0;a.yData=void 0;a.zData=void 0;return a}t(d,c);d.prototype.animate=function(a){!a&&this.points.length<this.options.animationLimit&&this.points.forEach(function(a){var b=
a.graphic;b&&b.width&&(this.hasRendered||b.attr({x:a.plotX,y:a.plotY,width:1,height:1}),b.animate(this.markerAttribs(a),this.options.animation))},this)};d.prototype.getRadii=function(a,b,c){var g=this.zData,d=this.yData,f=c.minPxSize,l=c.maxPxSize,e=[];var p=0;for(c=g.length;p<c;p++){var h=g[p];e.push(this.getRadius(a,b,f,l,h,d[p]))}this.radii=e};d.prototype.getRadius=function(a,b,c,d,f,l){var g=this.options,e="width"!==g.sizeBy,p=g.zThreshold,h=b-a,m=.5;if(null===l||null===f)return null;if(B(f)){g.sizeByAbsoluteValue&&
(f=Math.abs(f-p),h=Math.max(b-p,Math.abs(a-p)),a=0);if(f<a)return c/2-1;0<h&&(m=(f-a)/h)}e&&0<=m&&(m=Math.sqrt(m));return Math.ceil(c+m*(d-c))/2};d.prototype.hasData=function(){return!!this.processedXData.length};d.prototype.pointAttribs=function(b,c){var g=this.options.marker.fillOpacity;b=a.prototype.pointAttribs.call(this,b,c);1!==g&&(b.fill=q(b.fill).setOpacity(g).get("rgba"));return b};d.prototype.translate=function(){var a,b=this.data,d=this.radii;c.prototype.translate.call(this);for(a=b.length;a--;){var f=
b[a];var l=d?d[a]:0;B(l)&&l>=this.minPxSize/2?(f.marker=w(f.marker,{radius:l,width:2*l,height:2*l}),f.dlBox={x:f.plotX-l,y:f.plotY-l,width:2*l,height:2*l}):f.shapeArgs=f.plotY=f.dlBox=void 0}};d.defaultOptions=z(b.defaultOptions,{dataLabels:{formatter:function(){return this.point.z},inside:!0,verticalAlign:"middle"},animationLimit:250,marker:{lineColor:null,lineWidth:1,fillOpacity:.5,radius:null,states:{hover:{radiusPlus:0}},symbol:"circle"},minSize:8,maxSize:"20%",softThreshold:!1,states:{hover:{halo:{size:5}}},
tooltip:{pointFormat:"({point.x}, {point.y}), Size: {point.z}"},turboThreshold:0,zThreshold:0,zoneAxis:"z"});return d}(b);w(k.prototype,{alignDataLabel:c.prototype.alignDataLabel,applyZones:h,bubblePadding:!0,buildKDTree:h,directTouch:!0,isBubble:!0,pointArrayMap:["y","z"],pointClass:d,parallelArrays:["x","y","z"],trackerGroups:["group","dataLabelsGroup"],specialGroup:"group",zoneAxis:"z"});e.prototype.beforePadding=function(){var a=this,b=this.len,g=this.chart,c=0,d=b,e=this.isXAxis,h=e?"xData":
"yData",k=this.min,n={},t=Math.min(g.plotWidth,g.plotHeight),q=Number.MAX_VALUE,w=-Number.MAX_VALUE,y=this.max-k,z=b/y,G=[];this.series.forEach(function(b){var c=b.options;!b.bubblePadding||!b.visible&&g.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,G.push(b),e&&(["minSize","maxSize"].forEach(function(a){var b=c[a],g=/%$/.test(b);b=u(b);n[a]=g?t*b/100:b}),b.minPxSize=n.minSize,b.maxPxSize=Math.max(n.maxSize,n.minSize),b=b.zData.filter(B),b.length&&(q=E(c.zMin,v(m(b),!1===c.displayNegative?
c.zThreshold:-Number.MAX_VALUE,q)),w=E(c.zMax,Math.max(w,f(b))))))});G.forEach(function(b){var g=b[h],f=g.length;e&&b.getRadii(q,w,b);if(0<y)for(;f--;)if(B(g[f])&&a.dataMin<=g[f]&&g[f]<=a.max){var l=b.radii?b.radii[f]:0;c=Math.min((g[f]-k)*z-l,c);d=Math.max((g[f]-k)*z+l,d)}});G.length&&0<y&&!this.logarithmic&&(d-=b,z*=(b+Math.max(0,c)-Math.min(d,b))/b,[["min","userMin",c],["max","userMax",d]].forEach(function(b){"undefined"===typeof E(a.options[b[0]],a[b[1]])&&(a[b[0]]+=b[2]/z)}))};n.registerSeriesType("bubble",
k);"";"";return k});z(e,"Series/PackedBubble/PackedBubblePoint.js",[e["Core/Chart/Chart.js"],e["Core/Series/Point.js"],e["Core/Series/SeriesRegistry.js"]],function(e,d,h){var c=this&&this.__extends||function(){var a=function(c,d){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])};return a(c,d)};return function(c,d){function e(){this.constructor=c}a(c,d);c.prototype=null===d?Object.create(d):(e.prototype=
d.prototype,new e)}}();return function(a){function h(){var c=null!==a&&a.apply(this,arguments)||this;c.degree=NaN;c.mass=NaN;c.radius=NaN;c.options=void 0;c.series=void 0;c.value=null;return c}c(h,a);h.prototype.destroy=function(){this.series.layout&&this.series.layout.removeElementFromCollection(this,this.series.layout.nodes);return d.prototype.destroy.apply(this,arguments)};h.prototype.firePointEvent=function(){var a=this.series.options;if(this.isParentNode&&a.parentNode){var c=a.allowPointSelect;
a.allowPointSelect=a.parentNode.allowPointSelect;d.prototype.firePointEvent.apply(this,arguments);a.allowPointSelect=c}else d.prototype.firePointEvent.apply(this,arguments)};h.prototype.select=function(){var a=this.series.chart;this.isParentNode?(a.getSelectedPoints=a.getSelectedParentNodes,d.prototype.select.apply(this,arguments),a.getSelectedPoints=e.prototype.getSelectedPoints):d.prototype.select.apply(this,arguments)};return h}(h.seriesTypes.bubble.prototype.pointClass)});z(e,"Series/Networkgraph/DraggableNodes.js",
[e["Core/Chart/Chart.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(e,d,h){var c=h.addEvent;d.dragNodesMixin={onMouseDown:function(a,c){c=this.chart.pointer.normalize(c);a.fixedPosition={chartX:c.chartX,chartY:c.chartY,plotX:a.plotX,plotY:a.plotY};a.inDragMode=!0},onMouseMove:function(a,c){if(a.fixedPosition&&a.inDragMode){var d=this.chart,e=d.pointer.normalize(c);c=a.fixedPosition.chartX-e.chartX;e=a.fixedPosition.chartY-e.chartY;var h=void 0,n=void 0,b=d.graphLayoutsLookup;if(5<Math.abs(c)||
5<Math.abs(e))h=a.fixedPosition.plotX-c,n=a.fixedPosition.plotY-e,d.isInsidePlot(h,n)&&(a.plotX=h,a.plotY=n,a.hasDragged=!0,this.redrawHalo(a),b.forEach(function(a){a.restartSimulation()}))}},onMouseUp:function(a,c){a.fixedPosition&&(a.hasDragged&&(this.layout.enableSimulation?this.layout.start():this.chart.redraw()),a.inDragMode=a.hasDragged=!1,this.options.fixedDraggable||delete a.fixedPosition)},redrawHalo:function(a){a&&this.halo&&this.halo.attr({d:a.haloPath(this.options.states.hover.halo.size)})}};
c(e,"load",function(){var a=this,d,e,h;a.container&&(d=c(a.container,"mousedown",function(d){var k=a.hoverPoint;k&&k.series&&k.series.hasDraggableNodes&&k.series.options.draggable&&(k.series.onMouseDown(k,d),e=c(a.container,"mousemove",function(a){return k&&k.series&&k.series.onMouseMove(k,a)}),h=c(a.container.ownerDocument,"mouseup",function(a){e();h();return k&&k.series&&k.series.onMouseUp(k,a)}))}));c(a,"destroy",function(){d()})})});z(e,"Series/Networkgraph/Integrations.js",[e["Core/Globals.js"]],
function(e){e.networkgraphIntegrations={verlet:{attractiveForceFunction:function(d,e){return(e-d)/d},repulsiveForceFunction:function(d,e){return(e-d)/d*(e>d?1:0)},barycenter:function(){var d=this.options.gravitationalConstant,e=this.barycenter.xFactor,c=this.barycenter.yFactor;e=(e-(this.box.left+this.box.width)/2)*d;c=(c-(this.box.top+this.box.height)/2)*d;this.nodes.forEach(function(a){a.fixedPosition||(a.plotX-=e/a.mass/a.degree,a.plotY-=c/a.mass/a.degree)})},repulsive:function(d,e,c){e=e*this.diffTemperature/
d.mass/d.degree;d.fixedPosition||(d.plotX+=c.x*e,d.plotY+=c.y*e)},attractive:function(d,e,c){var a=d.getMass(),h=-c.x*e*this.diffTemperature;e=-c.y*e*this.diffTemperature;d.fromNode.fixedPosition||(d.fromNode.plotX-=h*a.fromNode/d.fromNode.degree,d.fromNode.plotY-=e*a.fromNode/d.fromNode.degree);d.toNode.fixedPosition||(d.toNode.plotX+=h*a.toNode/d.toNode.degree,d.toNode.plotY+=e*a.toNode/d.toNode.degree)},integrate:function(d,e){var c=-d.options.friction,a=d.options.maxSpeed,h=(e.plotX+e.dispX-e.prevX)*
c;c*=e.plotY+e.dispY-e.prevY;var k=Math.abs,t=k(h)/(h||1);k=k(c)/(c||1);h=t*Math.min(a,Math.abs(h));c=k*Math.min(a,Math.abs(c));e.prevX=e.plotX+e.dispX;e.prevY=e.plotY+e.dispY;e.plotX+=h;e.plotY+=c;e.temperature=d.vectorLength({x:h,y:c})},getK:function(d){return Math.pow(d.box.width*d.box.height/d.nodes.length,.5)}},euler:{attractiveForceFunction:function(d,e){return d*d/e},repulsiveForceFunction:function(d,e){return e*e/d},barycenter:function(){var d=this.options.gravitationalConstant,e=this.barycenter.xFactor,
c=this.barycenter.yFactor;this.nodes.forEach(function(a){if(!a.fixedPosition){var h=a.getDegree();h*=1+h/2;a.dispX+=(e-a.plotX)*d*h/a.degree;a.dispY+=(c-a.plotY)*d*h/a.degree}})},repulsive:function(d,e,c,a){d.dispX+=c.x/a*e/d.degree;d.dispY+=c.y/a*e/d.degree},attractive:function(d,e,c,a){var h=d.getMass(),k=c.x/a*e;e*=c.y/a;d.fromNode.fixedPosition||(d.fromNode.dispX-=k*h.fromNode/d.fromNode.degree,d.fromNode.dispY-=e*h.fromNode/d.fromNode.degree);d.toNode.fixedPosition||(d.toNode.dispX+=k*h.toNode/
d.toNode.degree,d.toNode.dispY+=e*h.toNode/d.toNode.degree)},integrate:function(d,e){e.dispX+=e.dispX*d.options.friction;e.dispY+=e.dispY*d.options.friction;var c=e.temperature=d.vectorLength({x:e.dispX,y:e.dispY});0!==c&&(e.plotX+=e.dispX/c*Math.min(Math.abs(e.dispX),d.temperature),e.plotY+=e.dispY/c*Math.min(Math.abs(e.dispY),d.temperature))},getK:function(d){return Math.pow(d.box.width*d.box.height/d.nodes.length,.3)}}}});z(e,"Series/Networkgraph/QuadTree.js",[e["Core/Globals.js"],e["Core/Utilities.js"]],
function(e,d){d=d.extend;var h=e.QuadTreeNode=function(c){this.box=c;this.boxSize=Math.min(c.width,c.height);this.nodes=[];this.body=this.isInternal=!1;this.isEmpty=!0};d(h.prototype,{insert:function(c,a){this.isInternal?this.nodes[this.getBoxPosition(c)].insert(c,a-1):(this.isEmpty=!1,this.body?a?(this.isInternal=!0,this.divideBox(),!0!==this.body&&(this.nodes[this.getBoxPosition(this.body)].insert(this.body,a-1),this.body=!0),this.nodes[this.getBoxPosition(c)].insert(c,a-1)):(a=new h({top:c.plotX,
left:c.plotY,width:.1,height:.1}),a.body=c,a.isInternal=!1,this.nodes.push(a)):(this.isInternal=!1,this.body=c))},updateMassAndCenter:function(){var c=0,a=0,d=0;this.isInternal?(this.nodes.forEach(function(e){e.isEmpty||(c+=e.mass,a+=e.plotX*e.mass,d+=e.plotY*e.mass)}),a/=c,d/=c):this.body&&(c=this.body.mass,a=this.body.plotX,d=this.body.plotY);this.mass=c;this.plotX=a;this.plotY=d},divideBox:function(){var c=this.box.width/2,a=this.box.height/2;this.nodes[0]=new h({left:this.box.left,top:this.box.top,
width:c,height:a});this.nodes[1]=new h({left:this.box.left+c,top:this.box.top,width:c,height:a});this.nodes[2]=new h({left:this.box.left+c,top:this.box.top+a,width:c,height:a});this.nodes[3]=new h({left:this.box.left,top:this.box.top+a,width:c,height:a})},getBoxPosition:function(c){var a=c.plotY<this.box.top+this.box.height/2;return c.plotX<this.box.left+this.box.width/2?a?0:3:a?1:2}});e=e.QuadTree=function(c,a,d,e){this.box={left:c,top:a,width:d,height:e};this.maxDepth=25;this.root=new h(this.box,
"0");this.root.isInternal=!0;this.root.isRoot=!0;this.root.divideBox()};d(e.prototype,{insertNodes:function(c){c.forEach(function(a){this.root.insert(a,this.maxDepth)},this)},visitNodeRecursive:function(c,a,d){var e;c||(c=this.root);c===this.root&&a&&(e=a(c));!1!==e&&(c.nodes.forEach(function(c){if(c.isInternal){a&&(e=a(c));if(!1===e)return;this.visitNodeRecursive(c,a,d)}else c.body&&a&&a(c.body);d&&d(c)},this),c===this.root&&d&&d(c))},calculateMassAndCenter:function(){this.visitNodeRecursive(null,
null,function(c){c.updateMassAndCenter()})}})});z(e,"Series/Networkgraph/Layouts.js",[e["Core/Chart/Chart.js"],e["Core/Animation/AnimationUtilities.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(e,d,h,c){var a=d.setAnimation;d=c.addEvent;var n=c.clamp,k=c.defined,t=c.extend,q=c.isFunction,y=c.pick;h.layouts={"reingold-fruchterman":function(){}};t(h.layouts["reingold-fruchterman"].prototype,{init:function(a){this.options=a;this.nodes=[];this.links=[];this.series=[];this.box={x:0,y:0,width:0,
height:0};this.setInitialRendering(!0);this.integration=h.networkgraphIntegrations[a.integration];this.enableSimulation=a.enableSimulation;this.attractiveForce=y(a.attractiveForce,this.integration.attractiveForceFunction);this.repulsiveForce=y(a.repulsiveForce,this.integration.repulsiveForceFunction);this.approximation=a.approximation},updateSimulation:function(a){this.enableSimulation=y(a,this.options.enableSimulation)},start:function(){var a=this.series,c=this.options;this.currentStep=0;this.forces=
a[0]&&a[0].forces||[];this.chart=a[0]&&a[0].chart;this.initialRendering&&(this.initPositions(),a.forEach(function(a){a.finishedAnimating=!0;a.render()}));this.setK();this.resetSimulation(c);this.enableSimulation&&this.step()},step:function(){var a=this,c=this.series;a.currentStep++;"barnes-hut"===a.approximation&&(a.createQuadTree(),a.quadTree.calculateMassAndCenter());a.forces.forEach(function(b){a[b+"Forces"](a.temperature)});a.applyLimits(a.temperature);a.temperature=a.coolDown(a.startTemperature,
a.diffTemperature,a.currentStep);a.prevSystemTemperature=a.systemTemperature;a.systemTemperature=a.getSystemTemperature();a.enableSimulation&&(c.forEach(function(a){a.chart&&a.render()}),a.maxIterations--&&isFinite(a.temperature)&&!a.isStable()?(a.simulation&&h.win.cancelAnimationFrame(a.simulation),a.simulation=h.win.requestAnimationFrame(function(){a.step()})):a.simulation=!1)},stop:function(){this.simulation&&h.win.cancelAnimationFrame(this.simulation)},setArea:function(a,c,d,e){this.box={left:a,
top:c,width:d,height:e}},setK:function(){this.k=this.options.linkLength||this.integration.getK(this)},addElementsToCollection:function(a,c){a.forEach(function(a){-1===c.indexOf(a)&&c.push(a)})},removeElementFromCollection:function(a,c){a=c.indexOf(a);-1!==a&&c.splice(a,1)},clear:function(){this.nodes.length=0;this.links.length=0;this.series.length=0;this.resetSimulation()},resetSimulation:function(){this.forcedStop=!1;this.systemTemperature=0;this.setMaxIterations();this.setTemperature();this.setDiffTemperature()},
restartSimulation:function(){this.simulation?this.resetSimulation():(this.setInitialRendering(!1),this.enableSimulation?this.start():this.setMaxIterations(1),this.chart&&this.chart.redraw(),this.setInitialRendering(!0))},setMaxIterations:function(a){this.maxIterations=y(a,this.options.maxIterations)},setTemperature:function(){this.temperature=this.startTemperature=Math.sqrt(this.nodes.length)},setDiffTemperature:function(){this.diffTemperature=this.startTemperature/(this.options.maxIterations+1)},
setInitialRendering:function(a){this.initialRendering=a},createQuadTree:function(){this.quadTree=new h.QuadTree(this.box.left,this.box.top,this.box.width,this.box.height);this.quadTree.insertNodes(this.nodes)},initPositions:function(){var a=this.options.initialPositions;q(a)?(a.call(this),this.nodes.forEach(function(a){k(a.prevX)||(a.prevX=a.plotX);k(a.prevY)||(a.prevY=a.plotY);a.dispX=0;a.dispY=0})):"circle"===a?this.setCircularPositions():this.setRandomPositions()},setCircularPositions:function(){function a(b){b.linksFrom.forEach(function(b){t[b.toNode.id]||
(t[b.toNode.id]=!0,k.push(b.toNode),a(b.toNode))})}var c=this.box,d=this.nodes,e=2*Math.PI/(d.length+1),h=d.filter(function(a){return 0===a.linksTo.length}),k=[],t={},q=this.options.initialPositionRadius;h.forEach(function(b){k.push(b);a(b)});k.length?d.forEach(function(a){-1===k.indexOf(a)&&k.push(a)}):k=d;k.forEach(function(a,b){a.plotX=a.prevX=y(a.plotX,c.width/2+q*Math.cos(b*e));a.plotY=a.prevY=y(a.plotY,c.height/2+q*Math.sin(b*e));a.dispX=0;a.dispY=0})},setRandomPositions:function(){function a(a){a=
a*a/Math.PI;return a-=Math.floor(a)}var c=this.box,d=this.nodes,e=d.length+1;d.forEach(function(b,d){b.plotX=b.prevX=y(b.plotX,c.width*a(d));b.plotY=b.prevY=y(b.plotY,c.height*a(e+d));b.dispX=0;b.dispY=0})},force:function(a){this.integration[a].apply(this,Array.prototype.slice.call(arguments,1))},barycenterForces:function(){this.getBarycenter();this.force("barycenter")},getBarycenter:function(){var a=0,c=0,d=0;this.nodes.forEach(function(b){c+=b.plotX*b.mass;d+=b.plotY*b.mass;a+=b.mass});return this.barycenter=
{x:c,y:d,xFactor:c/a,yFactor:d/a}},barnesHutApproximation:function(a,c){var b=this.getDistXY(a,c),d=this.vectorLength(b);if(a!==c&&0!==d)if(c.isInternal)if(c.boxSize/d<this.options.theta&&0!==d){var e=this.repulsiveForce(d,this.k);this.force("repulsive",a,e*c.mass,b,d);var f=!1}else f=!0;else e=this.repulsiveForce(d,this.k),this.force("repulsive",a,e*c.mass,b,d);return f},repulsiveForces:function(){var a=this;"barnes-hut"===a.approximation?a.nodes.forEach(function(b){a.quadTree.visitNodeRecursive(null,
function(c){return a.barnesHutApproximation(b,c)})}):a.nodes.forEach(function(b){a.nodes.forEach(function(c){if(b!==c&&!b.fixedPosition){var d=a.getDistXY(b,c);var e=a.vectorLength(d);if(0!==e){var f=a.repulsiveForce(e,a.k);a.force("repulsive",b,f*c.mass,d,e)}}})})},attractiveForces:function(){var a=this,c,d,e;a.links.forEach(function(b){b.fromNode&&b.toNode&&(c=a.getDistXY(b.fromNode,b.toNode),d=a.vectorLength(c),0!==d&&(e=a.attractiveForce(d,a.k),a.force("attractive",b,e,c,d)))})},applyLimits:function(){var a=
this;a.nodes.forEach(function(b){b.fixedPosition||(a.integration.integrate(a,b),a.applyLimitBox(b,a.box),b.dispX=0,b.dispY=0)})},applyLimitBox:function(a,c){var b=a.radius;a.plotX=n(a.plotX,c.left+b,c.width-b);a.plotY=n(a.plotY,c.top+b,c.height-b)},coolDown:function(a,c,d){return a-c*d},isStable:function(){return.00001>Math.abs(this.systemTemperature-this.prevSystemTemperature)||0>=this.temperature},getSystemTemperature:function(){return this.nodes.reduce(function(a,c){return a+c.temperature},0)},
vectorLength:function(a){return Math.sqrt(a.x*a.x+a.y*a.y)},getDistR:function(a,c){a=this.getDistXY(a,c);return this.vectorLength(a)},getDistXY:function(a,c){var b=a.plotX-c.plotX;a=a.plotY-c.plotY;return{x:b,y:a,absX:Math.abs(b),absY:Math.abs(a)}}});d(e,"predraw",function(){this.graphLayoutsLookup&&this.graphLayoutsLookup.forEach(function(a){a.stop()})});d(e,"render",function(){function b(a){a.maxIterations--&&isFinite(a.temperature)&&!a.isStable()&&!a.enableSimulation&&(a.beforeStep&&a.beforeStep(),
a.step(),d=!1,c=!0)}var c=!1;if(this.graphLayoutsLookup){a(!1,this);for(this.graphLayoutsLookup.forEach(function(a){a.start()});!d;){var d=!0;this.graphLayoutsLookup.forEach(b)}c&&this.series.forEach(function(a){a&&a.layout&&a.render()})}});d(e,"beforePrint",function(){this.graphLayoutsLookup&&(this.graphLayoutsLookup.forEach(function(a){a.updateSimulation(!1)}),this.redraw())});d(e,"afterPrint",function(){this.graphLayoutsLookup&&this.graphLayoutsLookup.forEach(function(a){a.updateSimulation()});
this.redraw()})});z(e,"Series/PackedBubble/PackedBubbleComposition.js",[e["Core/Chart/Chart.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(e,d,h){var c=d.layouts["reingold-fruchterman"],a=h.addEvent,n=h.extendClass,k=h.pick;e.prototype.getSelectedParentNodes=function(){var a=[];this.series.forEach(function(c){c.parentNode&&c.parentNode.selected&&a.push(c.parentNode)});return a};d.networkgraphIntegrations.packedbubble={repulsiveForceFunction:function(a,c,d,b){return Math.min(a,(d.marker.radius+
b.marker.radius)/2)},barycenter:function(){var a=this,c=a.options.gravitationalConstant,d=a.box,b=a.nodes,e,h;b.forEach(function(f){a.options.splitSeries&&!f.isParentNode?(e=f.series.parentNode.plotX,h=f.series.parentNode.plotY):(e=d.width/2,h=d.height/2);f.fixedPosition||(f.plotX-=(f.plotX-e)*c/(f.mass*Math.sqrt(b.length)),f.plotY-=(f.plotY-h)*c/(f.mass*Math.sqrt(b.length)))})},repulsive:function(a,c,d,b){var e=c*this.diffTemperature/a.mass/a.degree;c=d.x*e;d=d.y*e;a.fixedPosition||(a.plotX+=c,a.plotY+=
d);b.fixedPosition||(b.plotX-=c,b.plotY-=d)},integrate:d.networkgraphIntegrations.verlet.integrate,getK:d.noop};d.layouts.packedbubble=n(c,{beforeStep:function(){this.options.marker&&this.series.forEach(function(a){a&&a.calculateParentRadius()})},isStable:function(){var a=Math.abs(this.prevSystemTemperature-this.systemTemperature);return 1>Math.abs(10*this.systemTemperature/Math.sqrt(this.nodes.length))&&.00001>a||0>=this.temperature},setCircularPositions:function(){var a=this,c=a.box,d=a.nodes,b=
2*Math.PI/(d.length+1),e,h,n=a.options.initialPositionRadius;d.forEach(function(d,f){a.options.splitSeries&&!d.isParentNode?(e=d.series.parentNode.plotX,h=d.series.parentNode.plotY):(e=c.width/2,h=c.height/2);d.plotX=d.prevX=k(d.plotX,e+n*Math.cos(d.index||f*b));d.plotY=d.prevY=k(d.plotY,h+n*Math.sin(d.index||f*b));d.dispX=0;d.dispY=0})},repulsiveForces:function(){var a=this,c,d,b,e=a.options.bubblePadding;a.nodes.forEach(function(f){f.degree=f.mass;f.neighbours=0;a.nodes.forEach(function(h){c=0;
f===h||f.fixedPosition||!a.options.seriesInteraction&&f.series!==h.series||(b=a.getDistXY(f,h),d=a.vectorLength(b)-(f.marker.radius+h.marker.radius+e),0>d&&(f.degree+=.01,f.neighbours++,c=a.repulsiveForce(-d/Math.sqrt(f.neighbours),a.k,f,h)),a.force("repulsive",f,c*h.mass,b,h,d))})})},applyLimitBox:function(a){if(this.options.splitSeries&&!a.isParentNode&&this.options.parentNodeLimit){var d=this.getDistXY(a,a.series.parentNode);var e=a.series.parentNodeRadius-a.marker.radius-this.vectorLength(d);
0>e&&e>-2*a.marker.radius&&(a.plotX-=.01*d.x,a.plotY-=.01*d.y)}c.prototype.applyLimitBox.apply(this,arguments)}});a(e,"beforeRedraw",function(){this.allDataPoints&&delete this.allDataPoints})});z(e,"Series/PackedBubble/PackedBubbleSeries.js",[e["Core/Color/Color.js"],e["Core/Globals.js"],e["Series/PackedBubble/PackedBubblePoint.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(e,d,h,c,a){var n=this&&this.__extends||function(){var a=function(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof
Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return a(b,c)};return function(b,c){function g(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(g.prototype=c.prototype,new g)}}(),k=e.parse,t=c.series,q=c.seriesTypes.bubble,y=a.addEvent,b=a.clamp,f=a.defined,m=a.extend,v=a.fireEvent,w=a.isArray,z=a.isNumber,B=a.merge,E=a.pick,u=d.dragNodesMixin;e=function(a){function c(){var b=null!==a&&a.apply(this,arguments)||this;b.chart=void 0;
b.data=void 0;b.layout=void 0;b.options=void 0;b.points=void 0;b.xData=void 0;return b}n(c,a);c.prototype.accumulateAllPoints=function(a){var b=a.chart,c=[],g,d;for(g=0;g<b.series.length;g++)if(a=b.series[g],a.is("packedbubble")&&a.visible||!b.options.chart.ignoreHiddenSeries)for(d=0;d<a.yData.length;d++)c.push([null,null,a.yData[d],a.index,d,{id:d,marker:{radius:0}}]);return c};c.prototype.addLayout=function(){var a=this.options.layoutAlgorithm,b=this.chart.graphLayoutsStorage,c=this.chart.graphLayoutsLookup,
e=this.chart.options.chart;b||(this.chart.graphLayoutsStorage=b={},this.chart.graphLayoutsLookup=c=[]);var l=b[a.type];l||(a.enableSimulation=f(e.forExport)?!e.forExport:a.enableSimulation,b[a.type]=l=new d.layouts[a.type],l.init(a),c.splice(l.index,0,l));this.layout=l;this.points.forEach(function(a){a.mass=2;a.degree=1;a.collisionNmb=1});l.setArea(0,0,this.chart.plotWidth,this.chart.plotHeight);l.addElementsToCollection([this],l.series);l.addElementsToCollection(this.points,l.nodes)};c.prototype.addSeriesLayout=
function(){var a=this.options.layoutAlgorithm,b=this.chart.graphLayoutsStorage,c=this.chart.graphLayoutsLookup,e=B(a,a.parentNodeOptions,{enableSimulation:this.layout.options.enableSimulation});var f=b[a.type+"-series"];f||(b[a.type+"-series"]=f=new d.layouts[a.type],f.init(e),c.splice(f.index,0,f));this.parentNodeLayout=f;this.createParentNodes()};c.prototype.calculateParentRadius=function(){var a=this.seriesBox();this.parentNodeRadius=b(Math.sqrt(2*this.parentNodeMass/Math.PI)+20,20,a?Math.max(Math.sqrt(Math.pow(a.width,
2)+Math.pow(a.height,2))/2+20,20):Math.sqrt(2*this.parentNodeMass/Math.PI)+20);this.parentNode&&(this.parentNode.marker.radius=this.parentNode.radius=this.parentNodeRadius)};c.prototype.calculateZExtremes=function(){var a=this.options.zMin,b=this.options.zMax,c=Infinity,d=-Infinity;if(a&&b)return[a,b];this.chart.series.forEach(function(a){a.yData.forEach(function(a){f(a)&&(a>d&&(d=a),a<c&&(c=a))})});a=E(a,c);b=E(b,d);return[a,b]};c.prototype.checkOverlap=function(a,b){var c=a[0]-b[0],d=a[1]-b[1];
return-.001>Math.sqrt(c*c+d*d)-Math.abs(a[2]+b[2])};c.prototype.createParentNodes=function(){var a=this,b=a.chart,c=a.parentNodeLayout,d,e=a.parentNode,f=a.pointClass;a.parentNodeMass=0;a.points.forEach(function(b){a.parentNodeMass+=Math.PI*Math.pow(b.marker.radius,2)});a.calculateParentRadius();c.nodes.forEach(function(b){b.seriesIndex===a.index&&(d=!0)});c.setArea(0,0,b.plotWidth,b.plotHeight);d||(e||(e=(new f).init(this,{mass:a.parentNodeRadius/2,marker:{radius:a.parentNodeRadius},dataLabels:{inside:!1},
dataLabelOnNull:!0,degree:a.parentNodeRadius,isParentNode:!0,seriesIndex:a.index})),a.parentNode&&(e.plotX=a.parentNode.plotX,e.plotY=a.parentNode.plotY),a.parentNode=e,c.addElementsToCollection([a],c.series),c.addElementsToCollection([e],c.nodes))};c.prototype.deferLayout=function(){var a=this.options.layoutAlgorithm;this.visible&&(this.addLayout(),a.splitSeries&&this.addSeriesLayout())};c.prototype.destroy=function(){this.chart.graphLayoutsLookup&&this.chart.graphLayoutsLookup.forEach(function(a){a.removeElementFromCollection(this,
a.series)},this);this.parentNode&&this.parentNodeLayout&&(this.parentNodeLayout.removeElementFromCollection(this.parentNode,this.parentNodeLayout.nodes),this.parentNode.dataLabel&&(this.parentNode.dataLabel=this.parentNode.dataLabel.destroy()));t.prototype.destroy.apply(this,arguments)};c.prototype.drawDataLabels=function(){var a=this.options.dataLabels.textPath,b=this.points;t.prototype.drawDataLabels.apply(this,arguments);this.parentNode&&(this.parentNode.formatPrefix="parentNode",this.points=[this.parentNode],
this.options.dataLabels.textPath=this.options.dataLabels.parentNodeTextPath,t.prototype.drawDataLabels.apply(this,arguments),this.points=b,this.options.dataLabels.textPath=a)};c.prototype.drawGraph=function(){if(this.layout&&this.layout.options.splitSeries){var a=this.chart;var b=this.layout.options.parentNodeOptions.marker;var c={fill:b.fillColor||k(this.color).brighten(.4).get(),opacity:b.fillOpacity,stroke:b.lineColor||this.color,"stroke-width":b.lineWidth};this.parentNodesGroup||(this.parentNodesGroup=
this.plotGroup("parentNodesGroup","parentNode",this.visible?"inherit":"hidden",.1,a.seriesGroup),this.group.attr({zIndex:2}));this.calculateParentRadius();b=B({x:this.parentNode.plotX-this.parentNodeRadius,y:this.parentNode.plotY-this.parentNodeRadius,width:2*this.parentNodeRadius,height:2*this.parentNodeRadius},c);this.parentNode.graphic||(this.graph=this.parentNode.graphic=a.renderer.symbol(c.symbol).add(this.parentNodesGroup));this.parentNode.graphic.attr(b)}};c.prototype.drawTracker=function(){var b=
this.parentNode;a.prototype.drawTracker.call(this);if(b){var c=w(b.dataLabels)?b.dataLabels:b.dataLabel?[b.dataLabel]:[];b.graphic&&(b.graphic.element.point=b);c.forEach(function(a){a.div?a.div.point=b:a.element.point=b})}};c.prototype.getPointRadius=function(){var a=this,c=a.chart,d=a.options,e=d.useSimulation,f=Math.min(c.plotWidth,c.plotHeight),l={},h=[],k=c.allDataPoints,m,n,q,r;["minSize","maxSize"].forEach(function(a){var b=parseInt(d[a],10),c=/%$/.test(d[a]);l[a]=c?f*b/100:b*Math.sqrt(k.length)});
c.minRadius=m=l.minSize/Math.sqrt(k.length);c.maxRadius=n=l.maxSize/Math.sqrt(k.length);var t=e?a.calculateZExtremes():[m,n];(k||[]).forEach(function(c,d){q=e?b(c[2],t[0],t[1]):c[2];r=a.getRadius(t[0],t[1],m,n,q);0===r&&(r=null);k[d][2]=r;h.push(r)});a.radii=h};c.prototype.init=function(){t.prototype.init.apply(this,arguments);this.eventsToUnbind.push(y(this,"updatedData",function(){this.chart.series.forEach(function(a){a.type===this.type&&(a.isDirty=!0)},this)}));return this};c.prototype.onMouseUp=
function(a){if(a.fixedPosition&&!a.removed){var b,c,d=this.layout,g=this.parentNodeLayout;g&&d.options.dragBetweenSeries&&g.nodes.forEach(function(g){a&&a.marker&&g!==a.series.parentNode&&(b=d.getDistXY(a,g),c=d.vectorLength(b)-g.marker.radius-a.marker.radius,0>c&&(g.series.addPoint(B(a.options,{plotX:a.plotX,plotY:a.plotY}),!1),d.removeElementFromCollection(a,d.nodes),a.remove()))});u.onMouseUp.apply(this,arguments)}};c.prototype.placeBubbles=function(a){var b=this.checkOverlap,c=this.positionBubble,
d=[],g=1,e=0,f=0;var l=[];var h;a=a.sort(function(a,b){return b[2]-a[2]});if(a.length){d.push([[0,0,a[0][2],a[0][3],a[0][4]]]);if(1<a.length)for(d.push([[0,0-a[1][2]-a[0][2],a[1][2],a[1][3],a[1][4]]]),h=2;h<a.length;h++)a[h][2]=a[h][2]||1,l=c(d[g][e],d[g-1][f],a[h]),b(l,d[g][0])?(d.push([]),f=0,d[g+1].push(c(d[g][e],d[g][0],a[h])),g++,e=0):1<g&&d[g-1][f+1]&&b(l,d[g-1][f+1])?(f++,d[g].push(c(d[g][e],d[g-1][f],a[h])),e++):(e++,d[g].push(l));this.chart.stages=d;this.chart.rawPositions=[].concat.apply([],
d);this.resizeRadius();l=this.chart.rawPositions}return l};c.prototype.positionBubble=function(a,b,c){var d=Math.sqrt,g=Math.asin,e=Math.acos,f=Math.pow,l=Math.abs;d=d(f(a[0]-b[0],2)+f(a[1]-b[1],2));e=e((f(d,2)+f(c[2]+b[2],2)-f(c[2]+a[2],2))/(2*(c[2]+b[2])*d));g=g(l(a[0]-b[0])/d);a=(0>a[1]-b[1]?0:Math.PI)+e+g*(0>(a[0]-b[0])*(a[1]-b[1])?1:-1);return[b[0]+(b[2]+c[2])*Math.sin(a),b[1]-(b[2]+c[2])*Math.cos(a),c[2],c[3],c[4]]};c.prototype.render=function(){var a=[];t.prototype.render.apply(this,arguments);
this.options.dataLabels.allowOverlap||(this.data.forEach(function(b){w(b.dataLabels)&&b.dataLabels.forEach(function(b){a.push(b)})}),this.options.useSimulation&&this.chart.hideOverlappingLabels(a))};c.prototype.resizeRadius=function(){var a=this.chart,b=a.rawPositions,c=Math.min,d=Math.max,e=a.plotLeft,f=a.plotTop,l=a.plotHeight,h=a.plotWidth,k,m,n;var q=k=Number.POSITIVE_INFINITY;var r=m=Number.NEGATIVE_INFINITY;for(n=0;n<b.length;n++){var t=b[n][2];q=c(q,b[n][0]-t);r=d(r,b[n][0]+t);k=c(k,b[n][1]-
t);m=d(m,b[n][1]+t)}n=[r-q,m-k];c=c.apply([],[(h-e)/n[0],(l-f)/n[1]]);if(1e-10<Math.abs(c-1)){for(n=0;n<b.length;n++)b[n][2]*=c;this.placeBubbles(b)}else a.diffY=l/2+f-k-(m-k)/2,a.diffX=h/2+e-q-(r-q)/2};c.prototype.seriesBox=function(){var a=this.chart,b=Math.max,c=Math.min,d,e=[a.plotLeft,a.plotLeft+a.plotWidth,a.plotTop,a.plotTop+a.plotHeight];this.data.forEach(function(a){f(a.plotX)&&f(a.plotY)&&a.marker.radius&&(d=a.marker.radius,e[0]=c(e[0],a.plotX-d),e[1]=b(e[1],a.plotX+d),e[2]=c(e[2],a.plotY-
d),e[3]=b(e[3],a.plotY+d))});return z(e.width/e.height)?e:null};c.prototype.setVisible=function(){var a=this;t.prototype.setVisible.apply(a,arguments);a.parentNodeLayout&&a.graph?a.visible?(a.graph.show(),a.parentNode.dataLabel&&a.parentNode.dataLabel.show()):(a.graph.hide(),a.parentNodeLayout.removeElementFromCollection(a.parentNode,a.parentNodeLayout.nodes),a.parentNode.dataLabel&&a.parentNode.dataLabel.hide()):a.layout&&(a.visible?a.layout.addElementsToCollection(a.points,a.layout.nodes):a.points.forEach(function(b){a.layout.removeElementFromCollection(b,
a.layout.nodes)}))};c.prototype.translate=function(){var a=this.chart,b=this.data,c=this.index,d,e=this.options.useSimulation;this.processedXData=this.xData;this.generatePoints();f(a.allDataPoints)||(a.allDataPoints=this.accumulateAllPoints(this),this.getPointRadius());if(e)var l=a.allDataPoints;else l=this.placeBubbles(a.allDataPoints),this.options.draggable=!1;for(d=0;d<l.length;d++)if(l[d][3]===c){var h=b[l[d][4]];var k=E(l[d][2],void 0);e||(h.plotX=l[d][0]-a.plotLeft+a.diffX,h.plotY=l[d][1]-a.plotTop+
a.diffY);z(k)&&(h.marker=m(h.marker,{radius:k,width:2*k,height:2*k}),h.radius=k)}e&&this.deferLayout();v(this,"afterTranslate")};c.defaultOptions=B(q.defaultOptions,{minSize:"10%",maxSize:"50%",sizeBy:"area",zoneAxis:"y",crisp:!1,tooltip:{pointFormat:"Value: {point.value}"},draggable:!0,useSimulation:!0,parentNode:{allowPointSelect:!1},dataLabels:{formatter:function(){return this.point.value},parentNodeFormatter:function(){return this.name},parentNodeTextPath:{enabled:!0},padding:0,style:{transition:"opacity 2000ms"}},
layoutAlgorithm:{initialPositions:"circle",initialPositionRadius:20,bubblePadding:5,parentNodeLimit:!1,seriesInteraction:!0,dragBetweenSeries:!1,parentNodeOptions:{maxIterations:400,gravitationalConstant:.03,maxSpeed:50,initialPositionRadius:100,seriesInteraction:!0,marker:{fillColor:null,fillOpacity:1,lineWidth:1,lineColor:null,symbol:"circle"}},enableSimulation:!0,type:"packedbubble",integration:"packedbubble",maxIterations:1E3,splitSeries:!1,maxSpeed:5,gravitationalConstant:.01,friction:-.981}});
return c}(q);m(e.prototype,{alignDataLabel:t.prototype.alignDataLabel,axisTypes:[],directTouch:!0,forces:["barycenter","repulsive"],hasDraggableNodes:!0,isCartesian:!1,noSharedTooltip:!0,onMouseDown:u.onMouseDown,onMouseMove:u.onMouseMove,pointArrayMap:["value"],pointClass:h,pointValKey:"value",redrawHalo:u.redrawHalo,requireSorting:!1,searchPoint:d.noop,trackerGroups:["group","dataLabelsGroup","parentNodesGroup"]});c.registerSeriesType("packedbubble",e);"";"";return e});z(e,"Extensions/Polar.js",
[e["Core/Animation/AnimationUtilities.js"],e["Core/Chart/Chart.js"],e["Core/Globals.js"],e["Extensions/Pane.js"],e["Core/Pointer.js"],e["Core/Series/Series.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Renderer/SVG/SVGRenderer.js"],e["Core/Utilities.js"]],function(e,d,h,c,a,n,k,t,q){var y=e.animObject;k=k.seriesTypes;var b=q.addEvent,f=q.defined,m=q.find,v=q.isNumber,w=q.pick,z=q.splat,B=q.uniqueKey;e=q.wrap;var E=n.prototype;a=a.prototype;E.searchPointByAngle=function(a){var b=this.chart,c=this.xAxis.pane.center;
return this.searchKDTree({clientX:180+-180/Math.PI*Math.atan2(a.chartX-c[0]-b.plotLeft,a.chartY-c[1]-b.plotTop)})};E.getConnectors=function(a,b,c,d){var e=d?1:0;var g=0<=b&&b<=a.length-1?b:0>b?a.length-1+b:0;b=0>g-1?a.length-(1+e):g-1;e=g+1>a.length-1?e:g+1;var f=a[b];e=a[e];var l=f.plotX;f=f.plotY;var h=e.plotX;var k=e.plotY;e=a[g].plotX;g=a[g].plotY;l=(1.5*e+l)/2.5;f=(1.5*g+f)/2.5;h=(1.5*e+h)/2.5;var p=(1.5*g+k)/2.5;k=Math.sqrt(Math.pow(l-e,2)+Math.pow(f-g,2));var m=Math.sqrt(Math.pow(h-e,2)+Math.pow(p-
g,2));l=Math.atan2(f-g,l-e);p=Math.PI/2+(l+Math.atan2(p-g,h-e))/2;Math.abs(l-p)>Math.PI/2&&(p-=Math.PI);l=e+Math.cos(p)*k;f=g+Math.sin(p)*k;h=e+Math.cos(Math.PI+p)*m;p=g+Math.sin(Math.PI+p)*m;e={rightContX:h,rightContY:p,leftContX:l,leftContY:f,plotX:e,plotY:g};c&&(e.prevPointCont=this.getConnectors(a,b,!1,d));return e};E.toXY=function(a){var b=this.chart,c=this.xAxis,d=this.yAxis,e=a.plotX,f=a.plotY,l=a.series,h=b.inverted,k=a.y,m=h?e:d.len-f;h&&l&&!l.isRadialBar&&(a.plotY=f="number"===typeof k?
d.translate(k)||0:0);a.rectPlotX=e;a.rectPlotY=f;d.center&&(m+=d.center[3]/2);v(f)&&(d=h?d.postTranslate(f,m):c.postTranslate(e,m),a.plotX=a.polarPlotX=d.x-b.plotLeft,a.plotY=a.polarPlotY=d.y-b.plotTop);this.kdByAngle?(b=(e/Math.PI*180+c.pane.options.startAngle)%360,0>b&&(b+=360),a.clientX=b):a.clientX=a.plotX};k.spline&&(e(k.spline.prototype,"getPointSpline",function(a,b,c,d){this.chart.polar?d?(a=this.getConnectors(b,d,!0,this.connectEnds),b=a.prevPointCont&&a.prevPointCont.rightContX,c=a.prevPointCont&&
a.prevPointCont.rightContY,a=["C",v(b)?b:a.plotX,v(c)?c:a.plotY,v(a.leftContX)?a.leftContX:a.plotX,v(a.leftContY)?a.leftContY:a.plotY,a.plotX,a.plotY]):a=["M",c.plotX,c.plotY]:a=a.call(this,b,c,d);return a}),k.areasplinerange&&(k.areasplinerange.prototype.getPointSpline=k.spline.prototype.getPointSpline));b(n,"afterTranslate",function(){var a=this.chart;if(a.polar&&this.xAxis){(this.kdByAngle=a.tooltip&&a.tooltip.shared)?this.searchPoint=this.searchPointByAngle:this.options.findNearestPointBy="xy";
if(!this.preventPostTranslate)for(var c=this.points,d=c.length;d--;)this.toXY(c[d]),!a.hasParallelCoordinates&&!this.yAxis.reversed&&c[d].y<this.yAxis.min&&(c[d].isNull=!0);this.hasClipCircleSetter||(this.hasClipCircleSetter=!!this.eventsToUnbind.push(b(this,"afterRender",function(){if(a.polar){var b=this.yAxis.pane.center;this.clipCircle?this.clipCircle.animate({x:b[0],y:b[1],r:b[2]/2,innerR:b[3]/2}):this.clipCircle=a.renderer.clipCircle(b[0],b[1],b[2]/2,b[3]/2);this.group.clip(this.clipCircle);
this.setClip=h.noop}})))}},{order:2});e(k.line.prototype,"getGraphPath",function(a,b){var c=this,d;if(this.chart.polar){b=b||this.points;for(d=0;d<b.length;d++)if(!b[d].isNull){var e=d;break}if(!1!==this.options.connectEnds&&"undefined"!==typeof e){this.connectEnds=!0;b.splice(b.length,0,b[e]);var g=!0}b.forEach(function(a){"undefined"===typeof a.polarPlotY&&c.toXY(a)})}d=a.apply(this,[].slice.call(arguments,1));g&&b.pop();return d});var u=function(a,b){var c=this,d=this.chart,e=this.options.animation,
g=this.group,f=this.markerGroup,l=this.xAxis.center,k=d.plotLeft,m=d.plotTop,n,q,r,t;if(d.polar)if(c.isRadialBar)b||(c.startAngleRad=w(c.translatedThreshold,c.xAxis.startAngleRad),h.seriesTypes.pie.prototype.animate.call(c,b));else{if(d.renderer.isSVG)if(e=y(e),c.is("column")){if(!b){var u=l[3]/2;c.points.forEach(function(a){n=a.graphic;r=(q=a.shapeArgs)&&q.r;t=q&&q.innerR;n&&q&&(n.attr({r:u,innerR:u}),n.animate({r:r,innerR:t},c.options.animation))})}}else b?(a={translateX:l[0]+k,translateY:l[1]+
m,scaleX:.001,scaleY:.001},g.attr(a),f&&f.attr(a)):(a={translateX:k,translateY:m,scaleX:1,scaleY:1},g.animate(a,e),f&&f.animate(a,e))}else a.call(this,b)};e(E,"animate",u);if(k.column){var r=k.arearange.prototype;k=k.column.prototype;k.polarArc=function(a,b,c,d){var e=this.xAxis.center,g=this.yAxis.len,f=e[3]/2;b=g-b+f;a=g-w(a,g)+f;this.yAxis.reversed&&(0>b&&(b=f),0>a&&(a=f));return{x:e[0],y:e[1],r:b,innerR:a,start:c,end:d}};e(k,"animate",u);e(k,"translate",function(a){var b=this.options,c=b.stacking,
d=this.chart,e=this.xAxis,h=this.yAxis,l=h.reversed,k=h.center,m=e.startAngleRad,n=e.endAngleRad-m;this.preventPostTranslate=!0;a.call(this);if(e.isRadial){a=this.points;e=a.length;var r=h.translate(h.min);var t=h.translate(h.max);b=b.threshold||0;if(d.inverted&&v(b)){var u=h.translate(b);f(u)&&(0>u?u=0:u>n&&(u=n),this.translatedThreshold=u+m)}for(;e--;){b=a[e];var w=b.barX;var y=b.x;var z=b.y;b.shapeType="arc";if(d.inverted){b.plotY=h.translate(z);if(c&&h.stacking){if(z=h.stacking.stacks[(0>z?"-":
"")+this.stackKey],this.visible&&z&&z[y]&&!b.isNull){var B=z[y].points[this.getStackIndicator(void 0,y,this.index).key];var D=h.translate(B[0]);B=h.translate(B[1]);f(D)&&(D=q.clamp(D,0,n))}}else D=u,B=b.plotY;D>B&&(B=[D,D=B][0]);if(!l)if(D<r)D=r;else if(B>t)B=t;else{if(B<r||D>t)D=B=0}else if(B>r)B=r;else if(D<t)D=t;else if(D>r||B<t)D=B=n;h.min>h.max&&(D=B=l?n:0);D+=m;B+=m;k&&(b.barX=w+=k[3]/2);y=Math.max(w,0);z=Math.max(w+b.pointWidth,0);b.shapeArgs={x:k&&k[0],y:k&&k[1],r:z,innerR:y,start:D,end:B};
b.opacity=D===B?0:void 0;b.plotY=(f(this.translatedThreshold)&&(D<this.translatedThreshold?D:B))-m}else D=w+m,b.shapeArgs=this.polarArc(b.yBottom,b.plotY,D,D+b.pointWidth);this.toXY(b);d.inverted?(w=h.postTranslate(b.rectPlotY,w+b.pointWidth/2),b.tooltipPos=[w.x-d.plotLeft,w.y-d.plotTop]):b.tooltipPos=[b.plotX,b.plotY];k&&(b.ttBelow=b.plotY>k[1])}}});k.findAlignments=function(a,b){null===b.align&&(b.align=20<a&&160>a?"left":200<a&&340>a?"right":"center");null===b.verticalAlign&&(b.verticalAlign=45>
a||315<a?"bottom":135<a&&225>a?"top":"middle");return b};r&&(r.findAlignments=k.findAlignments);e(k,"alignDataLabel",function(a,b,c,d,e,f){var g=this.chart,h=w(d.inside,!!this.options.stacking);g.polar?(a=b.rectPlotX/Math.PI*180,g.inverted?(this.forceDL=g.isInsidePlot(b.plotX,Math.round(b.plotY)),h&&b.shapeArgs?(e=b.shapeArgs,e=this.yAxis.postTranslate(((e.start||0)+(e.end||0))/2-this.xAxis.startAngleRad,b.barX+b.pointWidth/2),e={x:e.x-g.plotLeft,y:e.y-g.plotTop}):b.tooltipPos&&(e={x:b.tooltipPos[0],
y:b.tooltipPos[1]}),d.align=w(d.align,"center"),d.verticalAlign=w(d.verticalAlign,"middle")):this.findAlignments&&(d=this.findAlignments(a,d)),E.alignDataLabel.call(this,b,c,d,e,f),this.isRadialBar&&b.shapeArgs&&b.shapeArgs.start===b.shapeArgs.end&&c.hide(!0)):a.call(this,b,c,d,e,f)})}e(a,"getCoordinates",function(a,b){var c=this.chart,d={xAxis:[],yAxis:[]};c.polar?c.axes.forEach(function(a){var e=a.isXAxis,f=a.center;if("colorAxis"!==a.coll){var g=b.chartX-f[0]-c.plotLeft;f=b.chartY-f[1]-c.plotTop;
d[e?"xAxis":"yAxis"].push({axis:a,value:a.translate(e?Math.PI-Math.atan2(g,f):Math.sqrt(Math.pow(g,2)+Math.pow(f,2)),!0)})}}):d=a.call(this,b);return d});t.prototype.clipCircle=function(a,b,c,d){var e=B(),f=this.createElement("clipPath").attr({id:e}).add(this.defs);a=d?this.arc(a,b,c,d,0,2*Math.PI).add(f):this.circle(a,b,c).add(f);a.id=e;a.clipPath=f;return a};b(d,"getAxes",function(){this.pane||(this.pane=[]);z(this.options.pane).forEach(function(a){new c(a,this)},this)});b(d,"afterDrawChartBox",
function(){this.pane.forEach(function(a){a.render()})});b(n,"afterInit",function(){var a=this.chart;a.inverted&&a.polar&&(this.isRadialSeries=!0,this.is("column")&&(this.isRadialBar=!0))});e(d.prototype,"get",function(a,b){return m(this.pane||[],function(a){return a.options.id===b})||a.call(this,b)})});z(e,"masters/highcharts-more.src.js",[],function(){})});
//# sourceMappingURL=highcharts-more.js.map
/*
 Highcharts JS v9.1.0 (2021-05-03)

 Data module

 (c) 2012-2021 Torstein Honsi

 License: www.highcharts.com/license
*/
(function (b) { "object" === typeof module && module.exports ? (b["default"] = b, module.exports = b) : "function" === typeof define && define.amd ? define("highcharts/modules/data", ["highcharts"], function (p) { b(p); b.Highcharts = p; return b }) : b("undefined" !== typeof Highcharts ? Highcharts : void 0) })(function (b) {
    function p(b, x, u, p) { b.hasOwnProperty(x) || (b[x] = p.apply(null, u)) } b = b ? b._modules : {}; p(b, "Extensions/Ajax.js", [b["Core/Globals.js"], b["Core/Utilities.js"]], function (b, p) {
        var u = p.merge, x = p.objectEach; b.ajax = function (b) {
            var c =
                u(!0, { url: !1, type: "get", dataType: "json", success: !1, error: !1, data: !1, headers: {} }, b); b = { json: "application/json", xml: "application/xml", text: "text/plain", octet: "application/octet-stream" }; var r = new XMLHttpRequest; if (!c.url) return !1; r.open(c.type.toUpperCase(), c.url, !0); c.headers["Content-Type"] || r.setRequestHeader("Content-Type", b[c.dataType] || b.text); x(c.headers, function (b, c) { r.setRequestHeader(c, b) }); r.onreadystatechange = function () {
                    if (4 === r.readyState) {
                        if (200 === r.status) {
                            var b = r.responseText; if ("json" ===
                                c.dataType) try { b = JSON.parse(b) } catch (B) { c.error && c.error(r, B); return } return c.success && c.success(b)
                        } c.error && c.error(r, r.responseText)
                    }
                }; try { c.data = JSON.stringify(c.data) } catch (P) { } r.send(c.data || !0)
        }; b.getJSON = function (p, c) { b.ajax({ url: p, success: c, dataType: "json", headers: { "Content-Type": "text/plain" } }) }; return { ajax: b.ajax, getJSON: b.getJSON }
    }); p(b, "Extensions/Data.js", [b["Extensions/Ajax.js"], b["Core/Chart/Chart.js"], b["Core/Globals.js"], b["Core/Series/Point.js"], b["Core/Series/SeriesRegistry.js"],
    b["Core/Utilities.js"]], function (b, p, u, G, H, c) {
        var r = b.ajax, x = u.doc, B = H.seriesTypes; b = c.addEvent; var I = c.defined, J = c.extend, K = c.fireEvent, E = c.isNumber, D = c.merge, L = c.objectEach, M = c.pick, N = c.splat; c = function () {
            function b(a, d, g) {
            this.options = this.rawColumns = this.firstRowAsNames = this.chartOptions = this.chart = void 0; this.dateFormats = {
                "YYYY/mm/dd": { regex: /^([0-9]{4})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{1,2})$/, parser: function (a) { return a ? Date.UTC(+a[1], a[2] - 1, +a[3]) : NaN } }, "dd/mm/YYYY": {
                    regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,
                    parser: function (a) { return a ? Date.UTC(+a[3], a[2] - 1, +a[1]) : NaN }, alternative: "mm/dd/YYYY"
                }, "mm/dd/YYYY": { regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/, parser: function (a) { return a ? Date.UTC(+a[3], a[1] - 1, +a[2]) : NaN } }, "dd/mm/YY": { regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/, parser: function (a) { if (!a) return NaN; var d = +a[3]; d = d > (new Date).getFullYear() - 2E3 ? d + 1900 : d + 2E3; return Date.UTC(d, a[2] - 1, +a[1]) }, alternative: "mm/dd/YY" }, "mm/dd/YY": {
                    regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,
                    parser: function (a) { return a ? Date.UTC(+a[3] + 2E3, a[1] - 1, +a[2]) : NaN }
                }
            }; this.init(a, d, g)
            } b.prototype.init = function (a, d, g) {
                var e = a.decimalPoint; d && (this.chartOptions = d); g && (this.chart = g); "." !== e && "," !== e && (e = void 0); this.options = a; this.columns = a.columns || this.rowsToColumns(a.rows) || []; this.firstRowAsNames = M(a.firstRowAsNames, this.firstRowAsNames, !0); this.decimalRegex = e && new RegExp("^(-?[0-9]+)" + e + "([0-9]+)$"); this.rawColumns = []; if (this.columns.length) { this.dataFound(); var k = !0 } this.hasURLOption(a) && (clearTimeout(this.liveDataTimeout),
                    k = !1); k || (k = this.fetchLiveData()); k || (k = !!this.parseCSV().length); k || (k = !!this.parseTable().length); k || (k = this.parseGoogleSpreadsheet()); !k && a.afterComplete && a.afterComplete()
            }; b.prototype.hasURLOption = function (a) { return !(!a || !(a.rowsURL || a.csvURL || a.columnsURL)) }; b.prototype.getColumnDistribution = function () {
                var a = this.chartOptions, d = this.options, g = [], e = function (a) { return (B[a || "line"].prototype.pointArrayMap || [0]).length }, k = a && a.chart && a.chart.type, h = [], b = [], n = 0; d = d && d.seriesMapping || a && a.series &&
                    a.series.map(function () { return { x: 0 } }) || []; var f; (a && a.series || []).forEach(function (a) { h.push(e(a.type || k)) }); d.forEach(function (a) { g.push(a.x || 0) }); 0 === g.length && g.push(0); d.forEach(function (d) { var g = new F, l = h[n] || e(k), m = (a && a.series || [])[n] || {}, c = B[m.type || k || "line"].prototype.pointArrayMap, z = c || ["y"]; (I(d.x) || m.isCartesian || !c) && g.addColumnReader(d.x, "x"); L(d, function (a, d) { "x" !== d && g.addColumnReader(a, d) }); for (f = 0; f < l; f++)g.hasReader(z[f]) || g.addColumnReader(void 0, z[f]); b.push(g); n++ }); d = B[k ||
                        "line"].prototype.pointArrayMap; "undefined" === typeof d && (d = ["y"]); this.valueCount = { global: e(k), xColumns: g, individual: h, seriesBuilders: b, globalPointArrayMap: d }
            }; b.prototype.dataFound = function () { this.options.switchRowsAndColumns && (this.columns = this.rowsToColumns(this.columns)); this.getColumnDistribution(); this.parseTypes(); !1 !== this.parsed() && this.complete() }; b.prototype.parseCSV = function (a) {
                function d(a, d, g, e) {
                    function b(d) { c = a[d]; l = a[d - 1]; q = a[d + 1] } function k(a) {
                    v.length < t + 1 && v.push([a]); v[t][v[t].length -
                        1] !== a && v[t].push(a)
                    } function h() { f > n || n > O ? (++n, m = "") : (!isNaN(parseFloat(m)) && isFinite(m) ? (m = parseFloat(m), k("number")) : isNaN(Date.parse(m)) ? k("string") : (m = m.replace(/\//g, "-"), k("date")), C.length < t + 1 && C.push([]), g || (C[t][d] = m), m = "", ++t, ++n) } var A = 0, c = "", l = "", q = "", m = "", n = 0, t = 0; if (a.trim().length && "#" !== a.trim()[0]) { for (; A < a.length; A++)if (b(A), '"' === c) for (b(++A); A < a.length && ('"' !== c || '"' === l || '"' === q);) { if ('"' !== c || '"' === c && '"' !== l) m += c; b(++A) } else e && e[c] ? e[c](c, m) && h() : c === z ? h() : m += c; h() }
                } function g(a) {
                    var d =
                        0, g = 0, e = !1; a.some(function (a, e) { var b = !1, k = ""; if (13 < e) return !0; for (var c = 0; c < a.length; c++) { e = a[c]; var h = a[c + 1]; var f = a[c - 1]; if ("#" === e) break; if ('"' === e) if (b) { if ('"' !== f && '"' !== h) { for (; " " === h && c < a.length;)h = a[++c]; "undefined" !== typeof m[h] && m[h]++; b = !1 } } else b = !0; else "undefined" !== typeof m[e] ? (k = k.trim(), isNaN(Date.parse(k)) ? !isNaN(k) && isFinite(k) || m[e]++ : m[e]++ , k = "") : k += e; "," === e && g++; "." === e && d++ } }); e = m[";"] > m[","] ? ";" : ","; b.decimalPoint || (b.decimalPoint = d > g ? "." : ",", k.decimalRegex = new RegExp("^(-?[0-9]+)" +
                            b.decimalPoint + "([0-9]+)$")); return e
                } function e(a, d) {
                    var e = [], g = 0, c = !1, h = [], m = [], f; if (!d || d > a.length) d = a.length; for (; g < d; g++)if ("undefined" !== typeof a[g] && a[g] && a[g].length) {
                        var l = a[g].trim().replace(/\//g, " ").replace(/\-/g, " ").replace(/\./g, " ").split(" "); e = ["", "", ""]; for (f = 0; f < l.length; f++)f < e.length && (l[f] = parseInt(l[f], 10), l[f] && (m[f] = !m[f] || m[f] < l[f] ? l[f] : m[f], "undefined" !== typeof h[f] ? h[f] !== l[f] && (h[f] = !1) : h[f] = l[f], 31 < l[f] ? e[f] = 100 > l[f] ? "YY" : "YYYY" : 12 < l[f] && 31 >= l[f] ? (e[f] = "dd", c = !0) : e[f].length ||
                            (e[f] = "mm")))
                    } if (c) { for (f = 0; f < h.length; f++)!1 !== h[f] ? 12 < m[f] && "YY" !== e[f] && "YYYY" !== e[f] && (e[f] = "YY") : 12 < m[f] && "mm" === e[f] && (e[f] = "dd"); 3 === e.length && "dd" === e[1] && "dd" === e[2] && (e[2] = "YY"); a = e.join("/"); return (b.dateFormats || k.dateFormats)[a] ? a : (K("deduceDateFailed"), "YYYY/mm/dd") } return "YYYY/mm/dd"
                } var k = this, b = a || this.options, l = b.csv; a = "undefined" !== typeof b.startRow && b.startRow ? b.startRow : 0; var c = b.endRow || Number.MAX_VALUE, f = "undefined" !== typeof b.startColumn && b.startColumn ? b.startColumn : 0, O = b.endColumn ||
                    Number.MAX_VALUE, q = 0, v = [], m = { ",": 0, ";": 0, "\t": 0 }; var C = this.columns = []; l && b.beforeParse && (l = b.beforeParse.call(this, l)); if (l) { l = l.replace(/\r\n/g, "\n").replace(/\r/g, "\n").split(b.lineDelimiter || "\n"); if (!a || 0 > a) a = 0; if (!c || c >= l.length) c = l.length - 1; if (b.itemDelimiter) var z = b.itemDelimiter; else z = null, z = g(l); var w = 0; for (q = a; q <= c; q++)"#" === l[q][0] ? w++ : d(l[q], q - a - w); b.columnTypes && 0 !== b.columnTypes.length || !v.length || !v[0].length || "date" !== v[0][1] || b.dateFormat || (b.dateFormat = e(C[0])); this.dataFound() } return C
            };
            b.prototype.parseTable = function () {
                var a = this.options, d = a.table, g = this.columns || [], e = a.startRow || 0, b = a.endRow || Number.MAX_VALUE, c = a.startColumn || 0, l = a.endColumn || Number.MAX_VALUE; d && ("string" === typeof d && (d = x.getElementById(d)), [].forEach.call(d.getElementsByTagName("tr"), function (a, d) { d >= e && d <= b && [].forEach.call(a.children, function (a, b) { var k = g[b - c], f = 1; if (("TD" === a.tagName || "TH" === a.tagName) && b >= c && b <= l) for (g[b - c] || (g[b - c] = []), g[b - c][d - e] = a.innerHTML; d - e >= f && void 0 === k[d - e - f];)k[d - e - f] = null, f++ }) }),
                    this.dataFound()); return g
            }; b.prototype.fetchLiveData = function () {
                function a(k) {
                    function f(f, h, m) { function n() { c && g.liveDataURL === f && (d.liveDataTimeout = setTimeout(a, l)) } if (!f || 0 !== f.indexOf("http")) return f && e.error && e.error("Invalid URL"), !1; k && (clearTimeout(d.liveDataTimeout), g.liveDataURL = f); r({ url: f, dataType: m || "json", success: function (a) { g && g.series && h(a); n() }, error: function (a, d) { 3 > ++b && n(); return e.error && e.error(d, a) } }); return !0 } f(n.csvURL, function (a) { g.update({ data: { csv: a } }) }, "text") || f(n.rowsURL,
                        function (a) { g.update({ data: { rows: a } }) }) || f(n.columnsURL, function (a) { g.update({ data: { columns: a } }) })
                } var d = this, g = this.chart, e = this.options, b = 0, c = e.enablePolling, l = 1E3 * (e.dataRefreshRate || 2), n = D(e); if (!this.hasURLOption(e)) return !1; 1E3 > l && (l = 1E3); delete e.csvURL; delete e.rowsURL; delete e.columnsURL; a(!0); return this.hasURLOption(e)
            }; b.prototype.parseGoogleSpreadsheet = function () {
                function a(d) {
                    var b = ["https://spreadsheets.google.com/feeds/cells", e, c, "public/values?alt=json"].join("/"); r({
                        url: b, dataType: "json",
                        success: function (e) { d(e); g.enablePolling && setTimeout(function () { a(d) }, 1E3 * (g.dataRefreshRate || 2)) }, error: function (a, d) { return g.error && g.error(d, a) }
                    })
                } var d = this, g = this.options, e = g.googleSpreadsheetKey, b = this.chart, c = g.googleSpreadsheetWorksheet || 1, l = g.startRow || 0, n = g.endRow || Number.MAX_VALUE, f = g.startColumn || 0, p = g.endColumn || Number.MAX_VALUE, q = 1E3 * (g.dataRefreshRate || 2); 4E3 > q && (q = 4E3); e && (delete g.googleSpreadsheetKey, a(function (a) {
                    var e = []; a = a.feed.entry; var g = (a || []).length, k = 0, c; if (!a || 0 === a.length) return !1;
                    for (c = 0; c < g; c++) { var h = a[c]; k = Math.max(k, h.gs$cell.col) } for (c = 0; c < k; c++)c >= f && c <= p && (e[c - f] = []); for (c = 0; c < g; c++) { h = a[c]; k = h.gs$cell.row - 1; var q = h.gs$cell.col - 1; if (q >= f && q <= p && k >= l && k <= n) { var t = h.gs$cell || h.content; h = null; t.numericValue ? h = 0 <= t.$t.indexOf("/") || 0 <= t.$t.indexOf("-") ? t.$t : 0 < t.$t.indexOf("%") ? 100 * parseFloat(t.numericValue) : parseFloat(t.numericValue) : t.$t && t.$t.length && (h = t.$t); e[q - f][k - l] = h } } e.forEach(function (a) { for (c = 0; c < a.length; c++)"undefined" === typeof a[c] && (a[c] = null) }); b && b.series ?
                        b.update({ data: { columns: e } }) : (d.columns = e, d.dataFound())
                })); return !1
            }; b.prototype.trim = function (a, d) { "string" === typeof a && (a = a.replace(/^\s+|\s+$/g, ""), d && /^[0-9\s]+$/.test(a) && (a = a.replace(/\s/g, "")), this.decimalRegex && (a = a.replace(this.decimalRegex, "$1.$2"))); return a }; b.prototype.parseTypes = function () { for (var a = this.columns, d = a.length; d--;)this.parseColumn(a[d], d) }; b.prototype.parseColumn = function (a, d) {
                var g = this.rawColumns, e = this.columns, b = a.length, c = this.firstRowAsNames, l = -1 !== this.valueCount.xColumns.indexOf(d),
                n, f = [], p = this.chartOptions, q, r = (this.options.columnTypes || [])[d]; p = l && (p && p.xAxis && "category" === N(p.xAxis)[0].type || "string" === r); for (g[d] || (g[d] = []); b--;) {
                    var m = f[b] || a[b]; var y = this.trim(m); var u = this.trim(m, !0); var w = parseFloat(u); "undefined" === typeof g[d][b] && (g[d][b] = y); p || 0 === b && c ? a[b] = "" + y : +u === w ? (a[b] = w, 31536E6 < w && "float" !== r ? a.isDatetime = !0 : a.isNumeric = !0, "undefined" !== typeof a[b + 1] && (q = w > a[b + 1])) : (y && y.length && (n = this.parseDate(m)), l && E(n) && "float" !== r ? (f[b] = m, a[b] = n, a.isDatetime = !0, "undefined" !==
                        typeof a[b + 1] && (m = n > a[b + 1], m !== q && "undefined" !== typeof q && (this.alternativeFormat ? (this.dateFormat = this.alternativeFormat, b = a.length, this.alternativeFormat = this.dateFormats[this.dateFormat].alternative) : a.unsorted = !0), q = m)) : (a[b] = "" === y ? null : y, 0 !== b && (a.isDatetime || a.isNumeric) && (a.mixed = !0)))
                } l && a.mixed && (e[d] = g[d]); if (l && q && this.options.sort) for (d = 0; d < e.length; d++)e[d].reverse(), c && e[d].unshift(e[d].pop())
            }; b.prototype.parseDate = function (a) {
                var d = this.options.parseDate, b, e = this.options.dateFormat ||
                    this.dateFormat, c; if (d) var h = d(a); else if ("string" === typeof a) {
                        if (e) (d = this.dateFormats[e]) || (d = this.dateFormats["YYYY/mm/dd"]), (c = a.match(d.regex)) && (h = d.parser(c)); else for (b in this.dateFormats) if (d = this.dateFormats[b], c = a.match(d.regex)) { this.dateFormat = b; this.alternativeFormat = d.alternative; h = d.parser(c); break } c || (a.match(/:.+(GMT|UTC|[Z+-])/) && (a = a.replace(/\s*(?:GMT|UTC)?([+-])(\d\d)(\d\d)$/, "$1$2:$3").replace(/(?:\s+|GMT|UTC)([+-])/, "$1").replace(/(\d)\s*(?:GMT|UTC|Z)$/, "$1+00:00")), c = Date.parse(a),
                            "object" === typeof c && null !== c && c.getTime ? h = c.getTime() - 6E4 * c.getTimezoneOffset() : E(c) && (h = c - 6E4 * (new Date(c)).getTimezoneOffset()))
                    } return h
            }; b.prototype.rowsToColumns = function (a) { var d, b; if (a) { var e = []; var c = a.length; for (d = 0; d < c; d++) { var h = a[d].length; for (b = 0; b < h; b++)e[b] || (e[b] = []), e[b][d] = a[d][b] } } return e }; b.prototype.getData = function () { if (this.columns) return this.rowsToColumns(this.columns).slice(1) }; b.prototype.parsed = function () { if (this.options.parsed) return this.options.parsed.call(this, this.columns) };
            b.prototype.getFreeIndexes = function (a, d) { var b, e = [], c = []; for (b = 0; b < a; b += 1)e.push(!0); for (a = 0; a < d.length; a += 1) { var h = d[a].getReferencedColumnIndexes(); for (b = 0; b < h.length; b += 1)e[h[b]] = !1 } for (b = 0; b < e.length; b += 1)e[b] && c.push(b); return c }; b.prototype.complete = function () {
                var a = this.columns, b, c = this.options, e, k, h = []; if (c.complete || c.afterComplete) {
                    if (this.firstRowAsNames) for (e = 0; e < a.length; e++)a[e].name = a[e].shift(); var l = []; var n = this.getFreeIndexes(a.length, this.valueCount.seriesBuilders); for (e = 0; e < this.valueCount.seriesBuilders.length; e++) {
                        var f =
                            this.valueCount.seriesBuilders[e]; f.populateColumns(n) && h.push(f)
                    } for (; 0 < n.length;) { f = new F; f.addColumnReader(0, "x"); e = n.indexOf(0); -1 !== e && n.splice(e, 1); for (e = 0; e < this.valueCount.global; e++)f.addColumnReader(void 0, this.valueCount.globalPointArrayMap[e]); f.populateColumns(n) && h.push(f) } 0 < h.length && 0 < h[0].readers.length && (f = a[h[0].readers[0].columnIndex], "undefined" !== typeof f && (f.isDatetime ? b = "datetime" : f.isNumeric || (b = "category"))); if ("category" === b) for (e = 0; e < h.length; e++)for (f = h[e], n = 0; n < f.readers.length; n++)"x" ===
                        f.readers[n].configName && (f.readers[n].configName = "name"); for (e = 0; e < h.length; e++) { f = h[e]; n = []; for (k = 0; k < a[0].length; k++)n[k] = f.read(a, k); l[e] = { data: n }; f.name && (l[e].name = f.name); "category" === b && (l[e].turboThreshold = 0) } a = { series: l }; b && (a.xAxis = { type: b }, "category" === b && (a.xAxis.uniqueNames = !1)); c.complete && c.complete(a); c.afterComplete && c.afterComplete(a)
                }
            }; b.prototype.update = function (a, b) {
                var d = this.chart; a && (a.afterComplete = function (a) {
                    a && (a.xAxis && d.xAxis[0] && a.xAxis.type === d.xAxis[0].options.type &&
                        delete a.xAxis, d.update(a, b, !0))
                }, D(!0, d.options.data, a), this.init(d.options.data))
            }; return b
        }(); u.data = function (b, a, d) { return new u.Data(b, a, d) }; b(p, "init", function (b) {
            var a = this, d = b.args[0] || {}, c = b.args[1]; d && d.data && !a.hasDataDef && (a.hasDataDef = !0, a.data = new u.Data(J(d.data, {
                afterComplete: function (b) {
                    var e; if (Object.hasOwnProperty.call(d, "series")) if ("object" === typeof d.series) for (e = Math.max(d.series.length, b && b.series ? b.series.length : 0); e--;) {
                        var g = d.series[e] || {}; d.series[e] = D(g, b && b.series ?
                            b.series[e] : {})
                    } else delete d.series; d = D(b, d); a.init(d, c)
                }
            }), d, a), b.preventDefault())
        }); var F = function () {
            function b() { this.readers = []; this.pointIsArray = !0; this.name = void 0 } b.prototype.populateColumns = function (a) { var b = !0; this.readers.forEach(function (b) { "undefined" === typeof b.columnIndex && (b.columnIndex = a.shift()) }); this.readers.forEach(function (a) { "undefined" === typeof a.columnIndex && (b = !1) }); return b }; b.prototype.read = function (a, b) {
                var d = this.pointIsArray, e = d ? [] : {}; this.readers.forEach(function (c) {
                    var g =
                        a[c.columnIndex][b]; d ? e.push(g) : 0 < c.configName.indexOf(".") ? G.prototype.setNestedProperty(e, g, c.configName) : e[c.configName] = g
                }); if ("undefined" === typeof this.name && 2 <= this.readers.length) { var c = this.getReferencedColumnIndexes(); 2 <= c.length && (c.shift(), c.sort(function (a, b) { return a - b }), this.name = a[c.shift()].name) } return e
            }; b.prototype.addColumnReader = function (a, b) { this.readers.push({ columnIndex: a, configName: b }); "x" !== b && "y" !== b && "undefined" !== typeof b && (this.pointIsArray = !1) }; b.prototype.getReferencedColumnIndexes =
                function () { var a, b = []; for (a = 0; a < this.readers.length; a += 1) { var c = this.readers[a]; "undefined" !== typeof c.columnIndex && b.push(c.columnIndex) } return b }; b.prototype.hasReader = function (a) { var b; for (b = 0; b < this.readers.length; b += 1) { var c = this.readers[b]; if (c.configName === a) return !0 } }; return b
        }(); u.Data = c; return u.Data
    }); p(b, "masters/modules/data.src.js", [], function () { })
});
//# sourceMappingURL=data.js.map
/*
 Highcharts JS v9.1.0 (2021-05-03)

 Exporting module

 (c) 2010-2021 Torstein Honsi

 License: www.highcharts.com/license
*/
(function (c) { "object" === typeof module && module.exports ? (c["default"] = c, module.exports = c) : "function" === typeof define && define.amd ? define("highcharts/modules/exporting", ["highcharts"], function (q) { c(q); c.Highcharts = q; return c }) : c("undefined" !== typeof Highcharts ? Highcharts : void 0) })(function (c) {
    function q(c, m, h, k) { c.hasOwnProperty(m) || (c[m] = k.apply(null, h)) } c = c ? c._modules : {}; q(c, "Extensions/FullScreen.js", [c["Core/Chart/Chart.js"], c["Core/Globals.js"], c["Core/Renderer/HTML/AST.js"], c["Core/Utilities.js"]],
        function (c, m, h, k) {
            var n = k.addEvent; k = function () {
                function c(e) {
                this.chart = e; this.isOpen = !1; e = e.renderTo; this.browserProps || ("function" === typeof e.requestFullscreen ? this.browserProps = { fullscreenChange: "fullscreenchange", requestFullscreen: "requestFullscreen", exitFullscreen: "exitFullscreen" } : e.mozRequestFullScreen ? this.browserProps = { fullscreenChange: "mozfullscreenchange", requestFullscreen: "mozRequestFullScreen", exitFullscreen: "mozCancelFullScreen" } : e.webkitRequestFullScreen ? this.browserProps = {
                    fullscreenChange: "webkitfullscreenchange",
                    requestFullscreen: "webkitRequestFullScreen", exitFullscreen: "webkitExitFullscreen"
                } : e.msRequestFullscreen && (this.browserProps = { fullscreenChange: "MSFullscreenChange", requestFullscreen: "msRequestFullscreen", exitFullscreen: "msExitFullscreen" }))
                } c.prototype.close = function () {
                    var e = this.chart, c = e.options.chart; if (this.isOpen && this.browserProps && e.container.ownerDocument instanceof Document) e.container.ownerDocument[this.browserProps.exitFullscreen](); this.unbindFullscreenEvent && (this.unbindFullscreenEvent =
                        this.unbindFullscreenEvent()); e.setSize(this.origWidth, this.origHeight, !1); this.origHeight = this.origWidth = void 0; c.width = this.origWidthOption; c.height = this.origHeightOption; this.origHeightOption = this.origWidthOption = void 0; this.isOpen = !1; this.setButtonText()
                }; c.prototype.open = function () {
                    var e = this, c = e.chart, h = c.options.chart; h && (e.origWidthOption = h.width, e.origHeightOption = h.height); e.origWidth = c.chartWidth; e.origHeight = c.chartHeight; if (e.browserProps) {
                        var k = n(c.container.ownerDocument, e.browserProps.fullscreenChange,
                            function () { e.isOpen ? (e.isOpen = !1, e.close()) : (c.setSize(null, null, !1), e.isOpen = !0, e.setButtonText()) }), m = n(c, "destroy", k); e.unbindFullscreenEvent = function () { k(); m() }; if (h = c.renderTo[e.browserProps.requestFullscreen]()) h["catch"](function () { alert("Full screen is not supported inside a frame.") })
                    }
                }; c.prototype.setButtonText = function () {
                    var e = this.chart, c = e.exportDivElements, k = e.options.exporting, m = k && k.buttons && k.buttons.contextButton.menuItems; e = e.options.lang; k && k.menuItemDefinitions && e && e.exitFullscreen &&
                        e.viewFullscreen && m && c && c.length && h.setElementHTML(c[m.indexOf("viewFullscreen")], this.isOpen ? e.exitFullscreen : k.menuItemDefinitions.viewFullscreen.text || e.viewFullscreen)
                }; c.prototype.toggle = function () { this.isOpen ? this.close() : this.open() }; return c
            }(); m.Fullscreen = k; n(c, "beforeRender", function () { this.fullscreen = new m.Fullscreen(this) }); return m.Fullscreen
        }); q(c, "Mixins/Navigation.js", [], function () {
            return {
                initUpdate: function (c) {
                c.navigation || (c.navigation = {
                    updates: [], update: function (c, h) {
                        this.updates.forEach(function (k) {
                            k.update.call(k.context,
                                c, h)
                        })
                    }
                })
                }, addUpdate: function (c, m) { m.navigation || this.initUpdate(m); m.navigation.updates.push({ update: c, context: m }) }
            }
        }); q(c, "Extensions/Exporting.js", [c["Core/Chart/Chart.js"], c["Mixins/Navigation.js"], c["Core/Globals.js"], c["Core/Options.js"], c["Core/Color/Palette.js"], c["Core/Renderer/SVG/SVGRenderer.js"], c["Core/Utilities.js"]], function (c, m, h, k, n, q, e) {
            var z = h.doc, G = h.isTouchDevice, B = h.win; k = k.defaultOptions; var x = e.addEvent, r = e.css, y = e.createElement, E = e.discardElement, A = e.extend, H = e.find, D = e.fireEvent,
                I = e.isObject, p = e.merge, F = e.objectEach, t = e.pick, J = e.removeEvent, K = e.uniqueKey; A(k.lang, { viewFullscreen: "View in full screen", exitFullscreen: "Exit from full screen", printChart: "Print chart", downloadPNG: "Download PNG image", downloadJPEG: "Download JPEG image", downloadPDF: "Download PDF document", downloadSVG: "Download SVG vector image", contextButtonTitle: "Chart context menu" }); k.navigation || (k.navigation = {}); p(!0, k.navigation, {
                    buttonOptions: {
                        theme: {}, symbolSize: 14, symbolX: 12.5, symbolY: 10.5, align: "right",
                        buttonSpacing: 3, height: 22, verticalAlign: "top", width: 24
                    }
                }); p(!0, k.navigation, { menuStyle: { border: "1px solid " + n.neutralColor40, background: n.backgroundColor, padding: "5px 0" }, menuItemStyle: { padding: "0.5em 1em", color: n.neutralColor80, background: "none", fontSize: G ? "14px" : "11px", transition: "background 250ms, color 250ms" }, menuItemHoverStyle: { background: n.highlightColor80, color: n.backgroundColor }, buttonOptions: { symbolFill: n.neutralColor60, symbolStroke: n.neutralColor60, symbolStrokeWidth: 3, theme: { padding: 5 } } });
            k.exporting = {
                type: "image/png", url: "https://export.highcharts.com/", printMaxWidth: 780, scale: 2, buttons: { contextButton: { className: "highcharts-contextbutton", menuClassName: "highcharts-contextmenu", symbol: "menu", titleKey: "contextButtonTitle", menuItems: "viewFullscreen printChart separator downloadPNG downloadJPEG downloadPDF downloadSVG".split(" ") } }, menuItemDefinitions: {
                    viewFullscreen: { textKey: "viewFullscreen", onclick: function () { this.fullscreen.toggle() } }, printChart: { textKey: "printChart", onclick: function () { this.print() } },
                    separator: { separator: !0 }, downloadPNG: { textKey: "downloadPNG", onclick: function () { this.exportChart() } }, downloadJPEG: { textKey: "downloadJPEG", onclick: function () { this.exportChart({ type: "image/jpeg" }) } }, downloadPDF: { textKey: "downloadPDF", onclick: function () { this.exportChart({ type: "application/pdf" }) } }, downloadSVG: { textKey: "downloadSVG", onclick: function () { this.exportChart({ type: "image/svg+xml" }) } }
                }
            }; h.post = function (a, b, f) {
                var d = y("form", p({ method: "post", action: a, enctype: "multipart/form-data" }, f), { display: "none" },
                    z.body); F(b, function (a, b) { y("input", { type: "hidden", name: b, value: a }, null, d) }); d.submit(); E(d)
            }; h.isSafari && h.win.matchMedia("print").addListener(function (a) { h.printingChart && (a.matches ? h.printingChart.beforePrint() : h.printingChart.afterPrint()) }); A(c.prototype, {
                sanitizeSVG: function (a, b) {
                    var f = a.indexOf("</svg>") + 6, d = a.substr(f); a = a.substr(0, f); b && b.exporting && b.exporting.allowHTML && d && (d = '<foreignObject x="0" y="0" width="' + b.chart.width + '" height="' + b.chart.height + '"><body xmlns="http://www.w3.org/1999/xhtml">' +
                        d.replace(/(<(?:img|br).*?(?=>))>/g, "$1 />") + "</body></foreignObject>", a = a.replace("</svg>", d + "</svg>")); a = a.replace(/zIndex="[^"]+"/g, "").replace(/symbolName="[^"]+"/g, "").replace(/jQuery[0-9]+="[^"]+"/g, "").replace(/url\(("|&quot;)(.*?)("|&quot;);?\)/g, "url($2)").replace(/url\([^#]+#/g, "url(#").replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ (|NS[0-9]+:)href=/g, " xlink:href=").replace(/\n/, " ").replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g,
                            '$1="rgb($2)" $1-opacity="$3"').replace(/&nbsp;/g, "\u00a0").replace(/&shy;/g, "\u00ad"); this.ieSanitizeSVG && (a = this.ieSanitizeSVG(a)); return a
                }, getChartHTML: function () { this.styledMode && this.inlineStyles(); return this.container.innerHTML }, getSVG: function (a) {
                    var b, f = p(this.options, a); f.plotOptions = p(this.userOptions.plotOptions, a && a.plotOptions); f.time = p(this.userOptions.time, a && a.time); var d = y("div", null, { position: "absolute", top: "-9999em", width: this.chartWidth + "px", height: this.chartHeight + "px" }, z.body);
                    var e = this.renderTo.style.width; var u = this.renderTo.style.height; e = f.exporting.sourceWidth || f.chart.width || /px$/.test(e) && parseInt(e, 10) || (f.isGantt ? 800 : 600); u = f.exporting.sourceHeight || f.chart.height || /px$/.test(u) && parseInt(u, 10) || 400; A(f.chart, { animation: !1, renderTo: d, forExport: !0, renderer: "SVGRenderer", width: e, height: u }); f.exporting.enabled = !1; delete f.data; f.series = []; this.series.forEach(function (a) {
                        b = p(a.userOptions, { animation: !1, enableMouseTracking: !1, showCheckbox: !1, visible: a.visible }); b.isInternal ||
                            f.series.push(b)
                    }); var h = {}; this.axes.forEach(function (a) { a.userOptions.internalKey || (a.userOptions.internalKey = K()); a.options.isInternal || (h[a.coll] || (h[a.coll] = !0, f[a.coll] = []), f[a.coll].push(p(a.userOptions, { visible: a.visible }))) }); var g = new c(f, this.callback); a && ["xAxis", "yAxis", "series"].forEach(function (b) { var d = {}; a[b] && (d[b] = a[b], g.update(d)) }); this.axes.forEach(function (a) {
                        var b = H(g.axes, function (b) { return b.options.internalKey === a.userOptions.internalKey }), d = a.getExtremes(), f = d.userMin;
                        d = d.userMax; b && ("undefined" !== typeof f && f !== b.min || "undefined" !== typeof d && d !== b.max) && b.setExtremes(f, d, !0, !1)
                    }); e = g.getChartHTML(); D(this, "getSVG", { chartCopy: g }); e = this.sanitizeSVG(e, f); f = null; g.destroy(); E(d); return e
                }, getSVGForExport: function (a, b) { var f = this.options.exporting; return this.getSVG(p({ chart: { borderRadius: 0 } }, f.chartOptions, b, { exporting: { sourceWidth: a && a.sourceWidth || f.sourceWidth, sourceHeight: a && a.sourceHeight || f.sourceHeight } })) }, getFilename: function () {
                    var a = this.userOptions.title &&
                        this.userOptions.title.text, b = this.options.exporting.filename; if (b) return b.replace(/\//g, "-"); "string" === typeof a && (b = a.toLowerCase().replace(/<\/?[^>]+(>|$)/g, "").replace(/[\s_]+/g, "-").replace(/[^a-z0-9\-]/g, "").replace(/^[\-]+/g, "").replace(/[\-]+/g, "-").substr(0, 24).replace(/[\-]+$/g, "")); if (!b || 5 > b.length) b = "chart"; return b
                }, exportChart: function (a, b) {
                    b = this.getSVGForExport(a, b); a = p(this.options.exporting, a); h.post(a.url, {
                        filename: a.filename ? a.filename.replace(/\//g, "-") : this.getFilename(), type: a.type,
                        width: a.width || 0, scale: a.scale, svg: b
                    }, a.formAttributes)
                }, moveContainers: function (a) { (this.fixedDiv ? [this.fixedDiv, this.scrollingContainer] : [this.container]).forEach(function (b) { a.appendChild(b) }) }, beforePrint: function () {
                    var a = z.body, b = this.options.exporting.printMaxWidth, f = { childNodes: a.childNodes, origDisplay: [], resetParams: void 0 }; this.isPrinting = !0; this.pointer.reset(null, 0); D(this, "beforePrint"); b && this.chartWidth > b && (f.resetParams = [this.options.chart.width, void 0, !1], this.setSize(b, void 0, !1));
                    [].forEach.call(f.childNodes, function (a, b) { 1 === a.nodeType && (f.origDisplay[b] = a.style.display, a.style.display = "none") }); this.moveContainers(a); this.printReverseInfo = f
                }, afterPrint: function () {
                    if (this.printReverseInfo) {
                        var a = this.printReverseInfo.childNodes, b = this.printReverseInfo.origDisplay, f = this.printReverseInfo.resetParams; this.moveContainers(this.renderTo);[].forEach.call(a, function (a, f) { 1 === a.nodeType && (a.style.display = b[f] || "") }); this.isPrinting = !1; f && this.setSize.apply(this, f); delete this.printReverseInfo;
                        delete h.printingChart; D(this, "afterPrint")
                    }
                }, print: function () { var a = this; a.isPrinting || (h.printingChart = a, h.isSafari || a.beforePrint(), setTimeout(function () { B.focus(); B.print(); h.isSafari || setTimeout(function () { a.afterPrint() }, 1E3) }, 1)) }, contextMenu: function (a, b, f, d, c, h, k) {
                    var g = this, u = g.options.navigation, m = g.chartWidth, C = g.chartHeight, v = "cache-" + a, l = g[v], w = Math.max(c, h); if (!l) {
                    g.exportContextMenu = g[v] = l = y("div", { className: a }, { position: "absolute", zIndex: 1E3, padding: w + "px", pointerEvents: "auto" }, g.fixedDiv ||
                        g.container); var p = y("ul", { className: "highcharts-menu" }, { listStyle: "none", margin: 0, padding: 0 }, l); g.styledMode || r(p, A({ MozBoxShadow: "3px 3px 10px #888", WebkitBoxShadow: "3px 3px 10px #888", boxShadow: "3px 3px 10px #888" }, u.menuStyle)); l.hideMenu = function () { r(l, { display: "none" }); k && k.setState(0); g.openMenu = !1; r(g.renderTo, { overflow: "hidden" }); r(g.container, { overflow: "hidden" }); e.clearTimeout(l.hideTimer); D(g, "exportMenuHidden") }; g.exportEvents.push(x(l, "mouseleave", function () {
                        l.hideTimer = B.setTimeout(l.hideMenu,
                            500)
                        }), x(l, "mouseenter", function () { e.clearTimeout(l.hideTimer) }), x(z, "mouseup", function (b) { g.pointer.inClass(b.target, a) || l.hideMenu() }), x(l, "click", function () { g.openMenu && l.hideMenu() })); b.forEach(function (a) {
                        "string" === typeof a && (a = g.options.exporting.menuItemDefinitions[a]); if (I(a, !0)) {
                            var b = void 0; a.separator ? b = y("hr", null, null, p) : ("viewData" === a.textKey && g.isDataTableVisible && (a.textKey = "hideData"), b = y("li", {
                                className: "highcharts-menu-item", onclick: function (b) {
                                    b && b.stopPropagation(); l.hideMenu();
                                    a.onclick && a.onclick.apply(g, arguments)
                                }
                            }, null, p), b.appendChild(z.createTextNode(a.text || g.options.lang[a.textKey])), g.styledMode || (b.onmouseover = function () { r(this, u.menuItemHoverStyle) }, b.onmouseout = function () { r(this, u.menuItemStyle) }, r(b, A({ cursor: "pointer" }, u.menuItemStyle)))); g.exportDivElements.push(b)
                        }
                        }); g.exportDivElements.push(p, l); g.exportMenuWidth = l.offsetWidth; g.exportMenuHeight = l.offsetHeight
                    } b = { display: "block" }; f + g.exportMenuWidth > m ? b.right = m - f - c - w + "px" : b.left = f - w + "px"; d + h + g.exportMenuHeight >
                        C && "top" !== k.alignOptions.verticalAlign ? b.bottom = C - d - w + "px" : b.top = d + h - w + "px"; r(l, b); r(g.renderTo, { overflow: "" }); r(g.container, { overflow: "" }); g.openMenu = !0; D(g, "exportMenuShown")
                }, addButton: function (a) {
                    var b = this, f = b.renderer, d = p(b.options.navigation.buttonOptions, a), c = d.onclick, e = d.menuItems, h = d.symbolSize || 12; b.btnCount || (b.btnCount = 0); b.exportDivElements || (b.exportDivElements = [], b.exportSVGElements = []); if (!1 !== d.enabled && d.theme) {
                        var g = d.theme, k = g.states, m = k && k.hover; k = k && k.select; var C; b.styledMode ||
                            (g.fill = t(g.fill, n.backgroundColor), g.stroke = t(g.stroke, "none")); delete g.states; c ? C = function (a) { a && a.stopPropagation(); c.call(b, a) } : e && (C = function (a) { a && a.stopPropagation(); b.contextMenu(v.menuClassName, e, v.translateX, v.translateY, v.width, v.height, v); v.setState(2) }); d.text && d.symbol ? g.paddingLeft = t(g.paddingLeft, 30) : d.text || A(g, { width: d.width, height: d.height, padding: 0 }); b.styledMode || (g["stroke-linecap"] = "round", g.fill = t(g.fill, n.backgroundColor), g.stroke = t(g.stroke, "none")); var v = f.button(d.text,
                                0, 0, C, g, m, k).addClass(a.className).attr({ title: t(b.options.lang[d._titleKey || d.titleKey], "") }); v.menuClassName = a.menuClassName || "highcharts-menu-" + b.btnCount++; if (d.symbol) { var l = f.symbol(d.symbol, d.symbolX - h / 2, d.symbolY - h / 2, h, h, { width: h, height: h }).addClass("highcharts-button-symbol").attr({ zIndex: 1 }).add(v); b.styledMode || l.attr({ stroke: d.symbolStroke, fill: d.symbolFill, "stroke-width": d.symbolStrokeWidth || 1 }) } v.add(b.exportingGroup).align(A(d, { width: v.width, x: t(d.x, b.buttonOffset) }), !0, "spacingBox");
                        b.buttonOffset += (v.width + d.buttonSpacing) * ("right" === d.align ? -1 : 1); b.exportSVGElements.push(v, l)
                    }
                }, destroyExport: function (a) {
                    var b = a ? a.target : this; a = b.exportSVGElements; var f = b.exportDivElements, d = b.exportEvents, c; a && (a.forEach(function (a, d) { a && (a.onclick = a.ontouchstart = null, c = "cache-" + a.menuClassName, b[c] && delete b[c], b.exportSVGElements[d] = a.destroy()) }), a.length = 0); b.exportingGroup && (b.exportingGroup.destroy(), delete b.exportingGroup); f && (f.forEach(function (a, d) {
                        e.clearTimeout(a.hideTimer); J(a,
                            "mouseleave"); b.exportDivElements[d] = a.onmouseout = a.onmouseover = a.ontouchstart = a.onclick = null; E(a)
                    }), f.length = 0); d && (d.forEach(function (a) { a() }), d.length = 0)
                }
            }); q.prototype.inlineToAttributes = "fill stroke strokeLinecap strokeLinejoin strokeWidth textAnchor x y".split(" "); q.prototype.inlineBlacklist = [/-/, /^(clipPath|cssText|d|height|width)$/, /^font$/, /[lL]ogical(Width|Height)$/, /perspective/, /TapHighlightColor/, /^transition/, /^length$/]; q.prototype.unstyledElements = ["clipPath", "defs", "desc"]; c.prototype.inlineStyles =
                function () {
                    function a(a) { return a.replace(/([A-Z])/g, function (a, b) { return "-" + b.toLowerCase() }) } function b(c) {
                        function f(b, f) { w = r = !1; if (k) { for (t = k.length; t-- && !r;)r = k[t].test(f); w = !r } "transform" === f && "none" === b && (w = !0); for (t = e.length; t-- && !w;)w = e[t].test(f) || "function" === typeof b; w || z[f] === b && "svg" !== c.nodeName || g[c.nodeName][f] === b || (d && -1 === d.indexOf(f) ? l += a(f) + ":" + b + ";" : b && c.setAttribute(a(f), b)) } var l = "", w, r, t; if (1 === c.nodeType && -1 === m.indexOf(c.nodeName)) {
                            var u = B.getComputedStyle(c, null); var z =
                                "svg" === c.nodeName ? {} : B.getComputedStyle(c.parentNode, null); if (!g[c.nodeName]) { n = q.getElementsByTagName("svg")[0]; var x = q.createElementNS(c.namespaceURI, c.nodeName); n.appendChild(x); g[c.nodeName] = p(B.getComputedStyle(x, null)); "text" === c.nodeName && delete g.text.fill; n.removeChild(x) } if (h.isFirefox || h.isMS) for (var y in u) f(u[y], y); else F(u, f); l && (u = c.getAttribute("style"), c.setAttribute("style", (u ? u + ";" : "") + l)); "svg" === c.nodeName && c.setAttribute("stroke-width", "1px"); "text" !== c.nodeName && [].forEach.call(c.children ||
                                    c.childNodes, b)
                        }
                    } var c = this.renderer, d = c.inlineToAttributes, e = c.inlineBlacklist, k = c.inlineWhitelist, m = c.unstyledElements, g = {}, n; c = z.createElement("iframe"); r(c, { width: "1px", height: "1px", visibility: "hidden" }); z.body.appendChild(c); var q = c.contentWindow.document; q.open(); q.write('<svg xmlns="http://www.w3.org/2000/svg"></svg>'); q.close(); b(this.container.querySelector("svg")); n.parentNode.removeChild(n); c.parentNode.removeChild(c)
                }; h.Renderer.prototype.symbols.menu = function (a, b, c, d) {
                    return [["M", a, b +
                        2.5], ["L", a + c, b + 2.5], ["M", a, b + d / 2 + .5], ["L", a + c, b + d / 2 + .5], ["M", a, b + d - 1.5], ["L", a + c, b + d - 1.5]]
                }; h.Renderer.prototype.symbols.menuball = function (a, b, c, d) { a = []; d = d / 3 - 2; return a = a.concat(this.circle(c - d, b, d, d), this.circle(c - d, b + d + 4, d, d), this.circle(c - d, b + 2 * (d + 4), d, d)) }; c.prototype.renderExporting = function () {
                    var a = this, b = a.options.exporting, c = b.buttons, d = a.isDirtyExporting || !a.exportSVGElements; a.buttonOffset = 0; a.isDirtyExporting && a.destroyExport(); d && !1 !== b.enabled && (a.exportEvents = [], a.exportingGroup = a.exportingGroup ||
                        a.renderer.g("exporting-group").attr({ zIndex: 3 }).add(), F(c, function (b) { a.addButton(b) }), a.isDirtyExporting = !1)
                }; x(c, "init", function () { var a = this; a.exporting = { update: function (b, c) { a.isDirtyExporting = !0; p(!0, a.options.exporting, b); t(c, !0) && a.redraw() } }; m.addUpdate(function (b, c) { a.isDirtyExporting = !0; p(!0, a.options.navigation, b); t(c, !0) && a.redraw() }, a) }); c.prototype.callbacks.push(function (a) { a.renderExporting(); x(a, "redraw", a.renderExporting); x(a, "destroy", a.destroyExport) })
        }); q(c, "masters/modules/exporting.src.js",
            [], function () { })
});
//# sourceMappingURL=exporting.js.map
/*
 Highcharts JS v9.1.0 (2021-05-03)

 Client side exporting module

 (c) 2015-2021 Torstein Honsi / Oystein Moseng

 License: www.highcharts.com/license
*/
(function (a) { "object" === typeof module && module.exports ? (a["default"] = a, module.exports = a) : "function" === typeof define && define.amd ? define("highcharts/modules/offline-exporting", ["highcharts", "highcharts/modules/exporting"], function (d) { a(d); a.Highcharts = d; return a }) : a("undefined" !== typeof Highcharts ? Highcharts : void 0) })(function (a) {
    function d(a, b, D, d) { a.hasOwnProperty(b) || (a[b] = d.apply(null, D)) } a = a ? a._modules : {}; d(a, "Extensions/DownloadURL.js", [a["Core/Globals.js"]], function (a) {
        var b = a.win, d = b.document,
        z = b.URL || b.webkitURL || b, l = a.dataURLtoBlob = function (a) { if ((a = a.replace(/filename=.*;/, "").match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/)) && 3 < a.length && b.atob && b.ArrayBuffer && b.Uint8Array && b.Blob && z.createObjectURL) { var A = b.atob(a[3]), d = new b.ArrayBuffer(A.length); d = new b.Uint8Array(d); for (var k = 0; k < d.length; ++k)d[k] = A.charCodeAt(k); a = new b.Blob([d], { type: a[1] }); return z.createObjectURL(a) } }; a = a.downloadURL = function (a, q) {
            var w = b.navigator, k = d.createElement("a"); if ("string" === typeof a || a instanceof
                String || !w.msSaveOrOpenBlob) { a = "" + a; if (/Edge\/\d+/.test(w.userAgent) || 2E6 < a.length) if (a = l(a) || "", !a) throw Error("Failed to convert to blob"); if ("undefined" !== typeof k.download) k.href = a, k.download = q, d.body.appendChild(k), k.click(), d.body.removeChild(k); else try { var n = b.open(a, "chart"); if ("undefined" === typeof n || null === n) throw Error("Failed to open window"); } catch (h) { b.location.href = a } } else w.msSaveOrOpenBlob(a, q)
        }; return { dataURLtoBlob: l, downloadURL: a }
    }); d(a, "Extensions/OfflineExporting.js", [a["Core/Chart/Chart.js"],
    a["Core/Globals.js"], a["Core/Options.js"], a["Core/Renderer/SVG/SVGRenderer.js"], a["Core/Utilities.js"], a["Extensions/DownloadURL.js"]], function (a, b, d, z, l, A) {
        function q(a, b) { var f = y.getElementsByTagName("head")[0], c = y.createElement("script"); c.type = "text/javascript"; c.src = a; c.onload = b; c.onerror = function () { E("Error loading script " + a) }; f.appendChild(c) } function w(a) {
            var e = h.navigator.userAgent; e = -1 < e.indexOf("WebKit") && 0 > e.indexOf("Chrome"); try {
                if (!e && !b.isFirefox) return F.createObjectURL(new h.Blob([a],
                    { type: "image/svg+xml;charset-utf-16" }))
            } catch (f) { } return "data:image/svg+xml;charset=UTF-8," + encodeURIComponent(a)
        } function k(a, b, f, c, d, u, k, m, r) {
            var g = new h.Image, e = function () { setTimeout(function () { var e = y.createElement("canvas"), u = e.getContext && e.getContext("2d"); try { if (u) { e.height = g.height * c; e.width = g.width * c; u.drawImage(g, 0, 0, e.width, e.height); try { var x = e.toDataURL(b); d(x, b, f, c) } catch (H) { p(a, b, f, c) } } else k(a, b, f, c) } finally { r && r(a, b, f, c) } }, K) }, G = function () { m(a, b, f, c); r && r(a, b, f, c) }; var p = function () {
                g =
                new h.Image; p = u; g.crossOrigin = "Anonymous"; g.onload = e; g.onerror = G; g.src = a
            }; g.onload = e; g.onerror = G; g.src = a
        } function n(a, b, f, c) {
            function d(a, b) {
                var c = a.width.baseVal.value + 2 * b; b = a.height.baseVal.value + 2 * b; c = new h.jsPDF(b > c ? "p" : "l", "pt", [c, b]);[].forEach.call(a.querySelectorAll('*[visibility="hidden"]'), function (a) { a.parentNode.removeChild(a) }); b = a.querySelectorAll("linearGradient"); for (var f = 0; f < b.length; f++)for (var e = b[f].querySelectorAll("stop"), d = 0; d < e.length && "0" === e[d].getAttribute("offset") && "0" ===
                    e[d + 1].getAttribute("offset");)e[d].remove(), d++;[].forEach.call(a.querySelectorAll("tspan"), function (a) { "\u200b" === a.textContent && (a.textContent = " ", a.setAttribute("dx", -5)) }); h.svg2pdf(a, c, { removeInvalid: !0 }); return c.output("datauristring")
            } function e() {
            r.innerHTML = a; var b = r.getElementsByTagName("text"), e;[].forEach.call(b, function (a) {
                ["font-family", "font-size"].forEach(function (b) { for (var c = a; c && c !== r;) { if (c.style[b]) { a.style[b] = c.style[b]; break } c = c.parentNode } }); a.style["font-family"] = a.style["font-family"] &&
                    a.style["font-family"].split(" ").splice(-1); e = a.getElementsByTagName("title");[].forEach.call(e, function (b) { a.removeChild(b) })
            }); b = d(r.firstChild, 0); try { C(b, B), c && c() } catch (L) { f(L) }
            } var l = !0, m = b.libURL || I().exporting.libURL, r = y.createElement("div"), g = b.type || "image/png", B = (b.filename || "chart") + "." + ("image/svg+xml" === g ? "svg" : g.split("/")[1]), n = b.scale || 1; m = "/" !== m.slice(-1) ? m + "/" : m; if ("image/svg+xml" === g) try {
                if ("undefined" !== typeof h.navigator.msSaveOrOpenBlob) {
                    var p = new MSBlobBuilder; p.append(a);
                    var t = p.getBlob("image/svg+xml")
                } else t = w(a); C(t, B); c && c()
            } catch (x) { f(x) } else if ("application/pdf" === g) h.jsPDF && h.svg2pdf ? e() : (l = !0, q(m + "jspdf.js", function () { q(m + "svg2pdf.js", function () { e() }) })); else {
                t = w(a); var v = function () { try { F.revokeObjectURL(t) } catch (x) { } }; k(t, g, {}, n, function (a) { try { C(a, B), c && c() } catch (H) { f(H) } }, function () {
                    var b = y.createElement("canvas"), e = b.getContext("2d"), d = a.match(/^<svg[^>]*width\s*=\s*"?(\d+)"?[^>]*>/)[1] * n, u = a.match(/^<svg[^>]*height\s*=\s*"?(\d+)"?[^>]*>/)[1] * n, k = function () {
                        e.drawSvg(a,
                            0, 0, d, u); try { C(h.navigator.msSaveOrOpenBlob ? b.msToBlob() : b.toDataURL(g), B), c && c() } catch (M) { f(M) } finally { v() }
                    }; b.width = d; b.height = u; h.canvg ? k() : (l = !0, q(m + "rgbcolor.js", function () { q(m + "canvg.js", function () { k() }) }))
                }, f, f, function () { l && v() })
            }
        } var h = b.win, y = b.doc, I = d.getOptions, D = l.addEvent, E = l.error, N = l.extend, O = l.fireEvent, J = l.merge, C = A.downloadURL, F = h.URL || h.webkitURL || h, K = b.isMS ? 150 : 0; b.CanVGRenderer = {}; a.prototype.getSVGForLocalExport = function (a, b, f, c) {
            var d = this, e = 0, h, m, l, g, n = function () {
            e === p.length &&
                c(d.sanitizeSVG(h.innerHTML, m))
            }, q = function (a, b, c) { ++e; c.imageElement.setAttributeNS("http://www.w3.org/1999/xlink", "href", a); n() }; d.unbindGetSVG = D(d, "getSVG", function (a) { m = a.chartCopy.options; h = a.chartCopy.container.cloneNode(!0) }); d.getSVGForExport(a, b); var p = h.getElementsByTagName("image"); try {
                if (!p.length) { c(d.sanitizeSVG(h.innerHTML, m)); return } var t = 0; for (l = p.length; t < l; ++t) {
                    var v = p[t]; (g = v.getAttributeNS("http://www.w3.org/1999/xlink", "href")) ? k(g, "image/png", { imageElement: v }, a.scale, q, f, f,
                        f) : (++e, v.parentNode.removeChild(v), n())
                }
            } catch (x) { f(x) } d.unbindGetSVG()
        }; a.prototype.exportChartLocal = function (a, d) {
            var f = this, c = J(f.options.exporting, a), e = function (a) { !1 === c.fallbackToExportServer ? c.error ? c.error(c, a) : E(28, !0) : f.exportChart(c) }; a = function () { return [].some.call(f.container.getElementsByTagName("image"), function (a) { a = a.getAttribute("href"); return "" !== a && 0 !== a.indexOf("data:") }) }; b.isMS && f.styledMode && (z.prototype.inlineWhitelist = [/^blockSize/, /^border/, /^caretColor/, /^color/, /^columnRule/,
                /^columnRuleColor/, /^cssFloat/, /^cursor/, /^fill$/, /^fillOpacity/, /^font/, /^inlineSize/, /^length/, /^lineHeight/, /^opacity/, /^outline/, /^parentRule/, /^rx$/, /^ry$/, /^stroke/, /^textAlign/, /^textAnchor/, /^textDecoration/, /^transform/, /^vectorEffect/, /^visibility/, /^x$/, /^y$/]); b.isMS && ("application/pdf" === c.type || f.container.getElementsByTagName("image").length && "image/svg+xml" !== c.type) || "application/pdf" === c.type && a() ? e("Image type not supported for this chart/browser.") : f.getSVGForLocalExport(c, d ||
                    {}, e, function (a) { -1 < a.indexOf("<foreignObject") && "image/svg+xml" !== c.type ? e("Image type not supportedfor charts with embedded HTML") : n(a, N({ filename: f.getFilename() }, c), e, function () { return O(f, "exportChartLocalSuccess") }) })
        }; J(!0, I().exporting, {
            libURL: "https://code.highcharts.com/9.1.0/lib/", menuItemDefinitions: {
                downloadPNG: { textKey: "downloadPNG", onclick: function () { this.exportChartLocal() } }, downloadJPEG: { textKey: "downloadJPEG", onclick: function () { this.exportChartLocal({ type: "image/jpeg" }) } }, downloadSVG: {
                    textKey: "downloadSVG",
                    onclick: function () { this.exportChartLocal({ type: "image/svg+xml" }) }
                }, downloadPDF: { textKey: "downloadPDF", onclick: function () { this.exportChartLocal({ type: "application/pdf" }) } }
            }
        }); b.downloadSVGLocal = n
    }); d(a, "masters/modules/offline-exporting.src.js", [], function () { })
});
//# sourceMappingURL=offline-exporting.js.map
Highcharts.maps["countries/us/us-all"] = {
    "title": "United States of America", "version": "1.1.3", "type": "FeatureCollection", "copyright": "Copyright (c) 2020 Highsoft AS, Based on data from Natural Earth", "copyrightShort": "Natural Earth", "copyrightUrl": "http://www.naturalearthdata.com", "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG:102004" } }, "hc-transform": { "default": { "crs": "+proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs", "scale": 0.000151481324748, "jsonres": 15.5, "jsonmarginX": -999, "jsonmarginY": 9851.0, "xoffset": -2361356.09818, "yoffset": 1398996.77886 }, "us-all-hawaii": { "xpan": 190, "ypan": 417, "hitZone": { "type": "Polygon", "coordinates": [[[1747, 3920], [3651, 2950], [3651, -999], [1747, -999], [1747, 3920]]] }, "crs": "+proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs", "scale": 0.000123090941806, "jsonres": 15.5, "jsonmarginX": -999, "jsonmarginY": 9851.0, "xoffset": -338610.47557, "yoffset": 1022754.31736 }, "us-all-alaska": { "rotation": -0.0174532925199, "xpan": 5, "ypan": 357, "hitZone": { "type": "Polygon", "coordinates": [[[-999, 5188], [-707, 5188], [1747, 3920], [1747, -999], [-999, -999], [-999, 5188]]] }, "crs": "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs", "scale": 5.84397059179e-05, "jsonres": 15.5, "jsonmarginX": -999, "jsonmarginY": 9851.0, "xoffset": -1566154.00853, "yoffset": 1992671.14918 } },

    "features": [{ "type": "Feature", "id": "US.MA", "properties": { "hc-group": "admin1", "hc-middle-x": 0.36, "hc-middle-y": 0.47, "hc-key": "us-ma", "hc-a2": "MA", "labelrank": "0", "hasc": "US.MA", "woe-id": "2347580", "state-fips": "25", "fips": "US25", "postal-code": "MA", "name": "Massachusetts", "country": "United States of America", "region": "Northeast", "longitude": "-71.99930000000001", "woe-name": "Massachusetts", "latitude": "42.3739", "woe-label": "Massachusetts, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[9430, 7889], [9476, 7878], [9436, 7864], [9417, 7844], [9430, 7889]]], [[[9314, 7915], [9312, 7927], [9304, 7921], [9278, 7938], [9254, 7990], [9177, 7968], [8997, 7925], [8860, 7896], [8853, 7901], [8856, 8080], [8922, 8096], [9005, 8115], [9005, 8115], [9222, 8166], [9242, 8201], [9300, 8236], [9318, 8197], [9357, 8186], [9312, 8147], [9299, 8081], [9324, 8091], [9365, 8074], [9428, 7985], [9483, 7974], [9525, 8007], [9501, 8067], [9535, 8028], [9549, 7982], [9504, 7965], [9420, 7906], [9411, 7955], [9371, 7921], [9373, 7898], [9339, 7878], [9327, 7915], [9314, 7915]]]] } }, { "type": "Feature", "id": "US.WA", "properties": { "hc-group": "admin1", "hc-middle-x": 0.56, "hc-middle-y": 0.52, "hc-key": "us-wa", "hc-a2": "WA", "labelrank": "0", "hasc": "US.WA", "woe-id": "2347606", "state-fips": "53", "fips": "US53", "postal-code": "WA", "name": "Washington", "country": "United States of America", "region": "West", "longitude": "-120.361", "woe-name": "Washington", "latitude": "47.4865", "woe-label": "Washington, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[-77, 9797], [-56, 9768], [-91, 9757], [-86, 9712], [-136, 9751], [-111, 9756], [-77, 9797]]], [[[-52, 9689], [-85, 9658], [-66, 9645], [-43, 9568], [-77, 9588], [-74, 9635], [-89, 9664], [-52, 9690], [-60, 9697], [-61, 9737], [-31, 9701], [-12, 9731], [-9, 9774], [-33, 9788], [-46, 9839], [-32, 9851], [926, 9593], [767, 8925], [779, 8870], [774, 8822], [398, 8914], [378, 8905], [289, 8922], [163, 8905], [94, 8923], [38, 8914], [-10, 8925], [-22, 8950], [-113, 8979], [-207, 8965], [-283, 9014], [-271, 9096], [-280, 9134], [-321, 9167], [-357, 9171], [-365, 9207], [-400, 9226], [-436, 9219], [-460, 9259], [-436, 9333], [-441, 9279], [-416, 9297], [-401, 9347], [-434, 9357], [-429, 9395], [-369, 9396], [-424, 9436], [-424, 9523], [-410, 9624], [-433, 9678], [-428, 9749], [-385, 9790], [-313, 9713], [-183, 9655], [-161, 9666], [-146, 9623], [-100, 9637], [-95, 9567], [-135, 9518], [-77, 9566], [-112, 9491], [-89, 9426], [-154, 9433], [-175, 9394], [-167, 9449], [-222, 9394], [-157, 9376], [-124, 9418], [-82, 9426], [-82, 9476], [-66, 9527], [-18, 9570], [-37, 9644], [-24, 9661], [-52, 9689]]]] } }, { "type": "Feature", "id": "US.CA", "properties": { "hc-group": "admin1", "hc-middle-x": 0.51, "hc-middle-y": 0.67, "hc-key": "us-ca", "hc-a2": "CA", "labelrank": "0", "hasc": "US.CA", "woe-id": "2347563", "state-fips": "6", "fips": "US06", "postal-code": "CA", "name": "California", "country": "United States of America", "region": "West", "longitude": "-119.591", "woe-name": "California", "latitude": "36.7496", "woe-label": "California, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[-833, 8186], [-50, 7955], [-253, 7203], [32, 6779], [261, 6430], [593, 5936], [620, 5788], [660, 5730], [598, 5702], [559, 5661], [555, 5605], [510, 5537], [489, 5536], [476, 5452], [519, 5416], [492, 5355], [451, 5357], [-76, 5426], [-69, 5467], [-95, 5476], [-84, 5583], [-110, 5649], [-224, 5792], [-276, 5799], [-265, 5822], [-284, 5881], [-342, 5885], [-417, 5946], [-422, 5975], [-484, 6035], [-539, 6046], [-588, 6077], [-659, 6091], [-686, 6135], [-647, 6273], [-691, 6316], [-672, 6333], [-720, 6428], [-742, 6442], [-793, 6601], [-820, 6637], [-816, 6709], [-775, 6726], [-761, 6756], [-778, 6807], [-821, 6819], [-855, 6888], [-842, 6929], [-853, 6979], [-833, 7041], [-810, 7042], [-816, 6985], [-764, 6931], [-772, 6991], [-797, 7030], [-787, 7089], [-738, 7083], [-782, 7126], [-806, 7122], [-833, 7050], [-892, 7126], [-903, 7243], [-983, 7395], [-967, 7420], [-969, 7507], [-943, 7553], [-936, 7629], [-964, 7712], [-999, 7766], [-993, 7813], [-890, 7943], [-849, 8038], [-844, 8118], [-860, 8134], [-833, 8186]]] } }, { "type": "Feature", "id": "US.OR", "properties": { "hc-group": "admin1", "hc-middle-x": 0.47, "hc-middle-y": 0.52, "hc-key": "us-or", "hc-a2": "OR", "labelrank": "0", "hasc": "US.OR", "woe-id": "2347596", "state-fips": "41", "fips": "US41", "postal-code": "OR", "name": "Oregon", "country": "United States of America", "region": "West", "longitude": "-120.386", "woe-name": "Oregon", "latitude": "43.8333", "woe-label": "Oregon, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[-50, 7955], [-833, 8186], [-851, 8223], [-847, 8281], [-817, 8362], [-827, 8415], [-793, 8455], [-756, 8527], [-714, 8570], [-672, 8648], [-594, 8829], [-582, 8877], [-494, 9051], [-493, 9108], [-468, 9158], [-460, 9216], [-396, 9192], [-367, 9202], [-359, 9169], [-321, 9167], [-280, 9134], [-271, 9096], [-283, 9014], [-207, 8965], [-113, 8979], [-22, 8950], [-10, 8925], [38, 8914], [94, 8923], [163, 8905], [289, 8922], [378, 8905], [398, 8914], [774, 8822], [785, 8775], [821, 8744], [823, 8698], [776, 8646], [718, 8545], [624, 8450], [615, 8403], [662, 8361], [616, 8265], [510, 7813], [-50, 7955]]] } }, { "type": "Feature", "id": "US.WI", "properties": { "hc-group": "admin1", "hc-middle-x": 0.41, "hc-middle-y": 0.38, "hc-key": "us-wi", "hc-a2": "WI", "labelrank": "0", "hasc": "US.WI", "woe-id": "2347608", "state-fips": "55", "fips": "US55", "postal-code": "WI", "name": "Wisconsin", "country": "United States of America", "region": "Midwest", "longitude": "-89.5831", "woe-name": "Wisconsin", "latitude": "44.3709", "woe-label": "Wisconsin, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[6206, 8297], [6197, 8237], [6159, 8156], [6136, 8180], [6161, 8249], [6206, 8297]]], [[[5575, 7508], [5561, 7544], [5494, 7563], [5465, 7670], [5479, 7702], [5445, 7758], [5431, 7866], [5405, 7892], [5360, 7903], [5273, 7994], [5217, 8029], [5181, 8035], [5136, 8072], [5146, 8117], [5144, 8214], [5158, 8253], [5117, 8285], [5116, 8322], [5147, 8375], [5220, 8422], [5214, 8573], [5245, 8603], [5303, 8589], [5410, 8635], [5449, 8660], [5489, 8656], [5481, 8617], [5508, 8583], [5554, 8572], [5588, 8553], [5611, 8510], [5795, 8473], [5849, 8447], [5968, 8437], [5993, 8394], [6045, 8372], [6042, 8286], [6080, 8287], [6071, 8242], [6096, 8224], [6058, 8180], [6028, 8078], [6049, 8076], [6099, 8156], [6129, 8170], [6153, 8151], [6124, 8019], [6136, 7996], [6101, 7916], [6110, 7860], [6082, 7742], [6089, 7679], [6116, 7626], [6119, 7543], [5780, 7519], [5606, 7509], [5575, 7508]]]] } }, { "type": "Feature", "id": "US.ME", "properties": { "hc-group": "admin1", "hc-middle-x": 0.43, "hc-middle-y": 0.40, "hc-key": "us-me", "hc-a2": "ME", "labelrank": "0", "hasc": "US.ME", "woe-id": "2347578", "state-fips": "23", "fips": "US23", "postal-code": "ME", "name": "Maine", "country": "United States of America", "region": "Northeast", "longitude": "-69.1973", "woe-name": "Maine", "latitude": "45.148", "woe-label": "Maine, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[9623, 8727], [9643, 8763], [9665, 8747], [9641, 8690], [9623, 8727]]], [[[9225, 8399], [9079, 8830], [9115, 8824], [9130, 8917], [9168, 8971], [9177, 9035], [9160, 9062], [9160, 9140], [9176, 9161], [9166, 9236], [9238, 9459], [9272, 9467], [9292, 9423], [9319, 9415], [9428, 9491], [9519, 9435], [9630, 9097], [9697, 9099], [9717, 9017], [9747, 8995], [9778, 9009], [9851, 8939], [9818, 8875], [9789, 8883], [9784, 8851], [9706, 8811], [9712, 8773], [9690, 8747], [9669, 8782], [9611, 8766], [9590, 8707], [9615, 8647], [9554, 8716], [9552, 8761], [9517, 8719], [9529, 8622], [9505, 8581], [9483, 8586], [9467, 8544], [9433, 8531], [9420, 8493], [9387, 8524], [9346, 8471], [9362, 8439], [9314, 8347], [9298, 8291], [9235, 8354], [9225, 8399]]]] } }, { "type": "Feature", "id": "US.MI", "properties": { "hc-group": "admin1", "hc-middle-x": 0.71, "hc-middle-y": 0.67, "hc-key": "us-mi", "hc-a2": "MI", "labelrank": "0", "hasc": "US.MI", "woe-id": "2347581", "state-fips": "26", "fips": "US26", "postal-code": "MI", "name": "Michigan", "country": "United States of America", "region": "Midwest", "longitude": "-84.9479", "woe-name": "Michigan", "latitude": "43.4343", "woe-label": "Michigan, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[6802, 8561], [6808, 8523], [6764, 8521], [6774, 8565], [6802, 8561]]], [[[5863, 9010], [5834, 8966], [5759, 8913], [5758, 8947], [5863, 9010]]], [[[6976, 7443], [6815, 7415], [6718, 7400], [6716, 7416], [6323, 7372], [6364, 7423], [6399, 7509], [6417, 7630], [6409, 7695], [6330, 7861], [6345, 7903], [6322, 7979], [6361, 8059], [6352, 8141], [6381, 8159], [6381, 8204], [6423, 8217], [6453, 8283], [6469, 8252], [6460, 8196], [6479, 8180], [6501, 8221], [6497, 8298], [6533, 8342], [6567, 8348], [6542, 8410], [6593, 8461], [6646, 8436], [6627, 8469], [6669, 8467], [6654, 8434], [6698, 8433], [6726, 8400], [6837, 8377], [6863, 8359], [6884, 8307], [6860, 8285], [6902, 8213], [6903, 8115], [6872, 8094], [6868, 8040], [6821, 8014], [6824, 7934], [6868, 7920], [6900, 7950], [6937, 8030], [6993, 8059], [7042, 8027], [7097, 7866], [7128, 7802], [7124, 7704], [7066, 7697], [7061, 7631], [7021, 7590], [7008, 7500], [6976, 7443]]], [[[5874, 8741], [5900, 8700], [5901, 8651], [5938, 8693], [6017, 8689], [6049, 8673], [6107, 8596], [6174, 8609], [6192, 8589], [6244, 8596], [6318, 8663], [6430, 8674], [6485, 8705], [6529, 8713], [6518, 8645], [6560, 8631], [6591, 8646], [6609, 8627], [6633, 8653], [6688, 8665], [6692, 8589], [6745, 8536], [6723, 8521], [6631, 8516], [6606, 8530], [6598, 8476], [6541, 8514], [6480, 8529], [6444, 8521], [6426, 8490], [6320, 8470], [6302, 8429], [6244, 8388], [6264, 8448], [6227, 8437], [6192, 8395], [6185, 8444], [6096, 8224], [6071, 8242], [6080, 8287], [6042, 8286], [6045, 8372], [5993, 8394], [5968, 8437], [5849, 8447], [5795, 8473], [5611, 8510], [5588, 8553], [5554, 8572], [5623, 8604], [5661, 8642], [5731, 8656], [5776, 8696], [5805, 8702], [5860, 8764], [5868, 8750], [5893, 8802], [5958, 8837], [6017, 8829], [5931, 8757], [5903, 8703], [5900, 8738], [5874, 8741]]]] } }, { "type": "Feature", "id": "US.NV", "properties": { "hc-group": "admin1", "hc-middle-x": 0.46, "hc-middle-y": 0.38, "hc-key": "us-nv", "hc-a2": "NV", "labelrank": "0", "hasc": "US.NV", "woe-id": "2347587", "state-fips": "32", "fips": "US32", "postal-code": "NV", "name": "Nevada", "country": "United States of America", "region": "West", "longitude": "-117.02", "woe-name": "Nevada", "latitude": "39.4299", "woe-label": "Nevada, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[-50, 7955], [510, 7813], [897, 7727], [1073, 7690], [929, 6975], [818, 6420], [777, 6221], [752, 6180], [669, 6227], [631, 6217], [631, 6159], [611, 6068], [614, 5982], [593, 5936], [261, 6430], [32, 6779], [-253, 7203], [-50, 7955]]] } }, { "type": "Feature", "id": "US.NM", "properties": { "hc-group": "admin1", "hc-middle-x": 0.51, "hc-middle-y": 0.50, "hc-key": "us-nm", "hc-a2": "NM", "labelrank": "0", "hasc": "US.NM", "woe-id": "2347590", "state-fips": "35", "fips": "US35", "postal-code": "NM", "name": "New Mexico", "country": "United States of America", "region": "West", "longitude": "-106.024", "woe-name": "New Mexico", "latitude": "34.5002", "woe-label": "New Mexico, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[1841, 6242], [3091, 6104], [3083, 6007], [3081, 5975], [3072, 5970], [2976, 4810], [2181, 4887], [2208, 4823], [1830, 4873], [1815, 4756], [1630, 4782], [1736, 5514], [1841, 6242]]] } }, { "type": "Feature", "id": "US.CO", "properties": { "hc-group": "admin1", "hc-middle-x": 0.51, "hc-middle-y": 0.50, "hc-key": "us-co", "hc-a2": "CO", "labelrank": "0", "hasc": "US.CO", "woe-id": "2347564", "state-fips": "8", "fips": "US08", "postal-code": "CO", "name": "Colorado", "country": "United States of America", "region": "West", "longitude": "-105.543", "woe-name": "Colorado", "latitude": "38.9998", "woe-label": "Colorado, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[3091, 6104], [1841, 6242], [1966, 7108], [1990, 7269], [2964, 7155], [3357, 7124], [3339, 6866], [3329, 6696], [3290, 6089], [3091, 6104]]] } }, { "type": "Feature", "id": "US.WY", "properties": { "hc-group": "admin1", "hc-middle-x": 0.51, "hc-middle-y": 0.50, "hc-key": "us-wy", "hc-a2": "WY", "labelrank": "0", "hasc": "US.WY", "woe-id": "2347609", "state-fips": "56", "fips": "US56", "postal-code": "WY", "name": "Wyoming", "country": "United States of America", "region": "West", "longitude": "-107.552", "woe-name": "Wyoming", "latitude": "42.9999", "woe-label": "Wyoming, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[2964, 7155], [1990, 7269], [1600, 7329], [1643, 7585], [1677, 7785], [1750, 8226], [1772, 8355], [3056, 8191], [3019, 7770], [3010, 7672], [3002, 7575], [2964, 7155]]] } }, { "type": "Feature", "id": "US.KS", "properties": { "hc-group": "admin1", "hc-middle-x": 0.30, "hc-middle-y": 0.49, "hc-key": "us-ks", "hc-a2": "KS", "labelrank": "0", "hasc": "US.KS", "woe-id": "2347575", "state-fips": "20", "fips": "US20", "postal-code": "KS", "name": "Kansas", "country": "United States of America", "region": "Midwest", "longitude": "-98.3309", "woe-name": "Kansas", "latitude": "38.5", "woe-label": "Kansas, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[3339, 6866], [4682, 6826], [4769, 6780], [4726, 6705], [4767, 6667], [4781, 6624], [4824, 6600], [4833, 6050], [3290, 6089], [3329, 6696], [3339, 6866]]] } }, { "type": "Feature", "id": "US.NE", "properties": { "hc-group": "admin1", "hc-middle-x": 0.43, "hc-middle-y": 0.50, "hc-key": "us-ne", "hc-a2": "NE", "labelrank": "0", "hasc": "US.NE", "woe-id": "2347586", "state-fips": "31", "fips": "US31", "postal-code": "NE", "name": "Nebraska", "country": "United States of America", "region": "Midwest", "longitude": "-99.68550000000001", "woe-name": "Nebraska", "latitude": "41.5002", "woe-label": "Nebraska, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[4682, 6826], [3339, 6866], [3357, 7124], [2964, 7155], [3002, 7575], [3010, 7672], [4071, 7611], [4148, 7558], [4194, 7574], [4297, 7577], [4330, 7551], [4409, 7521], [4453, 7479], [4469, 7474], [4478, 7398], [4515, 7341], [4533, 7291], [4529, 7228], [4559, 7206], [4571, 7165], [4579, 7031], [4592, 6986], [4592, 6981], [4592, 6981], [4591, 6981], [4591, 6981], [4619, 6915], [4682, 6826]]] } }, { "type": "Feature", "id": "US.OK", "properties": { "hc-group": "admin1", "hc-middle-x": 0.78, "hc-middle-y": 0.52, "hc-key": "us-ok", "hc-a2": "OK", "labelrank": "0", "hasc": "US.OK", "woe-id": "2347595", "state-fips": "40", "fips": "US40", "postal-code": "OK", "name": "Oklahoma", "country": "United States of America", "region": "South", "longitude": "-97.1309", "woe-name": "Oklahoma", "latitude": "35.452", "woe-label": "Oklahoma, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[3290, 6089], [4833, 6050], [4833, 6017], [4835, 5920], [4877, 5632], [4875, 5180], [4790, 5207], [4714, 5260], [4685, 5235], [4632, 5257], [4595, 5233], [4559, 5242], [4474, 5191], [4405, 5248], [4360, 5237], [4347, 5258], [4312, 5234], [4304, 5199], [4283, 5247], [4248, 5227], [4181, 5268], [4121, 5246], [4093, 5310], [4007, 5296], [3908, 5334], [3856, 5341], [3842, 5388], [3753, 5388], [3686, 5437], [3707, 5936], [3081, 5975], [3083, 6007], [3091, 6104], [3290, 6089]]] } }, { "type": "Feature", "id": "US.MO", "properties": { "hc-group": "admin1", "hc-middle-x": 0.48, "hc-middle-y": 0.51, "hc-key": "us-mo", "hc-a2": "MO", "labelrank": "0", "hasc": "US.MO", "woe-id": "2347584", "state-fips": "29", "fips": "US29", "postal-code": "MO", "name": "Missouri", "country": "United States of America", "region": "Midwest", "longitude": "-92.446", "woe-name": "Missouri", "latitude": "38.5487", "woe-label": "Missouri, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[4835, 5920], [4833, 6017], [4833, 6050], [4824, 6600], [4781, 6624], [4767, 6667], [4726, 6705], [4769, 6780], [4682, 6826], [4619, 6915], [4591, 6981], [4591, 6981], [4592, 6981], [4846, 6977], [5120, 6985], [5389, 7006], [5449, 6947], [5449, 6947], [5449, 6947], [5436, 6893], [5454, 6813], [5475, 6774], [5540, 6711], [5588, 6679], [5616, 6596], [5642, 6567], [5672, 6592], [5735, 6561], [5692, 6420], [5752, 6350], [5792, 6336], [5873, 6276], [5898, 6211], [5886, 6165], [5918, 6121], [5975, 6097], [5976, 6033], [5956, 5988], [5932, 6005], [5921, 5968], [5911, 5955], [5907, 5967], [5890, 5980], [5893, 5966], [5901, 5936], [5869, 5898], [5888, 5872], [5868, 5834], [5731, 5821], [5790, 5904], [5767, 5957], [4835, 5920]]] } }, { "type": "Feature", "id": "US.IL", "properties": { "hc-group": "admin1", "hc-middle-x": 0.56, "hc-middle-y": 0.45, "hc-key": "us-il", "hc-a2": "IL", "labelrank": "0", "hasc": "US.IL", "woe-id": "2347572", "state-fips": "17", "fips": "US17", "postal-code": "IL", "name": "Illinois", "country": "United States of America", "region": "Midwest", "longitude": "-89.1991", "woe-name": "Illinois", "latitude": "39.946", "woe-label": "Illinois, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[6119, 7543], [6121, 7488], [6192, 7351], [6247, 6739], [6226, 6674], [6254, 6638], [6266, 6585], [6244, 6520], [6222, 6503], [6194, 6422], [6176, 6404], [6179, 6328], [6159, 6283], [6171, 6241], [6102, 6218], [6105, 6131], [6015, 6162], [5987, 6157], [5962, 6117], [5975, 6097], [5918, 6121], [5886, 6165], [5898, 6211], [5873, 6276], [5792, 6336], [5752, 6350], [5692, 6420], [5735, 6561], [5672, 6592], [5642, 6567], [5616, 6596], [5588, 6679], [5540, 6711], [5475, 6774], [5454, 6813], [5436, 6893], [5449, 6947], [5449, 6947], [5449, 6947], [5458, 7004], [5496, 7020], [5535, 7098], [5536, 7132], [5509, 7160], [5523, 7224], [5579, 7232], [5646, 7276], [5671, 7332], [5672, 7411], [5625, 7441], [5575, 7508], [5575, 7508], [5606, 7509], [5848, 7523], [6119, 7543]]] } }, { "type": "Feature", "id": "US.IN", "properties": { "hc-group": "admin1", "hc-middle-x": 0.49, "hc-middle-y": 0.43, "hc-key": "us-in", "hc-a2": "IN", "labelrank": "0", "hasc": "US.IN", "woe-id": "2347573", "state-fips": "18", "fips": "US18", "postal-code": "IN", "name": "Indiana", "country": "United States of America", "region": "Midwest", "longitude": "-86.1396", "woe-name": "Indiana", "latitude": "39.8874", "woe-label": "Indiana, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[6192, 7351], [6239, 7329], [6323, 7372], [6716, 7416], [6718, 7400], [6732, 7296], [6797, 6730], [6792, 6683], [6808, 6651], [6737, 6617], [6682, 6619], [6693, 6572], [6657, 6540], [6652, 6507], [6622, 6498], [6608, 6438], [6583, 6411], [6531, 6450], [6485, 6413], [6485, 6390], [6444, 6379], [6426, 6401], [6359, 6356], [6303, 6376], [6269, 6350], [6209, 6363], [6179, 6328], [6176, 6404], [6194, 6422], [6222, 6503], [6244, 6520], [6266, 6585], [6254, 6638], [6226, 6674], [6247, 6739], [6192, 7351]]] } }, { "type": "Feature", "id": "US.VT", "properties": { "hc-group": "admin1", "hc-middle-x": 0.42, "hc-middle-y": 0.43, "hc-key": "us-vt", "hc-a2": "VT", "labelrank": "0", "hasc": "US.VT", "woe-id": "2347604", "state-fips": "50", "fips": "US50", "postal-code": "VT", "name": "Vermont", "country": "United States of America", "region": "Northeast", "longitude": "-72.7317", "woe-name": "Vermont", "latitude": "44.0886", "woe-label": "Vermont, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[8922, 8096], [8856, 8080], [8807, 8284], [8772, 8287], [8772, 8328], [8740, 8402], [8748, 8453], [8739, 8514], [8720, 8537], [8695, 8646], [8811, 8677], [9024, 8736], [9020, 8661], [9045, 8629], [9033, 8585], [8978, 8526], [8986, 8490], [8981, 8392], [8964, 8320], [8979, 8261], [8979, 8148], [9005, 8115], [9005, 8115], [8922, 8096]]] } }, { "type": "Feature", "id": "US.AR", "properties": { "hc-group": "admin1", "hc-middle-x": 0.47, "hc-middle-y": 0.43, "hc-key": "us-ar", "hc-a2": "AR", "labelrank": "0", "hasc": "US.AR", "woe-id": "2347562", "state-fips": "5", "fips": "US05", "postal-code": "AR", "name": "Arkansas", "country": "United States of America", "region": "South", "longitude": "-92.14279999999999", "woe-name": "Arkansas", "latitude": "34.7563", "woe-label": "Arkansas, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[4975, 5016], [4971, 5157], [4910, 5157], [4875, 5180], [4877, 5632], [4835, 5920], [5767, 5957], [5790, 5904], [5731, 5821], [5868, 5834], [5871, 5791], [5827, 5763], [5835, 5714], [5798, 5670], [5802, 5602], [5762, 5567], [5770, 5547], [5730, 5520], [5706, 5470], [5709, 5414], [5635, 5340], [5647, 5309], [5609, 5297], [5620, 5250], [5583, 5215], [5607, 5162], [5598, 5120], [5618, 5077], [5605, 5041], [5563, 5038], [4975, 5016]]] } }, { "type": "Feature", "id": "US.TX", "properties": { "hc-group": "admin1", "hc-middle-x": 0.69, "hc-middle-y": 0.52, "hc-key": "us-tx", "hc-a2": "TX", "labelrank": "0", "hasc": "US.TX", "woe-id": "2347602", "state-fips": "48", "fips": "US48", "postal-code": "TX", "name": "Texas", "country": "United States of America", "region": "South", "longitude": "-98.7607", "woe-name": "Texas", "latitude": "31.131", "woe-label": "Texas, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[4875, 5180], [4910, 5157], [4971, 5157], [4975, 5016], [4980, 4752], [5033, 4679], [5031, 4646], [5105, 4506], [5093, 4447], [5059, 4380], [5065, 4253], [5047, 4228], [5018, 4172], [5032, 4146], [4989, 4147], [4854, 4084], [4875, 4116], [4831, 4102], [4842, 4162], [4778, 4141], [4769, 4106], [4839, 4052], [4789, 4023], [4801, 4063], [4739, 3976], [4638, 3901], [4557, 3881], [4544, 3857], [4451, 3804], [4448, 3787], [4381, 3749], [4308, 3672], [4340, 3735], [4307, 3756], [4261, 3721], [4306, 3712], [4263, 3655], [4221, 3658], [4249, 3617], [4213, 3527], [4195, 3545], [4141, 3510], [4206, 3511], [4178, 3442], [4232, 3206], [4272, 3164], [4203, 3135], [4114, 3192], [4013, 3198], [3979, 3230], [3915, 3245], [3878, 3279], [3810, 3292], [3795, 3375], [3727, 3467], [3715, 3534], [3721, 3603], [3677, 3628], [3595, 3762], [3548, 3801], [3525, 3881], [3477, 3970], [3469, 4021], [3393, 4097], [3411, 4119], [3365, 4132], [3310, 4204], [3150, 4220], [3103, 4248], [3082, 4218], [3018, 4214], [2959, 4096], [2967, 4083], [2896, 4024], [2861, 4031], [2754, 4113], [2695, 4134], [2651, 4187], [2595, 4230], [2567, 4305], [2573, 4370], [2512, 4503], [2437, 4557], [2309, 4714], [2275, 4731], [2239, 4806], [2208, 4823], [2181, 4887], [2976, 4810], [3072, 5970], [3081, 5975], [3707, 5936], [3686, 5437], [3753, 5388], [3842, 5388], [3856, 5341], [3908, 5334], [4007, 5296], [4093, 5310], [4121, 5246], [4181, 5268], [4248, 5227], [4283, 5247], [4304, 5199], [4312, 5234], [4347, 5258], [4360, 5237], [4405, 5248], [4474, 5191], [4559, 5242], [4595, 5233], [4632, 5257], [4685, 5235], [4714, 5260], [4790, 5207], [4875, 5180]]], [[[4269, 3610], [4220, 3493], [4219, 3420], [4245, 3297], [4214, 3394], [4222, 3530], [4269, 3610]]]] } }, { "type": "Feature", "id": "US.RI", "properties": { "hc-group": "admin1", "hc-middle-x": 0.55, "hc-middle-y": 0.78, "hc-key": "us-ri", "hc-a2": "RI", "labelrank": "0", "hasc": "US.RI", "woe-id": "2347598", "state-fips": "44", "fips": "US44", "postal-code": "RI", "name": "Rhode Island", "country": "United States of America", "region": "Northeast", "longitude": "-71.5082", "woe-name": "Rhode Island", "latitude": "41.6242", "woe-label": "Rhode Island, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[9339, 7878], [9325, 7871], [9314, 7915], [9327, 7915], [9339, 7878]]], [[[9177, 7968], [9254, 7990], [9278, 7938], [9304, 7921], [9320, 7866], [9285, 7851], [9279, 7822], [9216, 7790], [9212, 7845], [9177, 7968]]]] } }, { "type": "Feature", "id": "US.AL", "properties": { "hc-group": "admin1", "hc-middle-x": 0.47, "hc-middle-y": 0.42, "hc-key": "us-al", "hc-a2": "AL", "labelrank": "0", "hasc": "US.AL", "woe-id": "2347559", "state-fips": "1", "fips": "US01", "postal-code": "AL", "name": "Alabama", "country": "United States of America", "region": "South", "longitude": "-86.7184", "woe-name": "Alabama", "latitude": "32.8551", "woe-label": "Alabama, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[6487, 4443], [6440, 4378], [6291, 4361], [6336, 4375], [6317, 4398], [6267, 4399], [6216, 4788], [6236, 5574], [6215, 5600], [6213, 5603], [6762, 5652], [6912, 5135], [6947, 5053], [6998, 4970], [6970, 4930], [6958, 4846], [6990, 4774], [6983, 4704], [7015, 4637], [6436, 4574], [6431, 4541], [6487, 4486], [6487, 4443]]] } }, { "type": "Feature", "id": "US.MS", "properties": { "hc-group": "admin1", "hc-middle-x": 0.51, "hc-middle-y": 0.48, "hc-key": "us-ms", "hc-a2": "MS", "labelrank": "0", "hasc": "US.MS", "woe-id": "2347583", "state-fips": "28", "fips": "US28", "postal-code": "MS", "name": "Mississippi", "country": "United States of America", "region": "South", "longitude": "-89.71890000000001", "woe-name": "Mississippi", "latitude": "32.8657", "woe-label": "Mississippi, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[6267, 4399], [6164, 4396], [6059, 4360], [6017, 4328], [5936, 4451], [5955, 4536], [5523, 4510], [5540, 4526], [5522, 4581], [5545, 4585], [5545, 4642], [5565, 4662], [5584, 4738], [5636, 4781], [5670, 4868], [5629, 4895], [5611, 4977], [5627, 5018], [5605, 5041], [5618, 5077], [5598, 5120], [5607, 5162], [5583, 5215], [5620, 5250], [5609, 5297], [5647, 5309], [5635, 5340], [5709, 5414], [5706, 5470], [5730, 5520], [5770, 5547], [5762, 5567], [6122, 5592], [6215, 5600], [6236, 5574], [6216, 4788], [6267, 4399]]] } }, { "type": "Feature", "id": "US.NC", "properties": { "hc-group": "admin1", "hc-middle-x": 0.62, "hc-middle-y": 0.50, "hc-key": "us-nc", "hc-a2": "NC", "labelrank": "0", "hasc": "US.NC", "woe-id": "2347592", "state-fips": "37", "fips": "US37", "postal-code": "NC", "name": "North Carolina", "country": "United States of America", "region": "South", "longitude": "-78.866", "woe-name": "North Carolina", "latitude": "35.6152", "woe-label": "North Carolina, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[8716, 6394], [8720, 6381], [8694, 6389], [8694, 6389], [8704, 6391], [8705, 6390], [8709, 6392], [8712, 6393], [8716, 6394]]], [[[8727, 6396], [8756, 6332], [8852, 6203], [8782, 6278], [8722, 6395], [8724, 6396], [8727, 6396]]], [[[7532, 6183], [7623, 6187], [7858, 6219], [8691, 6388], [8768, 6281], [8670, 6318], [8707, 6291], [8620, 6230], [8584, 6234], [8581, 6204], [8719, 6244], [8742, 6161], [8737, 6222], [8760, 6252], [8795, 6220], [8797, 6153], [8772, 6164], [8750, 6091], [8709, 6073], [8638, 6097], [8638, 6070], [8551, 6078], [8664, 6053], [8635, 6009], [8661, 6003], [8610, 5957], [8551, 5988], [8590, 5949], [8631, 5940], [8676, 5955], [8686, 5995], [8721, 5956], [8670, 5890], [8565, 5865], [8469, 5764], [8443, 5714], [8432, 5616], [8368, 5624], [8302, 5600], [8029, 5790], [7791, 5756], [7782, 5790], [7714, 5830], [7457, 5802], [7290, 5724], [7210, 5711], [7034, 5685], [7038, 5756], [7073, 5762], [7085, 5807], [7131, 5847], [7188, 5859], [7269, 5928], [7298, 5973], [7352, 6010], [7365, 5989], [7437, 6050], [7464, 6038], [7490, 6093], [7523, 6123], [7532, 6183]]]] } }, { "type": "Feature", "id": "US.VA", "properties": { "hc-group": "admin1", "hc-middle-x": 0.64, "hc-middle-y": 0.54, "hc-key": "us-va", "hc-a2": "VA", "labelrank": "0", "hasc": "US.VA", "woe-id": "2347605", "state-fips": "51", "fips": "US51", "postal-code": "VA", "name": "Virginia", "country": "United States of America", "region": "South", "longitude": "-78.2431", "woe-name": "Virginia", "latitude": "37.7403", "woe-label": "Virginia, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[8722, 6395], [8696, 6432], [8704, 6391], [8694, 6389], [8694, 6389], [8686, 6398], [8691, 6388], [7858, 6219], [7623, 6187], [7532, 6183], [7472, 6170], [7116, 6120], [7221, 6173], [7268, 6217], [7309, 6294], [7363, 6332], [7431, 6411], [7470, 6351], [7530, 6341], [7567, 6378], [7595, 6360], [7649, 6382], [7664, 6419], [7690, 6412], [7773, 6459], [7767, 6505], [7840, 6674], [7857, 6759], [7932, 6729], [7974, 6848], [7998, 6837], [8048, 6900], [8072, 6952], [8076, 7028], [8188, 6969], [8198, 7020], [8256, 7009], [8251, 6984], [8341, 6945], [8347, 6939], [8353, 6939], [8367, 6892], [8334, 6870], [8323, 6802], [8347, 6786], [8385, 6812], [8429, 6763], [8484, 6768], [8507, 6740], [8571, 6721], [8572, 6647], [8536, 6648], [8499, 6683], [8431, 6711], [8532, 6636], [8597, 6606], [8561, 6578], [8558, 6548], [8577, 6545], [8611, 6494], [8586, 6478], [8526, 6534], [8449, 6533], [8518, 6510], [8580, 6459], [8619, 6482], [8679, 6482], [8727, 6396], [8724, 6396], [8722, 6395]], [[8558, 6548], [8552, 6548], [8552, 6548], [8552, 6548], [8484, 6605], [8532, 6551], [8552, 6548], [8552, 6548], [8552, 6548], [8557, 6544], [8558, 6548]]], [[[8709, 6392], [8713, 6400], [8716, 6394], [8712, 6393], [8709, 6392]]], [[[8765, 6797], [8756, 6760], [8761, 6796], [8765, 6797]]], [[[8688, 6764], [8691, 6772], [8739, 6789], [8726, 6737], [8674, 6599], [8696, 6561], [8678, 6528], [8652, 6583], [8652, 6652], [8688, 6764]]]] } }, { "type": "Feature", "id": "US.IA", "properties": { "hc-group": "admin1", "hc-middle-x": 0.35, "hc-middle-y": 0.49, "hc-key": "us-ia", "hc-a2": "IA", "labelrank": "0", "hasc": "US.IA", "woe-id": "2347574", "state-fips": "19", "fips": "US19", "postal-code": "IA", "name": "Iowa", "country": "United States of America", "region": "Midwest", "longitude": "-93.3891", "woe-name": "Iowa", "latitude": "42.0423", "woe-label": "Iowa, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[5575, 7508], [5625, 7441], [5672, 7411], [5671, 7332], [5646, 7276], [5579, 7232], [5523, 7224], [5509, 7160], [5536, 7132], [5535, 7098], [5496, 7020], [5458, 7004], [5449, 6947], [5449, 6947], [5449, 6947], [5389, 7006], [5120, 6985], [4846, 6977], [4592, 6981], [4591, 6981], [4579, 7031], [4571, 7165], [4559, 7206], [4529, 7228], [4533, 7291], [4515, 7341], [4478, 7398], [4469, 7474], [4453, 7479], [4423, 7540], [4459, 7636], [4438, 7663], [4433, 7734], [4459, 7735], [5137, 7745], [5445, 7758], [5479, 7702], [5465, 7670], [5494, 7563], [5561, 7544], [5577, 7513], [5575, 7508], [5575, 7508]]] } }, { "type": "Feature", "id": "US.MD", "properties": { "hc-group": "admin1", "hc-middle-x": 0.61, "hc-middle-y": 0.27, "hc-key": "us-md", "hc-a2": "MD", "labelrank": "0", "hasc": "US.MD", "woe-id": "2347579", "state-fips": "24", "fips": "US24", "postal-code": "MD", "name": "Maryland", "country": "United States of America", "region": "South", "longitude": "-77.0454", "woe-name": "Maryland", "latitude": "39.3874", "woe-label": "Maryland, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[8761, 6796], [8769, 6819], [8765, 6797], [8761, 6796]]], [[[8779, 6915], [8779, 6884], [8777, 6914], [8777, 6914], [8779, 6915]]], [[[8739, 6789], [8691, 6772], [8688, 6764], [8647, 6746], [8650, 6806], [8590, 6833], [8592, 6815], [8525, 6862], [8581, 6899], [8555, 6926], [8511, 6936], [8544, 6974], [8512, 6986], [8496, 7036], [8530, 7108], [8537, 7165], [8497, 7093], [8472, 7099], [8469, 7056], [8432, 7052], [8471, 7014], [8458, 6959], [8483, 6868], [8513, 6820], [8462, 6849], [8543, 6778], [8548, 6753], [8491, 6782], [8433, 6785], [8382, 6834], [8354, 6797], [8335, 6827], [8370, 6891], [8367, 6916], [8385, 6943], [8341, 6945], [8251, 6984], [8256, 7009], [8198, 7020], [8162, 7087], [8101, 7099], [8046, 7067], [8043, 7043], [8000, 7038], [7977, 7057], [7949, 7003], [7928, 7007], [7857, 6922], [7835, 7053], [8176, 7119], [8559, 7201], [8650, 6887], [8771, 6913], [8770, 6856], [8753, 6848], [8739, 6789]]]] } }, { "type": "Feature", "id": "US.DE", "properties": { "hc-group": "admin1", "hc-middle-x": 0.91, "hc-middle-y": 0.77, "hc-key": "us-de", "hc-a2": "DE", "labelrank": "0", "hasc": "US.DE", "woe-id": "2347566", "state-fips": "10", "fips": "US10", "postal-code": "DE", "name": "Delaware", "country": "United States of America", "region": "South", "longitude": "-75.41119999999999", "woe-name": "Delaware", "latitude": "38.8657", "woe-label": "Delaware, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[8777, 6914], [8771, 6915], [8771, 6913], [8650, 6887], [8559, 7201], [8589, 7239], [8625, 7239], [8601, 7183], [8613, 7145], [8652, 7114], [8675, 7051], [8735, 6995], [8751, 6999], [8779, 6915], [8777, 6914], [8777, 6914]]] } }, { "type": "Feature", "id": "US.PA", "properties": { "hc-group": "admin1", "hc-middle-x": 0.50, "hc-middle-y": 0.49, "hc-key": "us-pa", "hc-a2": "PA", "labelrank": "0", "hasc": "US.PA", "woe-id": "2347597", "state-fips": "42", "fips": "US42", "postal-code": "PA", "name": "Pennsylvania", "country": "United States of America", "region": "Northeast", "longitude": "-77.60939999999999", "woe-name": "Pennsylvania", "latitude": "40.8601", "woe-label": "Pennsylvania, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[8611, 7549], [8632, 7530], [8615, 7490], [8627, 7443], [8646, 7444], [8739, 7361], [8691, 7310], [8673, 7276], [8625, 7239], [8589, 7239], [8559, 7201], [8176, 7119], [7835, 7053], [7630, 7017], [7589, 7253], [7589, 7253], [7530, 7595], [7556, 7610], [7662, 7693], [7674, 7625], [8514, 7797], [8573, 7765], [8588, 7712], [8673, 7663], [8673, 7663], [8611, 7549]]] } }, { "type": "Feature", "id": "US.NJ", "properties": { "hc-group": "admin1", "hc-middle-x": 0.68, "hc-middle-y": 0.64, "hc-key": "us-nj", "hc-a2": "NJ", "labelrank": "0", "hasc": "US.NJ", "woe-id": "2347589", "state-fips": "34", "fips": "US34", "postal-code": "NJ", "name": "New Jersey", "country": "United States of America", "region": "Northeast", "longitude": "-74.4653", "woe-name": "New Jersey", "latitude": "40.0449", "woe-label": "New Jersey, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[8611, 7549], [8673, 7663], [8759, 7635], [8846, 7608], [8840, 7532], [8810, 7504], [8805, 7466], [8866, 7456], [8875, 7438], [8886, 7281], [8853, 7228], [8849, 7172], [8812, 7122], [8784, 7047], [8766, 7040], [8769, 7097], [8716, 7095], [8623, 7151], [8610, 7186], [8624, 7231], [8676, 7269], [8691, 7310], [8739, 7361], [8646, 7444], [8627, 7443], [8615, 7490], [8632, 7530], [8611, 7549]]] } }, { "type": "Feature", "id": "US.NY", "properties": { "hc-group": "admin1", "hc-middle-x": 0.54, "hc-middle-y": 0.49, "hc-key": "us-ny", "hc-a2": "NY", "labelrank": "0", "hasc": "US.NY", "woe-id": "2347591", "state-fips": "36", "fips": "US36", "postal-code": "NY", "name": "New York", "country": "United States of America", "region": "Northeast", "longitude": "-75.32420000000001", "woe-name": "New York", "latitude": "43.1988", "woe-label": "New York, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[8673, 7663], [8588, 7712], [8573, 7765], [8514, 7797], [7674, 7625], [7662, 7693], [7763, 7795], [7803, 7872], [7754, 7932], [7747, 7976], [7812, 8010], [7918, 8040], [7988, 8041], [8031, 8026], [8061, 8043], [8133, 8055], [8180, 8080], [8224, 8141], [8264, 8164], [8243, 8232], [8257, 8274], [8225, 8259], [8202, 8296], [8230, 8345], [8280, 8379], [8297, 8437], [8358, 8526], [8422, 8581], [8453, 8585], [8695, 8646], [8720, 8537], [8739, 8514], [8748, 8453], [8740, 8402], [8772, 8328], [8772, 8287], [8807, 8284], [8856, 8080], [8853, 7901], [8860, 7896], [8896, 7702], [8912, 7685], [8874, 7645], [8896, 7623], [8881, 7575], [8930, 7617], [8982, 7620], [9002, 7641], [9094, 7671], [9134, 7722], [9173, 7697], [9177, 7721], [9184, 7702], [9231, 7730], [9141, 7649], [9083, 7619], [9032, 7570], [8936, 7519], [8857, 7498], [8812, 7468], [8814, 7503], [8840, 7506], [8858, 7554], [8843, 7544], [8846, 7608], [8759, 7635], [8695, 7656], [8673, 7663], [8673, 7663]]] } }, { "type": "Feature", "id": "US.ID", "properties": { "hc-group": "admin1", "hc-middle-x": 0.51, "hc-middle-y": 0.75, "hc-key": "us-id", "hc-a2": "ID", "labelrank": "0", "hasc": "US.ID", "woe-id": "2347571", "state-fips": "16", "fips": "US16", "postal-code": "ID", "name": "Idaho", "country": "United States of America", "region": "West", "longitude": "-114.133", "woe-name": "Idaho", "latitude": "43.7825", "woe-label": "Idaho, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[926, 9593], [1093, 9555], [1036, 9301], [1076, 9210], [1061, 9142], [1117, 9085], [1172, 8979], [1170, 8959], [1219, 8896], [1258, 8897], [1253, 8859], [1219, 8796], [1204, 8727], [1211, 8698], [1177, 8675], [1167, 8620], [1200, 8590], [1278, 8630], [1303, 8596], [1303, 8522], [1338, 8434], [1326, 8419], [1347, 8377], [1374, 8375], [1391, 8331], [1392, 8280], [1415, 8254], [1451, 8281], [1508, 8261], [1536, 8282], [1614, 8258], [1671, 8261], [1686, 8296], [1713, 8295], [1750, 8226], [1677, 7785], [1643, 7585], [1393, 7629], [1073, 7690], [897, 7727], [510, 7813], [616, 8265], [662, 8361], [615, 8403], [624, 8450], [718, 8545], [776, 8646], [823, 8698], [821, 8744], [785, 8775], [774, 8822], [779, 8870], [767, 8925], [926, 9593]]] } }, { "type": "Feature", "id": "US.SD", "properties": { "hc-group": "admin1", "hc-middle-x": 0.51, "hc-middle-y": 0.44, "hc-key": "us-sd", "hc-a2": "SD", "labelrank": "0", "hasc": "US.SD", "woe-id": "2347600", "state-fips": "46", "fips": "US46", "postal-code": "SD", "name": "South Dakota", "country": "United States of America", "region": "Midwest", "longitude": "-100.255", "woe-name": "South Dakota", "latitude": "44.4711", "woe-label": "South Dakota, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[3010, 7672], [3019, 7770], [3056, 8191], [3059, 8191], [3080, 8436], [4231, 8374], [4444, 8372], [4429, 8325], [4387, 8283], [4419, 8232], [4462, 8203], [4459, 7735], [4433, 7734], [4438, 7663], [4459, 7636], [4423, 7540], [4453, 7479], [4409, 7521], [4330, 7551], [4297, 7577], [4194, 7574], [4148, 7558], [4071, 7611], [3010, 7672]]] } }, { "type": "Feature", "id": "US.CT", "properties": { "hc-group": "admin1", "hc-middle-x": 0.48, "hc-middle-y": 0.50, "hc-key": "us-ct", "hc-a2": "CT", "labelrank": "0", "hasc": "US.CT", "woe-id": "2347565", "state-fips": "9", "fips": "US09", "postal-code": "CT", "name": "Connecticut", "country": "United States of America", "region": "Northeast", "longitude": "-72.7594", "woe-name": "Connecticut", "latitude": "41.6486", "woe-label": "Connecticut, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[9216, 7790], [9204, 7796], [9095, 7743], [9023, 7721], [8972, 7689], [8896, 7623], [8874, 7645], [8912, 7685], [8896, 7702], [8860, 7896], [8997, 7925], [9177, 7968], [9212, 7845], [9216, 7790]]] } }, { "type": "Feature", "id": "US.NH", "properties": { "hc-group": "admin1", "hc-middle-x": 0.38, "hc-middle-y": 0.57, "hc-key": "us-nh", "hc-a2": "NH", "labelrank": "0", "hasc": "US.NH", "woe-id": "2347588", "state-fips": "33", "fips": "US33", "postal-code": "NH", "name": "New Hampshire", "country": "United States of America", "region": "Northeast", "longitude": "-71.6301", "woe-name": "New Hampshire", "latitude": "43.5993", "woe-label": "New Hampshire, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[9298, 8291], [9306, 8288], [9300, 8236], [9242, 8201], [9222, 8166], [9005, 8115], [9005, 8115], [8979, 8148], [8979, 8261], [8964, 8320], [8981, 8392], [8986, 8490], [8978, 8526], [9033, 8585], [9045, 8629], [9020, 8661], [9024, 8736], [9036, 8814], [9079, 8830], [9225, 8399], [9235, 8354], [9298, 8291]]] } }, { "type": "Feature", "id": "US.KY", "properties": { "hc-group": "admin1", "hc-middle-x": 0.65, "hc-middle-y": 0.50, "hc-key": "us-ky", "hc-a2": "KY", "labelrank": "0", "hasc": "US.KY", "woe-id": "2347576", "state-fips": "21", "fips": "US21", "postal-code": "KY", "name": "Kentucky", "country": "United States of America", "region": "South", "longitude": "-85.5729", "woe-name": "Kentucky", "latitude": "37.3994", "woe-label": "Kentucky, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[5893, 5966], [5890, 5980], [5907, 5967], [5893, 5966]]], [[[5921, 5968], [5932, 6005], [5956, 5988], [5976, 6033], [5975, 6097], [5962, 6117], [5987, 6157], [6015, 6162], [6105, 6131], [6102, 6218], [6171, 6241], [6159, 6283], [6179, 6328], [6209, 6363], [6269, 6350], [6303, 6376], [6359, 6356], [6426, 6401], [6444, 6379], [6485, 6390], [6485, 6413], [6531, 6450], [6583, 6411], [6608, 6438], [6622, 6498], [6652, 6507], [6657, 6540], [6693, 6572], [6682, 6619], [6737, 6617], [6808, 6651], [6792, 6683], [6797, 6730], [6873, 6741], [6900, 6725], [6933, 6672], [7001, 6669], [7036, 6641], [7069, 6664], [7119, 6643], [7198, 6692], [7216, 6653], [7270, 6617], [7270, 6617], [7270, 6617], [7272, 6548], [7358, 6439], [7431, 6411], [7363, 6332], [7309, 6294], [7268, 6217], [7221, 6173], [7116, 6120], [7104, 6113], [6814, 6086], [6751, 6077], [6516, 6061], [6250, 6032], [6200, 6040], [6210, 5991], [5921, 5968]]], [[[7270, 6617], [7271, 6617], [7270, 6617], [7270, 6617], [7270, 6617], [7270, 6617]]]] } }, { "type": "Feature", "id": "US.OH", "properties": { "hc-group": "admin1", "hc-middle-x": 0.45, "hc-middle-y": 0.53, "hc-key": "us-oh", "hc-a2": "OH", "labelrank": "0", "hasc": "US.OH", "woe-id": "2347594", "state-fips": "39", "fips": "US39", "postal-code": "OH", "name": "Ohio", "country": "United States of America", "region": "Midwest", "longitude": "-82.67189999999999", "woe-name": "Ohio", "latitude": "40.0924", "woe-label": "Ohio, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[6718, 7400], [6815, 7415], [6976, 7443], [7095, 7408], [7082, 7394], [7173, 7383], [7258, 7426], [7329, 7440], [7383, 7503], [7530, 7595], [7589, 7253], [7561, 7233], [7587, 7158], [7558, 7018], [7564, 6981], [7504, 6911], [7454, 6903], [7419, 6863], [7399, 6809], [7416, 6775], [7391, 6755], [7354, 6783], [7333, 6723], [7346, 6679], [7321, 6631], [7271, 6617], [7270, 6617], [7216, 6653], [7198, 6692], [7119, 6643], [7069, 6664], [7036, 6641], [7001, 6669], [6933, 6672], [6900, 6725], [6873, 6741], [6797, 6730], [6732, 7296], [6718, 7400]]] } }, { "type": "Feature", "id": "US.TN", "properties": { "hc-group": "admin1", "hc-middle-x": 0.43, "hc-middle-y": 0.54, "hc-key": "us-tn", "hc-a2": "TN", "labelrank": "0", "hasc": "US.TN", "woe-id": "2347601", "state-fips": "47", "fips": "US47", "postal-code": "TN", "name": "Tennessee", "country": "United States of America", "region": "South", "longitude": "-86.3415", "woe-name": "Tennessee", "latitude": "35.7514", "woe-label": "Tennessee, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[6215, 5600], [6122, 5592], [5762, 5567], [5802, 5602], [5798, 5670], [5835, 5714], [5827, 5763], [5871, 5791], [5868, 5834], [5888, 5872], [5869, 5898], [5901, 5936], [5893, 5966], [5907, 5967], [5911, 5955], [5921, 5968], [6210, 5991], [6200, 6040], [6250, 6032], [6516, 6061], [6751, 6077], [6814, 6086], [7104, 6113], [7116, 6120], [7472, 6170], [7532, 6183], [7523, 6123], [7490, 6093], [7464, 6038], [7437, 6050], [7365, 5989], [7352, 6010], [7298, 5973], [7269, 5928], [7188, 5859], [7131, 5847], [7085, 5807], [7073, 5762], [7038, 5756], [7034, 5685], [6918, 5671], [6762, 5652], [6213, 5603], [6215, 5600]]] } }, { "type": "Feature", "id": "US.WV", "properties": { "hc-group": "admin1", "hc-middle-x": 0.35, "hc-middle-y": 0.56, "hc-key": "us-wv", "hc-a2": "WV", "labelrank": "0", "hasc": "US.WV", "woe-id": "2347607", "state-fips": "54", "fips": "US54", "postal-code": "WV", "name": "West Virginia", "country": "United States of America", "region": "South", "longitude": "-80.7128", "woe-name": "West Virginia", "latitude": "38.6422", "woe-label": "West Virginia, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[7270, 6617], [7271, 6617], [7321, 6631], [7346, 6679], [7333, 6723], [7354, 6783], [7391, 6755], [7416, 6775], [7399, 6809], [7419, 6863], [7454, 6903], [7504, 6911], [7564, 6981], [7558, 7018], [7587, 7158], [7561, 7233], [7589, 7253], [7630, 7017], [7835, 7053], [7857, 6922], [7928, 7007], [7949, 7003], [7977, 7057], [8000, 7038], [8043, 7043], [8046, 7067], [8101, 7099], [8162, 7087], [8198, 7020], [8188, 6969], [8076, 7028], [8072, 6952], [8048, 6900], [7998, 6837], [7974, 6848], [7932, 6729], [7857, 6759], [7840, 6674], [7767, 6505], [7773, 6459], [7690, 6412], [7664, 6419], [7649, 6382], [7595, 6360], [7567, 6378], [7530, 6341], [7470, 6351], [7431, 6411], [7358, 6439], [7272, 6548], [7270, 6617], [7270, 6617], [7270, 6617], [7270, 6617], [7270, 6617]]] } }, { "type": "Feature", "id": "US.DC", "properties": { "hc-group": "admin1", "hc-middle-x": 0.57, "hc-middle-y": 0.14, "hc-key": "us-dc", "hc-a2": "DC", "labelrank": "9", "hasc": "US.DC", "woe-id": "2347567", "state-fips": "11", "fips": "US11", "postal-code": "DC", "name": "District of Columbia", "country": "United States of America", "region": "South", "longitude": "-77.01130000000001", "woe-name": "District of Columbia", "latitude": "38.8922", "woe-label": "District of Columbia, US, United States", "type": "Federal District" }, "geometry": { "type": "Polygon", "coordinates": [[[8367, 6916], [8366, 6929], [8353, 6939], [8347, 6939], [8341, 6945], [8385, 6943], [8367, 6916]]] } }, { "type": "Feature", "id": "US.LA", "properties": { "hc-group": "admin1", "hc-middle-x": 0.34, "hc-middle-y": 0.46, "hc-key": "us-la", "hc-a2": "LA", "labelrank": "0", "hasc": "US.LA", "woe-id": "2347577", "state-fips": "22", "fips": "US22", "postal-code": "LA", "name": "Louisiana", "country": "United States of America", "region": "South", "longitude": "-91.9991", "woe-name": "Louisiana", "latitude": "30.5274", "woe-label": "Louisiana, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[6017, 4328], [5915, 4340], [5856, 4368], [5812, 4302], [5834, 4283], [5904, 4280], [5937, 4313], [5992, 4313], [5957, 4259], [6001, 4245], [6035, 4298], [6067, 4259], [5982, 4181], [6027, 4123], [6107, 4114], [6148, 4081], [6125, 4035], [6070, 4042], [6042, 4077], [5966, 4094], [5980, 4115], [5902, 4141], [5913, 4064], [5876, 4028], [5860, 4066], [5811, 4082], [5780, 4036], [5724, 4031], [5620, 4068], [5631, 4121], [5569, 4128], [5532, 4184], [5493, 4173], [5494, 4203], [5430, 4175], [5437, 4145], [5478, 4154], [5526, 4139], [5500, 4112], [5431, 4136], [5399, 4121], [5305, 4135], [5186, 4176], [5128, 4173], [5042, 4153], [5047, 4228], [5065, 4253], [5059, 4380], [5093, 4447], [5105, 4506], [5031, 4646], [5033, 4679], [4980, 4752], [4975, 5016], [5563, 5038], [5605, 5041], [5627, 5018], [5611, 4977], [5629, 4895], [5670, 4868], [5636, 4781], [5584, 4738], [5565, 4662], [5545, 4642], [5545, 4585], [5522, 4581], [5540, 4526], [5523, 4510], [5955, 4536], [5936, 4451], [6017, 4328]]] } }, { "type": "Feature", "id": "US.FL", "properties": { "hc-group": "admin1", "hc-middle-x": 0.77, "hc-middle-y": 0.50, "hc-key": "us-fl", "hc-a2": "FL", "labelrank": "0", "hasc": "US.FL", "woe-id": "2347568", "state-fips": "12", "fips": "US12", "postal-code": "FL", "name": "Florida", "country": "United States of America", "region": "South", "longitude": "-81.6228", "woe-name": "Florida", "latitude": "28.1568", "woe-label": "Florida, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[6487, 4443], [6487, 4486], [6431, 4541], [6436, 4574], [7015, 4637], [7055, 4568], [7649, 4609], [7670, 4559], [7699, 4566], [7687, 4660], [7713, 4686], [7808, 4673], [7822, 4672], [7849, 4570], [7908, 4430], [8008, 4269], [8125, 4130], [8113, 4109], [8144, 4012], [8198, 3936], [8297, 3758], [8321, 3651], [8331, 3476], [8302, 3361], [8313, 3273], [8270, 3209], [8291, 3273], [8273, 3290], [8230, 3255], [8194, 3260], [8141, 3234], [8115, 3258], [8115, 3303], [8070, 3379], [7979, 3429], [7953, 3420], [7907, 3543], [7846, 3536], [7839, 3654], [7796, 3674], [7819, 3634], [7779, 3640], [7675, 3779], [7722, 3884], [7712, 3915], [7671, 3899], [7670, 3851], [7622, 3872], [7618, 3966], [7635, 4045], [7626, 4157], [7576, 4229], [7525, 4222], [7473, 4277], [7425, 4302], [7349, 4395], [7265, 4433], [7186, 4403], [7198, 4370], [7162, 4370], [7148, 4336], [7067, 4277], [6979, 4284], [6986, 4316], [6958, 4349], [6892, 4391], [6798, 4429], [6694, 4444], [6468, 4388], [6505, 4431], [6487, 4443]]] } }, { "type": "Feature", "id": "US.GA", "properties": { "hc-group": "admin1", "hc-middle-x": 0.43, "hc-middle-y": 0.52, "hc-key": "us-ga", "hc-a2": "GA", "labelrank": "0", "hasc": "US.GA", "woe-id": "2347569", "state-fips": "13", "fips": "US13", "postal-code": "GA", "name": "Georgia", "country": "United States of America", "region": "South", "longitude": "-83.4078", "woe-name": "Georgia", "latitude": "32.8547", "woe-label": "Georgia, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[7713, 4686], [7687, 4660], [7699, 4566], [7670, 4559], [7649, 4609], [7055, 4568], [7015, 4637], [6983, 4704], [6990, 4774], [6958, 4846], [6970, 4930], [6998, 4970], [6947, 5053], [6912, 5135], [6762, 5652], [6918, 5671], [7034, 5685], [7210, 5711], [7290, 5724], [7249, 5641], [7323, 5596], [7364, 5593], [7401, 5526], [7444, 5475], [7523, 5430], [7538, 5402], [7600, 5369], [7606, 5340], [7651, 5293], [7708, 5272], [7750, 5169], [7800, 5140], [7844, 5042], [7887, 5035], [7901, 5029], [7811, 4893], [7836, 4826], [7798, 4798], [7817, 4730], [7808, 4673], [7713, 4686]]] } }, { "type": "Feature", "id": "US.SC", "properties": { "hc-group": "admin1", "hc-middle-x": 0.54, "hc-middle-y": 0.35, "hc-key": "us-sc", "hc-a2": "SC", "labelrank": "0", "hasc": "US.SC", "woe-id": "2347599", "state-fips": "45", "fips": "US45", "postal-code": "SC", "name": "South Carolina", "country": "United States of America", "region": "South", "longitude": "-80.6471", "woe-name": "South Carolina", "latitude": "33.8578", "woe-label": "South Carolina, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[8302, 5600], [8236, 5523], [8205, 5458], [8206, 5396], [8173, 5348], [8140, 5346], [8131, 5311], [8056, 5219], [7989, 5173], [7913, 5166], [7971, 5149], [7887, 5035], [7844, 5042], [7800, 5140], [7750, 5169], [7708, 5272], [7651, 5293], [7606, 5340], [7600, 5369], [7538, 5402], [7523, 5430], [7444, 5475], [7401, 5526], [7364, 5593], [7323, 5596], [7249, 5641], [7290, 5724], [7457, 5802], [7714, 5830], [7782, 5790], [7791, 5756], [8029, 5790], [8302, 5600]]] } }, { "type": "Feature", "id": "US.MN", "properties": { "hc-group": "admin1", "hc-middle-x": 0.38, "hc-middle-y": 0.60, "hc-key": "us-mn", "hc-a2": "MN", "labelrank": "0", "hasc": "US.MN", "woe-id": "2347582", "state-fips": "27", "fips": "US27", "postal-code": "MN", "name": "Minnesota", "country": "United States of America", "region": "Midwest", "longitude": "-93.364", "woe-name": "Minnesota", "latitude": "46.0592", "woe-label": "Minnesota, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[4333, 9174], [4688, 9173], [4690, 9272], [4748, 9253], [4770, 9125], [4791, 9104], [4854, 9085], [4916, 9083], [4938, 9052], [4984, 9060], [5024, 9084], [5073, 9082], [5132, 9063], [5181, 8985], [5194, 9006], [5240, 9014], [5304, 8955], [5351, 8941], [5438, 8996], [5463, 8964], [5570, 8974], [5607, 8949], [5668, 8950], [5592, 8895], [5514, 8864], [5432, 8802], [5349, 8700], [5245, 8603], [5214, 8573], [5220, 8422], [5147, 8375], [5116, 8322], [5117, 8285], [5158, 8253], [5144, 8214], [5146, 8117], [5136, 8072], [5181, 8035], [5217, 8029], [5273, 7994], [5360, 7903], [5405, 7892], [5431, 7866], [5445, 7758], [5137, 7745], [4459, 7735], [4462, 8203], [4419, 8232], [4387, 8283], [4429, 8325], [4444, 8372], [4436, 8472], [4402, 8555], [4409, 8628], [4397, 8650], [4394, 8777], [4347, 8957], [4343, 9053], [4353, 9083], [4333, 9174]]] } }, { "type": "Feature", "id": "US.MT", "properties": { "hc-group": "admin1", "hc-middle-x": 0.55, "hc-middle-y": 0.53, "hc-key": "us-mt", "hc-a2": "MT", "labelrank": "0", "hasc": "US.MT", "woe-id": "2347585", "state-fips": "30", "fips": "US30", "postal-code": "MT", "name": "Montana", "country": "United States of America", "region": "West", "longitude": "-110.044", "woe-name": "Montana", "latitude": "46.9965", "woe-label": "Montana, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[1093, 9555], [1689, 9433], [3150, 9234], [3084, 8486], [3080, 8436], [3059, 8191], [3056, 8191], [1772, 8355], [1750, 8226], [1713, 8295], [1686, 8296], [1671, 8261], [1614, 8258], [1536, 8282], [1508, 8261], [1451, 8281], [1415, 8254], [1392, 8280], [1391, 8331], [1374, 8375], [1347, 8377], [1326, 8419], [1338, 8434], [1303, 8522], [1303, 8596], [1278, 8630], [1200, 8590], [1167, 8620], [1177, 8675], [1211, 8698], [1204, 8727], [1219, 8796], [1253, 8859], [1258, 8897], [1219, 8896], [1170, 8959], [1172, 8979], [1117, 9085], [1061, 9142], [1076, 9210], [1036, 9301], [1093, 9555]]] } }, { "type": "Feature", "id": "US.ND", "properties": { "hc-group": "admin1", "hc-middle-x": 0.47, "hc-middle-y": 0.50, "hc-key": "us-nd", "hc-a2": "ND", "labelrank": "0", "hasc": "US.ND", "woe-id": "2347593", "state-fips": "38", "fips": "US38", "postal-code": "ND", "name": "North Dakota", "country": "United States of America", "region": "Midwest", "longitude": "-100.302", "woe-name": "North Dakota", "latitude": "47.4675", "woe-label": "North Dakota, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[3080, 8436], [3084, 8486], [3150, 9234], [3468, 9209], [4333, 9174], [4353, 9083], [4343, 9053], [4347, 8957], [4394, 8777], [4397, 8650], [4409, 8628], [4402, 8555], [4436, 8472], [4444, 8372], [4231, 8374], [3080, 8436]]] } }, { "type": "Feature", "id": "US.AZ", "properties": { "hc-group": "admin1", "hc-middle-x": 0.51, "hc-middle-y": 0.45, "hc-key": "us-az", "hc-a2": "AZ", "labelrank": "0", "hasc": "US.AZ", "woe-id": "2347561", "state-fips": "4", "fips": "US04", "postal-code": "AZ", "name": "Arizona", "country": "United States of America", "region": "West", "longitude": "-111.935", "woe-name": "Arizona", "latitude": "34.3046", "woe-label": "Arizona, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[1630, 4782], [1196, 4850], [1092, 4906], [418, 5307], [451, 5357], [492, 5355], [519, 5416], [476, 5452], [489, 5536], [510, 5537], [555, 5605], [559, 5661], [598, 5702], [660, 5730], [620, 5788], [593, 5936], [614, 5982], [611, 6068], [631, 6159], [631, 6217], [669, 6227], [752, 6180], [777, 6221], [818, 6420], [1488, 6297], [1841, 6242], [1736, 5514], [1630, 4782]]] } }, { "type": "Feature", "id": "US.UT", "properties": { "hc-group": "admin1", "hc-middle-x": 0.52, "hc-middle-y": 0.59, "hc-key": "us-ut", "hc-a2": "UT", "labelrank": "0", "hasc": "US.UT", "woe-id": "2347603", "state-fips": "49", "fips": "US49", "postal-code": "UT", "name": "Utah", "country": "United States of America", "region": "West", "longitude": "-111.544", "woe-name": "Utah", "latitude": "39.5007", "woe-label": "Utah, US, United States", "type": "State" }, "geometry": { "type": "Polygon", "coordinates": [[[1841, 6242], [1488, 6297], [818, 6420], [929, 6975], [1073, 7690], [1393, 7629], [1643, 7585], [1600, 7329], [1990, 7269], [1966, 7108], [1841, 6242]]] } }, { "type": "Feature", "id": "US.HI", "properties": { "hc-group": "admin1", "hc-middle-x": 0.87, "hc-middle-y": 0.79, "hc-key": "us-hi", "hc-a2": "HI", "labelrank": "0", "hasc": "US.HI", "woe-id": "2347570", "state-fips": "15", "fips": "US15", "postal-code": "HI", "name": "Hawaii", "country": "United States of America", "region": "West", "longitude": "-157.999", "woe-name": "Hawaii", "latitude": "21.4919", "woe-label": "Hawaii, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[2871.1, 2945.9], [2875.2, 2942.7], [2879.9, 2943.9], [2887.0, 2943.5], [2908.4, 2936.0], [2926.2, 2927.0], [2959.3, 2906.2], [2969.8, 2895.8], [2975.6, 2888.1], [2975.6, 2868.8], [2976.2, 2860.2], [2981.8, 2860.4], [2989.5, 2864.1], [2995.3, 2860.2], [2998.0, 2855.8], [2997.4, 2846.7], [3000.1, 2841.1], [3003.5, 2836.0], [3013.7, 2826.7], [3024.4, 2822.1], [3028.7, 2818.5], [3031.0, 2814.1], [3030.4, 2808.4], [3019.0, 2794.3], [3010.1, 2790.9], [2997.5, 2778.6], [2988.9, 2776.0], [2988.6, 2773.6], [2981.4, 2771.8], [2975.3, 2767.2], [2953.3, 2760.6], [2944.8, 2762.6], [2939.9, 2762.7], [2935.5, 2761.3], [2924.6, 2753.9], [2920.9, 2749.4], [2913.7, 2747.3], [2906.4, 2742.2], [2896.2, 2736.4], [2893.2, 2735.4], [2884.5, 2727.0], [2883.0, 2723.6], [2883.3, 2715.9], [2873.3, 2705.7], [2870.1, 2696.8], [2867.2, 2693.6], [2858.8, 2686.4], [2857.0, 2687.4], [2857.1, 2692.0], [2852.9, 2695.4], [2844.7, 2699.6], [2830.0, 2708.8], [2817.8, 2712.1], [2815.1, 2719.8], [2812.5, 2720.6], [2810.9, 2726.2], [2809.3, 2735.1], [2811.5, 2745.8], [2816.0, 2776.4], [2815.6, 2781.7], [2812.9, 2786.6], [2805.6, 2807.3], [2801.6, 2814.3], [2802.1, 2818.9], [2799.7, 2823.2], [2796.3, 2833.9], [2792.8, 2839.1], [2789.8, 2841.4], [2785.4, 2846.6], [2780.6, 2859.9], [2784.8, 2870.8], [2795.1, 2879.5], [2796.2, 2883.5], [2799.0, 2885.8], [2807.4, 2888.9], [2813.4, 2898.4], [2817.9, 2906.3], [2822.3, 2911.4], [2825.4, 2911.5], [2827.7, 2920.9], [2826.3, 2924.9], [2822.9, 2928.1], [2815.9, 2938.7], [2813.0, 2947.9], [2812.4, 2962.2], [2816.2, 2969.6], [2818.8, 2972.0], [2826.0, 2972.0], [2844.7, 2968.0], [2850.0, 2958.0], [2857.7, 2955.0], [2862.8, 2952.2], [2866.3, 2948.0], [2871.1, 2945.9]]], [[[2685.2, 3028.0], [2683.1, 3024.1], [2677.4, 3024.1], [2672.1, 3025.0], [2662.7, 3023.0], [2656.2, 3022.3], [2651.9, 3026.6], [2654.3, 3029.7], [2658.6, 3033.4], [2670.2, 3040.4], [2675.5, 3042.3], [2679.6, 3041.9], [2684.7, 3036.2], [2682.1, 3030.0], [2685.2, 3028.0]]], [[[2609.3, 3070.6], [2599.6, 3070.1], [2595.6, 3075.8], [2594.6, 3080.7], [2594.3, 3089.5], [2593.6, 3094.0], [2590.2, 3096.0], [2581.9, 3099.3], [2579.4, 3103.3], [2581.0, 3107.7], [2585.7, 3110.1], [2594.0, 3111.1], [2613.5, 3108.3], [2622.3, 3100.4], [2628.7, 3093.1], [2631.3, 3086.9], [2630.0, 3083.4], [2625.7, 3076.7], [2616.7, 3072.6], [2609.3, 3070.6]]], [[[2673.9, 3132.2], [2675.6, 3130.2], [2683.4, 3127.1], [2684.3, 3124.4], [2686.7, 3123.7], [2687.2, 3118.4], [2690.0, 3115.9], [2695.5, 3106.3], [2699.0, 3106.6], [2701.3, 3109.2], [2705.1, 3109.1], [2716.1, 3110.5], [2722.5, 3115.1], [2725.7, 3116.2], [2732.1, 3116.5], [2743.2, 3114.2], [2746.4, 3112.2], [2747.4, 3109.8], [2752.3, 3104.5], [2758.6, 3099.6], [2758.8, 3097.7], [2762.9, 3098.7], [2765.5, 3096.6], [2767.9, 3092.2], [2774.8, 3091.2], [2781.6, 3088.0], [2791.4, 3084.8], [2795.9, 3075.7], [2794.9, 3067.4], [2791.3, 3060.7], [2786.3, 3059.3], [2782.2, 3053.3], [2776.8, 3053.2], [2766.0, 3047.7], [2754.9, 3048.2], [2751.2, 3048.0], [2731.5, 3038.5], [2721.5, 3040.8], [2718.9, 3040.1], [2710.5, 3039.7], [2704.9, 3044.9], [2701.6, 3049.9], [2703.3, 3051.3], [2703.4, 3055.1], [2701.8, 3068.9], [2700.2, 3072.7], [2700.3, 3077.0], [2699.0, 3080.5], [2694.8, 3083.7], [2688.7, 3082.3], [2687.7, 3079.4], [2685.2, 3078.9], [2679.4, 3082.6], [2675.0, 3083.4], [2670.7, 3086.1], [2667.9, 3085.8], [2660.5, 3094.3], [2655.0, 3101.5], [2654.7, 3106.1], [2652.7, 3108.6], [2654.7, 3118.8], [2656.5, 3123.8], [2658.6, 3127.1], [2661.1, 3127.3], [2664.7, 3132.0], [2668.7, 3131.6], [2672.3, 3133.2], [2673.9, 3132.2]]], [[[2542.4, 3172.8], [2550.3, 3172.5], [2552.8, 3171.9], [2554.4, 3169.4], [2557.4, 3169.4], [2586.4, 3165.0], [2594.1, 3164.7], [2596.9, 3170.6], [2598.9, 3171.1], [2601.5, 3167.6], [2602.5, 3163.6], [2612.6, 3161.0], [2622.6, 3161.3], [2627.0, 3161.9], [2631.9, 3163.6], [2637.2, 3163.5], [2642.1, 3162.2], [2644.1, 3162.6], [2646.1, 3160.1], [2650.7, 3159.2], [2646.9, 3152.3], [2640.8, 3146.4], [2633.3, 3142.2], [2625.8, 3139.1], [2618.1, 3137.5], [2610.3, 3138.3], [2602.5, 3139.8], [2587.1, 3143.9], [2577.6, 3147.2], [2554.7, 3145.6], [2547.6, 3144.5], [2537.6, 3144.7], [2533.7, 3146.2], [2531.4, 3149.3], [2531.3, 3153.2], [2535.1, 3159.1], [2538.7, 3160.4], [2541.9, 3164.2], [2542.9, 3168.2], [2540.2, 3172.9], [2542.4, 3172.8]]], [[[2414.1, 3252.1], [2415.3, 3248.5], [2417.5, 3247.3], [2418.6, 3243.6], [2422.1, 3243.3], [2425.5, 3238.6], [2425.5, 3233.8], [2422.8, 3232.6], [2424.3, 3223.3], [2428.6, 3221.7], [2432.0, 3216.6], [2435.0, 3215.5], [2437.4, 3213.2], [2440.6, 3217.4], [2437.6, 3219.4], [2437.9, 3221.8], [2440.1, 3222.8], [2448.0, 3221.2], [2445.1, 3218.3], [2444.8, 3211.6], [2448.1, 3209.6], [2451.4, 3205.2], [2450.5, 3202.8], [2453.3, 3197.1], [2461.8, 3192.0], [2463.0, 3190.8], [2453.8, 3181.6], [2451.7, 3180.9], [2451.1, 3184.2], [2449.4, 3185.6], [2439.8, 3183.8], [2433.5, 3180.0], [2429.0, 3180.6], [2426.4, 3184.7], [2416.6, 3189.1], [2413.7, 3194.2], [2413.7, 3196.2], [2409.6, 3193.0], [2411.6, 3190.7], [2403.3, 3190.2], [2404.6, 3191.8], [2399.9, 3193.0], [2399.1, 3199.7], [2405.5, 3202.8], [2406.3, 3204.6], [2400.6, 3208.2], [2398.9, 3204.7], [2394.5, 3208.7], [2395.9, 3202.7], [2394.8, 3202.0], [2388.7, 3207.1], [2390.1, 3203.7], [2397.6, 3196.7], [2396.6, 3193.5], [2393.0, 3192.0], [2373.9, 3188.4], [2369.7, 3190.8], [2368.0, 3197.9], [2365.9, 3203.5], [2361.4, 3209.6], [2357.7, 3211.5], [2356.8, 3217.1], [2355.5, 3220.1], [2349.9, 3224.5], [2347.5, 3228.2], [2347.2, 3238.6], [2345.9, 3240.5], [2337.4, 3247.6], [2345.9, 3249.6], [2354.3, 3250.0], [2368.8, 3249.7], [2370.5, 3253.5], [2374.1, 3255.5], [2379.9, 3260.1], [2379.6, 3261.3], [2382.9, 3267.5], [2390.2, 3273.8], [2396.5, 3275.6], [2400.5, 3274.5], [2406.2, 3268.8], [2409.8, 3262.0], [2408.9, 3258.2], [2414.1, 3252.1]]], [[[1955.8, 3294.7], [1953.2, 3293.9], [1948.4, 3296.6], [1946.0, 3304.1], [1946.6, 3308.8], [1948.8, 3313.7], [1956.7, 3321.5], [1963.0, 3326.1], [1971.1, 3330.6], [1973.3, 3335.9], [1973.1, 3339.8], [1976.7, 3341.3], [1980.1, 3341.2], [1983.8, 3339.7], [1985.5, 3336.0], [1981.3, 3331.1], [1979.8, 3326.6], [1981.2, 3321.0], [1978.5, 3317.4], [1972.1, 3314.3], [1968.3, 3313.2], [1961.2, 3308.2], [1959.7, 3305.0], [1955.8, 3294.7]]], [[[2117.8, 3386.1], [2120.7, 3384.6], [2123.8, 3384.8], [2127.6, 3382.7], [2129.1, 3379.5], [2132.9, 3376.7], [2134.9, 3369.7], [2136.6, 3368.7], [2136.1, 3360.5], [2134.2, 3358.0], [2131.3, 3350.1], [2128.4, 3348.5], [2128.0, 3342.6], [2128.8, 3334.9], [2128.0, 3329.3], [2123.0, 3328.3], [2125.2, 3324.9], [2121.7, 3323.7], [2118.3, 3320.9], [2116.9, 3318.4], [2109.4, 3313.0], [2107.3, 3310.8], [2098.5, 3314.0], [2089.0, 3314.5], [2078.6, 3316.4], [2076.9, 3318.0], [2074.0, 3315.9], [2073.1, 3317.6], [2068.2, 3320.6], [2065.1, 3326.1], [2062.8, 3326.7], [2060.0, 3329.4], [2056.1, 3330.0], [2050.6, 3332.5], [2043.4, 3334.4], [2041.2, 3340.1], [2038.1, 3343.0], [2038.3, 3352.8], [2040.3, 3353.5], [2048.5, 3363.0], [2049.2, 3368.3], [2052.4, 3371.8], [2062.1, 3374.2], [2067.8, 3377.5], [2071.4, 3380.6], [2076.1, 3382.7], [2077.8, 3384.8], [2086.0, 3386.8], [2088.1, 3384.2], [2095.7, 3382.1], [2095.7, 3385.2], [2099.3, 3386.6], [2107.5, 3385.9], [2111.6, 3384.7], [2115.5, 3387.5], [2117.8, 3386.1]]]] } }, { "type": "Feature", "id": "US.AK", "properties": { "hc-group": "admin1", "hc-middle-x": 0.53, "hc-middle-y": 0.33, "hc-key": "us-ak", "hc-a2": "AK", "labelrank": "0", "hasc": "US.AK", "woe-id": "2347560", "state-fips": "2", "fips": "US02", "postal-code": "AK", "name": "Alaska", "country": "United States of America", "region": "West", "longitude": "-151.604", "woe-name": "Alaska", "latitude": "65.3609", "woe-label": "Alaska, US, United States", "type": "State" }, "geometry": { "type": "MultiPolygon", "coordinates": [[[[322, 4275], [321, 4280], [339, 4292], [360, 4283], [392, 4281], [424, 4297], [443, 4318], [478, 4297], [476, 4285], [459, 4279], [461, 4263], [472, 4263], [490, 4288], [507, 4272], [503, 4256], [519, 4248], [528, 4258], [548, 4257], [582, 4240], [564, 4217], [594, 4212], [584, 4202], [611, 4198], [655, 4200], [684, 4194], [704, 4174], [712, 4178], [723, 4165], [746, 4156], [788, 4155], [808, 4136], [832, 4134], [851, 4144], [877, 4147], [901, 4136], [913, 4120], [929, 4117], [943, 4100], [957, 4101], [989, 3159], [1039, 3148], [1057, 3163], [1084, 3166], [1081, 3138], [1107, 3121], [1113, 3108], [1167, 3060], [1180, 3028], [1208, 3055], [1220, 3056], [1229, 3102], [1271, 3127], [1297, 3104], [1295, 3091], [1335, 3059], [1347, 3039], [1367, 3031], [1397, 3002], [1477, 2890], [1491, 2875], [1490, 2858], [1504, 2853], [1511, 2833], [1523, 2836], [1613, 2802], [1622, 2783], [1617, 2766], [1636, 2722], [1622, 2680], [1606, 2663], [1592, 2664], [1577, 2702], [1585, 2718], [1577, 2755], [1555, 2778], [1526, 2764], [1520, 2723], [1499, 2746], [1510, 2753], [1513, 2796], [1473, 2829], [1468, 2844], [1424, 2880], [1406, 2878], [1414, 2903], [1397, 2917], [1390, 2938], [1366, 2963], [1364, 2998], [1355, 2976], [1348, 2979], [1354, 2974], [1334, 2977], [1331, 2984], [1344, 2982], [1324, 2991], [1283, 3075], [1286, 3041], [1310, 2985], [1307, 2971], [1288, 2985], [1264, 2982], [1266, 2998], [1249, 3031], [1245, 3018], [1199, 3046], [1202, 3028], [1224, 3026], [1254, 2995], [1255, 2977], [1229, 2976], [1225, 2963], [1169, 2999], [1134, 3041], [1085, 3062], [1050, 3083], [1069, 3102], [1060, 3119], [1025, 3098], [969, 3113], [977, 3128], [953, 3122], [899, 3136], [842, 3125], [826, 3141], [792, 3157], [802, 3194], [788, 3179], [783, 3158], [761, 3173], [742, 3174], [759, 3196], [727, 3195], [706, 3205], [716, 3212], [705, 3227], [679, 3222], [658, 3229], [636, 3221], [637, 3247], [620, 3199], [631, 3213], [642, 3184], [628, 3167], [614, 3132], [576, 3140], [552, 3130], [545, 3108], [537, 3114], [509, 3089], [521, 3115], [493, 3078], [478, 3071], [455, 3077], [433, 3070], [426, 3086], [455, 3099], [483, 3126], [457, 3115], [438, 3133], [464, 3170], [478, 3204], [473, 3223], [491, 3228], [524, 3249], [543, 3235], [554, 3240], [588, 3228], [544, 3260], [549, 3268], [527, 3271], [524, 3284], [490, 3256], [469, 3252], [424, 3205], [428, 3196], [407, 3182], [408, 3170], [377, 3133], [343, 3131], [339, 3114], [317, 3109], [309, 3075], [334, 3075], [352, 3048], [305, 3020], [308, 3008], [287, 2998], [271, 2977], [246, 2981], [222, 2955], [212, 2964], [200, 2941], [186, 2947], [152, 2925], [163, 2924], [146, 2893], [133, 2901], [107, 2879], [96, 2891], [89, 2869], [73, 2877], [24, 2852], [40, 2842], [7, 2817], [-44, 2808], [-61, 2821], [-118, 2794], [-130, 2803], [-155, 2792], [-167, 2799], [-155, 2816], [-167, 2823], [-200, 2781], [-223, 2772], [-230, 2808], [-252, 2775], [-262, 2795], [-286, 2772], [-278, 2800], [-223, 2823], [-171, 2853], [-115, 2850], [-113, 2838], [-84, 2825], [-99, 2845], [-80, 2870], [-38, 2892], [12, 2907], [27, 2896], [31, 2922], [57, 2946], [97, 2964], [126, 3051], [154, 3072], [156, 3089], [95, 3074], [79, 3099], [90, 3123], [60, 3099], [61, 3072], [44, 3066], [28, 3121], [8, 3111], [-6, 3123], [-7, 3147], [-37, 3132], [-62, 3132], [-69, 3120], [-112, 3131], [-85, 3135], [-82, 3162], [-87, 3191], [-63, 3208], [-76, 3277], [-72, 3305], [-89, 3269], [-149, 3267], [-172, 3278], [-167, 3295], [-184, 3332], [-198, 3342], [-212, 3370], [-166, 3383], [-134, 3368], [-125, 3345], [-109, 3358], [-131, 3376], [-161, 3385], [-185, 3401], [-173, 3407], [-186, 3433], [-191, 3419], [-205, 3460], [-194, 3469], [-211, 3484], [-189, 3485], [-198, 3504], [-175, 3498], [-170, 3526], [-130, 3555], [-118, 3553], [-108, 3582], [-85, 3606], [-61, 3612], [-46, 3602], [-34, 3577], [-22, 3576], [7, 3591], [28, 3609], [31, 3600], [76, 3594], [100, 3613], [106, 3664], [92, 3688], [125, 3701], [117, 3734], [102, 3721], [73, 3725], [45, 3711], [20, 3709], [8, 3729], [-28, 3742], [-59, 3740], [-101, 3771], [-108, 3789], [-98, 3804], [-111, 3837], [-95, 3829], [-73, 3837], [-119, 3868], [-138, 3897], [-124, 3909], [-95, 3914], [-87, 3908], [-68, 3921], [-2, 3935], [36, 3937], [67, 3929], [47, 3893], [52, 3877], [111, 3858], [119, 3845], [140, 3868], [162, 3859], [147, 3882], [128, 3880], [135, 3893], [119, 3943], [132, 3945], [139, 3923], [133, 3914], [145, 3887], [163, 3891], [175, 3870], [196, 3867], [201, 3879], [179, 3900], [152, 3894], [142, 3915], [154, 3949], [129, 3950], [86, 3976], [89, 4000], [86, 4032], [55, 4092], [40, 4106], [27, 4135], [45, 4151], [57, 4180], [76, 4171], [124, 4160], [156, 4170], [182, 4190], [189, 4216], [201, 4233], [224, 4253], [229, 4246], [253, 4268], [256, 4258], [287, 4258], [317, 4277], [322, 4275]], [[322, 4275], [323, 4272], [323, 4272], [323, 4272], [311, 4248], [326, 4263], [323, 4272], [323, 4272], [323, 4272], [324, 4274], [322, 4275]]], [[[-905, 2721], [-922, 2724], [-904, 2733], [-898, 2724], [-905, 2721]]], [[[-739, 2715], [-724, 2712], [-729, 2702], [-734, 2709], [-739, 2715]]], [[[-645, 2693], [-651, 2700], [-684, 2693], [-643, 2725], [-634, 2718], [-623, 2738], [-597, 2740], [-595, 2719], [-626, 2714], [-645, 2693]]], [[[-439, 2748], [-458, 2742], [-469, 2755], [-457, 2762], [-439, 2748]]], [[[-268, 2722], [-267, 2733], [-255, 2724], [-252, 2715], [-268, 2722]]], [[[-303, 2804], [-293, 2800], [-290, 2768], [-309, 2757], [-338, 2767], [-359, 2754], [-385, 2761], [-386, 2779], [-369, 2783], [-354, 2800], [-335, 2796], [-303, 2804]]], [[[-59, 2737], [-58, 2733], [-70, 2740], [-62, 2746], [-59, 2737]]], [[[1485, 2651], [1482, 2635], [1455, 2672], [1458, 2688], [1473, 2659], [1485, 2651]]], [[[1568, 2687], [1567, 2665], [1547, 2678], [1548, 2705], [1568, 2687]]], [[[-81, 2759], [-83, 2747], [-107, 2735], [-88, 2750], [-81, 2759]]], [[[-100, 2783], [-114, 2781], [-119, 2759], [-135, 2762], [-131, 2784], [-100, 2783]]], [[[1530, 2716], [1542, 2706], [1538, 2690], [1528, 2711], [1530, 2716]]], [[[1427, 2708], [1429, 2706], [1439, 2711], [1430, 2683], [1427, 2708]]], [[[1439, 2743], [1430, 2731], [1420, 2735], [1421, 2742], [1439, 2743]]], [[[1555, 2775], [1573, 2753], [1578, 2721], [1569, 2699], [1529, 2721], [1537, 2731], [1531, 2760], [1555, 2775]]], [[[1408, 2747], [1414, 2765], [1435, 2776], [1437, 2763], [1408, 2747]]], [[[1480, 2788], [1503, 2783], [1494, 2762], [1468, 2778], [1475, 2803], [1480, 2788]]], [[[1467, 2811], [1469, 2795], [1445, 2798], [1451, 2810], [1467, 2811]]], [[[1495, 2807], [1510, 2793], [1504, 2784], [1485, 2797], [1482, 2819], [1495, 2807]]], [[[253, 2834], [251, 2826], [235, 2816], [239, 2829], [253, 2834]]], [[[276, 2825], [279, 2820], [259, 2824], [263, 2832], [276, 2825]]], [[[1448, 2845], [1470, 2828], [1458, 2816], [1449, 2816], [1448, 2845]]], [[[333, 2880], [345, 2878], [321, 2864], [319, 2872], [333, 2880]]], [[[1295, 2870], [1295, 2846], [1283, 2843], [1288, 2862], [1295, 2870]]], [[[1246, 2943], [1241, 2926], [1234, 2942], [1237, 2951], [1246, 2943]]], [[[345, 2973], [360, 2960], [353, 2961], [333, 2971], [345, 2973]]], [[[370, 2989], [380, 3007], [393, 2992], [407, 2995], [413, 2978], [404, 2970], [365, 2959], [347, 2974], [353, 2990], [370, 2989]]], [[[389, 3006], [380, 3014], [397, 3021], [396, 3012], [389, 3006]]], [[[-42, 3112], [-58, 3105], [-53, 3120], [-31, 3126], [-42, 3112]]], [[[643, 3141], [641, 3133], [628, 3129], [639, 3150], [643, 3141]]], [[[683, 3167], [692, 3162], [662, 3126], [639, 3113], [651, 3133], [678, 3156], [683, 3167]]], [[[-250, 3366], [-233, 3350], [-243, 3328], [-239, 3312], [-272, 3312], [-294, 3323], [-315, 3350], [-321, 3371], [-293, 3362], [-286, 3369], [-250, 3366]]], [[[712, 3177], [732, 3173], [708, 3154], [714, 3166], [712, 3177]]], [[[655, 3184], [659, 3177], [651, 3159], [646, 3171], [655, 3184]]], [[[-553, 3496], [-557, 3490], [-570, 3515], [-566, 3524], [-553, 3496]]], [[[735, 3177], [725, 3175], [725, 3181], [752, 3187], [735, 3177]]], [[[-478, 2741], [-509, 2724], [-476, 2727], [-492, 2716], [-574, 2704], [-597, 2711], [-551, 2713], [-526, 2758], [-501, 2752], [-507, 2737], [-487, 2749], [-478, 2741]]], [[[1452, 2689], [1461, 2728], [1438, 2724], [1443, 2751], [1435, 2778], [1419, 2778], [1414, 2794], [1439, 2796], [1449, 2769], [1468, 2766], [1516, 2700], [1532, 2652], [1522, 2641], [1495, 2679], [1475, 2669], [1476, 2693], [1452, 2689]]], [[[1292, 2882], [1302, 2902], [1330, 2883], [1354, 2825], [1358, 2769], [1323, 2816], [1325, 2832], [1311, 2830], [1320, 2852], [1308, 2856], [1308, 2872], [1292, 2882]]], [[[362, 2955], [355, 2938], [381, 2954], [386, 2936], [380, 2918], [395, 2917], [382, 2900], [349, 2913], [366, 2899], [363, 2889], [337, 2894], [303, 2868], [278, 2838], [275, 2849], [298, 2883], [281, 2883], [271, 2862], [256, 2873], [259, 2892], [247, 2904], [253, 2919], [284, 2939], [295, 2933], [298, 2909], [306, 2934], [302, 2950], [318, 2956], [321, 2936], [329, 2963], [348, 2946], [340, 2965], [362, 2955]]], [[[1277, 2920], [1294, 2891], [1278, 2884], [1270, 2906], [1243, 2925], [1247, 2941], [1271, 2972], [1321, 2953], [1323, 2931], [1299, 2928], [1309, 2919], [1325, 2926], [1333, 2899], [1320, 2896], [1277, 2920]]], [[[1355, 2884], [1341, 2912], [1326, 2962], [1314, 2989], [1331, 2969], [1358, 2968], [1379, 2937], [1376, 2926], [1357, 2961], [1361, 2939], [1379, 2919], [1383, 2888], [1350, 2853], [1347, 2875], [1355, 2884]]], [[[-347, 3767], [-339, 3759], [-322, 3764], [-307, 3758], [-307, 3734], [-290, 3713], [-256, 3692], [-266, 3681], [-286, 3692], [-315, 3679], [-313, 3698], [-337, 3738], [-353, 3750], [-371, 3746], [-381, 3757], [-379, 3773], [-362, 3796], [-362, 3776], [-347, 3767]]], [[[1402, 2834], [1394, 2792], [1400, 2779], [1385, 2761], [1377, 2790], [1389, 2804], [1373, 2811], [1364, 2838], [1379, 2842], [1395, 2828], [1402, 2835], [1401, 2839], [1383, 2863], [1396, 2866], [1441, 2858], [1445, 2825], [1422, 2845], [1441, 2817], [1439, 2809], [1410, 2805], [1402, 2834]]]] } }, { "type": "Feature", "properties": { "hc-group": "__separator_lines__" }, "geometry": { "type": "MultiLineString", "coordinates": [[[-707, 5188], [3651, 2950]], [[1747, 2584], [1747, 3799]]] } }]
}
/*
 Highcharts JS v9.1.0 (2021-05-03)

 Plugin for displaying a message when there is no data visible in chart.

 (c) 2010-2021 Highsoft AS
 Author: Oystein Moseng

 License: www.highcharts.com/license
*/
(function (a) { "object" === typeof module && module.exports ? (a["default"] = a, module.exports = a) : "function" === typeof define && define.amd ? define("highcharts/modules/no-data-to-display", ["highcharts"], function (b) { a(b); a.Highcharts = b; return a }) : a("undefined" !== typeof Highcharts ? Highcharts : void 0) })(function (a) {
    function b(a, b, e, g) { a.hasOwnProperty(b) || (a[b] = g.apply(null, e)) } a = a ? a._modules : {}; b(a, "Extensions/NoDataToDisplay.js", [a["Core/Renderer/HTML/AST.js"], a["Core/Chart/Chart.js"], a["Core/Options.js"], a["Core/Color/Palette.js"],
    a["Core/Utilities.js"]], function (a, b, e, g, d) {
        var f = e.getOptions; e = d.addEvent; var h = d.extend; d = b.prototype; f = f(); h(f.lang, { noData: "No data to display" }); f.noData = { attr: { zIndex: 1 }, position: { x: 0, y: 0, align: "center", verticalAlign: "middle" }, style: { fontWeight: "bold", fontSize: "12px", color: g.neutralColor60 } }; d.showNoData = function (b) {
            var c = this.options; b = b || c && c.lang.noData; c = c && (c.noData || {}); this.renderer && (this.noDataLabel || (this.noDataLabel = this.renderer.label(b, 0, 0, void 0, void 0, void 0, c.useHTML, void 0,
                "no-data").add()), this.styledMode || this.noDataLabel.attr(a.filterUserAttributes(c.attr || {})).css(c.style || {}), this.noDataLabel.align(h(this.noDataLabel.getBBox(), c.position || {}), !1, "plotBox"))
        }; d.hideNoData = function () { this.noDataLabel && (this.noDataLabel = this.noDataLabel.destroy()) }; d.hasData = function () { for (var a = this.series || [], b = a.length; b--;)if (a[b].hasData() && !a[b].options.isInternal) return !0; return this.loadingShown }; e(b, "render", function () { this.hasData() ? this.hideNoData() : this.showNoData() })
    });
    b(a, "masters/modules/no-data-to-display.src.js", [], function () { })
});
//# sourceMappingURL=no-data-to-display.js.map
