highcharts.js 9001-12000

 文件过大分5部分

highcharts.js 0-3000_spencer_tseng的博客-CSDN博客
highcharts.js 3001-6000_spencer_tseng的博客-CSDN博客
highcharts.js 6001-9000_spencer_tseng的博客-CSDN博客
highcharts.js 9001-12000_spencer_tseng的博客-CSDN博客
highcharts.js 12001-12677_spencer_tseng的博客-CSDN博客

highcharts.js 9001-12000

				return y(c, a.length - 1)
			};
			a.prototype.bindAxes = function() {
				var a = this,
				c = a.options,
				d = a.chart,
				e;
				w(this, "bindAxes", null,
				function() { (a.axisTypes || []).forEach(function(h) {
						var f = 0;
						d[h].forEach(function(b) {
							e = b.options;
							if (c[h] === f && !e.isInternal || "undefined" !== typeof c[h] && c[h] === e.id || "undefined" === typeof c[h] && 0 === e.index) a.insert(b.series),
							a[h] = b,
							b.isDirty = !0;
							e.isInternal || f++
						});
						a[h] || a.optionalAxis === h || b(18, !0, d)
					})
				});
				w(this, "afterBindAxes")
			};
			a.prototype.updateParallelArrays = function(a, b) {
				var c = a.series,
				d = arguments,
				e = O(b) ?
				function(d) {
					var e = "y" === d && c.toYData ? c.toYData(a) : a[d];
					c[d + "Data"][b] = e
				}: function(a) {
					Array.prototype[b].apply(c[a + "Data"], Array.prototype.slice.call(d, 2))
				};
				c.parallelArrays.forEach(e)
			};
			a.prototype.hasData = function() {
				return this.visible && "undefined" !== typeof this.dataMax && "undefined" !== typeof this.dataMin || this.visible && this.yData && 0 < this.yData.length
			};
			a.prototype.autoIncrement = function(a) {
				var b = this.options,
				c = b.pointIntervalUnit,
				d = b.relativeXValue,
				e = this.chart.time,
				h = this.xIncrement,
				f;
				h = y(h, b.pointStart, 0);
				this.pointInterval = f = y(this.pointInterval, b.pointInterval, 1);
				d && O(a) && (f *= a);
				c && (b = new e.Date(h), "day" === c ? e.set("Date", b, e.get("Date", b) + f) : "month" === c ? e.set("Month", b, e.get("Month", b) + f) : "year" === c && e.set("FullYear", b, e.get("FullYear", b) + f), f = b.getTime() - h);
				if (d && O(a)) return h + f;
				this.xIncrement = h + f;
				return h
			};
			a.prototype.setDataSortingOptions = function() {
				var a = this.options;
				p(this, {
					requireSorting: !1,
					sorted: !1,
					enabledDataSorting: !0,
					allowDG: !1
				});
				h(a.pointRange) || (a.pointRange = 1)
			};
			a.prototype.setOptions = function(a) {
				var b = this.chart,
				c = b.options,
				d = c.plotOptions,
				e = b.userOptions || {};
				a = S(a);
				b = b.styledMode;
				var f = {
					plotOptions: d,
					userOptions: a
				};
				w(this, "setOptions", f);
				var g = f.plotOptions[this.type],
				k = e.plotOptions || {};
				this.userOptions = f.userOptions;
				e = S(g, d.series, e.plotOptions && e.plotOptions[this.type], a);
				this.tooltipOptions = S(l.tooltip, l.plotOptions.series && l.plotOptions.series.tooltip, l.plotOptions[this.type].tooltip, c.tooltip.userOptions, d.series && d.series.tooltip, d[this.type].tooltip, a.tooltip);
				this.stickyTracking = y(a.stickyTracking, k[this.type] && k[this.type].stickyTracking, k.series && k.series.stickyTracking, this.tooltipOptions.shared && !this.noSharedTooltip ? !0 : e.stickyTracking);
				null === g.marker && delete e.marker;
				this.zoneAxis = e.zoneAxis;
				d = this.zones = (e.zones || []).slice(); ! e.negativeColor && !e.negativeFillColor || e.zones || (c = {
					value: e[this.zoneAxis + "Threshold"] || e.threshold || 0,
					className: "highcharts-negative"
				},
				b || (c.color = e.negativeColor, c.fillColor = e.negativeFillColor), d.push(c));
				d.length && h(d[d.length - 1].value) && d.push(b ? {}: {
					color: this.color,
					fillColor: this.fillColor
				});
				w(this, "afterSetOptions", {
					options: e
				});
				return e
			};
			a.prototype.getName = function() {
				return y(this.options.name, "Series " + (this.index + 1))
			};
			a.prototype.getCyclic = function(a, b, c) {
				var d = this.chart,
				e = this.userOptions,
				f = a + "Index",
				g = a + "Counter",
				k = c ? c.length: y(d.options.chart[a + "Count"], d[a + "Count"]);
				if (!b) {
					var l = y(e[f], e["_" + f]);
					h(l) || (d.series.length || (d[g] = 0), e["_" + f] = l = d[g] % k, d[g] += 1);
					c && (b = c[l])
				}
				"undefined" !== typeof l && (this[f] = l);
				this[a] = b
			};
			a.prototype.getColor = function() {
				this.chart.styledMode ? this.getCyclic("color") : this.options.colorByPoint ? this.color = "#cccccc": this.getCyclic("color", this.options.color || l.plotOptions[this.type].color, this.chart.options.colors)
			};
			a.prototype.getPointsCollection = function() {
				return (this.hasGroupedData ? this.points: this.data) || []
			};
			a.prototype.getSymbol = function() {
				this.getCyclic("symbol", this.options.marker.symbol, this.chart.options.symbols)
			};
			a.prototype.findPointIndex = function(a, b) {
				var c = a.id,
				d = a.x,
				e = this.points,
				h = this.options.dataSorting,
				f, g;
				if (c) h = this.chart.get(c),
				h instanceof B && (f = h);
				else if (this.linkedParent || this.enabledDataSorting || this.options.relativeXValue) if (f = function(b) {
					return ! b.touched && b.index === a.index
				},
				h && h.matchByName ? f = function(b) {
					return ! b.touched && b.name === a.name
				}: this.options.relativeXValue && (f = function(b) {
					return ! b.touched && b.options.x === a.x
				}), f = z(e, f), !f) return;
				if (f) {
					var k = f && f.index;
					"undefined" !== typeof k && (g = !0)
				}
				"undefined" === typeof k && O(d) && (k = this.xData.indexOf(d, b)); - 1 !== k && "undefined" !== typeof k && this.cropped && (k = k >= this.cropStart ? k - this.cropStart: k); ! g && O(k) && e[k] && e[k].touched && (k = void 0);
				return k
			};
			a.prototype.updateData = function(a, b) {
				var c = this.options,
				d = c.dataSorting,
				e = this.points,
				f = [],
				g = this.requireSorting,
				k = a.length === e.length,
				l,
				m,
				p,
				n = !0;
				this.xIncrement = null;
				a.forEach(function(a, b) {
					var m = h(a) && this.pointClass.prototype.optionsToObject.call({
						series: this
					},
					a) || {},
					n = m.x;
					if (m.id || O(n)) {
						if (m = this.findPointIndex(m, p), -1 === m || "undefined" === typeof m ? f.push(a) : e[m] && a !== c.data[m] ? (e[m].update(a, !1, null, !1), e[m].touched = !0, g && (p = m + 1)) : e[m] && (e[m].touched = !0), !k || b !== m || d && d.enabled || this.hasDerivedData) l = !0
					} else f.push(a)
				},
				this);
				if (l) for (a = e.length; a--;)(m = e[a]) && !m.touched && m.remove && m.remove(!1, b);
				else ! k || d && d.enabled ? n = !1 : (a.forEach(function(a, b) {
					a !== e[b].y && e[b].update && e[b].update(a, !1, null, !1)
				}), f.length = 0);
				e.forEach(function(a) {
					a && (a.touched = !1)
				});
				if (!n) return ! 1;
				f.forEach(function(a) {
					this.addPoint(a, !1, null, null, !1)
				},
				this);
				null === this.xIncrement && this.xData && this.xData.length && (this.xIncrement = I(this.xData), this.autoIncrement());
				return ! 0
			};
			a.prototype.setData = function(a, c, d, e) {
				void 0 === c && (c = !0);
				var h = this,
				f = h.points,
				g = f && f.length || 0,
				k = h.options,
				l = h.chart,
				m = k.dataSorting,
				p = h.xAxis,
				n = k.turboThreshold,
				F = this.xData,
				q = this.yData,
				u = h.pointArrayMap;
				u = u && u.length;
				var w = k.keys,
				z, y = 0,
				t = 1,
				r = null;
				if (!l.options.chart.allowMutatingData) {
					k.data && delete h.options.data;
					h.userOptions.data && delete h.userOptions.data;
					var A = S(!0, a)
				}
				a = A || a || [];
				A = a.length;
				m && m.enabled && (a = this.sortData(a));
				l.options.chart.allowMutatingData && !1 !== e && A && g && !h.cropped && !h.hasGroupedData && h.visible && !h.boosted && (z = this.updateData(a, d));
				if (!z) {
					h.xIncrement = null;
					h.colorCounter = 0;
					this.parallelArrays.forEach(function(a) {
						h[a + "Data"].length = 0
					});
					if (n && A > n) if (r = h.getFirstValidPoint(a), O(r)) for (d = 0; d < A; d++) F[d] = this.autoIncrement(),
					q[d] = a[d];
					else if (H(r)) if (u) if (r.length === u) for (d = 0; d < A; d++) F[d] = this.autoIncrement(),
					q[d] = a[d];
					else for (d = 0; d < A; d++) e = a[d],
					F[d] = e[0],
					q[d] = e.slice(1, u + 1);
					else if (w && (y = w.indexOf("x"), t = w.indexOf("y"), y = 0 <= y ? y: 0, t = 0 <= t ? t: 1), 1 === r.length && (t = 0), y === t) for (d = 0; d < A; d++) F[d] = this.autoIncrement(),
					q[d] = a[d][t];
					else for (d = 0; d < A; d++) e = a[d],
					F[d] = e[y],
					q[d] = e[t];
					else b(12, !1, l);
					else for (d = 0; d < A; d++)"undefined" !== typeof a[d] && (e = {
						series: h
					},
					h.pointClass.prototype.applyOptions.apply(e, [a[d]]), h.updateParallelArrays(e, d));
					q && Q(q[0]) && b(14, !0, l);
					h.data = [];
					h.options.data = h.userOptions.data = a;
					for (d = g; d--;) f[d] && f[d].destroy && f[d].destroy();
					p && (p.minRange = p.userMinRange);
					h.isDirty = l.isDirtyBox = !0;
					h.isDirtyData = !!f;
					d = !1
				}
				"point" === k.legendType && (this.processData(), this.generatePoints());
				c && l.redraw(d)
			};
			a.prototype.sortData = function(a) {
				var b = this,
				c = b.options.dataSorting.sortKey || "y",
				d = function(a, b) {
					return h(b) && a.pointClass.prototype.optionsToObject.call({
						series: a
					},
					b) || {}
				};
				a.forEach(function(c, e) {
					a[e] = d(b, c);
					a[e].index = e
				},
				this);
				a.concat().sort(function(a, b) {
					a = N(c, a);
					b = N(c, b);
					return b < a ? -1 : b > a ? 1 : 0
				}).forEach(function(a, b) {
					a.x = b
				},
				this);
				b.linkedSeries && b.linkedSeries.forEach(function(b) {
					var c = b.options,
					e = c.data;
					c.dataSorting && c.dataSorting.enabled || !e || (e.forEach(function(c, h) {
						e[h] = d(b, c);
						a[h] && (e[h].x = a[h].x, e[h].index = h)
					}), b.setData(e, !1))
				});
				return a
			};
			a.prototype.getProcessedData = function(a) {
				var c = this.xAxis,
				d = this.options,
				e = d.cropThreshold,
				h = a || this.getExtremesFromAll || d.getExtremesFromAll,
				f = this.isCartesian;
				a = c && c.val2lin;
				d = !(!c || !c.logarithmic);
				var g = 0,
				k = this.xData,
				l = this.yData,
				m = this.requireSorting;
				var p = !1;
				var n = k.length;
				if (c) {
					p = c.getExtremes();
					var F = p.min;
					var q = p.max;
					p = !(!c.categories || c.names.length)
				}
				if (f && this.sorted && !h && (!e || n > e || this.forceCrop)) if (k[n - 1] < F || k[0] > q) k = [],
				l = [];
				else if (this.yData && (k[0] < F || k[n - 1] > q)) {
					var u = this.cropData(this.xData, this.yData, F, q);
					k = u.xData;
					l = u.yData;
					g = u.start;
					u = !0
				}
				for (e = k.length || 1; --e;) if (c = d ? a(k[e]) - a(k[e - 1]) : k[e] - k[e - 1], 0 < c && ("undefined" === typeof w || c < w)) var w = c;
				else 0 > c && m && !p && (b(15, !1, this.chart), m = !1);
				return {
					xData: k,
					yData: l,
					cropped: u,
					cropStart: g,
					closestPointRange: w
				}
			};
			a.prototype.processData = function(a) {
				var b = this.xAxis;
				if (this.isCartesian && !this.isDirty && !b.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;
				w(this, "afterProcessData")
			};
			a.prototype.cropData = function(a, b, c, d, e) {
				var h = a.length,
				f, g = 0,
				k = h;
				e = y(e, this.cropShoulder);
				for (f = 0; f < h; f++) if (a[f] >= c) {
					g = Math.max(0, f - e);
					break
				}
				for (c = f; c < h; c++) if (a[c] > d) {
					k = c + e;
					break
				}
				return {
					xData: a.slice(g, k),
					yData: b.slice(g, k),
					start: g,
					end: k
				}
			};
			a.prototype.generatePoints = function() {
				var a = this.options,
				b = this.processedData || a.data,
				c = this.processedXData,
				d = this.processedYData,
				e = this.pointClass,
				h = c.length,
				f = this.cropStart || 0,
				g = this.hasGroupedData,
				k = a.keys,
				l = [];
				a = a.dataGrouping && a.dataGrouping.groupAll ? f: 0;
				var m, n, q = this.data;
				if (!q && !g) {
					var u = [];
					u.length = b.length;
					q = this.data = u
				}
				k && g && (this.options.keys = !1);
				for (n = 0; n < h; n++) {
					u = f + n;
					if (g) {
						var z = (new e).init(this, [c[n]].concat(K(d[n])));
						z.dataGroup = this.groupMap[a + n];
						z.dataGroup.options && (z.options = z.dataGroup.options, p(z, z.dataGroup.options), delete z.dataLabels)
					} else(z = q[u]) || "undefined" === typeof b[u] || (q[u] = z = (new e).init(this, b[u], c[n]));
					z && (z.index = g ? a + n: u, l[n] = z)
				}
				this.options.keys = k;
				if (q && (h !== (m = q.length) || g)) for (n = 0; n < m; n++) n !== f || g || (n += h),
				q[n] && (q[n].destroyElements(), q[n].plotX = void 0);
				this.data = q;
				this.points = l;
				w(this, "afterGeneratePoints")
			};
			a.prototype.getXExtremes = function(a) {
				return {
					min: L(a),
					max: I(a)
				}
			};
			a.prototype.getExtremes = function(a, b) {
				var c = this.xAxis,
				d = this.yAxis,
				e = this.processedXData || this.xData,
				h = [],
				f = this.requireSorting ? this.cropShoulder: 0;
				d = d ? d.positiveValuesOnly: !1;
				var g, k = 0,
				l = 0,
				m = 0;
				a = a || this.stackedYData || this.processedYData || [];
				var p = a.length;
				if (c) {
					var n = c.getExtremes();
					k = n.min;
					l = n.max
				}
				for (g = 0; g < p; g++) {
					var q = e[g];
					n = a[g];
					var u = (O(n) || H(n)) && (n.length || 0 < n || !d);
					q = b || this.getExtremesFromAll || this.options.getExtremesFromAll || this.cropped || !c || (e[g + f] || q) >= k && (e[g - f] || q) <= l;
					if (u && q) if (u = n.length) for (; u--;) O(n[u]) && (h[m++] = n[u]);
					else h[m++] = n
				}
				a = {
					activeYData: h,
					dataMin: L(h),
					dataMax: I(h)
				};
				w(this, "afterGetExtremes", {
					dataExtremes: a
				});
				return a
			};
			a.prototype.applyExtremes = function() {
				var a = this.getExtremes();
				this.dataMin = a.dataMin;
				this.dataMax = a.dataMax;
				return a
			};
			a.prototype.getFirstValidPoint = function(a) {
				for (var b = a.length,
				c = 0,
				d = null; null === d && c < b;) d = a[c],
				c++;
				return d
			};
			a.prototype.translate = function() {
				this.processedXData || this.processData();
				this.generatePoints();
				var a = this.options,
				b = a.stacking,
				c = this.xAxis,
				d = c.categories,
				e = this.enabledDataSorting,
				f = this.yAxis,
				g = this.points,
				k = g.length,
				l = this.pointPlacementToXValue(),
				m = !!l,
				p = a.threshold,
				n = a.startFromThreshold ? p: 0,
				u = this.zoneAxis || "y",
				z,
				t,
				r = Number.MAX_VALUE;
				for (z = 0; z < k; z++) {
					var C = g[z],
					v = C.x,
					x = void 0,
					I = void 0,
					N = C.y,
					J = C.low,
					D = b && f.stacking && f.stacking.stacks[(this.negStacks && N < (n ? 0 : p) ? "-": "") + this.stackKey];
					if (f.positiveValuesOnly && !f.validatePositiveValue(N) || c.positiveValuesOnly && !c.validatePositiveValue(v)) C.isNull = !0;
					C.plotX = t = q(A(c.translate(v, 0, 0, 0, 1, l, "flags" === this.type), -1E5, 1E5));
					if (b && this.visible && D && D[v]) {
						var B = this.getStackIndicator(B, v, this.index);
						C.isNull || (x = D[v], I = x.points[B.key])
					}
					H(I) && (J = I[0], N = I[1], J === n && B.key === D[v].base && (J = y(O(p) && p, f.min)), f.positiveValuesOnly && 0 >= J && (J = null), C.total = C.stackTotal = x.total, C.percentage = x.total && C.y / x.total * 100, C.stackY = N, this.irregularWidths || x.setOffset(this.pointXOffset || 0, this.barW || 0));
					C.yBottom = h(J) ? A(f.translate(J, 0, 1, 0, 1), -1E5, 1E5) : null;
					this.dataModify && (N = this.dataModify.modifyValue(N, z));
					C.plotY = void 0;
					O(N) && (x = f.translate(N, !1, !0, !1, !0), "undefined" !== typeof x && (C.plotY = A(x, -1E5, 1E5)));
					C.isInside = this.isPointInside(C);
					C.clientX = m ? q(c.translate(v, 0, 0, 0, 1, l)) : t;
					C.negative = C[u] < (a[u + "Threshold"] || p || 0);
					C.category = y(d && d[C.x], C.x);
					if (!C.isNull && !1 !== C.visible) {
						"undefined" !== typeof E && (r = Math.min(r, Math.abs(t - E)));
						var E = t
					}
					C.zone = this.zones.length ? C.getZone() : void 0; ! C.graphic && this.group && e && (C.isNew = !0)
				}
				this.closestPointRangePx = r;
				w(this, "afterTranslate")
			};
			a.prototype.getValidPoints = function(a, b, c) {
				var d = this.chart;
				return (a || this.points || []).filter(function(a) {
					return b && !d.isInsidePlot(a.plotX, a.plotY, {
						inverted: d.inverted
					}) ? !1 : !1 !== a.visible && (c || !a.isNull)
				})
			};
			a.prototype.getClipBox = function() {
				var a = this.chart,
				b = this.xAxis,
				c = this.yAxis,
				d = S(a.clipBox);
				b && b.len !== a.plotSizeX && (d.width = b.len);
				c && c.len !== a.plotSizeY && (d.height = c.len);
				return d
			};
			a.prototype.getSharedClipKey = function() {
				return this.sharedClipKey = (this.options.xAxis || 0) + "," + (this.options.yAxis || 0)
			};
			a.prototype.setClip = function() {
				var a = this.chart,
				b = this.group,
				c = this.markerGroup,
				d = a.sharedClips;
				a = a.renderer;
				var e = this.getClipBox(),
				h = this.getSharedClipKey(),
				f = d[h];
				f ? f.animate(e) : d[h] = f = a.clipRect(e);
				b && b.clip(!1 === this.options.clip ? void 0 : f);
				c && c.clip()
			};
			a.prototype.animate = function(a) {
				var b = this.chart,
				c = this.group,
				d = this.markerGroup,
				e = b.inverted,
				h = f(this.options.animation),
				g = [this.getSharedClipKey(), h.duration, h.easing, h.defer].join(),
				k = b.sharedClips[g],
				l = b.sharedClips[g + "m"];
				if (a && c) h = this.getClipBox(),
				k ? k.attr("height", h.height) : (h.width = 0, e && (h.x = b.plotHeight), k = b.renderer.clipRect(h), b.sharedClips[g] = k, l = b.renderer.clipRect({
					x: e ? (b.plotSizeX || 0) + 99 : -99,
					y: e ? -b.plotLeft: -b.plotTop,
					width: 99,
					height: e ? b.chartWidth: b.chartHeight
				}), b.sharedClips[g + "m"] = l),
				c.clip(k),
				d && d.clip(l);
				else if (k && !k.hasClass("highcharts-animating")) {
					b = this.getClipBox();
					var m = h.step;
					d && d.element.childNodes.length && (h.step = function(a, b) {
						m && m.apply(b, arguments);
						l && l.element && l.attr(b.prop, "width" === b.prop ? a + 99 : a)
					});
					k.addClass("highcharts-animating").animate(b, h)
				}
			};
			a.prototype.afterAnimate = function() {
				var a = this;
				this.setClip();
				Y(this.chart.sharedClips,
				function(b, c, d) {
					b && !a.chart.container.querySelector('[clip-path="url(#'.concat(b.id, ')"]')) && (b.destroy(), delete d[c])
				});
				this.finishedAnimating = !0;
				w(this, "afterAnimate")
			};
			a.prototype.drawPoints = function(a) {
				void 0 === a && (a = this.points);
				var b = this.chart,
				c = this.options.marker,
				d = this[this.specialGroup] || this.markerGroup,
				e = this.xAxis,
				h = y(c.enabled, !e || e.isRadial ? !0 : null, this.closestPointRangePx >= c.enabledThreshold * c.radius),
				f,
				g;
				if (!1 !== c.enabled || this._hasPointMarkers) for (f = 0; f < a.length; f++) {
					var k = a[f];
					var l = (g = k.graphic) ? "animate": "attr";
					var m = k.marker || {};
					var p = !!k.marker;
					if ((h && "undefined" === typeof m.enabled || m.enabled) && !k.isNull && !1 !== k.visible) {
						var n = y(m.symbol, this.symbol, "rect");
						var q = this.markerAttribs(k, k.selected && "select");
						this.enabledDataSorting && (k.startXPos = e.reversed ? -(q.width || 0) : e.width);
						var u = !1 !== k.isInside;
						g ? g[u ? "show": "hide"](u).animate(q) : u && (0 < (q.width || 0) || k.hasImage) && (k.graphic = g = b.renderer.symbol(n, q.x, q.y, q.width, q.height, p ? m: c).add(d), this.enabledDataSorting && b.hasRendered && (g.attr({
							x: k.startXPos
						}), l = "animate"));
						g && "animate" === l && g[u ? "show": "hide"](u).animate(q);
						if (g && !b.styledMode) g[l](this.pointAttribs(k, k.selected && "select"));
						g && g.addClass(k.getClassName(), !0)
					} else g && (k.graphic = g.destroy())
				}
			};
			a.prototype.markerAttribs = function(a, b) {
				var c = this.options,
				d = c.marker,
				e = a.marker || {},
				h = e.symbol || d.symbol,
				f = y(e.radius, d && d.radius);
				b && (d = d.states[b], b = e.states && e.states[b], f = y(b && b.radius, d && d.radius, f && f + (d && d.radiusPlus || 0)));
				a.hasImage = h && 0 === h.indexOf("url");
				a.hasImage && (f = 0);
				a = O(f) ? {
					x: c.crisp ? Math.floor(a.plotX - f) : a.plotX - f,
					y: a.plotY - f
				}: {};
				f && (a.width = a.height = 2 * f);
				return a
			};
			a.prototype.pointAttribs = function(a, b) {
				var c = this.options.marker,
				d = a && a.options,
				e = d && d.marker || {},
				h = d && d.color,
				f = a && a.color,
				g = a && a.zone && a.zone.color,
				k = this.color;
				a = y(e.lineWidth, c.lineWidth);
				d = 1;
				k = h || g || f || k;
				h = e.fillColor || c.fillColor || k;
				f = e.lineColor || c.lineColor || k;
				b = b || "normal";
				c = c.states[b] || {};
				b = e.states && e.states[b] || {};
				a = y(b.lineWidth, c.lineWidth, a + y(b.lineWidthPlus, c.lineWidthPlus, 0));
				h = b.fillColor || c.fillColor || h;
				f = b.lineColor || c.lineColor || f;
				d = y(b.opacity, c.opacity, d);
				return {
					stroke: f,
					"stroke-width": a,
					fill: h,
					opacity: d
				}
			};
			a.prototype.destroy = function(a) {
				var b = this,
				c = b.chart,
				d = /AppleWebKit\/533/.test(C.navigator.userAgent),
				e = b.data || [],
				h,
				f,
				g,
				l;
				w(b, "destroy", {
					keepEventsForUpdate: a
				});
				this.removeEvents(a); (b.axisTypes || []).forEach(function(a) { (l = b[a]) && l.series && (k(l.series, b), l.isDirty = l.forceRedraw = !0)
				});
				b.legendItem && b.chart.legend.destroyItem(b);
				for (f = e.length; f--;)(g = e[f]) && g.destroy && g.destroy();
				b.clips && b.clips.forEach(function(a) {
					return a.destroy()
				});
				n.clearTimeout(b.animationTimeout);
				Y(b,
				function(a, b) {
					a instanceof t && !a.survive && (h = d && "group" === b ? "hide": "destroy", a[h]())
				});
				c.hoverSeries === b && (c.hoverSeries = void 0);
				k(c.series, b);
				c.orderSeries();
				Y(b,
				function(c, d) {
					a && "hcEvents" === d || delete b[d]
				})
			};
			a.prototype.applyZones = function() {
				var a = this,
				b = this.chart,
				c = b.renderer,
				d = this.zones,
				e = this.clips || [],
				h = this.graph,
				f = this.area,
				g = Math.max(b.plotWidth, b.plotHeight),
				k = this[(this.zoneAxis || "y") + "Axis"],
				l = b.inverted,
				m,
				p,
				n,
				q,
				u,
				w,
				z,
				t,
				r = !1;
				if (d.length && (h || f) && k && "undefined" !== typeof k.min) {
					var C = k.reversed;
					var v = k.horiz;
					h && !this.showLine && h.hide();
					f && f.hide();
					var H = k.getExtremes();
					d.forEach(function(d, F) {
						m = C ? v ? b.plotWidth: 0 : v ? 0 : k.toPixels(H.min) || 0;
						m = A(y(p, m), 0, g);
						p = A(Math.round(k.toPixels(y(d.value, H.max), !0) || 0), 0, g);
						r && (m = p = k.toPixels(H.max));
						q = Math.abs(m - p);
						u = Math.min(m, p);
						w = Math.max(m, p);
						k.isXAxis ? (n = {
							x: l ? w: u,
							y: 0,
							width: q,
							height: g
						},
						v || (n.x = b.plotHeight - n.x)) : (n = {
							x: 0,
							y: l ? w: u,
							width: g,
							height: q
						},
						v && (n.y = b.plotWidth - n.y));
						l && c.isVML && (n = k.isXAxis ? {
							x: 0,
							y: C ? u: w,
							height: n.width,
							width: b.chartWidth
						}: {
							x: n.y - b.plotLeft - b.spacingBox.x,
							y: 0,
							width: n.height,
							height: b.chartHeight
						});
						e[F] ? e[F].animate(n) : e[F] = c.clipRect(n);
						z = a["zone-area-" + F];
						t = a["zone-graph-" + F];
						h && t && t.clip(e[F]);
						f && z && z.clip(e[F]);
						r = d.value > H.max;
						a.resetZones && 0 === p && (p = void 0)
					});
					this.clips = e
				} else a.visible && (h && h.show(), f && f.show())
			};
			a.prototype.plotGroup = function(a, b, c, d, e) {
				var f = this[a],
				g = !f;
				c = {
					visibility: c,
					zIndex: d || .1
				};
				"undefined" === typeof this.opacity || this.chart.styledMode || "inactive" === this.state || (c.opacity = this.opacity);
				g && (this[a] = f = this.chart.renderer.g().add(e));
				f.addClass("highcharts-" + b + " highcharts-series-" + this.index + " highcharts-" + this.type + "-series " + (h(this.colorIndex) ? "highcharts-color-" + this.colorIndex + " ": "") + (this.options.className || "") + (f.hasClass("highcharts-tracker") ? " highcharts-tracker": ""), !0);
				f.attr(c)[g ? "attr": "animate"](this.getPlotBox(b));
				return f
			};
			a.prototype.getPlotBox = function(a) {
				var b = this.xAxis,
				c = this.yAxis,
				d = this.chart;
				a = d.inverted && !d.polar && b && !1 !== this.invertible && ("markers" === a || "series" === a);
				d.inverted && (b = c, c = this.xAxis);
				return {
					translateX: b ? b.left: d.plotLeft,
					translateY: c ? c.top: d.plotTop,
					rotation: a ? 90 : 0,
					rotationOriginX: a ? (b.len - c.len) / 2 : 0,
					rotationOriginY: a ? (b.len + c.len) / 2 : 0,
					scaleX: a ? -1 : 1,
					scaleY: 1
				}
			};
			a.prototype.removeEvents = function(a) {
				a || T(this);
				this.eventsToUnbind.length && (this.eventsToUnbind.forEach(function(a) {
					a()
				}), this.eventsToUnbind.length = 0)
			};
			a.prototype.render = function() {
				var a = this,
				b = a.chart,
				c = a.options,
				d = f(c.animation),
				e = a.visible ? "inherit": "hidden",
				h = c.zIndex,
				g = a.hasRendered,
				k = b.seriesGroup;
				b = !a.finishedAnimating && b.renderer.isSVG ? d.duration: 0;
				w(this, "render");
				a.plotGroup("group", "series", e, h, k);
				a.markerGroup = a.plotGroup("markerGroup", "markers", e, h, k); ! 1 !== c.clip && a.setClip();
				a.animate && b && a.animate(!0);
				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.animate && b && a.animate();
				g || (b && d.defer && (b += d.defer), a.animationTimeout = ca(function() {
					a.afterAnimate()
				},
				b || 0));
				a.isDirty = !1;
				a.hasRendered = !0;
				w(a, "afterRender")
			};
			a.prototype.redraw = function() {
				var a = this.isDirty || this.isDirtyData;
				this.translate();
				this.render();
				a && delete this.kdTree
			};
			a.prototype.searchPoint = function(a, b) {
				var c = this.xAxis,
				d = this.yAxis,
				e = this.chart.inverted;
				return this.searchKDTree({
					clientX: e ? c.len - a.chartY + c.pos: a.chartX - c.pos,
					plotY: e ? d.len - a.chartX + d.pos: a.chartY - d.pos
				},
				b, a)
			};
			a.prototype.buildKDTree = function(a) {
				function b(a, d, e) {
					var h = a && a.length;
					if (h) {
						var f = c.kdAxisArray[d % e];
						a.sort(function(a, b) {
							return a[f] - b[f]
						});
						h = Math.floor(h / 2);
						return {
							point: a[h],
							left: b(a.slice(0, h), d + 1, e),
							right: b(a.slice(h + 1), d + 1, e)
						}
					}
				}
				this.buildingKdTree = !0;
				var c = this,
				d = -1 < c.options.findNearestPointBy.indexOf("y") ? 2 : 1;
				delete c.kdTree;
				ca(function() {
					c.kdTree = b(c.getValidPoints(null, !c.directTouch), d, d);
					c.buildingKdTree = !1
				},
				c.options.kdNow || a && "touchstart" === a.type ? 0 : 1)
			};
			a.prototype.searchKDTree = function(a, b, c) {
				function d(a, b, c, l) {
					var m = b.point,
					p = e.kdAxisArray[c % l],
					n = m,
					q = h(a[f]) && h(m[f]) ? Math.pow(a[f] - m[f], 2) : null;
					var u = h(a[g]) && h(m[g]) ? Math.pow(a[g] - m[g], 2) : null;
					u = (q || 0) + (u || 0);
					m.dist = h(u) ? Math.sqrt(u) : Number.MAX_VALUE;
					m.distX = h(q) ? Math.sqrt(q) : Number.MAX_VALUE;
					p = a[p] - m[p];
					u = 0 > p ? "left": "right";
					q = 0 > p ? "right": "left";
					b[u] && (u = d(a, b[u], c + 1, l), n = u[k] < n[k] ? u: m);
					b[q] && Math.sqrt(p * p) < n[k] && (a = d(a, b[q], c + 1, l), n = a[k] < n[k] ? a: n);
					return n
				}
				var e = this,
				f = this.kdAxisArray[0],
				g = this.kdAxisArray[1],
				k = b ? "distX": "dist";
				b = -1 < e.options.findNearestPointBy.indexOf("y") ? 2 : 1;
				this.kdTree || this.buildingKdTree || this.buildKDTree(c);
				if (this.kdTree) return d(a, this.kdTree, b, b)
			};
			a.prototype.pointPlacementToXValue = function() {
				var a = this.options,
				b = a.pointRange,
				c = this.xAxis;
				a = a.pointPlacement;
				"between" === a && (a = c.reversed ? -.5 : .5);
				return O(a) ? a * (b || c.pointRange) : 0
			};
			a.prototype.isPointInside = function(a) {
				var b = this.chart,
				c = this.xAxis,
				d = this.yAxis;
				return "undefined" !== typeof a.plotY && "undefined" !== typeof a.plotX && 0 <= a.plotY && a.plotY <= (d ? d.len: b.plotHeight) && 0 <= a.plotX && a.plotX <= (c ? c.len: b.plotWidth)
			};
			a.prototype.drawTracker = function() {
				var a = this,
				b = a.options,
				c = b.trackByArea,
				d = [].concat(c ? a.areaPath: a.graphPath),
				h = a.chart,
				f = h.pointer,
				g = h.renderer,
				k = h.options.tooltip.snap,
				l = a.tracker,
				m = function(b) {
					if (h.hoverSeries !== a) a.onMouseOver()
				},
				p = "rgba(192,192,192," + (u ? .0001 : .002) + ")";
				l ? l.attr({
					d: d
				}) : a.graph && (a.tracker = g.path(d).attr({
					visibility: a.visible ? "inherit": "hidden",
					zIndex: 2
				}).addClass(c ? "highcharts-tracker-area": "highcharts-tracker-line").add(a.group), h.styledMode || a.tracker.attr({
					"stroke-linecap": "round",
					"stroke-linejoin": "round",
					stroke: p,
					fill: c ? p: "none",
					"stroke-width": a.graph.strokeWidth() + (c ? 0 : 2 * k)
				}), [a.tracker, a.markerGroup, a.dataLabelsGroup].forEach(function(a) {
					if (a && (a.addClass("highcharts-tracker").on("mouseover", m).on("mouseout",
					function(a) {
						f.onTrackerMouseOut(a)
					}), b.cursor && !h.styledMode && a.css({
						cursor: b.cursor
					}), e)) a.on("touchstart", m)
				}));
				w(this, "afterDrawTracker")
			};
			a.prototype.addPoint = function(a, b, c, d, e) {
				var h = this.options,
				f = this.data,
				g = this.chart,
				k = this.xAxis;
				k = k && k.hasNames && k.names;
				var l = h.data,
				m = this.xData,
				p;
				b = y(b, !0);
				var n = {
					series: this
				};
				this.pointClass.prototype.applyOptions.apply(n, [a]);
				var u = n.x;
				var q = m.length;
				if (this.requireSorting && u < m[q - 1]) for (p = !0; q && m[q - 1] > u;) q--;
				this.updateParallelArrays(n, "splice", q, 0, 0);
				this.updateParallelArrays(n, q);
				k && n.name && (k[u] = n.name);
				l.splice(q, 0, a);
				if (p || this.processedData) this.data.splice(q, 0, null),
				this.processData();
				"point" === h.legendType && this.generatePoints();
				c && (f[0] && f[0].remove ? f[0].remove(!1) : (f.shift(), this.updateParallelArrays(n, "shift"), l.shift())); ! 1 !== e && w(this, "addPoint", {
					point: n
				});
				this.isDirtyData = this.isDirty = !0;
				b && g.redraw(d)
			};
			a.prototype.removePoint = function(a, b, d) {
				var e = this,
				h = e.data,
				f = h[a],
				g = e.points,
				k = e.chart,
				l = function() {
					g && g.length === h.length && g.splice(a, 1);
					h.splice(a, 1);
					e.options.data.splice(a, 1);
					e.updateParallelArrays(f || {
						series: e
					},
					"splice", a, 1);
					f && f.destroy();
					e.isDirty = !0;
					e.isDirtyData = !0;
					b && k.redraw()
				};
				c(d, k);
				b = y(b, !0);
				f ? f.firePointEvent("remove", null, l) : l()
			};
			a.prototype.remove = function(a, b, c, d) {
				function e() {
					h.destroy(d);
					f.isDirtyLegend = f.isDirtyBox = !0;
					f.linkSeries();
					y(a, !0) && f.redraw(b)
				}
				var h = this,
				f = h.chart; ! 1 !== c ? w(h, "remove", null, e) : e()
			};
			a.prototype.update = function(a, c) {
				a = d(a, this.userOptions);
				w(this, "update", {
					options: a
				});
				var e = this,
				h = e.chart,
				f = e.userOptions,
				g = e.initialType || e.type,
				k = h.options.plotOptions,
				l = v[g].prototype,
				m = e.finishedAnimating && {
					animation: !1
				},
				n = {},
				q = ["eventOptions", "navigatorSeries", "baseSeries"],
				u = a.type || f.type || h.options.chart.type,
				z = !(this.hasDerivedData || u && u !== this.type || "undefined" !== typeof a.pointStart || "undefined" !== typeof a.pointInterval || "undefined" !== typeof a.relativeXValue || a.joinBy || a.mapData || e.hasOptionChanged("dataGrouping") || e.hasOptionChanged("pointStart") || e.hasOptionChanged("pointInterval") || e.hasOptionChanged("pointIntervalUnit") || e.hasOptionChanged("keys"));
				u = u || g;
				z && (q.push("data", "isDirtyData", "points", "processedData", "processedXData", "processedYData", "xIncrement", "cropped", "_hasPointMarkers", "_hasPointLabels", "clips", "nodes", "layout", "level", "mapMap", "mapData", "minY", "maxY", "minX", "maxX"), !1 !== a.visible && q.push("area", "graph"), e.parallelArrays.forEach(function(a) {
					q.push(a + "Data")
				}), a.data && (a.dataSorting && p(e.options.dataSorting, a.dataSorting), this.setData(a.data, !1)));
				a = S(f, m, {
					index: "undefined" === typeof f.index ? e.index: f.index,
					pointStart: y(k && k.series && k.series.pointStart, f.pointStart, e.xData[0])
				},
				!z && {
					data: e.options.data
				},
				a);
				z && a.data && (a.data = e.options.data);
				q = ["group", "markerGroup", "dataLabelsGroup", "transformGroup", "shadowGroup"].concat(q);
				q.forEach(function(a) {
					q[a] = e[a];
					delete e[a]
				});
				k = !1;
				if (v[u]) {
					if (k = u !== e.type, e.remove(!1, !1, !1, !0), k) if (Object.setPrototypeOf) Object.setPrototypeOf(e, v[u].prototype);
					else {
						m = Object.hasOwnProperty.call(e, "hcEvents") && e.hcEvents;
						for (t in l) e[t] = void 0;
						p(e, v[u].prototype);
						m ? e.hcEvents = m: delete e.hcEvents
					}
				} else b(17, !0, h, {
					missingModuleFor: u
				});
				q.forEach(function(a) {
					e[a] = q[a]
				});
				e.init(h, a);
				if (z && this.points) {
					a = e.options;
					if (!1 === a.visible) n.graphic = 1,
					n.dataLabel = 1;
					else if (!e._hasPointLabels) {
						l = a.marker;
						var t = a.dataLabels; ! l || !1 !== l.enabled && (f.marker && f.marker.symbol) === l.symbol || (n.graphic = 1);
						t && !1 === t.enabled && (n.dataLabel = 1)
					}
					f = 0;
					for (l = this.points; f < l.length; f++)(t = l[f]) && t.series && (t.resolveColor(), Object.keys(n).length && t.destroyElements(n), !1 === a.showInLegend && t.legendItem && h.legend.destroyItem(t))
				}
				e.initialType = g;
				h.linkSeries();
				k && e.linkedSeries.length && (e.isDirtyData = !0);
				w(this, "afterUpdate");
				y(c, !0) && h.redraw(z ? void 0 : !1)
			};
			a.prototype.setName = function(a) {
				this.name = this.options.name = this.userOptions.name = a;
				this.chart.isDirtyLegend = !0
			};
			a.prototype.hasOptionChanged = function(a) {
				var b = this.options[a],
				c = this.chart.options.plotOptions,
				d = this.userOptions[a];
				return d ? b !== d: b !== y(c && c[this.type] && c[this.type][a], c && c.series && c.series[a], b)
			};
			a.prototype.onMouseOver = function() {
				var a = this.chart,
				b = a.hoverSeries;
				a.pointer.setHoverChartIndex();
				if (b && b !== this) b.onMouseOut();
				this.options.events.mouseOver && w(this, "mouseOver");
				this.setState("hover");
				a.hoverSeries = this
			};
			a.prototype.onMouseOut = function() {
				var a = this.options,
				b = this.chart,
				c = b.tooltip,
				d = b.hoverPoint;
				b.hoverSeries = null;
				if (d) d.onMouseOut();
				this && a.events.mouseOut && w(this, "mouseOut"); ! c || this.stickyTracking || c.shared && !this.noSharedTooltip || c.hide();
				b.series.forEach(function(a) {
					a.setState("", !0)
				})
			};
			a.prototype.setState = function(a, b) {
				var c = this,
				d = c.options,
				e = c.graph,
				h = d.inactiveOtherPoints,
				f = d.states,
				g = y(f[a || "normal"] && f[a || "normal"].animation, c.chart.options.chart.animation),
				k = d.lineWidth,
				l = 0,
				m = d.opacity;
				a = a || "";
				if (c.state !== a && ([c.group, c.markerGroup, c.dataLabelsGroup].forEach(function(b) {
					b && (c.state && b.removeClass("highcharts-series-" + c.state), a && b.addClass("highcharts-series-" + a))
				}), c.state = a, !c.chart.styledMode)) {
					if (f[a] && !1 === f[a].enabled) return;
					a && (k = f[a].lineWidth || k + (f[a].lineWidthPlus || 0), m = y(f[a].opacity, m));
					if (e && !e.dashstyle && O(k)) for (d = {
						"stroke-width": k
					},
					e.animate(d, g); c["zone-graph-" + l];) c["zone-graph-" + l].animate(d, g),
					l += 1;
					h || [c.group, c.markerGroup, c.dataLabelsGroup, c.labelBySeries].forEach(function(a) {
						a && a.animate({
							opacity: m
						},
						g)
					})
				}
				b && h && c.points && c.setAllPointsToState(a || void 0)
			};
			a.prototype.setAllPointsToState = function(a) {
				this.points.forEach(function(b) {
					b.setState && b.setState(a)
				})
			};
			a.prototype.setVisible = function(a, b) {
				var c = this,
				d = c.chart,
				e = d.options.chart.ignoreHiddenSeries,
				h = c.visible,
				f = (c.visible = a = c.options.visible = c.userOptions.visible = "undefined" === typeof a ? !h: a) ? "show": "hide"; ["group", "dataLabelsGroup", "markerGroup", "tracker", "tt"].forEach(function(a) {
					if (c[a]) c[a][f]()
				});
				if (d.hoverSeries === c || (d.hoverPoint && d.hoverPoint.series) === c) c.onMouseOut();
				c.legendItem && d.legend.colorizeItem(c, a);
				c.isDirty = !0;
				c.options.stacking && d.series.forEach(function(a) {
					a.options.stacking && a.visible && (a.isDirty = !0)
				});
				c.linkedSeries.forEach(function(b) {
					b.setVisible(a, !1)
				});
				e && (d.isDirtyBox = !0);
				w(c, f); ! 1 !== b && d.redraw()
			};
			a.prototype.show = function() {
				this.setVisible(!0)
			};
			a.prototype.hide = function() {
				this.setVisible(!1)
			};
			a.prototype.select = function(a) {
				this.selected = a = this.options.selected = "undefined" === typeof a ? !this.selected: a;
				this.checkbox && (this.checkbox.checked = a);
				w(this, a ? "select": "unselect")
			};
			a.prototype.shouldShowTooltip = function(a, b, c) {
				void 0 === c && (c = {});
				c.series = this;
				c.visiblePlotOnly = !0;
				return this.chart.isInsidePlot(a, b, c)
			};
			a.defaultOptions = G;
			a.types = r.seriesTypes;
			a.registerType = r.registerSeriesType;
			return a
		} ();
		p(a.prototype, {
			axisTypes: ["xAxis", "yAxis"],
			coll: "series",
			colorCounter: 0,
			cropShoulder: 1,
			directTouch: !1,
			drawLegendSymbol: D.drawLineMarker,
			isCartesian: !0,
			kdAxisArray: ["clientX", "plotY"],
			parallelArrays: ["x", "y"],
			pointClass: B,
			requireSorting: !0,
			sorted: !0
		});
		r.series = a;
		"";
		"";
		return a
	});
	K(g, "Extensions/ScrollablePlotArea.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Axis/Axis.js"], g["Core/Chart/Chart.js"], g["Core/Series/Series.js"], g["Core/Renderer/RendererRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x, E, D, B) {
		var v = a.stop,
		r = B.addEvent,
		t = B.createElement,
		n = B.defined,
		f = B.merge,
		c = B.pick;
		r(x, "afterSetChartSize",
		function(a) {
			var c = this.options.chart.scrollablePlotArea,
			e = c && c.minWidth;
			c = c && c.minHeight;
			if (!this.renderer.forExport) {
				if (e) {
					if (this.scrollablePixelsX = e = Math.max(0, e - this.chartWidth)) {
						this.scrollablePlotBox = this.renderer.scrollablePlotBox = f(this.plotBox);
						this.plotBox.width = this.plotWidth += e;
						this.inverted ? this.clipBox.height += e: this.clipBox.width += e;
						var l = {
							1 : {
								name: "right",
								value: e
							}
						}
					}
				} else c && (this.scrollablePixelsY = e = Math.max(0, c - this.chartHeight), n(e) && (this.scrollablePlotBox = this.renderer.scrollablePlotBox = f(this.plotBox), this.plotBox.height = this.plotHeight += e, this.inverted ? this.clipBox.width += e: this.clipBox.height += e, l = {
					2 : {
						name: "bottom",
						value: e
					}
				}));
				l && !a.skipAxes && this.axes.forEach(function(a) {
					l[a.side] ? a.getPlotLinePath = function() {
						var c = l[a.side].name,
						e = this[c];
						this[c] = e - l[a.side].value;
						var f = g.prototype.getPlotLinePath.apply(this, arguments);
						this[c] = e;
						return f
					}: (a.setAxisSize(), a.setAxisTranslation())
				})
			}
		});
		r(x, "render",
		function() {
			this.scrollablePixelsX || this.scrollablePixelsY ? (this.setUpScrolling && this.setUpScrolling(), this.applyFixed()) : this.fixedDiv && this.applyFixed()
		});
		x.prototype.setUpScrolling = function() {
			var a = this,
			c = {
				WebkitOverflowScrolling: "touch",
				overflowX: "hidden",
				overflowY: "hidden"
			};
			this.scrollablePixelsX && (c.overflowX = "auto");
			this.scrollablePixelsY && (c.overflowY = "auto");
			this.scrollingParent = t("div", {
				className: "highcharts-scrolling-parent"
			},
			{
				position: "relative"
			},
			this.renderTo);
			this.scrollingContainer = t("div", {
				className: "highcharts-scrolling"
			},
			c, this.scrollingParent);
			var e;
			r(this.scrollingContainer, "scroll",
			function() {
				a.pointer && (delete a.pointer.chartPosition, a.hoverPoint && (e = a.hoverPoint), a.pointer.runPointActions(void 0, e, !0))
			});
			this.innerContainer = t("div", {
				className: "highcharts-inner-container"
			},
			null, this.scrollingContainer);
			this.innerContainer.appendChild(this.container);
			this.setUpScrolling = null
		};
		x.prototype.moveFixedElements = function() {
			var a = this.container,
			c = this.fixedRenderer,
			e = ".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(" "),
			f;
			this.scrollablePixelsX && !this.inverted ? f = ".highcharts-yaxis": this.scrollablePixelsX && this.inverted ? f = ".highcharts-xaxis": this.scrollablePixelsY && !this.inverted ? f = ".highcharts-xaxis": this.scrollablePixelsY && this.inverted && (f = ".highcharts-yaxis");
			f && e.push("" + f + ":not(.highcharts-radial-axis)", "" + f + "-labels:not(.highcharts-radial-axis-labels)");
			e.forEach(function(e) { [].forEach.call(a.querySelectorAll(e),
				function(a) { (a.namespaceURI === c.SVG_NS ? c.box: c.box.parentNode).appendChild(a);
					a.style.pointerEvents = "auto"
				})
			})
		};
		x.prototype.applyFixed = function() {
			var a = !this.fixedDiv,
			f = this.options.chart,
			e = f.scrollablePlotArea,
			g = D.getRendererType();
			a ? (this.fixedDiv = t("div", {
				className: "highcharts-fixed"
			},
			{
				position: "absolute",
				overflow: "hidden",
				pointerEvents: "none",
				zIndex: (f.style && f.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 = f = new g(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style), this.scrollableMask = f.path().attr({
				fill: this.options.chart.backgroundColor || "#fff",
				"fill-opacity": c(e.opacity, .85),
				zIndex: -1
			}).addClass("highcharts-scrollable-mask").add(), r(this, "afterShowResetZoom", this.moveFixedElements), r(this, "afterApplyDrilldown", this.moveFixedElements), r(this, "afterLayOutTitles", this.moveFixedElements)) : this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);
			if (this.scrollableDirty || a) this.scrollableDirty = !1,
			this.moveFixedElements();
			f = this.chartWidth + (this.scrollablePixelsX || 0);
			g = this.chartHeight + (this.scrollablePixelsY || 0);
			v(this.container);
			this.container.style.width = f + "px";
			this.container.style.height = g + "px";
			this.renderer.boxWrapper.attr({
				width: f,
				height: g,
				viewBox: [0, 0, f, g].join(" ")
			});
			this.chartBackground.attr({
				width: f,
				height: g
			});
			this.scrollingContainer.style.height = this.chartHeight + "px";
			a && (e.scrollPositionX && (this.scrollingContainer.scrollLeft = this.scrollablePixelsX * e.scrollPositionX), e.scrollPositionY && (this.scrollingContainer.scrollTop = this.scrollablePixelsY * e.scrollPositionY));
			g = this.axisOffset;
			a = this.plotTop - g[0] - 1;
			e = this.plotLeft - g[3] - 1;
			f = this.plotTop + this.plotHeight + g[2] + 1;
			g = this.plotLeft + this.plotWidth + g[1] + 1;
			var n = this.plotLeft + this.plotWidth - (this.scrollablePixelsX || 0),
			x = this.plotTop + this.plotHeight - (this.scrollablePixelsY || 0);
			a = this.scrollablePixelsX ? [["M", 0, a], ["L", this.plotLeft - 1, a], ["L", this.plotLeft - 1, f], ["L", 0, f], ["Z"], ["M", n, a], ["L", this.chartWidth, a], ["L", this.chartWidth, f], ["L", n, f], ["Z"]] : this.scrollablePixelsY ? [["M", e, 0], ["L", e, this.plotTop - 1], ["L", g, this.plotTop - 1], ["L", g, 0], ["Z"], ["M", e, x], ["L", e, this.chartHeight], ["L", g, this.chartHeight], ["L", g, x], ["Z"]] : [["M", 0, 0]];
			"adjustHeight" !== this.redrawTrigger && this.scrollableMask.attr({
				d: a
			})
		};
		r(g, "afterInit",
		function() {
			this.chart.scrollableDirty = !0
		});
		r(E, "show",
		function() {
			this.chart.scrollableDirty = !0
		});
		""
	});
	K(g, "Core/Axis/Stacking/StackItem.js", [g["Core/FormatUtilities.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = a.format,
		D = g.series,
		B = x.defined,
		G = x.destroyObjectProperties,
		r = x.isNumber,
		t = x.pick;
		a = function() {
			function a(a, c, g, m, e) {
				var f = a.chart.inverted;
				this.axis = a;
				this.isNegative = g;
				this.options = c = c || {};
				this.x = m;
				this.cumulative = this.total = null;
				this.points = {};
				this.hasValidPoints = !1;
				this.stack = e;
				this.rightCliff = this.leftCliff = 0;
				this.alignOptions = {
					align: c.align || (f ? g ? "left": "right": "center"),
					verticalAlign: c.verticalAlign || (f ? "middle": g ? "bottom": "top"),
					y: c.y,
					x: c.x
				};
				this.textAlign = c.textAlign || (f ? g ? "right": "left": "center")
			}
			a.prototype.destroy = function() {
				G(this, this.axis)
			};
			a.prototype.render = function(a) {
				var c = this.axis.chart,
				f = this.options,
				g = f.format;
				g = g ? v(g, this, c) : f.formatter.call(this);
				this.label ? this.label.attr({
					text: g,
					visibility: "hidden"
				}) : (this.label = c.renderer.label(g, null, null, f.shape, null, null, f.useHTML, !1, "stack-labels"), g = {
					r: f.borderRadius || 0,
					text: g,
					rotation: f.rotation,
					padding: t(f.padding, 5),
					visibility: "hidden"
				},
				c.styledMode || (g.fill = f.backgroundColor, g.stroke = f.borderColor, g["stroke-width"] = f.borderWidth, this.label.css(f.style)), this.label.attr(g), this.label.added || this.label.add(a));
				this.label.labelrank = c.plotSizeY
			};
			a.prototype.setOffset = function(a, c, g, m, e) {
				var f = this.axis,
				l = f.chart;
				m = f.translate(f.stacking.usePercentage ? 100 : m ? m: this.total, 0, 0, 0, 1);
				g = f.translate(g ? g: 0);
				a = t(e, l.xAxis[0].translate(this.x)) + a;
				f = B(m) && this.getStackBox(l, this, a, m, c, Math.abs(m - g), f);
				c = this.label;
				g = this.isNegative;
				var n = this.textAlign;
				c && f && (a = c.getBBox(), e = c.padding, m = "justify" === t(this.options.overflow, "justify"), n = "left" === n ? l.inverted ? -e: e: "right" === n ? a.width: l.inverted && "center" === n ? a.width / 2 : l.inverted ? g ? a.width + e: -e: a.width / 2, g = l.inverted ? a.height / 2 : g ? -e: a.height, this.alignOptions.x = t(this.options.x, 0), this.alignOptions.y = t(this.options.y, 0), f.x -= n, f.y -= g, c.align(this.alignOptions, null, f), l.isInsidePlot(c.alignAttr.x + n - this.alignOptions.x, c.alignAttr.y + g - this.alignOptions.y) ? c.show() : (c.hide(), m = !1), m && D.prototype.justifyDataLabel.call(this.axis, c, this.alignOptions, c.alignAttr, a, f), c.attr({
					x: c.alignAttr.x,
					y: c.alignAttr.y
				}), t(!m && this.options.crop, !0) && ((l = r(c.x) && r(c.y) && l.isInsidePlot(c.x - e + c.width, c.y) && l.isInsidePlot(c.x + e, c.y)) || c.hide()))
			};
			a.prototype.getStackBox = function(a, c, g, m, e, n, t) {
				var f = c.axis.reversed,
				l = a.inverted,
				u = t.height + t.pos - (l ? a.plotLeft: a.plotTop);
				c = c.isNegative && !f || !c.isNegative && f;
				return {
					x: l ? c ? m - t.right: m - n + t.pos - a.plotLeft: g + a.xAxis[0].transB - a.plotLeft,
					y: l ? t.height - g - e: c ? u - m - n: u - m,
					width: l ? n: e,
					height: l ? e: n
				}
			};
			return a
		} ();
		"";
		return a
	});
	K(g, "Core/Axis/Stacking/StackingAxis.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Axis/Axis.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Axis/Stacking/StackItem.js"], g["Core/Utilities.js"]],
	function(a, g, x, E, D) {
		function v() {
			var a = this,
			b = a.inverted;
			a.yAxis.forEach(function(a) {
				a.stacking && a.stacking.stacks && a.hasVisibleSeries && (a.stacking.oldStacks = a.stacking.stacks)
			});
			a.series.forEach(function(c) {
				var d = c.xAxis && c.xAxis.options || {}; ! c.options.stacking || !0 !== c.visible && !1 !== a.options.chart.ignoreHiddenSeries || (c.stackKey = [c.type, h(c.options.stack, ""), b ? d.top: d.left, b ? d.height: d.width].join())
			})
		}
		function G() {
			var a = this.stacking;
			if (a) {
				var b = a.stacks;
				q(b,
				function(a, c) {
					I(a);
					b[c] = null
				});
				a && a.stackTotalGroup && a.stackTotalGroup.destroy()
			}
		}
		function r() {
			this.stacking || (this.stacking = new k(this))
		}
		function t(a, b, c, d) { ! J(a) || a.x !== b || d && a.stackKey !== d ? a = {
				x: b,
				index: 0,
				key: d,
				stackKey: d
			}: a.index++;
			a.key = [c, b, a.index].join();
			return a
		}
		function n() {
			var a = this,
			b = a.stackKey,
			c = a.yAxis.stacking.stacks,
			d = a.processedXData,
			e = a[a.options.stacking + "Stacker"],
			h;
			e && [b, "-" + b].forEach(function(b) {
				for (var f = d.length,
				g, k; f--;) g = d[f],
				h = a.getStackIndicator(h, g, a.index, b),
				(k = (g = c[b] && c[b][g]) && g.points[h.key]) && e.call(a, k, g, f)
			})
		}
		function f(a, b, c) {
			b = b.total ? 100 / b.total: 0;
			a[0] = C(a[0] * b);
			a[1] = C(a[1] * b);
			this.stackedYData[c] = a[1]
		}
		function c() {
			var a = this.yAxis.stacking;
			this.options.centerInCategory && (this.is("column") || this.is("columnrange")) && !this.options.stacking && 1 < this.chart.series.length ? e.setStackedPoints.call(this, "group") : a && q(a.stacks,
			function(b, c) {
				"group" === c.slice( - 5) && (q(b,
				function(a) {
					return a.destroy()
				}), delete a.stacks[c])
			})
		}
		function l(a) {
			var b = this.chart,
			c = a || this.options.stacking;
			if (c && (!0 === this.visible || !1 === b.options.chart.ignoreHiddenSeries)) {
				var d = this.processedXData,
				e = this.processedYData,
				f = [],
				g = e.length,
				k = this.options,
				l = k.threshold,
				m = h(k.startFromThreshold && l, 0);
				k = k.stack;
				a = a ? "" + this.type + ",".concat(c) : this.stackKey;
				var n = "-" + a,
				p = this.negStacks;
				b = "group" === c ? b.yAxis[0] : this.yAxis;
				var q = b.stacking.stacks,
				u = b.stacking.oldStacks,
				t, r;
				b.stacking.stacksTouched += 1;
				for (r = 0; r < g; r++) {
					var v = d[r];
					var x = e[r];
					var I = this.getStackIndicator(I, v, this.index);
					var D = I.key;
					var B = (t = p && x < (m ? 0 : l)) ? n: a;
					q[B] || (q[B] = {});
					q[B][v] || (u[B] && u[B][v] ? (q[B][v] = u[B][v], q[B][v].total = null) : q[B][v] = new E(b, b.options.stackLabels, !!t, v, k));
					B = q[B][v];
					null !== x ? (B.points[D] = B.points[this.index] = [h(B.cumulative, m)], J(B.cumulative) || (B.base = D), B.touched = b.stacking.stacksTouched, 0 < I.index && !1 === this.singleStacks && (B.points[D][0] = B.points[this.index + "," + v + ",0"][0])) : B.points[D] = B.points[this.index] = null;
					"percent" === c ? (t = t ? a: n, p && q[t] && q[t][v] ? (t = q[t][v], B.total = t.total = Math.max(t.total, B.total) + Math.abs(x) || 0) : B.total = C(B.total + (Math.abs(x) || 0))) : "group" === c ? (A(x) && (x = x[0]), null !== x && (B.total = (B.total || 0) + 1)) : B.total = C(B.total + (x || 0));
					B.cumulative = "group" === c ? (B.total || 1) - 1 : h(B.cumulative, m) + (x || 0);
					null !== x && (B.points[D].push(B.cumulative), f[r] = B.cumulative, B.hasValidPoints = !0)
				}
				"percent" === c && (b.stacking.usePercentage = !0);
				"group" !== c && (this.stackedYData = f);
				b.stacking.oldStacks = {}
			}
		}
		var m = a.getDeferredAnimation,
		e = x.series.prototype,
		u = D.addEvent,
		C = D.correctFloat,
		J = D.defined,
		I = D.destroyObjectProperties,
		L = D.fireEvent,
		A = D.isArray,
		d = D.isNumber,
		q = D.objectEach,
		h = D.pick,
		k = function() {
			function a(a) {
				this.oldStacks = {};
				this.stacks = {};
				this.stacksTouched = 0;
				this.axis = a
			}
			a.prototype.buildStacks = function() {
				var a = this.axis,
				b = a.series,
				c = a.options.reversedStacks,
				d = b.length,
				e;
				if (!a.isXAxis) {
					this.usePercentage = !1;
					for (e = d; e--;) {
						var h = b[c ? e: d - e - 1];
						h.setStackedPoints();
						h.setGroupedPoints()
					}
					for (e = 0; e < d; e++) b[e].modifyStacks();
					L(a, "afterBuildStacks")
				}
			};
			a.prototype.cleanStacks = function() {
				if (!this.axis.isXAxis) {
					if (this.oldStacks) var a = this.stacks = this.oldStacks;
					q(a,
					function(a) {
						q(a,
						function(a) {
							a.cumulative = a.total
						})
					})
				}
			};
			a.prototype.resetStacks = function() {
				var a = this,
				b = a.stacks;
				a.axis.isXAxis || q(b,
				function(b) {
					q(b,
					function(c, e) {
						d(c.touched) && c.touched < a.stacksTouched ? (c.destroy(), delete b[e]) : (c.total = null, c.cumulative = null)
					})
				})
			};
			a.prototype.renderStackTotals = function() {
				var a = this.axis,
				b = a.chart,
				c = b.renderer,
				d = this.stacks;
				a = m(b, a.options.stackLabels && a.options.stackLabels.animation || !1);
				var e = this.stackTotalGroup = this.stackTotalGroup || c.g("stack-labels").attr({
					zIndex: 6,
					opacity: 0
				}).add();
				e.translate(b.plotLeft, b.plotTop);
				q(d,
				function(a) {
					q(a,
					function(a) {
						a.render(e)
					})
				});
				e.animate({
					opacity: 1
				},
				a)
			};
			return a
		} (),
		b; (function(a) {
			var b = [];
			a.compose = function(a, d, e) { - 1 === b.indexOf(a) && (b.push(a), u(a, "init", r), u(a, "destroy", G)); - 1 === b.indexOf(d) && (b.push(d), d.prototype.getStacks = v); - 1 === b.indexOf(e) && (b.push(e), a = e.prototype, a.getStackIndicator = t, a.modifyStacks = n, a.percentStacker = f, a.setGroupedPoints = c, a.setStackedPoints = l)
			}
		})(b || (b = {}));
		return b
	});
	K(g, "Series/Line/LineSeries.js", [g["Core/Series/Series.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = this && this.__extends ||
		function() {
			var a = function(g, t) {
				a = Object.setPrototypeOf || {
					__proto__: []
				}
				instanceof Array &&
				function(a, f) {
					a.__proto__ = f
				} ||
				function(a, f) {
					for (var c in f) f.hasOwnProperty(c) && (a[c] = f[c])
				};
				return a(g, t)
			};
			return function(g, t) {
				function n() {
					this.constructor = g
				}
				a(g, t);
				g.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
			}
		} (),
		D = x.defined,
		B = x.merge;
		x = function(g) {
			function r() {
				var a = null !== g && g.apply(this, arguments) || this;
				a.data = void 0;
				a.options = void 0;
				a.points = void 0;
				return a
			}
			v(r, g);
			r.prototype.drawGraph = function() {
				var a = this,
				g = this.options,
				f = (this.gappedPath || this.getGraphPath).call(this),
				c = this.chart.styledMode,
				l = [["graph", "highcharts-graph"]];
				c || l[0].push(g.lineColor || this.color || "#cccccc", g.dashStyle);
				l = a.getZonesGraphs(l);
				l.forEach(function(l, e) {
					var m = l[0],
					n = a[m],
					t = n ? "animate": "attr";
					n ? (n.endX = a.preventGraphAnimation ? null: f.xMap, n.animate({
						d: f
					})) : f.length && (a[m] = n = a.chart.renderer.path(f).addClass(l[1]).attr({
						zIndex: 1
					}).add(a.group));
					n && !c && (m = {
						stroke: l[2],
						"stroke-width": g.lineWidth || 0,
						fill: a.fillGraph && a.color || "none"
					},
					l[3] ? m.dashstyle = l[3] : "square" !== g.linecap && (m["stroke-linecap"] = m["stroke-linejoin"] = "round"), n[t](m).shadow(2 > e && g.shadow));
					n && (n.startX = f.xMap, n.isArea = f.isArea)
				})
			};
			r.prototype.getGraphPath = function(a, g, f) {
				var c = this,
				l = c.options,
				m = [],
				e = [],
				n,
				t = l.step;
				a = a || c.points;
				var r = a.reversed;
				r && a.reverse(); (t = {
					right: 1,
					center: 2
				} [t] || t && 3) && r && (t = 4 - t);
				a = this.getValidPoints(a, !1, !(l.connectNulls && !g && !f));
				a.forEach(function(u, r) {
					var A = u.plotX,
					d = u.plotY,
					q = a[r - 1]; (u.leftCliff || q && q.rightCliff) && !f && (n = !0);
					u.isNull && !D(g) && 0 < r ? n = !l.connectNulls: u.isNull && !g ? n = !0 : (0 === r || n ? r = [["M", u.plotX, u.plotY]] : c.getPointSpline ? r = [c.getPointSpline(a, u, r)] : t ? (r = 1 === t ? [["L", q.plotX, d]] : 2 === t ? [["L", (q.plotX + A) / 2, q.plotY], ["L", (q.plotX + A) / 2, d]] : [["L", A, q.plotY]], r.push(["L", A, d])) : r = [["L", A, d]], e.push(u.x), t && (e.push(u.x), 2 === t && e.push(u.x)), m.push.apply(m, r), n = !1)
				});
				m.xMap = e;
				return c.graphPath = m
			};
			r.prototype.getZonesGraphs = function(a) {
				this.zones.forEach(function(g, f) {
					f = ["zone-graph-" + f, "highcharts-graph highcharts-zone-graph-" + f + " " + (g.className || "")];
					this.chart.styledMode || f.push(g.color || this.color, g.dashStyle || this.options.dashStyle);
					a.push(f)
				},
				this);
				return a
			};
			r.defaultOptions = B(a.defaultOptions, {});
			return r
		} (a);
		g.registerSeriesType("line", x);
		"";
		return x
	});
	K(g, "Series/Area/AreaSeries.js", [g["Core/Color/Color.js"], g["Core/Legend/LegendSymbol.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x, E) {
		var v = this && this.__extends ||
		function() {
			var a = function(c, f) {
				a = Object.setPrototypeOf || {
					__proto__: []
				}
				instanceof Array &&
				function(a, c) {
					a.__proto__ = c
				} ||
				function(a, c) {
					for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e])
				};
				return a(c, f)
			};
			return function(c, f) {
				function g() {
					this.constructor = c
				}
				a(c, f);
				c.prototype = null === f ? Object.create(f) : (g.prototype = f.prototype, new g)
			}
		} (),
		B = a.parse,
		G = x.seriesTypes.line;
		a = E.extend;
		var r = E.merge,
		t = E.objectEach,
		n = E.pick;
		E = function(a) {
			function c() {
				var c = null !== a && a.apply(this, arguments) || this;
				c.data = void 0;
				c.options = void 0;
				c.points = void 0;
				return c
			}
			v(c, a);
			c.prototype.drawGraph = function() {
				this.areaPath = [];
				a.prototype.drawGraph.apply(this);
				var c = this,
				f = this.areaPath,
				e = this.options,
				g = [["area", "highcharts-area", this.color, e.fillColor]];
				this.zones.forEach(function(a, f) {
					g.push(["zone-area-" + f, "highcharts-area highcharts-zone-area-" + f + " " + a.className, a.color || c.color, a.fillColor || e.fillColor])
				});
				g.forEach(function(a) {
					var g = a[0],
					l = {},
					m = c[g],
					u = m ? "animate": "attr";
					m ? (m.endX = c.preventGraphAnimation ? null: f.xMap, m.animate({
						d: f
					})) : (l.zIndex = 0, m = c[g] = c.chart.renderer.path(f).addClass(a[1]).add(c.group), m.isArea = !0);
					c.chart.styledMode || (l.fill = n(a[3], B(a[2]).setOpacity(n(e.fillOpacity, .75)).get()));
					m[u](l);
					m.startX = f.xMap;
					m.shiftUnit = e.step ? 2 : 1
				})
			};
			c.prototype.getGraphPath = function(a) {
				var c = G.prototype.getGraphPath,
				e = this.options,
				f = e.stacking,
				g = this.yAxis,
				l = [],
				t = [],
				r = this.index,
				A = g.stacking.stacks[this.stackKey],
				d = e.threshold,
				q = Math.round(g.getThreshold(e.threshold));
				e = n(e.connectNulls, "percent" === f);
				var h = function(b, c, e) {
					var h = a[b];
					b = f && A[h.x].points[r];
					var k = h[e + "Null"] || 0;
					e = h[e + "Cliff"] || 0;
					h = !0;
					if (e || k) {
						var m = (k ? b[0] : b[1]) + e;
						var n = b[0] + e;
						h = !!k
					} else ! f && a[c] && a[c].isNull && (m = n = d);
					"undefined" !== typeof m && (t.push({
						plotX: z,
						plotY: null === m ? q: g.getThreshold(m),
						isNull: h,
						isCliff: !0
					}), l.push({
						plotX: z,
						plotY: null === n ? q: g.getThreshold(n),
						doCurve: !1
					}))
				};
				a = a || this.points;
				f && (a = this.getStackPoints(a));
				for (var k = 0,
				b = a.length; k < b; ++k) {
					f || (a[k].leftCliff = a[k].rightCliff = a[k].leftNull = a[k].rightNull = void 0);
					var p = a[k].isNull;
					var z = n(a[k].rectPlotX, a[k].plotX);
					var w = f ? n(a[k].yBottom, q) : q;
					if (!p || e) e || h(k, k - 1, "left"),
					p && !f && e || (t.push(a[k]), l.push({
						x: k,
						plotX: z,
						plotY: w
					})),
					e || h(k, k + 1, "right")
				}
				h = c.call(this, t, !0, !0);
				l.reversed = !0;
				p = c.call(this, l, !0, !0); (w = p[0]) && "M" === w[0] && (p[0] = ["L", w[1], w[2]]);
				p = h.concat(p);
				p.length && p.push(["Z"]);
				c = c.call(this, t, !1, e);
				p.xMap = h.xMap;
				this.areaPath = p;
				return c
			};
			c.prototype.getStackPoints = function(a) {
				var c = this,
				e = [],
				f = [],
				g = this.xAxis,
				l = this.yAxis,
				r = l.stacking.stacks[this.stackKey],
				v = {},
				A = l.series,
				d = A.length,
				q = l.options.reversedStacks ? 1 : -1,
				h = A.indexOf(c);
				a = a || this.points;
				if (this.options.stacking) {
					for (var k = 0; k < a.length; k++) a[k].leftNull = a[k].rightNull = void 0,
					v[a[k].x] = a[k];
					t(r,
					function(a, b) {
						null !== a.total && f.push(b)
					});
					f.sort(function(a, b) {
						return a - b
					});
					var b = A.map(function(a) {
						return a.visible
					});
					f.forEach(function(a, k) {
						var m = 0,
						p, u;
						if (v[a] && !v[a].isNull) e.push(v[a]),
						[ - 1, 1].forEach(function(e) {
							var g = 1 === e ? "rightNull": "leftNull",
							l = r[f[k + e]],
							m = 0;
							if (l) for (var n = h; 0 <= n && n < d;) {
								var t = A[n].index;
								p = l.points[t];
								p || (t === c.index ? v[a][g] = !0 : b[n] && (u = r[a].points[t]) && (m -= u[1] - u[0]));
								n += q
							}
							v[a][1 === e ? "rightCliff": "leftCliff"] = m
						});
						else {
							for (var t = h; 0 <= t && t < d;) {
								if (p = r[a].points[A[t].index]) {
									m = p[1];
									break
								}
								t += q
							}
							m = n(m, 0);
							m = l.translate(m, 0, 1, 0, 1);
							e.push({
								isNull: !0,
								plotX: g.translate(a, 0, 0, 0, 1),
								x: a,
								plotY: m,
								yBottom: m
							})
						}
					})
				}
				return e
			};
			c.defaultOptions = r(G.defaultOptions, {
				threshold: 0
			});
			return c
		} (G);
		a(E.prototype, {
			singleStacks: !1,
			drawLegendSymbol: g.drawRectangle
		});
		x.registerSeriesType("area", E);
		"";
		return E
	});
	K(g, "Series/Spline/SplineSeries.js", [g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g) {
		var v = this && this.__extends ||
		function() {
			var a = function(g, t) {
				a = Object.setPrototypeOf || {
					__proto__: []
				}
				instanceof Array &&
				function(a, f) {
					a.__proto__ = f
				} ||
				function(a, f) {
					for (var c in f) f.hasOwnProperty(c) && (a[c] = f[c])
				};
				return a(g, t)
			};
			return function(g, t) {
				function n() {
					this.constructor = g
				}
				a(g, t);
				g.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
			}
		} (),
		E = a.seriesTypes.line,
		D = g.merge,
		B = g.pick;
		g = function(a) {
			function g() {
				var g = null !== a && a.apply(this, arguments) || this;
				g.data = void 0;
				g.options = void 0;
				g.points = void 0;
				return g
			}
			v(g, a);
			g.prototype.getPointSpline = function(a, g, f) {
				var c = g.plotX || 0,
				l = g.plotY || 0,
				m = a[f - 1];
				f = a[f + 1];
				if (m && !m.isNull && !1 !== m.doCurve && !g.isCliff && f && !f.isNull && !1 !== f.doCurve && !g.isCliff) {
					a = m.plotY || 0;
					var e = f.plotX || 0;
					f = f.plotY || 0;
					var n = 0;
					var t = (1.5 * c + (m.plotX || 0)) / 2.5;
					var r = (1.5 * l + a) / 2.5;
					e = (1.5 * c + e) / 2.5;
					var v = (1.5 * l + f) / 2.5;
					e !== t && (n = (v - r) * (e - c) / (e - t) + l - v);
					r += n;
					v += n;
					r > a && r > l ? (r = Math.max(a, l), v = 2 * l - r) : r < a && r < l && (r = Math.min(a, l), v = 2 * l - r);
					v > f && v > l ? (v = Math.max(f, l), r = 2 * l - v) : v < f && v < l && (v = Math.min(f, l), r = 2 * l - v);
					g.rightContX = e;
					g.rightContY = v
				}
				g = ["C", B(m.rightContX, m.plotX, 0), B(m.rightContY, m.plotY, 0), B(t, c, 0), B(r, l, 0), c, l];
				m.rightContX = m.rightContY = void 0;
				return g
			};
			g.defaultOptions = D(E.defaultOptions);
			return g
		} (E);
		a.registerSeriesType("spline", g);
		"";
		return g
	});
	K(g, "Series/AreaSpline/AreaSplineSeries.js", [g["Series/Spline/SplineSeries.js"], g["Core/Legend/LegendSymbol.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x, E) {
		var v = this && this.__extends ||
		function() {
			var a = function(f, c) {
				a = Object.setPrototypeOf || {
					__proto__: []
				}
				instanceof Array &&
				function(a, c) {
					a.__proto__ = c
				} ||
				function(a, c) {
					for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e])
				};
				return a(f, c)
			};
			return function(f, c) {
				function g() {
					this.constructor = f
				}
				a(f, c);
				f.prototype = null === c ? Object.create(c) : (g.prototype = c.prototype, new g)
			}
		} (),
		B = x.seriesTypes,
		G = B.area;
		B = B.area.prototype;
		var r = E.extend,
		t = E.merge;
		E = function(g) {
			function f() {
				var a = null !== g && g.apply(this, arguments) || this;
				a.data = void 0;
				a.points = void 0;
				a.options = void 0;
				return a
			}
			v(f, g);
			f.defaultOptions = t(a.defaultOptions, G.defaultOptions);
			return f
		} (a);
		r(E.prototype, {
			getGraphPath: B.getGraphPath,
			getStackPoints: B.getStackPoints,
			drawGraph: B.drawGraph,
			drawLegendSymbol: g.drawRectangle
		});
		x.registerSeriesType("areaspline", E);
		"";
		return E
	});
	K(g, "Series/Column/ColumnSeriesDefaults.js", [],
	function() {
		"";
		return {
			borderRadius: 0,
			centerInCategory: !1,
			groupPadding: .2,
			marker: null,
			pointPadding: .1,
			minPointLength: 0,
			cropThreshold: 50,
			pointRange: null,
			states: {
				hover: {
					halo: !1,
					brightness: .1
				},
				select: {
					color: "#cccccc",
					borderColor: "#000000"
				}
			},
			dataLabels: {
				align: void 0,
				verticalAlign: void 0,
				y: void 0
			},
			startFromThreshold: !0,
			stickyTracking: !1,
			tooltip: {
				distance: 6
			},
			threshold: 0,
			borderColor: "#ffffff"
		}
	});
	K(g, "Series/Column/ColumnSeries.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Color/Color.js"], g["Series/Column/ColumnSeriesDefaults.js"], g["Core/Globals.js"], g["Core/Legend/LegendSymbol.js"], g["Core/Series/Series.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x, E, D, B, G, r) {
		var t = 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 c in b) b.hasOwnProperty(c) && (a[c] = b[c])
				};
				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)
			}
		} (),
		n = a.animObject,
		f = g.parse,
		c = E.hasTouch;
		a = E.noop;
		var l = r.clamp,
		m = r.defined,
		e = r.extend,
		u = r.fireEvent,
		v = r.isArray,
		J = r.isNumber,
		I = r.merge,
		L = r.pick,
		A = r.objectEach;
		r = function(a) {
			function d() {
				var c = null !== a && a.apply(this, arguments) || this;
				c.borderWidth = void 0;
				c.data = void 0;
				c.group = void 0;
				c.options = void 0;
				c.points = void 0;
				return c
			}
			t(d, a);
			d.prototype.animate = function(a) {
				var c = this,
				b = this.yAxis,
				d = c.options,
				h = this.chart.inverted,
				f = {},
				g = h ? "translateX": "translateY";
				if (a) f.scaleY = .001,
				a = l(b.toPixels(d.threshold), b.pos, b.pos + b.len),
				h ? f.translateX = a - b.len: f.translateY = a,
				c.clipBox && c.setClip(),
				c.group.attr(f);
				else {
					var m = Number(c.group.attr(g));
					c.group.animate({
						scaleY: 1
					},
					e(n(c.options.animation), {
						step: function(a, d) {
							c.group && (f[g] = m + d.pos * (b.pos - m), c.group.attr(f))
						}
					}))
				}
			};
			d.prototype.init = function(c, d) {
				a.prototype.init.apply(this, arguments);
				var b = this;
				c = b.chart;
				c.hasRendered && c.series.forEach(function(a) {
					a.type === b.type && (a.isDirty = !0)
				})
			};
			d.prototype.getColumnMetrics = function() {
				var a = this,
				c = a.options,
				b = a.xAxis,
				d = a.yAxis,
				e = b.options.reversedStacks;
				e = b.reversed && !e || !b.reversed && e;
				var f = {},
				g, l = 0; ! 1 === c.grouping ? l = 1 : a.chart.series.forEach(function(b) {
					var c = b.yAxis,
					e = b.options;
					if (b.type === a.type && (b.visible || !a.chart.options.chart.ignoreHiddenSeries) && d.len === c.len && d.pos === c.pos) {
						if (e.stacking && "group" !== e.stacking) {
							g = b.stackKey;
							"undefined" === typeof f[g] && (f[g] = l++);
							var h = f[g]
						} else ! 1 !== e.grouping && (h = l++);
						b.columnIndex = h
					}
				});
				var m = Math.min(Math.abs(b.transA) * (b.ordinal && b.ordinal.slope || c.pointRange || b.closestPointRange || b.tickInterval || 1), b.len),
				n = m * c.groupPadding,
				q = (m - 2 * n) / (l || 1);
				c = Math.min(c.maxPointWidth || b.len, L(c.pointWidth, q * (1 - 2 * c.pointPadding)));
				a.columnMetrics = {
					width: c,
					offset: (q - c) / 2 + (n + ((a.columnIndex || 0) + (e ? 1 : 0)) * q - m / 2) * (e ? -1 : 1),
					paddedWidth: q,
					columnCount: l
				};
				return a.columnMetrics
			};
			d.prototype.crispCol = function(a, c, b, d) {
				var e = this.chart,
				h = this.borderWidth,
				f = -(h % 2 ? .5 : 0);
				h = h % 2 ? .5 : 1;
				e.inverted && e.renderer.isVML && (h += 1);
				this.options.crisp && (b = Math.round(a + b) + f, a = Math.round(a) + f, b -= a);
				d = Math.round(c + d) + h;
				f = .5 >= Math.abs(c) && .5 < d;
				c = Math.round(c) + h;
				d -= c;
				f && d && (--c, d += 1);
				return {
					x: a,
					y: c,
					width: b,
					height: d
				}
			};
			d.prototype.adjustForMissingColumns = function(a, c, b, d) {
				var e = this,
				h = this.options.stacking;
				if (!b.isNull && 1 < d.columnCount) {
					var f = this.yAxis.options.reversedStacks,
					g = 0,
					k = f ? 0 : -d.columnCount;
					A(this.yAxis.stacking && this.yAxis.stacking.stacks,
					function(a) {
						if ("number" === typeof b.x) {
							var c = a[b.x.toString()];
							c && (a = c.points[e.index], h ? (a && (g = k), c.hasValidPoints && (f ? k++:k--)) : v(a) && (a = Object.keys(c.points).filter(function(a) {
								return ! a.match(",") && c.points[a] && 1 < c.points[a].length
							}).map(parseFloat).sort(function(a, b) {
								return b - a
							}), g = a.indexOf(e.index), k = a.length))
						}
					});
					a = (b.plotX || 0) + ((k - 1) * d.paddedWidth + c) / 2 - c - g * d.paddedWidth
				}
				return a
			};
			d.prototype.translate = function() {
				var a = this,
				c = a.chart,
				b = a.options,
				d = a.dense = 2 > a.closestPointRange * a.xAxis.transA;
				d = a.borderWidth = L(b.borderWidth, d ? 0 : 1);
				var e = a.xAxis,
				f = a.yAxis,
				g = b.threshold,
				n = a.translatedThreshold = f.getThreshold(g),
				q = L(b.minPointLength, 5),
				u = a.getColumnMetrics(),
				t = u.width,
				r = a.pointXOffset = u.offset,
				y = a.dataMin,
				A = a.dataMax,
				v = a.barW = Math.max(t, 1 + 2 * d);
				c.inverted && (n -= .5);
				b.pointPadding && (v = Math.ceil(v));
				B.prototype.translate.apply(a);
				a.points.forEach(function(d) {
					var h = L(d.yBottom, n),
					k = 999 + Math.abs(h),
					p = d.plotX || 0;
					k = l(d.plotY, -k, f.len + k);
					var w = Math.min(k, h),
					z = Math.max(k, h) - w,
					C = t,
					x = p + r,
					B = v;
					q && Math.abs(z) < q && (z = q, p = !f.reversed && !d.negative || f.reversed && d.negative, J(g) && J(A) && d.y === g && A <= g && (f.min || 0) < g && (y !== A || (f.max || 0) <= g) && (p = !p), w = Math.abs(w - n) > q ? h - q: n - (p ? q: 0));
					m(d.options.pointWidth) && (C = B = Math.ceil(d.options.pointWidth), x -= Math.round((C - t) / 2));
					b.centerInCategory && (x = a.adjustForMissingColumns(x, C, d, u));
					d.barX = x;
					d.pointWidth = C;
					d.tooltipPos = c.inverted ? [l(f.len + f.pos - c.plotLeft - k, f.pos - c.plotLeft, f.len + f.pos - c.plotLeft), e.len + e.pos - c.plotTop - x - B / 2, z] : [e.left - c.plotLeft + x + B / 2, l(k + f.pos - c.plotTop, f.pos - c.plotTop, f.len + f.pos - c.plotTop), z];
					d.shapeType = a.pointClass.prototype.shapeType || "rect";
					d.shapeArgs = a.crispCol.apply(a, d.isNull ? [x, n, B, 0] : [x, w, B, z])
				})
			};
			d.prototype.drawGraph = function() {
				this.group[this.dense ? "addClass": "removeClass"]("highcharts-dense-data")
			};
			d.prototype.pointAttribs = function(a, c) {
				var b = this.options,
				d = this.pointAttrToOptions || {},
				e = d.stroke || "borderColor",
				h = d["stroke-width"] || "borderWidth",
				g = a && a.color || this.color,
				k = a && a[e] || b[e] || g;
				d = a && a.options.dashStyle || b.dashStyle;
				var l = a && a[h] || b[h] || this[h] || 0,
				m = L(a && a.opacity, b.opacity, 1);
				if (a && this.zones.length) {
					var n = a.getZone();
					g = a.options.color || n && (n.color || a.nonZonedColor) || this.color;
					n && (k = n.borderColor || k, d = n.dashStyle || d, l = n.borderWidth || l)
				}
				c && a && (a = I(b.states[c], a.options.states && a.options.states[c] || {}), c = a.brightness, g = a.color || "undefined" !== typeof c && f(g).brighten(a.brightness).get() || g, k = a[e] || k, l = a[h] || l, d = a.dashStyle || d, m = L(a.opacity, m));
				e = {
					fill: g,
					stroke: k,
					"stroke-width": l,
					opacity: m
				};
				d && (e.dashstyle = d);
				return e
			};
			d.prototype.drawPoints = function(a) {
				void 0 === a && (a = this.points);
				var c = this,
				b = this.chart,
				d = c.options,
				e = b.renderer,
				f = d.animationLimit || 250,
				h;
				a.forEach(function(a) {
					var g = a.graphic,
					k = !!g,
					l = g && b.pointCount < f ? "animate": "attr";
					if (J(a.plotY) && null !== a.y) {
						h = a.shapeArgs;
						g && a.hasNewShapeType() && (g = g.destroy());
						c.enabledDataSorting && (a.startXPos = c.xAxis.reversed ? -(h ? h.width || 0 : 0) : c.xAxis.width);
						g || (a.graphic = g = e[a.shapeType](h).add(a.group || c.group)) && c.enabledDataSorting && b.hasRendered && b.pointCount < f && (g.attr({
							x: a.startXPos
						}), k = !0, l = "animate");
						if (g && k) g[l](I(h));
						if (d.borderRadius) g[l]({
							r: d.borderRadius
						});
						b.styledMode || g[l](c.pointAttribs(a, a.selected && "select")).shadow(!1 !== a.allowShadow && d.shadow, null, d.stacking && !d.borderRadius);
						g && (g.addClass(a.getClassName(), !0), g.attr({
							visibility: a.visible ? "inherit": "hidden"
						}))
					} else g && (a.graphic = g.destroy())
				})
			};
			d.prototype.drawTracker = function(a) {
				void 0 === a && (a = this.points);
				var d = this,
				b = d.chart,
				e = b.pointer,
				f = function(a) {
					var b = e.getPointFromEvent(a);
					"undefined" !== typeof b && (e.isDirectTouch = !0, b.onMouseOver(a))
				},
				h;
				a.forEach(function(a) {
					h = v(a.dataLabels) ? a.dataLabels: a.dataLabel ? [a.dataLabel] : [];
					a.graphic && (a.graphic.element.point = a);
					h.forEach(function(b) {
						b.div ? b.div.point = a: b.element.point = a
					})
				});
				d._hasTracking || (d.trackerGroups.forEach(function(a) {
					if (d[a]) {
						d[a].addClass("highcharts-tracker").on("mouseover", f).on("mouseout",
						function(a) {
							e.onTrackerMouseOut(a)
						});
						if (c) d[a].on("touchstart", f); ! b.styledMode && d.options.cursor && d[a].css({
							cursor: d.options.cursor
						})
					}
				}), d._hasTracking = !0);
				u(this, "afterDrawTracker")
			};
			d.prototype.remove = function() {
				var a = this,
				c = a.chart;
				c.hasRendered && c.series.forEach(function(b) {
					b.type === a.type && (b.isDirty = !0)
				});
				B.prototype.remove.apply(a, arguments)
			};
			d.defaultOptions = I(B.defaultOptions, x);
			return d
		} (B);
		e(r.prototype, {
			cropShoulder: 0,
			directTouch: !0,
			drawLegendSymbol: D.drawRectangle,
			getSymbol: a,
			negStacks: !0,
			trackerGroups: ["group", "dataLabelsGroup"]
		});
		G.registerSeriesType("column", r);
		"";
		return r
	});
	K(g, "Core/Series/DataLabel.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/FormatUtilities.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = a.getDeferredAnimation,
		D = g.format,
		B = x.defined,
		G = x.extend,
		r = x.fireEvent,
		t = x.isArray,
		n = x.isString,
		f = x.merge,
		c = x.objectEach,
		l = x.pick,
		m = x.splat,
		e; (function(a) {
			function e(a, c, b, d, e) {
				var f = this,
				h = this.chart,
				g = this.isCartesian && h.inverted,
				k = this.enabledDataSorting,
				m = a.plotX,
				n = a.plotY,
				q = b.rotation,
				p = b.align,
				u = B(m) && B(n) && h.isInsidePlot(m, Math.round(n), {
					inverted: g,
					paneCoordinates: !0,
					series: f
				}),
				t = function(b) {
					k && f.xAxis && !r && f.setDataLabelStartPos(a, c, e, u, b)
				},
				r = "justify" === l(b.overflow, k ? "none": "justify"),
				A = this.visible && !1 !== a.visible && B(m) && (a.series.forceDL || k && !r || u || l(b.inside, !!this.options.stacking) && d && h.isInsidePlot(m, g ? d.x + 1 : d.y + d.height - 1, {
					inverted: g,
					paneCoordinates: !0,
					series: f
				}));
				if (A && B(m) && B(n)) {
					q && c.attr({
						align: p
					});
					p = c.getBBox(!0);
					var v = [0, 0];
					var z = h.renderer.fontMetrics(h.styledMode ? void 0 : b.style.fontSize, c).b;
					d = G({
						x: g ? this.yAxis.len - n: m,
						y: Math.round(g ? this.xAxis.len - m: n),
						width: 0,
						height: 0
					},
					d);
					G(b, {
						width: p.width,
						height: p.height
					});
					q ? (r = !1, v = h.renderer.rotCorr(z, q), z = {
						x: d.x + (b.x || 0) + d.width / 2 + v.x,
						y: d.y + (b.y || 0) + {
							top: 0,
							middle: .5,
							bottom: 1
						} [b.verticalAlign] * d.height
					},
					v = [p.x - Number(c.attr("x")), p.y - Number(c.attr("y"))], t(z), c[e ? "attr": "animate"](z)) : (t(d), c.align(b, void 0, d), z = c.alignAttr);
					r && 0 <= d.height ? this.justifyDataLabel(c, b, z, p, d, e) : l(b.crop, !0) && (d = z.x, t = z.y, d += v[0], t += v[1], A = h.isInsidePlot(d, t, {
						paneCoordinates: !0,
						series: f
					}) && h.isInsidePlot(d + p.width, t + p.height, {
						paneCoordinates: !0,
						series: f
					}));
					if (b.shape && !q) c[e ? "attr": "animate"]({
						anchorX: g ? h.plotWidth - n: m,
						anchorY: g ? h.plotHeight - m: n
					})
				}
				e && k && (c.placed = !1);
				A || k && !r ? c.show() : (c.hide(), c.placed = !1)
			}
			function g(a, c) {
				var b = c.filter;
				return b ? (c = b.operator, a = a[b.property], b = b.value, ">" === c && a > b || "<" === c && a < b || ">=" === c && a >= b || "<=" === c && a <= b || "==" === c && a == b || "===" === c && a === b ? !0 : !1) : !0
			}
			function u(a) {
				void 0 === a && (a = this.points);
				var d = this,
				b = d.chart,
				e = d.options,
				f = d.hasRendered || 0,
				h = b.renderer,
				q = b.options.chart,
				u = q.backgroundColor;
				q = q.plotBackgroundColor;
				var C = h.getContrast(n(q) && q || n(u) && u || "#000000"),
				x = e.dataLabels,
				E;
				u = x.animation;
				u = x.defer ? v(b, u, d) : {
					defer: 0,
					duration: 0
				};
				x = A(A(b.options.plotOptions && b.options.plotOptions.series && b.options.plotOptions.series.dataLabels, b.options.plotOptions && b.options.plotOptions[d.type] && b.options.plotOptions[d.type].dataLabels), x);
				r(this, "drawDataLabels");
				if (t(x) || x.enabled || d._hasPointLabels) {
					var I = d.plotGroup("dataLabelsGroup", "data-labels", f ? "inherit": "hidden", x.zIndex || 6);
					I.attr({
						opacity: +f
					}); ! f && (f = d.dataLabelsGroup) && (d.visible && I.show(), f[e.animation ? "animate": "attr"]({
						opacity: 1
					},
					u));
					a.forEach(function(a) {
						E = m(A(x, a.dlOptions || a.options && a.options.dataLabels));
						E.forEach(function(f, k) {
							var m = f.enabled && (!a.isNull || a.dataLabelOnNull) && g(a, f),
							n = a.connectors ? a.connectors[k] : a.connector,
							q = a.dataLabels ? a.dataLabels[k] : a.dataLabel,
							p = !q,
							u = l(f.distance, a.labelDistance);
							if (m) {
								var t = a.getLabelConfig();
								var r = l(f[a.formatPrefix + "Format"], f.format);
								t = B(r) ? D(r, t, b) : (f[a.formatPrefix + "Formatter"] || f.formatter).call(t, f);
								r = f.style;
								var A = f.rotation;
								b.styledMode || (r.color = l(f.color, r.color, d.color, "#000000"), "contrast" === r.color ? (a.contrastColor = h.getContrast(a.color || d.color), r.color = !B(u) && f.inside || 0 > u || e.stacking ? a.contrastColor: C) : delete a.contrastColor, e.cursor && (r.cursor = e.cursor));
								var v = {
									r: f.borderRadius || 0,
									rotation: A,
									padding: f.padding,
									zIndex: 1
								};
								b.styledMode || (v.fill = f.backgroundColor, v.stroke = f.borderColor, v["stroke-width"] = f.borderWidth);
								c(v,
								function(a, b) {
									"undefined" === typeof a && delete v[b]
								})
							} ! q || m && B(t) && !!q.div === !!f.useHTML && (q.rotation && f.rotation || q.rotation === f.rotation) || (p = !0, a.dataLabel = q = a.dataLabel && a.dataLabel.destroy(), a.dataLabels && (1 === a.dataLabels.length ? delete a.dataLabels: delete a.dataLabels[k]), k || delete a.dataLabel, n && (a.connector = a.connector.destroy(), a.connectors && (1 === a.connectors.length ? delete a.connectors: delete a.connectors[k])));
							m && B(t) ? (q ? v.text = t: (a.dataLabels = a.dataLabels || [], q = a.dataLabels[k] = A ? h.text(t, 0, 0, f.useHTML).addClass("highcharts-data-label") : h.label(t, 0, 0, f.shape, null, null, f.useHTML, null, "data-label"), k || (a.dataLabel = q), q.addClass(" highcharts-data-label-color-" + a.colorIndex + " " + (f.className || "") + (f.useHTML ? " highcharts-tracker": ""))), q.options = f, q.attr(v), b.styledMode || q.css(r).shadow(f.shadow), (k = f[a.formatPrefix + "TextPath"] || f.textPath) && !f.useHTML && (q.setTextPath(a.getDataLabelPath && a.getDataLabelPath(q) || a.graphic, k), a.dataLabelPath && !k.enabled && (a.dataLabelPath = a.dataLabelPath.destroy())), q.added || q.add(I), d.alignDataLabel(a, q, f, null, p)) : q && q.hide()
						})
					})
				}
				r(this, "afterDrawDataLabels")
			}
			function x(a, c, b, d, e, f) {
				var h = this.chart,
				g = c.align,
				k = c.verticalAlign,
				l = a.box ? 0 : a.padding || 0,
				m = c.x;
				m = void 0 === m ? 0 : m;
				var n = c.y;
				n = void 0 === n ? 0 : n;
				var q = (b.x || 0) + l;
				if (0 > q) {
					"right" === g && 0 <= m ? (c.align = "left", c.inside = !0) : m -= q;
					var p = !0
				}
				q = (b.x || 0) + d.width - l;
				q > h.plotWidth && ("left" === g && 0 >= m ? (c.align = "right", c.inside = !0) : m += h.plotWidth - q, p = !0);
				q = b.y + l;
				0 > q && ("bottom" === k && 0 <= n ? (c.verticalAlign = "top", c.inside = !0) : n -= q, p = !0);
				q = (b.y || 0) + d.height - l;
				q > h.plotHeight && ("top" === k && 0 >= n ? (c.verticalAlign = "bottom", c.inside = !0) : n += h.plotHeight - q, p = !0);
				p && (c.x = m, c.y = n, a.placed = !f, a.align(c, void 0, e));
				return p
			}
			function A(a, c) {
				var b = [],
				d;
				if (t(a) && !t(c)) b = a.map(function(a) {
					return f(a, c)
				});
				else if (t(c) && !t(a)) b = c.map(function(b) {
					return f(a, b)
				});
				else if (t(a) || t(c)) for (d = Math.max(a.length, c.length); d--;) b[d] = f(a[d], c[d]);
				else b = f(a, c);
				return b
			}
			function d(a, c, b, d, e) {
				var f = this.chart,
				h = f.inverted,
				g = this.xAxis,
				k = g.reversed,
				l = h ? c.height / 2 : c.width / 2;
				a = (a = a.pointWidth) ? a / 2 : 0;
				c.startXPos = h ? e.x: k ? -l - a: g.width - l + a;
				c.startYPos = h ? k ? this.yAxis.height - l + a: -l - a: e.y;
				d ? "hidden" === c.visibility && (c.show(), c.attr({
					opacity: 0
				}).animate({
					opacity: 1
				})) : c.attr({
					opacity: 1
				}).animate({
					opacity: 0
				},
				void 0, c.hide);
				f.hasRendered && (b && c.attr({
					x: c.startXPos,
					y: c.startYPos
				}), c.placed = !0)
			}
			var q = [];
			a.compose = function(a) {
				if ( - 1 === q.indexOf(a)) {
					var c = a.prototype;
					q.push(a);
					c.alignDataLabel = e;
					c.drawDataLabels = u;
					c.justifyDataLabel = x;
					c.setDataLabelStartPos = d
				}
			}
		})(e || (e = {}));
		"";
		return e
	});
	K(g, "Series/Column/ColumnDataLabel.js", [g["Core/Series/DataLabel.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = g.series,
		D = x.merge,
		B = x.pick,
		G; (function(g) {
			function t(a, c, g, m, e) {
				var f = this.chart.inverted,
				l = a.series,
				n = (l.xAxis ? l.xAxis.len: this.chart.plotSizeX) || 0;
				l = (l.yAxis ? l.yAxis.len: this.chart.plotSizeY) || 0;
				var t = a.dlBox || a.shapeArgs,
				r = B(a.below, a.plotY > B(this.translatedThreshold, l)),
				A = B(g.inside, !!this.options.stacking);
				t && (m = D(t), 0 > m.y && (m.height += m.y, m.y = 0), t = m.y + m.height - l, 0 < t && t < m.height && (m.height -= t), f && (m = {
					x: l - m.y - m.height,
					y: n - m.x - m.width,
					width: m.height,
					height: m.width
				}), A || (f ? (m.x += r ? 0 : m.width, m.width = 0) : (m.y += r ? m.height: 0, m.height = 0)));
				g.align = B(g.align, !f || A ? "center": r ? "right": "left");
				g.verticalAlign = B(g.verticalAlign, f || A ? "middle": r ? "top": "bottom");
				v.prototype.alignDataLabel.call(this, a, c, g, m, e);
				g.inside && a.contrastColor && c.css({
					color: a.contrastColor
				})
			}
			var n = [];
			g.compose = function(f) {
				a.compose(v); - 1 === n.indexOf(f) && (n.push(f), f.prototype.alignDataLabel = t)
			}
		})(G || (G = {}));
		return G
	});
	K(g, "Series/Bar/BarSeries.js", [g["Series/Column/ColumnSeries.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = this && this.__extends ||
		function() {
			var a = function(g, t) {
				a = Object.setPrototypeOf || {
					__proto__: []
				}
				instanceof Array &&
				function(a, f) {
					a.__proto__ = f
				} ||
				function(a, f) {
					for (var c in f) f.hasOwnProperty(c) && (a[c] = f[c])
				};
				return a(g, t)
			};
			return function(g, t) {
				function n() {
					this.constructor = g
				}
				a(g, t);
				g.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
			}
		} (),
		D = x.extend,
		B = x.merge;
		x = function(g) {
			function r() {
				var a = null !== g && g.apply(this, arguments) || this;
				a.data = void 0;
				a.options = void 0;
				a.points = void 0;
				return a
			}
			v(r, g);
			r.defaultOptions = B(a.defaultOptions, {});
			return r
		} (a);
		D(x.prototype, {
			inverted: !0
		});
		g.registerSeriesType("bar", x);
		"";
		return x
	});
	K(g, "Series/Scatter/ScatterSeriesDefaults.js", [],
	function() {
		"";
		return {
			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/>"
			}
		}
	});
	K(g, "Series/Scatter/ScatterSeries.js", [g["Series/Scatter/ScatterSeriesDefaults.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = this && this.__extends ||
		function() {
			var a = function(f, c) {
				a = Object.setPrototypeOf || {
					__proto__: []
				}
				instanceof Array &&
				function(a, c) {
					a.__proto__ = c
				} ||
				function(a, c) {
					for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e])
				};
				return a(f, c)
			};
			return function(f, c) {
				function g() {
					this.constructor = f
				}
				a(f, c);
				f.prototype = null === c ? Object.create(c) : (g.prototype = c.prototype, new g)
			}
		} (),
		D = g.seriesTypes,
		B = D.column,
		G = D.line;
		D = x.addEvent;
		var r = x.extend,
		t = x.merge;
		x = function(g) {
			function f() {
				var a = null !== g && g.apply(this, arguments) || this;
				a.data = void 0;
				a.options = void 0;
				a.points = void 0;
				return a
			}
			v(f, g);
			f.prototype.applyJitter = function() {
				var a = this,
				f = this.options.jitter,
				g = this.points.length;
				f && this.points.forEach(function(c, l) { ["x", "y"].forEach(function(e, m) {
						var n = "plot" + e.toUpperCase();
						if (f[e] && !c.isNull) {
							var u = a[e + "Axis"];
							var t = f[e] * u.transA;
							if (u && !u.isLog) {
								var d = Math.max(0, c[n] - t);
								u = Math.min(u.len, c[n] + t);
								m = 1E4 * Math.sin(l + m * g);
								c[n] = d + (u - d) * (m - Math.floor(m));
								"x" === e && (c.clientX = c.plotX)
							}
						}
					})
				})
			};
			f.prototype.drawGraph = function() {
				this.options.lineWidth ? g.prototype.drawGraph.call(this) : this.graph && (this.graph = this.graph.destroy())
			};
			f.defaultOptions = t(G.defaultOptions, a);
			return f
		} (G);
		r(x.prototype, {
			drawTracker: B.prototype.drawTracker,
			sorted: !1,
			requireSorting: !1,
			noSharedTooltip: !0,
			trackerGroups: ["group", "markerGroup", "dataLabelsGroup"],
			takeOrdinalPosition: !1
		});
		D(x, "afterTranslate",
		function() {
			this.applyJitter()
		});
		g.registerSeriesType("scatter", x);
		return x
	});
	K(g, "Series/CenteredUtilities.js", [g["Core/Globals.js"], g["Core/Series/Series.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = a.deg2rad,
		D = x.fireEvent,
		B = x.isNumber,
		G = x.pick,
		r = x.relativeLength,
		t; (function(a) {
			a.getCenter = function() {
				var a = this.options,
				c = this.chart,
				l = 2 * (a.slicedOffset || 0),
				m = c.plotWidth - 2 * l,
				e = c.plotHeight - 2 * l,
				n = a.center,
				t = Math.min(m, e),
				v = a.thickness,
				x = a.size,
				E = a.innerSize || 0;
				"string" === typeof x && (x = parseFloat(x));
				"string" === typeof E && (E = parseFloat(E));
				a = [G(n[0], "50%"), G(n[1], "50%"), G(x && 0 > x ? void 0 : a.size, "100%"), G(E && 0 > E ? void 0 : a.innerSize || 0, "0%")]; ! c.angular || this instanceof g || (a[3] = 0);
				for (n = 0; 4 > n; ++n) x = a[n],
				c = 2 > n || 2 === n && /%$/.test(x),
				a[n] = r(x, [m, e, t, a[2]][n]) + (c ? l: 0);
				a[3] > a[2] && (a[3] = a[2]);
				B(v) && 2 * v < a[2] && 0 < v && (a[3] = a[2] - 2 * v);
				D(this, "afterGetCenter", {
					positions: a
				});
				return a
			};
			a.getStartAndEndRadians = function(a, c) {
				a = B(a) ? a: 0;
				c = B(c) && c > a && 360 > c - a ? c: a + 360;
				return {
					start: v * (a + -90),
					end: v * (c + -90)
				}
			}
		})(t || (t = {}));
		"";
		return t
	});
	K(g, "Series/Pie/PiePoint.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Series/Point.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = this && this.__extends ||
		function() {
			var a = function(c, f) {
				a = Object.setPrototypeOf || {
					__proto__: []
				}
				instanceof Array &&
				function(a, c) {
					a.__proto__ = c
				} ||
				function(a, c) {
					for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e])
				};
				return a(c, f)
			};
			return function(c, f) {
				function g() {
					this.constructor = c
				}
				a(c, f);
				c.prototype = null === f ? Object.create(f) : (g.prototype = f.prototype, new g)
			}
		} (),
		D = a.setAnimation,
		B = x.addEvent,
		G = x.defined;
		a = x.extend;
		var r = x.isNumber,
		t = x.pick,
		n = x.relativeLength;
		g = function(a) {
			function c() {
				var c = null !== a && a.apply(this, arguments) || this;
				c.labelDistance = void 0;
				c.options = void 0;
				c.series = void 0;
				return c
			}
			v(c, a);
			c.prototype.getConnectorPath = function() {
				var a = this.labelPosition,
				c = this.series.options.dataLabels,
				e = this.connectorShapes,
				f = c.connectorShape;
				e[f] && (f = e[f]);
				return f.call(this, {
					x: a.final.x,
					y: a.final.y,
					alignment: a.alignment
				},
				a.connectorPosition, c)
			};
			c.prototype.getTranslate = function() {
				return this.sliced ? this.slicedTranslation: {
					translateX: 0,
					translateY: 0
				}
			};
			c.prototype.haloPath = function(a) {
				var c = this.shapeArgs;
				return this.sliced || !this.visible ? [] : this.series.chart.renderer.symbols.arc(c.x, c.y, c.r + a, c.r + a, {
					innerR: c.r - 1,
					start: c.start,
					end: c.end
				})
			};
			c.prototype.init = function() {
				var c = this;
				a.prototype.init.apply(this, arguments);
				this.name = t(this.name, "Slice");
				var f = function(a) {
					c.slice("select" === a.type)
				};
				B(this, "select", f);
				B(this, "unselect", f);
				return this
			};
			c.prototype.isValid = function() {
				return r(this.y) && 0 <= this.y
			};
			c.prototype.setVisible = function(a, c) {
				var e = this,
				f = this.series,
				g = f.chart,
				l = f.options.ignoreHiddenPoint;
				c = t(c, l);
				a !== this.visible && (this.visible = this.options.visible = a = "undefined" === typeof a ? !this.visible: a, f.options.data[f.data.indexOf(this)] = this.options, ["graphic", "dataLabel", "connector", "shadowGroup"].forEach(function(c) {
					if (e[c]) e[c][a ? "show": "hide"](a)
				}), this.legendItem && g.legend.colorizeItem(this, a), a || "hover" !== this.state || this.setState(""), l && (f.isDirty = !0), c && g.redraw())
			};
			c.prototype.slice = function(a, c, e) {
				var f = this.series;
				D(e, f.chart);
				t(c, !0);
				this.sliced = this.options.sliced = G(a) ? a: !this.sliced;
				f.options.data[f.data.indexOf(this)] = this.options;
				this.graphic && this.graphic.animate(this.getTranslate());
				this.shadowGroup && this.shadowGroup.animate(this.getTranslate())
			};
			return c
		} (g);
		a(g.prototype, {
			connectorShapes: {
				fixedOffset: function(a, c, g) {
					var f = c.breakAt;
					c = c.touchingSliceAt;
					return [["M", a.x, a.y], g.softConnector ? ["C", a.x + ("left" === a.alignment ? -5 : 5), a.y, 2 * f.x - c.x, 2 * f.y - c.y, f.x, f.y] : ["L", f.x, f.y], ["L", c.x, c.y]]
				},
				straight: function(a, c) {
					c = c.touchingSliceAt;
					return [["M", a.x, a.y], ["L", c.x, c.y]]
				},
				crookedLine: function(a, c, g) {
					c = c.touchingSliceAt;
					var f = this.series,
					e = f.center[0],
					l = f.chart.plotWidth,
					t = f.chart.plotLeft;
					f = a.alignment;
					var r = this.shapeArgs.r;
					g = n(g.crookDistance, 1);
					l = "left" === f ? e + r + (l + t - e - r) * (1 - g) : t + (e - r) * g;
					g = ["L", l, a.y];
					e = !0;
					if ("left" === f ? l > a.x || l < c.x: l < a.x || l > c.x) e = !1;
					a = [["M", a.x, a.y]];
					e && a.push(g);
					a.push(["L", c.x, c.y]);
					return a
				}
			}
		});
		return g
	});
	K(g, "Series/Pie/PieSeriesDefaults.js", [],
	function() {
		"";
		return {
			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: "#ffffff",
			borderWidth: 1,
			lineWidth: void 0,
			states: {
				hover: {
					brightness: .1
				}
			}
		}
	});
	K(g, "Series/Pie/PieSeries.js", [g["Series/CenteredUtilities.js"], g["Series/Column/ColumnSeries.js"], g["Core/Globals.js"], g["Core/Legend/LegendSymbol.js"], g["Series/Pie/PiePoint.js"], g["Series/Pie/PieSeriesDefaults.js"], g["Core/Series/Series.js"], g["Core/Series/SeriesRegistry.js"], g["Core/Renderer/SVG/Symbols.js"], g["Core/Utilities.js"]],
	function(a, g, x, E, D, B, G, r, t, n) {
		var f = this && this.__extends ||
		function() {
			var a = function(c, e) {
				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, e)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值