corrade-nucleus-nucleons

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 19  →  ?path2? @ 20
/base/000_base/node_modules/highcharts/js/modules/accessibility.js
@@ -0,0 +1,48 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Accessibility module
 
(c) 2010-2017 Highsoft AS
Author: Oystein Moseng
 
License: www.highcharts.com/license
*/
(function(q){"object"===typeof module&&module.exports?module.exports=q:q(Highcharts)})(function(q){(function(e){function q(a){return a.replace(/&/g,"\x26amp;").replace(/</g,"\x26lt;").replace(/>/g,"\x26gt;").replace(/"/g,"\x26quot;").replace(/'/g,"\x26#x27;").replace(/\//g,"\x26#x2F;")}function z(a){for(var c=a.childNodes.length;c--;)a.appendChild(a.childNodes[c])}function k(a){var c;a&&a.onclick&&l.createEvent&&(c=l.createEvent("Events"),c.initEvent("click",!0,!1),a.onclick(c))}var y=e.win,l=y.document,
g=e.each,A=e.erase,u=e.addEvent,B=e.removeEvent,x=e.fireEvent,C=e.dateFormat,w=e.merge,r={"default":["series","data point","data points"],line:["line","data point","data points"],spline:["line","data point","data points"],area:["line","data point","data points"],areaspline:["line","data point","data points"],pie:["pie","slice","slices"],column:["column series","column","columns"],bar:["bar series","bar","bars"],scatter:["scatter series","data point","data points"],boxplot:["boxplot series","box",
"boxes"],arearange:["arearange series","data point","data points"],areasplinerange:["areasplinerange series","data point","data points"],bubble:["bubble series","bubble","bubbles"],columnrange:["columnrange series","column","columns"],errorbar:["errorbar series","errorbar","errorbars"],funnel:["funnel","data point","data points"],pyramid:["pyramid","data point","data points"],waterfall:["waterfall series","column","columns"],map:["map","area","areas"],mapline:["line","data point","data points"],mappoint:["point series",
"data point","data points"],mapbubble:["bubble series","bubble","bubbles"]},D={boxplot:" Box plot charts are typically used to display groups of statistical data. Each data point in the chart can have up to 5 values: minimum, lower quartile, median, upper quartile and maximum. ",arearange:" Arearange charts are line charts displaying a range between a lower and higher value for each point. ",areasplinerange:" These charts are line charts displaying a range between a lower and higher value for each point. ",
bubble:" Bubble charts are scatter charts where each data point also has a size value. ",columnrange:" Columnrange charts are column charts displaying a range between a lower and higher value for each point. ",errorbar:" Errorbar series are used to display the variability of the data. ",funnel:" Funnel charts are used to display reduction of data in stages. ",pyramid:" Pyramid charts consist of a single pyramid with item heights corresponding to each point value. ",waterfall:" A waterfall chart is a column chart where each column contributes towards a total end value. "};
e.Series.prototype.commonKeys="name id category x value y".split(" ");e.Series.prototype.specialKeys="z open high q3 median q1 low close".split(" ");e.seriesTypes.pie&&(e.seriesTypes.pie.prototype.specialKeys=[]);e.setOptions({accessibility:{enabled:!0,pointDescriptionThreshold:30,keyboardNavigation:{enabled:!0}}});e.wrap(e.Series.prototype,"render",function(a){a.apply(this,Array.prototype.slice.call(arguments,1));this.chart.options.accessibility.enabled&&this.setA11yDescription()});e.Series.prototype.setA11yDescription=
function(){var a=this.chart.options.accessibility,c=this.points&&this.points.length&&this.points[0].graphic&&this.points[0].graphic.element,d=c&&c.parentNode||this.graph&&this.graph.element||this.group&&this.group.element;d&&(d.lastChild===c&&z(d),this.points&&(this.points.length<a.pointDescriptionThreshold||!1===a.pointDescriptionThreshold)&&g(this.points,function(b){b.graphic&&(b.graphic.element.setAttribute("role","img"),b.graphic.element.setAttribute("tabindex","-1"),b.graphic.element.setAttribute("aria-label",
b.series.options.pointDescriptionFormatter&&b.series.options.pointDescriptionFormatter(b)||a.pointDescriptionFormatter&&a.pointDescriptionFormatter(b)||b.buildPointInfoString()))}),1<this.chart.series.length||a.describeSingleSeries)&&(d.setAttribute("role",this.options.exposeElementToA11y?"img":"region"),d.setAttribute("tabindex","-1"),d.setAttribute("aria-label",a.seriesDescriptionFormatter&&a.seriesDescriptionFormatter(this)||this.buildSeriesInfoString()))};e.Series.prototype.buildSeriesInfoString=
function(){var a=r[this.type]||r["default"],c=this.description||this.options.description;return(this.name?this.name+", ":"")+(1===this.chart.types.length?a[0]:"series")+" "+(this.index+1)+" of "+this.chart.series.length+(1===this.chart.types.length?" with ":". "+a[0]+" with ")+(this.points.length+" "+(1===this.points.length?a[1]:a[2]))+(c?". "+c:"")+(1<this.chart.yAxis.length&&this.yAxis?". Y axis, "+this.yAxis.getDescription():"")+(1<this.chart.xAxis.length&&this.xAxis?". X axis, "+this.xAxis.getDescription():
"")};e.Point.prototype.buildPointInfoString=function(){var a=this,c=a.series,d=c.chart.options.accessibility,b="",f=c.xAxis&&c.xAxis.isDatetimeAxis,d=f&&C(d.pointDateFormatter&&d.pointDateFormatter(a)||d.pointDateFormat||e.Tooltip.prototype.getXDateFormat(a,c.chart.options.tooltip,c.xAxis),a.x);e.find(c.specialKeys,function(b){return void 0!==a[b]})?(f&&(b=d),g(c.commonKeys.concat(c.specialKeys),function(c){void 0===a[c]||f&&"x"===c||(b+=(b?". ":"")+c+", "+a[c])})):b=(this.name||d||this.category||
this.id||"x, "+this.x)+", "+(void 0!==this.value?this.value:this.y);return this.index+1+". "+b+"."+(this.description?" "+this.description:"")};e.Axis.prototype.getDescription=function(){return this.userOptions&&this.userOptions.description||this.axisTitle&&this.axisTitle.textStr||this.options.id||this.categories&&"categories"||"values"};e.Axis.prototype.panStep=function(a,c){var d=c||3;c=this.getExtremes();var b=(c.max-c.min)/d*a,d=c.max+b,b=c.min+b,f=d-b;0>a&&b<c.dataMin?(b=c.dataMin,d=b+f):0<a&&
d>c.dataMax&&(d=c.dataMax,b=d-f);this.setExtremes(b,d)};e.wrap(e.Series.prototype,"init",function(a){a.apply(this,Array.prototype.slice.call(arguments,1));var c=this.chart;c.options.accessibility.enabled&&(c.types=c.types||[],0>c.types.indexOf(this.type)&&c.types.push(this.type),u(this,"remove",function(){var a=this,b=!1;g(c.series,function(f){f!==a&&0>c.types.indexOf(a.type)&&(b=!0)});b||A(c.types,a.type)}))});e.Chart.prototype.getTypeDescription=function(){var a=this.types&&this.types[0],c=this.series[0]&&
this.series[0].mapTitle;if(a){if("map"===a)return c?"Map of "+c:"Map of unspecified region.";if(1<this.types.length)return"Combination chart.";if(-1<["spline","area","areaspline"].indexOf(a))return"Line chart."}else return"Empty chart.";return a+" chart."+(D[a]||"")};e.Chart.prototype.getAxesDescription=function(){var a=this.xAxis.length,c=this.yAxis.length,d={},b;if(a)if(d.xAxis="The chart has "+a+(1<a?" X axes":" X axis")+" displaying ",2>a)d.xAxis+=this.xAxis[0].getDescription()+".";else{for(b=
0;b<a-1;++b)d.xAxis+=(b?", ":"")+this.xAxis[b].getDescription();d.xAxis+=" and "+this.xAxis[b].getDescription()+"."}if(c)if(d.yAxis="The chart has "+c+(1<c?" Y axes":" Y axis")+" displaying ",2>c)d.yAxis+=this.yAxis[0].getDescription()+".";else{for(b=0;b<c-1;++b)d.yAxis+=(b?", ":"")+this.yAxis[b].getDescription();d.yAxis+=" and "+this.yAxis[b].getDescription()+"."}return d};e.Chart.prototype.addAccessibleContextMenuAttribs=function(){var a=this.exportDivElements;a&&(g(a,function(a){"DIV"!==a.tagName||
a.children&&a.children.length||(a.setAttribute("role","menuitem"),a.setAttribute("tabindex",-1))}),a[0].parentNode.setAttribute("role","menu"),a[0].parentNode.setAttribute("aria-label","Chart export"))};e.Point.prototype.highlight=function(){var a=this.series.chart;this.graphic&&this.graphic.element.focus&&this.graphic.element.focus();this.isNull?a.tooltip&&a.tooltip.hide(0):(this.onMouseOver(),a.tooltip&&a.tooltip.refresh(a.tooltip.shared?[this]:this));a.highlightedPoint=this;return this};e.Chart.prototype.highlightAdjacentPoint=
function(a){var c=this.series,d=this.highlightedPoint,b=d&&d.index||0,f=d&&d.series.points,E=d&&d.series.connectEnds&&b>f.length-3?2:1;if(!c[0]||!c[0].points)return!1;if(!d)return c[0].points[0].highlight();if(f[b]!==d)for(var e=0;e<f.length;++e)if(f[e]===d){b=e;break}c=c[d.series.index+(a?1:-1)];b=f[b+(a?E:-1)]||c&&c.points[a?0:c.points.length-(c.connectEnds?2:1)];return void 0===b?!1:b.isNull&&this.options.accessibility.keyboardNavigation.skipNullPoints||b.series.options.skipKeyboardNavigation?
(this.highlightedPoint=b,this.highlightAdjacentPoint(a)):b.highlight()};e.Chart.prototype.showExportMenu=function(){this.exportSVGElements&&this.exportSVGElements[0]&&(this.exportSVGElements[0].element.onclick(),this.highlightExportItem(0))};e.Chart.prototype.highlightExportItem=function(a){var c=this.exportDivElements&&this.exportDivElements[a],d=this.exportDivElements&&this.exportDivElements[this.highlightedExportItem];if(c&&"DIV"===c.tagName&&(!c.children||!c.children.length)){c.focus&&c.focus();
if(d&&d.onmouseout)d.onmouseout();if(c.onmouseover)c.onmouseover();this.highlightedExportItem=a;return!0}};e.Chart.prototype.highlightRangeSelectorButton=function(a){var c=this.rangeSelector.buttons;c[this.highlightedRangeSelectorItemIx]&&c[this.highlightedRangeSelectorItemIx].setState(this.oldRangeSelectorItemState||0);this.highlightedRangeSelectorItemIx=a;return c[a]?(c[a].element.focus&&c[a].element.focus(),this.oldRangeSelectorItemState=c[a].state,c[a].setState(2),!0):!1};e.Chart.prototype.highlightLegendItem=
function(a){var c=this.legend.allItems;c[this.highlightedLegendItemIx]&&x(c[this.highlightedLegendItemIx].legendGroup.element,"mouseout");this.highlightedLegendItemIx=a;return c[a]?(c[a].legendGroup.element.focus&&c[a].legendGroup.element.focus(),x(c[a].legendGroup.element,"mouseover"),!0):!1};e.Chart.prototype.hideExportMenu=function(){var a=this.exportDivElements;if(a){g(a,function(a){x(a,"mouseleave")});if(a[this.highlightedExportItem]&&a[this.highlightedExportItem].onmouseout)a[this.highlightedExportItem].onmouseout();
this.highlightedExportItem=0;this.renderTo.focus()}};e.Chart.prototype.addKeyboardNavEvents=function(){function a(b){this.keyCodeMap=b.keyCodeMap;this.move=b.move;this.validate=b.validate;this.init=b.init;this.transformTabs=!1!==b.transformTabs}function c(c,d){return new a(w({keyCodeMap:c,move:function(a){b.keyboardNavigationModuleIndex+=a;var c=b.keyboardNavigationModules[b.keyboardNavigationModuleIndex];if(c){if(c.validate&&!c.validate())return this.move(a);if(c.init)return c.init(a),!0}b.keyboardNavigationModuleIndex=
0;b.slipNextTab=!0;return!1}},d))}function d(a){a=a||y.event;var c=b.keyboardNavigationModules[b.keyboardNavigationModuleIndex];9===(a.which||a.keyCode)&&b.slipNextTab?b.slipNextTab=!1:(b.slipNextTab=!1,c&&c.run(a)&&a.preventDefault())}var b=this;a.prototype={run:function(b){var a=this,c=b.which||b.keyCode,f=!1,c=this.transformTabs&&9===c?b.shiftKey?37:39:c;g(this.keyCodeMap,function(d){-1<d[0].indexOf(c)&&(f=!1===d[1].call(a,c,b)?!1:!0)});return f}};b.keyboardNavigationModules=[c([[[37,39],function(a){if(!b.highlightAdjacentPoint(39===
a))return this.move(39===a?1:-1)}],[[38,40],function(a){var c;if(b.highlightedPoint)if((c=b.series[b.highlightedPoint.series.index+(38===a?-1:1)])&&c.points[0])c.points[0].highlight();else return this.move(40===a?1:-1)}],[[13,32],function(){b.highlightedPoint&&b.highlightedPoint.firePointEvent("click")}]],{init:function(a){var c=b.series&&b.series[b.series.length-1],c=c&&c.points&&c.points[c.points.length-1];0>a&&c&&c.highlight()}}),c([[[37,38],function(){for(var a=b.highlightedExportItem||0,c=!0,
d=b.series;a--;)if(b.highlightExportItem(a)){c=!1;break}if(c)return b.hideExportMenu(),d&&d.length&&(a=d[d.length-1],a.points.length&&a.points[a.points.length-1].highlight()),this.move(-1)}],[[39,40],function(){for(var a=!0,c=(b.highlightedExportItem||0)+1;c<b.exportDivElements.length;++c)if(b.highlightExportItem(c)){a=!1;break}if(a)return b.hideExportMenu(),this.move(1)}],[[13,32],function(){k(b.exportDivElements[b.highlightedExportItem])}]],{validate:function(){return b.exportChart&&!(b.options.exporting&&
!1===b.options.exporting.enabled)},init:function(a){b.highlightedPoint=null;b.showExportMenu();if(0>a&&b.exportDivElements)for(a=b.exportDivElements.length;-1<a&&!b.highlightExportItem(a);--a);}}),c([[[38,40,37,39],function(a){b[38===a||40===a?"yAxis":"xAxis"][0].panStep(39>a?-1:1)}],[[9],function(a,c){b.mapNavButtons[b.focusedMapNavButtonIx].setState(0);if(c.shiftKey&&!b.focusedMapNavButtonIx||!c.shiftKey&&b.focusedMapNavButtonIx)return b.mapZoom(),this.move(c.shiftKey?-1:1);b.focusedMapNavButtonIx+=
c.shiftKey?-1:1;a=b.mapNavButtons[b.focusedMapNavButtonIx];a.element.focus&&a.element.focus();a.setState(2)}],[[13,32],function(){k(b.mapNavButtons[b.focusedMapNavButtonIx].element)}]],{validate:function(){return b.mapZoom&&b.mapNavButtons&&2===b.mapNavButtons.length},transformTabs:!1,init:function(a){var c=b.mapNavButtons[0],d=b.mapNavButtons[1],c=0<a?c:d;g(b.mapNavButtons,function(a,b){a.element.setAttribute("tabindex",-1);a.element.setAttribute("role","button");a.element.setAttribute("aria-label",
"Zoom "+(b?"out":"")+"chart")});c.element.focus&&c.element.focus();c.setState(2);b.focusedMapNavButtonIx=0<a?0:1}}),c([[[37,39,38,40],function(a){a=37===a||38===a?-1:1;if(!b.highlightRangeSelectorButton(b.highlightedRangeSelectorItemIx+a))return this.move(a)}],[[13,32],function(){3!==b.oldRangeSelectorItemState&&k(b.rangeSelector.buttons[b.highlightedRangeSelectorItemIx].element)}]],{validate:function(){return b.rangeSelector&&b.rangeSelector.buttons&&b.rangeSelector.buttons.length},init:function(a){g(b.rangeSelector.buttons,
function(a){a.element.setAttribute("tabindex","-1");a.element.setAttribute("role","button");a.element.setAttribute("aria-label","Select range "+(a.text&&a.text.textStr))});b.highlightRangeSelectorButton(0<a?0:b.rangeSelector.buttons.length-1)}}),c([[[9,38,40],function(a,c){a=9===a&&c.shiftKey||38===a?-1:1;c=b.highlightedInputRangeIx+=a;if(1<c||0>c)return this.move(a);b.rangeSelector[c?"maxInput":"minInput"].focus()}]],{validate:function(){return b.rangeSelector&&b.rangeSelector.inputGroup&&"hidden"!==
b.rangeSelector.inputGroup.element.getAttribute("visibility")&&!1!==b.options.rangeSelector.inputEnabled&&b.rangeSelector.minInput&&b.rangeSelector.maxInput},transformTabs:!1,init:function(a){b.highlightedInputRangeIx=0<a?0:1;b.rangeSelector[b.highlightedInputRangeIx?"maxInput":"minInput"].focus()}}),c([[[37,39,38,40],function(a){a=37===a||38===a?-1:1;if(!b.highlightLegendItem(b.highlightedLegendItemIx+a))return this.move(a)}],[[13,32],function(){k(b.legend.allItems[b.highlightedLegendItemIx].legendItem.element.parentNode)}]],
{validate:function(){return b.legend&&b.legend.allItems&&!(b.colorAxis&&b.colorAxis.length)},init:function(a){g(b.legend.allItems,function(a){a.legendGroup.element.setAttribute("tabindex","-1");a.legendGroup.element.setAttribute("role","button");a.legendGroup.element.setAttribute("aria-label","Toggle visibility of series "+a.name)});b.highlightLegendItem(0<a?0:b.legend.allItems.length-1)}})];b.keyboardNavigationModuleIndex=0;b.container.hasAttribute&&!b.container.hasAttribute("tabIndex")&&b.container.setAttribute("tabindex",
"0");u(b.renderTo,"keydown",d);u(b,"destroy",function(){B(b.renderTo,"keydown",d)})};e.Chart.prototype.addScreenReaderRegion=function(a,c){var d=this,b=d.series,e=d.options,g=e.accessibility,m=d.screenReaderRegion=l.createElement("div"),k=l.createElement("h4"),n=l.createElement("a"),v=l.createElement("h4"),t={position:"absolute",left:"-9999px",top:"auto",width:"1px",height:"1px",overflow:"hidden"},h=d.types||[],h=(1===h.length&&"pie"===h[0]||"map"===h[0])&&{}||d.getAxesDescription(),p=b[0]&&r[b[0].type]||
r["default"];m.setAttribute("id",a);m.setAttribute("role","region");m.setAttribute("aria-label","Chart screen reader information.");m.innerHTML=g.screenReaderSectionFormatter&&g.screenReaderSectionFormatter(d)||"\x3cdiv\x3eUse regions/landmarks to skip ahead to chart"+(1<b.length?" and navigate between data series":"")+".\x3c/div\x3e\x3ch3\x3e"+(e.title.text?q(e.title.text):"Chart")+(e.subtitle&&e.subtitle.text?". "+q(e.subtitle.text):"")+"\x3c/h3\x3e\x3ch4\x3eLong description.\x3c/h4\x3e\x3cdiv\x3e"+
(e.chart.description||"No description available.")+"\x3c/div\x3e\x3ch4\x3eStructure.\x3c/h4\x3e\x3cdiv\x3eChart type: "+(e.chart.typeDescription||d.getTypeDescription())+"\x3c/div\x3e"+(1===b.length?"\x3cdiv\x3e"+p[0]+" with "+b[0].points.length+" "+(1===b[0].points.length?p[1]:p[2])+".\x3c/div\x3e":"")+(h.xAxis?"\x3cdiv\x3e"+h.xAxis+"\x3c/div\x3e":"")+(h.yAxis?"\x3cdiv\x3e"+h.yAxis+"\x3c/div\x3e":"");d.getCSV&&(n.innerHTML="View as data table.",n.href="#"+c,n.setAttribute("tabindex","-1"),n.onclick=
g.onTableAnchorClick||function(){d.viewData();l.getElementById(c).focus()},k.appendChild(n),m.appendChild(k));v.innerHTML="Chart graphic.";d.renderTo.insertBefore(v,d.renderTo.firstChild);d.renderTo.insertBefore(m,d.renderTo.firstChild);w(!0,v.style,t);w(!0,m.style,t)};e.Chart.prototype.callbacks.push(function(a){var c=a.options,d=c.accessibility;if(d.enabled){var b=l.createElementNS("http://www.w3.org/2000/svg","title"),f=l.createElementNS("http://www.w3.org/2000/svg","g"),k=a.container.getElementsByTagName("desc")[0],
m=a.container.getElementsByTagName("text"),r="highcharts-title-"+a.index,n="highcharts-data-table-"+a.index,v="highcharts-information-region-"+a.index,t=c.title.text||"Chart",h=c.exporting&&c.exporting.csv&&c.exporting.csv.columnHeaderFormatter,p=[];b.textContent=q(t);b.id=r;k.parentNode.insertBefore(b,k);a.renderTo.setAttribute("role","region");a.renderTo.setAttribute("aria-label","Interactive chart. "+t+". Use up and down arrows to navigate with most screen readers.");if(a.exportSVGElements&&a.exportSVGElements[0]&&
a.exportSVGElements[0].element){var u=a.exportSVGElements[0].element.onclick,b=a.exportSVGElements[0].element.parentNode;a.exportSVGElements[0].element.onclick=function(){u.apply(this,Array.prototype.slice.call(arguments));a.addAccessibleContextMenuAttribs();a.highlightExportItem(0)};a.exportSVGElements[0].element.setAttribute("role","button");a.exportSVGElements[0].element.setAttribute("aria-label","View export menu");f.appendChild(a.exportSVGElements[0].element);f.setAttribute("role","region");
f.setAttribute("aria-label","Chart export menu");b.appendChild(f)}a.rangeSelector&&g(["minInput","maxInput"],function(b,c){a.rangeSelector[b]&&(a.rangeSelector[b].setAttribute("tabindex","-1"),a.rangeSelector[b].setAttribute("role","textbox"),a.rangeSelector[b].setAttribute("aria-label","Select "+(c?"end":"start")+" date."))});g(m,function(a){a.setAttribute("aria-hidden","true")});a.addScreenReaderRegion(v,n);d.keyboardNavigation.enabled&&a.addKeyboardNavEvents();w(!0,c.exporting,{csv:{columnHeaderFormatter:function(a,
b,c){if(!a)return"Category";if(a instanceof e.Axis)return a.options.title&&a.options.title.text||(a.isDatetimeAxis?"DateTime":"Category");var d=p[p.length-1];1<c&&(d&&d.text)!==a.name&&p.push({text:a.name,span:c});return h?h.call(this,a,b,c):1<c?b:a.name}}});e.wrap(a,"getTable",function(a){return a.apply(this,Array.prototype.slice.call(arguments,1)).replace("\x3ctable\x3e",'\x3ctable id\x3d"'+n+'" summary\x3d"Table representation of chart"\x3e\x3ccaption\x3e'+t+"\x3c/caption\x3e")});e.wrap(a,"viewData",
function(a){if(!this.dataTableDiv){a.apply(this,Array.prototype.slice.call(arguments,1));var b=l.getElementById(n),c=b.getElementsByTagName("thead")[0],d=b.getElementsByTagName("tbody")[0],e=c.firstChild.children,f="\x3ctr\x3e\x3ctd\x3e\x3c/td\x3e",h,k;b.setAttribute("tabindex","-1");g(d.children,function(a){h=a.firstChild;k=l.createElement("th");k.setAttribute("scope","row");k.innerHTML=h.innerHTML;h.parentNode.replaceChild(k,h)});g(e,function(a){"TH"===a.tagName&&a.setAttribute("scope","col")});
p.length&&(g(p,function(a){f+='\x3cth scope\x3d"col" colspan\x3d"'+a.span+'"\x3e'+a.text+"\x3c/th\x3e"}),c.insertAdjacentHTML("afterbegin",f))}})}})})(q)});
/base/000_base/node_modules/highcharts/js/modules/accessibility.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":48,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","htmlencode","html","replace","reverseChildNodes","node","i","childNodes","length","appendChild","fakeClickEvent","element","fakeEvent","onclick","doc","createEvent","initEvent","win","document","each","erase","addEvent","removeEvent","fireEvent","dateFormat","merge","typeToSeriesMap","typeDescriptionMap","boxplot","arearange","areasplinerange","bubble","columnrange","errorbar","funnel","pyramid","waterfall","Series","prototype","commonKeys","specialKeys","seriesTypes","pie","setOptions","accessibility","enabled","pointDescriptionThreshold","keyboardNavigation","wrap","proceed","apply","Array","slice","call","arguments","chart","options","setA11yDescription","H.Series.prototype.setA11yDescription","a11yOptions","firstPointEl","points","graphic","seriesEl","parentNode","graph","group","lastChild","point","setAttribute","series","pointDescriptionFormatter","buildPointInfoString","describeSingleSeries","exposeElementToA11y","seriesDescriptionFormatter","buildSeriesInfoString","H.Series.prototype.buildSeriesInfoString","typeInfo","type","description","name","types","index","yAxis","getDescription","xAxis","Point","H.Point.prototype.buildPointInfoString","infoString","dateTimePoint","isDatetimeAxis","timeDesc","pointDateFormatter","pointDateFormat","Tooltip","getXDateFormat","tooltip","x","find","hasSpecialKey","key","undefined","concat","category","id","value","y","Axis","H.Axis.prototype.getDescription","userOptions","axisTitle","textStr","categories","panStep","H.Axis.prototype.panStep","direction","granularity","gran","extremes","getExtremes","step","max","min","newMax","newMin","size","dataMin","dataMax","setExtremes","indexOf","push","removedSeries","hasType","s","Chart","getTypeDescription","H.Chart.prototype.getTypeDescription","firstType","mapTitle","getAxesDescription","H.Chart.prototype.getAxesDescription","numXAxes","numYAxes","desc","addAccessibleContextMenuAttribs","H.Chart.prototype.addAccessibleContextMenuAttribs","exportList","exportDivElements","item","tagName","children","highlight","H.Point.prototype.highlight","focus","isNull","hide","onMouseOver","refresh","shared","highlightedPoint","highlightAdjacentPoint","H.Chart.prototype.highlightAdjacentPoint","next","curPoint","curPointIndex","curPoints","forwardSkipAmount","connectEnds","newSeries","newPoint","skipNullPoints","skipKeyboardNavigation","showExportMenu","H.Chart.prototype.showExportMenu","exportSVGElements","highlightExportItem","H.Chart.prototype.highlightExportItem","ix","listItem","curHighlighted","highlightedExportItem","onmouseout","onmouseover","highlightRangeSelectorButton","H.Chart.prototype.highlightRangeSelectorButton","buttons","rangeSelector","highlightedRangeSelectorItemIx","setState","oldRangeSelectorItemState","state","highlightLegendItem","H.Chart.prototype.highlightLegendItem","items","legend","allItems","highlightedLegendItemIx","legendGroup","hideExportMenu","H.Chart.prototype.hideExportMenu","el","renderTo","addKeyboardNavEvents","H.Chart.prototype.addKeyboardNavEvents","KeyboardNavigationModule","keyCodeMap","move","validate","init","transformTabs","navModuleFactory","keyMap","keyboardNavigationModuleIndex","newModule","keyboardNavigationModules","slipNextTab","keydownHandler","ev","e","event","curNavModule","which","keyCode","run","preventDefault","navModule","handled","shiftKey","codeSet","firePointEvent","lastSeries","lastPoint","reachedEnd","exportChart","exporting","mapNavButtons","focusedMapNavButtonIx","mapZoom","button","zoomIn","zoomOut","initialButton","text","newIx","highlightedInputRangeIx","inputGroup","getAttribute","inputEnabled","minInput","maxInput","legendItem","colorAxis","container","hasAttribute","addScreenReaderRegion","H.Chart.prototype.addScreenReaderRegion","tableId","hiddenSection","screenReaderRegion","createElement","tableShortcut","tableShortcutAnchor","chartHeading","hiddenStyle","position","left","top","width","height","overflow","chartTypes","axesDesc","chartTypeInfo","innerHTML","screenReaderSectionFormatter","title","subtitle","typeDescription","getCSV","href","onTableAnchorClick","viewData","getElementById","insertBefore","firstChild","style","callbacks","titleElement","createElementNS","exportGroupElement","descElement","getElementsByTagName","textElements","titleId","hiddenSectionId","chartTitle","oldColumnHeaderFormatter","csv","columnHeaderFormatter","topLevelColumns","textContent","oldExportCallback","parent","keyLength","prevCol","span","dataTableDiv","table","head","body","firstRow","columnHeaderRow","cell","newCell","replaceChild","col","insertAdjacentHTML"]
}
/base/000_base/node_modules/highcharts/js/modules/accessibility.src.js
@@ -0,0 +1,1138 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Accessibility module
*
* (c) 2010-2017 Highsoft AS
* Author: Oystein Moseng
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Accessibility module
*
* (c) 2010-2017 Highsoft AS
* Author: Oystein Moseng
*
* License: www.highcharts.com/license
*/
 
var win = H.win,
doc = win.document,
each = H.each,
erase = H.erase,
addEvent = H.addEvent,
removeEvent = H.removeEvent,
fireEvent = H.fireEvent,
dateFormat = H.dateFormat,
merge = H.merge,
// Human readable description of series and each point in singular and plural
typeToSeriesMap = {
'default': ['series', 'data point', 'data points'],
'line': ['line', 'data point', 'data points'],
'spline': ['line', 'data point', 'data points'],
'area': ['line', 'data point', 'data points'],
'areaspline': ['line', 'data point', 'data points'],
'pie': ['pie', 'slice', 'slices'],
'column': ['column series', 'column', 'columns'],
'bar': ['bar series', 'bar', 'bars'],
'scatter': ['scatter series', 'data point', 'data points'],
'boxplot': ['boxplot series', 'box', 'boxes'],
'arearange': ['arearange series', 'data point', 'data points'],
'areasplinerange': ['areasplinerange series', 'data point', 'data points'],
'bubble': ['bubble series', 'bubble', 'bubbles'],
'columnrange': ['columnrange series', 'column', 'columns'],
'errorbar': ['errorbar series', 'errorbar', 'errorbars'],
'funnel': ['funnel', 'data point', 'data points'],
'pyramid': ['pyramid', 'data point', 'data points'],
'waterfall': ['waterfall series', 'column', 'columns'],
'map': ['map', 'area', 'areas'],
'mapline': ['line', 'data point', 'data points'],
'mappoint': ['point series', 'data point', 'data points'],
'mapbubble': ['bubble series', 'bubble', 'bubbles']
},
// Descriptions for exotic chart types
typeDescriptionMap = {
boxplot: ' Box plot charts are typically used to display groups of statistical data. ' +
'Each data point in the chart can have up to 5 values: minimum, lower quartile, median, upper quartile and maximum. ',
arearange: ' Arearange charts are line charts displaying a range between a lower and higher value for each point. ',
areasplinerange: ' These charts are line charts displaying a range between a lower and higher value for each point. ',
bubble: ' Bubble charts are scatter charts where each data point also has a size value. ',
columnrange: ' Columnrange charts are column charts displaying a range between a lower and higher value for each point. ',
errorbar: ' Errorbar series are used to display the variability of the data. ',
funnel: ' Funnel charts are used to display reduction of data in stages. ',
pyramid: ' Pyramid charts consist of a single pyramid with item heights corresponding to each point value. ',
waterfall: ' A waterfall chart is a column chart where each column contributes towards a total end value. '
};
 
// If a point has one of the special keys defined, we expose all keys to the
// screen reader.
H.Series.prototype.commonKeys = ['name', 'id', 'category', 'x', 'value', 'y'];
H.Series.prototype.specialKeys = [
'z', 'open', 'high', 'q3', 'median', 'q1', 'low', 'close'
];
 
// A pie is always simple. Don't quote me on that.
if (H.seriesTypes.pie) {
H.seriesTypes.pie.prototype.specialKeys = [];
}
 
 
// Default a11y options
H.setOptions({
accessibility: {
enabled: true,
pointDescriptionThreshold: 30, // set to false to disable
keyboardNavigation: {
enabled: true
// skipNullPoints: false
}
// describeSingleSeries: false
}
});
 
/**
* HTML encode some characters vulnerable for XSS.
* @param {string} html The input string
* @return {string} The excaped string
*/
function htmlencode(html) {
return html
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#x27;')
.replace(/\//g, '&#x2F;');
}
 
// Utility function. Reverses child nodes of a DOM element
function reverseChildNodes(node) {
var i = node.childNodes.length;
while (i--) {
node.appendChild(node.childNodes[i]);
}
}
 
// Utility function to attempt to fake a click event on an element
function fakeClickEvent(element) {
var fakeEvent;
if (element && element.onclick && doc.createEvent) {
fakeEvent = doc.createEvent('Events');
fakeEvent.initEvent('click', true, false);
element.onclick(fakeEvent);
}
}
 
// Whenever drawing series, put info on DOM elements
H.wrap(H.Series.prototype, 'render', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
if (this.chart.options.accessibility.enabled) {
this.setA11yDescription();
}
});
 
// Put accessible info on series and points of a series
H.Series.prototype.setA11yDescription = function() {
var a11yOptions = this.chart.options.accessibility,
firstPointEl = this.points && this.points.length && this.points[0].graphic && this.points[0].graphic.element,
seriesEl = firstPointEl && firstPointEl.parentNode || this.graph && this.graph.element || this.group && this.group.element; // Could be tracker series depending on series type
 
if (seriesEl) {
// For some series types the order of elements do not match the order of points in series
// In that case we have to reverse them in order for AT to read them out in an understandable order
if (seriesEl.lastChild === firstPointEl) {
reverseChildNodes(seriesEl);
}
// Make individual point elements accessible if possible. Note: If markers are disabled there might not be any elements there to make accessible.
if (this.points && (this.points.length < a11yOptions.pointDescriptionThreshold || a11yOptions.pointDescriptionThreshold === false)) {
each(this.points, function(point) {
if (point.graphic) {
point.graphic.element.setAttribute('role', 'img');
point.graphic.element.setAttribute('tabindex', '-1');
point.graphic.element.setAttribute('aria-label',
point.series.options.pointDescriptionFormatter &&
point.series.options.pointDescriptionFormatter(point) ||
a11yOptions.pointDescriptionFormatter &&
a11yOptions.pointDescriptionFormatter(point) ||
point.buildPointInfoString());
}
});
}
// Make series element accessible
if (this.chart.series.length > 1 || a11yOptions.describeSingleSeries) {
seriesEl.setAttribute(
'role',
this.options.exposeElementToA11y ? 'img' : 'region'
);
seriesEl.setAttribute('tabindex', '-1');
seriesEl.setAttribute('aria-label', a11yOptions.seriesDescriptionFormatter && a11yOptions.seriesDescriptionFormatter(this) ||
this.buildSeriesInfoString());
}
}
};
 
// Return string with information about series
H.Series.prototype.buildSeriesInfoString = function() {
var typeInfo = typeToSeriesMap[this.type] || typeToSeriesMap['default'], // eslint-disable-line dot-notation
description = this.description || this.options.description;
return (this.name ? this.name + ', ' : '') +
(this.chart.types.length === 1 ? typeInfo[0] : 'series') + ' ' + (this.index + 1) + ' of ' + (this.chart.series.length) +
(this.chart.types.length === 1 ? ' with ' : '. ' + typeInfo[0] + ' with ') +
(this.points.length + ' ' + (this.points.length === 1 ? typeInfo[1] : typeInfo[2])) +
(description ? '. ' + description : '') +
(this.chart.yAxis.length > 1 && this.yAxis ? '. Y axis, ' + this.yAxis.getDescription() : '') +
(this.chart.xAxis.length > 1 && this.xAxis ? '. X axis, ' + this.xAxis.getDescription() : '');
};
 
// Return string with information about point
H.Point.prototype.buildPointInfoString = function() {
var point = this,
series = point.series,
a11yOptions = series.chart.options.accessibility,
infoString = '',
dateTimePoint = series.xAxis && series.xAxis.isDatetimeAxis,
timeDesc = dateTimePoint && dateFormat(a11yOptions.pointDateFormatter && a11yOptions.pointDateFormatter(point) || a11yOptions.pointDateFormat ||
H.Tooltip.prototype.getXDateFormat(point, series.chart.options.tooltip, series.xAxis), point.x),
hasSpecialKey = H.find(series.specialKeys, function(key) {
return point[key] !== undefined;
});
 
// If the point has one of the less common properties defined, display all that are defined
if (hasSpecialKey) {
if (dateTimePoint) {
infoString = timeDesc;
}
each(series.commonKeys.concat(series.specialKeys), function(key) {
if (point[key] !== undefined && !(dateTimePoint && key === 'x')) {
infoString += (infoString ? '. ' : '') + key + ', ' + point[key];
}
});
} else {
// Pick and choose properties for a succint label
infoString = (this.name || timeDesc || this.category || this.id || 'x, ' + this.x) + ', ' +
(this.value !== undefined ? this.value : this.y);
}
 
return (this.index + 1) + '. ' + infoString + '.' + (this.description ? ' ' + this.description : '');
};
 
// Get descriptive label for axis
H.Axis.prototype.getDescription = function() {
return this.userOptions && this.userOptions.description || this.axisTitle && this.axisTitle.textStr ||
this.options.id || this.categories && 'categories' || 'values';
};
 
// Pan along axis in a direction (1 or -1), optionally with a defined granularity (number of steps it takes to walk across current view)
H.Axis.prototype.panStep = function(direction, granularity) {
var gran = granularity || 3,
extremes = this.getExtremes(),
step = (extremes.max - extremes.min) / gran * direction,
newMax = extremes.max + step,
newMin = extremes.min + step,
size = newMax - newMin;
if (direction < 0 && newMin < extremes.dataMin) {
newMin = extremes.dataMin;
newMax = newMin + size;
} else if (direction > 0 && newMax > extremes.dataMax) {
newMax = extremes.dataMax;
newMin = newMax - size;
}
this.setExtremes(newMin, newMax);
};
 
// Whenever adding or removing series, keep track of types present in chart
H.wrap(H.Series.prototype, 'init', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
var chart = this.chart;
if (chart.options.accessibility.enabled) {
chart.types = chart.types || [];
 
// Add type to list if does not exist
if (chart.types.indexOf(this.type) < 0) {
chart.types.push(this.type);
}
 
addEvent(this, 'remove', function() {
var removedSeries = this,
hasType = false;
 
// Check if any of the other series have the same type as this one. Otherwise remove it from the list.
each(chart.series, function(s) {
if (s !== removedSeries && chart.types.indexOf(removedSeries.type) < 0) {
hasType = true;
}
});
if (!hasType) {
erase(chart.types, removedSeries.type);
}
});
}
});
 
// Return simplified description of chart type. Some types will not be familiar to most screen reader users, but we try.
H.Chart.prototype.getTypeDescription = function() {
var firstType = this.types && this.types[0],
mapTitle = this.series[0] && this.series[0].mapTitle;
if (!firstType) {
return 'Empty chart.';
} else if (firstType === 'map') {
return mapTitle ? 'Map of ' + mapTitle : 'Map of unspecified region.';
} else if (this.types.length > 1) {
return 'Combination chart.';
} else if (['spline', 'area', 'areaspline'].indexOf(firstType) > -1) {
return 'Line chart.';
}
return firstType + ' chart.' + (typeDescriptionMap[firstType] || '');
};
 
// Return object with text description of each of the chart's axes
H.Chart.prototype.getAxesDescription = function() {
var numXAxes = this.xAxis.length,
numYAxes = this.yAxis.length,
desc = {},
i;
 
if (numXAxes) {
desc.xAxis = 'The chart has ' + numXAxes + (numXAxes > 1 ? ' X axes' : ' X axis') + ' displaying ';
if (numXAxes < 2) {
desc.xAxis += this.xAxis[0].getDescription() + '.';
} else {
for (i = 0; i < numXAxes - 1; ++i) {
desc.xAxis += (i ? ', ' : '') + this.xAxis[i].getDescription();
}
desc.xAxis += ' and ' + this.xAxis[i].getDescription() + '.';
}
}
 
if (numYAxes) {
desc.yAxis = 'The chart has ' + numYAxes + (numYAxes > 1 ? ' Y axes' : ' Y axis') + ' displaying ';
if (numYAxes < 2) {
desc.yAxis += this.yAxis[0].getDescription() + '.';
} else {
for (i = 0; i < numYAxes - 1; ++i) {
desc.yAxis += (i ? ', ' : '') + this.yAxis[i].getDescription();
}
desc.yAxis += ' and ' + this.yAxis[i].getDescription() + '.';
}
}
 
return desc;
};
 
// Set a11y attribs on exporting menu
H.Chart.prototype.addAccessibleContextMenuAttribs = function() {
var exportList = this.exportDivElements;
if (exportList) {
// Set tabindex on the menu items to allow focusing by script
// Set role to give screen readers a chance to pick up the contents
each(exportList, function(item) {
if (item.tagName === 'DIV' &&
!(item.children && item.children.length)) {
item.setAttribute('role', 'menuitem');
item.setAttribute('tabindex', -1);
}
});
// Set accessibility properties on parent div
exportList[0].parentNode.setAttribute('role', 'menu');
exportList[0].parentNode.setAttribute('aria-label', 'Chart export');
}
};
 
// Highlight a point (show tooltip and display hover state). Returns the highlighted point.
H.Point.prototype.highlight = function() {
var chart = this.series.chart;
if (this.graphic && this.graphic.element.focus) {
this.graphic.element.focus();
}
if (!this.isNull) {
this.onMouseOver(); // Show the hover marker
// Show the tooltip
if (chart.tooltip) {
chart.tooltip.refresh(chart.tooltip.shared ? [this] : this);
}
} else {
if (chart.tooltip) {
chart.tooltip.hide(0);
}
// Don't call blur on the element, as it messes up the chart div's focus
}
chart.highlightedPoint = this;
return this;
};
 
// Function to highlight next/previous point in chart
// Returns highlighted point on success, false on failure (no adjacent point to highlight in chosen direction)
H.Chart.prototype.highlightAdjacentPoint = function(next) {
var series = this.series,
curPoint = this.highlightedPoint,
curPointIndex = curPoint && curPoint.index || 0,
curPoints = curPoint && curPoint.series.points,
newSeries,
newPoint,
// Handle connecting ends - where the points array has an extra last
// point that is a reference to the first one. We skip this.
forwardSkipAmount = curPoint && curPoint.series.connectEnds &&
curPointIndex > curPoints.length - 3 ? 2 : 1;
 
// If no points, return false
if (!series[0] || !series[0].points) {
return false;
}
 
// Use first point if none already highlighted
if (!curPoint) {
return series[0].points[0].highlight();
}
 
// Find index of current point in series.points array. Necessary for dataGrouping (and maybe zoom?)
if (curPoints[curPointIndex] !== curPoint) {
for (var i = 0; i < curPoints.length; ++i) {
if (curPoints[i] === curPoint) {
curPointIndex = i;
break;
}
}
}
 
// Grab next/prev point & series
newSeries = series[curPoint.series.index + (next ? 1 : -1)];
newPoint = curPoints[curPointIndex + (next ? forwardSkipAmount : -1)] ||
// Done with this series, try next one
newSeries &&
newSeries.points[next ? 0 : newSeries.points.length - (
newSeries.connectEnds ? 2 : 1
)];
 
// If there is no adjacent point, we return false
if (newPoint === undefined) {
return false;
}
 
// Recursively skip null points or points in series that should be skipped
if (
newPoint.isNull &&
this.options.accessibility.keyboardNavigation.skipNullPoints ||
newPoint.series.options.skipKeyboardNavigation
) {
this.highlightedPoint = newPoint;
return this.highlightAdjacentPoint(next);
}
 
// There is an adjacent point, highlight it
return newPoint.highlight();
};
 
// Show the export menu and focus the first item (if exists)
H.Chart.prototype.showExportMenu = function() {
if (this.exportSVGElements && this.exportSVGElements[0]) {
this.exportSVGElements[0].element.onclick();
this.highlightExportItem(0);
}
};
 
// Highlight export menu item by index
H.Chart.prototype.highlightExportItem = function(ix) {
var listItem = this.exportDivElements && this.exportDivElements[ix],
curHighlighted = this.exportDivElements && this.exportDivElements[this.highlightedExportItem];
 
if (listItem && listItem.tagName === 'DIV' && !(listItem.children && listItem.children.length)) {
if (listItem.focus) {
listItem.focus();
}
if (curHighlighted && curHighlighted.onmouseout) {
curHighlighted.onmouseout();
}
if (listItem.onmouseover) {
listItem.onmouseover();
}
this.highlightedExportItem = ix;
return true;
}
};
 
// Highlight range selector button by index
H.Chart.prototype.highlightRangeSelectorButton = function(ix) {
var buttons = this.rangeSelector.buttons;
// Deselect old
if (buttons[this.highlightedRangeSelectorItemIx]) {
buttons[this.highlightedRangeSelectorItemIx].setState(this.oldRangeSelectorItemState || 0);
}
// Select new
this.highlightedRangeSelectorItemIx = ix;
if (buttons[ix]) {
if (buttons[ix].element.focus) {
buttons[ix].element.focus();
}
this.oldRangeSelectorItemState = buttons[ix].state;
buttons[ix].setState(2);
return true;
}
return false;
};
 
// Highlight legend item by index
H.Chart.prototype.highlightLegendItem = function(ix) {
var items = this.legend.allItems;
if (items[this.highlightedLegendItemIx]) {
fireEvent(items[this.highlightedLegendItemIx].legendGroup.element, 'mouseout');
}
this.highlightedLegendItemIx = ix;
if (items[ix]) {
if (items[ix].legendGroup.element.focus) {
items[ix].legendGroup.element.focus();
}
fireEvent(items[ix].legendGroup.element, 'mouseover');
return true;
}
return false;
};
 
// Hide export menu
H.Chart.prototype.hideExportMenu = function() {
var exportList = this.exportDivElements;
if (exportList) {
each(exportList, function(el) {
fireEvent(el, 'mouseleave');
});
if (exportList[this.highlightedExportItem] && exportList[this.highlightedExportItem].onmouseout) {
exportList[this.highlightedExportItem].onmouseout();
}
this.highlightedExportItem = 0;
this.renderTo.focus();
}
};
 
// Add keyboard navigation handling to chart
H.Chart.prototype.addKeyboardNavEvents = function() {
var chart = this;
 
// Abstraction layer for keyboard navigation. Keep a map of keyCodes to handler functions, and a next/prev move handler for tab order.
// The module's keyCode handlers determine when to move to another module.
// Validate holds a function to determine if there are prerequisites for this module to run that are not met.
// Init holds a function to run once before any keyCodes are interpreted.
// transformTabs determines whether to transform tabs to left/right events or not. Defaults to true.
function KeyboardNavigationModule(options) {
this.keyCodeMap = options.keyCodeMap;
this.move = options.move;
this.validate = options.validate;
this.init = options.init;
this.transformTabs = options.transformTabs !== false;
}
KeyboardNavigationModule.prototype = {
// Find handler function(s) for key code in the keyCodeMap and run it.
run: function(e) {
var navModule = this,
keyCode = e.which || e.keyCode,
handled = false;
keyCode = this.transformTabs && keyCode === 9 ? (e.shiftKey ? 37 : 39) : keyCode; // Transform tabs
each(this.keyCodeMap, function(codeSet) {
if (codeSet[0].indexOf(keyCode) > -1) {
handled = codeSet[1].call(navModule, keyCode, e) === false ? false : true; // If explicitly returning false, we haven't handled it
}
});
return handled;
}
};
// Maintain abstraction between KeyboardNavigationModule and Highcharts
// The chart object keeps track of a list of KeyboardNavigationModules that we move through
function navModuleFactory(keyMap, options) {
return new KeyboardNavigationModule(merge({
keyCodeMap: keyMap,
// Move to next/prev valid module, or undefined if none, and init it.
// Returns true on success and false if there is no valid module to move to.
move: function(direction) {
chart.keyboardNavigationModuleIndex += direction;
var newModule = chart.keyboardNavigationModules[chart.keyboardNavigationModuleIndex];
if (newModule) {
if (newModule.validate && !newModule.validate()) {
return this.move(direction); // Invalid module
}
if (newModule.init) {
newModule.init(direction); // Valid module, init it
return true;
}
}
// No module
chart.keyboardNavigationModuleIndex = 0; // Reset counter
chart.slipNextTab = true; // Allow next tab to slip, as we will have focus on chart now
return false;
}
}, options));
}
 
// Route keydown events
function keydownHandler(ev) {
var e = ev || win.event,
keyCode = e.which || e.keyCode,
curNavModule = chart.keyboardNavigationModules[chart.keyboardNavigationModuleIndex];
 
// Handle tabbing
if (keyCode === 9) {
// If we reached end of chart, we need to let this tab slip through to allow users to tab further
if (chart.slipNextTab) {
chart.slipNextTab = false;
return;
}
}
// If key was not tab, don't slip the next tab
chart.slipNextTab = false;
 
// If there is a navigation module for the current index, run it. Otherwise, we are outside of the chart in some direction.
if (curNavModule) {
if (curNavModule.run(e)) {
e.preventDefault(); // If successfully handled, stop the event here.
}
}
}
 
// List of the different keyboard handling modes we use depending on where we are in the chart.
// Each mode has a set of handling functions mapped to key codes.
// Each mode determines when to move to the next/prev mode.
chart.keyboardNavigationModules = [
// Points
navModuleFactory([
// Left/Right
[
[37, 39],
function(keyCode) {
if (!chart.highlightAdjacentPoint(keyCode === 39)) { // Try to highlight adjacent point
return this.move(keyCode === 39 ? 1 : -1); // Failed. Move to next/prev module
}
}
],
// Up/Down
[
[38, 40],
function(keyCode) {
var newSeries;
if (chart.highlightedPoint) {
newSeries = chart.series[chart.highlightedPoint.series.index + (keyCode === 38 ? -1 : 1)]; // Find prev/next series
if (newSeries && newSeries.points[0]) { // If series exists and has data, go for it
newSeries.points[0].highlight();
} else {
return this.move(keyCode === 40 ? 1 : -1); // Otherwise, attempt to move to next/prev module
}
}
}
],
// Enter/Spacebar
[
[13, 32],
function() {
if (chart.highlightedPoint) {
chart.highlightedPoint.firePointEvent('click');
}
}
]
], {
// If coming back to points from other module, highlight last point
init: function(direction) {
var lastSeries = chart.series && chart.series[chart.series.length - 1],
lastPoint = lastSeries && lastSeries.points && lastSeries.points[lastSeries.points.length - 1];
if (direction < 0 && lastPoint) {
lastPoint.highlight();
}
}
}),
 
// Exporting
navModuleFactory([
// Left/Up
[
[37, 38],
function() {
var i = chart.highlightedExportItem || 0,
reachedEnd = true,
series = chart.series,
newSeries;
// Try to highlight prev item in list. Highlighting e.g. separators will fail.
while (i--) {
if (chart.highlightExportItem(i)) {
reachedEnd = false;
break;
}
}
if (reachedEnd) {
chart.hideExportMenu();
// Wrap to last point
if (series && series.length) {
newSeries = series[series.length - 1];
if (newSeries.points.length) {
newSeries.points[newSeries.points.length - 1].highlight();
}
}
// Try to move to prev module (should be points, since we wrapped to last point)
return this.move(-1);
}
}
],
// Right/Down
[
[39, 40],
function() {
var highlightedExportItem = chart.highlightedExportItem || 0,
reachedEnd = true;
// Try to highlight next item in list. Highlighting e.g. separators will fail.
for (var i = highlightedExportItem + 1; i < chart.exportDivElements.length; ++i) {
if (chart.highlightExportItem(i)) {
reachedEnd = false;
break;
}
}
if (reachedEnd) {
chart.hideExportMenu();
return this.move(1); // Next module
}
}
],
// Enter/Spacebar
[
[13, 32],
function() {
fakeClickEvent(chart.exportDivElements[chart.highlightedExportItem]);
}
]
], {
// Only run exporting navigation if exporting support exists and is enabled on chart
validate: function() {
return chart.exportChart && !(chart.options.exporting && chart.options.exporting.enabled === false);
},
// Show export menu
init: function(direction) {
chart.highlightedPoint = null;
chart.showExportMenu();
// If coming back to export menu from other module, try to highlight last item in menu
if (direction < 0 && chart.exportDivElements) {
for (var i = chart.exportDivElements.length; i > -1; --i) {
if (chart.highlightExportItem(i)) {
break;
}
}
}
}
}),
 
// Map zoom
navModuleFactory([
// Up/down/left/right
[
[38, 40, 37, 39],
function(keyCode) {
chart[keyCode === 38 || keyCode === 40 ? 'yAxis' : 'xAxis'][0].panStep(keyCode < 39 ? -1 : 1);
}
],
 
// Tabs
[
[9],
function(keyCode, e) {
var button;
chart.mapNavButtons[chart.focusedMapNavButtonIx].setState(0); // Deselect old
if (e.shiftKey && !chart.focusedMapNavButtonIx || !e.shiftKey && chart.focusedMapNavButtonIx) { // trying to go somewhere we can't?
chart.mapZoom(); // Reset zoom
return this.move(e.shiftKey ? -1 : 1); // Nowhere to go, go to prev/next module
}
chart.focusedMapNavButtonIx += e.shiftKey ? -1 : 1;
button = chart.mapNavButtons[chart.focusedMapNavButtonIx];
if (button.element.focus) {
button.element.focus();
}
button.setState(2);
}
],
 
// Enter/Spacebar
[
[13, 32],
function() {
fakeClickEvent(chart.mapNavButtons[chart.focusedMapNavButtonIx].element);
}
]
], {
// Only run this module if we have map zoom on the chart
validate: function() {
return chart.mapZoom && chart.mapNavButtons && chart.mapNavButtons.length === 2;
},
 
// Handle tabs separately
transformTabs: false,
 
// Make zoom buttons do their magic
init: function(direction) {
var zoomIn = chart.mapNavButtons[0],
zoomOut = chart.mapNavButtons[1],
initialButton = direction > 0 ? zoomIn : zoomOut;
 
each(chart.mapNavButtons, function(button, i) {
button.element.setAttribute('tabindex', -1);
button.element.setAttribute('role', 'button');
button.element.setAttribute('aria-label', 'Zoom ' + (i ? 'out' : '') + 'chart');
});
 
if (initialButton.element.focus) {
initialButton.element.focus();
}
initialButton.setState(2);
chart.focusedMapNavButtonIx = direction > 0 ? 0 : 1;
}
}),
 
// Highstock range selector (minus input boxes)
navModuleFactory([
// Left/Right/Up/Down
[
[37, 39, 38, 40],
function(keyCode) {
var direction = (keyCode === 37 || keyCode === 38) ? -1 : 1;
// Try to highlight next/prev button
if (!chart.highlightRangeSelectorButton(chart.highlightedRangeSelectorItemIx + direction)) {
return this.move(direction);
}
}
],
// Enter/Spacebar
[
[13, 32],
function() {
if (chart.oldRangeSelectorItemState !== 3) { // Don't allow click if button used to be disabled
fakeClickEvent(chart.rangeSelector.buttons[chart.highlightedRangeSelectorItemIx].element);
}
}
]
], {
// Only run this module if we have range selector
validate: function() {
return chart.rangeSelector && chart.rangeSelector.buttons && chart.rangeSelector.buttons.length;
},
 
// Make elements focusable and accessible
init: function(direction) {
each(chart.rangeSelector.buttons, function(button) {
button.element.setAttribute('tabindex', '-1');
button.element.setAttribute('role', 'button');
button.element.setAttribute('aria-label', 'Select range ' + (button.text && button.text.textStr));
});
// Focus first/last button
chart.highlightRangeSelectorButton(direction > 0 ? 0 : chart.rangeSelector.buttons.length - 1);
}
}),
 
// Highstock range selector, input boxes
navModuleFactory([
// Tab/Up/Down
[
[9, 38, 40],
function(keyCode, e) {
var direction = (keyCode === 9 && e.shiftKey || keyCode === 38) ? -1 : 1,
newIx = chart.highlightedInputRangeIx = chart.highlightedInputRangeIx + direction;
// Try to highlight next/prev item in list.
if (newIx > 1 || newIx < 0) { // Out of range
return this.move(direction);
}
chart.rangeSelector[newIx ? 'maxInput' : 'minInput'].focus(); // Input boxes are HTML, and should have focus support in all browsers
}
]
], {
// Only run if we have range selector with input boxes
validate: function() {
var inputVisible = chart.rangeSelector && chart.rangeSelector.inputGroup && chart.rangeSelector.inputGroup.element.getAttribute('visibility') !== 'hidden';
return inputVisible && chart.options.rangeSelector.inputEnabled !== false && chart.rangeSelector.minInput && chart.rangeSelector.maxInput;
},
 
// Handle tabs different from left/right (because we don't want to catch left/right in a text area)
transformTabs: false,
 
// Highlight first/last input box
init: function(direction) {
chart.highlightedInputRangeIx = direction > 0 ? 0 : 1;
chart.rangeSelector[chart.highlightedInputRangeIx ? 'maxInput' : 'minInput'].focus();
}
}),
 
// Legend navigation
navModuleFactory([
// Left/Right/Up/Down
[
[37, 39, 38, 40],
function(keyCode) {
var direction = (keyCode === 37 || keyCode === 38) ? -1 : 1;
// Try to highlight next/prev legend item
if (!chart.highlightLegendItem(chart.highlightedLegendItemIx + direction)) {
return this.move(direction);
}
}
],
// Enter/Spacebar
[
[13, 32],
function() {
fakeClickEvent(chart.legend.allItems[chart.highlightedLegendItemIx].legendItem.element.parentNode);
}
]
], {
// Only run this module if we have at least one legend - wait for it - item.
// Don't run if the legend is populated by a colorAxis.
validate: function() {
return chart.legend && chart.legend.allItems &&
!(chart.colorAxis && chart.colorAxis.length);
},
 
// Make elements focusable and accessible
init: function(direction) {
each(chart.legend.allItems, function(item) {
item.legendGroup.element.setAttribute('tabindex', '-1');
item.legendGroup.element.setAttribute('role', 'button');
item.legendGroup.element.setAttribute('aria-label', 'Toggle visibility of series ' + item.name);
});
// Focus first/last item
chart.highlightLegendItem(direction > 0 ? 0 : chart.legend.allItems.length - 1);
}
})
];
 
// Init nav module index. We start at the first module, and as the user navigates through the chart the index will increase to use different handler modules.
chart.keyboardNavigationModuleIndex = 0;
 
// Make chart reachable by tab
if (
chart.container.hasAttribute &&
!chart.container.hasAttribute('tabIndex')
) {
chart.container.setAttribute('tabindex', '0');
}
 
// Handle keyboard events
addEvent(chart.renderTo, 'keydown', keydownHandler);
addEvent(chart, 'destroy', function() {
removeEvent(chart.renderTo, 'keydown', keydownHandler);
});
};
 
// Add screen reader region to chart.
// tableId is the HTML id of the table to focus when clicking the table anchor in the screen reader region.
H.Chart.prototype.addScreenReaderRegion = function(id, tableId) {
var chart = this,
series = chart.series,
options = chart.options,
a11yOptions = options.accessibility,
hiddenSection = chart.screenReaderRegion = doc.createElement('div'),
tableShortcut = doc.createElement('h4'),
tableShortcutAnchor = doc.createElement('a'),
chartHeading = doc.createElement('h4'),
hiddenStyle = { // CSS style to hide element from visual users while still exposing it to screen readers
position: 'absolute',
left: '-9999px',
top: 'auto',
width: '1px',
height: '1px',
overflow: 'hidden'
},
chartTypes = chart.types || [],
// Build axis info - but not for pies and maps. Consider not adding for certain other types as well (funnel, pyramid?)
axesDesc = (chartTypes.length === 1 && chartTypes[0] === 'pie' || chartTypes[0] === 'map') && {} || chart.getAxesDescription(),
chartTypeInfo = series[0] && typeToSeriesMap[series[0].type] || typeToSeriesMap['default']; // eslint-disable-line dot-notation
 
hiddenSection.setAttribute('id', id);
hiddenSection.setAttribute('role', 'region');
hiddenSection.setAttribute('aria-label', 'Chart screen reader information.');
 
hiddenSection.innerHTML = a11yOptions.screenReaderSectionFormatter && a11yOptions.screenReaderSectionFormatter(chart) ||
'<div>Use regions/landmarks to skip ahead to chart' +
(series.length > 1 ? ' and navigate between data series' : '') +
'.</div><h3>' + (options.title.text ? htmlencode(options.title.text) : 'Chart') +
(options.subtitle && options.subtitle.text ? '. ' + htmlencode(options.subtitle.text) : '') +
'</h3><h4>Long description.</h4><div>' + (options.chart.description || 'No description available.') +
'</div><h4>Structure.</h4><div>Chart type: ' + (options.chart.typeDescription || chart.getTypeDescription()) + '</div>' +
(series.length === 1 ? '<div>' + chartTypeInfo[0] + ' with ' + series[0].points.length + ' ' +
(series[0].points.length === 1 ? chartTypeInfo[1] : chartTypeInfo[2]) + '.</div>' : '') +
(axesDesc.xAxis ? ('<div>' + axesDesc.xAxis + '</div>') : '') +
(axesDesc.yAxis ? ('<div>' + axesDesc.yAxis + '</div>') : '');
 
// Add shortcut to data table if export-data is loaded
if (chart.getCSV) {
tableShortcutAnchor.innerHTML = 'View as data table.';
tableShortcutAnchor.href = '#' + tableId;
tableShortcutAnchor.setAttribute('tabindex', '-1'); // Make this unreachable by user tabbing
tableShortcutAnchor.onclick = a11yOptions.onTableAnchorClick || function() {
chart.viewData();
doc.getElementById(tableId).focus();
};
tableShortcut.appendChild(tableShortcutAnchor);
hiddenSection.appendChild(tableShortcut);
}
 
// Note: JAWS seems to refuse to read aria-label on the container, so add an
// h4 element as title for the chart.
chartHeading.innerHTML = 'Chart graphic.';
chart.renderTo.insertBefore(chartHeading, chart.renderTo.firstChild);
chart.renderTo.insertBefore(hiddenSection, chart.renderTo.firstChild);
 
// Hide the section and the chart heading
merge(true, chartHeading.style, hiddenStyle);
merge(true, hiddenSection.style, hiddenStyle);
};
 
 
// Make chart container accessible, and wrap table functionality
H.Chart.prototype.callbacks.push(function(chart) {
var options = chart.options,
a11yOptions = options.accessibility;
 
if (!a11yOptions.enabled) {
return;
}
 
var titleElement = doc.createElementNS('http://www.w3.org/2000/svg', 'title'),
exportGroupElement = doc.createElementNS('http://www.w3.org/2000/svg', 'g'),
descElement = chart.container.getElementsByTagName('desc')[0],
textElements = chart.container.getElementsByTagName('text'),
titleId = 'highcharts-title-' + chart.index,
tableId = 'highcharts-data-table-' + chart.index,
hiddenSectionId = 'highcharts-information-region-' + chart.index,
chartTitle = options.title.text || 'Chart',
oldColumnHeaderFormatter = options.exporting && options.exporting.csv && options.exporting.csv.columnHeaderFormatter,
topLevelColumns = [];
 
// Add SVG title/desc tags
titleElement.textContent = htmlencode(chartTitle);
titleElement.id = titleId;
descElement.parentNode.insertBefore(titleElement, descElement);
chart.renderTo.setAttribute('role', 'region');
//chart.container.setAttribute('aria-details', hiddenSectionId); // JAWS currently doesn't handle this too well
chart.renderTo.setAttribute('aria-label', 'Interactive chart. ' + chartTitle +
'. Use up and down arrows to navigate with most screen readers.');
 
// Set screen reader properties on export menu
if (chart.exportSVGElements && chart.exportSVGElements[0] && chart.exportSVGElements[0].element) {
var oldExportCallback = chart.exportSVGElements[0].element.onclick,
parent = chart.exportSVGElements[0].element.parentNode;
chart.exportSVGElements[0].element.onclick = function() {
oldExportCallback.apply(this, Array.prototype.slice.call(arguments));
chart.addAccessibleContextMenuAttribs();
chart.highlightExportItem(0);
};
chart.exportSVGElements[0].element.setAttribute('role', 'button');
chart.exportSVGElements[0].element.setAttribute('aria-label', 'View export menu');
exportGroupElement.appendChild(chart.exportSVGElements[0].element);
exportGroupElement.setAttribute('role', 'region');
exportGroupElement.setAttribute('aria-label', 'Chart export menu');
parent.appendChild(exportGroupElement);
}
 
// Set screen reader properties on input boxes for range selector. We need to do this regardless of whether or not these are visible, as they are
// by default part of the page's tabindex unless we set them to -1.
if (chart.rangeSelector) {
each(['minInput', 'maxInput'], function(key, i) {
if (chart.rangeSelector[key]) {
chart.rangeSelector[key].setAttribute('tabindex', '-1');
chart.rangeSelector[key].setAttribute('role', 'textbox');
chart.rangeSelector[key].setAttribute('aria-label', 'Select ' + (i ? 'end' : 'start') + ' date.');
}
});
}
 
// Hide text elements from screen readers
each(textElements, function(el) {
el.setAttribute('aria-hidden', 'true');
});
 
// Add top-secret screen reader region
chart.addScreenReaderRegion(hiddenSectionId, tableId);
 
// Enable keyboard navigation
if (a11yOptions.keyboardNavigation.enabled) {
chart.addKeyboardNavEvents();
}
 
/* Wrap table functionality from export-data */
 
// Keep track of columns
merge(true, options.exporting, {
csv: {
columnHeaderFormatter: function(item, key, keyLength) {
if (!item) {
return 'Category';
}
if (item instanceof H.Axis) {
return (item.options.title && item.options.title.text) ||
(item.isDatetimeAxis ? 'DateTime' : 'Category');
}
var prevCol = topLevelColumns[topLevelColumns.length - 1];
if (keyLength > 1) {
// We need multiple levels of column headers
// Populate a list of column headers to add in addition to the ones added by export-data
if ((prevCol && prevCol.text) !== item.name) {
topLevelColumns.push({
text: item.name,
span: keyLength
});
}
}
if (oldColumnHeaderFormatter) {
return oldColumnHeaderFormatter.call(this, item, key, keyLength);
}
return keyLength > 1 ? key : item.name;
}
}
});
 
// Add ID and title/caption to table HTML
H.wrap(chart, 'getTable', function(proceed) {
return proceed.apply(this, Array.prototype.slice.call(arguments, 1))
.replace('<table>', '<table id="' + tableId + '" summary="Table representation of chart"><caption>' + chartTitle + '</caption>');
});
 
// Add accessibility attributes and top level columns
H.wrap(chart, 'viewData', function(proceed) {
if (!this.dataTableDiv) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
var table = doc.getElementById(tableId),
head = table.getElementsByTagName('thead')[0],
body = table.getElementsByTagName('tbody')[0],
firstRow = head.firstChild.children,
columnHeaderRow = '<tr><td></td>',
cell,
newCell;
 
// Make table focusable by script
table.setAttribute('tabindex', '-1');
 
// Create row headers
each(body.children, function(el) {
cell = el.firstChild;
newCell = doc.createElement('th');
newCell.setAttribute('scope', 'row');
newCell.innerHTML = cell.innerHTML;
cell.parentNode.replaceChild(newCell, cell);
});
 
// Set scope for column headers
each(firstRow, function(el) {
if (el.tagName === 'TH') {
el.setAttribute('scope', 'col');
}
});
 
// Add top level columns
if (topLevelColumns.length) {
each(topLevelColumns, function(col) {
columnHeaderRow += '<th scope="col" colspan="' + col.span + '">' + col.text + '</th>';
});
head.insertAdjacentHTML('afterbegin', columnHeaderRow);
}
}
});
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/annotations.js
@@ -0,0 +1,14 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(e){function n(a,c,b,f,e){for(var d=a.length,g=0;g<d;)k(a[g])&&k(a[g+1])?(a[g]=c.toPixels(a[g])-f,a[g+1]=b.toPixels(a[g+1])-e,g+=2):g+=1;return a}var p=e.defined,k=e.isNumber,t=e.inArray,A=e.isArray,B=e.merge,C=e.Chart,u=e.extend,D=e.each,q,E;E=["path","rect","circle"];q={top:0,left:0,center:.5,middle:.5,bottom:1,right:1};var F=function(){this.init.apply(this,arguments)};F.prototype={init:function(a,
c){var b=c.shape&&c.shape.type;this.chart=a;var f;f={xAxis:0,yAxis:0,title:{style:{},text:"",x:0,y:0},shape:{params:{stroke:"#000000",fill:"transparent",strokeWidth:2}}};a={circle:{params:{x:0,y:0}}};a[b]&&(f.shape=B(f.shape,a[b]));this.options=B({},f,c)},render:function(a){var c=this.chart,b=this.chart.renderer,f=this.group,e=this.title,d=this.shape,g=this.options,k=g.title,m=g.shape;f||(f=this.group=b.g());!d&&m&&-1!==t(m.type,E)&&(d=this.shape=b[g.shape.type](m.params),d.add(f));!e&&k&&(e=this.title=
b.label(k),e.add(f));f.add(c.annotations.group);this.linkObjects();!1!==a&&this.redraw()},redraw:function(){var a=this.options,c=this.chart,b=this.group,f=this.title,z=this.shape,d=this.linkedObject,g=c.xAxis[a.xAxis],v=c.yAxis[a.yAxis],c=a.width,m=a.height,w=q[a.anchorY],x=q[a.anchorX],h,y,l,r;d&&(y=d instanceof e.Point?"point":d instanceof e.Series?"series":null,"point"===y?(a.xValue=d.x,a.yValue=d.y,l=d.series):"series"===y&&(l=d),b.visibility!==l.group.visibility&&b.attr({visibility:l.group.visibility}));
d=p(a.xValue)?g.toPixels(a.xValue+g.minPointOffset)-g.minPixelPadding:a.x;l=p(a.yValue)?v.toPixels(a.yValue):a.y;k(d)&&k(l)&&(f&&(f.attr(a.title),f.css(a.title.style)),z&&(h=u({},a.shape.params),"values"===a.units&&(e.objectEach(h,function(a,b){-1<t(b,["width","x"])?h[b]=g.translate(h[b]):-1<t(b,["height","y"])&&(h[b]=v.translate(h[b]))}),h.width&&(h.width-=g.toPixels(0)-g.left),h.x&&(h.x+=g.minPixelPadding),"path"===a.shape.type&&n(h.d,g,v,d,l)),"circle"===a.shape.type&&(h.x+=h.r,h.y+=h.r),z.attr(h)),
b.bBox=null,k(c)||(r=b.getBBox(),c=r.width),k(m)||(r||(r=b.getBBox()),m=r.height),k(x)||(x=q.center),k(w)||(w=q.center),d-=c*x,l-=m*w,p(b.translateX)&&p(b.translateY)?b.animate({translateX:d,translateY:l}):b.translate(d,l))},destroy:function(){var a=this,c=this.chart.annotations.allItems,b=c.indexOf(a);-1<b&&c.splice(b,1);D(["title","shape","group"],function(b){a[b]&&(a[b].destroy(),a[b]=null)});a.group=a.title=a.shape=a.chart=a.options=null},update:function(a,c){u(this.options,a);this.linkObjects();
this.render(c)},linkObjects:function(){var a=this.chart,c=this.linkedObject,b=c&&(c.id||c.options.id),f=this.options.linkedTo;p(f)?p(c)&&f===b||(this.linkedObject=a.get(f)):this.linkedObject=null}};u(C.prototype,{annotations:{add:function(a,c){var b=this.allItems,f=this.chart,e,d;A(a)||(a=[a]);for(d=a.length;d--;)e=new F(f,a[d]),b.push(e),e.render(c)},redraw:function(){D(this.allItems,function(a){a.redraw()})}}});C.prototype.callbacks.push(function(a){var c=a.options.annotations,b;b=a.renderer.g("annotations");
b.attr({zIndex:7});b.add();a.annotations.allItems=[];a.annotations.chart=a;a.annotations.group=b;A(c)&&0<c.length&&a.annotations.add(a.options.annotations);e.addEvent(a,"redraw",function(){a.annotations.redraw()})})})(n)});
/base/000_base/node_modules/highcharts/js/modules/annotations.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":14,
"mappings":"A;;;;;;;AAQC,SAAQ,CAACA,CAAD,CAAU,CACO,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,CACID,MAAAC,QADJ,CACqBF,CADrB,CAGIA,CAAA,CAAQG,UAAR,CAJW,CAAlB,CAAA,CAMC,QAAQ,CAACA,CAAD,CAAa,CAClB,SAAQ,CAACC,CAAD,CAAI,CAoETC,QAASA,EAAa,CAACC,CAAD,CAAIC,CAAJ,CAAWC,CAAX,CAAkBC,CAAlB,CAA2BC,CAA3B,CAAoC,CAItD,IAJsD,IAClDC,EAAML,CAAAM,OAD4C,CAElDC,EAAI,CAER,CAAOA,CAAP,CAAWF,CAAX,CAAA,CACQG,CAAA,CAASR,CAAA,CAAEO,CAAF,CAAT,CAAJ,EAAsBC,CAAA,CAASR,CAAA,CAAEO,CAAF,CAAM,CAAN,CAAT,CAAtB,EACIP,CAAA,CAAEO,CAAF,CAEA,CAFON,CAAAQ,SAAA,CAAeT,CAAA,CAAEO,CAAF,CAAf,CAEP,CAF8BJ,CAE9B,CADAH,CAAA,CAAEO,CAAF,CAAM,CAAN,CACA,CADWL,CAAAO,SAAA,CAAeT,CAAA,CAAEO,CAAF,CAAM,CAAN,CAAf,CACX,CADsCH,CACtC,CAAAG,CAAA,EAAK,CAHT,EAKIA,CALJ,EAKS,CAIb,OAAOP,EAd+C,CApEjD,IAOLU,EAAUZ,CAAAY,QAPL,CAQLF,EAAWV,CAAAU,SARN,CASLG,EAAUb,CAAAa,QATL,CAULC,EAAUd,CAAAc,QAVL,CAWLC,EAAQf,CAAAe,MAXH,CAYLC,EAAQhB,CAAAgB,MAZH,CAaLC,EAASjB,CAAAiB,OAbJ,CAcLC,EAAOlB,CAAAkB,KAdF,CAgBLC,CAhBK,CAiBLC,CAEJA,EAAA,CAAiB,CAAC,MAAD,CAAS,MAAT,CAAiB,QAAjB,CAEjBD,EAAA,CAAe,CACXE,IAAK,CADM,CAEXC,KAAM,CAFK,CAGXC,OAAQ,EAHG,CAIXC,OAAQ,EAJG,CAKXC,OAAQ,CALG,CAMXC,MAAO,CANI,CAkEf,KAAIC,EAAaA,QAAQ,EAAG,CACxB,IAAAC,KAAAC,MAAA,CAAgB,IAAhB,CAAsBC,SAAtB,CADwB,CAG5BH,EAAAI,UAAA,CAAuB,CAInBH,KAAMA,QAAQ,CAACI,CAAD;AAAQC,CAAR,CAAiB,CAC3B,IAAIC,EAAYD,CAAAE,MAAZD,EAA6BD,CAAAE,MAAAC,KAEjC,KAAAJ,MAAA,CAAaA,CAlEjB,KACIC,CAEJA,EAAA,CAAU,CACN9B,MAAO,CADD,CAENC,MAAO,CAFD,CAGNiC,MAAO,CACHC,MAAO,EADJ,CAEHC,KAAM,EAFH,CAGHC,EAAG,CAHA,CAIHC,EAAG,CAJA,CAHD,CASNN,MAAO,CACHO,OAAQ,CACJC,OAAQ,SADJ,CAEJC,KAAM,aAFF,CAGJC,YAAa,CAHT,CADL,CATD,CAkBVC,EAAA,CAAe,CACXC,OAAQ,CACJL,OAAQ,CACJF,EAAG,CADC,CAEJC,EAAG,CAFC,CADJ,CADG,CASXK,EAAA,CAqCwCZ,CArCxC,CAAJ,GACID,CAAAE,MADJ,CACoBpB,CAAA,CAAMkB,CAAAE,MAAN,CAAqBW,CAAA,CAoCGZ,CApCH,CAArB,CADpB,CAqCI,KAAAD,QAAA,CAAelB,CAAA,CAAM,EAAN,CAjCZkB,CAiCY,CAAqCA,CAArC,CAJY,CAJZ,CAcnBe,OAAQA,QAAQ,CAACC,CAAD,CAAS,CAAA,IAEjBjB,EAAQ,IAAAA,MAFS,CAGjBkB,EAFaC,IAEFnB,MAAAkB,SAHM,CAIjBE,EAHaD,IAGLC,MAJS,CAKjBf,EAJac,IAILd,MALS,CAMjBF,EALagB,IAKLhB,MANS,CAOjBF,EANakB,IAMHlB,QAPO,CAQjBoB,EAAepB,CAAAI,MARE,CASjBS,EAAeb,CAAAE,MAEdiB,EAAL,GACIA,CADJ,CAViBD,IAWLC,MADZ,CAC+BF,CAAAI,EAAA,EAD/B,CAKKnB,EAAAA,CAAL,EAAcW,CAAd,EAA8E,EAA9E,GAA8BjC,CAAA,CAAQiC,CAAAV,KAAR,CAA2BhB,CAA3B,CAA9B,GACIe,CACA,CAjBagB,IAgBLhB,MACR,CAD2Be,CAAA,CAASjB,CAAAE,MAAAC,KAAT,CAAA,CAA6BU,CAAAJ,OAA7B,CAC3B,CAAAP,CAAAoB,IAAA,CAAUH,CAAV,CAFJ,CAKKf,EAAAA,CAAL,EAAcgB,CAAd,GACIhB,CACA,CAtBac,IAqBLd,MACR;AAD2Ba,CAAAM,MAAA,CAAeH,CAAf,CAC3B,CAAAhB,CAAAkB,IAAA,CAAUH,CAAV,CAFJ,CAKAA,EAAAG,IAAA,CAAUvB,CAAAyB,YAAAL,MAAV,CAzBiBD,KA4BjBO,YAAA,EAEe,EAAA,CAAf,GAAIT,CAAJ,EA9BiBE,IA+BbF,OAAA,EAhCiB,CAdN,CAqDnBA,OAAQA,QAAQ,EAAG,CAAA,IACXhB,EAAU,IAAAA,QADC,CAEXD,EAAQ,IAAAA,MAFG,CAGXoB,EAAQ,IAAAA,MAHG,CAIXf,EAAQ,IAAAA,MAJG,CAKXF,EAAQ,IAAAA,MALG,CAMXwB,EAAW,IAAAC,aANA,CAOXzD,EAAQ6B,CAAA7B,MAAA,CAAY8B,CAAA9B,MAAZ,CAPG,CAQXC,EAAQ4B,CAAA5B,MAAA,CAAY6B,CAAA7B,MAAZ,CARG,CASXyD,EAAQ5B,CAAA4B,MATG,CAUXC,EAAS7B,CAAA6B,OAVE,CAWXC,EAAU5C,CAAA,CAAac,CAAA8B,QAAb,CAXC,CAYXC,EAAU7C,CAAA,CAAac,CAAA+B,QAAb,CAZC,CAaXC,CAbW,CAcXC,CAdW,CAeXC,CAfW,CAgBXC,CAIAT,EAAJ,GACIO,CAWA,CAXYP,CAAD,WAAqB3D,EAAAqE,MAArB,CAAgC,OAAhC,CACNV,CAAD,WAAqB3D,EAAAsE,OAArB,CAAiC,QAAjC,CAA4C,IAUhD,CARiB,OAAjB,GAAIJ,CAAJ,EACIjC,CAAAsC,OAEA,CAFiBZ,CAAAnB,EAEjB,CADAP,CAAAuC,OACA,CADiBb,CAAAlB,EACjB,CAAA0B,CAAA,CAASR,CAAAQ,OAHb,EAIwB,QAJxB,GAIWD,CAJX,GAKIC,CALJ,CAKaR,CALb,CAQA,CAAIP,CAAAqB,WAAJ,GAAyBN,CAAAf,MAAAqB,WAAzB,EACIrB,CAAAsB,KAAA,CAAW,CACPD,WAAYN,CAAAf,MAAAqB,WADL,CAAX,CAbR,CAqBAjC;CAAA,CAAK5B,CAAA,CAAQqB,CAAAsC,OAAR,CAAA,CAA0BpE,CAAAQ,SAAA,CAAesB,CAAAsC,OAAf,CAAgCpE,CAAAwE,eAAhC,CAA1B,CAAkFxE,CAAAyE,gBAAlF,CAA0G3C,CAAAO,EAC/GC,EAAA,CAAI7B,CAAA,CAAQqB,CAAAuC,OAAR,CAAA,CAA0BpE,CAAAO,SAAA,CAAesB,CAAAuC,OAAf,CAA1B,CAA2DvC,CAAAQ,EAE1D/B,EAAA,CAAS8B,CAAT,CAAL,EAAqB9B,CAAA,CAAS+B,CAAT,CAArB,GAKIJ,CAqEJ,GApEIA,CAAAqC,KAAA,CAAWzC,CAAAI,MAAX,CACA,CAAAA,CAAAwC,IAAA,CAAU5C,CAAAI,MAAAC,MAAV,CAmEJ,EAhEIH,CAgEJ,GA/DI8B,CA8BA,CA9BchD,CAAA,CAAO,EAAP,CAAWgB,CAAAE,MAAAO,OAAX,CA8Bd,CA5BsB,QA4BtB,GA5BIT,CAAA6C,MA4BJ,GA3BI9E,CAAA+E,WAAA,CAAad,CAAb,CAA0B,QAAQ,CAACe,CAAD,CAAMC,CAAN,CAAa,CACL,EAAtC,CAAIpE,CAAA,CAAQoE,CAAR,CAAe,CAAC,OAAD,CAAU,GAAV,CAAf,CAAJ,CACIhB,CAAA,CAAYgB,CAAZ,CADJ,CACyB9E,CAAA+E,UAAA,CAAgBjB,CAAA,CAAYgB,CAAZ,CAAhB,CADzB,CAE8C,EAF9C,CAEWpE,CAAA,CAAQoE,CAAR,CAAe,CAAC,QAAD,CAAW,GAAX,CAAf,CAFX,GAGIhB,CAAA,CAAYgB,CAAZ,CAHJ,CAGyB7E,CAAA8E,UAAA,CAAgBjB,CAAA,CAAYgB,CAAZ,CAAhB,CAHzB,CAD2C,CAA/C,CAgBA,CARIhB,CAAAJ,MAQJ,GAPII,CAAAJ,MAOJ,EAPyB1D,CAAAQ,SAAA,CAAe,CAAf,CAOzB,CAP6CR,CAAAmB,KAO7C,EAJI2C,CAAAzB,EAIJ,GAHIyB,CAAAzB,EAGJ,EAHqBrC,CAAAyE,gBAGrB,EAA2B,MAA3B,GAAI3C,CAAAE,MAAAC,KAAJ,EACInC,CAAA,CAAcgE,CAAA/D,EAAd,CAA6BC,CAA7B,CAAoCC,CAApC,CAA2CoC,CAA3C,CAA8CC,CAA9C,CAUR,EAL2B,QAK3B,GALIR,CAAAE,MAAAC,KAKJ,GAJI6B,CAAAzB,EACA,EADiByB,CAAAkB,EACjB,CAAAlB,CAAAxB,EAAA,EAAiBwB,CAAAkB,EAGrB,EAAAhD,CAAAuC,KAAA,CAAWT,CAAX,CAiCJ;AA9BAb,CAAAgC,KA8BA,CA9Ba,IA8Bb,CA3BK1E,CAAA,CAASmD,CAAT,CA2BL,GA1BIO,CACA,CADOhB,CAAAiC,QAAA,EACP,CAAAxB,CAAA,CAAQO,CAAAP,MAyBZ,EAtBKnD,CAAA,CAASoD,CAAT,CAsBL,GApBSM,CAIL,GAHIA,CAGJ,CAHWhB,CAAAiC,QAAA,EAGX,EAAAvB,CAAA,CAASM,CAAAN,OAgBb,EAZKpD,CAAA,CAASsD,CAAT,CAYL,GAXIA,CAWJ,CAXc7C,CAAAI,OAWd,EARKb,CAAA,CAASqD,CAAT,CAQL,GAPIA,CAOJ,CAPc5C,CAAAI,OAOd,EAHIiB,CAGJ,EAHQqB,CAGR,CAHgBG,CAGhB,CAFIvB,CAEJ,EAFQqB,CAER,CAFiBC,CAEjB,CAAInD,CAAA,CAAQwC,CAAAkC,WAAR,CAAJ,EAAiC1E,CAAA,CAAQwC,CAAAmC,WAAR,CAAjC,CACInC,CAAAoC,QAAA,CAAc,CACVF,WAAY9C,CADF,CAEV+C,WAAY9C,CAFF,CAAd,CADJ,CAMIW,CAAA8B,UAAA,CAAgB1C,CAAhB,CAAmBC,CAAnB,CAhFJ,CA5Ce,CArDA,CAwLnBgD,QAASA,QAAQ,EAAG,CAAA,IACZtC,EAAa,IADD,CAGZuC,EADQ,IAAA1D,MACGyB,YAAAiC,SAHC,CAIZC,EAAQD,CAAAE,QAAA,CAAiBzC,CAAjB,CAEC,GAAb,CAAIwC,CAAJ,EACID,CAAAG,OAAA,CAAgBF,CAAhB,CAAuB,CAAvB,CAGJzE,EAAA,CAAK,CAAC,OAAD,CAAU,OAAV,CAAmB,OAAnB,CAAL,CAAkC,QAAQ,CAAC4E,CAAD,CAAU,CAC5C3C,CAAA,CAAW2C,CAAX,CAAJ,GACI3C,CAAA,CAAW2C,CAAX,CAAAL,QAAA,EACA,CAAAtC,CAAA,CAAW2C,CAAX,CAAA,CAAsB,IAF1B,CADgD,CAApD,CAOA3C,EAAAC,MAAA,CAAmBD,CAAAd,MAAnB,CAAsCc,CAAAhB,MAAtC,CAAyDgB,CAAAnB,MAAzD,CAA4EmB,CAAAlB,QAA5E,CAAiG,IAjBjF,CAxLD,CA+MnB8D,OAAQA,QAAQ,CAAC9D,CAAD,CAAUgB,CAAV,CAAkB,CAC9BhC,CAAA,CAAO,IAAAgB,QAAP,CAAqBA,CAArB,CAGA,KAAAyB,YAAA,EAEA;IAAAV,OAAA,CAAYC,CAAZ,CAN8B,CA/Mf,CAwNnBS,YAAaA,QAAQ,EAAG,CAAA,IAEhB1B,EADamB,IACLnB,MAFQ,CAGhB2B,EAFaR,IAEFS,aAHK,CAIhBoC,EAAWrC,CAAXqC,GAAwBrC,CAAAsC,GAAxBD,EAAuCrC,CAAA1B,QAAAgE,GAAvCD,CAJgB,CAMhBC,EALa9C,IAIHlB,QACL0B,SAEJ/C,EAAA,CAAQqF,CAAR,CAAL,CAEYrF,CAAA,CAAQ+C,CAAR,CAFZ,EAEiCsC,CAFjC,GAEwCD,CAFxC,GAPiB7C,IAUbS,aAHJ,CAG8B5B,CAAAkE,IAAA,CAAUD,CAAV,CAH9B,EAPiB9C,IAQbS,aADJ,CAC8B,IATV,CAxNL,CA0OvB3C,EAAA,CAAOD,CAAAe,UAAP,CAAwB,CACpB0B,YAAa,CAITF,IAAKA,QAAQ,CAACtB,CAAD,CAAUgB,CAAV,CAAkB,CAAA,IACvBQ,EAAc,IAAAiC,SADS,CAEvB1D,EAAQ,IAAAA,MAFe,CAGvBmE,CAHuB,CAIvB5F,CAECO,EAAA,CAAQmB,CAAR,CAAL,GACIA,CADJ,CACc,CAACA,CAAD,CADd,CAMA,KAFA1B,CAEA,CAFM0B,CAAAzB,OAEN,CAAOD,CAAA,EAAP,CAAA,CACI4F,CAEA,CAFO,IAAIxE,CAAJ,CAAeK,CAAf,CAAsBC,CAAA,CAAQ1B,CAAR,CAAtB,CAEP,CADAkD,CAAA2C,KAAA,CAAiBD,CAAjB,CACA,CAAAA,CAAAnD,OAAA,CAAYC,CAAZ,CAfuB,CAJtB,CA0BTA,OAAQA,QAAQ,EAAG,CACf/B,CAAA,CAAK,IAAAwE,SAAL,CAAoB,QAAQ,CAACvC,CAAD,CAAa,CACrCA,CAAAF,OAAA,EADqC,CAAzC,CADe,CA1BV,CADO,CAAxB,CAqCAjC,EAAAe,UAAAsE,UAAAD,KAAA,CAA+B,QAAQ,CAACpE,CAAD,CAAQ,CAAA,IACvCC,EAAUD,CAAAC,QAAAwB,YAD6B,CAEvCL,CAEJA,EAAA,CAAQpB,CAAAkB,SAAAI,EAAA,CAAiB,aAAjB,CACRF;CAAAsB,KAAA,CAAW,CACP4B,OAAQ,CADD,CAAX,CAGAlD,EAAAG,IAAA,EAGAvB,EAAAyB,YAAAiC,SAAA,CAA6B,EAG7B1D,EAAAyB,YAAAzB,MAAA,CAA0BA,CAG1BA,EAAAyB,YAAAL,MAAA,CAA0BA,CAEtBtC,EAAA,CAAQmB,CAAR,CAAJ,EAAyC,CAAzC,CAAwBA,CAAAzB,OAAxB,EACIwB,CAAAyB,YAAAF,IAAA,CAAsBvB,CAAAC,QAAAwB,YAAtB,CAIJzD,EAAAuG,SAAA,CAAWvE,CAAX,CAAkB,QAAlB,CAA4B,QAAQ,EAAG,CACnCA,CAAAyB,YAAAR,OAAA,EADmC,CAAvC,CAxB2C,CAA/C,CAzWS,CAAZ,CAAA,CAsYClD,CAtYD,CADkB,CANtB;",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","translatePath","d","xAxis","yAxis","xOffset","yOffset","len","length","i","isNumber","toPixels","defined","inArray","isArray","merge","Chart","extend","each","ALIGN_FACTOR","ALLOWED_SHAPES","top","left","center","middle","bottom","right","Annotation","init","apply","arguments","prototype","chart","options","shapeType","shape","type","title","style","text","x","y","params","stroke","fill","strokeWidth","shapeOptions","circle","render","redraw","renderer","annotation","group","titleOptions","g","add","label","annotations","linkObjects","linkedTo","linkedObject","width","height","anchorY","anchorX","shapeParams","linkType","series","bbox","Point","Series","xValue","yValue","visibility","attr","minPointOffset","minPixelPadding","css","units","objectEach","val","param","translate","r","bBox","getBBox","translateX","translateY","animate","destroy","allItems","index","indexOf","splice","element","update","linkedId","id","get","item","push","callbacks","zIndex","addEvent"]
}
/base/000_base/node_modules/highcharts/js/modules/annotations.src.js
@@ -0,0 +1,407 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
var defined = H.defined,
isNumber = H.isNumber,
inArray = H.inArray,
isArray = H.isArray,
merge = H.merge,
Chart = H.Chart,
extend = H.extend,
each = H.each;
 
var ALIGN_FACTOR,
ALLOWED_SHAPES;
 
ALLOWED_SHAPES = ['path', 'rect', 'circle'];
 
ALIGN_FACTOR = {
top: 0,
left: 0,
center: 0.5,
middle: 0.5,
bottom: 1,
right: 1
};
 
function defaultOptions(shapeType) {
var shapeOptions,
options;
 
options = {
xAxis: 0,
yAxis: 0,
title: {
style: {},
text: '',
x: 0,
y: 0
},
shape: {
params: {
stroke: '#000000',
fill: 'transparent',
strokeWidth: 2
}
}
};
 
shapeOptions = {
circle: {
params: {
x: 0,
y: 0
}
}
};
 
if (shapeOptions[shapeType]) {
options.shape = merge(options.shape, shapeOptions[shapeType]);
}
 
return options;
}
 
function translatePath(d, xAxis, yAxis, xOffset, yOffset) {
var len = d.length,
i = 0;
 
while (i < len) {
if (isNumber(d[i]) && isNumber(d[i + 1])) {
d[i] = xAxis.toPixels(d[i]) - xOffset;
d[i + 1] = yAxis.toPixels(d[i + 1]) - yOffset;
i += 2;
} else {
i += 1;
}
}
 
return d;
}
 
 
// Define annotation prototype
var Annotation = function() {
this.init.apply(this, arguments);
};
Annotation.prototype = {
/*
* Initialize the annotation
*/
init: function(chart, options) {
var shapeType = options.shape && options.shape.type;
 
this.chart = chart;
this.options = merge({}, defaultOptions(shapeType), options);
},
 
/*
* Render the annotation
*/
render: function(redraw) {
var annotation = this,
chart = this.chart,
renderer = annotation.chart.renderer,
group = annotation.group,
title = annotation.title,
shape = annotation.shape,
options = annotation.options,
titleOptions = options.title,
shapeOptions = options.shape;
 
if (!group) {
group = annotation.group = renderer.g();
}
 
 
if (!shape && shapeOptions && inArray(shapeOptions.type, ALLOWED_SHAPES) !== -1) {
shape = annotation.shape = renderer[options.shape.type](shapeOptions.params);
shape.add(group);
}
 
if (!title && titleOptions) {
title = annotation.title = renderer.label(titleOptions);
title.add(group);
}
 
group.add(chart.annotations.group);
 
// link annotations to point or series
annotation.linkObjects();
 
if (redraw !== false) {
annotation.redraw();
}
},
 
/*
* Redraw the annotation title or shape after options update
*/
redraw: function() {
var options = this.options,
chart = this.chart,
group = this.group,
title = this.title,
shape = this.shape,
linkedTo = this.linkedObject,
xAxis = chart.xAxis[options.xAxis],
yAxis = chart.yAxis[options.yAxis],
width = options.width,
height = options.height,
anchorY = ALIGN_FACTOR[options.anchorY],
anchorX = ALIGN_FACTOR[options.anchorX],
shapeParams,
linkType,
series,
bbox,
x,
y;
 
if (linkedTo) {
linkType = (linkedTo instanceof H.Point) ? 'point' :
(linkedTo instanceof H.Series) ? 'series' : null;
 
if (linkType === 'point') {
options.xValue = linkedTo.x;
options.yValue = linkedTo.y;
series = linkedTo.series;
} else if (linkType === 'series') {
series = linkedTo;
}
 
if (group.visibility !== series.group.visibility) {
group.attr({
visibility: series.group.visibility
});
}
}
 
 
// Based on given options find annotation pixel position
x = (defined(options.xValue) ? xAxis.toPixels(options.xValue + xAxis.minPointOffset) - xAxis.minPixelPadding : options.x);
y = defined(options.yValue) ? yAxis.toPixels(options.yValue) : options.y;
 
if (!isNumber(x) || !isNumber(y)) {
return;
}
 
 
if (title) {
title.attr(options.title);
title.css(options.title.style);
}
 
if (shape) {
shapeParams = extend({}, options.shape.params);
 
if (options.units === 'values') {
H.objectEach(shapeParams, function(val, param) {
if (inArray(param, ['width', 'x']) > -1) {
shapeParams[param] = xAxis.translate(shapeParams[param]);
} else if (inArray(param, ['height', 'y']) > -1) {
shapeParams[param] = yAxis.translate(shapeParams[param]);
}
});
 
if (shapeParams.width) {
shapeParams.width -= xAxis.toPixels(0) - xAxis.left;
}
 
if (shapeParams.x) {
shapeParams.x += xAxis.minPixelPadding;
}
 
if (options.shape.type === 'path') {
translatePath(shapeParams.d, xAxis, yAxis, x, y);
}
}
 
// move the center of the circle to shape x/y
if (options.shape.type === 'circle') {
shapeParams.x += shapeParams.r;
shapeParams.y += shapeParams.r;
}
 
shape.attr(shapeParams);
}
 
group.bBox = null;
 
// If annotation width or height is not defined in options use bounding box size
if (!isNumber(width)) {
bbox = group.getBBox();
width = bbox.width;
}
 
if (!isNumber(height)) {
// get bbox only if it wasn't set before
if (!bbox) {
bbox = group.getBBox();
}
 
height = bbox.height;
}
 
// Calculate anchor point
if (!isNumber(anchorX)) {
anchorX = ALIGN_FACTOR.center;
}
 
if (!isNumber(anchorY)) {
anchorY = ALIGN_FACTOR.center;
}
 
// Translate group according to its dimension and anchor point
x = x - width * anchorX;
y = y - height * anchorY;
 
if (defined(group.translateX) && defined(group.translateY)) {
group.animate({
translateX: x,
translateY: y
});
} else {
group.translate(x, y);
}
},
 
/*
* Destroy the annotation
*/
destroy: function() {
var annotation = this,
chart = this.chart,
allItems = chart.annotations.allItems,
index = allItems.indexOf(annotation);
 
if (index > -1) {
allItems.splice(index, 1);
}
 
each(['title', 'shape', 'group'], function(element) {
if (annotation[element]) {
annotation[element].destroy();
annotation[element] = null;
}
});
 
annotation.group = annotation.title = annotation.shape = annotation.chart = annotation.options = null;
},
 
/*
* Update the annotation with a given options
*/
update: function(options, redraw) {
extend(this.options, options);
 
// update link to point or series
this.linkObjects();
 
this.render(redraw);
},
 
linkObjects: function() {
var annotation = this,
chart = annotation.chart,
linkedTo = annotation.linkedObject,
linkedId = linkedTo && (linkedTo.id || linkedTo.options.id),
options = annotation.options,
id = options.linkedTo;
 
if (!defined(id)) {
annotation.linkedObject = null;
} else if (!defined(linkedTo) || id !== linkedId) {
annotation.linkedObject = chart.get(id);
}
}
};
 
 
// Add annotations methods to chart prototype
extend(Chart.prototype, {
annotations: {
/*
* Unified method for adding annotations to the chart
*/
add: function(options, redraw) {
var annotations = this.allItems,
chart = this.chart,
item,
len;
 
if (!isArray(options)) {
options = [options];
}
 
len = options.length;
 
while (len--) {
item = new Annotation(chart, options[len]);
annotations.push(item);
item.render(redraw);
}
},
 
/**
* Redraw all annotations, method used in chart events
*/
redraw: function() {
each(this.allItems, function(annotation) {
annotation.redraw();
});
}
}
});
 
 
// Initialize on chart load
Chart.prototype.callbacks.push(function(chart) {
var options = chart.options.annotations,
group;
 
group = chart.renderer.g('annotations');
group.attr({
zIndex: 7
});
group.add();
 
// initialize empty array for annotations
chart.annotations.allItems = [];
 
// link chart object to annotations
chart.annotations.chart = chart;
 
// link annotations group element to the chart
chart.annotations.group = group;
 
if (isArray(options) && options.length > 0) {
chart.annotations.add(chart.options.annotations);
}
 
// update annotations after chart redraw
H.addEvent(chart, 'redraw', function() {
chart.annotations.redraw();
});
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/boost-canvas.js
@@ -0,0 +1,23 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Boost module
 
(c) 2010-2017 Highsoft AS
Author: Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(p){"object"===typeof module&&module.exports?module.exports=p:p(Highcharts)})(function(p){(function(d){function p(a,b,c,g,e){e=e||0;g=g||5E4;for(var d=e+g,f=!0;f&&e<d&&e<a.length;)f=b(a[e],e),e+=1;f&&(e<a.length?setTimeout(function(){p(a,b,c,g,e)}):c&&c())}function x(a){return a.series.length>=((a.options.boost?a.options.boost.seriesThreshold:0)||a.options.chart.seriesBoostThreshold||10)}var A=d.win.document,Z=function(){},aa=d.Color,m=d.Series,k=d.seriesTypes,w=d.each,B=d.extend,y=d.addEvent,
ba=d.fireEvent,r=d.isNumber,ca=d.merge,da=d.pick,n=d.wrap,L;d.initCanvasBoost=function(){d.seriesTypes.heatmap&&d.wrap(d.seriesTypes.heatmap.prototype,"drawPoints",function(){var a=this.getContext();a?(w(this.points,function(b){var c=b.plotY;void 0===c||isNaN(c)||null===b.y||(c=b.shapeArgs,b=b.series.colorAttribs(b),a.fillStyle=b.fill,a.fillRect(c.x,c.y,c.width,c.height))}),this.canvasToSVG()):this.chart.showLoading("Your browser doesn't support HTML5 canvas, \x3cbr\x3eplease use a modern browser")});
d.extend(m.prototype,{directTouch:!1,pointRange:0,allowDG:!1,hasExtremes:function(a){var b=this.options,c=this.xAxis&&this.xAxis.options,g=this.yAxis&&this.yAxis.options;return b.data.length>(b.boostThreshold||Number.MAX_VALUE)&&r(g.min)&&r(g.max)&&(!a||r(c.min)&&r(c.max))},destroyGraphics:function(){var a=this,b=this.points,c,g;if(b)for(g=0;g<b.length;g+=1)(c=b[g])&&c.graphic&&(c.graphic=c.graphic.destroy());w(["graph","area","tracker"],function(c){a[c]&&(a[c]=a[c].destroy())})},getContext:function(){var a=
this.chart,b=a.chartWidth,c=a.chartHeight,g=this.group,e=this,d,f=function(a,c,b,e,g,d,f){a.call(this,b,c,e,g,d,f)};x(a)&&(e=a,g=a.seriesGroup);d=e.ctx;e.canvas||(e.canvas=A.createElement("canvas"),e.image=a.renderer.image("",0,0,b,c).add(g),e.ctx=d=e.canvas.getContext("2d"),a.inverted&&w(["moveTo","lineTo","rect","arc"],function(a){n(d,a,f)}),e.boostClipRect=a.renderer.clipRect(a.plotLeft,a.plotTop,a.plotWidth,a.chartHeight),e.image.clip(e.boostClipRect));e.canvas.width!==b&&(e.canvas.width=b);e.canvas.height!==
c&&(e.canvas.height=c);e.image.attr({x:0,y:0,width:b,height:c,style:"pointer-events: none"});e.boostClipRect.attr({x:0,y:0,width:a.plotWidth,height:a.chartHeight});return d},canvasToSVG:function(){x(this.chart)?this.image&&this.image.attr({href:""}):this.image.attr({href:this.canvas.toDataURL("image/png")})},cvsLineTo:function(a,b,c){a.lineTo(b,c)},renderCanvas:function(){var a=this,b=a.options,c=a.chart,g=this.xAxis,e=this.yAxis,k=(c.options.boost||{}).timeRendering||!1,f,t=0,m=a.processedXData,
w=a.processedYData,n=b.data,l=g.getExtremes(),C=l.min,D=l.max,l=e.getExtremes(),x=l.min,y=l.max,M={},E,A=!!a.sampling,N,F=b.marker&&b.marker.radius,O=this.cvsDrawPoint,G=b.lineWidth?this.cvsLineTo:!1,P=F&&1>=F?this.cvsMarkerSquare:this.cvsMarkerCircle,ea=this.cvsStrokeBatch||1E3,fa=!1!==b.enableMouseTracking,Q,l=b.threshold,u=e.getThreshold(l),R=r(l),S=u,ga=this.fill,T=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),U=!!b.stacking,ha=a.cropStart||0,l=c.options.loading,ia=a.requireSorting,
V,ja=b.connectNulls,W=!m,H,I,v,z,J,q=U?a.data:m||n,ka=a.fillOpacity?(new aa(a.color)).setOpacity(da(b.fillOpacity,.75)).get():a.color,X=function(){ga?(f.fillStyle=ka,f.fill()):(f.strokeStyle=a.color,f.lineWidth=b.lineWidth,f.stroke())},Y=function(b,e,g,d){0===t&&(f.beginPath(),G&&(f.lineJoin="round"));c.scroller&&"highcharts-navigator-series"===a.options.className?(e+=c.scroller.top,g&&(g+=c.scroller.top)):e+=c.plotTop;b+=c.plotLeft;V?f.moveTo(b,e):O?O(f,b,e,g,Q):G?G(f,b,e):P&&P.call(a,f,b,e,F,d);
t+=1;t===ea&&(X(),t=0);Q={clientX:b,plotY:e,yBottom:g}},K=function(a,b,d){J=a+","+b;fa&&!M[J]&&(M[J]=!0,c.inverted&&(a=g.len-a,b=e.len-b),N.push({clientX:a,plotX:a,plotY:b,i:ha+d}))};(this.points||this.graph)&&this.destroyGraphics();a.plotGroup("group","series",a.visible?"visible":"hidden",b.zIndex,c.seriesGroup);a.markerGroup=a.group;N=this.points=[];f=this.getContext();a.buildKDTree=Z;99999<n.length&&(c.options.loading=ca(l,{labelStyle:{backgroundColor:d.color("#ffffff").setOpacity(.75).get(),padding:"1em",
borderRadius:"0.5em"},style:{backgroundColor:"none",opacity:1}}),clearTimeout(L),c.showLoading("Drawing..."),c.options.loading=l);k&&console.time("canvas rendering");p(q,function(b,d){var f,h,k,l=!1,p=!1,m=!1,n=!1,r="undefined"===typeof c.index,t=!0;if(!r){W?(f=b[0],h=b[1],q[d+1]&&(m=q[d+1][0]),q[d-1]&&(n=q[d-1][0])):(f=b,h=w[d],q[d+1]&&(m=q[d+1]),q[d-1]&&(n=q[d-1]));m&&m>=C&&m<=D&&(l=!0);n&&n>=C&&n<=D&&(p=!0);T?(W&&(h=b.slice(1,3)),k=h[0],h=h[1]):U&&(f=b.x,h=b.stackY,k=h-b.y);b=null===h;ia||(t=h>=
x&&h<=y);if(!b&&(f>=C&&f<=D&&t||l||p))if(f=Math.round(g.toPixels(f,!0)),A){if(void 0===v||f===E){T||(k=h);if(void 0===z||h>I)I=h,z=d;if(void 0===v||k<H)H=k,v=d}f!==E&&(void 0!==v&&(h=e.toPixels(I,!0),u=e.toPixels(H,!0),Y(f,R?Math.min(h,S):h,R?Math.max(u,S):u,d),K(f,h,z),u!==h&&K(f,u,v)),v=z=void 0,E=f)}else h=Math.round(e.toPixels(h,!0)),Y(f,h,u,d),K(f,h,d);V=b&&!ja;0===d%5E4&&a.canvasToSVG()}return!r},function(){var b=c.loadingDiv,e=c.loadingShown;X();a.canvasToSVG();k&&console.timeEnd("canvas rendering");
ba(a,"renderedCanvas");e&&(B(b.style,{transition:"opacity 250ms",opacity:0}),c.loadingShown=!1,L=setTimeout(function(){b.parentNode&&b.parentNode.removeChild(b);c.loadingDiv=c.loadingSpan=null},250));a.directTouch=!1;a.options.stickyTracking=!0;delete a.buildKDTree;a.buildKDTree()},c.renderer.forExport?Number.MAX_VALUE:void 0)}});n(m.prototype,"setData",function(a){this.hasExtremes&&this.hasExtremes(!0)&&"heatmap"!==this.type||a.apply(this,Array.prototype.slice.call(arguments,1))});n(m.prototype,
"processData",function(a){this.hasExtremes&&this.hasExtremes(!0)&&"heatmap"!==this.type||a.apply(this,Array.prototype.slice.call(arguments,1))});k.scatter.prototype.cvsMarkerCircle=function(a,b,c,d){a.moveTo(b,c);a.arc(b,c,d,0,2*Math.PI,!1)};k.scatter.prototype.cvsMarkerSquare=function(a,b,c,d){a.rect(b-d,c-d,2*d,2*d)};k.scatter.prototype.fill=!0;k.bubble&&(k.bubble.prototype.cvsMarkerCircle=function(a,b,c,d,e){a.moveTo(b,c);a.arc(b,c,this.radii&&this.radii[e],0,2*Math.PI,!1)},k.bubble.prototype.cvsStrokeBatch=
1);B(k.area.prototype,{cvsDrawPoint:function(a,b,c,d,e){e&&b!==e.clientX&&(a.moveTo(e.clientX,e.yBottom),a.lineTo(e.clientX,e.plotY),a.lineTo(b,c),a.lineTo(b,d))},fill:!0,fillOpacity:!0,sampling:!0});B(k.column.prototype,{cvsDrawPoint:function(a,b,c,d){a.rect(b-1,c,1,d-c)},fill:!0,sampling:!0});d.Chart.prototype.callbacks.push(function(a){y(a,"predraw",function(){a.image&&a.image.attr({href:""});a.canvas&&a.canvas.getContext("2d").clearRect(0,0,a.canvas.width,a.canvas.height)});y(a,"render",function(){a.image&&
a.canvas&&a.image.attr({href:a.canvas.toDataURL("image/png")})})})}})(p)});
/base/000_base/node_modules/highcharts/js/modules/boost-canvas.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":23,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","eachAsync","arr","fn","finalFunc","chunkSize","i","CHUNK_SIZE","threshold","proceed","length","setTimeout","isChartSeriesBoosting","chart","series","options","boost","seriesThreshold","seriesBoostThreshold","doc","win","document","noop","Color","Series","seriesTypes","each","extend","addEvent","fireEvent","isNumber","merge","pick","wrap","destroyLoadingDiv","initCanvasBoost","H.initCanvasBoost","heatmap","prototype","ctx","getContext","points","point","plotY","undefined","isNaN","y","shapeArgs","pointAttr","colorAttribs","fillStyle","fill","fillRect","x","width","height","canvasToSVG","showLoading","directTouch","pointRange","allowDG","hasExtremes","checkX","xAxis","yAxis","data","boostThreshold","Number","MAX_VALUE","min","max","destroyGraphics","graphic","destroy","prop","chartWidth","chartHeight","targetGroup","group","target","swapXY","a","b","c","d","call","seriesGroup","canvas","createElement","image","renderer","add","inverted","boostClipRect","clipRect","plotLeft","plotTop","plotWidth","clip","attr","style","href","toDataURL","cvsLineTo","clientX","lineTo","renderCanvas","timeRendering","xData","processedXData","yData","processedYData","rawData","xExtremes","getExtremes","xMin","xMax","yExtremes","yMin","yMax","pointTaken","lastClientX","sampling","r","marker","radius","cvsDrawPoint","lineWidth","cvsMarker","cvsMarkerSquare","cvsMarkerCircle","strokeBatch","cvsStrokeBatch","enableMouseTracking","lastPoint","yBottom","getThreshold","hasThreshold","translatedThreshold","doFill","isRange","pointArrayMap","join","isStacked","stacking","cropStart","loadingOptions","loading","requireSorting","wasNull","connectNulls","useRaw","minVal","maxVal","minI","maxI","kdIndex","sdata","fillColor","fillOpacity","setOpacity","color","get","stroke","strokeStyle","drawPoint","beginPath","lineJoin","scroller","className","top","moveTo","addKDPoint","len","push","plotX","graph","plotGroup","visible","zIndex","markerGroup","buildKDTree","labelStyle","backgroundColor","padding","borderRadius","opacity","clearTimeout","console","time","low","isNextInside","isPrevInside","nx","px","chartDestroyed","index","isYInside","slice","stackY","isNull","Math","round","toPixels","loadingDiv","loadingShown","timeEnd","transition","parentNode","removeChild","loadingSpan","stickyTracking","forExport","type","apply","Array","arguments","scatter","seriesTypes.scatter.prototype.cvsMarkerCircle","arc","PI","seriesTypes.scatter.prototype.cvsMarkerSquare","rect","bubble","seriesTypes.bubble.prototype.cvsMarkerCircle","radii","area","column","Chart","callbacks","clear","clearRect"]
}
/base/000_base/node_modules/highcharts/js/modules/boost-canvas.src.js
@@ -0,0 +1,773 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Boost module
*
* (c) 2010-2017 Highsoft AS
* Author: Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* License: www.highcharts.com/license
* Author: Torstein Honsi, Christer Vasseng
*
* This is an experimental Highcharts module that draws long data series on a canvas
* in order to increase performance of the initial load time and tooltip responsiveness.
*
* Compatible with HTML5 canvas compatible browsers (not IE < 9).
*
*
*
* Development plan
* - Column range.
* - Heatmap. Modify the heatmap-canvas demo so that it uses this module.
* - Treemap.
* - Check how it works with Highstock and data grouping. Currently it only works when navigator.adaptToUpdatedData
* is false. It is also recommended to set scrollbar.liveRedraw to false.
* - Check inverted charts.
* - Check reversed axes.
* - Chart callback should be async after last series is drawn. (But not necessarily, we don't do
that with initial series animation).
* - Cache full-size image so we don't have to redraw on hide/show and zoom up. But k-d-tree still
* needs to be built.
* - Test IE9 and IE10.
* - Stacking is not perhaps not correct since it doesn't use the translation given in
* the translate method. If this gets to complicated, a possible way out would be to
* have a simplified renderCanvas method that simply draws the areaPath on a canvas.
*
* If this module is taken in as part of the core
* - All the loading logic should be merged with core. Update styles in the core.
* - Most of the method wraps should probably be added directly in parent methods.
*
* Notes for boost mode
* - Area lines are not drawn
* - Point markers are not drawn on line-type series
* - Lines are not drawn on scatter charts
* - Zones and negativeColor don't work
* - Initial point colors aren't rendered
* - Columns are always one pixel wide. Don't set the threshold too low.
*
* Optimizing tips for users
* - For scatter plots, use a marker.radius of 1 or less. It results in a rectangle being drawn, which is
* considerably faster than a circle.
* - Set extremes (min, max) explicitly on the axes in order for Highcharts to avoid computing extremes.
* - Set enableMouseTracking to false on the series to improve total rendering time.
* - The default threshold is set based on one series. If you have multiple, dense series, the combined
* number of points drawn gets higher, and you may want to set the threshold lower in order to
* use optimizations.
*/
 
 
var win = H.win,
doc = win.document,
noop = function() {},
Color = H.Color,
Series = H.Series,
seriesTypes = H.seriesTypes,
each = H.each,
extend = H.extend,
addEvent = H.addEvent,
fireEvent = H.fireEvent,
isNumber = H.isNumber,
merge = H.merge,
pick = H.pick,
wrap = H.wrap,
CHUNK_SIZE = 50000,
destroyLoadingDiv;
 
function eachAsync(arr, fn, finalFunc, chunkSize, i) {
i = i || 0;
chunkSize = chunkSize || CHUNK_SIZE;
 
var threshold = i + chunkSize,
proceed = true;
 
while (proceed && i < threshold && i < arr.length) {
proceed = fn(arr[i], i);
i = i + 1;
}
if (proceed) {
if (i < arr.length) {
setTimeout(function() {
eachAsync(arr, fn, finalFunc, chunkSize, i);
});
} else if (finalFunc) {
finalFunc();
}
}
}
 
/*
* Returns true if the chart is in series boost mode
* @param chart {Highchart.Chart} - the chart to check
* @returns {Boolean} - true if the chart is in series boost mode
*/
function isChartSeriesBoosting(chart) {
var threshold = (chart.options.boost ? chart.options.boost.seriesThreshold : 0) ||
chart.options.chart.seriesBoostThreshold ||
10;
 
return chart.series.length >= threshold;
}
 
H.initCanvasBoost = function() {
 
if (H.seriesTypes.heatmap) {
H.wrap(H.seriesTypes.heatmap.prototype, 'drawPoints', function() {
var ctx = this.getContext();
if (ctx) {
 
// draw the columns
each(this.points, function(point) {
var plotY = point.plotY,
shapeArgs,
pointAttr;
 
if (plotY !== undefined && !isNaN(plotY) && point.y !== null) {
shapeArgs = point.shapeArgs;
 
 
pointAttr = point.series.colorAttribs(point);
 
 
ctx.fillStyle = pointAttr.fill;
ctx.fillRect(shapeArgs.x, shapeArgs.y, shapeArgs.width, shapeArgs.height);
}
});
 
this.canvasToSVG();
 
} else {
this.chart.showLoading('Your browser doesn\'t support HTML5 canvas, <br>please use a modern browser');
 
// Uncomment this to provide low-level (slow) support in oldIE. It will cause script errors on
// charts with more than a few thousand points.
// arguments[0].call(this);
}
});
}
 
 
/**
* Override a bunch of methods the same way. If the number of points is below the threshold,
* run the original method. If not, check for a canvas version or do nothing.
*/
// each(['translate', 'generatePoints', 'drawTracker', 'drawPoints', 'render'], function (method) {
// function branch(proceed) {
// var letItPass = this.options.stacking && (method === 'translate' || method === 'generatePoints');
// if (((this.processedXData || this.options.data).length < (this.options.boostThreshold || Number.MAX_VALUE) ||
// letItPass) || !isChartSeriesBoosting(this.chart)) {
 
// // Clear image
// if (method === 'render' && this.image) {
// this.image.attr({ href: '' });
// this.animate = null; // We're zooming in, don't run animation
// }
 
// proceed.call(this);
 
// // If a canvas version of the method exists, like renderCanvas(), run
// } else if (this[method + 'Canvas']) {
 
// this[method + 'Canvas']();
// }
// }
// wrap(Series.prototype, method, branch);
 
// // A special case for some types - its translate method is already wrapped
// if (method === 'translate') {
// each(['arearange', 'bubble', 'column'], function (type) {
// if (seriesTypes[type]) {
// wrap(seriesTypes[type].prototype, method, branch);
// }
// });
// }
// });
 
H.extend(Series.prototype, {
directTouch: false,
pointRange: 0,
allowDG: false, // No data grouping, let boost handle large data
hasExtremes: function(checkX) {
var options = this.options,
data = options.data,
xAxis = this.xAxis && this.xAxis.options,
yAxis = this.yAxis && this.yAxis.options;
return data.length > (options.boostThreshold || Number.MAX_VALUE) && isNumber(yAxis.min) && isNumber(yAxis.max) &&
(!checkX || (isNumber(xAxis.min) && isNumber(xAxis.max)));
},
 
/**
* If implemented in the core, parts of this can probably be shared with other similar
* methods in Highcharts.
*/
destroyGraphics: function() {
var series = this,
points = this.points,
point,
i;
 
if (points) {
for (i = 0; i < points.length; i = i + 1) {
point = points[i];
if (point && point.graphic) {
point.graphic = point.graphic.destroy();
}
}
}
 
each(['graph', 'area', 'tracker'], function(prop) {
if (series[prop]) {
series[prop] = series[prop].destroy();
}
});
},
 
/**
* Create a hidden canvas to draw the graph on. The contents is later copied over
* to an SVG image element.
*/
getContext: function() {
var chart = this.chart,
width = chart.chartWidth,
height = chart.chartHeight,
targetGroup = this.group,
target = this,
ctx,
swapXY = function(proceed, x, y, a, b, c, d) {
proceed.call(this, y, x, a, b, c, d);
};
 
if (isChartSeriesBoosting(chart)) {
target = chart;
targetGroup = chart.seriesGroup;
}
 
ctx = target.ctx;
 
if (!target.canvas) {
target.canvas = doc.createElement('canvas');
 
target.image = chart.renderer.image(
'',
0,
0,
width,
height
).add(targetGroup);
 
target.ctx = ctx = target.canvas.getContext('2d');
 
if (chart.inverted) {
each(['moveTo', 'lineTo', 'rect', 'arc'], function(fn) {
wrap(ctx, fn, swapXY);
});
}
 
target.boostClipRect = chart.renderer.clipRect(
chart.plotLeft,
chart.plotTop,
chart.plotWidth,
chart.chartHeight
);
 
target.image.clip(target.boostClipRect);
 
} else if (!(target instanceof H.Chart)) {
//ctx.clearRect(0, 0, width, height);
}
 
if (target.canvas.width !== width) {
target.canvas.width = width;
}
 
if (target.canvas.height !== height) {
target.canvas.height = height;
}
 
target.image.attr({
x: 0,
y: 0,
width: width,
height: height,
style: 'pointer-events: none'
});
 
target.boostClipRect.attr({
x: 0,
y: 0,
width: chart.plotWidth,
height: chart.chartHeight
});
 
return ctx;
},
 
/**
* Draw the canvas image inside an SVG image
*/
canvasToSVG: function() {
if (!isChartSeriesBoosting(this.chart)) {
this.image.attr({
href: this.canvas.toDataURL('image/png')
});
} else if (this.image) {
this.image.attr({
href: ''
});
}
},
 
cvsLineTo: function(ctx, clientX, plotY) {
ctx.lineTo(clientX, plotY);
},
 
renderCanvas: function() {
var series = this,
options = series.options,
chart = series.chart,
xAxis = this.xAxis,
yAxis = this.yAxis,
activeBoostSettings = chart.options.boost || {},
boostSettings = {
timeRendering: activeBoostSettings.timeRendering || false,
timeSeriesProcessing: activeBoostSettings.timeSeriesProcessing || false,
timeSetup: activeBoostSettings.timeSetup || false
},
ctx,
c = 0,
xData = series.processedXData,
yData = series.processedYData,
rawData = options.data,
xExtremes = xAxis.getExtremes(),
xMin = xExtremes.min,
xMax = xExtremes.max,
yExtremes = yAxis.getExtremes(),
yMin = yExtremes.min,
yMax = yExtremes.max,
pointTaken = {},
lastClientX,
sampling = !!series.sampling,
points,
r = options.marker && options.marker.radius,
cvsDrawPoint = this.cvsDrawPoint,
cvsLineTo = options.lineWidth ? this.cvsLineTo : false,
cvsMarker = r && r <= 1 ?
this.cvsMarkerSquare :
this.cvsMarkerCircle,
strokeBatch = this.cvsStrokeBatch || 1000,
enableMouseTracking = options.enableMouseTracking !== false,
lastPoint,
threshold = options.threshold,
yBottom = yAxis.getThreshold(threshold),
hasThreshold = isNumber(threshold),
translatedThreshold = yBottom,
doFill = this.fill,
isRange = series.pointArrayMap && series.pointArrayMap.join(',') === 'low,high',
isStacked = !!options.stacking,
cropStart = series.cropStart || 0,
loadingOptions = chart.options.loading,
requireSorting = series.requireSorting,
wasNull,
connectNulls = options.connectNulls,
useRaw = !xData,
minVal,
maxVal,
minI,
maxI,
kdIndex,
sdata = isStacked ? series.data : (xData || rawData),
fillColor = series.fillOpacity ?
new Color(series.color).setOpacity(pick(options.fillOpacity, 0.75)).get() :
series.color,
 
stroke = function() {
if (doFill) {
ctx.fillStyle = fillColor;
ctx.fill();
} else {
ctx.strokeStyle = series.color;
ctx.lineWidth = options.lineWidth;
ctx.stroke();
}
},
 
drawPoint = function(clientX, plotY, yBottom, i) {
if (c === 0) {
ctx.beginPath();
 
if (cvsLineTo) {
ctx.lineJoin = 'round';
}
}
 
if (chart.scroller && series.options.className === 'highcharts-navigator-series') {
plotY += chart.scroller.top;
if (yBottom) {
yBottom += chart.scroller.top;
}
} else {
plotY += chart.plotTop;
}
 
clientX += chart.plotLeft;
 
if (wasNull) {
ctx.moveTo(clientX, plotY);
} else {
if (cvsDrawPoint) {
cvsDrawPoint(ctx, clientX, plotY, yBottom, lastPoint);
} else if (cvsLineTo) {
cvsLineTo(ctx, clientX, plotY);
} else if (cvsMarker) {
cvsMarker.call(series, ctx, clientX, plotY, r, i);
}
}
 
// We need to stroke the line for every 1000 pixels. It will crash the browser
// memory use if we stroke too infrequently.
c = c + 1;
if (c === strokeBatch) {
stroke();
c = 0;
}
 
// Area charts need to keep track of the last point
lastPoint = {
clientX: clientX,
plotY: plotY,
yBottom: yBottom
};
},
 
addKDPoint = function(clientX, plotY, i) {
// Avoid more string concatination than required
kdIndex = clientX + ',' + plotY;
 
// The k-d tree requires series points. Reduce the amount of points, since the time to build the
// tree increases exponentially.
if (enableMouseTracking && !pointTaken[kdIndex]) {
pointTaken[kdIndex] = true;
 
if (chart.inverted) {
clientX = xAxis.len - clientX;
plotY = yAxis.len - plotY;
}
 
points.push({
clientX: clientX,
plotX: clientX,
plotY: plotY,
i: cropStart + i
});
}
};
 
// If we are zooming out from SVG mode, destroy the graphics
if (this.points || this.graph) {
this.destroyGraphics();
}
 
// The group
series.plotGroup(
'group',
'series',
series.visible ? 'visible' : 'hidden',
options.zIndex,
chart.seriesGroup
);
 
series.markerGroup = series.group;
// addEvent(series, 'destroy', function () {
// series.markerGroup = null;
// });
 
points = this.points = [];
ctx = this.getContext();
series.buildKDTree = noop; // Do not start building while drawing
 
// Display a loading indicator
if (rawData.length > 99999) {
chart.options.loading = merge(loadingOptions, {
labelStyle: {
backgroundColor: H.color('#ffffff').setOpacity(0.75).get(),
padding: '1em',
borderRadius: '0.5em'
},
style: {
backgroundColor: 'none',
opacity: 1
}
});
clearTimeout(destroyLoadingDiv);
chart.showLoading('Drawing...');
chart.options.loading = loadingOptions; // reset
}
 
if (boostSettings.timeRendering) {
console.time('canvas rendering'); // eslint-disable-line no-console
}
 
// Loop over the points
eachAsync(sdata, function(d, i) {
var x,
y,
clientX,
plotY,
isNull,
low,
isNextInside = false,
isPrevInside = false,
nx = false,
px = false,
chartDestroyed = typeof chart.index === 'undefined',
isYInside = true;
 
if (!chartDestroyed) {
if (useRaw) {
x = d[0];
y = d[1];
 
if (sdata[i + 1]) {
nx = sdata[i + 1][0];
}
 
if (sdata[i - 1]) {
px = sdata[i - 1][0];
}
} else {
x = d;
y = yData[i];
 
if (sdata[i + 1]) {
nx = sdata[i + 1];
}
 
if (sdata[i - 1]) {
px = sdata[i - 1];
}
}
 
if (nx && nx >= xMin && nx <= xMax) {
isNextInside = true;
}
 
if (px && px >= xMin && px <= xMax) {
isPrevInside = true;
}
 
// Resolve low and high for range series
if (isRange) {
if (useRaw) {
y = d.slice(1, 3);
}
low = y[0];
y = y[1];
} else if (isStacked) {
x = d.x;
y = d.stackY;
low = y - d.y;
}
 
isNull = y === null;
 
// Optimize for scatter zooming
if (!requireSorting) {
isYInside = y >= yMin && y <= yMax;
}
 
if (!isNull &&
(
(x >= xMin && x <= xMax && isYInside) ||
(isNextInside || isPrevInside)
)) {
 
 
clientX = Math.round(xAxis.toPixels(x, true));
 
if (sampling) {
if (minI === undefined || clientX === lastClientX) {
if (!isRange) {
low = y;
}
if (maxI === undefined || y > maxVal) {
maxVal = y;
maxI = i;
}
if (minI === undefined || low < minVal) {
minVal = low;
minI = i;
}
 
}
if (clientX !== lastClientX) { // Add points and reset
if (minI !== undefined) { // then maxI is also a number
plotY = yAxis.toPixels(maxVal, true);
yBottom = yAxis.toPixels(minVal, true);
drawPoint(
clientX,
hasThreshold ? Math.min(plotY, translatedThreshold) : plotY,
hasThreshold ? Math.max(yBottom, translatedThreshold) : yBottom,
i
);
addKDPoint(clientX, plotY, maxI);
if (yBottom !== plotY) {
addKDPoint(clientX, yBottom, minI);
}
}
 
minI = maxI = undefined;
lastClientX = clientX;
}
} else {
plotY = Math.round(yAxis.toPixels(y, true));
drawPoint(clientX, plotY, yBottom, i);
addKDPoint(clientX, plotY, i);
}
}
wasNull = isNull && !connectNulls;
 
if (i % CHUNK_SIZE === 0) {
series.canvasToSVG();
}
}
 
return !chartDestroyed;
}, function() {
var loadingDiv = chart.loadingDiv,
loadingShown = chart.loadingShown;
stroke();
series.canvasToSVG();
 
if (boostSettings.timeRendering) {
console.timeEnd('canvas rendering'); // eslint-disable-line no-console
}
 
fireEvent(series, 'renderedCanvas');
 
// Do not use chart.hideLoading, as it runs JS animation and will be blocked by buildKDTree.
// CSS animation looks good, but then it must be deleted in timeout. If we add the module to core,
// change hideLoading so we can skip this block.
if (loadingShown) {
extend(loadingDiv.style, {
transition: 'opacity 250ms',
opacity: 0
});
chart.loadingShown = false;
destroyLoadingDiv = setTimeout(function() {
if (loadingDiv.parentNode) { // In exporting it is falsy
loadingDiv.parentNode.removeChild(loadingDiv);
}
chart.loadingDiv = chart.loadingSpan = null;
}, 250);
}
 
// Pass tests in Pointer.
// Replace this with a single property, and replace when zooming in
// below boostThreshold.
series.directTouch = false;
series.options.stickyTracking = true;
 
delete series.buildKDTree; // Go back to prototype, ready to build
series.buildKDTree();
 
// Don't do async on export, the exportChart, getSVGForExport and getSVG methods are not chained for it.
}, chart.renderer.forExport ? Number.MAX_VALUE : undefined);
}
});
 
wrap(Series.prototype, 'setData', function(proceed) {
if (!this.hasExtremes || !this.hasExtremes(true) || this.type === 'heatmap') {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
wrap(Series.prototype, 'processData', function(proceed) {
if (!this.hasExtremes || !this.hasExtremes(true) || this.type === 'heatmap') {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
seriesTypes.scatter.prototype.cvsMarkerCircle = function(ctx, clientX, plotY, r) {
ctx.moveTo(clientX, plotY);
ctx.arc(clientX, plotY, r, 0, 2 * Math.PI, false);
};
 
// Rect is twice as fast as arc, should be used for small markers
seriesTypes.scatter.prototype.cvsMarkerSquare = function(ctx, clientX, plotY, r) {
ctx.rect(clientX - r, plotY - r, r * 2, r * 2);
};
seriesTypes.scatter.prototype.fill = true;
 
if (seriesTypes.bubble) {
seriesTypes.bubble.prototype.cvsMarkerCircle = function(ctx, clientX, plotY, r, i) {
ctx.moveTo(clientX, plotY);
ctx.arc(clientX, plotY, this.radii && this.radii[i], 0, 2 * Math.PI, false);
};
seriesTypes.bubble.prototype.cvsStrokeBatch = 1;
}
 
extend(seriesTypes.area.prototype, {
cvsDrawPoint: function(ctx, clientX, plotY, yBottom, lastPoint) {
if (lastPoint && clientX !== lastPoint.clientX) {
ctx.moveTo(lastPoint.clientX, lastPoint.yBottom);
ctx.lineTo(lastPoint.clientX, lastPoint.plotY);
ctx.lineTo(clientX, plotY);
ctx.lineTo(clientX, yBottom);
}
},
fill: true,
fillOpacity: true,
sampling: true
});
 
extend(seriesTypes.column.prototype, {
cvsDrawPoint: function(ctx, clientX, plotY, yBottom) {
ctx.rect(clientX - 1, plotY, 1, yBottom - plotY);
},
fill: true,
sampling: true
});
 
H.Chart.prototype.callbacks.push(function(chart) {
function canvasToSVG() {
if (chart.image && chart.canvas) {
chart.image.attr({
href: chart.canvas.toDataURL('image/png')
});
}
}
 
function clear() {
if (chart.image) {
chart.image.attr({
href: ''
});
}
 
if (chart.canvas) {
chart.canvas.getContext('2d').clearRect(
0,
0,
chart.canvas.width,
chart.canvas.height
);
}
}
 
addEvent(chart, 'predraw', clear);
addEvent(chart, 'render', canvasToSVG);
});
};
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/boost.js
@@ -0,0 +1,51 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Boost module
 
(c) 2010-2017 Highsoft AS
Author: Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(x){"object"===typeof module&&module.exports?module.exports=x:x(Highcharts)})(function(x){(function(h){function x(){var a=Array.prototype.slice.call(arguments),c=-Number.MAX_VALUE;C(a,function(a){if("undefined"!==typeof a&&"undefined"!==typeof a.length&&0<a.length)return c=a.length,!0});return c}function z(a){var c=0,d;if(1<a.series.length)for(var f=0;f<a.series.length;f++)d=a.series[f],x(d.processedXData,d.options.data,d.points)>=(d.options.boostThreshold||Number.MAX_VALUE)&&c++;return 5<
c||a.series.length>=G(a.options.boost&&a.options.boost.seriesThreshold,50)}function A(a){return z(a.chart)||x(a.processedXData,a.options.data,a.points)>=(a.options.boostThreshold||Number.MAX_VALUE)}function fa(a){function c(b,c){c=a.createShader("vertex"===c?a.VERTEX_SHADER:a.FRAGMENT_SHADER);a.shaderSource(c,b);a.compileShader(c);return a.getShaderParameter(c,a.COMPILE_STATUS)?c:!1}function d(){function d(b){return a.getUniformLocation(l,b)}var f=c("#version 100\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value \x3d aVertexPosition.w;\nfloat zMax \x3d bubbleZMax;\nfloat zMin \x3d bubbleZMin;\nfloat radius \x3d 0.0;\nfloat pos \x3d 0.0;\nfloat zRange \x3d zMax - zMin;\nif (bubbleSizeAbs){\nvalue \x3d value - bubbleZThreshold;\nzMax \x3d max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin \x3d 0.0;\n}\nif (value \x3c zMin){\nradius \x3d bubbleZMin / 2.0 - 1.0;\n} else {\npos \x3d zRange \x3e 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea \x26\x26 pos \x3e 0.0){\npos \x3d sqrt(pos);\n}\nradius \x3d ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord\n){\nfloat sign \x3d 1.0;\nfloat cvsOffset \x3d 0.0;\nif (cvsCoord) {\nsign *\x3d -1.0;\ncvsOffset \x3d len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value){\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold){\nfloat v;\nif (skipTranslation){\nv \x3d value;// + yAxisPos;\n} else {\nv \x3d translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord);// + yAxisPos;\n}\nif (checkTreshold \x3e 0.0 \x26\x26 hasThreshold) {\nv \x3d min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize \x3d bubbleRadius();\n} else {\ngl_PointSize \x3d pSize;\n}\nvColor \x3d aColor;\nif (isInverted) {\ngl_Position \x3d uPMatrix * vec4(xToPixels(aVertexPosition.y) + yAxisPos, yToPixels(aVertexPosition.x, aVertexPosition.z) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position \x3d uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}",
"vertex"),e=c("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col \x3d fillColor;\nif (hasColor) {\ncol \x3d vColor;\n}\nif (isCircle) {\ngl_FragColor \x3d col * texture2D(uSampler, gl_PointCoord.st);\n} else {\ngl_FragColor \x3d col;\n}\n}","fragment");if(!f||!e)return l=!1;l=a.createProgram();a.attachShader(l,f);a.attachShader(l,e);a.linkProgram(l);
a.useProgram(l);a.bindAttribLocation(l,0,"aVertexPosition");h=d("uPMatrix");n=d("pSize");J=d("fillColor");H=d("isBubble");k=d("bubbleSizeAbs");t=d("bubbleSizeByArea");B=d("uSampler");b=d("skipTranslation");q=d("isCircle");g=d("isInverted");return!0}function f(b,c){b=e[b]=e[b]||a.getUniformLocation(l,b);a.uniform1f(b,c)}var e={},l,h,n,J,H,k,t,b,q,g,B;a&&d();return{psUniform:function(){return n},pUniform:function(){return h},fillColorUniform:function(){return J},setBubbleUniforms:function(b,c,d){var e=
b.options,l=Number.MAX_VALUE,h=-Number.MAX_VALUE;"bubble"===b.type&&(l=G(e.zMin,Math.min(l,Math.max(c,!1===e.displayNegative?e.zThreshold:-Number.MAX_VALUE))),h=G(e.zMax,Math.max(h,d)),a.uniform1i(H,1),a.uniform1i(q,1),a.uniform1i(t,"width"!==b.options.sizeBy),a.uniform1i(k,b.options.sizeByAbsoluteValue),f("bubbleZMin",l),f("bubbleZMax",h),f("bubbleZThreshold",b.options.zThreshold),f("bubbleMinSize",b.minPxSize),f("bubbleMaxSize",b.maxPxSize))},bind:function(){a.useProgram(l)},program:function(){return l},
create:d,setUniform:f,setPMatrix:function(b){a.uniformMatrix4fv(h,!1,b)},setColor:function(b){a.uniform4f(J,b[0]/255,b[1]/255,b[2]/255,b[3])},setPointSize:function(b){a.uniform1f(n,b)},setSkipTranslation:function(c){a.uniform1i(b,!0===c?1:0)},setTexture:function(){a.uniform1i(B,0)},setDrawAsCircle:function(b){a.uniform1i(q,b?1:0)},reset:function(){a.uniform1i(H,0);a.uniform1i(q,0)},setInverted:function(b){a.uniform1i(g,b)},destroy:function(){a&&l&&a.deleteProgram(l)}}}function X(a,c,d){var f=!1,e=
!1,l=d||2,h=!1,n=0,g;return{destroy:function(){f&&a.deleteBuffer(f)},bind:function(){if(!f)return!1;a.vertexAttribPointer(e,l,a.FLOAT,!1,0,0)},data:g,build:function(d,k,t){g=d||[];if(!(g&&0!==g.length||h))return f=!1;l=t||l;f&&a.deleteBuffer(f);f=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,f);a.bufferData(a.ARRAY_BUFFER,h||new Float32Array(g),a.STATIC_DRAW);e=a.getAttribLocation(c.program(),k);a.enableVertexAttribArray(e);return!0},render:function(c,d,e){var b=h?h.length:g.length;if(!f||!b)return!1;
if(!c||c>b||0>c)c=0;if(!d||d>b)d=b;a.drawArrays(a[(e||"points").toUpperCase()],c/l,(d-c)/l);return!0},allocate:function(a){n=-1;h=new Float32Array(4*a)},push:function(a,c,d,b){h&&(h[++n]=a,h[++n]=c,h[++n]=d,h[++n]=b)}}}function ga(a){function c(a){var b,c;return A(a)?(b=!!a.options.stacking,c=a.xData||a.options.xData||a.processedXData,b=(b?a.data:c||a.options.data).length,"treemap"===a.type?b*=12:"heatmap"===a.type?b*=6:N[a.type]&&(b*=2),b):0}function d(){b.clear(b.COLOR_BUFFER_BIT|b.DEPTH_BUFFER_BIT)}
function f(a,b){function c(a){a&&(b.colorData.push(a[0]),b.colorData.push(a[1]),b.colorData.push(a[2]),b.colorData.push(a[3]))}function d(a,b,d,e,f){c(f);r.usePreallocated?t.push(a,b,d?1:0,e||1):(B.push(a),B.push(b),B.push(d?1:0),B.push(e||1))}function e(a,b,e,f,v){c(v);d(a+e,b);c(v);d(a,b);c(v);d(a,b+f);c(v);d(a,b+f);c(v);d(a+e,b+f);c(v);d(a+e,b)}function f(a){r.useGPUTranslations||(b.skipTranslation=!0,a.x=A.toPixels(a.x,!0),a.y=F.toPixels(a.y,!0));d(a.x,a.y,0,2)}var v=a.pointArrayMap&&"low,high"===
a.pointArrayMap.join(","),k=a.chart,m=a.options,l=!!m.stacking,g=m.data,n=a.xAxis.getExtremes(),q=n.min,u=n.max,n=a.yAxis.getExtremes(),w=n.min,z=n.max,n=a.xData||m.xData||a.processedXData,x=a.yData||m.yData||a.processedYData,p=a.zData||m.zData||a.processedZData,F=a.yAxis,A=a.xAxis,E=!n||0===n.length,y=a.points||!1,J=!1,H,K,L,I=l?a.data:n||g,D={x:Number.MIN_VALUE,y:0},R={x:Number.MIN_VALUE,y:0};m.boostData&&0<m.boostData.length||(a.closestPointRangePx=Number.MAX_VALUE,y&&0<y.length?(b.skipTranslation=
!0,b.drawMode="triangles",y[0].node&&y[0].node.levelDynamic&&y.sort(function(a,b){if(a.node){if(a.node.levelDynamic>b.node.levelDynamic)return 1;if(a.node.levelDynamic<b.node.levelDynamic)return-1}return 0}),C(y,function(b){var c=b.plotY,d;void 0===c||isNaN(c)||null===b.y||(c=b.shapeArgs,d=b.series.colorAttribs(b),b=d["stroke-width"]||0,K=h.color(d.fill).rgba,K[0]/=255,K[1]/=255,K[2]/=255,"treemap"===a.type&&(b=b||1,L=h.color(d.stroke).rgba,L[0]/=255,L[1]/=255,L[2]/=255,e(c.x,c.y,c.width,c.height,
L),b/=2),e(c.x+b,c.y+b,c.width-2*b,c.height-2*b,K))})):(C(I,function(c,e){var f,m,h,n=!1,P=!1,g=!1,Y=!1,ha=N[a.type],t=!1,y=!0;if("undefined"===typeof k.index)return!1;E?(f=c[0],m=c[1],I[e+1]&&(P=I[e+1][0]),I[e-1]&&(n=I[e-1][0]),3<=c.length&&(h=c[2],c[2]>b.zMax&&(b.zMax=c[2]),c[2]<b.zMin&&(b.zMin=c[2]))):(f=c,m=x[e],I[e+1]&&(P=I[e+1]),I[e-1]&&(n=I[e-1]),p&&p.length&&(h=p[e],p[e]>b.zMax&&(b.zMax=p[e]),p[e]<b.zMin&&(b.zMin=p[e])));P&&P>=q&&P<=u&&(g=!0);n&&n>=q&&n<=u&&(Y=!0);v?(E&&(m=c.slice(1,3)),m=
m[1]):l&&(f=c.x,m=c.stackY);a.requireSorting||(y=m>=w&&m<=z);f>u&&R.x<u&&(R.x=f,R.y=m);f<q&&D.x<q&&(D.x=f,D.y=m);if(0===m||m&&y)if(f>=q&&f<=u&&(t=!0),t||g||Y)r.useGPUTranslations||(b.skipTranslation=!0,f=A.toPixels(f,!0),m=F.toPixels(m,!0)),ha&&(H=0,0>m&&(H=m,m=0),r.useGPUTranslations||(H=F.toPixels(H,!0)),d(f,H,0,0,!1)),b.hasMarkers&&!1!==J&&(a.closestPointRangePx=Math.min(a.closestPointRangePx,Math.abs(f-J))),d(f,m,0,"bubble"===a.type?h||1:2,!1),J=f}),J||(f(D),f(R))))}function e(){u=[];y.data=B=
[];p=[]}function l(a){k&&(k.setUniform("xAxisTrans",a.transA),k.setUniform("xAxisMin",a.min),k.setUniform("xAxisMinPad",a.minPixelPadding),k.setUniform("xAxisPointRange",a.pointRange),k.setUniform("xAxisLen",a.len),k.setUniform("xAxisPos",a.pos),k.setUniform("xAxisCVSCoord",!a.horiz))}function g(a){k&&(k.setUniform("yAxisTrans",a.transA),k.setUniform("yAxisMin",a.min),k.setUniform("yAxisMinPad",a.minPixelPadding),k.setUniform("yAxisPointRange",a.pointRange),k.setUniform("yAxisLen",a.len),k.setUniform("yAxisPos",
a.pos),k.setUniform("yAxisCVSCoord",!a.horiz))}function n(a,b){k.setUniform("hasThreshold",a);k.setUniform("translatedThreshold",b)}function w(c){if(c)q=c.chartWidth||800,F=c.chartHeight||400;else return!1;if(!b||!q||!F)return!1;r.timeRendering&&console.time("gl rendering");k.bind();b.viewport(0,0,q,F);k.setPMatrix([2/q,0,0,0,0,-(2/F),0,0,0,0,-2,0,-1,1,-1,1]);1<r.lineWidth&&!h.isMS&&b.lineWidth(r.lineWidth);t.build(y.data,"aVertexPosition",4);t.bind();x&&(b.bindTexture(b.TEXTURE_2D,D),k.setTexture(D));
k.setInverted(c.options.chart?c.options.chart.inverted:!1);C(u,function(a,c){var d=a.series.options,e=d.threshold,f=Q(e),e=a.series.yAxis.getThreshold(e),m=G(d.marker?d.marker.enabled:null,a.series.xAxis.isRadial?!0:null,a.series.closestPointRangePx>2*((d.marker?d.marker.radius:10)||10)),v=a.series.fillOpacity?(new Z(a.series.color)).setOpacity(G(d.fillOpacity,.85)).get():a.series.color;t.bind();d.colorByPoint&&(v=a.series.chart.options.colors[c]);v=h.color(v).rgba;r.useAlpha||(v[3]=1);"add"===d.boostBlending?
(b.blendFunc(b.SRC_ALPHA,b.ONE),b.blendEquation(b.FUNC_ADD)):"mult"===d.boostBlending?b.blendFunc(b.DST_COLOR,b.ZERO):"darken"===d.boostBlending?(b.blendFunc(b.ONE,b.ONE),b.blendEquation(b.FUNC_MIN)):b.blendFuncSeparate(b.SRC_ALPHA,b.ONE_MINUS_SRC_ALPHA,b.ONE,b.ONE_MINUS_SRC_ALPHA);k.reset();0<a.colorData.length&&(k.setUniform("hasColor",1),c=X(b,k),c.build(a.colorData,"aColor",4),c.bind());k.setColor(v);l(a.series.xAxis);g(a.series.yAxis);n(f,e);"points"===a.drawMode&&(d.marker&&d.marker.radius?
k.setPointSize(2*d.marker.radius):k.setPointSize(1));k.setSkipTranslation(a.skipTranslation);"bubble"===a.series.type&&k.setBubbleUniforms(a.series,a.zMin,a.zMax);k.setDrawAsCircle(ia[a.series.type]&&x||!1);t.render(a.from,a.to,a.drawMode);a.hasMarkers&&m&&(d.marker&&d.marker.radius?k.setPointSize(2*d.marker.radius):k.setPointSize(10),k.setDrawAsCircle(!0),t.render(a.from,a.to,"POINTS"))});t.destroy();r.timeRendering&&console.timeEnd("gl rendering");e();a&&a()}function z(a){d();if(a.renderer.forExport)return w(a);
E?w(a):setTimeout(function(){z(a)},1)}var k=!1,t=!1,b=!1,q=0,F=0,B=!1,p=!1,x=!1,y={},E=!1,u=[],M=U.createElement("canvas"),O=M.getContext("2d"),D,N={column:!0,area:!0},ia={scatter:!0,bubble:!0},r={pointSize:1,lineWidth:3,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1};return y={allocateBufferForSingleSeries:function(a){var b=0;r.usePreallocated&&(A(a)&&(b=c(a)),t.allocate(b))},pushSeries:function(a){0<u.length&&(u[u.length-
1].to=B.length,u[u.length-1].hasMarkers&&(u[u.length-1].markerTo=p.length));r.timeSeriesProcessing&&console.time("building "+a.type+" series");u.push({from:B.length,markerFrom:p.length,colorData:[],series:a,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:a.options.marker?!1!==a.options.marker.enabled:!1,showMarksers:!0,drawMode:{area:"lines",arearange:"lines",areaspline:"line_strip",column:"lines",line:"line_strip",scatter:"points",heatmap:"triangles",treemap:"triangles",bubble:"points"}[a.type]||
"line_strip"});f(a,u[u.length-1]);r.timeSeriesProcessing&&console.timeEnd("building "+a.type+" series")},setSize:function(a,b){if(q!==a||b!==b)q=a,F=b,k.bind(),k.setPMatrix([2/q,0,0,0,0,-(2/F),0,0,0,0,-2,0,-1,1,-1,1])},inited:function(){return E},setThreshold:n,init:function(a,c){var d=0,f=["webgl","experimental-webgl","moz-webgl","webkit-3d"];E=!1;if(!a)return!1;for(r.timeSetup&&console.time("gl setup");d<f.length&&!(b=a.getContext(f[d]));d++);if(b)c||e();else return!1;b.enable(b.BLEND);b.blendFunc(b.SRC_ALPHA,
b.ONE_MINUS_SRC_ALPHA);b.disable(b.DEPTH_TEST);b.depthMask(b.FALSE);k=fa(b);t=X(b,k);x=!1;D=b.createTexture();M.width=512;M.height=512;O.fillStyle="#FFF";O.beginPath();O.arc(256,256,256,0,2*Math.PI);O.fill();try{b.bindTexture(b.TEXTURE_2D,D),b.texImage2D(b.TEXTURE_2D,0,b.RGBA,b.RGBA,b.UNSIGNED_BYTE,M),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.LINEAR),b.texParameteri(b.TEXTURE_2D,
b.TEXTURE_MIN_FILTER,b.LINEAR_MIPMAP_LINEAR),b.generateMipmap(b.TEXTURE_2D),b.bindTexture(b.TEXTURE_2D,null),x=!0}catch(oa){}E=!0;r.timeSetup&&console.timeEnd("gl setup");return!0},render:z,settings:r,valid:function(){return!1!==b},clear:d,flush:e,setXAxis:l,setYAxis:g,data:B,gl:function(){return b},allocateBuffer:function(a){var b=0;r.usePreallocated&&(C(a.series,function(a){A(a)&&(b+=c(a))}),t.allocate(b))},destroy:function(){t.destroy();k.destroy()},setOptions:function(a){ja(!0,r,a)}}}function aa(a,
c){var d=a.chartWidth,f=a.chartHeight,e=a,l=a.seriesGroup||c.group,g=function(a,d,e,f,h,b,l){a.call(c,e,d,f,h,b,l)},e=z(a)?a:c;e.image||(e.canvas=U.createElement("canvas"),e.image=a.renderer.image("",0,0,d,f).add(l),e.boostClipRect=a.renderer.clipRect(a.plotLeft,a.plotTop,a.plotWidth,a.chartHeight),e.image.clip(e.boostClipRect),e.inverted&&C(["moveTo","lineTo","rect","arc"],function(a){w(!1,a,g)}),e instanceof h.Chart&&(e.markerGroup=e.renderer.g().add(l),e.markerGroup.translate(c.xAxis.pos,c.yAxis.pos)));
e.canvas.width=d;e.canvas.height=f;e.image.attr({x:0,y:0,width:d,height:f,style:"pointer-events: none"});e.boostClipRect.attr({x:a.plotLeft,y:a.plotTop,width:a.plotWidth,height:a.chartHeight});e.ogl||(e.ogl=ga(function(){e.image.attr({href:e.canvas.toDataURL("image/png")})}),e.ogl.init(e.canvas),e.ogl.setOptions(a.options.boost||{}),e instanceof h.Chart&&e.ogl.allocateBuffer(a));e.ogl.setSize(d,f);return e.ogl}function ba(a,c,d){a&&c.image&&c.canvas&&!z(d||c.chart)&&a.render(d||c.chart)}function ca(a,
c){a&&c.image&&c.canvas&&!z(c.chart)&&a.allocateBufferForSingleSeries(c)}function S(a,c,d,f,e,h){e=e||0;f=f||5E4;for(var l=e+f,g=!0;g&&e<l&&e<a.length;)g=c(a[e],e),++e;g&&(e<a.length?h?S(a,c,d,f,e,h):T.requestAnimationFrame?T.requestAnimationFrame(function(){S(a,c,d,f,e)}):setTimeout(function(){S(a,c,d,f,e)}):d&&d())}function ka(a){if(!A(this))return a.call(this);if(a=aa(this.chart,this))ca(a,this),a.pushSeries(this);ba(a,this)}var T=h.win,U=T.document,la=function(){},Z=h.Color,p=h.Series,g=h.seriesTypes,
C=h.each,da=h.extend,ea=h.addEvent,ma=h.fireEvent,na=h.grep,Q=h.isNumber,ja=h.merge,G=h.pick,w=h.wrap,V=h.getOptions().plotOptions,W;Z.prototype.names={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",
crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",feldspar:"#d19275",firebrick:"#b22222",
floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",
lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslateblue:"#8470ff",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",
mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",
sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",violetred:"#d02090",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};p.prototype.getPoint=function(a){var c=a,d=this.xData||this.options.xData||this.processedXData||
!1;!a||a instanceof this.pointClass||(c=(new this.pointClass).init(this,this.options.data[a.i],d?d[a.i]:void 0),c.category=c.x,c.dist=a.dist,c.distX=a.distX,c.plotX=a.plotX,c.plotY=a.plotY,c.index=a.i);return c};w(p.prototype,"searchPoint",function(a){return this.getPoint(a.apply(this,[].slice.call(arguments,1)))});w(p.prototype,"destroy",function(a){var c=this,d=c.chart;d.markerGroup===c.markerGroup&&(c.markerGroup=null);d.hoverPoints&&(d.hoverPoints=na(d.hoverPoints,function(a){return a.series===
c}));d.hoverPoint&&d.hoverPoint.series===c&&(d.hoverPoint=null);a.call(this)});w(p.prototype,"getExtremes",function(a){if(!A(this)||!this.hasExtremes||!this.hasExtremes())return a.apply(this,Array.prototype.slice.call(arguments,1))});C("area arearange column line scatter heatmap bubble treemap heatmap".split(" "),function(a){V[a]&&(V[a].boostThreshold=5E3,V[a].boostData=[])});C(["translate","generatePoints","drawTracker","drawPoints","render"],function(a){function c(c){var d=this.options.stacking&&
("translate"===a||"generatePoints"===a);if(!A(this)||d||"heatmap"===this.type||"treemap"===this.type)"render"===a&&this.image&&!z(this.chart)&&(this.image.attr({href:""}),this.animate=null),c.call(this);else if(this[a+"Canvas"])this[a+"Canvas"]()}w(p.prototype,a,c);"translate"===a&&(g.column&&w(g.column.prototype,a,c),g.arearange&&w(g.arearange.prototype,a,c),g.treemap&&w(g.treemap.prototype,a,c))});(function(){var a=0,c,d=["webgl","experimental-webgl","moz-webgl","webkit-3d"],f=!1;if("undefined"!==
typeof T.WebGLRenderingContext)for(c=U.createElement("canvas");a<d.length;a++)try{if(f=c.getContext(d[a]),"undefined"!==typeof f&&null!==f)return!0}catch(e){}return!1})()?(w(p.prototype,"processData",function(a){A(this)&&"heatmap"!==this.type&&"treemap"!==this.type||a.apply(this,Array.prototype.slice.call(arguments,1));this.hasExtremes&&this.hasExtremes(!0)||a.apply(this,Array.prototype.slice.call(arguments,1))}),h.extend(p.prototype,{pointRange:0,directTouch:!1,allowDG:!1,hasExtremes:function(a){var c=
this.options,d=this.xAxis&&this.xAxis.options,f=this.yAxis&&this.yAxis.options;return c.data.length>(c.boostThreshold||Number.MAX_VALUE)&&Q(f.min)&&Q(f.max)&&(!a||Q(d.min)&&Q(d.max))},destroyGraphics:function(){var a=this,c=this.points,d,f;if(c)for(f=0;f<c.length;f+=1)(d=c[f])&&d.graphic&&(d.graphic=d.graphic.destroy());C(["graph","area","tracker"],function(c){a[c]&&(a[c]=a[c].destroy())})},renderCanvas:function(){var a=this,c=a.options||{},d=!1,f=a.chart,e=this.xAxis,h=this.yAxis,g=c.xData||a.processedXData,
n=c.yData||a.processedYData,p=c.data,d=e.getExtremes(),w=d.min,k=d.max,d=h.getExtremes(),t=d.min,b=d.max,q={},x,B=!!a.sampling,A,C=!1!==c.enableMouseTracking,y=h.getThreshold(c.threshold),E=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),u=!!c.stacking,M=a.cropStart||0,O=a.requireSorting,D=!g,N,G,r,v,m=function(a,b,c){W=a+","+b;C&&!q[W]&&(q[W]=!0,f.inverted&&(a=e.len-a,b=h.len-b),A.push({clientX:a,plotX:a,plotY:b,i:M+c}))},d=aa(f,a);this.visible?((this.points||this.graph)&&this.destroyGraphics(),
z(f)?this.markerGroup=f.markerGroup:this.markerGroup=a.plotGroup("markerGroup","markers",!0,1,f.seriesGroup),A=this.points=[],a.buildKDTree=la,d&&(ca(d,this),d.pushSeries(a),ba(d,this,f)),S(u?a.data:g||p,function(a,c){var d,g,l,p="undefined"===typeof f.index,q=!0;if(!p&&(D?(d=a[0],g=a[1]):(d=a,g=n[c]),E?(D&&(g=a.slice(1,3)),l=g[0],g=g[1]):u&&(d=a.x,g=a.stackY,l=g-a.y),O||(q=g>=t&&g<=b),null!==g&&d>=w&&d<=k&&q))if(a=Math.ceil(e.toPixels(d,!0)),B){if(void 0===r||a===x){E||(l=g);if(void 0===v||g>G)G=
g,v=c;if(void 0===r||l<N)N=l,r=c}a!==x&&(void 0!==r&&(g=h.toPixels(G,!0),y=h.toPixels(N,!0),m(a,g,v),y!==g&&m(a,y,r)),r=v=void 0,x=a)}else g=Math.ceil(h.toPixels(g,!0)),m(a,g,c);return!p},function(){ma(a,"renderedCanvas");a.directTouch=!1;a.options.stickyTracking=!0;delete a.buildKDTree;a.buildKDTree()},f.renderer.forExport?Number.MAX_VALUE:void 0)):!z(f)&&d&&(d.clear(),this.image.attr({href:""}))}}),C(["heatmap","treemap"],function(a){g[a]&&(w(g[a].prototype,"drawPoints",ka),g[a].prototype.directTouch=
!1)}),g.bubble&&(delete g.bubble.prototype.buildKDTree,g.bubble.prototype.directTouch=!1,w(g.bubble.prototype,"markerAttribs",function(a){return A(this)?!1:a.apply(this,[].slice.call(arguments,1))})),g.scatter.prototype.fill=!0,da(g.area.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),da(g.column.prototype,{fill:!0,sampling:!0}),w(p.prototype,"setVisible",function(a,c){a.call(this,c,!1);!1===this.visible&&this.ogl&&this.canvas&&this.image?(this.ogl.clear(),this.image.attr({href:""})):this.chart.redraw()}),
h.Chart.prototype.callbacks.push(function(a){ea(a,"predraw",function(){!z(a)&&a.didBoost&&(a.didBoost=!1,a.image&&a.image.attr({href:""}));a.canvas&&a.ogl&&z(a)&&(a.didBoost=!0,a.ogl.allocateBuffer(a));a.markerGroup&&a.xAxis&&0<a.xAxis.length&&a.yAxis&&0<a.yAxis.length&&a.markerGroup.translate(a.xAxis[0].pos,a.yAxis[0].pos)});ea(a,"render",function(){a.ogl&&z(a)&&a.ogl.render(a)})})):"undefined"!==typeof h.initCanvasBoost?h.initCanvasBoost():h.error(26)})(x)});
/base/000_base/node_modules/highcharts/js/modules/boost.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":51,
"mappings":"A;;;;;;;;;AAUC,SAAQ,CAACA,CAAD,CAAU,CACO,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,CACID,MAAAC,QADJ,CACqBF,CADrB,CAGIA,CAAA,CAAQG,UAAR,CAJW,CAAlB,CAAA,CAMC,QAAQ,CAACA,CAAD,CAAa,CAClB,SAAQ,CAACC,CAAD,CAAI,CAiRTC,QAASA,EAAU,EAAG,CAAA,IACdC,EAAOC,KAAAC,UAAAC,MAAAC,KAAA,CAA2BC,SAA3B,CADO,CAEdC,EAAI,CAACC,MAAAC,UAETC,EAAA,CAAKT,CAAL,CAAW,QAAQ,CAACU,CAAD,CAAI,CACnB,GAAiB,WAAjB,GAAI,MAAOA,EAAX,EAAoD,WAApD,GAAgC,MAAOA,EAAAC,OAAvC,EAEmB,CAFnB,CAEQD,CAAAC,OAFR,CAIQ,MADAL,EACO,CADHI,CAAAC,OACG,CAAA,CAAA,CALI,CAAvB,CAUA,OAAOL,EAdW,CA+CtBM,QAASA,EAAqB,CAACC,CAAD,CAAQ,CA3BS,IAGvCC,EAAc,CAHyB,CAIvCC,CAEJ,IAA0B,CAA1B,CAsBsCF,CAtBlCE,OAAAJ,OAAJ,CACI,IAAK,IAAIK,EAAI,CAAb,CAAgBA,CAAhB,CAqBkCH,CArBdE,OAAAJ,OAApB,CAAyCK,CAAA,EAAzC,CACID,CACA,CAmB8BF,CApBrBE,OAAA,CAAaC,CAAb,CACT,CAAIjB,CAAA,CACIgB,CAAAE,eADJ,CAEIF,CAAAG,QAAAC,KAFJ,CAGIJ,CAAAK,OAHJ,CAAJ,GAIUL,CAAAG,QAAAG,eAJV,EAI2Cd,MAAAC,UAJ3C,GAKIM,CAAA,EAcZ,OATqB,EASrB;AATOA,CASP,EAAgDD,CAAAE,OAAAJ,OAAhD,EAAuEW,CAAA,CACnET,CAAAK,QAAAK,MADmE,EAC5CV,CAAAK,QAAAK,MAAAC,gBAD4C,CAEnE,EAFmE,CADrC,CAYtCC,QAASA,EAAgB,CAACV,CAAD,CAAS,CAC9B,MAAOH,EAAA,CAAsBG,CAAAF,MAAtB,CAAP,EACId,CAAA,CACIgB,CAAAE,eADJ,CAEIF,CAAAG,QAAAC,KAFJ,CAGIJ,CAAAK,OAHJ,CADJ,GAKUL,CAAAG,QAAAG,eALV,EAK2Cd,MAAAC,UAL3C,CAD8B,CAgBlCkB,QAASA,GAAQ,CAACC,CAAD,CAAK,CAsMlBC,QAASA,EAAe,CAACC,CAAD,CAAMC,CAAN,CAAY,CAE5BC,CAAAA,CAASJ,CAAAK,aAAA,CADI,QAATtB,GAAAoB,CAAApB,CAAoBiB,CAAAM,cAApBvB,CAAuCiB,CAAAO,gBAClC,CAEbP,EAAAQ,aAAA,CAAgBJ,CAAhB,CAAwBF,CAAxB,CACAF,EAAAS,cAAA,CAAiBL,CAAjB,CAEA,OAAKJ,EAAAU,mBAAA,CAAsBN,CAAtB,CAA8BJ,CAAAW,eAA9B,CAAL,CAIOP,CAJP,CAEW,CAAA,CATqB,CAkBpCC,QAASA,EAAY,EAAG,CAUpBO,QAASA,EAAI,CAACC,CAAD,CAAI,CACb,MAAOb,EAAAc,mBAAA,CAAsBC,CAAtB,CAAqCF,CAArC,CADM,CAVG,IAChBG,EAAIf,CAAA,CAhFJgB,kmGAgFI;AAA2B,QAA3B,CADY,CAEhBC,EAAIjB,CAAA,CAnDJkB,oYAmDI,CAA2B,UAA3B,CAER,IAAKH,CAAAA,CAAL,EAAWE,CAAAA,CAAX,CAGI,MAFAH,EAEA,CAFgB,CAAA,CASpBA,EAAA,CAAgBf,CAAAoB,cAAA,EAEhBpB,EAAAqB,aAAA,CAAgBN,CAAhB,CAA+BC,CAA/B,CACAhB,EAAAqB,aAAA,CAAgBN,CAAhB,CAA+BG,CAA/B,CACAlB,EAAAsB,YAAA,CAAeP,CAAf,CAEAf;CAAAuB,WAAA,CAAcR,CAAd,CAEAf,EAAAwB,mBAAA,CAAsBT,CAAtB,CAAqC,CAArC,CAAwC,iBAAxC,CAEAU,EAAA,CAAWb,CAAA,CAAK,UAAL,CACXc,EAAA,CAAYd,CAAA,CAAK,OAAL,CACZe,EAAA,CAAmBf,CAAA,CAAK,WAAL,CACnBgB,EAAA,CAAkBhB,CAAA,CAAK,UAAL,CAClBiB,EAAA,CAAuBjB,CAAA,CAAK,eAAL,CACvBkB,EAAA,CAAwBlB,CAAA,CAAK,kBAAL,CACxBmB,EAAA,CAAkBnB,CAAA,CAAK,UAAL,CAClBoB,EAAA,CAAyBpB,CAAA,CAAK,iBAAL,CACzBqB,EAAA,CAAkBrB,CAAA,CAAK,UAAL,CAClBsB,EAAA,CAAatB,CAAA,CAAK,YAAL,CAEb,OAAO,CAAA,CAnCa,CA8DxBuB,QAASA,EAAU,CAACC,CAAD,CAAOC,CAAP,CAAY,CACvBC,CAAAA,CAAIC,CAAA,CAAWH,CAAX,CAAJE,CAAuBC,CAAA,CAAWH,CAAX,CAAvBE,EACAtC,CAAAc,mBAAA,CAAsBC,CAAtB,CAAqCqB,CAArC,CACJpC,EAAAwC,UAAA,CAAaF,CAAb,CAAgBD,CAAhB,CAH2B,CAtRb,IA0KdE,EAAa,EA1KC,CA4KdxB,CA5Kc,CA8KdU,CA9Kc,CAgLdC,CAhLc,CAkLdC,CAlLc,CAoLdC,CApLc,CAsLdC,CAtLc,CAuLdC,CAvLc,CAyLdE,CAzLc,CA2LdC,CA3Lc,CA6LdC,CA7Lc,CA+LdH,CA6MA/B,EAAJ,EACIK,CAAA,EAGJ,OAAO,CACHqB,UAAWA,QAAQ,EAAG,CAClB,MAAOA,EADW,CADnB,CAIHD,SAAUA,QAAQ,EAAG,CACjB,MAAOA,EADU,CAJlB,CAOHE,iBAAkBA,QAAQ,EAAG,CACzB,MAAOA,EADkB,CAP1B,CAUHc,kBAzFJA,QAA0B,CAACrD,CAAD,CAASsD,CAAT,CAAmBC,CAAnB,CAA6B,CAAA,IAC/CC;AAAgBxD,CAAAG,QAD+B,CAE/CsD,EAAOjE,MAAAC,UAFwC,CAG/CiE,EAAO,CAAClE,MAAAC,UAEQ,SAApB,GAAIO,CAAAe,KAAJ,GACI0C,CAoBA,CApBOlD,CAAA,CAAKiD,CAAAC,KAAL,CAAyBE,IAAAC,IAAA,CAC5BH,CAD4B,CAE5BE,IAAAE,IAAA,CACIP,CADJ,CAEsC,CAAA,CAAlC,GAAAE,CAAAM,gBAAA,CACAN,CAAAO,WADA,CAC2B,CAACvE,MAAAC,UAHhC,CAF4B,CAAzB,CAoBP,CAXAiE,CAWA,CAXOnD,CAAA,CAAKiD,CAAAE,KAAL,CAAyBC,IAAAE,IAAA,CAASH,CAAT,CAAeH,CAAf,CAAzB,CAWP,CATA3C,CAAAoD,UAAA,CAAaxB,CAAb,CAA8B,CAA9B,CASA,CARA5B,CAAAoD,UAAA,CAAanB,CAAb,CAA8B,CAA9B,CAQA,CAPAjC,CAAAoD,UAAA,CAAatB,CAAb,CAA8D,OAA9D,GAAoC1C,CAAAG,QAAA8D,OAApC,CAOA,CANArD,CAAAoD,UAAA,CAAavB,CAAb,CAAmCzC,CAAAG,QAAA+D,oBAAnC,CAMA,CAJAnB,CAAA,CAAW,YAAX,CAAyBU,CAAzB,CAIA,CAHAV,CAAA,CAAW,YAAX,CAAyBW,CAAzB,CAGA,CAFAX,CAAA,CAAW,kBAAX,CAA+B/C,CAAAG,QAAA4D,WAA/B,CAEA,CADAhB,CAAA,CAAW,eAAX,CAA4B/C,CAAAmE,UAA5B,CACA,CAAApB,CAAA,CAAW,eAAX,CAA4B/C,CAAAoE,UAA5B,CArBJ,CALmD,CA+EhD,CAWHC,KA/IJA,QAAa,EAAG,CACZzD,CAAAuB,WAAA,CAAcR,CAAd,CADY,CAoIT,CAYH2C,QApBJC,QAAmB,EAAG,CAClB,MAAO5C,EADW,CAQf;AAaH6C,OAAQvD,CAbL,CAcH8B,WAAYA,CAdT,CAeH0B,WAvCJA,QAAmB,CAACC,CAAD,CAAI,CACnB9D,CAAA+D,iBAAA,CAAoBtC,CAApB,CAA8B,CAAA,CAA9B,CAAqCqC,CAArC,CADmB,CAwBhB,CAgBHE,SA7DJA,QAAiB,CAACC,CAAD,CAAQ,CACrBjE,CAAAkE,UAAA,CACIvC,CADJ,CAEIsC,CAAA,CAAM,CAAN,CAFJ,CAEe,GAFf,CAGIA,CAAA,CAAM,CAAN,CAHJ,CAGe,GAHf,CAIIA,CAAA,CAAM,CAAN,CAJJ,CAIe,GAJf,CAKIA,CAAA,CAAM,CAAN,CALJ,CADqB,CA6ClB,CAiBHE,aAjCJA,QAAqB,CAACC,CAAD,CAAI,CACrBpE,CAAAwC,UAAA,CAAad,CAAb,CAAwB0C,CAAxB,CADqB,CAgBlB,CAkBHC,mBAlDJA,QAA2B,CAACC,CAAD,CAAO,CAC9BtE,CAAAoD,UAAA,CAAapB,CAAb,CAA8C,CAAA,CAAT,GAAAsC,CAAA,CAAgB,CAAhB,CAAoB,CAAzD,CAD8B,CAgC3B,CAmBHC,WAnIJA,QAAmB,EAAG,CAClBvE,CAAAoD,UAAA,CAAarB,CAAb,CAA8B,CAA9B,CADkB,CAgHf,CAoBHyC,gBAnHJA,QAAwB,CAACF,CAAD,CAAO,CAC3BtE,CAAAoD,UAAA,CAAanB,CAAb,CAA8BqC,CAAA,CAAO,CAAP,CAAW,CAAzC,CAD2B,CA+FxB,CAqBHG,MA7GJA,QAAc,EAAG,CACbzE,CAAAoD,UAAA,CAAaxB,CAAb,CAA8B,CAA9B,CACA5B,EAAAoD,UAAA,CAAanB,CAAb,CAA8B,CAA9B,CAFa,CAwFV,CAsBHyC,YA9HJA,QAAoB,CAACJ,CAAD,CAAO,CACvBtE,CAAAoD,UAAA,CAAalB,CAAb,CAAyBoC,CAAzB,CADuB,CAwGpB,CAuBHK,QAtKJA,QAAgB,EAAG,CACX3E,CAAJ,EAAUe,CAAV,EACIf,CAAA4E,cAAA,CAAiB7D,CAAjB,CAFW,CA+IZ,CAhZW,CAkbtB8D,QAASA,EAAc,CAAC7E,CAAD,CAAKI,CAAL,CAAa0E,CAAb,CAA0C,CAAA,IACzDC,EAAS,CAAA,CADgD,CAEzDC;AAAgB,CAAA,CAFyC,CAGzDC,EAAaH,CAAbG,EAA+B,CAH0B,CAIzDC,EAAe,CAAA,CAJ0C,CAKzDC,EAAW,CAL8C,CAMzD3F,CAyHJ,OAAO,CACHmF,QAtHJA,QAAgB,EAAG,CACXI,CAAJ,EACI/E,CAAAoF,aAAA,CAAgBL,CAAhB,CAFW,CAqHZ,CAEHtB,KAzEJA,QAAa,EAAG,CACZ,GAAKsB,CAAAA,CAAL,CACI,MAAO,CAAA,CAMX/E,EAAAqF,oBAAA,CAAuBL,CAAvB,CAAsCC,CAAtC,CAAkDjF,CAAAsF,MAAlD,CAA4D,CAAA,CAA5D,CAAmE,CAAnE,CAAsE,CAAtE,CARY,CAuET,CAGH9F,KAAMA,CAHH,CAIH+F,MA7GJA,QAAc,CAACC,CAAD,CAASC,CAAT,CAAiBX,CAAjB,CAAiC,CAE3CtF,CAAA,CAAOgG,CAAP,EAAiB,EAEjB,IAAI,EAAEhG,CAAF,EAA0B,CAA1B,GAAUA,CAAAR,OAAV,EAAiCkG,CAAjC,CAAJ,CAGI,MADAH,EACA,CADS,CAAA,CAIbE,EAAA,CAAaH,CAAb,EAA+BG,CAE3BF,EAAJ,EACI/E,CAAAoF,aAAA,CAAgBL,CAAhB,CAGJA,EAAA,CAAS/E,CAAA0F,aAAA,EACT1F,EAAA2F,WAAA,CAAc3F,CAAA4F,aAAd,CAA+Bb,CAA/B,CACA/E,EAAA6F,WAAA,CACI7F,CAAA4F,aADJ,CAEIV,CAFJ,EAEoB,IAAIY,YAAJ,CAAiBtG,CAAjB,CAFpB,CAGIQ,CAAA+F,YAHJ,CAOAf,EAAA,CAAgBhF,CAAAgG,kBAAA,CAAqB5F,CAAAsD,QAAA,EAArB,CAAuC+B,CAAvC,CAChBzF,EAAAiG,wBAAA,CAA2BjB,CAA3B,CAEA,OAAO,CAAA,CA5BoC,CAyGxC,CAKHkB,OA1DJA,QAAe,CAACC,CAAD,CAAOC,CAAP,CAAWC,CAAX,CAAqB,CAChC,IAAIrH,EAASkG,CAAA,CAAeA,CAAAlG,OAAf,CAAqCQ,CAAAR,OAMlD,IAJK+F,CAAAA,CAIL,EAAK/F,CAAAA,CAAL,CACI,MAAO,CAAA,CAGX;GAAKmH,CAAAA,CAAL,EAAaA,CAAb,CAAoBnH,CAApB,EAAqC,CAArC,CAA8BmH,CAA9B,CACIA,CAAA,CAAO,CAGX,IAAKC,CAAAA,CAAL,EAAWA,CAAX,CAAgBpH,CAAhB,CACIoH,CAAA,CAAKpH,CAKTgB,EAAAsG,WAAA,CACItG,CAAA,CAAGuG,CAHIF,CAGJE,EAHgB,QAGhBA,aAAA,EAAH,CADJ,CAEIJ,CAFJ,CAEWlB,CAFX,EAGKmB,CAHL,CAGUD,CAHV,EAGkBlB,CAHlB,CAMA,OAAO,CAAA,CA3ByB,CAqD7B,CAMHuB,SAhBJA,QAAiB,CAACC,CAAD,CAAO,CAEpBtB,CAAA,CAAY,EAGZD,EAAA,CAAe,IAAIY,YAAJ,CAJP,CAIO,CAJfW,CAIe,CALK,CAUjB,CAOHC,KA9BJA,QAAa,CAACC,CAAD,CAAIC,CAAJ,CAAOC,CAAP,CAAUC,CAAV,CAAa,CAClB5B,CAAJ,GACIA,CAAA,CAAa,EAAEC,CAAf,CAGA,CAH2BwB,CAG3B,CAFAzB,CAAA,CAAa,EAAEC,CAAf,CAEA,CAF2ByB,CAE3B,CADA1B,CAAA,CAAa,EAAEC,CAAf,CACA,CAD2B0B,CAC3B,CAAA3B,CAAA,CAAa,EAAEC,CAAf,CAAA,CAA2B2B,CAJ/B,CADsB,CAuBnB,CA/HsD,CAgJjEC,QAASA,GAAU,CAACC,CAAD,CAAqB,CAyDpCC,QAASA,EAAgB,CAAC7H,CAAD,CAAS,CAAA,IAC1B8H,CAD0B,CAE1BC,CAGJ,OAAIrH,EAAA,CAAiBV,CAAjB,CAAJ,EACI8H,CAYOE,CAZK,CAAEC,CAAAjI,CAAAG,QAAA8H,SAYPD,CAXPD,CAWOC,CAXChI,CAAA+H,MAWDC,EAXiBhI,CAAAG,QAAA4H,MAWjBC,EAXyChI,CAAAE,eAWzC8H,CAVPA,CAUOA,CAVHpI,CAACkI,CAAA,CAAY9H,CAAAI,KAAZ,CAA2B2H,CAA3B,EAAoC/H,CAAAG,QAAAC,KAArCR,QAUGoI,CARa,SAApB,GAAIhI,CAAAe,KAAJ,CACIiH,CADJ,EACS,EADT,CAE2B,SAApB,GAAIhI,CAAAe,KAAJ,CACHiH,CADG,EACE,CADF,CAEIE,CAAA,CAAMlI,CAAAe,KAAN,CAFJ,GAGHiH,CAHG,EAGE,CAHF,CAMAA,CAAAA,CAbX,EAgBO,CArBuB,CA0ElCG,QAASA,EAAK,EAAG,CACbvH,CAAAuH,MAAA,CAASvH,CAAAwH,iBAAT,CAA+BxH,CAAAyH,iBAA/B,CADa,CAnImB;AAoJpCC,QAASA,EAAc,CAACtI,CAAD,CAASuI,CAAT,CAAe,CAqDlCC,QAASA,EAAS,CAAC3D,CAAD,CAAQ,CAClBA,CAAJ,GACI0D,CAAAE,UAAAnB,KAAA,CAAoBzC,CAAA,CAAM,CAAN,CAApB,CAGA,CAFA0D,CAAAE,UAAAnB,KAAA,CAAoBzC,CAAA,CAAM,CAAN,CAApB,CAEA,CADA0D,CAAAE,UAAAnB,KAAA,CAAoBzC,CAAA,CAAM,CAAN,CAApB,CACA,CAAA0D,CAAAE,UAAAnB,KAAA,CAAoBzC,CAAA,CAAM,CAAN,CAApB,CAJJ,CADsB,CAU1B6D,QAASA,EAAO,CAACnB,CAAD,CAAIC,CAAJ,CAAOmB,CAAP,CAAsBC,CAAtB,CAAiC/D,CAAjC,CAAwC,CACpD2D,CAAA,CAAU3D,CAAV,CACIgE,EAAAC,gBAAJ,CACIC,CAAAzB,KAAA,CAAaC,CAAb,CAAgBC,CAAhB,CAAmBmB,CAAA,CAAgB,CAAhB,CAAoB,CAAvC,CAA0CC,CAA1C,EAAuD,CAAvD,CADJ,EAGIxI,CAAAkH,KAAA,CAAUC,CAAV,CAGA,CAFAnH,CAAAkH,KAAA,CAAUE,CAAV,CAEA,CADApH,CAAAkH,KAAA,CAAUqB,CAAA,CAAgB,CAAhB,CAAoB,CAA9B,CACA,CAAAvI,CAAAkH,KAAA,CAAUsB,CAAV,EAAuB,CAAvB,CANJ,CAFoD,CAaxDI,QAASA,EAAQ,CAACzB,CAAD,CAAIC,CAAJ,CAAOyB,CAAP,CAAUC,CAAV,CAAarE,CAAb,CAAoB,CACjC2D,CAAA,CAAU3D,CAAV,CACA6D,EAAA,CAAQnB,CAAR,CAAY0B,CAAZ,CAAezB,CAAf,CACAgB,EAAA,CAAU3D,CAAV,CACA6D,EAAA,CAAQnB,CAAR,CAAWC,CAAX,CACAgB,EAAA,CAAU3D,CAAV,CACA6D,EAAA,CAAQnB,CAAR,CAAWC,CAAX,CAAe0B,CAAf,CAEAV,EAAA,CAAU3D,CAAV,CACA6D,EAAA,CAAQnB,CAAR,CAAWC,CAAX,CAAe0B,CAAf,CACAV,EAAA,CAAU3D,CAAV,CACA6D,EAAA,CAAQnB,CAAR,CAAY0B,CAAZ,CAAezB,CAAf,CAAmB0B,CAAnB,CACAV,EAAA,CAAU3D,CAAV,CACA6D,EAAA,CAAQnB,CAAR,CAAY0B,CAAZ,CAAezB,CAAf,CAbiC,CAuTrC2B,QAASA,EAAmB,CAACC,CAAD,CAAQ,CAC3BP,CAAAQ,mBAAL,GACId,CAAAe,gBAEA,CAFuB,CAAA,CAEvB,CADAF,CAAA7B,EACA,CADUgC,CAAAC,SAAA,CAAeJ,CAAA7B,EAAf,CAAwB,CAAA,CAAxB,CACV,CAAA6B,CAAA5B,EAAA,CAAUiC,CAAAD,SAAA,CAAeJ,CAAA5B,EAAf,CAAwB,CAAA,CAAxB,CAHd,CASAkB,EAAA,CACIU,CAAA7B,EADJ,CAEI6B,CAAA5B,EAFJ,CAGI,CAHJ,CAII,CAJJ,CAVgC,CAnYF,IAC9BkC,EAAU1J,CAAA2J,cAAVD,EACmC,UADnCA;AACA1J,CAAA2J,cAAAC,KAAA,CAA0B,GAA1B,CAF8B,CAG9B9J,EAAQE,CAAAF,MAHsB,CAI9BK,EAAUH,CAAAG,QAJoB,CAK9B2H,EAAY,CAAEG,CAAA9H,CAAA8H,SALgB,CAM9B4B,EAAU1J,CAAAC,KANoB,CAO9B0J,EAAY9J,CAAAuJ,MAAAQ,YAAA,EAPkB,CAQ9BC,EAAOF,CAAAlG,IARuB,CAS9BqG,EAAOH,CAAAjG,IATuB,CAU9BqG,EAAYlK,CAAAyJ,MAAAM,YAAA,EAVkB,CAW9BI,EAAOD,CAAAtG,IAXuB,CAY9BwG,EAAOF,CAAArG,IAZuB,CAa9BkE,EAAQ/H,CAAA+H,MAARA,EAAwB5H,CAAA4H,MAAxBA,EAAyC/H,CAAAE,eAbX,CAc9BmK,EAAQrK,CAAAqK,MAARA,EAAwBlK,CAAAkK,MAAxBA,EAAyCrK,CAAAsK,eAdX,CAe9BC,EAAQvK,CAAAuK,MAARA,EAAwBpK,CAAAoK,MAAxBA,EAAyCvK,CAAAwK,eAfX,CAgB9Bf,EAAQzJ,CAAAyJ,MAhBsB,CAiB9BF,EAAQvJ,CAAAuJ,MAjBsB,CAkB9BkB,EAAS,CAAC1C,CAAV0C,EAAoC,CAApCA,GAAmB1C,CAAAnI,OAlBW,CA+B9BS,EAASL,CAAAK,OAATA,EAA0B,CAAA,CA/BI,CAgC9BqK,EAAQ,CAAA,CAhCsB,CAiC9BC,CAjC8B,CAkC9B9F,CAlC8B,CAmC9B+F,CAnC8B,CAoC9BC,EAAQ/C,CAAA,CAAY9H,CAAAI,KAAZ,CAA2B2H,CAA3B,EAAoC8B,CApCd,CAqC9BiB,EAAc,CACVvD,EAAG/H,MAAAuL,UADO,CAEVvD,EAAG,CAFO,CArCgB,CAyC9BwD,EAAe,CACXzD,EAAG/H,MAAAuL,UADQ,CAEXvD,EAAG,CAFQ,CAKfrH,EAAA8K,UAAJ,EAAoD,CAApD,CAAyB9K,CAAA8K,UAAArL,OAAzB,GAIAI,CAAAkL,oBA2CA,CA3C6B1L,MAAAC,UA2C7B,CAAIY,CAAJ,EAA8B,CAA9B,CAAcA,CAAAT,OAAd,EAII2I,CAAAe,gBAkBA;AAlBuB,CAAA,CAkBvB,CAhBAf,CAAAtB,SAgBA,CAhBgB,WAgBhB,CAbI5G,CAAA,CAAO,CAAP,CAAA8K,KAaJ,EAbsB9K,CAAA,CAAO,CAAP,CAAA8K,KAAAC,aAatB,EAZI/K,CAAAgL,KAAA,CAAY,QAAQ,CAAC5D,CAAD,CAAIC,CAAJ,CAAO,CACvB,GAAID,CAAA0D,KAAJ,CAAY,CACR,GAAI1D,CAAA0D,KAAAC,aAAJ,CAA0B1D,CAAAyD,KAAAC,aAA1B,CACI,MAAO,EACJ,IAAI3D,CAAA0D,KAAAC,aAAJ,CAA0B1D,CAAAyD,KAAAC,aAA1B,CACH,MAAQ,EAJJ,CAOZ,MAAO,EARgB,CAA3B,CAYJ,CAAA1L,CAAA,CAAKW,CAAL,CAAa,QAAQ,CAAC+I,CAAD,CAAQ,CAAA,IACrBkC,EAAQlC,CAAAkC,MADa,CAIrBC,CAEUC,KAAAA,EAAd,GAAIF,CAAJ,EAA4BG,KAAA,CAAMH,CAAN,CAA5B,EAAwD,IAAxD,GAA4ClC,CAAA5B,EAA5C,GACIkE,CA4CA,CA5CYtC,CAAAsC,UA4CZ,CAzCAH,CAyCA,CAzCYnC,CAAApJ,OAAA2L,aAAA,CAA0BvC,CAA1B,CAyCZ,CAvCAwC,CAuCA,CAvCSL,CAAA,CAAU,cAAV,CAuCT,EAvCsC,CAuCtC,CApCA1G,CAoCA,CApCQ9F,CAAA8F,MAAA,CAAQ0G,CAAAM,KAAR,CAAAC,KAoCR,CAnCAjH,CAAA,CAAM,CAAN,CAmCA,EAnCY,GAmCZ,CAlCAA,CAAA,CAAM,CAAN,CAkCA,EAlCY,GAkCZ,CAjCAA,CAAA,CAAM,CAAN,CAiCA,EAjCY,GAiCZ,CAtBoB,SAsBpB,GAtBI7E,CAAAe,KAsBJ,GArBI6K,CAeA,CAfSA,CAeT,EAfmB,CAenB,CAdAhB,CAcA,CAdS7L,CAAA8F,MAAA,CAAQ0G,CAAAQ,OAAR,CAAAD,KAcT,CAZAlB,CAAA,CAAO,CAAP,CAYA,EAZa,GAYb,CAXAA,CAAA,CAAO,CAAP,CAWA,EAXa,GAWb,CAVAA,CAAA,CAAO,CAAP,CAUA,EAVa,GAUb,CARA5B,CAAA,CACI0C,CAAAnE,EADJ,CAEImE,CAAAlE,EAFJ,CAGIkE,CAAAM,MAHJ,CAIIN,CAAAO,OAJJ;AAKIrB,CALJ,CAQA,CAAAgB,CAAA,EAAU,CAMd,EAAA5C,CAAA,CACI0C,CAAAnE,EADJ,CACkBqE,CADlB,CAEIF,CAAAlE,EAFJ,CAEkBoE,CAFlB,CAGIF,CAAAM,MAHJ,CAGgC,CAHhC,CAGuBJ,CAHvB,CAIIF,CAAAO,OAJJ,CAIiC,CAJjC,CAIwBL,CAJxB,CAKI/G,CALJ,CA7CJ,CANyB,CAA7B,CAtBJ,GA6FAnF,CAAA,CAAKmL,CAAL,CAAY,QAAQ,CAACqB,CAAD,CAAIjM,CAAJ,CAAO,CAAA,IACnBsH,CADmB,CAEnBC,CAFmB,CAGnB2E,CAHmB,CAInBC,EAAK,CAAA,CAJc,CAKnBC,EAAK,CAAA,CALc,CASnBC,EAAa,CAAA,CATM,CAUnBC,EAAa,CAAA,CAVM,CAYnBC,GAAYtE,CAAA,CAAMlI,CAAAe,KAAN,CAZO,CAanB0L,EAAY,CAAA,CAbO,CAcnBC,EAAY,CAAA,CAEhB,IAR4C,WAQ5C,GARqB,MAAO5M,EAAA6M,MAQ5B,CACI,MAAO,CAAA,CAePlC,EAAJ,EACIlD,CAWA,CAXI2E,CAAA,CAAE,CAAF,CAWJ,CAVA1E,CAUA,CAVI0E,CAAA,CAAE,CAAF,CAUJ,CARIrB,CAAA,CAAM5K,CAAN,CAAU,CAAV,CAQJ,GAPIoM,CAOJ,CAPSxB,CAAA,CAAM5K,CAAN,CAAU,CAAV,CAAA,CAAa,CAAb,CAOT,EAJI4K,CAAA,CAAM5K,CAAN,CAAU,CAAV,CAIJ,GAHImM,CAGJ,CAHSvB,CAAA,CAAM5K,CAAN,CAAU,CAAV,CAAA,CAAa,CAAb,CAGT,EAAgB,CAAhB,EAAIiM,CAAAtM,OAAJ,GACIuM,CAMA,CANID,CAAA,CAAE,CAAF,CAMJ,CAJIA,CAAA,CAAE,CAAF,CAIJ,CAJW3D,CAAA7E,KAIX,GAHI6E,CAAA7E,KAGJ,CAHgBwI,CAAA,CAAE,CAAF,CAGhB,EAAIA,CAAA,CAAE,CAAF,CAAJ,CAAW3D,CAAA9E,KAAX,GACI8E,CAAA9E,KADJ,CACgByI,CAAA,CAAE,CAAF,CADhB,CAPJ,CAZJ,GAyBI3E,CAWA,CAXI2E,CAWJ,CAVA1E,CAUA,CAVI6C,CAAA,CAAMpK,CAAN,CAUJ,CARI4K,CAAA,CAAM5K,CAAN,CAAU,CAAV,CAQJ,GAPIoM,CAOJ,CAPSxB,CAAA,CAAM5K,CAAN,CAAU,CAAV,CAOT,EAJI4K,CAAA,CAAM5K,CAAN,CAAU,CAAV,CAIJ,GAHImM,CAGJ,CAHSvB,CAAA,CAAM5K,CAAN,CAAU,CAAV,CAGT,EAAIsK,CAAJ,EAAaA,CAAA3K,OAAb,GACIuM,CAMA,CANI5B,CAAA,CAAMtK,CAAN,CAMJ,CAJIsK,CAAA,CAAMtK,CAAN,CAIJ,CAJesI,CAAA7E,KAIf,GAHI6E,CAAA7E,KAGJ,CAHgB6G,CAAA,CAAMtK,CAAN,CAGhB,EAAIsK,CAAA,CAAMtK,CAAN,CAAJ,CAAesI,CAAA9E,KAAf,GACI8E,CAAA9E,KADJ,CACgB8G,CAAA,CAAMtK,CAAN,CADhB,CAPJ,CApCJ,CAiDIoM,EAAJ,EAAUA,CAAV,EAAgBrC,CAAhB,EAAwBqC,CAAxB,EAA8BpC,CAA9B,GACIqC,CADJ,CACiB,CAAA,CADjB,CAIIF,EAAJ,EAAUA,CAAV,EAAgBpC,CAAhB,EAAwBoC,CAAxB,EAA8BnC,CAA9B,GACIsC,CADJ,CACiB,CAAA,CADjB,CAII7C,EAAJ,EACQe,CAKJ,GAJIjD,CAIJ,CAJQ0E,CAAA9M,MAAA,CAAQ,CAAR,CAAW,CAAX,CAIR,EAAAoI,CAAA;AAAIA,CAAA,CAAE,CAAF,CANR,EAQWM,CARX,GASIP,CACA,CADI2E,CAAA3E,EACJ,CAAAC,CAAA,CAAI0E,CAAAU,OAVR,CAcK5M,EAAA6M,eAAL,GACIH,CADJ,CACgBlF,CADhB,EACqB2C,CADrB,EAC6B3C,CAD7B,EACkC4C,CADlC,CAII7C,EAAJ,CAAQ0C,CAAR,EAAgBe,CAAAzD,EAAhB,CAAiC0C,CAAjC,GACIe,CAAAzD,EACA,CADiBA,CACjB,CAAAyD,CAAAxD,EAAA,CAAiBA,CAFrB,CAKID,EAAJ,CAAQyC,CAAR,EAAgBc,CAAAvD,EAAhB,CAAgCyC,CAAhC,GACIc,CAAAvD,EACA,CADgBA,CAChB,CAAAuD,CAAAtD,EAAA,CAAgBA,CAFpB,CAKA,IAAU,CAAV,GAAIA,CAAJ,EAAiBA,CAAjB,EAAuBkF,CAAvB,CAQA,GAJInF,CAIA,EAJKyC,CAIL,EAJazC,CAIb,EAJkB0C,CAIlB,GAHAwC,CAGA,CAHY,CAAA,CAGZ,EAACA,CAAD,EAAeH,CAAf,EAA8BC,CAAlC,CAKK1D,CAAAQ,mBAkEL,GAjEId,CAAAe,gBAEA,CAFuB,CAAA,CAEvB,CADA/B,CACA,CADIgC,CAAAC,SAAA,CAAejC,CAAf,CAAkB,CAAA,CAAlB,CACJ,CAAAC,CAAA,CAAIiC,CAAAD,SAAA,CAAehC,CAAf,CAAkB,CAAA,CAAlB,CA+DR,EA5DIgF,EA4DJ,GAzDI7B,CAYA,CAZS,CAYT,CAVQ,CAUR,CAVInD,CAUJ,GATImD,CACA,CADSnD,CACT,CAAAA,CAAA,CAAI,CAQR,EALKqB,CAAAQ,mBAKL,GAJIsB,CAIJ,CAJalB,CAAAD,SAAA,CAAemB,CAAf,CAAuB,CAAA,CAAvB,CAIb,EAAAjC,CAAA,CAAQnB,CAAR,CAAWoD,CAAX,CAAmB,CAAnB,CAAsB,CAAtB,CA5ISmC,CAAAA,CA4IT,CA6CJ,EAvCIvE,CAAAwE,WAuCJ,EA1BkB,CAAA,CA0BlB,GA1BQrC,CA0BR,GAzBQ1K,CAAAkL,oBAyBR,CAzBqCvH,IAAAC,IAAA,CACzB5D,CAAAkL,oBADyB,CAEzBvH,IAAAqJ,IAAA,CAASzF,CAAT,CAAamD,CAAb,CAFyB,CAyBrC,EAlBAhC,CAAA,CACInB,CADJ,CAEIC,CAFJ,CAGI,CAHJ,CAIoB,QAAhB,GAAAxH,CAAAe,KAAA,CAA4BoL,CAA5B,EAAiC,CAAjC,CAAsC,CAJ1C,CAvKaW,CAAAA,CAuKb,CAkBA,CAAApC,CAAA,CAAQnD,CApMe,CAA3B,CA2NA,CAAKmD,CAAL,GAEIvB,CAAA,CAAoB2B,CAApB,CACA,CAAA3B,CAAA,CAAoB6B,CAApB,CAHJ,CAxTA,CA/CA,CA9CkC,CAmdtCiC,QAASA,EAAK,EAAG,CACbjN,CAAA,CAAS,EACTnB,EAAAuB,KAAA,CAAeA,CAAf;AAAsB,EACtB8M,EAAA,CAAa,EAHA,CAUjBC,QAASA,EAAQ,CAACC,CAAD,CAAO,CACfpM,CAAL,GAIAA,CAAA+B,WAAA,CAAkB,YAAlB,CAAgCqK,CAAAC,OAAhC,CAMA,CALArM,CAAA+B,WAAA,CAAkB,UAAlB,CAA8BqK,CAAAxJ,IAA9B,CAKA,CAJA5C,CAAA+B,WAAA,CAAkB,aAAlB,CAAiCqK,CAAAE,gBAAjC,CAIA,CAHAtM,CAAA+B,WAAA,CAAkB,iBAAlB,CAAqCqK,CAAAG,WAArC,CAGA,CAFAvM,CAAA+B,WAAA,CAAkB,UAAlB,CAA8BqK,CAAAI,IAA9B,CAEA,CADAxM,CAAA+B,WAAA,CAAkB,UAAlB,CAA8BqK,CAAAK,IAA9B,CACA,CAAAzM,CAAA+B,WAAA,CAAkB,eAAlB,CAAmC,CAACqK,CAAAM,MAApC,CAVA,CADoB,CAkBxBC,QAASA,EAAQ,CAACP,CAAD,CAAO,CACfpM,CAAL,GAIAA,CAAA+B,WAAA,CAAkB,YAAlB,CAAgCqK,CAAAC,OAAhC,CAMA,CALArM,CAAA+B,WAAA,CAAkB,UAAlB,CAA8BqK,CAAAxJ,IAA9B,CAKA,CAJA5C,CAAA+B,WAAA,CAAkB,aAAlB,CAAiCqK,CAAAE,gBAAjC,CAIA,CAHAtM,CAAA+B,WAAA,CAAkB,iBAAlB,CAAqCqK,CAAAG,WAArC,CAGA,CAFAvM,CAAA+B,WAAA,CAAkB,UAAlB,CAA8BqK,CAAAI,IAA9B,CAEA,CADAxM,CAAA+B,WAAA,CAAkB,UAAlB;AAA8BqK,CAAAK,IAA9B,CACA,CAAAzM,CAAA+B,WAAA,CAAkB,eAAlB,CAAmC,CAACqK,CAAAM,MAApC,CAVA,CADoB,CAmBxBE,QAASA,EAAY,CAACC,CAAD,CAAMC,CAAN,CAAmB,CACpC9M,CAAA+B,WAAA,CAAkB,cAAlB,CAAkC8K,CAAlC,CACA7M,EAAA+B,WAAA,CAAkB,qBAAlB,CAAyC+K,CAAzC,CAFoC,CASxChH,QAASA,EAAM,CAAChH,CAAD,CAAQ,CAEnB,GAAIA,CAAJ,CAKIkM,CACA,CADQlM,CAAAiO,WACR,EAD4B,GAC5B,CAAA9B,CAAA,CAASnM,CAAAkO,YAAT,EAA8B,GANlC,KAQI,OAAO,CAAA,CAGX,IAAKpN,CAAAA,CAAL,EAAYoL,CAAAA,CAAZ,EAAsBC,CAAAA,CAAtB,CACI,MAAO,CAAA,CAGPpD,EAAAoF,cAAJ,EACIC,OAAAC,KAAA,CAAa,cAAb,CAGJnN,EAAAqD,KAAA,EAEAzD,EAAAwN,SAAA,CAAY,CAAZ,CAAe,CAAf,CAAkBpC,CAAlB,CAAyBC,CAAzB,CACAjL,EAAAyD,WAAA,CA9jBO,CACH,CADG,CA8jBuBuH,CA9jBvB,CACQ,CADR,CACW,CADX,CACc,CADd,CAEH,CAFG,CAEA,EAAE,CAAF,CA4jB8BC,CA5jB9B,CAFA,CAEe,CAFf,CAEkB,CAFlB,CAGH,CAHG,CAGA,CAHA,CAGG,EAHH,CAGsB,CAHtB,CAG0B,EAH1B,CAG6B,CAH7B,CAGgC,EAHhC,CAG8D,CAH9D,CA8jBP,CAEyB,EAAzB,CAAIpD,CAAAwF,UAAJ,EAA+BC,CAAAvP,CAAAuP,KAA/B,EACI1N,CAAAyN,UAAA,CAAaxF,CAAAwF,UAAb,CAGJtF,EAAA5C,MAAA,CAActH,CAAAuB,KAAd,CAA4B,iBAA5B,CAA+C,CAA/C,CACA2I,EAAA1E,KAAA,EAEIkK,EAAJ,GACI3N,CAAA4N,YAAA,CAAe5N,CAAA6N,WAAf,CAA8BC,CAA9B,CACA,CAAA1N,CAAAmE,WAAA,CAAkBuJ,CAAlB,CAFJ,CAKA1N;CAAAsE,YAAA,CAAmBxF,CAAAK,QAAAL,MAAA,CAAsBA,CAAAK,QAAAL,MAAA6O,SAAtB,CAAqD,CAAA,CAAxE,CAGAjP,EAAA,CAAKM,CAAL,CAAa,QAAQ,CAACgI,CAAD,CAAI4G,CAAJ,CAAQ,CAAA,IACrBzO,EAAU6H,CAAAhI,OAAAG,QADW,CAErB0O,EAAY1O,CAAA0O,UAFS,CAGrBC,EAAeC,CAAA,CAASF,CAAT,CAHM,CAKrBG,EADUhH,CAAAhI,OAAAyJ,MAAAwF,aAAAC,CAA4BL,CAA5BK,CAJW,CAOrBC,EAAc5O,CAAA,CACVJ,CAAAiP,OAAA,CAAiBjP,CAAAiP,OAAAC,QAAjB,CAA0C,IADhC,CAEVrH,CAAAhI,OAAAuJ,MAAA+F,SAAA,CAA0B,CAAA,CAA1B,CAAiC,IAFvB,CAGVtH,CAAAhI,OAAAkL,oBAHU,CAIV,CAJU,GAKN/K,CAAAiP,OAAA,CACAjP,CAAAiP,OAAAG,OADA,CAEA,EAPM,GAQL,EARK,EAPO,CAiBrBC,EAAYxH,CAAAhI,OAAAyP,YAAA,CACZC,CAAA,IAAIC,CAAJ,CAAU3H,CAAAhI,OAAA6E,MAAV,CAAA6K,YAAA,CACInP,CAAA,CAAKJ,CAAAsP,YAAL,CAA0B,GAA1B,CADJ,CAAAG,IAAA,EADY,CAIZ5H,CAAAhI,OAAA6E,MAGJkE,EAAA1E,KAAA,EAEIlE,EAAA0P,aAAJ,GACIL,CADJ,CACgBxH,CAAAhI,OAAAF,MAAAK,QAAA2P,OAAA,CAA8BlB,CAA9B,CADhB,CAIA/J,EAAA,CAAQ9F,CAAA8F,MAAA,CAAQ2K,CAAR,CAAA1D,KAEHjD,EAAAkH,SAAL,GACIlL,CAAA,CAAM,CAAN,CADJ,CACe,CADf,CAK8B,MAA9B,GAAI1E,CAAA6P,cAAJ;CACIpP,CAAAqP,UAAA,CAAarP,CAAAsP,UAAb,CAA2BtP,CAAAuP,IAA3B,CACA,CAAAvP,CAAAwP,cAAA,CAAiBxP,CAAAyP,SAAjB,CAFJ,EAIqC,MAA9B,GAAIlQ,CAAA6P,cAAJ,CACHpP,CAAAqP,UAAA,CAAarP,CAAA0P,UAAb,CAA2B1P,CAAA2P,KAA3B,CADG,CAG8B,QAA9B,GAAIpQ,CAAA6P,cAAJ,EACHpP,CAAAqP,UAAA,CAAarP,CAAAuP,IAAb,CAAqBvP,CAAAuP,IAArB,CACA,CAAAvP,CAAAwP,cAAA,CAAiBxP,CAAA4P,SAAjB,CAFG,EAOH5P,CAAA6P,kBAAA,CAAqB7P,CAAAsP,UAArB,CAAmCtP,CAAA8P,oBAAnC,CAA2D9P,CAAAuP,IAA3D,CAAmEvP,CAAA8P,oBAAnE,CAGJ1P,EAAAqE,MAAA,EAGyB,EAAzB,CAAI2C,CAAAS,UAAA7I,OAAJ,GACIoB,CAAA+B,WAAA,CAAkB,UAAlB,CAA8B,CAA9B,CAGA,CAFA4N,CAEA,CAFUlL,CAAA,CAAe7E,CAAf,CAAmBI,CAAnB,CAEV,CADA2P,CAAAxK,MAAA,CAAc6B,CAAAS,UAAd,CAA2B,QAA3B,CAAqC,CAArC,CACA,CAAAkI,CAAAtM,KAAA,EAJJ,CAQArD,EAAA4D,SAAA,CAAgBC,CAAhB,CACAsI,EAAA,CAASnF,CAAAhI,OAAAuJ,MAAT,CACAoE,EAAA,CAAS3F,CAAAhI,OAAAyJ,MAAT,CACAmE,EAAA,CAAakB,CAAb,CAA2BE,CAA3B,CAEmB,SAAnB,GAAIhH,CAAAf,SAAJ,GACQ9G,CAAAiP,OAAJ,EAAsBjP,CAAAiP,OAAAG,OAAtB;AACIvO,CAAA+D,aAAA,CAA4C,CAA5C,CAAoB5E,CAAAiP,OAAAG,OAApB,CADJ,CAGIvO,CAAA+D,aAAA,CAAoB,CAApB,CAJR,CAUA/D,EAAAiE,mBAAA,CAA0B+C,CAAAsB,gBAA1B,CAEsB,SAAtB,GAAItB,CAAAhI,OAAAe,KAAJ,EACIC,CAAAqC,kBAAA,CAAyB2E,CAAAhI,OAAzB,CAAmCgI,CAAAvE,KAAnC,CAA2CuE,CAAAtE,KAA3C,CAGJ1C,EAAAoE,gBAAA,CAAwBwL,EAAA,CAAS5I,CAAAhI,OAAAe,KAAT,CAAxB,EAAmDwN,CAAnD,EAAsE,CAAA,CAAtE,CAGAxF,EAAAjC,OAAA,CAAekB,CAAAjB,KAAf,CAAuBiB,CAAAhB,GAAvB,CAA6BgB,CAAAf,SAA7B,CAEIe,EAAA+E,WAAJ,EAAoBoC,CAApB,GACQhP,CAAAiP,OAAJ,EAAsBjP,CAAAiP,OAAAG,OAAtB,CACIvO,CAAA+D,aAAA,CAA4C,CAA5C,CAAoB5E,CAAAiP,OAAAG,OAApB,CADJ,CAGIvO,CAAA+D,aAAA,CAAoB,EAApB,CAGJ,CADA/D,CAAAoE,gBAAA,CAAuB,CAAA,CAAvB,CACA,CAAA2D,CAAAjC,OAAA,CAAekB,CAAAjB,KAAf,CAAuBiB,CAAAhB,GAAvB,CAA6B,QAA7B,CAPJ,CA3FyB,CAA7B,CAsGA+B,EAAAxD,QAAA,EAEIsD,EAAAoF,cAAJ,EACIC,OAAA2C,QAAA,CAAgB,cAAhB,CAGJ5D,EAAA,EAEIrF,EAAJ,EACIA,CAAA,EAxJe,CA+JvBkJ,QAASA,EAAe,CAAChR,CAAD,CAAQ,CAC5BqI,CAAA,EAEA,IAAIrI,CAAAiR,SAAAC,UAAJ,CACI,MAAOlK,EAAA,CAAOhH,CAAP,CAGPmR;CAAJ,CACInK,CAAA,CAAOhH,CAAP,CADJ,CAGIoR,UAAA,CAAW,QAAQ,EAAG,CAClBJ,CAAA,CAAgBhR,CAAhB,CADkB,CAAtB,CAEG,CAFH,CAVwB,CA9zBI,IAEhCkB,EAAS,CAAA,CAFuB,CAIhC+H,EAAU,CAAA,CAJsB,CAMhCnI,EAAK,CAAA,CAN2B,CAQhCoL,EAAQ,CARwB,CAUhCC,EAAS,CAVuB,CAYhC7L,EAAO,CAAA,CAZyB,CAchC8M,EAAa,CAAA,CAdmB,CAgBhCqB,EAAiB,CAAA,CAhBe,CAkBhC1P,EAAU,EAlBsB,CAoBhCoS,EAAW,CAAA,CApBqB,CAsBhCjR,EAAS,EAtBuB,CAwBhCmR,EAAgBC,CAAAC,cAAA,CAAkB,QAAlB,CAxBgB,CA0BhCC,EAAYH,CAAAI,WAAA,CAAyB,IAAzB,CA1BoB,CA4BhC7C,CA5BgC,CA8BhCxG,EAAQ,CACJ,OAAU,CAAA,CADN,CAEJ,KAAQ,CAAA,CAFJ,CA9BwB,CAkChC0I,GAAW,CACP,QAAW,CAAA,CADJ,CAEP,OAAU,CAAA,CAFH,CAlCqB,CAuChC/H,EAAW,CACPD,UAAW,CADJ,CAEPyF,UAAW,CAFJ,CAGPmB,UAAW,SAHJ,CAIPO,SAAU,CAAA,CAJH,CAKPjH,gBAAiB,CAAA,CALV,CAMPO,mBAAoB,CAAA,CANb,CAOP4E,cAAe,CAAA,CAPR,CAQPuD,qBAAsB,CAAA,CARf,CASPC,UAAW,CAAA,CATJ,CAu8Bf,OArBA5S,EAqBA,CArBU,CACN6S,8BAx3BJA,QAAsC,CAAC1R,CAAD,CAAS,CAC3C,IAAIgI,EAAI,CAEHa,EAAAC,gBAAL,GAIIpI,CAAA,CAAiBV,CAAjB,CAIJ,GAHIgI,CAGJ,CAHQH,CAAA,CAAiB7H,CAAjB,CAGR,EAAA+I,CAAA3B,SAAA,CAAiBY,CAAjB,CARA,CAH2C,CAu3BrC,CAEN2J,WAtaJA,QAAmB,CAAC3J,CAAD,CAAI,CACC,CAApB,CAAIhI,CAAAJ,OAAJ,GACII,CAAA,CAAOA,CAAAJ,OAAP;AAAuB,CAAvB,CAAAoH,GACA,CAD+B5G,CAAAR,OAC/B,CAAII,CAAA,CAAOA,CAAAJ,OAAP,CAAuB,CAAvB,CAAAmN,WAAJ,GACI/M,CAAA,CAAOA,CAAAJ,OAAP,CAAuB,CAAvB,CAAAgS,SADJ,CACyC1E,CAAAtN,OADzC,CAFJ,CAOIiJ,EAAA2I,qBAAJ,EACItD,OAAAC,KAAA,CAAa,WAAb,CAA2BnG,CAAAjH,KAA3B,CAAoC,SAApC,CAGJf,EAAAsH,KAAA,CAAY,CACRP,KAAM3G,CAAAR,OADE,CAERiS,WAAY3E,CAAAtN,OAFJ,CAMR6I,UAAW,EANH,CAORzI,OAAQgI,CAPA,CAQRvE,KAAMjE,MAAAC,UARE,CASRiE,KAAM,CAAClE,MAAAC,UATC,CAURsN,WAAY/E,CAAA7H,QAAAiP,OAAA,CAAgD,CAAA,CAAhD,GAAmBpH,CAAA7H,QAAAiP,OAAAC,QAAnB,CAAwD,CAAA,CAV5D,CAWRyC,aAAc,CAAA,CAXN,CAYR7K,SAAW,CACP,KAAQ,OADD,CAEP,UAAa,OAFN,CAGP,WAAc,YAHP,CAIP,OAAU,OAJH,CAKP,KAAQ,YALD,CAMP,QAAW,QANJ,CAOP,QAAW,WAPJ,CAQP,QAAW,WARJ,CASP,OAAU,QATH,CAAD,CAUPe,CAAAjH,KAVO,CAAVkG;AAUc,YAtBN,CAAZ,CA0BAqB,EAAA,CAAeN,CAAf,CAAkBhI,CAAA,CAAOA,CAAAJ,OAAP,CAAuB,CAAvB,CAAlB,CAEIiJ,EAAA2I,qBAAJ,EACItD,OAAA2C,QAAA,CAAgB,WAAhB,CAA8B7I,CAAAjH,KAA9B,CAAuC,SAAvC,CAzCe,CAoab,CAGNgR,QAxIJA,QAAgB,CAAC9I,CAAD,CAAIC,CAAJ,CAAO,CAEnB,GAAI8C,CAAJ,GAAc/C,CAAd,EAAmBC,CAAnB,GAAyBA,CAAzB,CAIA8C,CAIA,CAJQ/C,CAIR,CAHAgD,CAGA,CAHS/C,CAGT,CADAlI,CAAAqD,KAAA,EACA,CAAArD,CAAAyD,WAAA,CAruBO,CACH,CADG,CAquBuBuH,CAruBvB,CACQ,CADR,CACW,CADX,CACc,CADd,CAEH,CAFG,CAEA,EAAE,CAAF,CAmuB8BC,CAnuB9B,CAFA,CAEe,CAFf,CAEkB,CAFlB,CAGH,CAHG,CAGA,CAHA,CAGG,EAHH,CAGsB,CAHtB,CAG0B,EAH1B,CAG6B,CAH7B,CAGgC,EAHhC,CAG8D,CAH9D,CAquBP,CAVmB,CAqIb,CAIN+F,OAjBJA,QAAe,EAAG,CACd,MAAOf,EADO,CAaR,CAKNrD,aAAcA,CALR,CAMNqE,KA1HJA,QAAa,CAACC,CAAD,CAASC,CAAT,CAAkB,CAAA,IACvBlS,EAAI,CADmB,CAEvBmS,EAAW,CACP,OADO,CAEP,oBAFO,CAGP,WAHO,CAIP,WAJO,CAOfnB,EAAA,CAAW,CAAA,CAEX,IAAKiB,CAAAA,CAAL,CACI,MAAO,CAAA,CAOX,KAJIrJ,CAAA4I,UAIJ,EAHIvD,OAAAC,KAAA,CAAa,UAAb,CAGJ,CAAOlO,CAAP,CAAWmS,CAAAxS,OAAX,EACIgB,EAAAA,CAAAA,CAAKsR,CAAAX,WAAA,CAAkBa,CAAA,CAASnS,CAAT,CAAlB,CAALW,CADJ,CAA4BX,CAAA,EAA5B,EAOA,GAAIW,CAAJ,CACSuR,CAAL,EACIlF,CAAA,EAFR,KAKI,OAAO,CAAA,CAGXrM,EAAAyR,OAAA,CAAUzR,CAAA0R,MAAV,CAEA1R,EAAAqP,UAAA,CAAarP,CAAAsP,UAAb;AAA2BtP,CAAA8P,oBAA3B,CACA9P,EAAA2R,QAAA,CAAW3R,CAAA4R,WAAX,CACA5R,EAAA6R,UAAA,CAAa7R,CAAA8R,MAAb,CAEA1R,EAAA,CAASL,EAAA,CAASC,CAAT,CACTmI,EAAA,CAAUtD,CAAA,CAAe7E,CAAf,CAAmBI,CAAnB,CAEVuN,EAAA,CAAiB,CAAA,CAGjBG,EAAA,CAAsB9N,CAAA+R,cAAA,EAGtBxB,EAAAnF,MAAA,CAAsB,GACtBmF,EAAAlF,OAAA,CAAuB,GAEvBqF,EAAAsB,UAAA,CAAsB,MACtBtB,EAAAuB,UAAA,EACAvB,EAAAwB,IAAA,CAAc,GAAd,CAAmB,GAAnB,CAAwB,GAAxB,CAA6B,CAA7B,CAAgC,CAAhC,CAAoCnP,IAAAoP,GAApC,CACAzB,EAAAzF,KAAA,EAEA,IAAI,CAEAjL,CAAA4N,YAAA,CAAe5N,CAAA6N,WAAf,CAA8BC,CAA9B,CAoBA,CAlBA9N,CAAAoS,WAAA,CACIpS,CAAA6N,WADJ,CAEI,CAFJ,CAGI7N,CAAAqS,KAHJ,CAIIrS,CAAAqS,KAJJ,CAKIrS,CAAAsS,cALJ,CAMI/B,CANJ,CAkBA,CATAvQ,CAAAuS,cAAA,CAAiBvS,CAAA6N,WAAjB,CAAgC7N,CAAAwS,eAAhC,CAAmDxS,CAAAyS,cAAnD,CASA,CARAzS,CAAAuS,cAAA,CAAiBvS,CAAA6N,WAAjB,CAAgC7N,CAAA0S,eAAhC,CAAmD1S,CAAAyS,cAAnD,CAQA,CAPAzS,CAAAuS,cAAA,CAAiBvS,CAAA6N,WAAjB,CAAgC7N,CAAA2S,mBAAhC,CAAuD3S,CAAA4S,OAAvD,CAOA,CANA5S,CAAAuS,cAAA,CAAiBvS,CAAA6N,WAAjB;AAAgC7N,CAAA6S,mBAAhC,CAAuD7S,CAAA8S,qBAAvD,CAMA,CAJA9S,CAAA+S,eAAA,CAAkB/S,CAAA6N,WAAlB,CAIA,CAFA7N,CAAA4N,YAAA,CAAe5N,CAAA6N,WAAf,CAA8B,IAA9B,CAEA,CAAAF,CAAA,CAAiB,CAAA,CAtBjB,CAuBF,MAAOqF,EAAP,CAAU,EAEZ3C,CAAA,CAAW,CAAA,CAEPpI,EAAA4I,UAAJ,EACIvD,OAAA2C,QAAA,CAAgB,UAAhB,CAGJ,OAAO,CAAA,CAxFoB,CAoHrB,CAON/J,OAAQgK,CAPF,CAQNjI,SAAUA,CARJ,CASNgL,MA9BJA,QAAc,EAAG,CACb,MAAc,CAAA,CAAd,GAAOjT,CADM,CAqBP,CAUNuH,MAAOA,CAVD,CAWN8E,MAAOA,CAXD,CAYNE,SAAUA,CAZJ,CAaNQ,SAAUA,CAbJ,CAcNvN,KAAMA,CAdA,CAeNQ,GA71BJkT,QAAc,EAAG,CACb,MAAOlT,EADM,CA80BP,CAgBNmT,eAv5BJA,QAAuB,CAACjU,CAAD,CAAQ,CAC3B,IAAIkI,EAAI,CAEHa,EAAAC,gBAAL,GAIApJ,CAAA,CAAKI,CAAAE,OAAL,CAAmB,QAAQ,CAACA,CAAD,CAAS,CAC5BU,CAAA,CAAiBV,CAAjB,CAAJ,GACIgI,CADJ,EACSH,CAAA,CAAiB7H,CAAjB,CADT,CADgC,CAApC,CAMA,CAAA+I,CAAA3B,SAAA,CAAiBY,CAAjB,CAVA,CAH2B,CAu4BrB,CAiBNzC,QA1BJA,QAAgB,EAAG,CACfwD,CAAAxD,QAAA,EACAvE,EAAAuE,QAAA,EAFe,CAST,CAkBNyO,WAt7BJA,QAAmB,CAAC7T,CAAD,CAAU,CACzB8T,EAAA,CAAM,CAAA,CAAN,CAAYpL,CAAZ,CAAsB1I,CAAtB,CADyB,CAo6BnB,CAz9B0B,CAy/BxC+T,QAASA,GAAuB,CAACpU,CAAD;AAAQE,CAAR,CAAgB,CAAA,IACxCgM,EAAQlM,CAAAiO,WADgC,CAExC9B,EAASnM,CAAAkO,YAF+B,CAGxCmG,EAASrU,CAH+B,CAIxCsU,EAActU,CAAAuU,YAAdD,EAAmCpU,CAAAsU,MAJK,CAKxCC,EAASA,QAAQ,CAACC,CAAD,CAAUjN,CAAV,CAAaC,CAAb,CAAgBC,CAAhB,CAAmBC,CAAnB,CAAsB+M,CAAtB,CAAyBvI,CAAzB,CAA4B,CACzCsI,CAAAnV,KAAA,CAAaW,CAAb,CAAqBwH,CAArB,CAAwBD,CAAxB,CAA2BE,CAA3B,CAA8BC,CAA9B,CAAiC+M,CAAjC,CAAoCvI,CAApC,CADyC,CALL,CAUxCiI,EADAtU,CAAA,CAAsBC,CAAtB,CAAJ,CACaA,CADb,CAGaE,CAORmU,EAAAO,MAAL,GACIP,CAAAjC,OAyBA,CAzBgBd,CAAAC,cAAA,CAAkB,QAAlB,CAyBhB,CAvBA8C,CAAAO,MAuBA,CAvBe5U,CAAAiR,SAAA2D,MAAA,CACX,EADW,CAEX,CAFW,CAGX,CAHW,CAIX1I,CAJW,CAKXC,CALW,CAAA0I,IAAA,CAMTP,CANS,CAuBf,CAfAD,CAAAS,cAeA,CAfuB9U,CAAAiR,SAAA8D,SAAA,CACnB/U,CAAAgV,SADmB,CAEnBhV,CAAAiV,QAFmB,CAGnBjV,CAAAkV,UAHmB,CAInBlV,CAAAkO,YAJmB,CAevB,CARAmG,CAAAO,MAAAO,KAAA,CAAkBd,CAAAS,cAAlB,CAQA,CANIT,CAAAxF,SAMJ,EALIjP,CAAA,CAAK,CAAC,QAAD,CAAW,QAAX,CAAqB,MAArB,CAA6B,KAA7B,CAAL,CAA0C,QAAQ,CAACwV,CAAD,CAAK,CACnDC,CAAA,CAAK,CAAA,CAAL,CAAYD,CAAZ,CAAgBX,CAAhB,CADmD,CAAvD,CAKJ,CAAIJ,CAAJ,WAAsBpV,EAAAqW,MAAtB,GACIjB,CAAAkB,YAEA,CAFqBlB,CAAApD,SAAAuE,EAAA,EAAAX,IAAA,CAAwBP,CAAxB,CAErB,CAAAD,CAAAkB,YAAAE,UAAA,CAA6BvV,CAAAuJ,MAAAkE,IAA7B,CAA+CzN,CAAAyJ,MAAAgE,IAA/C,CAHJ,CA1BJ,CAiCA0G;CAAAjC,OAAAlG,MAAA,CAAsBA,CACtBmI,EAAAjC,OAAAjG,OAAA,CAAuBA,CAEvBkI,EAAAO,MAAAc,KAAA,CAAkB,CACdjO,EAAG,CADW,CAEdC,EAAG,CAFW,CAGdwE,MAAOA,CAHO,CAIdC,OAAQA,CAJM,CAKdwJ,MAAO,sBALO,CAAlB,CAQAtB,EAAAS,cAAAY,KAAA,CAA0B,CACtBjO,EAAGzH,CAAAgV,SADmB,CAEtBtN,EAAG1H,CAAAiV,QAFmB,CAGtB/I,MAAOlM,CAAAkV,UAHe,CAItB/I,OAAQnM,CAAAkO,YAJc,CAA1B,CAOKmG,EAAAuB,IAAL,GAGIvB,CAAAuB,IAUA,CAVa/N,EAAA,CAAW,QAAQ,EAAG,CAC/BwM,CAAAO,MAAAc,KAAA,CAAkB,CACdG,KAAMxB,CAAAjC,OAAA0D,UAAA,CAAwB,WAAxB,CADQ,CAAlB,CAD+B,CAAtB,CAUb,CAJAzB,CAAAuB,IAAAzD,KAAA,CAAgBkC,CAAAjC,OAAhB,CAIA,CAFAiC,CAAAuB,IAAA1B,WAAA,CAAsBlU,CAAAK,QAAAK,MAAtB,EAA6C,EAA7C,CAEA,CAAI2T,CAAJ,WAAsBpV,EAAAqW,MAAtB,EACIjB,CAAAuB,IAAA3B,eAAA,CAA0BjU,CAA1B,CAdR,CAkBAqU,EAAAuB,IAAA3D,QAAA,CAAmB/F,CAAnB,CAA0BC,CAA1B,CAEA,OAAOkI,EAAAuB,IA1FqC,CAmGhDG,QAASA,GAAyB,CAAC9E,CAAD,CAAW/Q,CAAX,CAAmBF,CAAnB,CAA0B,CACpDiR,CAAJ,EACI/Q,CAAA0U,MADJ,EAEI1U,CAAAkS,OAFJ,EAGK,CAAArS,CAAA,CAAsBC,CAAtB,EAA+BE,CAAAF,MAA/B,CAHL,EAKIiR,CAAAjK,OAAA,CAAgBhH,CAAhB,EAAyBE,CAAAF,MAAzB,CANoD,CAU5DgW,QAASA,GAA2B,CAAC/E,CAAD;AAAW/Q,CAAX,CAAmB,CAC/C+Q,CAAJ,EACI/Q,CAAA0U,MADJ,EAEI1U,CAAAkS,OAFJ,EAGK,CAAArS,CAAA,CAAsBG,CAAAF,MAAtB,CAHL,EAKIiR,CAAAW,8BAAA,CAAuC1R,CAAvC,CAN+C,CAoBvD+V,QAASA,EAAS,CAACC,CAAD,CAAMd,CAAN,CAAUe,CAAV,CAAqBC,CAArB,CAAgCjW,CAAhC,CAAmCkW,CAAnC,CAA8C,CAC5DlW,CAAA,CAAIA,CAAJ,EAAS,CACTiW,EAAA,CAAYA,CAAZ,EAn6DaE,GAw6Db,KAP4D,IAIxDvH,EAAY5O,CAAZ4O,CAAgBqH,CAJwC,CAKxD1B,EAAU,CAAA,CAEd,CAAOA,CAAP,EAAkBvU,CAAlB,CAAsB4O,CAAtB,EAAmC5O,CAAnC,CAAuC+V,CAAApW,OAAvC,CAAA,CACI4U,CACA,CADUU,CAAA,CAAGc,CAAA,CAAI/V,CAAJ,CAAH,CAAWA,CAAX,CACV,CAAA,EAAEA,CAEFuU,EAAJ,GACQvU,CAAJ,CAAQ+V,CAAApW,OAAR,CAEQuW,CAAJ,CACIJ,CAAA,CAAUC,CAAV,CAAed,CAAf,CAAmBe,CAAnB,CAA8BC,CAA9B,CAAyCjW,CAAzC,CAA4CkW,CAA5C,CADJ,CAEWE,CAAAC,sBAAJ,CAEHD,CAAAC,sBAAA,CAA0B,QAAQ,EAAG,CACjCP,CAAA,CAAUC,CAAV,CAAed,CAAf,CAAmBe,CAAnB,CAA8BC,CAA9B,CAAyCjW,CAAzC,CADiC,CAArC,CAFG,CAMHiR,UAAA,CAAW,QAAQ,EAAG,CAClB6E,CAAA,CAAUC,CAAV,CAAed,CAAf,CAAmBe,CAAnB,CAA8BC,CAA9B,CAAyCjW,CAAzC,CADkB,CAAtB,CAVR,CAeWgW,CAfX,EAgBIA,CAAA,EAjBR,CAX4D,CAyNhEM,QAASA,GAAgB,CAAC/B,CAAD,CAAU,CAC/B,GAAK,CAAA9T,CAAA,CAAiB,IAAjB,CAAL,CACI,MAAO8T,EAAAnV,KAAA,CAAa,IAAb,CAMX,IAFI0R,CAEJ,CAFemD,EAAA,CAAwB,IAAApU,MAAxB,CAAoC,IAApC,CAEf,CACIgW,EAAA,CAA4B/E,CAA5B,CAAsC,IAAtC,CACA,CAAAA,CAAAY,WAAA,CAAoB,IAApB,CAGJkE,GAAA,CAA0B9E,CAA1B,CAAoC,IAApC,CAb+B,CAjvE1B,IAuGLsF,EAAMtX,CAAAsX,IAvGD,CAwGLjF,EAAMiF,CAAAG,SAxGD,CAyGLC,GAAOA,QAAQ,EAAG,EAzGb,CA0GL9G,EAAQ5Q,CAAA4Q,MA1GH,CA2GL+G,EAAS3X,CAAA2X,OA3GJ,CA4GLC,EAAc5X,CAAA4X,YA5GT;AA6GLjX,EAAOX,CAAAW,KA7GF,CA8GLkX,GAAS7X,CAAA6X,OA9GJ,CA+GLC,GAAW9X,CAAA8X,SA/GN,CAgHLC,GAAY/X,CAAA+X,UAhHP,CAiHLC,GAAOhY,CAAAgY,KAjHF,CAkHLhI,EAAWhQ,CAAAgQ,SAlHN,CAmHLkF,GAAQlV,CAAAkV,MAnHH,CAoHL1T,EAAOxB,CAAAwB,KApHF,CAqHL4U,EAAOpW,CAAAoW,KArHF,CAsHL6B,EAAcjY,CAAAkY,WAAA,EAAAD,YAtHT,CAwHLrK,CAGJgD,EAAAxQ,UAAA+X,MAAA,CAAwB,CACpBC,UAAW,SADS,CAEpBC,aAAc,SAFM,CAGpBC,KAAM,SAHc,CAIpBC,WAAY,SAJQ,CAKpBC,MAAO,SALa,CAMpBC,MAAO,SANa,CAOpBC,OAAQ,SAPY,CAQpBC,MAAO,SARa,CASpBC,eAAgB,SATI,CAUpBC,KAAM,SAVc,CAWpBC,WAAY,SAXQ,CAYpBC,MAAO,SAZa,CAapBC,UAAW,SAbS,CAcpBC,UAAW,SAdS,CAepBC,WAAY,SAfQ,CAgBpBC,UAAW,SAhBS,CAiBpBC,MAAO,SAjBa,CAkBpBC,eAAgB,SAlBI,CAmBpBC,SAAU,SAnBU;AAoBpBC,QAAS,SApBW,CAqBpBC,KAAM,SArBc,CAsBpBC,SAAU,SAtBU,CAuBpBC,SAAU,SAvBU,CAwBpBC,cAAe,SAxBK,CAyBpBC,SAAU,SAzBU,CA0BpBC,UAAW,SA1BS,CA2BpBC,UAAW,SA3BS,CA4BpBC,YAAa,SA5BO,CA6BpBC,eAAgB,SA7BI,CA8BpBC,WAAY,SA9BQ,CA+BpBC,WAAY,SA/BQ,CAgCpBC,QAAS,SAhCW,CAiCpBC,WAAY,SAjCQ,CAkCpBC,aAAc,SAlCM,CAmCpBC,cAAe,SAnCK,CAoCpBC,cAAe,SApCK,CAqCpBC,cAAe,SArCK,CAsCpBC,WAAY,SAtCQ,CAuCpBC,SAAU,SAvCU,CAwCpBC,YAAa,SAxCO,CAyCpBC,QAAS,SAzCW,CA0CpBC,WAAY,SA1CQ,CA2CpBC,SAAU,SA3CU,CA4CpBC,UAAW,SA5CS;AA6CpBC,YAAa,SA7CO,CA8CpBC,YAAa,SA9CO,CA+CpBC,QAAS,SA/CW,CAgDpBC,UAAW,SAhDS,CAiDpBC,WAAY,SAjDQ,CAkDpBC,KAAM,SAlDc,CAmDpBC,UAAW,SAnDS,CAoDpBC,KAAM,SApDc,CAqDpBC,MAAO,SArDa,CAsDpBC,YAAa,SAtDO,CAuDpBC,SAAU,SAvDU,CAwDpBC,QAAS,SAxDW,CAyDpBC,UAAW,SAzDS,CA0DpBC,OAAQ,SA1DY,CA2DpBC,MAAO,SA3Da,CA4DpBC,MAAO,SA5Da,CA6DpBC,SAAU,SA7DU,CA8DpBC,cAAe,SA9DK,CA+DpBC,UAAW,SA/DS,CAgEpBC,aAAc,SAhEM,CAiEpBC,UAAW,SAjES,CAkEpBC,WAAY,SAlEQ,CAmEpBC,UAAW,SAnES,CAoEpBC,qBAAsB,SApEF,CAqEpBC,UAAW,SArES,CAsEpBC,WAAY,SAtEQ;AAuEpBC,UAAW,SAvES,CAwEpBC,YAAa,SAxEO,CAyEpBC,cAAe,SAzEK,CA0EpBC,aAAc,SA1EM,CA2EpBC,eAAgB,SA3EI,CA4EpBC,eAAgB,SA5EI,CA6EpBC,eAAgB,SA7EI,CA8EpBC,YAAa,SA9EO,CA+EpBC,KAAM,SA/Ec,CAgFpBC,UAAW,SAhFS,CAiFpBC,MAAO,SAjFa,CAkFpBC,QAAS,SAlFW,CAmFpBC,OAAQ,SAnFY,CAoFpBC,iBAAkB,SApFE,CAqFpBC,WAAY,SArFQ,CAsFpBC,aAAc,SAtFM,CAuFpBC,aAAc,SAvFM,CAwFpBC,eAAgB,SAxFI,CAyFpBC,gBAAiB,SAzFG,CA0FpBC,kBAAmB,SA1FC,CA2FpBC,gBAAiB,SA3FG,CA4FpBC,gBAAiB,SA5FG,CA6FpBC,aAAc,SA7FM;AA8FpBC,UAAW,SA9FS,CA+FpBC,UAAW,SA/FS,CAgGpBC,SAAU,SAhGU,CAiGpBC,YAAa,SAjGO,CAkGpBC,KAAM,SAlGc,CAmGpBC,QAAS,SAnGW,CAoGpBC,MAAO,SApGa,CAqGpBC,UAAW,SArGS,CAsGpBC,OAAQ,SAtGY,CAuGpBC,UAAW,SAvGS,CAwGpBC,OAAQ,SAxGY,CAyGpBC,cAAe,SAzGK,CA0GpBC,UAAW,SA1GS,CA2GpBC,cAAe,SA3GK,CA4GpBC,cAAe,SA5GK,CA6GpBC,WAAY,SA7GQ,CA8GpBC,UAAW,SA9GS,CA+GpBC,KAAM,SA/Gc,CAgHpBC,KAAM,SAhHc,CAiHpBC,KAAM,SAjHc,CAkHpBC,WAAY,SAlHQ,CAmHpBC,OAAQ,SAnHY,CAoHpBC,IAAK,SApHe,CAqHpBC,UAAW,SArHS,CAsHpBC,UAAW,SAtHS,CAuHpBC,YAAa,SAvHO,CAwHpBC,OAAQ,SAxHY;AAyHpBC,WAAY,SAzHQ,CA0HpBC,SAAU,SA1HU,CA2HpBC,SAAU,SA3HU,CA4HpBC,OAAQ,SA5HY,CA6HpBC,OAAQ,SA7HY,CA8HpBC,QAAS,SA9HW,CA+HpBC,UAAW,SA/HS,CAgIpBC,UAAW,SAhIS,CAiIpBC,KAAM,SAjIc,CAkIpBC,YAAa,SAlIO,CAmIpBC,UAAW,SAnIS,CAoIpBC,IAAK,SApIe,CAqIpBC,KAAM,SArIc,CAsIpBC,QAAS,SAtIW,CAuIpBC,OAAQ,SAvIY,CAwIpBC,UAAW,SAxIS,CAyIpBC,OAAQ,SAzIY,CA0IpBC,UAAW,SA1IS,CA2IpBC,MAAO,SA3Ia,CA4IpBC,MAAO,SA5Ia,CA6IpBC,WAAY,SA7IQ,CA8IpBC,OAAQ,SA9IY,CA+IpBC,YAAa,SA/IO,CAu8DxBvJ,EAAAvX,UAAA+gB,SAAA,CAA4BC,QAAQ,CAACC,CAAD,CAAa,CAAA,IACzChX,EAAQgX,CADiC,CAEzCrY,EAAQ,IAAAA,MAARA,EAAsB,IAAA5H,QAAA4H,MAAtBA,EAA4C,IAAA7H,eAA5C6H;AAAmE,CAAA,CAEnEqY,EAAAA,CAAJ,EAAoBA,CAApB,WAA0C,KAAAC,WAA1C,GACIjX,CAYA,CAZQ6I,CAAC,IAAI,IAAAoO,WAALpO,MAAA,CACJ,IADI,CAEJ,IAAA9R,QAAAC,KAAA,CAAkBggB,CAAAngB,EAAlB,CAFI,CAGJ8H,CAAA,CAAQA,CAAA,CAAMqY,CAAAngB,EAAN,CAAR,CAA8BuL,IAAAA,EAH1B,CAYR,CANApC,CAAAkX,SAMA,CANiBlX,CAAA7B,EAMjB,CAJA6B,CAAAmX,KAIA,CAJaH,CAAAG,KAIb,CAHAnX,CAAAoX,MAGA,CAHcJ,CAAAI,MAGd,CAFApX,CAAAqX,MAEA,CAFcL,CAAAK,MAEd,CADArX,CAAAkC,MACA,CADc8U,CAAA9U,MACd,CAAAlC,CAAAuD,MAAA,CAAcyT,CAAAngB,EAblB,CAgBA,OAAOmJ,EApBsC,CA0BjD+L,EAAA,CAAKuB,CAAAvX,UAAL,CAAuB,aAAvB,CAAsC,QAAQ,CAACqV,CAAD,CAAU,CACpD,MAAO,KAAA0L,SAAA,CACH1L,CAAAkM,MAAA,CAAc,IAAd,CAAoB,EAAAthB,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CADG,CAD6C,CAAxD,CAWA6V,EAAA,CAAKuB,CAAAvX,UAAL,CAAuB,SAAvB,CAAkC,QAAQ,CAACqV,CAAD,CAAU,CAAA,IAC5CxU,EAAS,IADmC,CAE5CF,EAAQE,CAAAF,MAERA,EAAAuV,YAAJ,GAA0BrV,CAAAqV,YAA1B,GACIrV,CAAAqV,YADJ,CACyB,IADzB,CAIIvV,EAAA6gB,YAAJ,GACI7gB,CAAA6gB,YADJ,CACwB5J,EAAA,CAAKjX,CAAA6gB,YAAL,CAAwB,QAAQ,CAACvX,CAAD,CAAQ,CACxD,MAAOA,EAAApJ,OAAP;AAAwBA,CADgC,CAAxC,CADxB,CAMIF,EAAA8gB,WAAJ,EAAwB9gB,CAAA8gB,WAAA5gB,OAAxB,GAAoDA,CAApD,GACIF,CAAA8gB,WADJ,CACuB,IADvB,CAIApM,EAAAnV,KAAA,CAAa,IAAb,CAlBgD,CAApD,CA0BA8V,EAAA,CAAKuB,CAAAvX,UAAL,CAAuB,aAAvB,CAAsC,QAAQ,CAACqV,CAAD,CAAU,CACpD,GAAK,CAAA9T,CAAA,CAAiB,IAAjB,CAAL,EAAiCmgB,CAAA,IAAAA,YAAjC,EAAsD,CAAA,IAAAA,YAAA,EAAtD,CACI,MAAOrM,EAAAkM,MAAA,CAAc,IAAd,CAAoBxhB,KAAAC,UAAAC,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAFyC,CAAxD,CAOAI,EAAA,CAAK,mEAAA,MAAA,CAAA,GAAA,CAAL,CAWI,QAAQ,CAACqB,CAAD,CAAO,CACPiW,CAAA,CAAYjW,CAAZ,CAAJ,GACIiW,CAAA,CAAYjW,CAAZ,CAAAT,eACA,CADmC,GACnC,CAAA0W,CAAA,CAAYjW,CAAZ,CAAAkK,UAAA,CAA8B,EAFlC,CADW,CAXnB,CA0BAvL,EAAA,CAAK,CACD,WADC,CAED,gBAFC,CAGD,aAHC,CAID,YAJC,CAKD,QALC,CAAL,CAMG,QAAQ,CAACohB,CAAD,CAAS,CAChBC,QAASA,EAAM,CAACvM,CAAD,CAAU,CACrB,IAAIwM,EAAY,IAAA7gB,QAAA8H,SAAZ+Y;CACY,WADZA,GACCF,CADDE,EACsC,gBADtCA,GAC2BF,CAD3BE,CAGJ,IAAK,CAAAtgB,CAAA,CAAiB,IAAjB,CAAL,EACIsgB,CADJ,EAEkB,SAFlB,GAEI,IAAAjgB,KAFJ,EAGkB,SAHlB,GAGI,IAAAA,KAHJ,CAOmB,QAOf,GAPI+f,CAOJ,EAP2B,IAAApM,MAO3B,EAP0C,CAAA7U,CAAA,CAAsB,IAAAC,MAAtB,CAO1C,GANI,IAAA4U,MAAAc,KAAA,CAAgB,CACZG,KAAM,EADM,CAAhB,CAGA,CAAA,IAAAsL,QAAA,CAAe,IAGnB,EAAAzM,CAAAnV,KAAA,CAAa,IAAb,CAdJ,KAiBO,IAAI,IAAA,CAAKyhB,CAAL,CAAc,QAAd,CAAJ,CACH,IAAA,CAAKA,CAAL,CAAc,QAAd,CAAA,EAtBiB,CA0BzB3L,CAAA,CAAKuB,CAAAvX,UAAL,CAAuB2hB,CAAvB,CAA+BC,CAA/B,CAGe,YAAf,GAAID,CAAJ,GACQnK,CAAAuK,OAQJ,EAPI/L,CAAA,CAAKwB,CAAAuK,OAAA/hB,UAAL,CAAmC2hB,CAAnC,CAA2CC,CAA3C,CAOJ,CAJIpK,CAAAwK,UAIJ,EAHIhM,CAAA,CAAKwB,CAAAwK,UAAAhiB,UAAL,CAAsC2hB,CAAtC,CAA8CC,CAA9C,CAGJ,CAAIpK,CAAAyK,QAAJ,EACIjM,CAAA,CAAKwB,CAAAyK,QAAAjiB,UAAL,CAAoC2hB,CAApC,CAA4CC,CAA5C,CAVR,CA9BgB,CANpB,CAsDAM,UAAwB,EAAG,CAAA,IACnBphB,EAAI,CADe,CAEnBiS,CAFmB,CAGnBE,EAAW,CAAC,OAAD,CAAU,oBAAV,CAAgC,WAAhC,CAA6C,WAA7C,CAHQ,CAInBkP,EAAU,CAAA,CAEd,IAAyC,WAAzC;AAAI,MAAOjL,EAAAkL,sBAAX,CAGI,IAFArP,CAEA,CAFSd,CAAAC,cAAA,CAAkB,QAAlB,CAET,CAAOpR,CAAP,CAAWmS,CAAAxS,OAAX,CAA4BK,CAAA,EAA5B,CACI,GAAI,CAEA,GADAqhB,CACI,CADMpP,CAAAX,WAAA,CAAkBa,CAAA,CAASnS,CAAT,CAAlB,CACN,CAAmB,WAAnB,GAAA,MAAOqhB,EAAP,EAA8C,IAA9C,GAAkCA,CAAtC,CACI,MAAO,CAAA,CAHX,CAKF,MAAO1N,CAAP,CAAU,EAMpB,MAAO,CAAA,CArBgB,CAA3ByN,CA8CK,EAAL,EAgBIlM,CAAA,CAAKuB,CAAAvX,UAAL,CAAuB,aAAvB,CAAsC,QAAQ,CAACqV,CAAD,CAAU,CAE/C9T,CAAA,CAAiB,IAAjB,CAAL,EACkB,SADlB,GACI,IAAAK,KADJ,EAEkB,SAFlB,GAEI,IAAAA,KAFJ,EAGIyT,CAAAkM,MAAA,CAAc,IAAd,CAAoBxhB,KAAAC,UAAAC,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAGC,KAAAuhB,YAAL,EAA0B,IAAAA,YAAA,CAAiB,CAAA,CAAjB,CAA1B,EACIrM,CAAAkM,MAAA,CAAc,IAAd,CAAoBxhB,KAAAC,UAAAC,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CATgD,CAAxD,CA4UA,CA/TAP,CAAA6X,OAAA,CAASF,CAAAvX,UAAT,CAA2B,CACvBoO,WAAY,CADW,CAEvBiU,YAAa,CAAA,CAFU,CAGvBC,QAAS,CAAA,CAHc,CAIvBZ,YAAaA,QAAQ,CAACa,CAAD,CAAS,CAAA,IACtBvhB;AAAU,IAAAA,QADY,CAGtBoJ,EAAQ,IAAAA,MAARA,EAAsB,IAAAA,MAAApJ,QAHA,CAItBsJ,EAAQ,IAAAA,MAARA,EAAsB,IAAAA,MAAAtJ,QAE1B,OAJWA,EAAAC,KAIJR,OAAP,EAAsBO,CAAAG,eAAtB,EAAgDd,MAAAC,UAAhD,GACIsP,CAAA,CAAStF,CAAA7F,IAAT,CADJ,EAC2BmL,CAAA,CAAStF,CAAA5F,IAAT,CAD3B,GAEK,CAAC6d,CAFN,EAEiB3S,CAAA,CAASxF,CAAA3F,IAAT,CAFjB,EAEwCmL,CAAA,CAASxF,CAAA1F,IAAT,CAFxC,CAN0B,CAJP,CAmBvB8d,gBAAiBA,QAAQ,EAAG,CAAA,IACpB3hB,EAAS,IADW,CAEpBK,EAAS,IAAAA,OAFW,CAGpB+I,CAHoB,CAIpBnJ,CAEJ,IAAII,CAAJ,CACI,IAAKJ,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBI,CAAAT,OAAhB,CAAmCK,CAAnC,EAAuC,CAAvC,CAEI,CADAmJ,CACA,CADQ/I,CAAA,CAAOJ,CAAP,CACR,GAAamJ,CAAAwY,QAAb,GACIxY,CAAAwY,QADJ,CACoBxY,CAAAwY,QAAArc,QAAA,EADpB,CAMR7F,EAAA,CAAK,CAAC,OAAD,CAAU,MAAV,CAAkB,SAAlB,CAAL,CAAmC,QAAQ,CAACmiB,CAAD,CAAO,CAC1C7hB,CAAA,CAAO6hB,CAAP,CAAJ,GACI7hB,CAAA,CAAO6hB,CAAP,CADJ,CACmB7hB,CAAA,CAAO6hB,CAAP,CAAAtc,QAAA,EADnB,CAD8C,CAAlD,CAfwB,CAnBL,CAyCvBuc,aAAcA,QAAQ,EAAG,CAAA,IACjB9hB,EAAS,IADQ,CAEjBG,EAAUH,CAAAG,QAAVA,EAA4B,EAFX,CAGjB4Q,EAAW,CAAA,CAHM,CAIjBjR,EAAQE,CAAAF,MAJS,CAKjByJ,EAAQ,IAAAA,MALS,CAMjBE,EAAQ,IAAAA,MANS,CASjB1B,EAAQ5H,CAAA4H,MAARA,EAAyB/H,CAAAE,eATR;AAUjBmK,EAAQlK,CAAAkK,MAARA,EAAyBrK,CAAAsK,eAVR,CAYjBT,EAAU1J,CAAAC,KAZO,CAajB0J,EAAYP,CAAAQ,YAAA,EAbK,CAcjBC,EAAOF,CAAAlG,IAdU,CAejBqG,EAAOH,CAAAjG,IAfU,CAgBjBqG,EAAYT,CAAAM,YAAA,EAhBK,CAiBjBI,EAAOD,CAAAtG,IAjBU,CAkBjBwG,EAAOF,CAAArG,IAlBU,CAmBjBke,EAAa,EAnBI,CAoBjBC,CApBiB,CAqBjBC,EAAW,CAAEA,CAAAjiB,CAAAiiB,SArBI,CAsBjB5hB,CAtBiB,CAuBjB6hB,EAAsD,CAAA,CAAtDA,GAAsB/hB,CAAA+hB,oBAvBL,CAyBjBhT,EAAUzF,CAAAwF,aAAA,CADE9O,CAAA0O,UACF,CAzBO,CA0BjBnF,EAAU1J,CAAA2J,cAAVD,EACmC,UADnCA,GACA1J,CAAA2J,cAAAC,KAAA,CAA0B,GAA1B,CA3BiB,CA4BjB9B,EAAY,CAAEG,CAAA9H,CAAA8H,SA5BG,CA6BjBka,EAAYniB,CAAAmiB,UAAZA,EAAgC,CA7Bf,CA8BjBtV,EAAiB7M,CAAA6M,eA9BA,CA+BjBpC,EAAS,CAAC1C,CA/BO,CAgCjB4C,CAhCiB,CAiCjByX,CAjCiB,CAkCjBC,CAlCiB,CAmCjBC,CAnCiB,CAqCjBC,EAAaA,QAAQ,CAACC,CAAD,CAAUlX,CAAV,CAAiBrL,CAAjB,CAAoB,CAErC0M,CAAA,CAAQ6V,CAAR,CAAkB,GAAlB,CAAwBlX,CAKpB4W,EAAJ,EAA4B,CAAAH,CAAA,CAAWpV,CAAX,CAA5B,GACIoV,CAAA,CAAWpV,CAAX,CAOA,CAPoB,CAAA,CAOpB,CALI7M,CAAA6O,SAKJ,GAJI6T,CACA,CADUjZ,CAAAiE,IACV,CADsBgV,CACtB,CAAAlX,CAAA,CAAQ7B,CAAA+D,IAAR,CAAoBlC,CAGxB,EAAAjL,CAAAiH,KAAA,CAAY,CACRkb,QAASA,CADD,CAER/B,MAAO+B,CAFC,CAGRlX,MAAOA,CAHC,CAIRrL,EAAGkiB,CAAHliB,CAAeA,CAJP,CAAZ,CARJ,CAPqC,CArCxB,CA8DrB8Q,EAAWmD,EAAA,CAAwBpU,CAAxB,CAA+BE,CAA/B,CAEN,KAAAyiB,QAAL,EA8IA,CAnII,IAAApiB,OAmIJ,EAnImB,IAAAqiB,MAmInB,GAlII,IAAAf,gBAAA,EAkIJ;AA7HK9hB,CAAA,CAAsBC,CAAtB,CAAL,CAUI,IAAAuV,YAVJ,CAUuBvV,CAAAuV,YAVvB,CACI,IAAAA,YADJ,CACuBrV,CAAA2iB,UAAA,CACf,aADe,CAEf,SAFe,CAGf,CAAA,CAHe,CAIf,CAJe,CAKf7iB,CAAAuU,YALe,CA4HvB,CAhHAhU,CAgHA,CAhHS,IAAAA,OAgHT,CAhHuB,EAgHvB,CA7GAL,CAAA4iB,YA6GA,CA7GqBnM,EA6GrB,CA3GI1F,CA2GJ,GA1GI+E,EAAA,CAA4B/E,CAA5B,CAAsC,IAAtC,CAGA,CAFAA,CAAAY,WAAA,CAAoB3R,CAApB,CAEA,CAAA6V,EAAA,CAA0B9E,CAA1B,CAAoC,IAApC,CAA0CjR,CAA1C,CAuGJ,EAAAiW,CAAA,CACIjO,CAAA,CAAY9H,CAAAI,KAAZ,CAA2B2H,CAA3B,EAAoC8B,CADxC,CAlGAgZ,QAAqB,CAAC3W,CAAD,CAAIjM,CAAJ,CAAO,CAAA,IACpBsH,CADoB,CAEpBC,CAFoB,CAMpBsb,CANoB,CAOpBC,EAAwC,WAAxCA,GAAiB,MAAOjjB,EAAA6M,MAPJ,CAQpBD,EAAY,CAAA,CAEhB,IAAKqW,CAAAA,CAAL,GACQtY,CAAJ,EACIlD,CACA,CADI2E,CAAA,CAAE,CAAF,CACJ,CAAA1E,CAAA,CAAI0E,CAAA,CAAE,CAAF,CAFR,GAII3E,CACA,CADI2E,CACJ,CAAA1E,CAAA,CAAI6C,CAAA,CAAMpK,CAAN,CALR,CA4BI,CAnBAyJ,CAAJ,EACQe,CAIJ,GAHIjD,CAGJ,CAHQ0E,CAAA9M,MAAA,CAAQ,CAAR,CAAW,CAAX,CAGR,EADA0jB,CACA,CADMtb,CAAA,CAAE,CAAF,CACN,CAAAA,CAAA,CAAIA,CAAA,CAAE,CAAF,CALR,EAMWM,CANX,GAOIP,CAEA,CAFI2E,CAAA3E,EAEJ,CADAC,CACA,CADI0E,CAAAU,OACJ,CAAAkW,CAAA,CAAMtb,CAAN,CAAU0E,CAAA1E,EATd,CAmBI,CAJCqF,CAID,GAHAH,CAGA,CAHYlF,CAGZ,EAHiB2C,CAGjB,EAHyB3C,CAGzB,EAH8B4C,CAG9B,EAPW,IAOX,GAPK5C,CAOL,EAAWD,CAAX,EAAgByC,CAAhB,EAAwBzC,CAAxB,EAA6B0C,CAA7B,EAAqCyC,CA7B7C,EAmCQ,GAFA8V,CAEIP,CAFMte,IAAAqf,KAAA,CAAUzZ,CAAAC,SAAA,CAAejC,CAAf,CAAkB,CAAA,CAAlB,CAAV,CAEN0a,CAAAA,CAAJ,CAAc,CACV,GAAazW,IAAAA,EAAb,GAAI6W,CAAJ,EAA0BG,CAA1B,GAAsCR,CAAtC,CAAmD,CAC1CtY,CAAL,GACIoZ,CADJ,CACUtb,CADV,CAGA,IAAagE,IAAAA,EAAb,GAAI8W,CAAJ,EAA0B9a,CAA1B,CAA8B4a,CAA9B,CACIA,CACA;AADS5a,CACT,CAAA8a,CAAA,CAAOriB,CAEX,IAAauL,IAAAA,EAAb,GAAI6W,CAAJ,EAA0BS,CAA1B,CAAgCnY,CAAhC,CACIA,CACA,CADSmY,CACT,CAAAT,CAAA,CAAOpiB,CAVoC,CAc/CuiB,CAAJ,GAAgBR,CAAhB,GACiBxW,IAAAA,EAWb,GAXI6W,CAWJ,GAVI/W,CAIA,CAJQ7B,CAAAD,SAAA,CAAe4Y,CAAf,CAAuB,CAAA,CAAvB,CAIR,CAHAlT,CAGA,CAHUzF,CAAAD,SAAA,CAAemB,CAAf,CAAuB,CAAA,CAAvB,CAGV,CADA4X,CAAA,CAAWC,CAAX,CAAoBlX,CAApB,CAA2BgX,CAA3B,CACA,CAAIpT,CAAJ,GAAgB5D,CAAhB,EACIiX,CAAA,CAAWC,CAAX,CAAoBtT,CAApB,CAA6BmT,CAA7B,CAKR,EADAA,CACA,CADOC,CACP,CADc9W,IAAAA,EACd,CAAAwW,CAAA,CAAcQ,CAZlB,CAfU,CAAd,IA8BIlX,EACA,CADQ3H,IAAAqf,KAAA,CAAUvZ,CAAAD,SAAA,CAAehC,CAAf,CAAkB,CAAA,CAAlB,CAAV,CACR,CAAA+a,CAAA,CAAWC,CAAX,CAAoBlX,CAApB,CAA2BrL,CAA3B,CAKZ,OAAO,CAAC8iB,CAjFgB,CAkG5B,CAdAE,QAAuB,EAAG,CACtBnM,EAAA,CAAU9W,CAAV,CAAkB,gBAAlB,CAIAA,EAAAwhB,YAAA,CAAqB,CAAA,CACrBxhB,EAAAG,QAAA+iB,eAAA,CAAgC,CAAA,CAGhC,QAAOljB,CAAA4iB,YACP5iB,EAAA4iB,YAAA,EAVsB,CAc1B,CAII9iB,CAAAiR,SAAAC,UAAA,CAA2BxR,MAAAC,UAA3B,CAA8C+L,IAAAA,EAJlD,CA9IA,EACS,CAAA3L,CAAA,CAAsBC,CAAtB,CADT,EACyCiR,CADzC,GAEQA,CAAA5I,MAAA,EACA,CAAA,IAAAuM,MAAAc,KAAA,CAAgB,CACZG,KAAM,EADM,CAAhB,CAHR,CAhEqB,CAzCF,CAA3B,CA+TA,CAxDAjW,CAAA,CAAK,CAAC,SAAD,CAAY,SAAZ,CAAL,CACI,QAAQ,CAACC,CAAD,CAAI,CACJgX,CAAA,CAAYhX,CAAZ,CAAJ,GACIwV,CAAA,CAAKwB,CAAA,CAAYhX,CAAZ,CAAAR,UAAL,CAA+B,YAA/B,CAA6CoX,EAA7C,CACA,CAAAI,CAAA,CAAYhX,CAAZ,CAAAR,UAAAqiB,YAAA;AAAuC,CAAA,CAF3C,CADQ,CADhB,CAwDA,CA/CI7K,CAAAwM,OA+CJ,GA5CI,OAAOxM,CAAAwM,OAAAhkB,UAAAyjB,YAIP,CAHAjM,CAAAwM,OAAAhkB,UAAAqiB,YAGA,CAH2C,CAAA,CAG3C,CAAArM,CAAA,CACIwB,CAAAwM,OAAAhkB,UADJ,CAEI,eAFJ,CAGI,QAAQ,CAACqV,CAAD,CAAU,CACd,MAAI9T,EAAA,CAAiB,IAAjB,CAAJ,CACW,CAAA,CADX,CAGO8T,CAAAkM,MAAA,CAAc,IAAd,CAAoB,EAAAthB,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAJO,CAHtB,CAwCJ,EA5BAqX,CAAAyM,QAAAjkB,UAAA0M,KA4BA,CA5BqC,CAAA,CA4BrC,CA1BA+K,EAAA,CAAOD,CAAA0M,KAAAlkB,UAAP,CAAmC,CAC/B0M,KAAM,CAAA,CADyB,CAE/B4D,YAAa,CAAA,CAFkB,CAG/BwS,SAAU,CAAA,CAHqB,CAAnC,CA0BA,CApBArL,EAAA,CAAOD,CAAAuK,OAAA/hB,UAAP,CAAqC,CACjC0M,KAAM,CAAA,CAD2B,CAEjCoW,SAAU,CAAA,CAFuB,CAArC,CAoBA,CAfA9M,CAAA,CAAKuB,CAAAvX,UAAL,CAAuB,YAAvB,CAAqC,QAAQ,CAACqV,CAAD,CAAU8O,CAAV,CAAe,CACxD9O,CAAAnV,KAAA,CAAa,IAAb,CAAmBikB,CAAnB,CAAwB,CAAA,CAAxB,CACqB,EAAA,CAArB,GAAI,IAAAb,QAAJ,EAA8B,IAAA/M,IAA9B,EAA0C,IAAAxD,OAA1C,EAAyD,IAAAwC,MAAzD,EACI,IAAAgB,IAAAvN,MAAA,EACA,CAAA,IAAAuM,MAAAc,KAAA,CAAgB,CACZG,KAAM,EADM,CAAhB,CAFJ,EAMI,IAAA7V,MAAAyjB,OAAA,EARoD,CAA5D,CAeA;AAAAxkB,CAAAqW,MAAAjW,UAAAqkB,UAAAlc,KAAA,CAAiC,QAAQ,CAACxH,CAAD,CAAQ,CAuC7C+W,EAAA,CAAS/W,CAAT,CAAgB,SAAhB,CA7BA2jB,QAAkB,EAAG,CAEZ,CAAA5jB,CAAA,CAAsBC,CAAtB,CAAL,EAAqCA,CAAA4jB,SAArC,GACI5jB,CAAA4jB,SAEA,CAFiB,CAAA,CAEjB,CAAI5jB,CAAA4U,MAAJ,EACI5U,CAAA4U,MAAAc,KAAA,CAAiB,CACbG,KAAM,EADO,CAAjB,CAJR,CAUI7V,EAAAoS,OAAJ,EAAoBpS,CAAA4V,IAApB,EAAiC7V,CAAA,CAAsBC,CAAtB,CAAjC,GACIA,CAAA4jB,SAGA,CAHiB,CAAA,CAGjB,CAAA5jB,CAAA4V,IAAA3B,eAAA,CAAyBjU,CAAzB,CAJJ,CAQIA,EAAAuV,YAAJ,EAAyBvV,CAAAyJ,MAAzB,EAA6D,CAA7D,CAAwCzJ,CAAAyJ,MAAA3J,OAAxC,EAAkEE,CAAA2J,MAAlE,EAAsG,CAAtG,CAAiF3J,CAAA2J,MAAA7J,OAAjF,EACIE,CAAAuV,YAAAE,UAAA,CACIzV,CAAAyJ,MAAA,CAAY,CAAZ,CAAAkE,IADJ,CAEI3N,CAAA2J,MAAA,CAAY,CAAZ,CAAAgE,IAFJ,CArBa,CA6BrB,CACAoJ,GAAA,CAAS/W,CAAT,CAAgB,QAAhB,CArCA6jB,QAAoB,EAAG,CACf7jB,CAAA4V,IAAJ,EAAiB7V,CAAA,CAAsBC,CAAtB,CAAjB,EACIA,CAAA4V,IAAA5O,OAAA,CAAiBhH,CAAjB,CAFe,CAqCvB,CAxC6C,CAAjD,CA5VJ,EACqC,WAAjC,GAAI,MAAOf,EAAA6kB,gBAAX,CAEI7kB,CAAA6kB,gBAAA,EAFJ,CAII7kB,CAAA8kB,MAAA,CAAQ,EAAR,CA3wEC,CAAZ,CAAA,CA8oFC/kB,CA9oFD,CADkB,CANtB;",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","patientMax","args","Array","prototype","slice","call","arguments","r","Number","MAX_VALUE","each","t","length","isChartSeriesBoosting","chart","sboostCount","series","i","processedXData","options","data","points","boostThreshold","pick","boost","seriesThreshold","isSeriesBoosting","GLShader","gl","stringToProgram","str","type","shader","createShader","VERTEX_SHADER","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","uloc","n","getUniformLocation","shaderProgram","v","vertShade","f","fragShade","createProgram","attachShader","linkProgram","useProgram","bindAttribLocation","pUniform","psUniform","fillColorUniform","isBubbleUniform","bubbleSizeAbsUniform","bubbleSizeAreaUniform","uSamplerUniform","skipTranslationUniform","isCircleUniform","isInverted","setUniform","name","val","u","uLocations","uniform1f","setBubbleUniforms","zCalcMin","zCalcMax","seriesOptions","zMin","zMax","Math","min","max","displayNegative","zThreshold","uniform1i","sizeBy","sizeByAbsoluteValue","minPxSize","maxPxSize","bind","program","getProgram","create","setPMatrix","m","uniformMatrix4fv","setColor","color","uniform4f","setPointSize","p","setSkipTranslation","flag","setTexture","setDrawAsCircle","reset","setInverted","destroy","deleteProgram","GLVertexBuffer","dataComponents","buffer","vertAttribute","components","preAllocated","iterator","deleteBuffer","vertexAttribPointer","FLOAT","build","dataIn","attrib","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","getAttribLocation","enableVertexAttribArray","render","from","to","drawMode","drawArrays","toUpperCase","allocate","size","push","x","y","a","b","GLRenderer","postRenderCallback","seriesPointCount","isStacked","xData","s","stacking","asBar","clear","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","pushSeriesData","inst","pushColor","colorData","vertice","checkTreshold","pointSize","settings","usePreallocated","vbuffer","pushRect","w","h","pushSupplementPoint","point","useGPUTranslations","skipTranslation","xAxis","toPixels","yAxis","isRange","pointArrayMap","join","rawData","xExtremes","getExtremes","xMin","xMax","yExtremes","yMin","yMax","yData","processedYData","zData","processedZData","useRaw","lastX","minVal","scolor","sdata","closestLeft","MIN_VALUE","closestRight","boostData","closestPointRangePx","node","levelDynamic","sort","plotY","pointAttr","undefined","isNaN","shapeArgs","colorAttribs","swidth","fill","rgba","stroke","width","height","d","z","px","nx","nextInside","prevInside","drawAsBar","isXInside","isYInside","index","stackY","requireSorting","pcolor","hasMarkers","abs","flush","markerData","setXAxis","axis","transA","minPixelPadding","pointRange","len","pos","horiz","setYAxis","setThreshold","has","translation","chartWidth","chartHeight","timeRendering","console","time","viewport","lineWidth","isMS","textureIsReady","bindTexture","TEXTURE_2D","circleTextureHandle","inverted","si","threshold","hasThreshold","isNumber","translatedThreshold","getThreshold","yBottom","showMarkers","marker","enabled","isRadial","radius","fillColor","fillOpacity","setOpacity","Color","get","colorByPoint","colors","useAlpha","boostBlending","blendFunc","SRC_ALPHA","ONE","blendEquation","FUNC_ADD","DST_COLOR","ZERO","FUNC_MIN","blendFuncSeparate","ONE_MINUS_SRC_ALPHA","cbuffer","asCircle","timeEnd","renderWhenReady","renderer","forExport","isInited","setTimeout","circleTexture","doc","createElement","circleCtx","getContext","timeSeriesProcessing","timeSetup","allocateBufferForSingleSeries","pushSeries","markerTo","markerFrom","showMarksers","setSize","inited","init","canvas","noFlush","contexts","enable","BLEND","disable","DEPTH_TEST","depthMask","FALSE","createTexture","fillStyle","beginPath","arc","PI","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_LINEAR","generateMipmap","e","valid","getGL","allocateBuffer","setOptions","merge","createAndAttachRenderer","target","targetGroup","seriesGroup","group","swapXY","proceed","c","image","add","boostClipRect","clipRect","plotLeft","plotTop","plotWidth","clip","fn","wrap","Chart","markerGroup","g","translate","attr","style","ogl","href","toDataURL","renderIfNotSeriesBoosting","allocateIfNotSeriesBoosting","eachAsync","arr","finalFunc","chunkSize","noTimeout","CHUNK_SIZE","win","requestAnimationFrame","pointDrawHandler","document","noop","Series","seriesTypes","extend","addEvent","fireEvent","grep","plotOptions","getOptions","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","getPoint","Series.prototype.getPoint","boostPoint","pointClass","category","dist","distX","plotX","apply","hoverPoints","hoverPoint","hasExtremes","method","branch","letItPass","animate","column","arearange","treemap","hasWebGLSupport","context","WebGLRenderingContext","directTouch","allowDG","checkX","destroyGraphics","graphic","prop","renderCanvas","pointTaken","lastClientX","sampling","enableMouseTracking","cropStart","maxVal","minI","maxI","addKDPoint","clientX","visible","graph","plotGroup","buildKDTree","processPoint","low","chartDestroyed","ceil","doneProcessing","stickyTracking","bubble","scatter","area","vis","redraw","callbacks","preRender","didBoost","canvasToSVG","initCanvasBoost","error"]
}
/base/000_base/node_modules/highcharts/js/modules/boost.src.js
@@ -0,0 +1,2721 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Boost module
*
* (c) 2010-2017 Highsoft AS
* Author: Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* License: www.highcharts.com/license
* Author: Christer Vasseng, Torstein Honsi
*
* This is an experimental Highcharts module that draws long data series on a canvas
* in order to increase performance of the initial load time and tooltip responsiveness.
*
* Compatible with WebGL compatible browsers (not IE < 11).
*
* Development plan
* - Column range.
* - Check how it works with Highstock and data grouping. Currently it only works when navigator.adaptToUpdatedData
* is false. It is also recommended to set scrollbar.liveRedraw to false.
* - Check inverted charts.
* - Chart callback should be async after last series is drawn. (But not necessarily, we don't do
that with initial series animation).
*
* If this module is taken in as part of the core
* - All the loading logic should be merged with core. Update styles in the core.
* - Most of the method wraps should probably be added directly in parent methods.
*
* Notes for boost mode
* - Area lines are not drawn
* - Lines are not drawn on scatter charts
* - Zones and negativeColor don't work
* - Columns are always one pixel wide. Don't set the threshold too low.
* - Disable animations
* - Marker shapes are not supported: markers will always be circles
*
* Optimizing tips for users
* - Set extremes (min, max) explicitly on the axes in order for Highcharts to avoid computing extremes.
* - Set enableMouseTracking to false on the series to improve total rendering time.
* - The default threshold is set based on one series. If you have multiple, dense series, the combined
* number of points drawn gets higher, and you may want to set the threshold lower in order to
* use optimizations.
* - If drawing large scatter charts, it's beneficial to set the marker radius to a value
* less than 1. This is to add additional spacing to make the chart more readable.
* - If the value increments on both the X and Y axis aren't small, consider setting
* useGPUTranslations to true on the boost settings object. If you do this and
* the increments are small (e.g. datetime axis with small time increments)
* it may cause rendering issues due to floating point rounding errors,
* so your millage may vary.
*
* Settings
* There are two ways of setting the boost threshold:
* - Per. series: boost based on number of points in individual series
* - Per. chart: boost based on the number of series
*
* To set the series boost threshold, set seriesBoostThreshold on the chart object.
* To set the series-specific threshold, set boostThreshold on the series object.
*
* In addition, the following can be set in the boost object:
* {
* //Wether or not to use alpha blending
* useAlpha: boolean - default: true
* //Set to true to perform translations on the GPU.
* //Much faster, but may cause rendering issues
* //when using values far from 0 due to floating point
* //rounding issues
* useGPUTranslations: boolean - default: false
* //Use pre-allocated buffers, much faster,
* //but may cause rendering issues with some data sets
* usePreallocated: boolean - default: false
* //Output rendering time in console
* timeRendering: boolean - default: false
* //Output processing time in console
* timeSeriesProcessing: boolean - default: false
* //Output setup time in console
* timeSetup: boolean - default: false
* }
*/
 
/**
* Set the series threshold for when the boost should kick in globally.
*
* Setting to e.g. 20 will cause the whole chart to enter boost mode
* if there are 20 or more series active. When the chart is in boost mode,
* every series in it will be rendered to a common canvas. This offers
* a significant speed improvment in charts with a very high
* amount of series.
*
* Note: only available when including the boost module.
*
* @default null
* @apioption boost.seriesThreshold
*/
 
/**
* Set the point threshold for when a series should enter boost mode.
*
* Setting it to e.g. 2000 will cause the series to enter boost mode
* when there are 2000 or more points in the series.
*
* Note: only available when including the boost module.
*
* @default 5000
* @apioption series.boostThreshold
*/
 
/* global Float32Array */
 
 
var win = H.win,
doc = win.document,
noop = function() {},
Color = H.Color,
Series = H.Series,
seriesTypes = H.seriesTypes,
each = H.each,
extend = H.extend,
addEvent = H.addEvent,
fireEvent = H.fireEvent,
grep = H.grep,
isNumber = H.isNumber,
merge = H.merge,
pick = H.pick,
wrap = H.wrap,
plotOptions = H.getOptions().plotOptions,
CHUNK_SIZE = 50000,
index;
 
// Register color names since GL can't render those directly.
Color.prototype.names = {
aliceblue: '#f0f8ff',
antiquewhite: '#faebd7',
aqua: '#00ffff',
aquamarine: '#7fffd4',
azure: '#f0ffff',
beige: '#f5f5dc',
bisque: '#ffe4c4',
black: '#000000',
blanchedalmond: '#ffebcd',
blue: '#0000ff',
blueviolet: '#8a2be2',
brown: '#a52a2a',
burlywood: '#deb887',
cadetblue: '#5f9ea0',
chartreuse: '#7fff00',
chocolate: '#d2691e',
coral: '#ff7f50',
cornflowerblue: '#6495ed',
cornsilk: '#fff8dc',
crimson: '#dc143c',
cyan: '#00ffff',
darkblue: '#00008b',
darkcyan: '#008b8b',
darkgoldenrod: '#b8860b',
darkgray: '#a9a9a9',
darkgreen: '#006400',
darkkhaki: '#bdb76b',
darkmagenta: '#8b008b',
darkolivegreen: '#556b2f',
darkorange: '#ff8c00',
darkorchid: '#9932cc',
darkred: '#8b0000',
darksalmon: '#e9967a',
darkseagreen: '#8fbc8f',
darkslateblue: '#483d8b',
darkslategray: '#2f4f4f',
darkturquoise: '#00ced1',
darkviolet: '#9400d3',
deeppink: '#ff1493',
deepskyblue: '#00bfff',
dimgray: '#696969',
dodgerblue: '#1e90ff',
feldspar: '#d19275',
firebrick: '#b22222',
floralwhite: '#fffaf0',
forestgreen: '#228b22',
fuchsia: '#ff00ff',
gainsboro: '#dcdcdc',
ghostwhite: '#f8f8ff',
gold: '#ffd700',
goldenrod: '#daa520',
gray: '#808080',
green: '#008000',
greenyellow: '#adff2f',
honeydew: '#f0fff0',
hotpink: '#ff69b4',
indianred: '#cd5c5c',
indigo: '#4b0082',
ivory: '#fffff0',
khaki: '#f0e68c',
lavender: '#e6e6fa',
lavenderblush: '#fff0f5',
lawngreen: '#7cfc00',
lemonchiffon: '#fffacd',
lightblue: '#add8e6',
lightcoral: '#f08080',
lightcyan: '#e0ffff',
lightgoldenrodyellow: '#fafad2',
lightgrey: '#d3d3d3',
lightgreen: '#90ee90',
lightpink: '#ffb6c1',
lightsalmon: '#ffa07a',
lightseagreen: '#20b2aa',
lightskyblue: '#87cefa',
lightslateblue: '#8470ff',
lightslategray: '#778899',
lightsteelblue: '#b0c4de',
lightyellow: '#ffffe0',
lime: '#00ff00',
limegreen: '#32cd32',
linen: '#faf0e6',
magenta: '#ff00ff',
maroon: '#800000',
mediumaquamarine: '#66cdaa',
mediumblue: '#0000cd',
mediumorchid: '#ba55d3',
mediumpurple: '#9370d8',
mediumseagreen: '#3cb371',
mediumslateblue: '#7b68ee',
mediumspringgreen: '#00fa9a',
mediumturquoise: '#48d1cc',
mediumvioletred: '#c71585',
midnightblue: '#191970',
mintcream: '#f5fffa',
mistyrose: '#ffe4e1',
moccasin: '#ffe4b5',
navajowhite: '#ffdead',
navy: '#000080',
oldlace: '#fdf5e6',
olive: '#808000',
olivedrab: '#6b8e23',
orange: '#ffa500',
orangered: '#ff4500',
orchid: '#da70d6',
palegoldenrod: '#eee8aa',
palegreen: '#98fb98',
paleturquoise: '#afeeee',
palevioletred: '#d87093',
papayawhip: '#ffefd5',
peachpuff: '#ffdab9',
peru: '#cd853f',
pink: '#ffc0cb',
plum: '#dda0dd',
powderblue: '#b0e0e6',
purple: '#800080',
red: '#ff0000',
rosybrown: '#bc8f8f',
royalblue: '#4169e1',
saddlebrown: '#8b4513',
salmon: '#fa8072',
sandybrown: '#f4a460',
seagreen: '#2e8b57',
seashell: '#fff5ee',
sienna: '#a0522d',
silver: '#c0c0c0',
skyblue: '#87ceeb',
slateblue: '#6a5acd',
slategray: '#708090',
snow: '#fffafa',
springgreen: '#00ff7f',
steelblue: '#4682b4',
tan: '#d2b48c',
teal: '#008080',
thistle: '#d8bfd8',
tomato: '#ff6347',
turquoise: '#40e0d0',
violet: '#ee82ee',
violetred: '#d02090',
wheat: '#f5deb3',
white: '#ffffff',
whitesmoke: '#f5f5f5',
yellow: '#ffff00',
yellowgreen: '#9acd32'
};
 
/**
* Tolerant max() funciton
* @return {number} max value
*/
function patientMax() {
var args = Array.prototype.slice.call(arguments),
r = -Number.MAX_VALUE;
 
each(args, function(t) {
if (typeof t !== 'undefined' && typeof t.length !== 'undefined') {
//r = r < t.length ? t.length : r;
if (t.length > 0) {
r = t.length;
return true;
}
}
});
 
return r;
}
 
/*
* Returns true if we should force chart series boosting
*/
function shouldForceChartSeriesBoosting(chart) {
// If there are more than five series currently boosting,
// we should boost the whole chart to avoid running out of webgl contexts.
var sboostCount = 0,
series;
 
if (chart.series.length > 1) {
for (var i = 0; i < chart.series.length; i++) {
series = chart.series[i];
if (patientMax(
series.processedXData,
series.options.data,
series.points
) >= (series.options.boostThreshold || Number.MAX_VALUE)) {
sboostCount++;
}
}
}
 
return sboostCount > 5;
}
 
/*
* Returns true if the chart is in series boost mode
* @param chart {Highchart.Chart} - the chart to check
* @returns {Boolean} - true if the chart is in series boost mode
*/
function isChartSeriesBoosting(chart) {
return shouldForceChartSeriesBoosting(chart) || chart.series.length >= pick(
chart.options.boost && chart.options.boost.seriesThreshold,
50
);
}
 
/*
* Returns true if the series is in boost mode
* @param series {Highchart.Series} - the series to check
* @returns {boolean} - true if the series is in boost mode
*/
function isSeriesBoosting(series) {
return isChartSeriesBoosting(series.chart) ||
patientMax(
series.processedXData,
series.options.data,
series.points
) >= (series.options.boostThreshold || Number.MAX_VALUE);
}
 
////////////////////////////////////////////////////////////////////////////////
// START OF WEBGL ABSTRACTIONS
 
/*
* A static shader mimicing axis translation functions found in parts/Axis
* @param gl {WebGLContext} - the context in which the shader is active
*/
function GLShader(gl) {
var vertShade = [
/* eslint-disable */
'#version 100',
'precision highp float;',
 
'attribute vec4 aVertexPosition;',
'attribute vec4 aColor;',
 
'varying highp vec2 position;',
'varying highp vec4 vColor;',
 
'uniform mat4 uPMatrix;',
'uniform float pSize;',
 
'uniform float translatedThreshold;',
'uniform bool hasThreshold;',
 
'uniform bool skipTranslation;',
 
'uniform float xAxisTrans;',
'uniform float xAxisMin;',
'uniform float xAxisMinPad;',
'uniform float xAxisPointRange;',
'uniform float xAxisLen;',
'uniform bool xAxisPostTranslate;',
'uniform float xAxisOrdinalSlope;',
'uniform float xAxisOrdinalOffset;',
'uniform float xAxisPos;',
'uniform bool xAxisCVSCoord;',
 
'uniform float yAxisTrans;',
'uniform float yAxisMin;',
'uniform float yAxisMinPad;',
'uniform float yAxisPointRange;',
'uniform float yAxisLen;',
'uniform bool yAxisPostTranslate;',
'uniform float yAxisOrdinalSlope;',
'uniform float yAxisOrdinalOffset;',
'uniform float yAxisPos;',
'uniform bool yAxisCVSCoord;',
 
'uniform bool isBubble;',
'uniform bool bubbleSizeByArea;',
'uniform float bubbleZMin;',
'uniform float bubbleZMax;',
'uniform float bubbleZThreshold;',
'uniform float bubbleMinSize;',
'uniform float bubbleMaxSize;',
'uniform bool bubbleSizeAbs;',
'uniform bool isInverted;',
 
'float bubbleRadius(){',
'float value = aVertexPosition.w;',
'float zMax = bubbleZMax;',
'float zMin = bubbleZMin;',
'float radius = 0.0;',
'float pos = 0.0;',
'float zRange = zMax - zMin;',
 
'if (bubbleSizeAbs){',
'value = value - bubbleZThreshold;',
'zMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);',
'zMin = 0.0;',
'}',
 
'if (value < zMin){',
'radius = bubbleZMin / 2.0 - 1.0;',
'} else {',
'pos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;',
'if (bubbleSizeByArea && pos > 0.0){',
'pos = sqrt(pos);',
'}',
'radius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;',
'}',
 
'return radius * 2.0;',
'}',
 
'float translate(float val,',
'float pointPlacement,',
'float localA,',
'float localMin,',
'float minPixelPadding,',
'float pointRange,',
'float len,',
'bool cvsCoord',
'){',
 
'float sign = 1.0;',
'float cvsOffset = 0.0;',
 
'if (cvsCoord) {',
'sign *= -1.0;',
'cvsOffset = len;',
'}',
 
'return sign * (val - localMin) * localA + cvsOffset + ',
'(sign * minPixelPadding);', //' + localA * pointPlacement * pointRange;',
'}',
 
'float xToPixels(float value){',
'if (skipTranslation){',
'return value;// + xAxisPos;',
'}',
 
'return translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord);// + xAxisPos;',
'}',
 
'float yToPixels(float value, float checkTreshold){',
'float v;',
'if (skipTranslation){',
'v = value;// + yAxisPos;',
'} else {',
'v = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord);// + yAxisPos;',
'}',
'if (checkTreshold > 0.0 && hasThreshold) {',
'v = min(v, translatedThreshold);',
'}',
'return v;',
'}',
 
'void main(void) {',
'if (isBubble){',
'gl_PointSize = bubbleRadius();',
'} else {',
'gl_PointSize = pSize;',
'}',
//'gl_PointSize = 10.0;',
'vColor = aColor;',
 
'if (isInverted) {',
'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.y) + yAxisPos, yToPixels(aVertexPosition.x, aVertexPosition.z) + xAxisPos, 0.0, 1.0);',
'} else {',
'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);',
'}',
//'gl_Position = uPMatrix * vec4(aVertexPosition.x, aVertexPosition.y, 0.0, 1.0);',
'}'
/* eslint-enable */
].join('\n'),
//Fragment shader source
fragShade = [
/* eslint-disable */
'precision highp float;',
'uniform vec4 fillColor;',
'varying highp vec2 position;',
'varying highp vec4 vColor;',
'uniform sampler2D uSampler;',
'uniform bool isCircle;',
'uniform bool hasColor;',
 
// 'vec4 toColor(float value, vec2 point) {',
// 'return vec4(0.0, 0.0, 0.0, 0.0);',
// '}',
 
'void main(void) {',
'vec4 col = fillColor;',
 
'if (hasColor) {',
'col = vColor;',
'}',
 
'if (isCircle) {',
'gl_FragColor = col * texture2D(uSampler, gl_PointCoord.st);',
'} else {',
'gl_FragColor = col;',
'}',
'}'
/* eslint-enable */
].join('\n'),
uLocations = {},
//The shader program
shaderProgram,
//Uniform handle to the perspective matrix
pUniform,
//Uniform for point size
psUniform,
//Uniform for fill color
fillColorUniform,
//Uniform for isBubble
isBubbleUniform,
//Uniform for bubble abs sizing
bubbleSizeAbsUniform,
bubbleSizeAreaUniform,
//Skip translation uniform
skipTranslationUniform,
//Set to 1 if circle
isCircleUniform,
//Uniform for invertion
isInverted,
//Texture uniform
uSamplerUniform;
 
/* String to shader program
* @param {string} str - the program source
* @param {string} type - the program type: either `vertex` or `fragment`
* @returns {bool|shader}
*/
function stringToProgram(str, type) {
var t = type === 'vertex' ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER,
shader = gl.createShader(t);
 
gl.shaderSource(shader, str);
gl.compileShader(shader);
 
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
//console.error('shader error:', gl.getShaderInfoLog(shader));
return false;
}
return shader;
}
 
/*
* Create the shader.
* Loads the shader program statically defined above
*/
function createShader() {
var v = stringToProgram(vertShade, 'vertex'),
f = stringToProgram(fragShade, 'fragment');
 
if (!v || !f) {
shaderProgram = false;
//console.error('error creating shader program');
return false;
}
 
function uloc(n) {
return gl.getUniformLocation(shaderProgram, n);
}
 
shaderProgram = gl.createProgram();
 
gl.attachShader(shaderProgram, v);
gl.attachShader(shaderProgram, f);
gl.linkProgram(shaderProgram);
 
gl.useProgram(shaderProgram);
 
gl.bindAttribLocation(shaderProgram, 0, 'aVertexPosition');
 
pUniform = uloc('uPMatrix');
psUniform = uloc('pSize');
fillColorUniform = uloc('fillColor');
isBubbleUniform = uloc('isBubble');
bubbleSizeAbsUniform = uloc('bubbleSizeAbs');
bubbleSizeAreaUniform = uloc('bubbleSizeByArea');
uSamplerUniform = uloc('uSampler');
skipTranslationUniform = uloc('skipTranslation');
isCircleUniform = uloc('isCircle');
isInverted = uloc('isInverted');
 
return true;
}
 
/*
* Destroy the shader
*/
function destroy() {
if (gl && shaderProgram) {
gl.deleteProgram(shaderProgram);
}
}
 
/*
* Bind the shader.
* This makes the shader the active one until another one is bound,
* or until 0 is bound.
*/
function bind() {
gl.useProgram(shaderProgram);
}
 
/*
* Set a uniform value.
* This uses a hash map to cache uniform locations.
* @param name {string} - the name of the uniform to set
* @param val {float} - the value to set
*/
function setUniform(name, val) {
var u = uLocations[name] = uLocations[name] ||
gl.getUniformLocation(shaderProgram, name);
gl.uniform1f(u, val);
}
 
/*
* Set the active texture
* @param texture - the texture
*/
function setTexture() {
gl.uniform1i(uSamplerUniform, 0);
}
 
/*
* Set if inversion state
* @flag is the state
*/
function setInverted(flag) {
gl.uniform1i(isInverted, flag);
}
 
////////////////////////////////////////////////////////////////////////////
 
/*
* Enable/disable circle drawing
*/
function setDrawAsCircle(flag) {
gl.uniform1i(isCircleUniform, flag ? 1 : 0);
}
 
/*
* Flush
*/
function reset() {
gl.uniform1i(isBubbleUniform, 0);
gl.uniform1i(isCircleUniform, 0);
}
 
/*
* Set bubble uniforms
* @param series {Highcharts.Series} - the series to use
*/
function setBubbleUniforms(series, zCalcMin, zCalcMax) {
var seriesOptions = series.options,
zMin = Number.MAX_VALUE,
zMax = -Number.MAX_VALUE;
 
if (series.type === 'bubble') {
zMin = pick(seriesOptions.zMin, Math.min(
zMin,
Math.max(
zCalcMin,
seriesOptions.displayNegative === false ?
seriesOptions.zThreshold : -Number.MAX_VALUE
)
));
 
zMax = pick(seriesOptions.zMax, Math.max(zMax, zCalcMax));
 
gl.uniform1i(isBubbleUniform, 1);
gl.uniform1i(isCircleUniform, 1);
gl.uniform1i(bubbleSizeAreaUniform, series.options.sizeBy !== 'width');
gl.uniform1i(bubbleSizeAbsUniform, series.options.sizeByAbsoluteValue);
 
setUniform('bubbleZMin', zMin);
setUniform('bubbleZMax', zMax);
setUniform('bubbleZThreshold', series.options.zThreshold);
setUniform('bubbleMinSize', series.minPxSize);
setUniform('bubbleMaxSize', series.maxPxSize);
}
}
 
/*
* Set the Color uniform.
* @param color {Array<float>} - an array with RGBA values
*/
function setColor(color) {
gl.uniform4f(
fillColorUniform,
color[0] / 255.0,
color[1] / 255.0,
color[2] / 255.0,
color[3]
);
}
 
/*
* Set skip translation
*/
function setSkipTranslation(flag) {
gl.uniform1i(skipTranslationUniform, flag === true ? 1 : 0);
}
 
/*
* Set the perspective matrix
* @param m {Matrix4x4} - the matrix
*/
function setPMatrix(m) {
gl.uniformMatrix4fv(pUniform, false, m);
}
 
/*
* Set the point size.
* @param p {float} - point size
*/
function setPointSize(p) {
gl.uniform1f(psUniform, p);
}
 
/*
* Get the shader program handle
* @returns {GLInt} - the handle for the program
*/
function getProgram() {
return shaderProgram;
}
 
if (gl) {
createShader();
}
 
return {
psUniform: function() {
return psUniform;
},
pUniform: function() {
return pUniform;
},
fillColorUniform: function() {
return fillColorUniform;
},
setBubbleUniforms: setBubbleUniforms,
bind: bind,
program: getProgram,
create: createShader,
setUniform: setUniform,
setPMatrix: setPMatrix,
setColor: setColor,
setPointSize: setPointSize,
setSkipTranslation: setSkipTranslation,
setTexture: setTexture,
setDrawAsCircle: setDrawAsCircle,
reset: reset,
setInverted: setInverted,
destroy: destroy
};
}
 
/*
* Vertex Buffer abstraction
* A vertex buffer is a set of vertices which are passed to the GPU
* in a single call.
* @param gl {WebGLContext} - the context in which to create the buffer
* @param shader {GLShader} - the shader to use
*/
function GLVertexBuffer(gl, shader, dataComponents /*, type */ ) {
var buffer = false,
vertAttribute = false,
components = dataComponents || 2,
preAllocated = false,
iterator = 0,
data;
 
// type = type || 'float';
 
function destroy() {
if (buffer) {
gl.deleteBuffer(buffer);
}
}
 
/*
* Build the buffer
* @param dataIn {Array<float>} - a 0 padded array of indices
* @param attrib {String} - the name of the Attribute to bind the buffer to
* @param dataComponents {Integer} - the number of components per. indice
*/
function build(dataIn, attrib, dataComponents) {
 
data = dataIn || [];
 
if ((!data || data.length === 0) && !preAllocated) {
//console.error('trying to render empty vbuffer');
buffer = false;
return false;
}
 
components = dataComponents || components;
 
if (buffer) {
gl.deleteBuffer(buffer);
}
 
buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(
gl.ARRAY_BUFFER,
preAllocated || new Float32Array(data),
gl.STATIC_DRAW
);
 
// gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');
vertAttribute = gl.getAttribLocation(shader.program(), attrib);
gl.enableVertexAttribArray(vertAttribute);
 
return true;
}
 
/*
* Bind the buffer
*/
function bind() {
if (!buffer) {
return false;
}
 
// gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');
//gl.enableVertexAttribArray(vertAttribute);
//gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.vertexAttribPointer(vertAttribute, components, gl.FLOAT, false, 0, 0);
//gl.enableVertexAttribArray(vertAttribute);
}
 
/*
* Render the buffer
* @param from {Integer} - the start indice
* @param to {Integer} - the end indice
* @param drawMode {String} - the draw mode
*/
function render(from, to, drawMode) {
var length = preAllocated ? preAllocated.length : data.length;
 
if (!buffer) {
return false;
}
 
if (!length) {
return false;
}
 
if (!from || from > length || from < 0) {
from = 0;
}
 
if (!to || to > length) {
to = length;
}
 
drawMode = drawMode || 'points';
 
gl.drawArrays(
gl[drawMode.toUpperCase()],
from / components,
(to - from) / components
);
 
return true;
}
 
function push(x, y, a, b) {
if (preAllocated) { // && iterator <= preAllocated.length - 4) {
preAllocated[++iterator] = x;
preAllocated[++iterator] = y;
preAllocated[++iterator] = a;
preAllocated[++iterator] = b;
}
}
 
/*
* Note about pre-allocated buffers:
* - This is slower for charts with many series
*/
function allocate(size) {
size *= 4;
iterator = -1;
 
//if (!preAllocated || (preAllocated && preAllocated.length !== size)) {
preAllocated = new Float32Array(size);
//}
}
 
////////////////////////////////////////////////////////////////////////////
return {
destroy: destroy,
bind: bind,
data: data,
build: build,
render: render,
allocate: allocate,
push: push
};
}
 
/* Main renderer. Used to render series.
* Notes to self:
* - May be able to build a point map by rendering to a separate canvas
* and encoding values in the color data.
* - Need to figure out a way to transform the data quicker
*/
function GLRenderer(postRenderCallback) {
var // Shader
shader = false,
// Vertex buffers - keyed on shader attribute name
vbuffer = false,
// Opengl context
gl = false,
// Width of our viewport in pixels
width = 0,
// Height of our viewport in pixels
height = 0,
// The data to render - array of coordinates
data = false,
// The marker data
markerData = false,
// Is the texture ready?
textureIsReady = false,
// Exports
exports = {},
// Is it inited?
isInited = false,
// The series stack
series = [],
// Texture for circles
circleTexture = doc.createElement('canvas'),
// Context for circle texture
circleCtx = circleTexture.getContext('2d'),
// Handle for the circle texture
circleTextureHandle,
// Things to draw as "rectangles" (i.e lines)
asBar = {
'column': true,
'area': true
},
asCircle = {
'scatter': true,
'bubble': true
},
//Render settings
settings = {
pointSize: 1,
lineWidth: 3,
fillColor: '#AA00AA',
useAlpha: true,
usePreallocated: false,
useGPUTranslations: false,
timeRendering: false,
timeSeriesProcessing: false,
timeSetup: false
};
 
////////////////////////////////////////////////////////////////////////////
 
function setOptions(options) {
merge(true, settings, options);
}
 
function seriesPointCount(series) {
var isStacked,
xData,
s;
 
if (isSeriesBoosting(series)) {
isStacked = !!series.options.stacking;
xData = series.xData || series.options.xData || series.processedXData;
s = (isStacked ? series.data : (xData || series.options.data)).length;
 
if (series.type === 'treemap') {
s *= 12;
} else if (series.type === 'heatmap') {
s *= 6;
} else if (asBar[series.type]) {
s *= 2;
}
 
return s;
}
 
return 0;
}
 
/* Allocate a float buffer to fit all series */
function allocateBuffer(chart) {
var s = 0;
 
if (!settings.usePreallocated) {
return;
}
 
each(chart.series, function(series) {
if (isSeriesBoosting(series)) {
s += seriesPointCount(series);
}
});
 
vbuffer.allocate(s);
}
 
function allocateBufferForSingleSeries(series) {
var s = 0;
 
if (!settings.usePreallocated) {
return;
}
 
if (isSeriesBoosting(series)) {
s = seriesPointCount(series);
}
 
vbuffer.allocate(s);
}
 
/*
* Returns an orthographic perspective matrix
* @param {number} width - the width of the viewport in pixels
* @param {number} height - the height of the viewport in pixels
*/
function orthoMatrix(width, height) {
var near = 0,
far = 1;
 
return [
2 / width, 0, 0, 0,
0, -(2 / height), 0, 0,
0, 0, -2 / (far - near), 0, -1, 1, -(far + near) / (far - near), 1
];
}
 
/*
* Clear the depth and color buffer
*/
function clear() {
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
}
 
/*
* Get the WebGL context
* @returns {WebGLContext} - the context
*/
function getGL() {
return gl;
}
 
/*
* Push data for a single series
* This calculates additional vertices and transforms the data to be
* aligned correctly in memory
*/
function pushSeriesData(series, inst) {
var isRange = series.pointArrayMap &&
series.pointArrayMap.join(',') === 'low,high',
chart = series.chart,
options = series.options,
isStacked = !!options.stacking,
rawData = options.data,
xExtremes = series.xAxis.getExtremes(),
xMin = xExtremes.min,
xMax = xExtremes.max,
yExtremes = series.yAxis.getExtremes(),
yMin = yExtremes.min,
yMax = yExtremes.max,
xData = series.xData || options.xData || series.processedXData,
yData = series.yData || options.yData || series.processedYData,
zData = series.zData || options.zData || series.processedZData,
yAxis = series.yAxis,
xAxis = series.xAxis,
useRaw = !xData || xData.length === 0,
// threshold = options.threshold,
// yBottom = chart.yAxis[0].getThreshold(threshold),
// hasThreshold = isNumber(threshold),
// colorByPoint = series.options.colorByPoint,
// This is required for color by point, so make sure this is
// uncommented if enabling that
// colorIndex = 0,
// Required for color axis support
// caxis,
// connectNulls = options.connectNulls,
// For some reason eslint doesn't pick up that this is actually used
maxVal, //eslint-disable-line no-unused-vars
points = series.points || false,
lastX = false,
minVal,
color,
scolor,
sdata = isStacked ? series.data : (xData || rawData),
closestLeft = {
x: Number.MIN_VALUE,
y: 0
},
closestRight = {
x: Number.MIN_VALUE,
y: 0
};
 
if (options.boostData && options.boostData.length > 0) {
return;
}
 
series.closestPointRangePx = Number.MAX_VALUE;
 
// Push color to color buffer - need to do this per. vertex
function pushColor(color) {
if (color) {
inst.colorData.push(color[0]);
inst.colorData.push(color[1]);
inst.colorData.push(color[2]);
inst.colorData.push(color[3]);
}
}
 
//Push a vertice to the data buffer
function vertice(x, y, checkTreshold, pointSize, color) {
pushColor(color);
if (settings.usePreallocated) {
vbuffer.push(x, y, checkTreshold ? 1 : 0, pointSize || 1);
} else {
data.push(x);
data.push(y);
data.push(checkTreshold ? 1 : 0);
data.push(pointSize || 1);
}
}
 
// Push a rectangle to the data buffer
function pushRect(x, y, w, h, color) {
pushColor(color);
vertice(x + w, y);
pushColor(color);
vertice(x, y);
pushColor(color);
vertice(x, y + h);
 
pushColor(color);
vertice(x, y + h);
pushColor(color);
vertice(x + w, y + h);
pushColor(color);
vertice(x + w, y);
}
 
// Special case for point shapes
if (points && points.length > 0) {
 
// If we're doing points, we assume that the points are already
// translated, so we skip the shader translation.
inst.skipTranslation = true;
// Force triangle draw mode
inst.drawMode = 'triangles';
 
// We don't have a z component in the shader, so we need to sort.
if (points[0].node && points[0].node.levelDynamic) {
points.sort(function(a, b) {
if (a.node) {
if (a.node.levelDynamic > b.node.levelDynamic) {
return 1;
} else if (a.node.levelDynamic < b.node.levelDynamic) {
return -1;
}
}
return 0;
});
}
 
each(points, function(point) {
var plotY = point.plotY,
shapeArgs,
swidth,
pointAttr;
 
if (plotY !== undefined && !isNaN(plotY) && point.y !== null) {
shapeArgs = point.shapeArgs;
 
 
pointAttr = point.series.colorAttribs(point);
 
swidth = pointAttr['stroke-width'] || 0;
 
// Handle point colors
color = H.color(pointAttr.fill).rgba;
color[0] /= 255.0;
color[1] /= 255.0;
color[2] /= 255.0;
 
// So there are two ways of doing this. Either we can
// create a rectangle of two triangles, or we can do a
// point and use point size. Latter is faster, but
// only supports squares. So we're doing triangles.
// We could also use one color per. vertice to get
// better color interpolation.
 
// If there's stroking, we do an additional rect
//if (pointAttr.stroke !== 'none' && swidth && swidth > 0) {
if (series.type === 'treemap') {
swidth = swidth || 1;
scolor = H.color(pointAttr.stroke).rgba;
 
scolor[0] /= 255.0;
scolor[1] /= 255.0;
scolor[2] /= 255.0;
 
pushRect(
shapeArgs.x,
shapeArgs.y,
shapeArgs.width,
shapeArgs.height,
scolor
);
 
swidth /= 2;
}
// } else {
// swidth = 0;
// }
 
pushRect(
shapeArgs.x + swidth,
shapeArgs.y + swidth,
shapeArgs.width - (swidth * 2),
shapeArgs.height - (swidth * 2),
color
);
}
});
 
return;
}
 
// Extract color axis
// each(chart.axes || [], function (a) {
// if (H.ColorAxis && a instanceof H.ColorAxis) {
// caxis = a;
// }
// });
 
each(sdata, function(d, i) {
var x,
y,
z,
px = false,
nx = false,
// This is in fact used.
low, //eslint-disable-line no-unused-vars
chartDestroyed = typeof chart.index === 'undefined',
nextInside = false,
prevInside = false,
pcolor = false,
drawAsBar = asBar[series.type],
isXInside = false,
isYInside = true;
 
if (chartDestroyed) {
return false;
}
 
// Uncomment this to enable color by point.
// This currently left disabled as the charts look really ugly
// when enabled and there's a lot of points.
// Leaving in for the future (tm).
// if (colorByPoint) {
// colorIndex = ++colorIndex % series.chart.options.colors.length;
// pcolor = toRGBAFast(series.chart.options.colors[colorIndex]);
// pcolor[0] /= 255.0;
// pcolor[1] /= 255.0;
// pcolor[2] /= 255.0;
// }
 
if (useRaw) {
x = d[0];
y = d[1];
 
if (sdata[i + 1]) {
nx = sdata[i + 1][0];
}
 
if (sdata[i - 1]) {
px = sdata[i - 1][0];
}
 
if (d.length >= 3) {
z = d[2];
 
if (d[2] > inst.zMax) {
inst.zMax = d[2];
}
 
if (d[2] < inst.zMin) {
inst.zMin = d[2];
}
}
 
} else {
x = d;
y = yData[i];
 
if (sdata[i + 1]) {
nx = sdata[i + 1];
}
 
if (sdata[i - 1]) {
px = sdata[i - 1];
}
 
if (zData && zData.length) {
z = zData[i];
 
if (zData[i] > inst.zMax) {
inst.zMax = zData[i];
}
 
if (zData[i] < inst.zMin) {
inst.zMin = zData[i];
}
}
}
 
if (nx && nx >= xMin && nx <= xMax) {
nextInside = true;
}
 
if (px && px >= xMin && px <= xMax) {
prevInside = true;
}
 
if (isRange) {
if (useRaw) {
y = d.slice(1, 3);
}
 
low = y[0];
y = y[1];
 
} else if (isStacked) {
x = d.x;
y = d.stackY;
low = y - d.y;
}
 
if (!series.requireSorting) {
isYInside = y >= yMin && y <= yMax;
}
 
if (x > xMax && closestRight.x < xMax) {
closestRight.x = x;
closestRight.y = y;
}
 
if (x < xMin && closestLeft.x < xMin) {
closestLeft.x = x;
closestLeft.y = y;
}
 
if (y !== 0 && (!y || !isYInside)) {
return;
}
 
if (x >= xMin && x <= xMax) {
isXInside = true;
}
 
if (!isXInside && !nextInside && !prevInside) {
return;
}
 
// Skip translations - temporary floating point fix
if (!settings.useGPUTranslations) {
inst.skipTranslation = true;
x = xAxis.toPixels(x, true);
y = yAxis.toPixels(y, true);
}
 
if (drawAsBar) {
 
maxVal = y;
minVal = 0;
 
if (y < 0) {
minVal = y;
y = 0;
}
 
if (!settings.useGPUTranslations) {
minVal = yAxis.toPixels(minVal, true);
}
 
// Need to add an extra point here
vertice(x, minVal, 0, 0, pcolor);
}
 
// No markers on out of bounds things.
// Out of bound things are shown if and only if the next
// or previous point is inside the rect.
if (inst.hasMarkers) { // && isXInside) {
// x = H.correctFloat(
// Math.min(Math.max(-1e5, xAxis.translate(
// x,
// 0,
// 0,
// 0,
// 1,
// 0.5,
// false
// )), 1e5)
// );
 
if (lastX !== false) {
series.closestPointRangePx = Math.min(
series.closestPointRangePx,
Math.abs(x - lastX)
);
}
}
 
vertice(
x,
y,
0,
series.type === 'bubble' ? (z || 1) : 2,
pcolor
);
 
// Uncomment this to support color axis.
// if (caxis) {
// color = H.color(caxis.toColor(y)).rgba;
 
// inst.colorData.push(color[0] / 255.0);
// inst.colorData.push(color[1] / 255.0);
// inst.colorData.push(color[2] / 255.0);
// inst.colorData.push(color[3]);
// }
 
lastX = x;
 
//return true;
});
 
function pushSupplementPoint(point) {
if (!settings.useGPUTranslations) {
inst.skipTranslation = true;
point.x = xAxis.toPixels(point.x, true);
point.y = yAxis.toPixels(point.y, true);
}
 
// We should only do this for lines, and we should ignore markers
// since there's no point here that would have a marker.
 
vertice(
point.x,
point.y,
0,
2
);
}
 
if (!lastX) {
// There are no points within the selected range
pushSupplementPoint(closestLeft);
pushSupplementPoint(closestRight);
}
}
 
/*
* Push a series to the renderer
* If we render the series immediatly, we don't have to loop later
* @param s {Highchart.Series} - the series to push
*/
function pushSeries(s) {
if (series.length > 0) {
series[series.length - 1].to = data.length;
if (series[series.length - 1].hasMarkers) {
series[series.length - 1].markerTo = markerData.length;
}
}
 
if (settings.timeSeriesProcessing) {
console.time('building ' + s.type + ' series'); //eslint-disable-line no-console
}
 
series.push({
from: data.length,
markerFrom: markerData.length,
// Push RGBA values to this array to use per. point coloring.
// It should be 0-padded, so each component should be pushed in
// succession.
colorData: [],
series: s,
zMin: Number.MAX_VALUE,
zMax: -Number.MAX_VALUE,
hasMarkers: s.options.marker ? s.options.marker.enabled !== false : false,
showMarksers: true,
drawMode: ({
'area': 'lines',
'arearange': 'lines',
'areaspline': 'line_strip',
'column': 'lines',
'line': 'line_strip',
'scatter': 'points',
'heatmap': 'triangles',
'treemap': 'triangles',
'bubble': 'points'
})[s.type] || 'line_strip'
});
 
// Add the series data to our buffer(s)
pushSeriesData(s, series[series.length - 1]);
 
if (settings.timeSeriesProcessing) {
console.timeEnd('building ' + s.type + ' series'); //eslint-disable-line no-console
}
}
 
/*
* Flush the renderer.
* This removes pushed series and vertices.
* Should be called after clearing and before rendering
*/
function flush() {
series = [];
exports.data = data = [];
markerData = [];
}
 
/*
* Pass x-axis to shader
* @param axis {Highcharts.Axis} - the x-axis
*/
function setXAxis(axis) {
if (!shader) {
return;
}
 
shader.setUniform('xAxisTrans', axis.transA);
shader.setUniform('xAxisMin', axis.min);
shader.setUniform('xAxisMinPad', axis.minPixelPadding);
shader.setUniform('xAxisPointRange', axis.pointRange);
shader.setUniform('xAxisLen', axis.len);
shader.setUniform('xAxisPos', axis.pos);
shader.setUniform('xAxisCVSCoord', !axis.horiz);
}
 
/*
* Pass y-axis to shader
* @param axis {Highcharts.Axis} - the y-axis
*/
function setYAxis(axis) {
if (!shader) {
return;
}
 
shader.setUniform('yAxisTrans', axis.transA);
shader.setUniform('yAxisMin', axis.min);
shader.setUniform('yAxisMinPad', axis.minPixelPadding);
shader.setUniform('yAxisPointRange', axis.pointRange);
shader.setUniform('yAxisLen', axis.len);
shader.setUniform('yAxisPos', axis.pos);
shader.setUniform('yAxisCVSCoord', !axis.horiz);
}
 
/*
* Set the translation threshold
* @param has {boolean} - has threshold flag
* @param translation {Float} - the threshold
*/
function setThreshold(has, translation) {
shader.setUniform('hasThreshold', has);
shader.setUniform('translatedThreshold', translation);
}
 
/*
* Render the data
* This renders all pushed series.
*/
function render(chart) {
 
if (chart) {
if (!chart.chartHeight || !chart.chartWidth) {
//chart.setChartSize();
}
 
width = chart.chartWidth || 800;
height = chart.chartHeight || 400;
} else {
return false;
}
 
if (!gl || !width || !height) {
return false;
}
 
if (settings.timeRendering) {
console.time('gl rendering'); //eslint-disable-line no-console
}
 
shader.bind();
 
gl.viewport(0, 0, width, height);
shader.setPMatrix(orthoMatrix(width, height));
 
if (settings.lineWidth > 1 && !H.isMS) {
gl.lineWidth(settings.lineWidth);
}
 
vbuffer.build(exports.data, 'aVertexPosition', 4);
vbuffer.bind();
 
if (textureIsReady) {
gl.bindTexture(gl.TEXTURE_2D, circleTextureHandle);
shader.setTexture(circleTextureHandle);
}
 
shader.setInverted(chart.options.chart ? chart.options.chart.inverted : false);
 
// Render the series
each(series, function(s, si) {
var options = s.series.options,
threshold = options.threshold,
hasThreshold = isNumber(threshold),
yBottom = s.series.yAxis.getThreshold(threshold),
translatedThreshold = yBottom,
cbuffer,
showMarkers = pick(
options.marker ? options.marker.enabled : null,
s.series.xAxis.isRadial ? true : null,
s.series.closestPointRangePx >
2 * ((
options.marker ?
options.marker.radius :
10
) || 10)
),
fillColor = s.series.fillOpacity ?
new Color(s.series.color).setOpacity(
pick(options.fillOpacity, 0.85)
).get() :
s.series.color,
color;
 
vbuffer.bind();
 
if (options.colorByPoint) {
fillColor = s.series.chart.options.colors[si];
}
 
color = H.color(fillColor).rgba;
 
if (!settings.useAlpha) {
color[3] = 1.0;
}
 
//Blending
if (options.boostBlending === 'add') {
gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
gl.blendEquation(gl.FUNC_ADD);
 
} else if (options.boostBlending === 'mult') {
gl.blendFunc(gl.DST_COLOR, gl.ZERO);
 
} else if (options.boostBlending === 'darken') {
gl.blendFunc(gl.ONE, gl.ONE);
gl.blendEquation(gl.FUNC_MIN);
 
} else {
//gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);//, gl.ONE, gl.ZERO);
//gl.blendEquation(gl.FUNC_ADD);
gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
}
 
shader.reset();
 
// If there are entries in the colorData buffer, build and bind it.
if (s.colorData.length > 0) {
shader.setUniform('hasColor', 1.0);
cbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap
cbuffer.build(s.colorData, 'aColor', 4);
cbuffer.bind();
}
 
// Set series specific uniforms
shader.setColor(color);
setXAxis(s.series.xAxis);
setYAxis(s.series.yAxis);
setThreshold(hasThreshold, translatedThreshold);
 
if (s.drawMode === 'points') {
if (options.marker && options.marker.radius) {
shader.setPointSize(options.marker.radius * 2.0);
} else {
shader.setPointSize(1);
}
}
 
// If set to true, the toPixels translations in the shader
// is skipped, i.e it's assumed that the value is a pixel coord.
shader.setSkipTranslation(s.skipTranslation);
 
if (s.series.type === 'bubble') {
shader.setBubbleUniforms(s.series, s.zMin, s.zMax);
}
 
shader.setDrawAsCircle((asCircle[s.series.type] && textureIsReady) || false);
 
// Do the actual rendering
vbuffer.render(s.from, s.to, s.drawMode);
 
if (s.hasMarkers && showMarkers) {
if (options.marker && options.marker.radius) {
shader.setPointSize(options.marker.radius * 2.0);
} else {
shader.setPointSize(10);
}
shader.setDrawAsCircle(true);
vbuffer.render(s.from, s.to, 'POINTS');
}
});
 
vbuffer.destroy();
 
if (settings.timeRendering) {
console.timeEnd('gl rendering'); //eslint-disable-line no-console
}
 
flush();
 
if (postRenderCallback) {
postRenderCallback();
}
}
 
/*
* Render the data when ready
*/
function renderWhenReady(chart) {
clear();
 
if (chart.renderer.forExport) {
return render(chart);
}
 
if (isInited) {
render(chart);
} else {
setTimeout(function() {
renderWhenReady(chart);
}, 1);
}
}
 
/*
* Set the viewport size in pixels
* Creates an orthographic perspective matrix and applies it.
* @param w {Integer} - the width of the viewport
* @param h {Integer} - the height of the viewport
*/
function setSize(w, h) {
// Skip if there's no change
if (width === w && h === h) {
return;
}
 
width = w;
height = h;
 
shader.bind();
shader.setPMatrix(orthoMatrix(width, height));
}
 
/*
* Init OpenGL
* @param canvas {HTMLCanvas} - the canvas to render to
*/
function init(canvas, noFlush) {
var i = 0,
contexts = [
'webgl',
'experimental-webgl',
'moz-webgl',
'webkit-3d'
];
 
isInited = false;
 
if (!canvas) {
return false;
}
 
if (settings.timeSetup) {
console.time('gl setup'); //eslint-disable-line no-console
}
 
for (; i < contexts.length; i++) {
gl = canvas.getContext(contexts[i]);
if (gl) {
break;
}
}
 
if (gl) {
if (!noFlush) {
flush();
}
} else {
return false;
}
 
gl.enable(gl.BLEND);
// gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
gl.disable(gl.DEPTH_TEST);
gl.depthMask(gl.FALSE);
 
shader = GLShader(gl); //eslint-disable-line new-cap
vbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap
 
textureIsReady = false;
 
// Set up the circle texture used for bubbles
circleTextureHandle = gl.createTexture();
 
// Draw the circle
circleTexture.width = 512;
circleTexture.height = 512;
 
circleCtx.fillStyle = '#FFF';
circleCtx.beginPath();
circleCtx.arc(256, 256, 256, 0, 2 * Math.PI);
circleCtx.fill();
 
try {
 
gl.bindTexture(gl.TEXTURE_2D, circleTextureHandle);
 
gl.texImage2D(
gl.TEXTURE_2D,
0,
gl.RGBA,
gl.RGBA,
gl.UNSIGNED_BYTE,
circleTexture
);
 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
 
gl.generateMipmap(gl.TEXTURE_2D);
 
gl.bindTexture(gl.TEXTURE_2D, null);
 
textureIsReady = true;
} catch (e) {}
 
isInited = true;
 
if (settings.timeSetup) {
console.timeEnd('gl setup'); //eslint-disable-line no-console
}
 
return true;
}
 
/*
* Check if we have a valid OGL context
* @returns {Boolean} - true if the context is valid
*/
function valid() {
return gl !== false;
}
 
/*
* Check if the renderer has been initialized
* @returns {Boolean} - true if it has, false if not
*/
function inited() {
return isInited;
}
 
function destroy() {
vbuffer.destroy();
shader.destroy();
if (gl) {
//gl.deleteTexture(circleTextureHandle);
}
}
 
////////////////////////////////////////////////////////////////////////////
exports = {
allocateBufferForSingleSeries: allocateBufferForSingleSeries,
pushSeries: pushSeries,
setSize: setSize,
inited: inited,
setThreshold: setThreshold,
init: init,
render: renderWhenReady,
settings: settings,
valid: valid,
clear: clear,
flush: flush,
setXAxis: setXAxis,
setYAxis: setYAxis,
data: data,
gl: getGL,
allocateBuffer: allocateBuffer,
destroy: destroy,
setOptions: setOptions
};
 
return exports;
}
 
// END OF WEBGL ABSTRACTIONS
////////////////////////////////////////////////////////////////////////////////
 
/*
* Create a canvas + context and attach it to the target
* @param target {Highcharts.Chart|Highcharts.Series} - the canvas target
* @param chart {Highcharts.Chart} - the chart
*/
function createAndAttachRenderer(chart, series) {
var width = chart.chartWidth,
height = chart.chartHeight,
target = chart,
targetGroup = chart.seriesGroup || series.group,
swapXY = function(proceed, x, y, a, b, c, d) {
proceed.call(series, y, x, a, b, c, d);
};
 
if (isChartSeriesBoosting(chart)) {
target = chart;
} else {
target = series;
}
 
if (target.ogl) {
//target.ogl.destroy();
}
 
if (!target.image) {
target.canvas = doc.createElement('canvas');
 
target.image = chart.renderer.image(
'',
0,
0,
width,
height
).add(targetGroup);
 
target.boostClipRect = chart.renderer.clipRect(
chart.plotLeft,
chart.plotTop,
chart.plotWidth,
chart.chartHeight
);
 
target.image.clip(target.boostClipRect);
 
if (target.inverted) {
each(['moveTo', 'lineTo', 'rect', 'arc'], function(fn) {
wrap(false, fn, swapXY);
});
}
 
if (target instanceof H.Chart) {
target.markerGroup = target.renderer.g().add(targetGroup);
 
target.markerGroup.translate(series.xAxis.pos, series.yAxis.pos);
}
}
 
target.canvas.width = width;
target.canvas.height = height;
 
target.image.attr({
x: 0,
y: 0,
width: width,
height: height,
style: 'pointer-events: none'
});
 
target.boostClipRect.attr({
x: chart.plotLeft,
y: chart.plotTop,
width: chart.plotWidth,
height: chart.chartHeight
});
 
if (!target.ogl) {
 
 
target.ogl = GLRenderer(function() { // eslint-disable-line new-cap
target.image.attr({
href: target.canvas.toDataURL('image/png')
});
}); //eslint-disable-line new-cap
 
target.ogl.init(target.canvas);
// target.ogl.clear();
target.ogl.setOptions(chart.options.boost || {});
 
if (target instanceof H.Chart) {
target.ogl.allocateBuffer(chart);
}
}
 
target.ogl.setSize(width, height);
 
return target.ogl;
}
 
/*
* Performs the actual render if the renderer is
* attached to the series.
* @param renderer {OGLRenderer} - the renderer
* @param series {Highcharts.Series} - the series
*/
function renderIfNotSeriesBoosting(renderer, series, chart) {
if (renderer &&
series.image &&
series.canvas &&
!isChartSeriesBoosting(chart || series.chart)
) {
renderer.render(chart || series.chart);
}
}
 
function allocateIfNotSeriesBoosting(renderer, series) {
if (renderer &&
series.image &&
series.canvas &&
!isChartSeriesBoosting(series.chart)
) {
renderer.allocateBufferForSingleSeries(series);
}
}
 
/*
* An "async" foreach loop.
* Uses a setTimeout to keep the loop from blocking the UI thread
* @param arr {Array} - the array to loop through
* @param fn {Function} - the callback to call for each item
* @param finalFunc {Function} - the callback to call when done
* @param chunkSize {Number} - the number of iterations per. timeout
* @param i {Number} - the current index
* @param noTimeout {Boolean} - set to true to skip timeouts
*/
function eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout) {
i = i || 0;
chunkSize = chunkSize || CHUNK_SIZE;
 
var threshold = i + chunkSize,
proceed = true;
 
while (proceed && i < threshold && i < arr.length) {
proceed = fn(arr[i], i);
++i;
}
if (proceed) {
if (i < arr.length) {
 
if (noTimeout) {
eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
} else if (win.requestAnimationFrame) {
//If available, do requestAnimationFrame - shaves off a few ms
win.requestAnimationFrame(function() {
eachAsync(arr, fn, finalFunc, chunkSize, i);
});
} else {
setTimeout(function() {
eachAsync(arr, fn, finalFunc, chunkSize, i);
});
}
 
} else if (finalFunc) {
finalFunc();
}
}
}
 
////////////////////////////////////////////////////////////////////////////////
// Following is the parts of the boost that's common between OGL/Legacy
 
/**
* Return a full Point object based on the index.
* The boost module uses stripped point objects for performance reasons.
* @param {Number} boostPoint A stripped-down point object
* @returns {Object} A Point object as per http://api.highcharts.com/highcharts#Point
*/
Series.prototype.getPoint = function(boostPoint) {
var point = boostPoint,
xData = this.xData || this.options.xData || this.processedXData || false;
 
if (boostPoint && !(boostPoint instanceof this.pointClass)) {
point = (new this.pointClass()).init( // eslint-disable-line new-cap
this,
this.options.data[boostPoint.i],
xData ? xData[boostPoint.i] : undefined
);
 
point.category = point.x;
 
point.dist = boostPoint.dist;
point.distX = boostPoint.distX;
point.plotX = boostPoint.plotX;
point.plotY = boostPoint.plotY;
point.index = boostPoint.i;
}
 
return point;
};
 
/**
* Return a point instance from the k-d-tree
*/
wrap(Series.prototype, 'searchPoint', function(proceed) {
return this.getPoint(
proceed.apply(this, [].slice.call(arguments, 1))
);
});
 
/**
* Extend series.destroy to also remove the fake k-d-tree points (#5137).
* Normally this is handled by Series.destroy that calls Point.destroy,
* but the fake search points are not registered like that.
*/
wrap(Series.prototype, 'destroy', function(proceed) {
var series = this,
chart = series.chart;
 
if (chart.markerGroup === series.markerGroup) {
series.markerGroup = null;
}
 
if (chart.hoverPoints) {
chart.hoverPoints = grep(chart.hoverPoints, function(point) {
return point.series === series;
});
}
 
if (chart.hoverPoint && chart.hoverPoint.series === series) {
chart.hoverPoint = null;
}
 
proceed.call(this);
});
 
/**
* Do not compute extremes when min and max are set.
* If we use this in the core, we can add the hook
* to hasExtremes to the methods directly.
*/
wrap(Series.prototype, 'getExtremes', function(proceed) {
if (!isSeriesBoosting(this) || (!this.hasExtremes || !this.hasExtremes())) {
return proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
// Set default options
each([
'area',
'arearange',
'column',
'line',
'scatter',
'heatmap',
'bubble',
'treemap',
'heatmap'
],
function(type) {
if (plotOptions[type]) {
plotOptions[type].boostThreshold = 5000;
plotOptions[type].boostData = [];
}
}
);
 
/**
* Override a bunch of methods the same way. If the number of points is
* below the threshold, run the original method. If not, check for a
* canvas version or do nothing.
*
* Note that we're not overriding any of these for heatmaps.
*/
each([
'translate',
'generatePoints',
'drawTracker',
'drawPoints',
'render'
], function(method) {
function branch(proceed) {
var letItPass = this.options.stacking &&
(method === 'translate' || method === 'generatePoints');
 
if (!isSeriesBoosting(this) ||
letItPass ||
this.type === 'heatmap' ||
this.type === 'treemap'
) {
 
// Clear image
if (method === 'render' && this.image && !isChartSeriesBoosting(this.chart)) {
this.image.attr({
href: ''
});
this.animate = null; // We're zooming in, don't run animation
}
 
proceed.call(this);
 
// If a canvas version of the method exists, like renderCanvas(), run
} else if (this[method + 'Canvas']) {
this[method + 'Canvas']();
}
}
 
wrap(Series.prototype, method, branch);
 
// A special case for some types - their translate method is already wrapped
if (method === 'translate') {
if (seriesTypes.column) {
wrap(seriesTypes.column.prototype, method, branch);
}
 
if (seriesTypes.arearange) {
wrap(seriesTypes.arearange.prototype, method, branch);
}
 
if (seriesTypes.treemap) {
wrap(seriesTypes.treemap.prototype, method, branch);
}
}
});
 
/*
* Returns true if the current browser supports webgl
*/
function hasWebGLSupport() {
var i = 0,
canvas,
contexts = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'],
context = false;
 
if (typeof win.WebGLRenderingContext !== 'undefined') {
canvas = doc.createElement('canvas');
 
for (; i < contexts.length; i++) {
try {
context = canvas.getContext(contexts[i]);
if (typeof context !== 'undefined' && context !== null) {
return true;
}
} catch (e) {
 
}
}
}
 
return false;
}
 
/* Used for treemap|heatmap.drawPoints */
function pointDrawHandler(proceed) {
if (!isSeriesBoosting(this)) {
return proceed.call(this);
}
 
//Make sure we have a valid OGL context
var renderer = createAndAttachRenderer(this.chart, this);
 
if (renderer) {
allocateIfNotSeriesBoosting(renderer, this);
renderer.pushSeries(this);
}
 
renderIfNotSeriesBoosting(renderer, this);
}
 
 
 
////////////////////////////////////////////////////////////////////////////////
// We're wrapped in a closure, so just return if there's no webgl support
 
if (!hasWebGLSupport()) {
if (typeof H.initCanvasBoost !== 'undefined') {
// Fallback to canvas boost
H.initCanvasBoost();
} else {
H.error(26);
}
} else {
 
////////////////////////////////////////////////////////////////////////////
// GL-SPECIFIC WRAPPINGS FOLLOWS
 
/** If the series is a heatmap or treemap, or if the series is not boosting
* do the default behaviour. Otherwise, process if the series has no
* extremes.
*/
wrap(Series.prototype, 'processData', function(proceed) {
// If this is a heatmap, do default behaviour
if (!isSeriesBoosting(this) ||
this.type === 'heatmap' ||
this.type === 'treemap') {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
 
if (!this.hasExtremes || !this.hasExtremes(true)) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
H.extend(Series.prototype, {
pointRange: 0,
directTouch: false,
allowDG: false, // No data grouping, let boost handle large data
hasExtremes: function(checkX) {
var options = this.options,
data = options.data,
xAxis = this.xAxis && this.xAxis.options,
yAxis = this.yAxis && this.yAxis.options;
 
return data.length > (options.boostThreshold || Number.MAX_VALUE) &&
isNumber(yAxis.min) && isNumber(yAxis.max) &&
(!checkX || (isNumber(xAxis.min) && isNumber(xAxis.max)));
},
 
/**
* If implemented in the core, parts of this can probably be
* shared with other similar methods in Highcharts.
*/
destroyGraphics: function() {
var series = this,
points = this.points,
point,
i;
 
if (points) {
for (i = 0; i < points.length; i = i + 1) {
point = points[i];
if (point && point.graphic) {
point.graphic = point.graphic.destroy();
}
}
}
 
each(['graph', 'area', 'tracker'], function(prop) {
if (series[prop]) {
series[prop] = series[prop].destroy();
}
});
},
 
renderCanvas: function() {
var series = this,
options = series.options || {},
renderer = false,
chart = series.chart,
xAxis = this.xAxis,
yAxis = this.yAxis,
//ctx,
//c = 0,
xData = options.xData || series.processedXData,
yData = options.yData || series.processedYData,
 
rawData = options.data,
xExtremes = xAxis.getExtremes(),
xMin = xExtremes.min,
xMax = xExtremes.max,
yExtremes = yAxis.getExtremes(),
yMin = yExtremes.min,
yMax = yExtremes.max,
pointTaken = {},
lastClientX,
sampling = !!series.sampling,
points,
enableMouseTracking = options.enableMouseTracking !== false,
threshold = options.threshold,
yBottom = yAxis.getThreshold(threshold),
isRange = series.pointArrayMap &&
series.pointArrayMap.join(',') === 'low,high',
isStacked = !!options.stacking,
cropStart = series.cropStart || 0,
requireSorting = series.requireSorting,
useRaw = !xData,
minVal,
maxVal,
minI,
maxI,
 
addKDPoint = function(clientX, plotY, i) {
//Shaves off about 60ms compared to repeated concatination
index = clientX + ',' + plotY;
 
// The k-d tree requires series points.
// Reduce the amount of points, since the time to build the
// tree increases exponentially.
if (enableMouseTracking && !pointTaken[index]) {
pointTaken[index] = true;
 
if (chart.inverted) {
clientX = xAxis.len - clientX;
plotY = yAxis.len - plotY;
}
 
points.push({
clientX: clientX,
plotX: clientX,
plotY: plotY,
i: cropStart + i
});
}
};
 
// Get or create the renderer
renderer = createAndAttachRenderer(chart, series);
 
if (!this.visible) {
if (!isChartSeriesBoosting(chart) && renderer) {
renderer.clear();
this.image.attr({
href: ''
});
}
return;
}
 
// If we are zooming out from SVG mode, destroy the graphics
if (this.points || this.graph) {
this.destroyGraphics();
}
 
// If we're rendering per. series we should create the marker groups
// as usual.
if (!isChartSeriesBoosting(chart)) {
this.markerGroup = series.plotGroup(
'markerGroup',
'markers',
true,
1,
chart.seriesGroup
);
} else {
//Use a single group for the markers
this.markerGroup = chart.markerGroup;
}
 
points = this.points = [];
 
// Do not start building while drawing
series.buildKDTree = noop;
 
if (renderer) {
allocateIfNotSeriesBoosting(renderer, this);
renderer.pushSeries(series);
// Perform the actual renderer if we're on series level
renderIfNotSeriesBoosting(renderer, this, chart);
//console.log(series, chart);
}
 
/* This builds the KD-tree */
function processPoint(d, i) {
var x,
y,
clientX,
plotY,
isNull,
low,
chartDestroyed = typeof chart.index === 'undefined',
isYInside = true;
 
if (!chartDestroyed) {
if (useRaw) {
x = d[0];
y = d[1];
} else {
x = d;
y = yData[i];
}
 
// Resolve low and high for range series
if (isRange) {
if (useRaw) {
y = d.slice(1, 3);
}
low = y[0];
y = y[1];
} else if (isStacked) {
x = d.x;
y = d.stackY;
low = y - d.y;
}
 
isNull = y === null;
 
// Optimize for scatter zooming
if (!requireSorting) {
isYInside = y >= yMin && y <= yMax;
}
 
if (!isNull && x >= xMin && x <= xMax && isYInside) {
 
// We use ceil to allow the KD tree to work with sub
// pixels, which can be used in boost to space pixels
clientX = Math.ceil(xAxis.toPixels(x, true));
 
if (sampling) {
if (minI === undefined || clientX === lastClientX) {
if (!isRange) {
low = y;
}
if (maxI === undefined || y > maxVal) {
maxVal = y;
maxI = i;
}
if (minI === undefined || low < minVal) {
minVal = low;
minI = i;
}
 
}
if (clientX !== lastClientX) { // Add points and reset
if (minI !== undefined) { // then maxI is also a number
plotY = yAxis.toPixels(maxVal, true);
yBottom = yAxis.toPixels(minVal, true);
 
addKDPoint(clientX, plotY, maxI);
if (yBottom !== plotY) {
addKDPoint(clientX, yBottom, minI);
}
}
 
minI = maxI = undefined;
lastClientX = clientX;
}
} else {
plotY = Math.ceil(yAxis.toPixels(y, true));
addKDPoint(clientX, plotY, i);
}
}
}
 
return !chartDestroyed;
}
 
function doneProcessing() {
fireEvent(series, 'renderedCanvas');
// Pass tests in Pointer.
// Replace this with a single property, and replace when zooming
// in below boostThreshold.
series.directTouch = false;
series.options.stickyTracking = true;
 
// Go back to prototype, ready to build
delete series.buildKDTree;
series.buildKDTree();
}
 
// Loop over the points to build the k-d tree
eachAsync(
isStacked ? series.data : (xData || rawData),
processPoint,
doneProcessing,
chart.renderer.forExport ? Number.MAX_VALUE : undefined
);
}
});
 
/*
* We need to handle heatmaps separatly, since we can't perform the
* size/color calculations in the shader easily.
*
* This likely needs future optimization.
*
*/
each(['heatmap', 'treemap'],
function(t) {
if (seriesTypes[t]) {
wrap(seriesTypes[t].prototype, 'drawPoints', pointDrawHandler);
seriesTypes[t].prototype.directTouch = false; // Use k-d-tree
}
}
);
 
if (seriesTypes.bubble) {
// By default, the bubble series does not use the KD-tree, so force it
// to.
delete seriesTypes.bubble.prototype.buildKDTree;
seriesTypes.bubble.prototype.directTouch = false;
 
// Needed for markers to work correctly
wrap(
seriesTypes.bubble.prototype,
'markerAttribs',
function(proceed) {
if (isSeriesBoosting(this)) {
return false;
}
return proceed.apply(this, [].slice.call(arguments, 1));
}
);
}
 
seriesTypes.scatter.prototype.fill = true;
 
extend(seriesTypes.area.prototype, {
fill: true,
fillOpacity: true,
sampling: true
});
 
extend(seriesTypes.column.prototype, {
fill: true,
sampling: true
});
 
wrap(Series.prototype, 'setVisible', function(proceed, vis) {
proceed.call(this, vis, false);
if (this.visible === false && this.ogl && this.canvas && this.image) {
this.ogl.clear();
this.image.attr({
href: ''
});
} else {
this.chart.redraw();
}
});
 
/**
* Take care of the canvas blitting
*/
H.Chart.prototype.callbacks.push(function(chart) {
 
/* Convert chart-level canvas to image */
function canvasToSVG() {
if (chart.ogl && isChartSeriesBoosting(chart)) {
chart.ogl.render(chart);
}
}
 
/* Clear chart-level canvas */
function preRender() {
 
if (!isChartSeriesBoosting(chart) && chart.didBoost) {
chart.didBoost = false;
// Clear the canvas
if (chart.image) {
chart.image.attr({
href: ''
});
}
}
 
if (chart.canvas && chart.ogl && isChartSeriesBoosting(chart)) {
chart.didBoost = true;
 
// Allocate
chart.ogl.allocateBuffer(chart);
}
 
//see #6518 + #6739
if (chart.markerGroup && chart.xAxis && chart.xAxis.length > 0 && chart.yAxis && chart.yAxis.length > 0) {
chart.markerGroup.translate(
chart.xAxis[0].pos,
chart.yAxis[0].pos
);
}
 
}
 
addEvent(chart, 'predraw', preRender);
addEvent(chart, 'render', canvasToSVG);
});
} // if hasCanvasSupport
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/broken-axis.js
@@ -0,0 +1,15 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(h){"object"===typeof module&&module.exports?module.exports=h:h(Highcharts)})(function(h){(function(f){function h(){return Array.prototype.slice.call(arguments,1)}function u(b){b.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,r(this.pointArrayMap,["y"]))}var r=f.pick,g=f.wrap,q=f.each,y=f.extend,z=f.isArray,v=f.fireEvent,t=f.Axis,A=f.Series;y(t.prototype,{isInBreak:function(b,e){var c=b.repeat||Infinity,a=b.from,d=b.to-b.from;e=e>=a?(e-a)%c:c-(a-e)%c;return b.inclusive?
e<=d:e<d&&0!==e},isInAnyBreak:function(b,e){var c=this.options.breaks,a=c&&c.length,d,n,w;if(a){for(;a--;)this.isInBreak(c[a],b)&&(d=!0,n||(n=r(c[a].showPoints,this.isXAxis?!1:!0)));w=d&&e?d&&!n:d}return w}});g(t.prototype,"setTickPositions",function(b){b.apply(this,Array.prototype.slice.call(arguments,1));if(this.options.breaks){var e=this.tickPositions,c=this.tickPositions.info,a=[],d;for(d=0;d<e.length;d++)this.isInAnyBreak(e[d])||a.push(e[d]);this.tickPositions=a;this.tickPositions.info=c}});
g(t.prototype,"init",function(b,e,c){var a=this;c.breaks&&c.breaks.length&&(c.ordinal=!1);b.call(this,e,c);b=this.options.breaks;a.isBroken=z(b)&&!!b.length;a.isBroken&&(a.val2lin=function(d){var n=d,b,c;for(c=0;c<a.breakArray.length;c++)if(b=a.breakArray[c],b.to<=d)n-=b.len;else if(b.from>=d)break;else if(a.isInBreak(b,d)){n-=d-b.from;break}return n},a.lin2val=function(d){var b,c;for(c=0;c<a.breakArray.length&&!(b=a.breakArray[c],b.from>=d);c++)b.to<d?d+=b.len:a.isInBreak(b,d)&&(d+=b.len);return d},
a.setExtremes=function(a,b,c,e,f){for(;this.isInAnyBreak(a);)a-=this.closestPointRange;for(;this.isInAnyBreak(b);)b-=this.closestPointRange;t.prototype.setExtremes.call(this,a,b,c,e,f)},a.setAxisTranslation=function(b){t.prototype.setAxisTranslation.call(this,b);b=a.options.breaks;var c=[],d=[],e=0,f,l,m=a.userMin||a.min,p=a.userMax||a.max,h=r(a.pointRangePadding,0),k,g;q(b,function(b){l=b.repeat||Infinity;a.isInBreak(b,m)&&(m+=b.to%l-m%l);a.isInBreak(b,p)&&(p-=p%l-b.from%l)});q(b,function(a){k=a.from;
for(l=a.repeat||Infinity;k-l>m;)k-=l;for(;k<m;)k+=l;for(g=k;g<p;g+=l)c.push({value:g,move:"in"}),c.push({value:g+(a.to-a.from),move:"out",size:a.breakSize})});c.sort(function(a,b){return a.value===b.value?("in"===a.move?0:1)-("in"===b.move?0:1):a.value-b.value});f=0;k=m;q(c,function(a){f+="in"===a.move?1:-1;1===f&&"in"===a.move&&(k=a.value);0===f&&(d.push({from:k,to:a.value,len:a.value-k-(a.size||0)}),e+=a.value-k-(a.size||0))});a.breakArray=d;a.unitLength=p-m-e+h;v(a,"afterBreaks");a.options.staticScale?
a.transA=a.options.staticScale:a.unitLength&&(a.transA*=(p-a.min+h)/a.unitLength);h&&(a.minPixelPadding=a.transA*a.minPointOffset);a.min=m;a.max=p})});g(A.prototype,"generatePoints",function(b){b.apply(this,h(arguments));var e=this.xAxis,c=this.yAxis,a=this.points,d,f=a.length,g=this.options.connectNulls,x;if(e&&c&&(e.options.breaks||c.options.breaks))for(;f--;)d=a[f],x=null===d.y&&!1===g,x||!e.isInAnyBreak(d.x,!0)&&!c.isInAnyBreak(d.y,!0)||(a.splice(f,1),this.data[f]&&this.data[f].destroyElements())});
f.Series.prototype.drawBreaks=function(b,e){var c=this,a=c.points,d,f,g,h;b&&q(e,function(e){d=b.breakArray||[];f=b.isXAxis?b.min:r(c.options.threshold,b.min);q(a,function(a){h=r(a["stack"+e.toUpperCase()],a[e]);q(d,function(c){g=!1;if(f<c.from&&h>c.to||f>c.from&&h<c.from)g="pointBreak";else if(f<c.from&&h>c.from&&h<c.to||f>c.from&&h>c.to&&h<c.from)g="pointInBreak";g&&v(b,g,{point:a,brk:c})})})})};f.Series.prototype.gappedPath=function(){var b=this.options.gapSize,e=this.points.slice(),c=e.length-
1;if(b&&0<c)for(;c--;)e[c+1].x-e[c].x>this.closestPointRange*b&&e.splice(c+1,0,{isNull:!0});return this.getGraphPath(e)};g(f.seriesTypes.column.prototype,"drawPoints",u);g(f.Series.prototype,"drawPoints",u)})(h)});
/base/000_base/node_modules/highcharts/js/modules/broken-axis.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":15,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","stripArguments","Array","prototype","slice","call","arguments","drawPointsWrapped","proceed","apply","drawBreaks","xAxis","yAxis","pick","pointArrayMap","wrap","each","extend","isArray","fireEvent","Axis","Series","isInBreak","brk","val","repeat","Infinity","from","length","to","test","inclusive","ret","isInAnyBreak","testKeep","breaks","options","i","inbrk","keep","showPoints","isXAxis","tickPositions","info","newPositions","axis","push","chart","userOptions","ordinal","isBroken","val2lin","axis.val2lin","nval","breakArray","len","lin2val","axis.lin2val","setExtremes","axis.setExtremes","newMin","newMax","redraw","animation","eventArguments","closestPointRange","setAxisTranslation","axis.setAxisTranslation","saveOld","breakArrayT","inBrk","min","userMin","max","userMax","pointRangePadding","start","value","move","size","breakSize","sort","a","b","unitLength","staticScale","transA","minPixelPadding","minPointOffset","series","points","point","connectNulls","nullGap","y","x","splice","data","destroyElements","H.Series.prototype.drawBreaks","keys","threshold","eventName","key","toUpperCase","gappedPath","H.Series.prototype.gappedPath","gapSize","isNull","getGraphPath","seriesTypes","column"]
}
/base/000_base/node_modules/highcharts/js/modules/broken-axis.src.js
@@ -0,0 +1,375 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
var pick = H.pick,
wrap = H.wrap,
each = H.each,
extend = H.extend,
isArray = H.isArray,
fireEvent = H.fireEvent,
Axis = H.Axis,
Series = H.Series;
 
function stripArguments() {
return Array.prototype.slice.call(arguments, 1);
}
 
extend(Axis.prototype, {
isInBreak: function(brk, val) {
var ret,
repeat = brk.repeat || Infinity,
from = brk.from,
length = brk.to - brk.from,
test = (val >= from ? (val - from) % repeat : repeat - ((from - val) % repeat));
 
if (!brk.inclusive) {
ret = test < length && test !== 0;
} else {
ret = test <= length;
}
return ret;
},
 
isInAnyBreak: function(val, testKeep) {
 
var breaks = this.options.breaks,
i = breaks && breaks.length,
inbrk,
keep,
ret;
 
 
if (i) {
 
while (i--) {
if (this.isInBreak(breaks[i], val)) {
inbrk = true;
if (!keep) {
keep = pick(breaks[i].showPoints, this.isXAxis ? false : true);
}
}
}
 
if (inbrk && testKeep) {
ret = inbrk && !keep;
} else {
ret = inbrk;
}
}
return ret;
}
});
 
wrap(Axis.prototype, 'setTickPositions', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
if (this.options.breaks) {
var axis = this,
tickPositions = this.tickPositions,
info = this.tickPositions.info,
newPositions = [],
i;
 
for (i = 0; i < tickPositions.length; i++) {
if (!axis.isInAnyBreak(tickPositions[i])) {
newPositions.push(tickPositions[i]);
}
}
 
this.tickPositions = newPositions;
this.tickPositions.info = info;
}
});
 
wrap(Axis.prototype, 'init', function(proceed, chart, userOptions) {
var axis = this,
breaks;
// Force Axis to be not-ordinal when breaks are defined
if (userOptions.breaks && userOptions.breaks.length) {
userOptions.ordinal = false;
}
proceed.call(this, chart, userOptions);
breaks = this.options.breaks;
axis.isBroken = (isArray(breaks) && !!breaks.length);
if (axis.isBroken) {
axis.val2lin = function(val) {
var nval = val,
brk,
i;
 
for (i = 0; i < axis.breakArray.length; i++) {
brk = axis.breakArray[i];
if (brk.to <= val) {
nval -= brk.len;
} else if (brk.from >= val) {
break;
} else if (axis.isInBreak(brk, val)) {
nval -= (val - brk.from);
break;
}
}
 
return nval;
};
 
axis.lin2val = function(val) {
var nval = val,
brk,
i;
 
for (i = 0; i < axis.breakArray.length; i++) {
brk = axis.breakArray[i];
if (brk.from >= nval) {
break;
} else if (brk.to < nval) {
nval += brk.len;
} else if (axis.isInBreak(brk, nval)) {
nval += brk.len;
}
}
return nval;
};
 
axis.setExtremes = function(newMin, newMax, redraw, animation, eventArguments) {
// If trying to set extremes inside a break, extend it to before and after the break ( #3857 )
while (this.isInAnyBreak(newMin)) {
newMin -= this.closestPointRange;
}
while (this.isInAnyBreak(newMax)) {
newMax -= this.closestPointRange;
}
Axis.prototype.setExtremes.call(this, newMin, newMax, redraw, animation, eventArguments);
};
 
axis.setAxisTranslation = function(saveOld) {
Axis.prototype.setAxisTranslation.call(this, saveOld);
 
var breaks = axis.options.breaks,
breakArrayT = [], // Temporary one
breakArray = [],
length = 0,
inBrk,
repeat,
min = axis.userMin || axis.min,
max = axis.userMax || axis.max,
pointRangePadding = pick(axis.pointRangePadding, 0),
start,
i;
 
// Min & max check (#4247)
each(breaks, function(brk) {
repeat = brk.repeat || Infinity;
if (axis.isInBreak(brk, min)) {
min += (brk.to % repeat) - (min % repeat);
}
if (axis.isInBreak(brk, max)) {
max -= (max % repeat) - (brk.from % repeat);
}
});
 
// Construct an array holding all breaks in the axis
each(breaks, function(brk) {
start = brk.from;
repeat = brk.repeat || Infinity;
 
while (start - repeat > min) {
start -= repeat;
}
while (start < min) {
start += repeat;
}
 
for (i = start; i < max; i += repeat) {
breakArrayT.push({
value: i,
move: 'in'
});
breakArrayT.push({
value: i + (brk.to - brk.from),
move: 'out',
size: brk.breakSize
});
}
});
 
breakArrayT.sort(function(a, b) {
var ret;
if (a.value === b.value) {
ret = (a.move === 'in' ? 0 : 1) - (b.move === 'in' ? 0 : 1);
} else {
ret = a.value - b.value;
}
return ret;
});
 
// Simplify the breaks
inBrk = 0;
start = min;
 
each(breakArrayT, function(brk) {
inBrk += (brk.move === 'in' ? 1 : -1);
 
if (inBrk === 1 && brk.move === 'in') {
start = brk.value;
}
if (inBrk === 0) {
breakArray.push({
from: start,
to: brk.value,
len: brk.value - start - (brk.size || 0)
});
length += brk.value - start - (brk.size || 0);
}
});
 
axis.breakArray = breakArray;
 
// Used with staticScale, and below, the actual axis length when
// breaks are substracted.
axis.unitLength = max - min - length + pointRangePadding;
 
fireEvent(axis, 'afterBreaks');
 
if (axis.options.staticScale) {
axis.transA = axis.options.staticScale;
} else if (axis.unitLength) {
axis.transA *= (max - axis.min + pointRangePadding) /
axis.unitLength;
}
 
if (pointRangePadding) {
axis.minPixelPadding = axis.transA * axis.minPointOffset;
}
 
axis.min = min;
axis.max = max;
};
}
});
 
wrap(Series.prototype, 'generatePoints', function(proceed) {
 
proceed.apply(this, stripArguments(arguments));
 
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis,
points = series.points,
point,
i = points.length,
connectNulls = series.options.connectNulls,
nullGap;
 
 
if (xAxis && yAxis && (xAxis.options.breaks || yAxis.options.breaks)) {
while (i--) {
point = points[i];
 
nullGap = point.y === null && connectNulls === false; // respect nulls inside the break (#4275)
if (!nullGap && (xAxis.isInAnyBreak(point.x, true) || yAxis.isInAnyBreak(point.y, true))) {
points.splice(i, 1);
if (this.data[i]) {
this.data[i].destroyElements(); // removes the graphics for this point if they exist
}
}
}
}
 
});
 
function drawPointsWrapped(proceed) {
proceed.apply(this);
this.drawBreaks(this.xAxis, ['x']);
this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));
}
 
H.Series.prototype.drawBreaks = function(axis, keys) {
var series = this,
points = series.points,
breaks,
threshold,
eventName,
y;
 
if (!axis) {
return; // #5950
}
 
each(keys, function(key) {
breaks = axis.breakArray || [];
threshold = axis.isXAxis ? axis.min : pick(series.options.threshold, axis.min);
each(points, function(point) {
y = pick(point['stack' + key.toUpperCase()], point[key]);
each(breaks, function(brk) {
eventName = false;
 
if ((threshold < brk.from && y > brk.to) || (threshold > brk.from && y < brk.from)) {
eventName = 'pointBreak';
} else if ((threshold < brk.from && y > brk.from && y < brk.to) || (threshold > brk.from && y > brk.to && y < brk.from)) { // point falls inside the break
eventName = 'pointInBreak';
}
if (eventName) {
fireEvent(axis, eventName, {
point: point,
brk: brk
});
}
});
});
});
};
 
 
/**
* Extend getGraphPath by identifying gaps in the data so that we can draw a gap
* in the line or area. This was moved from ordinal axis module to broken axis
* module as of #5045.
*/
H.Series.prototype.gappedPath = function() {
var gapSize = this.options.gapSize,
points = this.points.slice(),
i = points.length - 1;
 
if (gapSize && i > 0) { // #5008
 
// extension for ordinal breaks
while (i--) {
if (points[i + 1].x - points[i].x > this.closestPointRange * gapSize) {
points.splice( // insert after this one
i + 1,
0, {
isNull: true
}
);
}
}
}
 
// Call base method
return this.getGraphPath(points);
};
 
wrap(H.seriesTypes.column.prototype, 'drawPoints', drawPointsWrapped);
wrap(H.Series.prototype, 'drawPoints', drawPointsWrapped);
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/canvasrenderer.experimental.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":12,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","extend","SVGElement","prototype","init","renderer","nodeName","element","attributes","childNodes","setAttribute","key","value","removeAttribute","appendChild","push","parentNode","insertBefore","newItem","existingItem","splice","indexOf","removeChild","getElementsByTagName","cloneNode","style","dSetter","this.dSetter","join","getBBox","ctx","font","fillStyle","x","y","width","measureText","bBox","innerHTML","height","draw","path","elem","attr","segments","d","forEach","item","length","parseFloat","beginPath","segment","apply","slice","rect","text","fillText","SVGRenderer","container","boxWrapper","createElement","version","canvas","win","doc","getContext","isSVG","box","alignedObjects","defs","add","gradients","cache","setSize","drawElement","Array","call","lineWidth","strokeStyle","stroke","fill","buildText","wrapper","textStr"]
}
/base/000_base/node_modules/highcharts/js/modules/data.js
@@ -0,0 +1,26 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Data module
 
(c) 2012-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(p){"object"===typeof module&&module.exports?module.exports=p:p(Highcharts)})(function(p){(function(g){var p=g.win.document,m=g.each,z=g.objectEach,A=g.pick,w=g.inArray,x=g.isNumber,B=g.splat,n,u=function(b,a){this.init(b,a)};g.extend(u.prototype,{init:function(b,a){this.options=b;this.chartOptions=a;this.columns=b.columns||this.rowsToColumns(b.rows)||[];this.firstRowAsNames=A(b.firstRowAsNames,!0);this.decimalRegex=b.decimalPoint&&new RegExp("^(-?[0-9]+)"+b.decimalPoint+"([0-9]+)$");this.rawColumns=
[];this.columns.length?this.dataFound():(this.parseCSV(),this.parseTable(),this.parseGoogleSpreadsheet())},getColumnDistribution:function(){var b=this.chartOptions,a=this.options,d=[],f=function(b){return(g.seriesTypes[b||"line"].prototype.pointArrayMap||[0]).length},e=b&&b.chart&&b.chart.type,c=[],k=[],t=0,h;m(b&&b.series||[],function(b){c.push(f(b.type||e))});m(a&&a.seriesMapping||[],function(b){d.push(b.x||0)});0===d.length&&d.push(0);m(a&&a.seriesMapping||[],function(a){var d=new n,C=c[t]||f(e),
q=g.seriesTypes[((b&&b.series||[])[t]||{}).type||e||"line"].prototype.pointArrayMap||["y"];d.addColumnReader(a.x,"x");z(a,function(b,a){"x"!==a&&d.addColumnReader(b,a)});for(h=0;h<C;h++)d.hasReader(q[h])||d.addColumnReader(void 0,q[h]);k.push(d);t++});a=g.seriesTypes[e||"line"].prototype.pointArrayMap;void 0===a&&(a=["y"]);this.valueCount={global:f(e),xColumns:d,individual:c,seriesBuilders:k,globalPointArrayMap:a}},dataFound:function(){this.options.switchRowsAndColumns&&(this.columns=this.rowsToColumns(this.columns));
this.getColumnDistribution();this.parseTypes();!1!==this.parsed()&&this.complete()},parseCSV:function(){var b=this,a=this.options,d=a.csv,f=this.columns,e=a.startRow||0,c=a.endRow||Number.MAX_VALUE,k=a.startColumn||0,t=a.endColumn||Number.MAX_VALUE,h,g,y=0;d&&(g=d.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split(a.lineDelimiter||"\n"),h=a.itemDelimiter||(-1!==d.indexOf("\t")?"\t":","),m(g,function(a,d){var g=b.trim(a),q=0===g.indexOf("#");d>=e&&d<=c&&!q&&""!==g&&(a=a.split(h),m(a,function(b,a){a>=
k&&a<=t&&(f[a-k]||(f[a-k]=[]),f[a-k][y]=b)}),y+=1)}),this.dataFound())},parseTable:function(){var b=this.options,a=b.table,d=this.columns,f=b.startRow||0,e=b.endRow||Number.MAX_VALUE,c=b.startColumn||0,k=b.endColumn||Number.MAX_VALUE;a&&("string"===typeof a&&(a=p.getElementById(a)),m(a.getElementsByTagName("tr"),function(b,a){a>=f&&a<=e&&m(b.children,function(b,e){("TD"===b.tagName||"TH"===b.tagName)&&e>=c&&e<=k&&(d[e-c]||(d[e-c]=[]),d[e-c][a-f]=b.innerHTML)})}),this.dataFound())},parseGoogleSpreadsheet:function(){var b=
this,a=this.options,d=a.googleSpreadsheetKey,f=this.columns,e=a.startRow||0,c=a.endRow||Number.MAX_VALUE,k=a.startColumn||0,g=a.endColumn||Number.MAX_VALUE,h,q;d&&jQuery.ajax({dataType:"json",url:"https://spreadsheets.google.com/feeds/cells/"+d+"/"+(a.googleSpreadsheetWorksheet||"od6")+"/public/values?alt\x3djson-in-script\x26callback\x3d?",error:a.error,success:function(a){a=a.feed.entry;var d,t=a.length,r=0,n=0,l;for(l=0;l<t;l++)d=a[l],r=Math.max(r,d.gs$cell.col),n=Math.max(n,d.gs$cell.row);for(l=
0;l<r;l++)l>=k&&l<=g&&(f[l-k]=[],f[l-k].length=Math.min(n,c-e));for(l=0;l<t;l++)d=a[l],h=d.gs$cell.row-1,q=d.gs$cell.col-1,q>=k&&q<=g&&h>=e&&h<=c&&(f[q-k][h-e]=d.content.$t);m(f,function(a){for(l=0;l<a.length;l++)void 0===a[l]&&(a[l]=null)});b.dataFound()}})},trim:function(b,a){"string"===typeof b&&(b=b.replace(/^\s+|\s+$/g,""),a&&/^[0-9\s]+$/.test(b)&&(b=b.replace(/\s/g,"")),this.decimalRegex&&(b=b.replace(this.decimalRegex,"$1.$2")));return b},parseTypes:function(){for(var b=this.columns,a=b.length;a--;)this.parseColumn(b[a],
a)},parseColumn:function(b,a){var d=this.rawColumns,f=this.columns,e=b.length,c,k,g,h,n=this.firstRowAsNames,m=-1!==w(a,this.valueCount.xColumns),p=[],v=this.chartOptions,r,u=(this.options.columnTypes||[])[a],v=m&&(v&&v.xAxis&&"category"===B(v.xAxis)[0].type||"string"===u);for(d[a]||(d[a]=[]);e--;)c=p[e]||b[e],g=this.trim(c),h=this.trim(c,!0),k=parseFloat(h),void 0===d[a][e]&&(d[a][e]=g),v||0===e&&n?b[e]=g:+h===k?(b[e]=k,31536E6<k&&"float"!==u?b.isDatetime=!0:b.isNumeric=!0,void 0!==b[e+1]&&(r=k>
b[e+1])):(k=this.parseDate(c),m&&x(k)&&"float"!==u?(p[e]=c,b[e]=k,b.isDatetime=!0,void 0!==b[e+1]&&(c=k>b[e+1],c!==r&&void 0!==r&&(this.alternativeFormat?(this.dateFormat=this.alternativeFormat,e=b.length,this.alternativeFormat=this.dateFormats[this.dateFormat].alternative):b.unsorted=!0),r=c)):(b[e]=""===g?null:g,0!==e&&(b.isDatetime||b.isNumeric)&&(b.mixed=!0)));m&&b.mixed&&(f[a]=d[a]);if(m&&r&&this.options.sort)for(a=0;a<f.length;a++)f[a].reverse(),n&&f[a].unshift(f[a].pop())},dateFormats:{"YYYY-mm-dd":{regex:/^([0-9]{4})[\-\/\.]([0-9]{2})[\-\/\.]([0-9]{2})$/,
parser:function(b){return Date.UTC(+b[1],b[2]-1,+b[3])}},"dd/mm/YYYY":{regex:/^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,parser:function(b){return Date.UTC(+b[3],b[2]-1,+b[1])},alternative:"mm/dd/YYYY"},"mm/dd/YYYY":{regex:/^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,parser:function(b){return Date.UTC(+b[3],b[1]-1,+b[2])}},"dd/mm/YY":{regex:/^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,parser:function(b){return Date.UTC(+b[3]+2E3,b[2]-1,+b[1])},alternative:"mm/dd/YY"},
"mm/dd/YY":{regex:/^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,parser:function(b){return Date.UTC(+b[3]+2E3,b[1]-1,+b[2])}}},parseDate:function(b){var a=this.options.parseDate,d,f,e=this.options.dateFormat||this.dateFormat,c;if(a)d=a(b);else if("string"===typeof b){if(e)a=this.dateFormats[e],(c=b.match(a.regex))&&(d=a.parser(c));else for(f in this.dateFormats)if(a=this.dateFormats[f],c=b.match(a.regex)){this.dateFormat=f;this.alternativeFormat=a.alternative;d=a.parser(c);break}c||(c=Date.parse(b),
"object"===typeof c&&null!==c&&c.getTime?d=c.getTime()-6E4*c.getTimezoneOffset():x(c)&&(d=c-6E4*(new Date(c)).getTimezoneOffset()))}return d},rowsToColumns:function(b){var a,d,f,e,c;if(b)for(c=[],d=b.length,a=0;a<d;a++)for(e=b[a].length,f=0;f<e;f++)c[f]||(c[f]=[]),c[f][a]=b[a][f];return c},parsed:function(){if(this.options.parsed)return this.options.parsed.call(this,this.columns)},getFreeIndexes:function(b,a){var d,f=[],e=[],c;for(d=0;d<b;d+=1)f.push(!0);for(b=0;b<a.length;b+=1)for(c=a[b].getReferencedColumnIndexes(),
d=0;d<c.length;d+=1)f[c[d]]=!1;for(d=0;d<f.length;d+=1)f[d]&&e.push(d);return e},complete:function(){var b=this.columns,a,d=this.options,f,e,c,k,g=[],h;if(d.complete||d.afterComplete){for(c=0;c<b.length;c++)this.firstRowAsNames&&(b[c].name=b[c].shift());f=[];e=this.getFreeIndexes(b.length,this.valueCount.seriesBuilders);for(c=0;c<this.valueCount.seriesBuilders.length;c++)h=this.valueCount.seriesBuilders[c],h.populateColumns(e)&&g.push(h);for(;0<e.length;){h=new n;h.addColumnReader(0,"x");c=w(0,e);
-1!==c&&e.splice(c,1);for(c=0;c<this.valueCount.global;c++)h.addColumnReader(void 0,this.valueCount.globalPointArrayMap[c]);h.populateColumns(e)&&g.push(h)}0<g.length&&0<g[0].readers.length&&(h=b[g[0].readers[0].columnIndex],void 0!==h&&(h.isDatetime?a="datetime":h.isNumeric||(a="category")));if("category"===a)for(c=0;c<g.length;c++)for(h=g[c],e=0;e<h.readers.length;e++)"x"===h.readers[e].configName&&(h.readers[e].configName="name");for(c=0;c<g.length;c++){h=g[c];e=[];for(k=0;k<b[0].length;k++)e[k]=
h.read(b,k);f[c]={data:e};h.name&&(f[c].name=h.name);"category"===a&&(f[c].turboThreshold=0)}b={series:f};a&&(b.xAxis={type:a},"category"===a&&(b.xAxis.uniqueNames=!1));d.complete&&d.complete(b);d.afterComplete&&d.afterComplete(b)}}});g.Data=u;g.data=function(b,a){return new u(b,a)};g.wrap(g.Chart.prototype,"init",function(b,a,d){var f=this;a&&a.data?g.data(g.extend(a.data,{afterComplete:function(e){var c,k;if(a.hasOwnProperty("series"))if("object"===typeof a.series)for(c=Math.max(a.series.length,
e.series.length);c--;)k=a.series[c]||{},a.series[c]=g.merge(k,e.series[c]);else delete a.series;a=g.merge(e,a);b.call(f,a,d)}}),a):b.call(f,a,d)});n=function(){this.readers=[];this.pointIsArray=!0};n.prototype.populateColumns=function(b){var a=!0;m(this.readers,function(a){void 0===a.columnIndex&&(a.columnIndex=b.shift())});m(this.readers,function(b){void 0===b.columnIndex&&(a=!1)});return a};n.prototype.read=function(b,a){var d=this.pointIsArray,f=d?[]:{},e;m(this.readers,function(c){var e=b[c.columnIndex][a];
d?f.push(e):f[c.configName]=e});void 0===this.name&&2<=this.readers.length&&(e=this.getReferencedColumnIndexes(),2<=e.length&&(e.shift(),e.sort(),this.name=b[e.shift()].name));return f};n.prototype.addColumnReader=function(b,a){this.readers.push({columnIndex:b,configName:a});"x"!==a&&"y"!==a&&void 0!==a&&(this.pointIsArray=!1)};n.prototype.getReferencedColumnIndexes=function(){var b,a=[],d;for(b=0;b<this.readers.length;b+=1)d=this.readers[b],void 0!==d.columnIndex&&a.push(d.columnIndex);return a};
n.prototype.hasReader=function(b){var a,d;for(a=0;a<this.readers.length;a+=1)if(d=this.readers[a],d.configName===b)return!0}})(p)});
/base/000_base/node_modules/highcharts/js/modules/data.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":26,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","doc","win","document","each","objectEach","pick","inArray","isNumber","splat","SeriesBuilder","Data","dataOptions","chartOptions","init","extend","prototype","options","columns","rowsToColumns","rows","firstRowAsNames","decimalRegex","decimalPoint","RegExp","rawColumns","length","dataFound","parseCSV","parseTable","parseGoogleSpreadsheet","getColumnDistribution","xColumns","getValueCount","type","seriesTypes","pointArrayMap","globalType","chart","individualCounts","seriesBuilders","seriesIndex","i","series","push","seriesMapping","mapping","x","builder","numberOfValueColumnsNeeded","addColumnReader","val","name","hasReader","undefined","globalPointArrayMap","valueCount","global","individual","switchRowsAndColumns","parseTypes","parsed","complete","self","csv","startRow","endRow","Number","MAX_VALUE","startColumn","endColumn","itemDelimiter","lines","activeRowNo","replace","split","lineDelimiter","indexOf","line","rowNo","trimmed","trim","isComment","items","item","colNo","table","getElementById","getElementsByTagName","tr","children","tagName","innerHTML","googleSpreadsheetKey","gr","gc","jQuery","ajax","dataType","url","googleSpreadsheetWorksheet","error","success","json","cells","feed","entry","cell","cellCount","colCount","rowCount","Math","max","gs$cell","col","row","min","content","$t","column","str","inside","test","parseColumn","floatVal","trimVal","trimInsideVal","isXColumn","backup","descending","columnType","columnTypes","forceCategory","xAxis","parseFloat","isDatetime","isNumeric","dateVal","parseDate","diff","alternativeFormat","dateFormat","dateFormats","alternative","unsorted","mixed","sort","reverse","unshift","pop","regex","parser","match","Date","UTC","ret","key","format","parse","getTime","getTimezoneOffset","rowsLength","colsLength","call","getFreeIndexes","numberOfColumns","freeIndexes","freeIndexValues","referencedIndexes","s","getReferencedColumnIndexes","data","j","allSeriesBuilders","afterComplete","shift","populateColumns","index","splice","readers","typeCol","columnIndex","r","configName","read","turboThreshold","uniqueNames","Highcharts.data","wrap","Chart","proceed","userOptions","callback","hasOwnProperty","merge","pointIsArray","SeriesBuilder.prototype.populateColumns","enoughColumns","reader","SeriesBuilder.prototype.read","rowIndex","point","columnIndexes","value","SeriesBuilder.prototype.addColumnReader","SeriesBuilder.prototype.getReferencedColumnIndexes","referencedColumnIndexes","columnReader","SeriesBuilder.prototype.hasReader"]
}
/base/000_base/node_modules/highcharts/js/modules/data.src.js
@@ -0,0 +1,981 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Data module
*
* (c) 2012-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(Highcharts) {
/**
* Data module
*
* (c) 2012-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
/* global jQuery */
 
// Utilities
var win = Highcharts.win,
doc = win.document,
each = Highcharts.each,
objectEach = Highcharts.objectEach,
pick = Highcharts.pick,
inArray = Highcharts.inArray,
isNumber = Highcharts.isNumber,
splat = Highcharts.splat,
SeriesBuilder;
 
 
// The Data constructor
var Data = function(dataOptions, chartOptions) {
this.init(dataOptions, chartOptions);
};
 
// Set the prototype properties
Highcharts.extend(Data.prototype, {
 
/**
* Initialize the Data object with the given options
*/
init: function(options, chartOptions) {
this.options = options;
this.chartOptions = chartOptions;
this.columns = options.columns || this.rowsToColumns(options.rows) || [];
this.firstRowAsNames = pick(options.firstRowAsNames, true);
this.decimalRegex = options.decimalPoint && new RegExp('^(-?[0-9]+)' + options.decimalPoint + '([0-9]+)$');
 
// This is a two-dimensional array holding the raw, trimmed string values
// with the same organisation as the columns array. It makes it possible
// for example to revert from interpreted timestamps to string-based
// categories.
this.rawColumns = [];
 
// No need to parse or interpret anything
if (this.columns.length) {
this.dataFound();
 
// Parse and interpret
} else {
 
// Parse a CSV string if options.csv is given
this.parseCSV();
 
// Parse a HTML table if options.table is given
this.parseTable();
 
// Parse a Google Spreadsheet
this.parseGoogleSpreadsheet();
}
 
},
 
/**
* Get the column distribution. For example, a line series takes a single column for
* Y values. A range series takes two columns for low and high values respectively,
* and an OHLC series takes four columns.
*/
getColumnDistribution: function() {
var chartOptions = this.chartOptions,
options = this.options,
xColumns = [],
getValueCount = function(type) {
return (Highcharts.seriesTypes[type || 'line'].prototype.pointArrayMap || [0]).length;
},
getPointArrayMap = function(type) {
return Highcharts.seriesTypes[type || 'line'].prototype.pointArrayMap;
},
globalType = chartOptions && chartOptions.chart && chartOptions.chart.type,
individualCounts = [],
seriesBuilders = [],
seriesIndex = 0,
i;
 
each((chartOptions && chartOptions.series) || [], function(series) {
individualCounts.push(getValueCount(series.type || globalType));
});
 
// Collect the x-column indexes from seriesMapping
each((options && options.seriesMapping) || [], function(mapping) {
xColumns.push(mapping.x || 0);
});
 
// If there are no defined series with x-columns, use the first column as x column
if (xColumns.length === 0) {
xColumns.push(0);
}
 
// Loop all seriesMappings and constructs SeriesBuilders from
// the mapping options.
each((options && options.seriesMapping) || [], function(mapping) {
var builder = new SeriesBuilder(),
numberOfValueColumnsNeeded = individualCounts[seriesIndex] || getValueCount(globalType),
seriesArr = (chartOptions && chartOptions.series) || [],
series = seriesArr[seriesIndex] || {},
pointArrayMap = getPointArrayMap(series.type || globalType) || ['y'];
 
// Add an x reader from the x property or from an undefined column
// if the property is not set. It will then be auto populated later.
builder.addColumnReader(mapping.x, 'x');
 
// Add all column mappings
objectEach(mapping, function(val, name) {
if (name !== 'x') {
builder.addColumnReader(val, name);
}
});
 
// Add missing columns
for (i = 0; i < numberOfValueColumnsNeeded; i++) {
if (!builder.hasReader(pointArrayMap[i])) {
//builder.addNextColumnReader(pointArrayMap[i]);
// Create and add a column reader for the next free column index
builder.addColumnReader(undefined, pointArrayMap[i]);
}
}
 
seriesBuilders.push(builder);
seriesIndex++;
});
 
var globalPointArrayMap = getPointArrayMap(globalType);
if (globalPointArrayMap === undefined) {
globalPointArrayMap = ['y'];
}
 
this.valueCount = {
global: getValueCount(globalType),
xColumns: xColumns,
individual: individualCounts,
seriesBuilders: seriesBuilders,
globalPointArrayMap: globalPointArrayMap
};
},
 
/**
* When the data is parsed into columns, either by CSV, table, GS or direct input,
* continue with other operations.
*/
dataFound: function() {
 
if (this.options.switchRowsAndColumns) {
this.columns = this.rowsToColumns(this.columns);
}
 
// Interpret the info about series and columns
this.getColumnDistribution();
 
// Interpret the values into right types
this.parseTypes();
 
// Handle columns if a handleColumns callback is given
if (this.parsed() !== false) {
 
// Complete if a complete callback is given
this.complete();
}
 
},
 
/**
* Parse a CSV input string
*/
parseCSV: function() {
var self = this,
options = this.options,
csv = options.csv,
columns = this.columns,
startRow = options.startRow || 0,
endRow = options.endRow || Number.MAX_VALUE,
startColumn = options.startColumn || 0,
endColumn = options.endColumn || Number.MAX_VALUE,
itemDelimiter,
lines,
activeRowNo = 0;
 
if (csv) {
 
lines = csv
.replace(/\r\n/g, '\n') // Unix
.replace(/\r/g, '\n') // Mac
.split(options.lineDelimiter || '\n');
 
itemDelimiter = options.itemDelimiter || (csv.indexOf('\t') !== -1 ? '\t' : ',');
 
each(lines, function(line, rowNo) {
var trimmed = self.trim(line),
isComment = trimmed.indexOf('#') === 0,
isBlank = trimmed === '',
items;
 
if (rowNo >= startRow && rowNo <= endRow && !isComment && !isBlank) {
items = line.split(itemDelimiter);
each(items, function(item, colNo) {
if (colNo >= startColumn && colNo <= endColumn) {
if (!columns[colNo - startColumn]) {
columns[colNo - startColumn] = [];
}
 
columns[colNo - startColumn][activeRowNo] = item;
}
});
activeRowNo += 1;
}
});
 
this.dataFound();
}
},
 
/**
* Parse a HTML table
*/
parseTable: function() {
var options = this.options,
table = options.table,
columns = this.columns,
startRow = options.startRow || 0,
endRow = options.endRow || Number.MAX_VALUE,
startColumn = options.startColumn || 0,
endColumn = options.endColumn || Number.MAX_VALUE;
 
if (table) {
 
if (typeof table === 'string') {
table = doc.getElementById(table);
}
 
each(table.getElementsByTagName('tr'), function(tr, rowNo) {
if (rowNo >= startRow && rowNo <= endRow) {
each(tr.children, function(item, colNo) {
if ((item.tagName === 'TD' || item.tagName === 'TH') && colNo >= startColumn && colNo <= endColumn) {
if (!columns[colNo - startColumn]) {
columns[colNo - startColumn] = [];
}
 
columns[colNo - startColumn][rowNo - startRow] = item.innerHTML;
}
});
}
});
 
this.dataFound(); // continue
}
},
 
/**
*/
parseGoogleSpreadsheet: function() {
var self = this,
options = this.options,
googleSpreadsheetKey = options.googleSpreadsheetKey,
columns = this.columns,
startRow = options.startRow || 0,
endRow = options.endRow || Number.MAX_VALUE,
startColumn = options.startColumn || 0,
endColumn = options.endColumn || Number.MAX_VALUE,
gr, // google row
gc; // google column
 
if (googleSpreadsheetKey) {
jQuery.ajax({
dataType: 'json',
url: 'https://spreadsheets.google.com/feeds/cells/' +
googleSpreadsheetKey + '/' + (options.googleSpreadsheetWorksheet || 'od6') +
'/public/values?alt=json-in-script&callback=?',
error: options.error,
success: function(json) {
// Prepare the data from the spreadsheat
var cells = json.feed.entry,
cell,
cellCount = cells.length,
colCount = 0,
rowCount = 0,
i;
 
// First, find the total number of columns and rows that
// are actually filled with data
for (i = 0; i < cellCount; i++) {
cell = cells[i];
colCount = Math.max(colCount, cell.gs$cell.col);
rowCount = Math.max(rowCount, cell.gs$cell.row);
}
 
// Set up arrays containing the column data
for (i = 0; i < colCount; i++) {
if (i >= startColumn && i <= endColumn) {
// Create new columns with the length of either end-start or rowCount
columns[i - startColumn] = [];
 
// Setting the length to avoid jslint warning
columns[i - startColumn].length = Math.min(rowCount, endRow - startRow);
}
}
 
// Loop over the cells and assign the value to the right
// place in the column arrays
for (i = 0; i < cellCount; i++) {
cell = cells[i];
gr = cell.gs$cell.row - 1; // rows start at 1
gc = cell.gs$cell.col - 1; // columns start at 1
 
// If both row and col falls inside start and end
// set the transposed cell value in the newly created columns
if (gc >= startColumn && gc <= endColumn &&
gr >= startRow && gr <= endRow) {
columns[gc - startColumn][gr - startRow] = cell.content.$t;
}
}
 
// Insert null for empty spreadsheet cells (#5298)
each(columns, function(column) {
for (i = 0; i < column.length; i++) {
if (column[i] === undefined) {
column[i] = null;
}
}
});
 
self.dataFound();
}
});
}
},
 
/**
* Trim a string from whitespace
*/
trim: function(str, inside) {
if (typeof str === 'string') {
str = str.replace(/^\s+|\s+$/g, '');
 
// Clear white space insdie the string, like thousands separators
if (inside && /^[0-9\s]+$/.test(str)) {
str = str.replace(/\s/g, '');
}
 
if (this.decimalRegex) {
str = str.replace(this.decimalRegex, '$1.$2');
}
}
return str;
},
 
/**
* Parse numeric cells in to number types and date types in to true dates.
*/
parseTypes: function() {
var columns = this.columns,
col = columns.length;
 
while (col--) {
this.parseColumn(columns[col], col);
}
 
},
 
/**
* Parse a single column. Set properties like .isDatetime and .isNumeric.
*/
parseColumn: function(column, col) {
var rawColumns = this.rawColumns,
columns = this.columns,
row = column.length,
val,
floatVal,
trimVal,
trimInsideVal,
firstRowAsNames = this.firstRowAsNames,
isXColumn = inArray(col, this.valueCount.xColumns) !== -1,
dateVal,
backup = [],
diff,
chartOptions = this.chartOptions,
descending,
columnTypes = this.options.columnTypes || [],
columnType = columnTypes[col],
forceCategory = isXColumn && ((chartOptions && chartOptions.xAxis && splat(chartOptions.xAxis)[0].type === 'category') || columnType === 'string');
 
if (!rawColumns[col]) {
rawColumns[col] = [];
}
while (row--) {
val = backup[row] || column[row];
 
trimVal = this.trim(val);
trimInsideVal = this.trim(val, true);
floatVal = parseFloat(trimInsideVal);
 
// Set it the first time
if (rawColumns[col][row] === undefined) {
rawColumns[col][row] = trimVal;
}
 
// Disable number or date parsing by setting the X axis type to category
if (forceCategory || (row === 0 && firstRowAsNames)) {
column[row] = trimVal;
 
} else if (+trimInsideVal === floatVal) { // is numeric
 
column[row] = floatVal;
 
// If the number is greater than milliseconds in a year, assume datetime
if (floatVal > 365 * 24 * 3600 * 1000 && columnType !== 'float') {
column.isDatetime = true;
} else {
column.isNumeric = true;
}
 
if (column[row + 1] !== undefined) {
descending = floatVal > column[row + 1];
}
 
// String, continue to determine if it is a date string or really a string
} else {
dateVal = this.parseDate(val);
// Only allow parsing of dates if this column is an x-column
if (isXColumn && isNumber(dateVal) && columnType !== 'float') { // is date
backup[row] = val;
column[row] = dateVal;
column.isDatetime = true;
 
// Check if the dates are uniformly descending or ascending. If they
// are not, chances are that they are a different time format, so check
// for alternative.
if (column[row + 1] !== undefined) {
diff = dateVal > column[row + 1];
if (diff !== descending && descending !== undefined) {
if (this.alternativeFormat) {
this.dateFormat = this.alternativeFormat;
row = column.length;
this.alternativeFormat = this.dateFormats[this.dateFormat].alternative;
} else {
column.unsorted = true;
}
}
descending = diff;
}
 
} else { // string
column[row] = trimVal === '' ? null : trimVal;
if (row !== 0 && (column.isDatetime || column.isNumeric)) {
column.mixed = true;
}
}
}
}
 
// If strings are intermixed with numbers or dates in a parsed column, it is an indication
// that parsing went wrong or the data was not intended to display as numbers or dates and
// parsing is too aggressive. Fall back to categories. Demonstrated in the
// highcharts/demo/column-drilldown sample.
if (isXColumn && column.mixed) {
columns[col] = rawColumns[col];
}
 
// If the 0 column is date or number and descending, reverse all columns.
if (isXColumn && descending && this.options.sort) {
for (col = 0; col < columns.length; col++) {
columns[col].reverse();
if (firstRowAsNames) {
columns[col].unshift(columns[col].pop());
}
}
}
},
 
/**
* A collection of available date formats, extendable from the outside to support
* custom date formats.
*/
dateFormats: {
'YYYY-mm-dd': {
regex: /^([0-9]{4})[\-\/\.]([0-9]{2})[\-\/\.]([0-9]{2})$/,
parser: function(match) {
return Date.UTC(+match[1], match[2] - 1, +match[3]);
}
},
'dd/mm/YYYY': {
regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,
parser: function(match) {
return Date.UTC(+match[3], match[2] - 1, +match[1]);
},
alternative: 'mm/dd/YYYY' // different format with the same regex
},
'mm/dd/YYYY': {
regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,
parser: function(match) {
return Date.UTC(+match[3], match[1] - 1, +match[2]);
}
},
'dd/mm/YY': {
regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,
parser: function(match) {
return Date.UTC(+match[3] + 2000, match[2] - 1, +match[1]);
},
alternative: 'mm/dd/YY' // different format with the same regex
},
'mm/dd/YY': {
regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,
parser: function(match) {
return Date.UTC(+match[3] + 2000, match[1] - 1, +match[2]);
}
}
},
 
/**
* Parse a date and return it as a number. Overridable through options.parseDate.
*/
parseDate: function(val) {
var parseDate = this.options.parseDate,
ret,
key,
format,
dateFormat = this.options.dateFormat || this.dateFormat,
match;
 
if (parseDate) {
ret = parseDate(val);
 
} else if (typeof val === 'string') {
// Auto-detect the date format the first time
if (!dateFormat) {
for (key in this.dateFormats) {
format = this.dateFormats[key];
match = val.match(format.regex);
if (match) {
this.dateFormat = dateFormat = key;
this.alternativeFormat = format.alternative;
ret = format.parser(match);
break;
}
}
// Next time, use the one previously found
} else {
format = this.dateFormats[dateFormat];
match = val.match(format.regex);
if (match) {
ret = format.parser(match);
}
}
// Fall back to Date.parse
if (!match) {
match = Date.parse(val);
// External tools like Date.js and MooTools extend Date object and
// returns a date.
if (typeof match === 'object' && match !== null && match.getTime) {
ret = match.getTime() - match.getTimezoneOffset() * 60000;
 
// Timestamp
} else if (isNumber(match)) {
ret = match - (new Date(match)).getTimezoneOffset() * 60000;
}
}
}
return ret;
},
 
/**
* Reorganize rows into columns
*/
rowsToColumns: function(rows) {
var row,
rowsLength,
col,
colsLength,
columns;
 
if (rows) {
columns = [];
rowsLength = rows.length;
for (row = 0; row < rowsLength; row++) {
colsLength = rows[row].length;
for (col = 0; col < colsLength; col++) {
if (!columns[col]) {
columns[col] = [];
}
columns[col][row] = rows[row][col];
}
}
}
return columns;
},
 
/**
* A hook for working directly on the parsed columns
*/
parsed: function() {
if (this.options.parsed) {
return this.options.parsed.call(this, this.columns);
}
},
 
getFreeIndexes: function(numberOfColumns, seriesBuilders) {
var s,
i,
freeIndexes = [],
freeIndexValues = [],
referencedIndexes;
 
// Add all columns as free
for (i = 0; i < numberOfColumns; i = i + 1) {
freeIndexes.push(true);
}
 
// Loop all defined builders and remove their referenced columns
for (s = 0; s < seriesBuilders.length; s = s + 1) {
referencedIndexes = seriesBuilders[s].getReferencedColumnIndexes();
 
for (i = 0; i < referencedIndexes.length; i = i + 1) {
freeIndexes[referencedIndexes[i]] = false;
}
}
 
// Collect the values for the free indexes
for (i = 0; i < freeIndexes.length; i = i + 1) {
if (freeIndexes[i]) {
freeIndexValues.push(i);
}
}
 
return freeIndexValues;
},
 
/**
* If a complete callback function is provided in the options, interpret the
* columns into a Highcharts options object.
*/
complete: function() {
 
var columns = this.columns,
xColumns = [],
type,
options = this.options,
series,
data,
i,
j,
r,
seriesIndex,
chartOptions,
allSeriesBuilders = [],
builder,
freeIndexes,
typeCol,
index;
 
xColumns.length = columns.length;
if (options.complete || options.afterComplete) {
 
// Get the names and shift the top row
for (i = 0; i < columns.length; i++) {
if (this.firstRowAsNames) {
columns[i].name = columns[i].shift();
}
}
 
// Use the next columns for series
series = [];
freeIndexes = this.getFreeIndexes(columns.length, this.valueCount.seriesBuilders);
 
// Populate defined series
for (seriesIndex = 0; seriesIndex < this.valueCount.seriesBuilders.length; seriesIndex++) {
builder = this.valueCount.seriesBuilders[seriesIndex];
 
// If the builder can be populated with remaining columns, then add it to allBuilders
if (builder.populateColumns(freeIndexes)) {
allSeriesBuilders.push(builder);
}
}
 
// Populate dynamic series
while (freeIndexes.length > 0) {
builder = new SeriesBuilder();
builder.addColumnReader(0, 'x');
 
// Mark index as used (not free)
index = inArray(0, freeIndexes);
if (index !== -1) {
freeIndexes.splice(index, 1);
}
 
for (i = 0; i < this.valueCount.global; i++) {
// Create and add a column reader for the next free column index
builder.addColumnReader(undefined, this.valueCount.globalPointArrayMap[i]);
}
 
// If the builder can be populated with remaining columns, then add it to allBuilders
if (builder.populateColumns(freeIndexes)) {
allSeriesBuilders.push(builder);
}
}
 
// Get the data-type from the first series x column
if (allSeriesBuilders.length > 0 && allSeriesBuilders[0].readers.length > 0) {
typeCol = columns[allSeriesBuilders[0].readers[0].columnIndex];
if (typeCol !== undefined) {
if (typeCol.isDatetime) {
type = 'datetime';
} else if (!typeCol.isNumeric) {
type = 'category';
}
}
}
// Axis type is category, then the "x" column should be called "name"
if (type === 'category') {
for (seriesIndex = 0; seriesIndex < allSeriesBuilders.length; seriesIndex++) {
builder = allSeriesBuilders[seriesIndex];
for (r = 0; r < builder.readers.length; r++) {
if (builder.readers[r].configName === 'x') {
builder.readers[r].configName = 'name';
}
}
}
}
 
// Read data for all builders
for (seriesIndex = 0; seriesIndex < allSeriesBuilders.length; seriesIndex++) {
builder = allSeriesBuilders[seriesIndex];
 
// Iterate down the cells of each column and add data to the series
data = [];
for (j = 0; j < columns[0].length; j++) {
data[j] = builder.read(columns, j);
}
 
// Add the series
series[seriesIndex] = {
data: data
};
if (builder.name) {
series[seriesIndex].name = builder.name;
}
if (type === 'category') {
series[seriesIndex].turboThreshold = 0;
}
}
 
 
 
// Do the callback
chartOptions = {
series: series
};
if (type) {
chartOptions.xAxis = {
type: type
};
if (type === 'category') {
chartOptions.xAxis.uniqueNames = false;
}
}
 
if (options.complete) {
options.complete(chartOptions);
}
 
// The afterComplete hook is used internally to avoid conflict with the externally
// available complete option.
if (options.afterComplete) {
options.afterComplete(chartOptions);
}
}
}
});
 
// Register the Data prototype and data function on Highcharts
Highcharts.Data = Data;
Highcharts.data = function(options, chartOptions) {
return new Data(options, chartOptions);
};
 
// Extend Chart.init so that the Chart constructor accepts a new configuration
// option group, data.
Highcharts.wrap(Highcharts.Chart.prototype, 'init', function(proceed, userOptions, callback) {
var chart = this;
 
if (userOptions && userOptions.data) {
Highcharts.data(Highcharts.extend(userOptions.data, {
 
afterComplete: function(dataOptions) {
var i, series;
 
// Merge series configs
if (userOptions.hasOwnProperty('series')) {
if (typeof userOptions.series === 'object') {
i = Math.max(userOptions.series.length, dataOptions.series.length);
while (i--) {
series = userOptions.series[i] || {};
userOptions.series[i] = Highcharts.merge(series, dataOptions.series[i]);
}
} else { // Allow merging in dataOptions.series (#2856)
delete userOptions.series;
}
}
 
// Do the merge
userOptions = Highcharts.merge(dataOptions, userOptions);
 
proceed.call(chart, userOptions, callback);
}
}), userOptions);
} else {
proceed.call(chart, userOptions, callback);
}
});
 
/**
* Creates a new SeriesBuilder. A SeriesBuilder consists of a number
* of ColumnReaders that reads columns and give them a name.
* Ex: A series builder can be constructed to read column 3 as 'x' and
* column 7 and 8 as 'y1' and 'y2'.
* The output would then be points/rows of the form {x: 11, y1: 22, y2: 33}
*
* The name of the builder is taken from the second column. In the above
* example it would be the column with index 7.
* @constructor
*/
SeriesBuilder = function() {
this.readers = [];
this.pointIsArray = true;
};
 
/**
* Populates readers with column indexes. A reader can be added without
* a specific index and for those readers the index is taken sequentially
* from the free columns (this is handled by the ColumnCursor instance).
* @returns {boolean}
*/
SeriesBuilder.prototype.populateColumns = function(freeIndexes) {
var builder = this,
enoughColumns = true;
 
// Loop each reader and give it an index if its missing.
// The freeIndexes.shift() will return undefined if there
// are no more columns.
each(builder.readers, function(reader) {
if (reader.columnIndex === undefined) {
reader.columnIndex = freeIndexes.shift();
}
});
 
// Now, all readers should have columns mapped. If not
// then return false to signal that this series should
// not be added.
each(builder.readers, function(reader) {
if (reader.columnIndex === undefined) {
enoughColumns = false;
}
});
 
return enoughColumns;
};
 
/**
* Reads a row from the dataset and returns a point or array depending
* on the names of the readers.
* @param columns
* @param rowIndex
* @returns {Array | Object}
*/
SeriesBuilder.prototype.read = function(columns, rowIndex) {
var builder = this,
pointIsArray = builder.pointIsArray,
point = pointIsArray ? [] : {},
columnIndexes;
 
// Loop each reader and ask it to read its value.
// Then, build an array or point based on the readers names.
each(builder.readers, function(reader) {
var value = columns[reader.columnIndex][rowIndex];
if (pointIsArray) {
point.push(value);
} else {
point[reader.configName] = value;
}
});
 
// The name comes from the first column (excluding the x column)
if (this.name === undefined && builder.readers.length >= 2) {
columnIndexes = builder.getReferencedColumnIndexes();
if (columnIndexes.length >= 2) {
// remove the first one (x col)
columnIndexes.shift();
 
// Sort the remaining
columnIndexes.sort();
 
// Now use the lowest index as name column
this.name = columns[columnIndexes.shift()].name;
}
}
 
return point;
};
 
/**
* Creates and adds ColumnReader from the given columnIndex and configName.
* ColumnIndex can be undefined and in that case the reader will be given
* an index when columns are populated.
* @param columnIndex {Number | undefined}
* @param configName
*/
SeriesBuilder.prototype.addColumnReader = function(columnIndex, configName) {
this.readers.push({
columnIndex: columnIndex,
configName: configName
});
 
if (!(configName === 'x' || configName === 'y' || configName === undefined)) {
this.pointIsArray = false;
}
};
 
/**
* Returns an array of column indexes that the builder will use when
* reading data.
* @returns {Array}
*/
SeriesBuilder.prototype.getReferencedColumnIndexes = function() {
var i,
referencedColumnIndexes = [],
columnReader;
 
for (i = 0; i < this.readers.length; i = i + 1) {
columnReader = this.readers[i];
if (columnReader.columnIndex !== undefined) {
referencedColumnIndexes.push(columnReader.columnIndex);
}
}
 
return referencedColumnIndexes;
};
 
/**
* Returns true if the builder has a reader for the given configName.
* @param configName
* @returns {boolean}
*/
SeriesBuilder.prototype.hasReader = function(configName) {
var i, columnReader;
for (i = 0; i < this.readers.length; i = i + 1) {
columnReader = this.readers[i];
if (columnReader.configName === configName) {
return true;
}
}
// Else return undefined
};
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/drilldown.js
@@ -0,0 +1,24 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Highcharts Drilldown module
 
Author: Torstein Honsi
License: www.highcharts.com/license
 
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(f){var n=f.noop,z=f.color,A=f.defaultOptions,h=f.each,p=f.extend,G=f.format,B=f.objectEach,v=f.pick,u=f.wrap,q=f.Chart,w=f.seriesTypes,C=w.pie,r=w.column,D=f.Tick,x=f.fireEvent,E=f.inArray,F=1;p(A.lang,{drillUpText:"\u25c1 Back to {series.name}"});A.drilldown={animation:{duration:500},drillUpButton:{position:{align:"right",x:-10,y:10}}};f.SVGRenderer.prototype.Element.prototype.fadeIn=function(a){this.attr({opacity:.1,
visibility:"inherit"}).animate({opacity:v(this.newOpacity,1)},a||{duration:250})};q.prototype.addSeriesAsDrilldown=function(a,b){this.addSingleSeriesAsDrilldown(a,b);this.applyDrilldown()};q.prototype.addSingleSeriesAsDrilldown=function(a,b){var d=a.series,c=d.xAxis,e=d.yAxis,g,k=[],l=[],t,m,y;y={colorIndex:v(a.colorIndex,d.colorIndex)};this.drilldownLevels||(this.drilldownLevels=[]);t=d.options._levelNumber||0;(m=this.drilldownLevels[this.drilldownLevels.length-1])&&m.levelNumber!==t&&(m=void 0);
b=p(p({_ddSeriesId:F++},y),b);g=E(a,d.points);h(d.chart.series,function(a){a.xAxis!==c||a.isDrilling||(a.options._ddSeriesId=a.options._ddSeriesId||F++,a.options._colorIndex=a.userOptions._colorIndex,a.options._levelNumber=a.options._levelNumber||t,m?(k=m.levelSeries,l=m.levelSeriesOptions):(k.push(a),l.push(a.options)))});a=p({levelNumber:t,seriesOptions:d.options,levelSeriesOptions:l,levelSeries:k,shapeArgs:a.shapeArgs,bBox:a.graphic?a.graphic.getBBox():{},color:a.isNull?(new f.Color(z)).setOpacity(0).get():
z,lowerSeriesOptions:b,pointOptions:d.options.data[g],pointIndex:g,oldExtremes:{xMin:c&&c.userMin,xMax:c&&c.userMax,yMin:e&&e.userMin,yMax:e&&e.userMax}},y);this.drilldownLevels.push(a);c&&c.names&&(c.names.length=0);b=a.lowerSeries=this.addSeries(b,!1);b.options._levelNumber=t+1;c&&(c.oldPos=c.pos,c.userMin=c.userMax=null,e.userMin=e.userMax=null);d.type===b.type&&(b.animate=b.animateDrilldown||n,b.options.animation=!0)};q.prototype.applyDrilldown=function(){var a=this.drilldownLevels,b;a&&0<a.length&&
(b=a[a.length-1].levelNumber,h(this.drilldownLevels,function(a){a.levelNumber===b&&h(a.levelSeries,function(a){a.options&&a.options._levelNumber===b&&a.remove(!1)})}));this.redraw();this.showDrillUpButton()};q.prototype.getDrilldownBackText=function(){var a=this.drilldownLevels;if(a&&0<a.length)return a=a[a.length-1],a.series=a.seriesOptions,G(this.options.lang.drillUpText,a)};q.prototype.showDrillUpButton=function(){var a=this,b=this.getDrilldownBackText(),d=a.options.drilldown.drillUpButton,c,e;
this.drillUpButton?this.drillUpButton.attr({text:b}).align():(e=(c=d.theme)&&c.states,this.drillUpButton=this.renderer.button(b,null,null,function(){a.drillUp()},c,e&&e.hover,e&&e.select).addClass("highcharts-drillup-button").attr({align:d.position.align,zIndex:7}).add().align(d.position,!1,d.relativeTo||"plotBox"))};q.prototype.drillUp=function(){for(var a=this,b=a.drilldownLevels,d=b[b.length-1].levelNumber,c=b.length,e=a.series,g,k,l,f,m=function(c){var b;h(e,function(a){a.options._ddSeriesId===
c._ddSeriesId&&(b=a)});b=b||a.addSeries(c,!1);b.type===l.type&&b.animateDrillupTo&&(b.animate=b.animateDrillupTo);c===k.seriesOptions&&(f=b)};c--;)if(k=b[c],k.levelNumber===d){b.pop();l=k.lowerSeries;if(!l.chart)for(g=e.length;g--;)if(e[g].options.id===k.lowerSeriesOptions.id&&e[g].options._levelNumber===d+1){l=e[g];break}l.xData=[];h(k.levelSeriesOptions,m);x(a,"drillup",{seriesOptions:k.seriesOptions});f.type===l.type&&(f.drilldownLevel=k,f.options.animation=a.options.drilldown.animation,l.animateDrillupFrom&&
l.chart&&l.animateDrillupFrom(k));f.options._levelNumber=d;l.remove(!1);f.xAxis&&(g=k.oldExtremes,f.xAxis.setExtremes(g.xMin,g.xMax,!1),f.yAxis.setExtremes(g.yMin,g.yMax,!1))}x(a,"drillupall");this.redraw();0===this.drilldownLevels.length?this.drillUpButton=this.drillUpButton.destroy():this.drillUpButton.attr({text:this.getDrilldownBackText()}).align();this.ddDupes.length=[]};r.prototype.supportsDrilldown=!0;r.prototype.animateDrillupTo=function(a){if(!a){var b=this,d=b.drilldownLevel;h(this.points,
function(a){var b=a.dataLabel;a.graphic&&a.graphic.hide();b&&(b.hidden="hidden"===b.attr("visibility"),b.hidden||(b.hide(),a.connector&&a.connector.hide()))});setTimeout(function(){b.points&&h(b.points,function(a,b){b=b===(d&&d.pointIndex)?"show":"fadeIn";var c="show"===b?!0:void 0,e=a.dataLabel;if(a.graphic)a.graphic[b](c);if(e&&!e.hidden&&(e[b](c),a.connector))a.connector[b](c)})},Math.max(this.chart.options.drilldown.animation.duration-50,0));this.animate=n}};r.prototype.animateDrilldown=function(a){var b=
this,d=this.chart.drilldownLevels,c,e=this.chart.options.drilldown.animation,g=this.xAxis;a||(h(d,function(a){b.options._ddSeriesId===a.lowerSeriesOptions._ddSeriesId&&(c=a.shapeArgs)}),c.x+=v(g.oldPos,g.pos)-g.pos,h(this.points,function(a){a.graphic&&a.graphic.attr(c).animate(p(a.shapeArgs,{fill:a.color||b.color}),e);a.dataLabel&&a.dataLabel.fadeIn(e)}),this.animate=null)};r.prototype.animateDrillupFrom=function(a){var b=this.chart.options.drilldown.animation,d=this.group,c=d!==this.chart.seriesGroup,
e=this;h(e.trackerGroups,function(a){if(e[a])e[a].on("mouseover")});c&&delete this.group;h(this.points,function(e){var g=e.graphic,l=a.shapeArgs,h=function(){g.destroy();d&&c&&(d=d.destroy())};g&&(delete e.graphic,b?g.animate(l,f.merge(b,{complete:h})):(g.attr(l),h()))})};C&&p(C.prototype,{supportsDrilldown:!0,animateDrillupTo:r.prototype.animateDrillupTo,animateDrillupFrom:r.prototype.animateDrillupFrom,animateDrilldown:function(a){var b=this.chart.options.drilldown.animation,d=this.chart.drilldownLevels[this.chart.drilldownLevels.length-
1].shapeArgs,c=d.start,e=(d.end-c)/this.points.length;a||(h(this.points,function(a,k){var g=a.shapeArgs;if(a.graphic)a.graphic.attr(f.merge(d,{start:c+k*e,end:c+(k+1)*e}))[b?"animate":"attr"](g,b)}),this.animate=null)}});f.Point.prototype.doDrilldown=function(a,b,d){var c=this.series.chart,e=c.options.drilldown,g=(e.series||[]).length,f;c.ddDupes||(c.ddDupes=[]);for(;g--&&!f;)e.series[g].id===this.drilldown&&-1===E(this.drilldown,c.ddDupes)&&(f=e.series[g],c.ddDupes.push(this.drilldown));x(c,"drilldown",
{point:this,seriesOptions:f,category:b,originalEvent:d,points:void 0!==b&&this.series.xAxis.getDDPoints(b).slice(0)},function(b){var c=b.point.series&&b.point.series.chart,d=b.seriesOptions;c&&d&&(a?c.addSingleSeriesAsDrilldown(b.point,d):c.addSeriesAsDrilldown(b.point,d))})};f.Axis.prototype.drilldownCategory=function(a,b){B(this.getDDPoints(a),function(d){d&&d.series&&d.series.visible&&d.doDrilldown&&d.doDrilldown(!0,a,b)});this.chart.applyDrilldown()};f.Axis.prototype.getDDPoints=function(a){var b=
[];h(this.series,function(d){var c,e=d.xData,f=d.points;for(c=0;c<e.length;c++)if(e[c]===a&&d.options.data[c]&&d.options.data[c].drilldown){b.push(f?f[c]:!0);break}});return b};D.prototype.drillable=function(){var a=this.pos,b=this.label,d=this.axis,c="xAxis"===d.coll&&d.getDDPoints,e=c&&d.getDDPoints(a);c&&(b&&e.length?(b.drillable=!0,b.addClass("highcharts-drilldown-axis-label").on("click",function(b){d.drilldownCategory(a,b)})):b&&b.drillable&&(b.on("click",null),b.removeClass("highcharts-drilldown-axis-label")))};
u(D.prototype,"addLabel",function(a){a.call(this);this.drillable()});u(f.Point.prototype,"init",function(a,b,d,c){var e=a.call(this,b,d,c);c=(a=b.xAxis)&&a.ticks[c];e.drilldown&&f.addEvent(e,"click",function(a){b.xAxis&&!1===b.chart.options.drilldown.allowPointDrilldown?b.xAxis.drilldownCategory(e.x,a):e.doDrilldown(void 0,void 0,a)});c&&c.drillable();return e});u(f.Series.prototype,"drawDataLabels",function(a){var b=this.chart.options.drilldown.activeDataLabelStyle,d=this.chart.renderer;a.call(this);
h(this.points,function(a){a.drilldown&&a.dataLabel&&("contrast"===b.color&&d.getContrast(a.color||this.color),a.dataLabel.addClass("highcharts-drilldown-data-label"))},this)});var H=function(a){a.call(this);h(this.points,function(a){a.drilldown&&a.graphic&&a.graphic.addClass("highcharts-drilldown-point")})};B(w,function(a){a.prototype.supportsDrilldown&&u(a.prototype,"drawTracker",H)})})(n)});
/base/000_base/node_modules/highcharts/js/modules/drilldown.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":24,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","noop","color","defaultOptions","each","extend","format","objectEach","pick","wrap","Chart","seriesTypes","PieSeries","pie","ColumnSeries","column","Tick","fireEvent","inArray","ddSeriesId","lang","drillUpText","drilldown","animation","duration","drillUpButton","position","align","x","y","SVGRenderer","prototype","Element","fadeIn","H.SVGRenderer.prototype.Element.prototype.fadeIn","attr","opacity","visibility","animate","newOpacity","addSeriesAsDrilldown","Chart.prototype.addSeriesAsDrilldown","point","options","addSingleSeriesAsDrilldown","applyDrilldown","Chart.prototype.addSingleSeriesAsDrilldown","ddOptions","oldSeries","series","xAxis","yAxis","pointIndex","levelSeries","levelSeriesOptions","levelNumber","last","colorProp","colorIndex","drilldownLevels","_levelNumber","length","undefined","_ddSeriesId","points","chart","isDrilling","_colorIndex","userOptions","push","level","seriesOptions","shapeArgs","bBox","graphic","getBBox","isNull","setOpacity","Color","get","lowerSeriesOptions","pointOptions","data","oldExtremes","xMin","userMin","xMax","userMax","yMin","yMax","names","newSeries","lowerSeries","addSeries","oldPos","pos","type","animateDrilldown","Chart.prototype.applyDrilldown","levelToRemove","remove","redraw","showDrillUpButton","getDrilldownBackText","Chart.prototype.getDrilldownBackText","lastLevel","Chart.prototype.showDrillUpButton","backText","buttonOptions","states","text","theme","renderer","button","drillUp","hover","select","addClass","zIndex","add","relativeTo","Chart.prototype.drillUp","i","chartSeries","seriesI","addedSeries","animateDrillupTo","pop","id","xData","drilldownLevel","animateDrillupFrom","setExtremes","destroy","ddDupes","supportsDrilldown","ColumnSeries.prototype.animateDrillupTo","init","dataLabel","hide","hidden","connector","setTimeout","verb","inherit","Math","max","ColumnSeries.prototype.animateDrilldown","animateFrom","animationOptions","fill","ColumnSeries.prototype.animateDrillupFrom","group","removeGroup","seriesGroup","trackerGroups","key","on","animateTo","complete","merge","start","startAngle","end","Point","doDrilldown","H.Point.prototype.doDrilldown","_holdRedraw","category","originalEvent","getDDPoints","slice","e","Axis","drilldownCategory","H.Axis.prototype.drilldownCategory","visible","H.Axis.prototype.getDDPoints","ret","drillable","Tick.prototype.drillable","label","axis","isDrillable","coll","ddPointsX","removeClass","proceed","call","tick","ticks","addEvent","allowPointDrilldown","Series","css","activeDataLabelStyle","getContrast","drawTrackerWrapper","seriesType"]
}
/base/000_base/node_modules/highcharts/js/modules/drilldown.src.js
@@ -0,0 +1,760 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Highcharts Drilldown module
*
* Author: Torstein Honsi
* License: www.highcharts.com/license
*
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Highcharts Drilldown module
*
* Author: Torstein Honsi
* License: www.highcharts.com/license
*
*/
 
 
var noop = H.noop,
color = H.color,
defaultOptions = H.defaultOptions,
each = H.each,
extend = H.extend,
format = H.format,
objectEach = H.objectEach,
pick = H.pick,
wrap = H.wrap,
Chart = H.Chart,
seriesTypes = H.seriesTypes,
PieSeries = seriesTypes.pie,
ColumnSeries = seriesTypes.column,
Tick = H.Tick,
fireEvent = H.fireEvent,
inArray = H.inArray,
ddSeriesId = 1;
 
// Add language
extend(defaultOptions.lang, {
drillUpText: '◁ Back to {series.name}'
});
defaultOptions.drilldown = {
 
animation: {
duration: 500
},
drillUpButton: {
position: {
align: 'right',
x: -10,
y: 10
}
// relativeTo: 'plotBox'
// theme
}
};
 
/**
* A general fadeIn method
*/
H.SVGRenderer.prototype.Element.prototype.fadeIn = function(animation) {
this
.attr({
opacity: 0.1,
visibility: 'inherit'
})
.animate({
opacity: pick(this.newOpacity, 1) // newOpacity used in maps
}, animation || {
duration: 250
});
};
 
/**
* Add a series to the chart as drilldown from a specific point in the parent
* series. This method is used for async drilldown, when clicking a point in a
* series should result in loading and displaying a more high-resolution series.
* When not async, the setup is simpler using the {@link
* https://api.highcharts.com/highcharts/drilldown.series|drilldown.series}
* options structure.
*
* @memberOf Highcharts.Chart
* @function #addSeriesAsDrilldown
*
* @param {Highcharts.Point} point
* The point from which the drilldown will start.
* @param {SeriesOptions} options
* The series options for the new, detailed series.
*
* @sample highcharts/drilldown/async/ Async drilldown
*/
Chart.prototype.addSeriesAsDrilldown = function(point, options) {
this.addSingleSeriesAsDrilldown(point, options);
this.applyDrilldown();
};
Chart.prototype.addSingleSeriesAsDrilldown = function(point, ddOptions) {
var oldSeries = point.series,
xAxis = oldSeries.xAxis,
yAxis = oldSeries.yAxis,
newSeries,
pointIndex,
levelSeries = [],
levelSeriesOptions = [],
level,
levelNumber,
last,
colorProp;
 
 
 
colorProp = {
colorIndex: pick(point.colorIndex, oldSeries.colorIndex)
};
 
 
if (!this.drilldownLevels) {
this.drilldownLevels = [];
}
 
levelNumber = oldSeries.options._levelNumber || 0;
 
// See if we can reuse the registered series from last run
last = this.drilldownLevels[this.drilldownLevels.length - 1];
if (last && last.levelNumber !== levelNumber) {
last = undefined;
}
 
ddOptions = extend(extend({
_ddSeriesId: ddSeriesId++
}, colorProp), ddOptions);
pointIndex = inArray(point, oldSeries.points);
 
// Record options for all current series
each(oldSeries.chart.series, function(series) {
if (series.xAxis === xAxis && !series.isDrilling) {
series.options._ddSeriesId = series.options._ddSeriesId || ddSeriesId++;
series.options._colorIndex = series.userOptions._colorIndex;
series.options._levelNumber = series.options._levelNumber || levelNumber; // #3182
 
if (last) {
levelSeries = last.levelSeries;
levelSeriesOptions = last.levelSeriesOptions;
} else {
levelSeries.push(series);
levelSeriesOptions.push(series.options);
}
}
});
 
// Add a record of properties for each drilldown level
level = extend({
levelNumber: levelNumber,
seriesOptions: oldSeries.options,
levelSeriesOptions: levelSeriesOptions,
levelSeries: levelSeries,
shapeArgs: point.shapeArgs,
bBox: point.graphic ? point.graphic.getBBox() : {}, // no graphic in line series with markers disabled
color: point.isNull ? new H.Color(color).setOpacity(0).get() : color,
lowerSeriesOptions: ddOptions,
pointOptions: oldSeries.options.data[pointIndex],
pointIndex: pointIndex,
oldExtremes: {
xMin: xAxis && xAxis.userMin,
xMax: xAxis && xAxis.userMax,
yMin: yAxis && yAxis.userMin,
yMax: yAxis && yAxis.userMax
}
}, colorProp);
 
// Push it to the lookup array
this.drilldownLevels.push(level);
 
// Reset names to prevent extending (#6704)
if (xAxis && xAxis.names) {
xAxis.names.length = 0;
}
 
newSeries = level.lowerSeries = this.addSeries(ddOptions, false);
newSeries.options._levelNumber = levelNumber + 1;
if (xAxis) {
xAxis.oldPos = xAxis.pos;
xAxis.userMin = xAxis.userMax = null;
yAxis.userMin = yAxis.userMax = null;
}
 
// Run fancy cross-animation on supported and equal types
if (oldSeries.type === newSeries.type) {
newSeries.animate = newSeries.animateDrilldown || noop;
newSeries.options.animation = true;
}
};
 
Chart.prototype.applyDrilldown = function() {
var drilldownLevels = this.drilldownLevels,
levelToRemove;
 
if (drilldownLevels && drilldownLevels.length > 0) { // #3352, async loading
levelToRemove = drilldownLevels[drilldownLevels.length - 1].levelNumber;
each(this.drilldownLevels, function(level) {
if (level.levelNumber === levelToRemove) {
each(level.levelSeries, function(series) {
if (series.options && series.options._levelNumber === levelToRemove) { // Not removed, not added as part of a multi-series drilldown
series.remove(false);
}
});
}
});
}
 
this.redraw();
this.showDrillUpButton();
};
 
Chart.prototype.getDrilldownBackText = function() {
var drilldownLevels = this.drilldownLevels,
lastLevel;
if (drilldownLevels && drilldownLevels.length > 0) { // #3352, async loading
lastLevel = drilldownLevels[drilldownLevels.length - 1];
lastLevel.series = lastLevel.seriesOptions;
return format(this.options.lang.drillUpText, lastLevel);
}
 
};
 
Chart.prototype.showDrillUpButton = function() {
var chart = this,
backText = this.getDrilldownBackText(),
buttonOptions = chart.options.drilldown.drillUpButton,
attr,
states;
 
 
if (!this.drillUpButton) {
attr = buttonOptions.theme;
states = attr && attr.states;
 
this.drillUpButton = this.renderer.button(
backText,
null,
null,
function() {
chart.drillUp();
},
attr,
states && states.hover,
states && states.select
)
.addClass('highcharts-drillup-button')
.attr({
align: buttonOptions.position.align,
zIndex: 7
})
.add()
.align(buttonOptions.position, false, buttonOptions.relativeTo || 'plotBox');
} else {
this.drillUpButton.attr({
text: backText
})
.align();
}
};
 
/**
* When the chart is drilled down to a child series, calling `chart.drillUp()`
* will drill up to the parent series.
*
* @memberOf Highcharts.Chart
* @name #drillUp
*/
Chart.prototype.drillUp = function() {
var chart = this,
drilldownLevels = chart.drilldownLevels,
levelNumber = drilldownLevels[drilldownLevels.length - 1].levelNumber,
i = drilldownLevels.length,
chartSeries = chart.series,
seriesI,
level,
oldSeries,
newSeries,
oldExtremes,
addSeries = function(seriesOptions) {
var addedSeries;
each(chartSeries, function(series) {
if (series.options._ddSeriesId === seriesOptions._ddSeriesId) {
addedSeries = series;
}
});
 
addedSeries = addedSeries || chart.addSeries(seriesOptions, false);
if (addedSeries.type === oldSeries.type && addedSeries.animateDrillupTo) {
addedSeries.animate = addedSeries.animateDrillupTo;
}
if (seriesOptions === level.seriesOptions) {
newSeries = addedSeries;
}
};
 
while (i--) {
 
level = drilldownLevels[i];
if (level.levelNumber === levelNumber) {
drilldownLevels.pop();
 
// Get the lower series by reference or id
oldSeries = level.lowerSeries;
if (!oldSeries.chart) { // #2786
seriesI = chartSeries.length; // #2919
while (seriesI--) {
if (chartSeries[seriesI].options.id === level.lowerSeriesOptions.id &&
chartSeries[seriesI].options._levelNumber === levelNumber + 1) { // #3867
oldSeries = chartSeries[seriesI];
break;
}
}
}
oldSeries.xData = []; // Overcome problems with minRange (#2898)
 
each(level.levelSeriesOptions, addSeries);
 
fireEvent(chart, 'drillup', {
seriesOptions: level.seriesOptions
});
 
if (newSeries.type === oldSeries.type) {
newSeries.drilldownLevel = level;
newSeries.options.animation = chart.options.drilldown.animation;
 
if (oldSeries.animateDrillupFrom && oldSeries.chart) { // #2919
oldSeries.animateDrillupFrom(level);
}
}
newSeries.options._levelNumber = levelNumber;
 
oldSeries.remove(false);
 
// Reset the zoom level of the upper series
if (newSeries.xAxis) {
oldExtremes = level.oldExtremes;
newSeries.xAxis.setExtremes(oldExtremes.xMin, oldExtremes.xMax, false);
newSeries.yAxis.setExtremes(oldExtremes.yMin, oldExtremes.yMax, false);
}
}
}
 
// Fire a once-off event after all series have been drilled up (#5158)
fireEvent(chart, 'drillupall');
 
this.redraw();
 
if (this.drilldownLevels.length === 0) {
this.drillUpButton = this.drillUpButton.destroy();
} else {
this.drillUpButton.attr({
text: this.getDrilldownBackText()
})
.align();
}
 
this.ddDupes.length = []; // #3315
};
 
 
ColumnSeries.prototype.supportsDrilldown = true;
 
/**
* When drilling up, keep the upper series invisible until the lower series has
* moved into place
*/
ColumnSeries.prototype.animateDrillupTo = function(init) {
if (!init) {
var newSeries = this,
level = newSeries.drilldownLevel;
 
// First hide all items before animating in again
each(this.points, function(point) {
var dataLabel = point.dataLabel;
 
if (point.graphic) { // #3407
point.graphic.hide();
}
 
if (dataLabel) {
// The data label is initially hidden, make sure it is not faded
// in (#6127)
dataLabel.hidden = dataLabel.attr('visibility') === 'hidden';
 
if (!dataLabel.hidden) {
dataLabel.hide();
if (point.connector) {
point.connector.hide();
}
}
}
});
 
 
// Do dummy animation on first point to get to complete
setTimeout(function() {
if (newSeries.points) { // May be destroyed in the meantime, #3389
each(newSeries.points, function(point, i) {
// Fade in other points
var verb =
i === (level && level.pointIndex) ? 'show' : 'fadeIn',
inherit = verb === 'show' ? true : undefined,
dataLabel = point.dataLabel;
 
 
if (point.graphic) { // #3407
point.graphic[verb](inherit);
}
 
if (dataLabel && !dataLabel.hidden) { // #6127
dataLabel[verb](inherit);
if (point.connector) {
point.connector[verb](inherit);
}
}
});
}
}, Math.max(this.chart.options.drilldown.animation.duration - 50, 0));
 
// Reset
this.animate = noop;
}
 
};
 
ColumnSeries.prototype.animateDrilldown = function(init) {
var series = this,
drilldownLevels = this.chart.drilldownLevels,
animateFrom,
animationOptions = this.chart.options.drilldown.animation,
xAxis = this.xAxis;
 
if (!init) {
each(drilldownLevels, function(level) {
if (series.options._ddSeriesId === level.lowerSeriesOptions._ddSeriesId) {
animateFrom = level.shapeArgs;
 
}
});
 
animateFrom.x += (pick(xAxis.oldPos, xAxis.pos) - xAxis.pos);
 
each(this.points, function(point) {
var animateTo = point.shapeArgs;
 
 
 
if (point.graphic) {
point.graphic
.attr(animateFrom)
.animate(
extend(point.shapeArgs, {
fill: point.color || series.color
}),
animationOptions
);
}
if (point.dataLabel) {
point.dataLabel.fadeIn(animationOptions);
}
});
this.animate = null;
}
 
};
 
/**
* When drilling up, pull out the individual point graphics from the lower series
* and animate them into the origin point in the upper series.
*/
ColumnSeries.prototype.animateDrillupFrom = function(level) {
var animationOptions = this.chart.options.drilldown.animation,
group = this.group,
// For 3d column series all columns are added to one group
// so we should not delete the whole group. #5297
removeGroup = group !== this.chart.seriesGroup,
series = this;
 
// Cancel mouse events on the series group (#2787)
each(series.trackerGroups, function(key) {
if (series[key]) { // we don't always have dataLabelsGroup
series[key].on('mouseover');
}
});
 
if (removeGroup) {
delete this.group;
}
 
each(this.points, function(point) {
var graphic = point.graphic,
animateTo = level.shapeArgs,
complete = function() {
graphic.destroy();
if (group && removeGroup) {
group = group.destroy();
}
};
 
if (graphic) {
 
delete point.graphic;
 
 
 
if (animationOptions) {
graphic.animate(
animateTo,
H.merge(animationOptions, {
complete: complete
})
);
} else {
graphic.attr(animateTo);
complete();
}
}
});
};
 
if (PieSeries) {
extend(PieSeries.prototype, {
supportsDrilldown: true,
animateDrillupTo: ColumnSeries.prototype.animateDrillupTo,
animateDrillupFrom: ColumnSeries.prototype.animateDrillupFrom,
 
animateDrilldown: function(init) {
var level = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1],
animationOptions = this.chart.options.drilldown.animation,
animateFrom = level.shapeArgs,
start = animateFrom.start,
angle = animateFrom.end - start,
startAngle = angle / this.points.length;
 
if (!init) {
each(this.points, function(point, i) {
var animateTo = point.shapeArgs;
 
 
 
if (point.graphic) {
point.graphic
.attr(H.merge(animateFrom, {
start: start + i * startAngle,
end: start + (i + 1) * startAngle
}))[animationOptions ? 'animate' : 'attr'](
animateTo,
animationOptions
);
}
});
this.animate = null;
}
}
});
}
 
H.Point.prototype.doDrilldown = function(_holdRedraw, category, originalEvent) {
var series = this.series,
chart = series.chart,
drilldown = chart.options.drilldown,
i = (drilldown.series || []).length,
seriesOptions;
 
if (!chart.ddDupes) {
chart.ddDupes = [];
}
 
while (i-- && !seriesOptions) {
if (drilldown.series[i].id === this.drilldown && inArray(this.drilldown, chart.ddDupes) === -1) {
seriesOptions = drilldown.series[i];
chart.ddDupes.push(this.drilldown);
}
}
 
// Fire the event. If seriesOptions is undefined, the implementer can check for
// seriesOptions, and call addSeriesAsDrilldown async if necessary.
fireEvent(chart, 'drilldown', {
point: this,
seriesOptions: seriesOptions,
category: category,
originalEvent: originalEvent,
points: category !== undefined && this.series.xAxis.getDDPoints(category).slice(0)
}, function(e) {
var chart = e.point.series && e.point.series.chart,
seriesOptions = e.seriesOptions;
if (chart && seriesOptions) {
if (_holdRedraw) {
chart.addSingleSeriesAsDrilldown(e.point, seriesOptions);
} else {
chart.addSeriesAsDrilldown(e.point, seriesOptions);
}
}
});
 
 
};
 
/**
* Drill down to a given category. This is the same as clicking on an axis label.
*/
H.Axis.prototype.drilldownCategory = function(x, e) {
objectEach(this.getDDPoints(x), function(point) {
if (point && point.series && point.series.visible && point.doDrilldown) { // #3197
point.doDrilldown(true, x, e);
}
});
this.chart.applyDrilldown();
};
 
/**
* Return drillable points for this specific X value
*/
H.Axis.prototype.getDDPoints = function(x) {
var ret = [];
each(this.series, function(series) {
var i,
xData = series.xData,
points = series.points;
 
for (i = 0; i < xData.length; i++) {
if (xData[i] === x && series.options.data[i] && series.options.data[i].drilldown) {
ret.push(points ? points[i] : true);
break;
}
}
});
return ret;
};
 
 
/**
* Make a tick label drillable, or remove drilling on update
*/
Tick.prototype.drillable = function() {
var pos = this.pos,
label = this.label,
axis = this.axis,
isDrillable = axis.coll === 'xAxis' && axis.getDDPoints,
ddPointsX = isDrillable && axis.getDDPoints(pos);
 
if (isDrillable) {
if (label && ddPointsX.length) {
label.drillable = true;
 
 
 
label
.addClass('highcharts-drilldown-axis-label')
 
.on('click', function(e) {
axis.drilldownCategory(pos, e);
});
 
} else if (label && label.drillable) {
 
 
 
label.on('click', null); // #3806
label.removeClass('highcharts-drilldown-axis-label');
}
}
};
 
/**
* Always keep the drillability updated (#3951)
*/
wrap(Tick.prototype, 'addLabel', function(proceed) {
proceed.call(this);
this.drillable();
});
 
 
/**
* On initialization of each point, identify its label and make it clickable. Also, provide a
* list of points associated to that label.
*/
wrap(H.Point.prototype, 'init', function(proceed, series, options, x) {
var point = proceed.call(this, series, options, x),
xAxis = series.xAxis,
tick = xAxis && xAxis.ticks[x];
 
if (point.drilldown) {
 
// Add the click event to the point
H.addEvent(point, 'click', function(e) {
if (series.xAxis && series.chart.options.drilldown.allowPointDrilldown === false) {
series.xAxis.drilldownCategory(point.x, e); // #5822, x changed
} else {
point.doDrilldown(undefined, undefined, e);
}
});
/*wrap(point, 'importEvents', function (proceed) { // wrapping importEvents makes point.click event work
if (!this.hasImportedEvents) {
proceed.call(this);
H.addEvent(this, 'click', function () {
this.doDrilldown();
});
}
});*/
 
}
 
// Add or remove click handler and style on the tick label
if (tick) {
tick.drillable();
}
 
return point;
});
 
wrap(H.Series.prototype, 'drawDataLabels', function(proceed) {
var css = this.chart.options.drilldown.activeDataLabelStyle,
renderer = this.chart.renderer;
 
proceed.call(this);
 
each(this.points, function(point) {
var pointCSS = {};
if (point.drilldown && point.dataLabel) {
if (css.color === 'contrast') {
pointCSS.color = renderer.getContrast(point.color || this.color);
}
point.dataLabel
.addClass('highcharts-drilldown-data-label');
 
 
}
}, this);
});
 
// Mark the trackers with a pointer
var drawTrackerWrapper = function(proceed) {
proceed.call(this);
each(this.points, function(point) {
if (point.drilldown && point.graphic) {
point.graphic.addClass('highcharts-drilldown-point');
 
 
}
});
};
 
objectEach(seriesTypes, function(seriesType) {
if (seriesType.prototype.supportsDrilldown) {
wrap(seriesType.prototype, 'drawTracker', drawTrackerWrapper);
}
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/export-data.js
@@ -0,0 +1,17 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Exporting module
 
(c) 2010-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(d){var q=d.each,n=d.pick,k=d.win,p=k.document,a=d.seriesTypes,v=void 0!==p.createElement("a").download;d.setOptions({lang:{downloadCSV:"Download CSV",downloadXLS:"Download XLS",viewData:"View data table"}});d.Chart.prototype.getDataRows=function(){var h=(this.options.exporting||{}).csv||{},b,c=this.xAxis,g={},r=[],m=[],f,l,u=h.dateFormat||"%Y-%m-%d %H:%M:%S",k=h.columnHeaderFormatter||function(e,
f,b){return e instanceof d.Axis?e.options.title&&e.options.title.text||(e.isDatetimeAxis?"DateTime":"Category"):e?e.name+(1<b?" ("+f+")":""):"Category"},t=[];f=0;q(this.series,function(e){var b=e.options.keys||e.pointArrayMap||["y"],h=b.length,r=e.requireSorting,u={},l=d.inArray(e.xAxis,c),a;q(b,function(b){u[b]=e[b+"Axis"]&&e[b+"Axis"].categories||[]});if(!1!==e.options.includeInCSVExport&&!1!==e.visible){d.find(t,function(b){return b[0]===l})||t.push([l,f]);for(a=0;a<h;)m.push(k(e,b[a],b.length)),
a++;q(e.points,function(d,c){c=r?d.x:c;var m,k;a=0;g[c]||(g[c]=[],g[c].xValues=[]);g[c].x=d.x;g[c].xValues[l]=d.x;e.xAxis&&"name"!==e.exportKey||(g[c].name=d.name);for(;a<h;)m=b[a],k=d[m],g[c][f+a]=n(u[m][k],k),a++});f+=a}});for(l in g)g.hasOwnProperty(l)&&r.push(g[l]);var a,p,h=[m];for(f=t.length;f--;)a=t[f][0],p=t[f][1],b=c[a],r.sort(function(b,c){return b.xValues[a]-c.xValues[a]}),l=k(b),h[0].splice(p,0,l),q(r,function(e){var c=e.name;c||(b.isDatetimeAxis?(e.x instanceof Date&&(e.x=e.x.getTime()),
c=d.dateFormat(u,e.x)):c=b.categories?n(b.names[e.x],b.categories[e.x],e.x):e.x);e.splice(p,0,c)});return h=h.concat(r)};d.Chart.prototype.getCSV=function(d){var b="",c=this.getDataRows(),a=(this.options.exporting||{}).csv||{},h=a.itemDelimiter||",",m=a.lineDelimiter||"\n";q(c,function(a,l){for(var f,g=a.length,k=d?(1.1).toLocaleString()[1]:".";g--;)f=a[g],"string"===typeof f&&(f='"'+f+'"'),"number"===typeof f&&","===k&&(f=f.toString().replace(".",",")),a[g]=f;b+=a.join(h);l<c.length-1&&(b+=m)});
return b};d.Chart.prototype.getTable=function(a){var b="\x3ctable\x3e\x3cthead\x3e",c=this.getDataRows();q(c,function(c,d){var h=d?"td":"th",f,g,k=a?(1.1).toLocaleString()[1]:".";b+="\x3ctr\x3e";for(g=0;g<c.length;g+=1)f=c[g],"number"===typeof f?(f=f.toString(),","===k&&(f=f.replace(".",k)),b+="\x3c"+h+' class\x3d"number"\x3e'+f+"\x3c/"+h+"\x3e"):b+="\x3c"+h+"\x3e"+(void 0===f?"":f)+"\x3c/"+h+"\x3e";b+="\x3c/tr\x3e";d||(b+="\x3c/thead\x3e\x3ctbody\x3e")});return b+="\x3c/tbody\x3e\x3c/table\x3e"};
d.Chart.prototype.fileDownload=function(a,b,c,g){var h,m=((this.options.exporting||{}).csv||{}).url||"http://www.highcharts.com/studies/csv-export/download.php";h=this.options.exporting.filename?this.options.exporting.filename:this.title?this.title.textStr.replace(/ /g,"-").toLowerCase():"chart";k.Blob&&k.navigator.msSaveOrOpenBlob?(a=new k.Blob([c]),k.navigator.msSaveOrOpenBlob(a,h+"."+b)):v?(c=p.createElement("a"),c.href=a,c.target="_blank",c.download=h+"."+b,this.container.append(c),c.click(),
c.remove()):d.post(m,{data:c,type:g,extension:b})};d.Chart.prototype.downloadCSV=function(){var a=this.getCSV(!0);this.fileDownload("data:text/csv,\ufeff"+encodeURIComponent(a),"csv",a,"text/csv")};d.Chart.prototype.downloadXLS=function(){var a='\x3chtml xmlns:o\x3d"urn:schemas-microsoft-com:office:office" xmlns:x\x3d"urn:schemas-microsoft-com:office:excel" xmlns\x3d"http://www.w3.org/TR/REC-html40"\x3e\x3chead\x3e\x3c!--[if gte mso 9]\x3e\x3cxml\x3e\x3cx:ExcelWorkbook\x3e\x3cx:ExcelWorksheets\x3e\x3cx:ExcelWorksheet\x3e\x3cx:Name\x3eArk1\x3c/x:Name\x3e\x3cx:WorksheetOptions\x3e\x3cx:DisplayGridlines/\x3e\x3c/x:WorksheetOptions\x3e\x3c/x:ExcelWorksheet\x3e\x3c/x:ExcelWorksheets\x3e\x3c/x:ExcelWorkbook\x3e\x3c/xml\x3e\x3c![endif]--\x3e\x3cstyle\x3etd{border:none;font-family: Calibri, sans-serif;} .number{mso-number-format:"0.00";}\x3c/style\x3e\x3cmeta name\x3dProgId content\x3dExcel.Sheet\x3e\x3cmeta charset\x3dUTF-8\x3e\x3c/head\x3e\x3cbody\x3e'+
this.getTable(!0)+"\x3c/body\x3e\x3c/html\x3e";this.fileDownload("data:application/vnd.ms-excel;base64,"+k.btoa(unescape(encodeURIComponent(a))),"xls",a,"application/vnd.ms-excel")};d.Chart.prototype.viewData=function(){this.dataTableDiv||(this.dataTableDiv=p.createElement("div"),this.dataTableDiv.className="highcharts-data-table",this.renderTo.parentNode.insertBefore(this.dataTableDiv,this.renderTo.nextSibling));this.dataTableDiv.innerHTML=this.getTable()};d.getOptions().exporting&&d.getOptions().exporting.buttons.contextButton.menuItems.push({textKey:"downloadCSV",
onclick:function(){this.downloadCSV()}},{textKey:"downloadXLS",onclick:function(){this.downloadXLS()}},{textKey:"viewData",onclick:function(){this.viewData()}});a.map&&(a.map.prototype.exportKey="name");a.mapbubble&&(a.mapbubble.prototype.exportKey="name");a.treemap&&(a.treemap.prototype.exportKey="name")})(n)});
/base/000_base/node_modules/highcharts/js/modules/export-data.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":17,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","each","pick","win","doc","document","seriesTypes","downloadAttrSupported","undefined","createElement","download","setOptions","lang","downloadCSV","downloadXLS","viewData","Chart","prototype","getDataRows","Highcharts.Chart.prototype.getDataRows","options","csv","exporting","xAxis","xAxes","rows","rowArr","names","i","x","dateFormat","columnHeaderFormatter","item","key","keyLength","Axis","title","text","isDatetimeAxis","name","xAxisIndices","series","pointArrayMap","keys","valueCount","length","requireSorting","categoryMap","xAxisIndex","inArray","j","prop","categories","includeInCSVExport","visible","find","index","push","points","point","pIdx","val","xValues","exportKey","hasOwnProperty","column","dataRows","sort","a","b","xTitle","splice","row","category","Date","getTime","concat","getCSV","Highcharts.Chart.prototype.getCSV","useLocalDecimalPoint","itemDelimiter","lineDelimiter","n","toLocaleString","toString","replace","join","getTable","Highcharts.Chart.prototype.getTable","html","tag","fileDownload","Highcharts.Chart.prototype.fileDownload","href","extension","content","MIME","url","filename","textStr","toLowerCase","Blob","navigator","msSaveOrOpenBlob","blobObject","target","container","append","click","remove","post","data","type","Highcharts.Chart.prototype.downloadCSV","encodeURIComponent","Highcharts.Chart.prototype.downloadXLS","template","uri","btoa","unescape","Highcharts.Chart.prototype.viewData","dataTableDiv","className","renderTo","parentNode","insertBefore","nextSibling","innerHTML","getOptions","buttons","contextButton","menuItems","textKey","onclick","map","mapbubble","treemap"]
}
/base/000_base/node_modules/highcharts/js/modules/export-data.src.js
@@ -0,0 +1,415 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Exporting module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(Highcharts) {
/**
* Expoerimental data export module for Highcharts
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
// docs
// - After experimental release:
// - Move info in repo readme to docs/API.
// - Deprecate repo and plugins page
// - Update demos (esp accessibility) to use new URL
// - Before official release, set up systematic tests for all series types
 
/* eslint indent:0 */
 
var each = Highcharts.each,
pick = Highcharts.pick,
win = Highcharts.win,
doc = win.document,
seriesTypes = Highcharts.seriesTypes,
downloadAttrSupported = doc.createElement('a').download !== undefined;
 
Highcharts.setOptions({
lang: {
downloadCSV: 'Download CSV',
downloadXLS: 'Download XLS',
viewData: 'View data table'
}
});
 
/**
* Get the data rows as a two dimensional array
*/
Highcharts.Chart.prototype.getDataRows = function() {
var options = (this.options.exporting || {}).csv || {},
xAxis,
xAxes = this.xAxis,
rows = {},
rowArr = [],
dataRows,
names = [],
i,
x,
xTitle,
// Options
dateFormat = options.dateFormat || '%Y-%m-%d %H:%M:%S',
columnHeaderFormatter = options.columnHeaderFormatter || function(item, key, keyLength) {
if (item instanceof Highcharts.Axis) {
return (item.options.title && item.options.title.text) ||
(item.isDatetimeAxis ? 'DateTime' : 'Category');
}
return item ?
item.name + (keyLength > 1 ? ' (' + key + ')' : '') :
'Category';
},
xAxisIndices = [];
 
// Loop the series and index values
i = 0;
each(this.series, function(series) {
var keys = series.options.keys,
pointArrayMap = keys || series.pointArrayMap || ['y'],
valueCount = pointArrayMap.length,
requireSorting = series.requireSorting,
categoryMap = {},
xAxisIndex = Highcharts.inArray(series.xAxis, xAxes),
j;
 
// Map the categories for value axes
each(pointArrayMap, function(prop) {
categoryMap[prop] = (series[prop + 'Axis'] && series[prop + 'Axis'].categories) || [];
});
 
if (series.options.includeInCSVExport !== false && series.visible !== false) { // #55
 
// Build a lookup for X axis index and the position of the first
// series that belongs to that X axis. Includes -1 for non-axis
// series types like pies.
if (!Highcharts.find(xAxisIndices, function(index) {
return index[0] === xAxisIndex;
})) {
xAxisIndices.push([xAxisIndex, i]);
}
 
// Add the column headers, usually the same as series names
j = 0;
while (j < valueCount) {
names.push(columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length));
j++;
}
 
each(series.points, function(point, pIdx) {
var key = requireSorting ? point.x : pIdx,
prop,
val;
 
j = 0;
 
if (!rows[key]) {
// Generate the row
rows[key] = [];
// Contain the X values from one or more X axes
rows[key].xValues = [];
}
rows[key].x = point.x;
rows[key].xValues[xAxisIndex] = point.x;
 
// Pies, funnels, geo maps etc. use point name in X row
if (!series.xAxis || series.exportKey === 'name') {
rows[key].name = point.name;
}
 
while (j < valueCount) {
prop = pointArrayMap[j]; // y, z etc
val = point[prop];
// Pick a Y axis category if present
rows[key][i + j] = pick(categoryMap[prop][val], val);
j++;
}
 
});
i = i + j;
}
});
 
// Make a sortable array
for (x in rows) {
if (rows.hasOwnProperty(x)) {
rowArr.push(rows[x]);
}
}
 
var xAxisIndex, column;
dataRows = [names];
 
i = xAxisIndices.length;
while (i--) { // Start from end to splice in
xAxisIndex = xAxisIndices[i][0];
column = xAxisIndices[i][1];
xAxis = xAxes[xAxisIndex];
 
// Sort it by X values
rowArr.sort(function(a, b) { // eslint-disable-line no-loop-func
return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];
});
 
// Add header row
xTitle = columnHeaderFormatter(xAxis);
//dataRows = [[xTitle].concat(names)];
dataRows[0].splice(column, 0, xTitle);
 
// Add the category column
each(rowArr, function(row) { // eslint-disable-line no-loop-func
var category = row.name;
if (!category) {
if (xAxis.isDatetimeAxis) {
if (row.x instanceof Date) {
row.x = row.x.getTime();
}
category = Highcharts.dateFormat(dateFormat, row.x);
} else if (xAxis.categories) {
category = pick(
xAxis.names[row.x],
xAxis.categories[row.x],
row.x
);
} else {
category = row.x;
}
}
 
// Add the X/date/category
row.splice(column, 0, category);
});
}
dataRows = dataRows.concat(rowArr);
 
return dataRows;
};
 
/**
* Get a CSV string
*/
Highcharts.Chart.prototype.getCSV = function(useLocalDecimalPoint) {
var csv = '',
rows = this.getDataRows(),
options = (this.options.exporting || {}).csv || {},
itemDelimiter = options.itemDelimiter || ',', // use ';' for direct to Excel
lineDelimiter = options.lineDelimiter || '\n'; // '\n' isn't working with the js csv data extraction
 
// Transform the rows to CSV
each(rows, function(row, i) {
var val = '',
j = row.length,
n = useLocalDecimalPoint ? (1.1).toLocaleString()[1] : '.';
while (j--) {
val = row[j];
if (typeof val === 'string') {
val = '"' + val + '"';
}
if (typeof val === 'number') {
if (n === ',') {
val = val.toString().replace('.', ',');
}
}
row[j] = val;
}
// Add the values
csv += row.join(itemDelimiter);
 
// Add the line delimiter
if (i < rows.length - 1) {
csv += lineDelimiter;
}
});
return csv;
};
 
/**
* Build a HTML table with the data
*/
Highcharts.Chart.prototype.getTable = function(useLocalDecimalPoint) {
var html = '<table><thead>',
rows = this.getDataRows();
 
// Transform the rows to HTML
each(rows, function(row, i) {
var tag = i ? 'td' : 'th',
val,
j,
n = useLocalDecimalPoint ? (1.1).toLocaleString()[1] : '.';
 
html += '<tr>';
for (j = 0; j < row.length; j = j + 1) {
val = row[j];
// Add the cell
if (typeof val === 'number') {
val = val.toString();
if (n === ',') {
val = val.replace('.', n);
}
html += '<' + tag + ' class="number">' + val + '</' + tag + '>';
 
} else {
html += '<' + tag + '>' + (val === undefined ? '' : val) + '</' + tag + '>';
}
}
 
html += '</tr>';
 
// After the first row, end head and start body
if (!i) {
html += '</thead><tbody>';
}
 
});
html += '</tbody></table>';
 
return html;
};
 
Highcharts.Chart.prototype.fileDownload = function(href, extension, content, MIME) {
var a,
blobObject,
name,
options = (this.options.exporting || {}).csv || {},
url = options.url || 'http://www.highcharts.com/studies/csv-export/download.php';
 
if (this.options.exporting.filename) {
name = this.options.exporting.filename;
} else if (this.title) {
name = this.title.textStr.replace(/ /g, '-').toLowerCase();
} else {
name = 'chart';
}
 
// MS specific. Check this first because of bug with Edge (#76)
if (win.Blob && win.navigator.msSaveOrOpenBlob) {
// Falls to msSaveOrOpenBlob if download attribute is not supported
blobObject = new win.Blob([content]);
win.navigator.msSaveOrOpenBlob(blobObject, name + '.' + extension);
 
// Download attribute supported
} else if (downloadAttrSupported) {
a = doc.createElement('a');
a.href = href;
a.target = '_blank';
a.download = name + '.' + extension;
this.container.append(a); // #111
a.click();
a.remove();
 
} else {
// Fall back to server side handling
Highcharts.post(url, {
data: content,
type: MIME,
extension: extension
});
}
};
 
/**
* Call this on click of 'Download CSV' button
*/
Highcharts.Chart.prototype.downloadCSV = function() {
var csv = this.getCSV(true);
this.fileDownload(
'data:text/csv,\uFEFF' + encodeURIComponent(csv),
'csv',
csv,
'text/csv'
);
};
 
/**
* Call this on click of 'Download XLS' button
*/
Highcharts.Chart.prototype.downloadXLS = function() {
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">' +
'<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>' +
'<x:Name>Ark1</x:Name>' +
'<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->' +
'<style>td{border:none;font-family: Calibri, sans-serif;} .number{mso-number-format:"0.00";}</style>' +
'<meta name=ProgId content=Excel.Sheet>' +
'<meta charset=UTF-8>' +
'</head><body>' +
this.getTable(true) +
'</body></html>',
base64 = function(s) {
return win.btoa(unescape(encodeURIComponent(s))); // #50
};
this.fileDownload(
uri + base64(template),
'xls',
template,
'application/vnd.ms-excel'
);
};
 
/**
* View the data in a table below the chart
*/
Highcharts.Chart.prototype.viewData = function() {
if (!this.dataTableDiv) {
this.dataTableDiv = doc.createElement('div');
this.dataTableDiv.className = 'highcharts-data-table';
 
// Insert after the chart container
this.renderTo.parentNode.insertBefore(
this.dataTableDiv,
this.renderTo.nextSibling
);
}
 
this.dataTableDiv.innerHTML = this.getTable();
};
 
 
// Add "Download CSV" to the exporting menu. Use download attribute if supported, else
// run a simple PHP script that returns a file. The source code for the PHP script can be viewed at
// https://raw.github.com/highslide-software/highcharts.com/master/studies/csv-export/csv.php
if (Highcharts.getOptions().exporting) {
Highcharts.getOptions().exporting.buttons.contextButton.menuItems.push({
textKey: 'downloadCSV',
onclick: function() {
this.downloadCSV();
}
}, {
textKey: 'downloadXLS',
onclick: function() {
this.downloadXLS();
}
}, {
textKey: 'viewData',
onclick: function() {
this.viewData();
}
});
}
 
// Series specific
if (seriesTypes.map) {
seriesTypes.map.prototype.exportKey = 'name';
}
if (seriesTypes.mapbubble) {
seriesTypes.mapbubble.prototype.exportKey = 'name';
}
if (seriesTypes.treemap) {
seriesTypes.treemap.prototype.exportKey = 'name';
}
 
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/exporting.js
@@ -0,0 +1,28 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Exporting module
 
(c) 2010-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(p){"object"===typeof module&&module.exports?module.exports=p:p(Highcharts)})(function(p){(function(e){var p=e.defaultOptions,t=e.doc,B=e.Chart,u=e.addEvent,K=e.removeEvent,H=e.fireEvent,n=e.createElement,D=e.discardElement,I=e.css,x=e.merge,E=e.pick,k=e.each,F=e.objectEach,y=e.extend,z=e.win,J=z.navigator.userAgent,G=e.SVGRenderer,L=e.Renderer.prototype.symbols,M=/Edge\/|Trident\/|MSIE /.test(J),N=/firefox/i.test(J);y(p.lang,{printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",
downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",contextButtonTitle:"Chart context menu"});p.navigation={buttonOptions:{theme:{},symbolSize:14,symbolX:12.5,symbolY:10.5,align:"right",buttonSpacing:3,height:22,verticalAlign:"top",width:24}};p.exporting={type:"image/png",url:"https://export.highcharts.com/",printMaxWidth:780,scale:2,buttons:{contextButton:{className:"highcharts-contextbutton",menuClassName:"highcharts-contextmenu",symbol:"menu",_titleKey:"contextButtonTitle",
menuItems:[{textKey:"printChart",onclick:function(){this.print()}},{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]}}};e.post=function(a,b,c){var d=n("form",x({method:"post",action:a,enctype:"multipart/form-data"},c),
{display:"none"},t.body);F(b,function(a,b){n("input",{type:"hidden",name:b,value:a},null,d)});d.submit();D(d)};y(B.prototype,{sanitizeSVG:function(a,b){if(b&&b.exporting&&b.exporting.allowHTML){var c=a.match(/<\/svg>(.*?$)/);c&&c[1]&&(c='\x3cforeignObject x\x3d"0" y\x3d"0" width\x3d"'+b.chart.width+'" height\x3d"'+b.chart.height+'"\x3e\x3cbody xmlns\x3d"http://www.w3.org/1999/xhtml"\x3e'+c[1]+"\x3c/body\x3e\x3c/foreignObject\x3e",a=a.replace("\x3c/svg\x3e",c+"\x3c/svg\x3e"))}return a=a.replace(/zIndex="[^"]+"/g,
"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\(("|&quot;)(\S+)("|&quot;)\)/g,"url($2)").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'\x3csvg xmlns:xlink\x3d"http://www.w3.org/1999/xlink" ').replace(/ (NS[0-9]+\:)?href=/g," xlink:href\x3d").replace(/\n/," ").replace(/<\/svg>.*?$/,"\x3c/svg\x3e").replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g,'$1\x3d"rgb($2)" $1-opacity\x3d"$3"').replace(/&nbsp;/g,
"\u00a0").replace(/&shy;/g,"\u00ad")},getChartHTML:function(){this.inlineStyles();return this.container.innerHTML},getSVG:function(a){var b,c,d,v,l,g=x(this.options,a);t.createElementNS||(t.createElementNS=function(a,b){return t.createElement(b)});c=n("div",null,{position:"absolute",top:"-9999em",width:this.chartWidth+"px",height:this.chartHeight+"px"},t.body);d=this.renderTo.style.width;l=this.renderTo.style.height;d=g.exporting.sourceWidth||g.chart.width||/px$/.test(d)&&parseInt(d,10)||600;l=g.exporting.sourceHeight||
g.chart.height||/px$/.test(l)&&parseInt(l,10)||400;y(g.chart,{animation:!1,renderTo:c,forExport:!0,renderer:"SVGRenderer",width:d,height:l});g.exporting.enabled=!1;delete g.data;g.series=[];k(this.series,function(a){v=x(a.userOptions,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:a.visible});v.isInternal||g.series.push(v)});k(this.axes,function(a){a.userOptions.internalKey||(a.userOptions.internalKey=e.uniqueKey())});b=new e.Chart(g,this.callback);a&&k(["xAxis","yAxis","series"],function(d){var c=
{};a[d]&&(c[d]=a[d],b.update(c))});k(this.axes,function(a){var d=e.find(b.axes,function(b){return b.options.internalKey===a.userOptions.internalKey}),c=a.getExtremes(),f=c.userMin,c=c.userMax;!d||void 0===f&&void 0===c||d.setExtremes(f,c,!0,!1)});d=b.getChartHTML();d=this.sanitizeSVG(d,g);g=null;b.destroy();D(c);return d},getSVGForExport:function(a,b){var c=this.options.exporting;return this.getSVG(x({chart:{borderRadius:0}},c.chartOptions,b,{exporting:{sourceWidth:a&&a.sourceWidth||c.sourceWidth,
sourceHeight:a&&a.sourceHeight||c.sourceHeight}}))},exportChart:function(a,b){b=this.getSVGForExport(a,b);a=x(this.options.exporting,a);e.post(a.url,{filename:a.filename||"chart",type:a.type,width:a.width||0,scale:a.scale,svg:b},a.formAttributes)},print:function(){var a=this,b=a.container,c=[],d=b.parentNode,e=t.body,l=e.childNodes,g=a.options.exporting.printMaxWidth,f,m;if(!a.isPrinting){a.isPrinting=!0;a.pointer.reset(null,0);H(a,"beforePrint");if(m=g&&a.chartWidth>g)f=[a.options.chart.width,void 0,
!1],a.setSize(g,void 0,!1);k(l,function(a,b){1===a.nodeType&&(c[b]=a.style.display,a.style.display="none")});e.appendChild(b);z.focus();z.print();setTimeout(function(){d.appendChild(b);k(l,function(a,b){1===a.nodeType&&(a.style.display=c[b])});a.isPrinting=!1;m&&a.setSize.apply(a,f);H(a,"afterPrint")},1E3)}},contextMenu:function(a,b,c,d,e,l,g){var f=this,m=f.chartWidth,q=f.chartHeight,v="cache-"+a,h=f[v],r=Math.max(e,l),C,w;h||(f[v]=h=n("div",{className:a},{position:"absolute",zIndex:1E3,padding:r+
"px"},f.container),C=n("div",{className:"highcharts-menu"},null,h),w=function(){I(h,{display:"none"});g&&g.setState(0);f.openMenu=!1},f.exportEvents.push(u(h,"mouseleave",function(){h.hideTimer=setTimeout(w,500)}),u(h,"mouseenter",function(){clearTimeout(h.hideTimer)}),u(t,"mouseup",function(b){f.pointer.inClass(b.target,a)||w()})),k(b,function(a){if(a){var b;b=a.separator?n("hr",null,null,C):n("div",{className:"highcharts-menu-item",onclick:function(b){b&&b.stopPropagation();w();a.onclick&&a.onclick.apply(f,
arguments)},innerHTML:a.text||f.options.lang[a.textKey]},null,C);f.exportDivElements.push(b)}}),f.exportDivElements.push(C,h),f.exportMenuWidth=h.offsetWidth,f.exportMenuHeight=h.offsetHeight);b={display:"block"};c+f.exportMenuWidth>m?b.right=m-c-e-r+"px":b.left=c-r+"px";d+l+f.exportMenuHeight>q&&"top"!==g.alignOptions.verticalAlign?b.bottom=q-d-r+"px":b.top=d+l-r+"px";I(h,b);f.openMenu=!0},addButton:function(a){var b=this,c=b.renderer,d=x(b.options.navigation.buttonOptions,a),e=d.onclick,l=d.menuItems,
g,f,m=d.symbolSize||12;b.btnCount||(b.btnCount=0);b.exportDivElements||(b.exportDivElements=[],b.exportSVGElements=[]);if(!1!==d.enabled){var q=d.theme,k=q.states,h=k&&k.hover,k=k&&k.select,r;delete q.states;e?r=function(a){a.stopPropagation();e.call(b,a)}:l&&(r=function(){b.contextMenu(f.menuClassName,l,f.translateX,f.translateY,f.width,f.height,f);f.setState(2)});d.text&&d.symbol?q.paddingLeft=E(q.paddingLeft,25):d.text||y(q,{width:d.width,height:d.height,padding:0});f=c.button(d.text,0,0,r,q,h,
k).addClass(a.className).attr({title:b.options.lang[d._titleKey],zIndex:3});f.menuClassName=a.menuClassName||"highcharts-menu-"+b.btnCount++;d.symbol&&(g=c.symbol(d.symbol,d.symbolX-m/2,d.symbolY-m/2,m,m).addClass("highcharts-button-symbol").attr({zIndex:1}).add(f));f.add().align(y(d,{width:f.width,x:E(d.x,b.buttonOffset)}),!0,"spacingBox");b.buttonOffset+=(f.width+d.buttonSpacing)*("right"===d.align?-1:1);b.exportSVGElements.push(f,g)}},destroyExport:function(a){var b=a?a.target:this;a=b.exportSVGElements;
var c=b.exportDivElements,d=b.exportEvents,e;a&&(k(a,function(a,d){a&&(a.onclick=a.ontouchstart=null,e="cache-"+a.menuClassName,b[e]&&delete b[e],b.exportSVGElements[d]=a.destroy())}),a.length=0);c&&(k(c,function(a,d){clearTimeout(a.hideTimer);K(a,"mouseleave");b.exportDivElements[d]=a.onmouseout=a.onmouseover=a.ontouchstart=a.onclick=null;D(a)}),c.length=0);d&&(k(d,function(a){a()}),d.length=0)}});G.prototype.inlineToAttributes="fill stroke strokeLinecap strokeLinejoin strokeWidth textAnchor x y".split(" ");
G.prototype.inlineBlacklist=[/-/,/^(clipPath|cssText|d|height|width)$/,/^font$/,/[lL]ogical(Width|Height)$/,/perspective/,/TapHighlightColor/,/^transition/];G.prototype.unstyledElements=["clipPath","defs","desc"];B.prototype.inlineStyles=function(){function a(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()})}function b(c){function q(b,e){n=u=!1;if(l){for(A=l.length;A--&&!u;)u=l[A].test(e);n=!u}"transform"===e&&"none"===b&&(n=!0);for(A=v.length;A--&&!n;)n=v[A].test(e)||"function"===
typeof b;n||r[e]!==b&&f[c.nodeName][e]!==b&&(-1!==d.indexOf(e)?c.setAttribute(a(e),b):p+=a(e)+":"+b+";")}var h,r,p="",w,n,u,A;if(1===c.nodeType&&-1===g.indexOf(c.nodeName)){h=z.getComputedStyle(c,null);r="svg"===c.nodeName?{}:z.getComputedStyle(c.parentNode,null);f[c.nodeName]||(m||(m=t.createElementNS(e.SVG_NS,"svg"),m.setAttribute("version","1.1"),t.body.appendChild(m)),w=t.createElementNS(c.namespaceURI,c.nodeName),m.appendChild(w),f[c.nodeName]=x(z.getComputedStyle(w,null)),m.removeChild(w));
if(N||M)for(var y in h)q(h[y],y);else F(h,q);p&&(h=c.getAttribute("style"),c.setAttribute("style",(h?h+";":"")+p));"svg"===c.nodeName&&c.setAttribute("stroke-width","1px");"text"!==c.nodeName&&k(c.children||c.childNodes,b)}}var c=this.renderer,d=c.inlineToAttributes,v=c.inlineBlacklist,l=c.inlineWhitelist,g=c.unstyledElements,f={},m;b(this.container.querySelector("svg"));m.parentNode.removeChild(m)};L.menu=function(a,b,c,d){return["M",a,b+2.5,"L",a+c,b+2.5,"M",a,b+d/2+.5,"L",a+c,b+d/2+.5,"M",a,b+
d-1.5,"L",a+c,b+d-1.5]};B.prototype.renderExporting=function(){var a=this,b=a.options.exporting,c=b.buttons,d=a.isDirtyExporting||!a.exportSVGElements;a.buttonOffset=0;a.isDirtyExporting&&a.destroyExport();d&&!1!==b.enabled&&(a.exportEvents=[],F(c,function(b){a.addButton(b)}),a.isDirtyExporting=!1);u(a,"destroy",a.destroyExport)};B.prototype.callbacks.push(function(a){a.renderExporting();u(a,"redraw",a.renderExporting);k(["exporting","navigation"],function(b){a[b]={update:function(c,d){a.isDirtyExporting=
!0;x(!0,a.options[b],c);E(d,!0)&&a.redraw()}}})})})(p)});
/base/000_base/node_modules/highcharts/js/modules/exporting.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":28,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","defaultOptions","doc","Chart","addEvent","removeEvent","fireEvent","createElement","discardElement","css","merge","pick","each","objectEach","extend","win","userAgent","navigator","SVGRenderer","symbols","Renderer","prototype","isMSBrowser","test","isFirefoxBrowser","lang","printChart","downloadPNG","downloadJPEG","downloadPDF","downloadSVG","contextButtonTitle","navigation","buttonOptions","theme","symbolSize","symbolX","symbolY","align","buttonSpacing","height","verticalAlign","width","exporting","type","url","printMaxWidth","scale","buttons","contextButton","className","menuClassName","symbol","_titleKey","menuItems","textKey","onclick","print","separator","exportChart","post","H.post","data","formAttributes","form","method","action","enctype","display","body","val","name","value","submit","sanitizeSVG","svg","options","allowHTML","html","match","chart","replace","getChartHTML","inlineStyles","container","innerHTML","getSVG","chartOptions","chartCopy","sandbox","seriesOptions","sourceHeight","createElementNS","doc.createElementNS","ns","tagName","position","top","chartWidth","chartHeight","cssWidth","renderTo","style","cssHeight","sourceWidth","parseInt","animation","forExport","renderer","enabled","series","serie","userOptions","enableMouseTracking","showCheckbox","visible","isInternal","push","axes","axis","internalKey","uniqueKey","callback","coll","collOptions","update","axisCopy","find","copy","extremes","getExtremes","userMin","userMax","undefined","setExtremes","destroy","getSVGForExport","chartExportingOptions","borderRadius","exportingOptions","filename","origDisplay","origParent","parentNode","childNodes","resetParams","handleMaxWidth","isPrinting","pointer","reset","setSize","node","i","nodeType","appendChild","focus","setTimeout","apply","contextMenu","items","x","y","button","cacheName","menu","menuPadding","Math","max","innerMenu","hide","zIndex","padding","setState","openMenu","exportEvents","hideTimer","clearTimeout","e","inClass","target","item","element","stopPropagation","arguments","text","exportDivElements","exportMenuWidth","offsetWidth","exportMenuHeight","offsetHeight","menuStyle","right","left","alignOptions","bottom","addButton","btnOptions","btnCount","exportSVGElements","attr","states","hover","select","call","translateX","translateY","paddingLeft","addClass","title","add","buttonOffset","destroyExport","elem","ontouchstart","length","onmouseout","onmouseover","unbind","inlineToAttributes","inlineBlacklist","unstyledElements","Chart.prototype.inlineStyles","hyphenate","prop","a","b","toLowerCase","recurse","filterStyles","blacklisted","whitelisted","whitelist","blacklist","parentStyles","defaultStyles","nodeName","indexOf","setAttribute","cssText","styles","dummy","getComputedStyle","dummySVG","SVG_NS","namespaceURI","removeChild","p","styleAttr","getAttribute","children","inlineWhitelist","querySelector","symbols.menu","arr","renderExporting","Chart.prototype.renderExporting","isDirty","isDirtyExporting","callbacks","redraw"]
}
/base/000_base/node_modules/highcharts/js/modules/exporting.src.js
@@ -0,0 +1,1050 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Exporting module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Exporting module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
/* eslint indent:0 */
 
// create shortcuts
var defaultOptions = H.defaultOptions,
doc = H.doc,
Chart = H.Chart,
addEvent = H.addEvent,
removeEvent = H.removeEvent,
fireEvent = H.fireEvent,
createElement = H.createElement,
discardElement = H.discardElement,
css = H.css,
merge = H.merge,
pick = H.pick,
each = H.each,
objectEach = H.objectEach,
extend = H.extend,
isTouchDevice = H.isTouchDevice,
win = H.win,
userAgent = win.navigator.userAgent,
SVGRenderer = H.SVGRenderer,
symbols = H.Renderer.prototype.symbols,
isMSBrowser = /Edge\/|Trident\/|MSIE /.test(userAgent),
isFirefoxBrowser = /firefox/i.test(userAgent);
 
// Add language
extend(defaultOptions.lang, {
printChart: 'Print chart',
downloadPNG: 'Download PNG image',
downloadJPEG: 'Download JPEG image',
downloadPDF: 'Download PDF document',
downloadSVG: 'Download SVG vector image',
contextButtonTitle: 'Chart context menu'
});
 
// Buttons and menus are collected in a separate config option set called 'navigation'.
// This can be extended later to add control buttons like zoom and pan right click menus.
defaultOptions.navigation = {
buttonOptions: {
theme: {},
symbolSize: 14,
symbolX: 12.5,
symbolY: 10.5,
align: 'right',
buttonSpacing: 3,
height: 22,
// text: null,
verticalAlign: 'top',
width: 24
}
};
 
 
 
 
// Add the export related options
defaultOptions.exporting = {
//enabled: true,
//filename: 'chart',
type: 'image/png',
url: 'https://export.highcharts.com/',
//width: undefined,
printMaxWidth: 780,
scale: 2,
buttons: {
contextButton: {
className: 'highcharts-contextbutton',
menuClassName: 'highcharts-contextmenu',
//x: -10,
symbol: 'menu',
_titleKey: 'contextButtonTitle',
menuItems: [{
textKey: 'printChart',
onclick: function() {
this.print();
}
}, {
separator: true
}, {
textKey: 'downloadPNG',
onclick: function() {
this.exportChart();
}
}, {
textKey: 'downloadJPEG',
onclick: function() {
this.exportChart({
type: 'image/jpeg'
});
}
}, {
textKey: 'downloadPDF',
onclick: function() {
this.exportChart({
type: 'application/pdf'
});
}
}, {
textKey: 'downloadSVG',
onclick: function() {
this.exportChart({
type: 'image/svg+xml'
});
}
}]
}
}
};
 
// Add the H.post utility
H.post = function(url, data, formAttributes) {
// create the form
var form = createElement('form', merge({
method: 'post',
action: url,
enctype: 'multipart/form-data'
}, formAttributes), {
display: 'none'
}, doc.body);
 
// add the data
objectEach(data, function(val, name) {
createElement('input', {
type: 'hidden',
name: name,
value: val
}, null, form);
});
 
// submit
form.submit();
 
// clean up
discardElement(form);
};
 
extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
 
/**
* A collection of fixes on the produced SVG to account for expando properties,
* browser bugs, VML problems and other. Returns a cleaned SVG.
*/
sanitizeSVG: function(svg, options) {
// Move HTML into a foreignObject
if (options && options.exporting && options.exporting.allowHTML) {
var html = svg.match(/<\/svg>(.*?$)/);
if (html && html[1]) {
html = '<foreignObject x="0" y="0" ' +
'width="' + options.chart.width + '" ' +
'height="' + options.chart.height + '">' +
'<body xmlns="http://www.w3.org/1999/xhtml">' +
html[1] +
'</body>' +
'</foreignObject>';
svg = svg.replace('</svg>', html + '</svg>');
}
}
 
svg = svg
.replace(/zIndex="[^"]+"/g, '')
.replace(/isShadow="[^"]+"/g, '')
.replace(/symbolName="[^"]+"/g, '')
.replace(/jQuery[0-9]+="[^"]+"/g, '')
.replace(/url\(("|&quot;)(\S+)("|&quot;)\)/g, 'url($2)')
.replace(/url\([^#]+#/g, 'url(#')
.replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
.replace(/ (NS[0-9]+\:)?href=/g, ' xlink:href=') // #3567
.replace(/\n/, ' ')
// Any HTML added to the container after the SVG (#894)
.replace(/<\/svg>.*?$/, '</svg>')
// Batik doesn't support rgba fills and strokes (#3095)
.replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g, '$1="rgb($2)" $1-opacity="$3"')
/* This fails in IE < 8
.replace(/([0-9]+)\.([0-9]+)/g, function(s1, s2, s3) { // round off to save weight
return s2 +'.'+ s3[0];
})*/
 
// Replace HTML entities, issue #347
.replace(/&nbsp;/g, '\u00A0') // no-break space
.replace(/&shy;/g, '\u00AD'); // soft hyphen
 
 
 
return svg;
},
 
/**
* Return innerHTML of chart. Used as hook for plugins.
*/
getChartHTML: function() {
 
this.inlineStyles();
 
return this.container.innerHTML;
},
 
/**
* Return an SVG representation of the chart.
*
* @param chartOptions {Options}
* Additional chart options for the generated SVG representation.
* For collections like `xAxis`, `yAxis` or `series`, the additional
* options is either merged in to the orininal item of the same
* `id`, or to the first item if a common id is not found.
* @return {String}
* The SVG representation of the rendered chart.
* @sample highcharts/members/chart-getsvg/
* View the SVG from a button
*/
getSVG: function(chartOptions) {
var chart = this,
chartCopy,
sandbox,
svg,
seriesOptions,
sourceWidth,
sourceHeight,
cssWidth,
cssHeight,
options = merge(chart.options, chartOptions); // copy the options and add extra options
 
 
// IE compatibility hack for generating SVG content that it doesn't really understand
if (!doc.createElementNS) {
doc.createElementNS = function(ns, tagName) {
return doc.createElement(tagName);
};
}
 
// create a sandbox where a new chart will be generated
sandbox = createElement('div', null, {
position: 'absolute',
top: '-9999em',
width: chart.chartWidth + 'px',
height: chart.chartHeight + 'px'
}, doc.body);
 
// get the source size
cssWidth = chart.renderTo.style.width;
cssHeight = chart.renderTo.style.height;
sourceWidth = options.exporting.sourceWidth ||
options.chart.width ||
(/px$/.test(cssWidth) && parseInt(cssWidth, 10)) ||
600;
sourceHeight = options.exporting.sourceHeight ||
options.chart.height ||
(/px$/.test(cssHeight) && parseInt(cssHeight, 10)) ||
400;
 
// override some options
extend(options.chart, {
animation: false,
renderTo: sandbox,
forExport: true,
renderer: 'SVGRenderer',
width: sourceWidth,
height: sourceHeight
});
options.exporting.enabled = false; // hide buttons in print
delete options.data; // #3004
 
// prepare for replicating the chart
options.series = [];
each(chart.series, function(serie) {
seriesOptions = merge(serie.userOptions, { // #4912
animation: false, // turn off animation
enableMouseTracking: false,
showCheckbox: false,
visible: serie.visible
});
 
if (!seriesOptions.isInternal) { // used for the navigator series that has its own option set
options.series.push(seriesOptions);
}
});
 
// Assign an internal key to ensure a one-to-one mapping (#5924)
each(chart.axes, function(axis) {
if (!axis.userOptions.internalKey) { // #6444
axis.userOptions.internalKey = H.uniqueKey();
}
});
 
// generate the chart copy
chartCopy = new H.Chart(options, chart.callback);
 
// Axis options and series options (#2022, #3900, #5982)
if (chartOptions) {
each(['xAxis', 'yAxis', 'series'], function(coll) {
var collOptions = {};
if (chartOptions[coll]) {
collOptions[coll] = chartOptions[coll];
chartCopy.update(collOptions);
}
});
}
 
// Reflect axis extremes in the export (#5924)
each(chart.axes, function(axis) {
var axisCopy = H.find(chartCopy.axes, function(copy) {
return copy.options.internalKey ===
axis.userOptions.internalKey;
}),
extremes = axis.getExtremes(),
userMin = extremes.userMin,
userMax = extremes.userMax;
 
if (axisCopy && (userMin !== undefined || userMax !== undefined)) {
axisCopy.setExtremes(userMin, userMax, true, false);
}
});
 
// Get the SVG from the container's innerHTML
svg = chartCopy.getChartHTML();
 
svg = chart.sanitizeSVG(svg, options);
 
// free up memory
options = null;
chartCopy.destroy();
discardElement(sandbox);
 
return svg;
},
 
getSVGForExport: function(options, chartOptions) {
var chartExportingOptions = this.options.exporting;
 
return this.getSVG(merge({
chart: {
borderRadius: 0
}
},
chartExportingOptions.chartOptions,
chartOptions, {
exporting: {
sourceWidth: (options && options.sourceWidth) || chartExportingOptions.sourceWidth,
sourceHeight: (options && options.sourceHeight) || chartExportingOptions.sourceHeight
}
}
));
},
 
/**
* Exporting module required. Submit an SVG version of the chart to a server
* along with some parameters for conversion.
* @param {Object} exportingOptions
* Exporting options in addition to those defined in {@link
* https://api.highcharts.com/highcharts/exporting|exporting}.
* @param {String} exportingOptions.filename
* The file name for the export without extension.
* @param {String} exportingOptions.url
* The URL for the server module to do the conversion.
* @param {Number} exportingOptions.width
* The width of the PNG or JPG image generated on the server.
* @param {String} exportingOptions.type
* The MIME type of the converted image.
* @param {Number} exportingOptions.sourceWidth
* The pixel width of the source (in-page) chart.
* @param {Number} exportingOptions.sourceHeight
* The pixel height of the source (in-page) chart.
* @param {Options} chartOptions
* Additional chart options for the exported chart. For example a
* different background color can be added here, or `dataLabels`
* for export only.
*
* @sample highcharts/members/chart-exportchart/
* Export with no options
* @sample highcharts/members/chart-exportchart-filename/
* PDF type and custom filename
* @sample highcharts/members/chart-exportchart-custom-background/
* Different chart background in export
* @sample stock/members/chart-exportchart/
* Export with Highstock
*/
exportChart: function(exportingOptions, chartOptions) {
 
var svg = this.getSVGForExport(exportingOptions, chartOptions);
 
// merge the options
exportingOptions = merge(this.options.exporting, exportingOptions);
 
// do the post
H.post(exportingOptions.url, {
filename: exportingOptions.filename || 'chart',
type: exportingOptions.type,
width: exportingOptions.width || 0, // IE8 fails to post undefined correctly, so use 0
scale: exportingOptions.scale,
svg: svg
}, exportingOptions.formAttributes);
 
},
 
/**
* Exporting module required. Clears away other elements in the page and
* prints the chart as it is displayed. By default, when the exporting
* module is enabled, a context button with a drop down menu in the upper
* right corner accesses this function.
*
* @sample highcharts/members/chart-print/
* Print from a HTML button
*/
print: function() {
 
var chart = this,
container = chart.container,
origDisplay = [],
origParent = container.parentNode,
body = doc.body,
childNodes = body.childNodes,
printMaxWidth = chart.options.exporting.printMaxWidth,
resetParams,
handleMaxWidth;
 
if (chart.isPrinting) { // block the button while in printing mode
return;
}
 
chart.isPrinting = true;
chart.pointer.reset(null, 0);
 
fireEvent(chart, 'beforePrint');
 
// Handle printMaxWidth
handleMaxWidth = printMaxWidth && chart.chartWidth > printMaxWidth;
if (handleMaxWidth) {
resetParams = [chart.options.chart.width, undefined, false];
chart.setSize(printMaxWidth, undefined, false);
}
 
// hide all body content
each(childNodes, function(node, i) {
if (node.nodeType === 1) {
origDisplay[i] = node.style.display;
node.style.display = 'none';
}
});
 
// pull out the chart
body.appendChild(container);
 
// print
win.focus(); // #1510
win.print();
 
// allow the browser to prepare before reverting
setTimeout(function() {
 
// put the chart back in
origParent.appendChild(container);
 
// restore all body content
each(childNodes, function(node, i) {
if (node.nodeType === 1) {
node.style.display = origDisplay[i];
}
});
 
chart.isPrinting = false;
 
// Reset printMaxWidth
if (handleMaxWidth) {
chart.setSize.apply(chart, resetParams);
}
 
fireEvent(chart, 'afterPrint');
 
}, 1000);
 
},
 
/**
* Display a popup menu for choosing the export type
*
* @param {String} className An identifier for the menu
* @param {Array} items A collection with text and onclicks for the items
* @param {Number} x The x position of the opener button
* @param {Number} y The y position of the opener button
* @param {Number} width The width of the opener button
* @param {Number} height The height of the opener button
*/
contextMenu: function(className, items, x, y, width, height, button) {
var chart = this,
navOptions = chart.options.navigation,
chartWidth = chart.chartWidth,
chartHeight = chart.chartHeight,
cacheName = 'cache-' + className,
menu = chart[cacheName],
menuPadding = Math.max(width, height), // for mouse leave detection
innerMenu,
hide,
menuStyle;
 
// create the menu only the first time
if (!menu) {
 
// create a HTML element above the SVG
chart[cacheName] = menu = createElement('div', {
className: className
}, {
position: 'absolute',
zIndex: 1000,
padding: menuPadding + 'px'
}, chart.container);
 
innerMenu = createElement('div', {
className: 'highcharts-menu'
}, null, menu);
 
 
 
// hide on mouse out
hide = function() {
css(menu, {
display: 'none'
});
if (button) {
button.setState(0);
}
chart.openMenu = false;
};
 
// Hide the menu some time after mouse leave (#1357)
chart.exportEvents.push(
addEvent(menu, 'mouseleave', function() {
menu.hideTimer = setTimeout(hide, 500);
}),
addEvent(menu, 'mouseenter', function() {
clearTimeout(menu.hideTimer);
}),
 
// Hide it on clicking or touching outside the menu (#2258, #2335,
// #2407)
addEvent(doc, 'mouseup', function(e) {
if (!chart.pointer.inClass(e.target, className)) {
hide();
}
})
);
 
// create the items
each(items, function(item) {
if (item) {
var element;
 
if (item.separator) {
element = createElement('hr', null, null, innerMenu);
 
} else {
element = createElement('div', {
className: 'highcharts-menu-item',
onclick: function(e) {
if (e) { // IE7
e.stopPropagation();
}
hide();
if (item.onclick) {
item.onclick.apply(chart, arguments);
}
},
innerHTML: item.text || chart.options.lang[item.textKey]
}, null, innerMenu);
 
 
}
 
// Keep references to menu divs to be able to destroy them
chart.exportDivElements.push(element);
}
});
 
// Keep references to menu and innerMenu div to be able to destroy them
chart.exportDivElements.push(innerMenu, menu);
 
chart.exportMenuWidth = menu.offsetWidth;
chart.exportMenuHeight = menu.offsetHeight;
}
 
menuStyle = {
display: 'block'
};
 
// if outside right, right align it
if (x + chart.exportMenuWidth > chartWidth) {
menuStyle.right = (chartWidth - x - width - menuPadding) + 'px';
} else {
menuStyle.left = (x - menuPadding) + 'px';
}
// if outside bottom, bottom align it
if (y + height + chart.exportMenuHeight > chartHeight && button.alignOptions.verticalAlign !== 'top') {
menuStyle.bottom = (chartHeight - y - menuPadding) + 'px';
} else {
menuStyle.top = (y + height - menuPadding) + 'px';
}
 
css(menu, menuStyle);
chart.openMenu = true;
},
 
/**
* Add the export button to the chart
*/
addButton: function(options) {
var chart = this,
renderer = chart.renderer,
btnOptions = merge(chart.options.navigation.buttonOptions, options),
onclick = btnOptions.onclick,
menuItems = btnOptions.menuItems,
symbol,
button,
symbolSize = btnOptions.symbolSize || 12;
if (!chart.btnCount) {
chart.btnCount = 0;
}
 
// Keeps references to the button elements
if (!chart.exportDivElements) {
chart.exportDivElements = [];
chart.exportSVGElements = [];
}
 
if (btnOptions.enabled === false) {
return;
}
 
 
var attr = btnOptions.theme,
states = attr.states,
hover = states && states.hover,
select = states && states.select,
callback;
 
delete attr.states;
 
if (onclick) {
callback = function(e) {
e.stopPropagation();
onclick.call(chart, e);
};
 
} else if (menuItems) {
callback = function() {
chart.contextMenu(
button.menuClassName,
menuItems,
button.translateX,
button.translateY,
button.width,
button.height,
button
);
button.setState(2);
};
}
 
 
if (btnOptions.text && btnOptions.symbol) {
attr.paddingLeft = pick(attr.paddingLeft, 25);
 
} else if (!btnOptions.text) {
extend(attr, {
width: btnOptions.width,
height: btnOptions.height,
padding: 0
});
}
 
button = renderer.button(btnOptions.text, 0, 0, callback, attr, hover, select)
.addClass(options.className)
.attr({
 
title: chart.options.lang[btnOptions._titleKey],
zIndex: 3 // #4955
});
button.menuClassName = options.menuClassName || 'highcharts-menu-' + chart.btnCount++;
 
if (btnOptions.symbol) {
symbol = renderer.symbol(
btnOptions.symbol,
btnOptions.symbolX - (symbolSize / 2),
btnOptions.symbolY - (symbolSize / 2),
symbolSize,
symbolSize
)
.addClass('highcharts-button-symbol')
.attr({
zIndex: 1
}).add(button);
 
 
}
 
button.add()
.align(extend(btnOptions, {
width: button.width,
x: pick(btnOptions.x, chart.buttonOffset) // #1654
}), true, 'spacingBox');
 
chart.buttonOffset += (button.width + btnOptions.buttonSpacing) * (btnOptions.align === 'right' ? -1 : 1);
 
chart.exportSVGElements.push(button, symbol);
 
},
 
/**
* Destroy the buttons.
*/
destroyExport: function(e) {
var chart = e ? e.target : this,
exportSVGElements = chart.exportSVGElements,
exportDivElements = chart.exportDivElements,
exportEvents = chart.exportEvents,
cacheName;
 
// Destroy the extra buttons added
if (exportSVGElements) {
each(exportSVGElements, function(elem, i) {
 
// Destroy and null the svg/vml elements
if (elem) { // #1822
elem.onclick = elem.ontouchstart = null;
cacheName = 'cache-' + elem.menuClassName;
 
if (chart[cacheName]) {
delete chart[cacheName];
}
 
chart.exportSVGElements[i] = elem.destroy();
}
});
exportSVGElements.length = 0;
}
 
// Destroy the divs for the menu
if (exportDivElements) {
each(exportDivElements, function(elem, i) {
 
// Remove the event handler
clearTimeout(elem.hideTimer); // #5427
removeEvent(elem, 'mouseleave');
 
// Remove inline events
chart.exportDivElements[i] = elem.onmouseout = elem.onmouseover = elem.ontouchstart = elem.onclick = null;
 
// Destroy the div by moving to garbage bin
discardElement(elem);
});
exportDivElements.length = 0;
}
 
if (exportEvents) {
each(exportEvents, function(unbind) {
unbind();
});
exportEvents.length = 0;
}
}
});
 
 
// These ones are translated to attributes rather than styles
SVGRenderer.prototype.inlineToAttributes = [
'fill',
'stroke',
'strokeLinecap',
'strokeLinejoin',
'strokeWidth',
'textAnchor',
'x',
'y'
];
// These CSS properties are not inlined. Remember camelCase.
SVGRenderer.prototype.inlineBlacklist = [
/-/, // In Firefox, both hyphened and camelCased names are listed
/^(clipPath|cssText|d|height|width)$/, // Full words
/^font$/, // more specific props are set
/[lL]ogical(Width|Height)$/,
/perspective/,
/TapHighlightColor/,
/^transition/
// /^text (border|color|cursor|height|webkitBorder)/
];
SVGRenderer.prototype.unstyledElements = [
'clipPath',
'defs',
'desc'
];
 
/**
* Analyze inherited styles from stylesheets and add them inline
*
* @todo: What are the border styles for text about? In general, text has a lot of properties.
* @todo: Make it work with IE9 and IE10.
*/
Chart.prototype.inlineStyles = function() {
var renderer = this.renderer,
inlineToAttributes = renderer.inlineToAttributes,
blacklist = renderer.inlineBlacklist,
whitelist = renderer.inlineWhitelist, // For IE
unstyledElements = renderer.unstyledElements,
defaultStyles = {},
dummySVG;
 
/**
* Make hyphenated property names out of camelCase
*/
function hyphenate(prop) {
return prop.replace(
/([A-Z])/g,
function(a, b) {
return '-' + b.toLowerCase();
}
);
}
 
/**
* Call this on all elements and recurse to children
*/
function recurse(node) {
var styles,
parentStyles,
cssText = '',
dummy,
styleAttr,
blacklisted,
whitelisted,
i;
 
// Check computed styles and whether they are in the white/blacklist for
// styles or atttributes
function filterStyles(val, prop) {
 
// Check against whitelist & blacklist
blacklisted = whitelisted = false;
if (whitelist) {
// Styled mode in IE has a whitelist instead.
// Exclude all props not in this list.
i = whitelist.length;
while (i-- && !whitelisted) {
whitelisted = whitelist[i].test(prop);
}
blacklisted = !whitelisted;
}
 
// Explicitly remove empty transforms
if (prop === 'transform' && val === 'none') {
blacklisted = true;
}
 
i = blacklist.length;
while (i-- && !blacklisted) {
blacklisted = blacklist[i].test(prop) || typeof val === 'function';
}
 
if (!blacklisted) {
// If parent node has the same style, it gets inherited, no need to inline it
if (parentStyles[prop] !== val && defaultStyles[node.nodeName][prop] !== val) {
// Attributes
if (inlineToAttributes.indexOf(prop) !== -1) {
node.setAttribute(hyphenate(prop), val);
// Styles
} else {
cssText += hyphenate(prop) + ':' + val + ';';
}
}
}
}
 
if (node.nodeType === 1 && unstyledElements.indexOf(node.nodeName) === -1) {
styles = win.getComputedStyle(node, null);
parentStyles = node.nodeName === 'svg' ? {} : win.getComputedStyle(node.parentNode, null);
 
// Get default styles from the browser so that we don't have to add these
if (!defaultStyles[node.nodeName]) {
if (!dummySVG) {
dummySVG = doc.createElementNS(H.SVG_NS, 'svg');
dummySVG.setAttribute('version', '1.1');
doc.body.appendChild(dummySVG);
}
dummy = doc.createElementNS(node.namespaceURI, node.nodeName);
dummySVG.appendChild(dummy);
defaultStyles[node.nodeName] = merge(win.getComputedStyle(dummy, null)); // Copy, so we can remove the node
dummySVG.removeChild(dummy);
}
 
// Loop through all styles and add them inline if they are ok
if (isFirefoxBrowser || isMSBrowser) {
// Some browsers put lots of styles on the prototype
for (var p in styles) {
filterStyles(styles[p], p);
}
} else {
objectEach(styles, filterStyles);
}
 
// Apply styles
if (cssText) {
styleAttr = node.getAttribute('style');
node.setAttribute('style', (styleAttr ? styleAttr + ';' : '') + cssText);
}
 
// Set default stroke width (needed at least for IE)
if (node.nodeName === 'svg') {
node.setAttribute('stroke-width', '1px');
}
 
if (node.nodeName === 'text') {
return;
}
 
// Recurse
each(node.children || node.childNodes, recurse);
}
}
 
/**
* Remove the dummy objects used to get defaults
*/
function tearDown() {
dummySVG.parentNode.removeChild(dummySVG);
}
 
recurse(this.container.querySelector('svg'));
tearDown();
 
};
 
 
 
symbols.menu = function(x, y, width, height) {
var arr = [
'M', x, y + 2.5,
'L', x + width, y + 2.5,
'M', x, y + height / 2 + 0.5,
'L', x + width, y + height / 2 + 0.5,
'M', x, y + height - 1.5,
'L', x + width, y + height - 1.5
];
return arr;
};
 
// Add the buttons on chart load
Chart.prototype.renderExporting = function() {
var chart = this,
exportingOptions = chart.options.exporting,
buttons = exportingOptions.buttons,
isDirty = chart.isDirtyExporting || !chart.exportSVGElements;
 
chart.buttonOffset = 0;
if (chart.isDirtyExporting) {
chart.destroyExport();
}
 
if (isDirty && exportingOptions.enabled !== false) {
chart.exportEvents = [];
 
objectEach(buttons, function(button) {
chart.addButton(button);
});
 
chart.isDirtyExporting = false;
}
 
// Destroy the export elements at chart destroy
addEvent(chart, 'destroy', chart.destroyExport);
};
 
Chart.prototype.callbacks.push(function(chart) {
 
function update(prop, options, redraw) {
chart.isDirtyExporting = true;
merge(true, chart.options[prop], options);
if (pick(redraw, true)) {
chart.redraw();
}
 
}
 
chart.renderExporting();
 
addEvent(chart, 'redraw', chart.renderExporting);
 
// Add update methods to handle chart.update and chart.exporting.update
// and chart.navigation.update.
each(['exporting', 'navigation'], function(prop) {
chart[prop] = {
update: function(options, redraw) {
update(prop, options, redraw);
}
};
});
 
// Uncomment this to see a button directly below the chart, for quick
// testing of export
/*
if (!chart.renderer.forExport) {
var button;
 
// View SVG Image
button = doc.createElement('button');
button.innerHTML = 'View SVG Image';
chart.renderTo.parentNode.appendChild(button);
button.onclick = function () {
var div = doc.createElement('div');
div.innerHTML = chart.getSVGForExport();
chart.renderTo.parentNode.appendChild(div);
};
 
// View SVG Source
button = doc.createElement('button');
button.innerHTML = 'View SVG Source';
chart.renderTo.parentNode.appendChild(button);
button.onclick = function () {
var pre = doc.createElement('pre');
pre.innerHTML = chart.getSVGForExport()
.replace(/</g, '\n&lt;')
.replace(/>/g, '&gt;');
chart.renderTo.parentNode.appendChild(pre);
};
}
// */
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/funnel.js
@@ -0,0 +1,12 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Highcharts funnel module
 
(c) 2010-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(e){"object"===typeof module&&module.exports?module.exports=e:e(Highcharts)})(function(e){(function(g){var e=g.seriesType,C=g.seriesTypes,H=g.noop,D=g.pick,I=g.each;e("funnel","pie",{animation:!1,center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",reversed:!1,size:!0},{animate:H,translate:function(){var b=function(a,b){return/%$/.test(a)?b*parseInt(a,10)/100:parseInt(a,10)},E=0,c=this.chart,f=this.options,d=f.reversed,e=f.ignoreHiddenPoint,t=c.plotWidth,c=c.plotHeight,
q=0,g=f.center,h=b(g[0],t),r=b(g[1],c),C=b(f.width,t),l,v,m=b(f.height,c),w=b(f.neckWidth,t),F=b(f.neckHeight,c),x=r-m/2+m-F,b=this.data,z,A,D="left"===f.dataLabels.position?1:0,B,n,G,u,k,y,p;this.getWidthAt=v=function(a){var b=r-m/2;return a>x||m===F?w:w+(C-w)*(1-(a-b)/(m-F))};this.getX=function(a,b,c){return h+(b?-1:1)*(v(d?2*r-a:a)/2+c.labelDistance)};this.center=[h,r,m];this.centerX=h;I(b,function(a){e&&!1===a.visible||(E+=a.y)});I(b,function(a){p=null;A=E?a.y/E:0;n=r-m/2+q*m;k=n+A*m;l=v(n);B=
h-l/2;G=B+l;l=v(k);u=h-l/2;y=u+l;n>x?(B=u=h-w/2,G=y=h+w/2):k>x&&(p=k,l=v(x),u=h-l/2,y=u+l,k=x);d&&(n=2*r-n,k=2*r-k,p=p?2*r-p:null);z=["M",B,n,"L",G,n,y,k];p&&z.push(y,p,u,p);z.push(u,k,"Z");a.shapeType="path";a.shapeArgs={d:z};a.percentage=100*A;a.plotX=h;a.plotY=(n+(p||k))/2;a.tooltipPos=[h,a.plotY];a.slice=H;a.half=D;e&&!1===a.visible||(q+=A)})},sortByAngle:function(b){b.sort(function(b,c){return b.plotY-c.plotY})},drawDataLabels:function(){var b=this.data,e=this.options.dataLabels.distance,c,f,
d,g=b.length,t,q;for(this.center[2]-=2*e;g--;)d=b[g],f=(c=d.half)?1:-1,q=d.plotY,d.labelDistance=D(d.options.dataLabels&&d.options.dataLabels.distance,e),this.maxLabelDistance=Math.max(d.labelDistance,this.maxLabelDistance||0),t=this.getX(q,c,d),d.labelPos=[0,q,t+(d.labelDistance-5)*f,q,t+d.labelDistance*f,q,c?"right":"left",0];C.pie.prototype.drawDataLabels.call(this)}});e("pyramid","funnel",{neckWidth:"0%",neckHeight:"0%",reversed:!0})})(e)});
/base/000_base/node_modules/highcharts/js/modules/funnel.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":12,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","seriesType","seriesTypes","noop","pick","each","animation","center","width","neckWidth","height","neckHeight","reversed","size","animate","translate","getLength","length","relativeTo","test","parseInt","sum","chart","series","options","ignoreHiddenPoint","plotWidth","plotHeight","cumulative","centerX","centerY","tempWidth","getWidthAt","neckY","data","path","fraction","half","dataLabels","position","x1","y1","x2","x3","y3","x4","y5","y","top","getX","series.getX","point","labelDistance","visible","push","shapeType","shapeArgs","d","percentage","plotX","plotY","tooltipPos","slice","sortByAngle","points","sort","a","b","drawDataLabels","distance","leftSide","sign","i","x","maxLabelDistance","Math","max","labelPos","pie","prototype","call"]
}
/base/000_base/node_modules/highcharts/js/modules/funnel.src.js
@@ -0,0 +1,291 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Highcharts funnel module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(Highcharts) {
/**
* Highcharts funnel module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
/* eslint indent:0 */
 
// create shortcuts
var seriesType = Highcharts.seriesType,
seriesTypes = Highcharts.seriesTypes,
noop = Highcharts.noop,
pick = Highcharts.pick,
each = Highcharts.each;
 
 
seriesType('funnel', 'pie', {
animation: false,
center: ['50%', '50%'],
width: '90%',
neckWidth: '30%',
height: '100%',
neckHeight: '25%',
reversed: false,
size: true, // to avoid adapting to data label size in Pie.drawDataLabels
 
 
},
 
// Properties
{
animate: noop,
 
/**
* Overrides the pie translate method
*/
translate: function() {
 
var
// Get positions - either an integer or a percentage string must be given
getLength = function(length, relativeTo) {
return (/%$/).test(length) ?
relativeTo * parseInt(length, 10) / 100 :
parseInt(length, 10);
},
 
sum = 0,
series = this,
chart = series.chart,
options = series.options,
reversed = options.reversed,
ignoreHiddenPoint = options.ignoreHiddenPoint,
plotWidth = chart.plotWidth,
plotHeight = chart.plotHeight,
cumulative = 0, // start at top
center = options.center,
centerX = getLength(center[0], plotWidth),
centerY = getLength(center[1], plotHeight),
width = getLength(options.width, plotWidth),
tempWidth,
getWidthAt,
height = getLength(options.height, plotHeight),
neckWidth = getLength(options.neckWidth, plotWidth),
neckHeight = getLength(options.neckHeight, plotHeight),
neckY = (centerY - height / 2) + height - neckHeight,
data = series.data,
path,
fraction,
half = options.dataLabels.position === 'left' ? 1 : 0,
 
x1,
y1,
x2,
x3,
y3,
x4,
y5;
 
// Return the width at a specific y coordinate
series.getWidthAt = getWidthAt = function(y) {
var top = (centerY - height / 2);
 
return y > neckY || height === neckHeight ?
neckWidth :
neckWidth + (width - neckWidth) * (1 - (y - top) / (height - neckHeight));
};
series.getX = function(y, half, point) {
return centerX + (half ? -1 : 1) * ((getWidthAt(reversed ? 2 * centerY - y : y) / 2) + point.labelDistance);
};
 
// Expose
series.center = [centerX, centerY, height];
series.centerX = centerX;
 
/*
* Individual point coordinate naming:
*
* x1,y1 _________________ x2,y1
* \ /
* \ /
* \ /
* \ /
* \ /
* x3,y3 _________ x4,y3
*
* Additional for the base of the neck:
*
* | |
* | |
* | |
* x3,y5 _________ x4,y5
*/
 
 
 
 
// get the total sum
each(data, function(point) {
if (!ignoreHiddenPoint || point.visible !== false) {
sum += point.y;
}
});
 
each(data, function(point) {
// set start and end positions
y5 = null;
fraction = sum ? point.y / sum : 0;
y1 = centerY - height / 2 + cumulative * height;
y3 = y1 + fraction * height;
//tempWidth = neckWidth + (width - neckWidth) * ((height - neckHeight - y1) / (height - neckHeight));
tempWidth = getWidthAt(y1);
x1 = centerX - tempWidth / 2;
x2 = x1 + tempWidth;
tempWidth = getWidthAt(y3);
x3 = centerX - tempWidth / 2;
x4 = x3 + tempWidth;
 
// the entire point is within the neck
if (y1 > neckY) {
x1 = x3 = centerX - neckWidth / 2;
x2 = x4 = centerX + neckWidth / 2;
 
// the base of the neck
} else if (y3 > neckY) {
y5 = y3;
 
tempWidth = getWidthAt(neckY);
x3 = centerX - tempWidth / 2;
x4 = x3 + tempWidth;
 
y3 = neckY;
}
 
if (reversed) {
y1 = 2 * centerY - y1;
y3 = 2 * centerY - y3;
y5 = (y5 ? 2 * centerY - y5 : null);
}
// save the path
path = [
'M',
x1, y1,
'L',
x2, y1,
x4, y3
];
if (y5) {
path.push(x4, y5, x3, y5);
}
path.push(x3, y3, 'Z');
 
// prepare for using shared dr
point.shapeType = 'path';
point.shapeArgs = {
d: path
};
 
 
// for tooltips and data labels
point.percentage = fraction * 100;
point.plotX = centerX;
point.plotY = (y1 + (y5 || y3)) / 2;
 
// Placement of tooltips and data labels
point.tooltipPos = [
centerX,
point.plotY
];
 
// Slice is a noop on funnel points
point.slice = noop;
 
// Mimicking pie data label placement logic
point.half = half;
 
if (!ignoreHiddenPoint || point.visible !== false) {
cumulative += fraction;
}
});
},
 
/**
* Funnel items don't have angles (#2289)
*/
sortByAngle: function(points) {
points.sort(function(a, b) {
return a.plotY - b.plotY;
});
},
 
/**
* Extend the pie data label method
*/
drawDataLabels: function() {
var series = this,
data = series.data,
labelDistance = series.options.dataLabels.distance,
leftSide,
sign,
point,
i = data.length,
x,
y;
 
// In the original pie label anticollision logic, the slots are distributed
// from one labelDistance above to one labelDistance below the pie. In funnels
// we don't want this.
series.center[2] -= 2 * labelDistance;
 
// Set the label position array for each point.
while (i--) {
point = data[i];
leftSide = point.half;
sign = leftSide ? 1 : -1;
y = point.plotY;
point.labelDistance = pick(
point.options.dataLabels && point.options.dataLabels.distance,
labelDistance
);
 
series.maxLabelDistance = Math.max(point.labelDistance, series.maxLabelDistance || 0);
x = series.getX(y, leftSide, point);
 
// set the anchor point for data labels
point.labelPos = [
0, // first break of connector
y, // a/a
x + (point.labelDistance - 5) * sign, // second break, right outside point shape
y, // a/a
x + point.labelDistance * sign, // landing point for connector
y, // a/a
leftSide ? 'right' : 'left', // alignment
0 // center angle
];
}
 
seriesTypes.pie.prototype.drawDataLabels.call(this);
}
 
});
 
/**
* Pyramid series type.
* A pyramid series is a special type of funnel, without neck and reversed by default.
*/
seriesType('pyramid', 'funnel', {
neckWidth: '0%',
neckHeight: '0%',
reversed: true
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/gantt.js
@@ -0,0 +1,24 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Gantt series
 
(c) 2016 Lars A. V. Cabrera
 
--- WORK IN PROGRESS ---
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(g){var n=g.dateFormat,r=g.each,t=g.isObject,v=g.pick,m=g.wrap,p=g.Axis,w=g.Chart,u=g.Tick;p.prototype.isOuterAxis=function(){var a=this,e=-1,b=!0;r(this.chart.axes,function(d,f){d.side===a.side&&(d===a?e=f:0<=e&&f>e&&(b=!1))});return b};u.prototype.getLabelWidth=function(){return this.label.getBBox().width};p.prototype.getMaxLabelLength=function(a){var e=this.tickPositions,b=this.ticks,d=0;
if(!this.maxLabelLength||a)r(e,function(a){(a=b[a])&&a.labelLength>d&&(d=a.labelLength)}),this.maxLabelLength=d;return this.maxLabelLength};p.prototype.addTitle=function(){var a=this.chart.renderer,e=this.axisParent,b=this.horiz,d=this.opposite,f=this.options,c=f.title,l;this.showAxis=l=this.hasData()||v(f.showEmpty,!0);f.title="";this.axisTitle||((f=c.textAlign)||(f=(b?{low:"left",middle:"center",high:"right"}:{low:d?"right":"left",middle:"center",high:d?"left":"right"})[c.align]),this.axisTitle=
a.text(c.text,0,0,c.useHTML).attr({zIndex:7,rotation:c.rotation||0,align:f}).addClass("highcharts-axis-title").add(e),this.axisTitle.isNew=!0);this.axisTitle[l?"show":"hide"](!0)};g.dateFormats={W:function(a){a=new Date(a);var e=0===a.getUTCDay()?7:a.getUTCDay(),b=a.getTime(),d=new Date(a.getUTCFullYear(),0,1,-6);a.setDate(a.getUTCDate()+4-e);return 1+Math.floor(Math.floor((b-d)/864E5)/7)},E:function(a){return n("%a",a,!0).charAt(0)}};m(u.prototype,"addLabel",function(a){var e=this.axis,b=void 0!==
e.options.categories,d=e.tickPositions,d=this.pos!==d[d.length-1];(!e.options.grid||b||d)&&a.apply(this)});m(u.prototype,"getLabelPosition",function(a,e,b,d){var f=a.apply(this,Array.prototype.slice.call(arguments,1)),c=this.axis,l=c.options,h=l.tickInterval||1,q,k;l.grid&&(q=l.labels.style.fontSize,k=c.chart.renderer.fontMetrics(q,d),q=k.b,k=k.h,c.horiz&&void 0===l.categories?(l=c.axisGroup.getBBox().height,h=this.pos+h/2,f.x=c.translate(h)+c.left,h=l/2+k/2-Math.abs(k-q),f.y=0===c.side?b-h:b+h):
(void 0===l.categories&&(h=this.pos+h/2,f.y=c.translate(h)+c.top+q/2),h=this.getLabelWidth()/2-c.maxLabelLength/2,f.x=3===c.side?f.x+h:f.x-h));return f});m(p.prototype,"tickSize",function(a){var e=a.apply(this,Array.prototype.slice.call(arguments,1)),b;this.options.grid&&!this.horiz&&(b=2*Math.abs(this.defaultLeftAxisOptions.labels.x),this.maxLabelLength||(this.maxLabelLength=this.getMaxLabelLength()),b=this.maxLabelLength+b,e[0]=b);return e});m(p.prototype,"getOffset",function(a){var e=this.chart.axisOffset,
b=this.side,d,f,c=this.options,l=c.title,h=l&&l.text&&!1!==l.enabled;this.options.grid&&t(this.options.title)?(f=this.tickSize("tick")[0],e[b]&&f&&(d=e[b]+f),h&&this.addTitle(),a.apply(this,Array.prototype.slice.call(arguments,1)),e[b]=v(d,e[b]),c.title=l):a.apply(this,Array.prototype.slice.call(arguments,1))});m(p.prototype,"renderUnsquish",function(a){this.options.grid&&(this.labelRotation=0,this.options.labels.rotation=0);a.apply(this)});m(p.prototype,"setOptions",function(a,e){e.grid&&this.horiz&&
(e.startOnTick=!0,e.minPadding=0,e.endOnTick=!0);a.apply(this,Array.prototype.slice.call(arguments,1))});m(p.prototype,"render",function(a){var e=this.options,b,d,f,c,l,h,q=this.chart.renderer;if(e.grid){if(b=2*Math.abs(this.defaultLeftAxisOptions.labels.x),b=this.maxLabelLength+b,d=e.lineWidth,this.rightWall&&this.rightWall.destroy(),a.apply(this),a=this.axisGroup.getBBox(),this.horiz&&(this.rightWall=q.path(["M",a.x+this.width+1,a.y,"L",a.x+this.width+1,a.y+a.height]).attr({stroke:e.tickColor||
"#ccd6eb","stroke-width":e.tickWidth||1,zIndex:7,class:"grid-wall"}).add(this.axisGroup)),this.isOuterAxis()&&this.axisLine&&(this.horiz&&(b=a.height-1),d)){a=this.getLinePath(d);l=a.indexOf("M")+1;h=a.indexOf("L")+1;f=a.indexOf("M")+2;c=a.indexOf("L")+2;if(0===this.side||3===this.side)b=-b;this.horiz?(a[f]+=b,a[c]+=b):(a[l]+=b,a[h]+=b);this.axisLineExtra?this.axisLineExtra.animate({d:a}):this.axisLineExtra=q.path(a).attr({stroke:e.lineColor,"stroke-width":d,zIndex:7}).add(this.axisGroup);this.axisLine[this.showAxis?
"show":"hide"](!0)}}else a.apply(this)});m(w.prototype,"render",function(a){var e=25/11,b,d;r(this.axes,function(a){var c=a.options;c.grid&&(d=c.labels.style.fontSize,b=a.chart.renderer.fontMetrics(d),"datetime"===c.type&&(c.units=[["millisecond",[1]],["second",[1]],["minute",[1]],["hour",[1]],["day",[1]],["week",[1]],["month",[1]],["year",null]]),a.horiz?c.tickLength=c.cellHeight||b.h*e:(c.tickWidth=1,c.lineWidth||(c.lineWidth=1)))});a.apply(this)})})(n);(function(g){var n=g.getOptions().plotOptions,
r=g.seriesTypes.column,t=g.each,v=g.extendClass,m=g.isNumber,p=g.isObject,w=g.merge,u=g.pick,a=g.seriesTypes,e=g.wrap,b=g.Axis,d=g.Point,f=g.Series;n.xrange=w(n.column,{tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.yCategory}\x3c/b\x3e\x3cbr/\x3e'}});a.xrange=v(r,{pointClass:v(d,{getLabelConfig:function(){var a=d.prototype.getLabelConfig.call(this);a.x2=this.x2;a.yCategory=this.yCategory=this.series.yAxis.categories&&this.series.yAxis.categories[this.y];
return a}}),type:"xrange",forceDL:!0,parallelArrays:["x","x2","y"],requireSorting:!1,animate:a.line.prototype.animate,getColumnMetrics:function(){function a(){t(e.series,function(a){var c=a.xAxis;a.xAxis=a.yAxis;a.yAxis=c})}var b,e=this.chart;a();this.yAxis.closestPointRange=1;b=r.prototype.getColumnMetrics.call(this);a();return b},cropData:function(a,b,e,d){b=f.prototype.cropData.call(this,this.x2Data,b,e,d);b.xData=a.slice(b.start,b.end);return b},translate:function(){r.prototype.translate.apply(this,
arguments);var a=this.xAxis,b=this.columnMetrics,e=this.options.minPointLength||0;t(this.points,function(c){var k=c.plotX,d=u(c.x2,c.x+(c.len||0)),d=a.toPixels(d,!0),f=d-k,h;e&&(h=e-f,0>h&&(h=0),k-=h/2,d+=h/2);k=Math.max(k,-10);d=Math.min(Math.max(d,-10),a.len+10);d<k&&(d=k);c.shapeArgs={x:k,y:c.plotY+b.offset,width:d-k,height:b.width};c.tooltipPos[0]+=f/2;c.tooltipPos[1]-=b.width/2;if(d=c.partialFill)p(d)&&(d=d.amount),m(d)||(d=0),k=c.shapeArgs,c.partShapeArgs={x:k.x,y:k.y+1,width:k.width*d,height:k.height-
2}})},drawPoints:function(){var a=this,b=this.chart,d=b.renderer,e=b.pointCount<(a.options.animationLimit||250)?"animate":"attr";t(a.points,function(b){var c=b.graphic,f=b.shapeType,h=b.shapeArgs,g=b.partShapeArgs;if(m(b.plotY)&&null!==b.y)if(c){if(b.graphicOriginal[e](w(h)),g)b.graphicOverlay[e](w(g))}else b.graphic=c=d.g("point").attr({"class":b.getClassName()}).add(b.group||a.group),b.graphicOriginal=d[f](h).addClass("highcharts-partfill-original").add(c),g&&(b.graphicOverlay=d[f](g).addClass("highcharts-partfill-overlay").add(c));
else c&&(b.graphic=c.destroy())})}});e(b.prototype,"getSeriesExtremes",function(a){var b=this.series,c,d;a.call(this);this.isXAxis&&"xrange"===b.type&&(c=u(this.dataMax,Number.MIN_VALUE),t(this.series,function(a){t(a.x2Data||[],function(a){a>c&&(c=a,d=!0)})}),d&&(this.dataMax=c))})})(n)});
/base/000_base/node_modules/highcharts/js/modules/gantt.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":24,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","dateFormat","each","isObject","pick","wrap","Axis","Chart","Tick","prototype","isOuterAxis","Axis.prototype.isOuterAxis","axis","thisIndex","isOuter","chart","axes","otherAxis","index","side","getLabelWidth","Tick.prototype.getLabelWidth","label","getBBox","width","getMaxLabelLength","Axis.prototype.getMaxLabelLength","force","tickPositions","ticks","maxLabelLength","tick","labelLength","addTitle","Axis.prototype.addTitle","renderer","axisParent","horiz","opposite","options","axisTitleOptions","title","showAxis","hasData","showEmpty","axisTitle","textAlign","low","middle","high","align","text","useHTML","attr","zIndex","rotation","addClass","add","isNew","dateFormats","W","timestamp","date","Date","day","getUTCDay","time","getTime","startOfYear","getUTCFullYear","setDate","getUTCDate","Math","floor","dayNumber","E","charAt","proceed","isCategoryAxis","undefined","categories","isLastTick","pos","lastTick","length","grid","apply","x","y","retVal","Array","slice","call","arguments","tickInterval","fontSize","labelMetrics","labels","style","fontMetrics","lblB","b","lblH","h","axisHeight","axisGroup","height","newPos","translate","left","labelCenter","abs","top","newX","labelPadding","defaultLeftAxisOptions","distance","axisOffset","tickSize","enabled","labelRotation","userOptions","startOnTick","minPadding","endOnTick","lineWidth","yStartIndex","yEndIndex","xStartIndex","xEndIndex","rightWall","destroy","axisGroupBox","path","stroke","tickColor","tickWidth","class","axisLine","linePath","getLinePath","indexOf","axisLineExtra","animate","d","lineColor","fontSizeToCellHeightRatio","type","units","tickLength","cellHeight","defaultPlotOptions","getOptions","plotOptions","columnType","seriesTypes","column","extendClass","isNumber","merge","Point","Series","xrange","tooltip","pointFormat","pointClass","getLabelConfig","cfg","x2","yCategory","series","yAxis","forceDL","parallelArrays","requireSorting","line","getColumnMetrics","swapAxes","s","xAxis","metrics","closestPointRange","cropData","xData","yData","min","max","crop","x2Data","start","end","columnMetrics","minPointLength","points","point","plotX","posX","len","plotX2","toPixels","widthDifference","shapeArgs","plotY","offset","tooltipPos","partialFill","amount","partShapeArgs","drawPoints","verb","pointCount","animationLimit","graphic","shapeType","graphicOriginal","graphicOverlay","g","getClassName","group","dataMax","modMax","isXAxis","Number","MIN_VALUE","val"]
}
/base/000_base/node_modules/highcharts/js/modules/gantt.src.js
@@ -0,0 +1,793 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Gantt series
*
* (c) 2016 Lars A. V. Cabrera
*
* --- WORK IN PROGRESS ---
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2016 Highsoft AS
* Authors: Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
 
var dateFormat = H.dateFormat,
each = H.each,
isObject = H.isObject,
pick = H.pick,
wrap = H.wrap,
Axis = H.Axis,
Chart = H.Chart,
Tick = H.Tick;
 
 
// Enum for which side the axis is on.
// Maps to axis.side
var axisSide = {
top: 0,
right: 1,
bottom: 2,
left: 3,
0: 'top',
1: 'right',
2: 'bottom',
3: 'left'
};
 
/**
* Checks if an axis is the outer axis in its dimension. Since
* axes are placed outwards in order, the axis with the highest
* index is the outermost axis.
*
* Example: If there are multiple x-axes at the top of the chart,
* this function returns true if the axis supplied is the last
* of the x-axes.
*
* @return true if the axis is the outermost axis in its dimension;
* false if not
*/
Axis.prototype.isOuterAxis = function() {
var axis = this,
thisIndex = -1,
isOuter = true;
 
each(this.chart.axes, function(otherAxis, index) {
if (otherAxis.side === axis.side) {
if (otherAxis === axis) {
// Get the index of the axis in question
thisIndex = index;
 
// Check thisIndex >= 0 in case thisIndex has
// not been found yet
} else if (thisIndex >= 0 && index > thisIndex) {
// There was an axis on the same side with a
// higher index. Exit the loop.
isOuter = false;
return;
}
}
});
// There were either no other axes on the same side,
// or the other axes were not farther from the chart
return isOuter;
};
 
/**
* Shortcut function to Tick.label.getBBox().width.
*
* @return {number} width - the width of the tick label
*/
Tick.prototype.getLabelWidth = function() {
return this.label.getBBox().width;
};
 
/**
* Get the maximum label length.
* This function can be used in states where the axis.maxLabelLength has not
* been set.
*
* @param {boolean} force - Optional parameter to force a new calculation, even
* if a value has already been set
* @return {number} maxLabelLength - the maximum label length of the axis
*/
Axis.prototype.getMaxLabelLength = function(force) {
var tickPositions = this.tickPositions,
ticks = this.ticks,
maxLabelLength = 0;
 
if (!this.maxLabelLength || force) {
each(tickPositions, function(tick) {
tick = ticks[tick];
if (tick && tick.labelLength > maxLabelLength) {
maxLabelLength = tick.labelLength;
}
});
this.maxLabelLength = maxLabelLength;
}
return this.maxLabelLength;
};
 
/**
* Adds the axis defined in axis.options.title
*/
Axis.prototype.addTitle = function() {
var axis = this,
renderer = axis.chart.renderer,
axisParent = axis.axisParent,
horiz = axis.horiz,
opposite = axis.opposite,
options = axis.options,
axisTitleOptions = options.title,
hasData,
showAxis,
textAlign;
 
// For reuse in Axis.render
hasData = axis.hasData();
axis.showAxis = showAxis = hasData || pick(options.showEmpty, true);
 
// Disregard title generation in original Axis.getOffset()
options.title = '';
 
if (!axis.axisTitle) {
textAlign = axisTitleOptions.textAlign;
if (!textAlign) {
textAlign = (horiz ? {
low: 'left',
middle: 'center',
high: 'right'
} : {
low: opposite ? 'right' : 'left',
middle: 'center',
high: opposite ? 'left' : 'right'
})[axisTitleOptions.align];
}
axis.axisTitle = renderer.text(
axisTitleOptions.text,
0,
0,
axisTitleOptions.useHTML
)
.attr({
zIndex: 7,
rotation: axisTitleOptions.rotation || 0,
align: textAlign
})
.addClass('highcharts-axis-title')
 
// Add to axisParent instead of axisGroup, to ignore the space
// it takes
.add(axisParent);
axis.axisTitle.isNew = true;
}
 
 
// hide or show the title depending on whether showEmpty is set
axis.axisTitle[showAxis ? 'show' : 'hide'](true);
};
 
/**
* Add custom date formats
*/
H.dateFormats = {
// Week number
W: function(timestamp) {
var date = new Date(timestamp),
day = date.getUTCDay() === 0 ? 7 : date.getUTCDay(),
time = date.getTime(),
startOfYear = new Date(date.getUTCFullYear(), 0, 1, -6),
dayNumber;
date.setDate(date.getUTCDate() + 4 - day);
dayNumber = Math.floor((time - startOfYear) / 86400000);
return 1 + Math.floor(dayNumber / 7);
},
// First letter of the day of the week, e.g. 'M' for 'Monday'.
E: function(timestamp) {
return dateFormat('%a', timestamp, true).charAt(0);
}
};
 
/**
* Prevents adding the last tick label if the axis is not a category axis.
*
* Since numeric labels are normally placed at starts and ends of a range of
* value, and this module makes the label point at the value, an "extra" label
* would appear.
*
* @param {function} proceed - the original function
*/
wrap(Tick.prototype, 'addLabel', function(proceed) {
var axis = this.axis,
isCategoryAxis = axis.options.categories !== undefined,
tickPositions = axis.tickPositions,
lastTick = tickPositions[tickPositions.length - 1],
isLastTick = this.pos !== lastTick;
 
if (!axis.options.grid || isCategoryAxis || isLastTick) {
proceed.apply(this);
}
});
 
/**
* Center tick labels vertically and horizontally between ticks
*
* @param {function} proceed - the original function
*
* @return {object} object - an object containing x and y positions
* for the tick
*/
wrap(Tick.prototype, 'getLabelPosition', function(proceed, x, y, label) {
var retVal = proceed.apply(this, Array.prototype.slice.call(arguments, 1)),
axis = this.axis,
options = axis.options,
tickInterval = options.tickInterval || 1,
newX,
newPos,
axisHeight,
fontSize,
labelMetrics,
lblB,
lblH,
labelCenter;
 
// Only center tick labels if axis has option grid: true
if (options.grid) {
fontSize = options.labels.style.fontSize;
labelMetrics = axis.chart.renderer.fontMetrics(fontSize, label);
lblB = labelMetrics.b;
lblH = labelMetrics.h;
 
if (axis.horiz && options.categories === undefined) {
// Center x position
axisHeight = axis.axisGroup.getBBox().height;
newPos = this.pos + tickInterval / 2;
retVal.x = axis.translate(newPos) + axis.left;
labelCenter = (axisHeight / 2) + (lblH / 2) - Math.abs(lblH - lblB);
 
// Center y position
if (axis.side === axisSide.top) {
retVal.y = y - labelCenter;
} else {
retVal.y = y + labelCenter;
}
} else {
// Center y position
if (options.categories === undefined) {
newPos = this.pos + (tickInterval / 2);
retVal.y = axis.translate(newPos) + axis.top + (lblB / 2);
}
 
// Center x position
newX = (this.getLabelWidth() / 2) - (axis.maxLabelLength / 2);
if (axis.side === axisSide.left) {
retVal.x += newX;
} else {
retVal.x -= newX;
}
}
}
return retVal;
});
 
 
/**
* Draw vertical ticks extra long to create cell floors and roofs.
* Overrides the tickLength for vertical axes.
*
* @param {function} proceed - the original function
* @returns {array} retVal -
*/
wrap(Axis.prototype, 'tickSize', function(proceed) {
var axis = this,
retVal = proceed.apply(axis, Array.prototype.slice.call(arguments, 1)),
labelPadding,
distance;
 
if (axis.options.grid && !axis.horiz) {
labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
if (!axis.maxLabelLength) {
axis.maxLabelLength = axis.getMaxLabelLength();
}
distance = axis.maxLabelLength + labelPadding;
 
retVal[0] = distance;
}
return retVal;
});
 
/**
* Disregards space required by axisTitle, by adding axisTitle to axisParent
* instead of axisGroup, and disregarding margins and offsets related to
* axisTitle.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'getOffset', function(proceed) {
var axis = this,
axisOffset = axis.chart.axisOffset,
side = axis.side,
axisHeight,
tickSize,
options = axis.options,
axisTitleOptions = options.title,
addTitle = axisTitleOptions &&
axisTitleOptions.text &&
axisTitleOptions.enabled !== false;
 
if (axis.options.grid && isObject(axis.options.title)) {
 
tickSize = axis.tickSize('tick')[0];
if (axisOffset[side] && tickSize) {
axisHeight = axisOffset[side] + tickSize;
}
 
if (addTitle) {
// Use the custom addTitle() to add it, while preventing making room
// for it
axis.addTitle();
}
 
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
axisOffset[side] = pick(axisHeight, axisOffset[side]);
 
 
// Put axis options back after original Axis.getOffset() has been called
options.title = axisTitleOptions;
 
} else {
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
}
});
 
/**
* Prevents rotation of labels when squished, as rotating them would not
* help.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'renderUnsquish', function(proceed) {
if (this.options.grid) {
this.labelRotation = 0;
this.options.labels.rotation = 0;
}
proceed.apply(this);
});
 
/**
* Places leftmost tick at the start of the axis, to create a left wall.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'setOptions', function(proceed, userOptions) {
var axis = this;
if (userOptions.grid && axis.horiz) {
userOptions.startOnTick = true;
userOptions.minPadding = 0;
userOptions.endOnTick = true;
}
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
/**
* Draw an extra line on the far side of the the axisLine,
* creating cell roofs of a grid.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'render', function(proceed) {
var axis = this,
options = axis.options,
labelPadding,
distance,
lineWidth,
linePath,
yStartIndex,
yEndIndex,
xStartIndex,
xEndIndex,
renderer = axis.chart.renderer,
axisGroupBox;
 
if (options.grid) {
labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
distance = axis.maxLabelLength + labelPadding;
lineWidth = options.lineWidth;
 
// Remove right wall before rendering
if (axis.rightWall) {
axis.rightWall.destroy();
}
 
// Call original Axis.render() to obtain axis.axisLine and
// axis.axisGroup
proceed.apply(axis);
 
axisGroupBox = axis.axisGroup.getBBox();
 
// Add right wall on horizontal axes
if (axis.horiz) {
axis.rightWall = renderer.path([
'M',
axisGroupBox.x + axis.width + 1, // account for left wall
axisGroupBox.y,
'L',
axisGroupBox.x + axis.width + 1, // account for left wall
axisGroupBox.y + axisGroupBox.height
])
.attr({
stroke: options.tickColor || '#ccd6eb',
'stroke-width': options.tickWidth || 1,
zIndex: 7,
class: 'grid-wall'
})
.add(axis.axisGroup);
}
 
if (axis.isOuterAxis() && axis.axisLine) {
if (axis.horiz) {
// -1 to avoid adding distance each time the chart updates
distance = axisGroupBox.height - 1;
}
 
if (lineWidth) {
linePath = axis.getLinePath(lineWidth);
xStartIndex = linePath.indexOf('M') + 1;
xEndIndex = linePath.indexOf('L') + 1;
yStartIndex = linePath.indexOf('M') + 2;
yEndIndex = linePath.indexOf('L') + 2;
 
// Negate distance if top or left axis
if (axis.side === axisSide.top || axis.side === axisSide.left) {
distance = -distance;
}
 
// If axis is horizontal, reposition line path vertically
if (axis.horiz) {
linePath[yStartIndex] = linePath[yStartIndex] + distance;
linePath[yEndIndex] = linePath[yEndIndex] + distance;
} else {
// If axis is vertical, reposition line path horizontally
linePath[xStartIndex] = linePath[xStartIndex] + distance;
linePath[xEndIndex] = linePath[xEndIndex] + distance;
}
 
if (!axis.axisLineExtra) {
axis.axisLineExtra = renderer.path(linePath)
.attr({
stroke: options.lineColor,
'stroke-width': lineWidth,
zIndex: 7
})
.add(axis.axisGroup);
} else {
axis.axisLineExtra.animate({
d: linePath
});
}
 
// show or hide the line depending on options.showEmpty
axis.axisLine[axis.showAxis ? 'show' : 'hide'](true);
}
}
} else {
proceed.apply(axis);
}
});
 
/**
* Wraps chart rendering with the following customizations:
* 1. Prohibit timespans of multitudes of a time unit
* 2. Draw cell walls on vertical axes
*
* @param {function} proceed - the original function
*/
wrap(Chart.prototype, 'render', function(proceed) {
// 25 is optimal height for default fontSize (11px)
// 25 / 11 ≈ 2.28
var fontSizeToCellHeightRatio = 25 / 11,
fontMetrics,
fontSize;
 
each(this.axes, function(axis) {
var options = axis.options;
if (options.grid) {
fontSize = options.labels.style.fontSize;
fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
 
// Prohibit timespans of multitudes of a time unit,
// e.g. two days, three weeks, etc.
if (options.type === 'datetime') {
options.units = [
['millisecond', [1]],
['second', [1]],
['minute', [1]],
['hour', [1]],
['day', [1]],
['week', [1]],
['month', [1]],
['year', null]
];
}
 
// Make tick marks taller, creating cell walls of a grid.
// Use cellHeight axis option if set
if (axis.horiz) {
options.tickLength = options.cellHeight ||
fontMetrics.h * fontSizeToCellHeightRatio;
} else {
options.tickWidth = 1;
if (!options.lineWidth) {
options.lineWidth = 1;
}
}
}
});
 
// Call original Chart.render()
proceed.apply(this);
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2014-2017 Highsoft AS
* Authors: Torstein Honsi, Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
 
var defaultPlotOptions = H.getOptions().plotOptions,
color = H.Color,
columnType = H.seriesTypes.column,
each = H.each,
extendClass = H.extendClass,
isNumber = H.isNumber,
isObject = H.isObject,
merge = H.merge,
pick = H.pick,
seriesTypes = H.seriesTypes,
wrap = H.wrap,
Axis = H.Axis,
Point = H.Point,
Series = H.Series,
pointFormat = '<span style="color:{point.color}">' +
'\u25CF' +
'</span> {series.name}: <b>{point.yCategory}</b><br/>',
xrange = 'xrange';
 
defaultPlotOptions.xrange = merge(defaultPlotOptions.column, {
tooltip: {
pointFormat: pointFormat
}
});
seriesTypes.xrange = extendClass(columnType, {
pointClass: extendClass(Point, {
// Add x2 and yCategory to the available properties for tooltip formats
getLabelConfig: function() {
var cfg = Point.prototype.getLabelConfig.call(this);
 
cfg.x2 = this.x2;
cfg.yCategory = this.yCategory = this.series.yAxis.categories && this.series.yAxis.categories[this.y];
return cfg;
}
}),
type: xrange,
forceDL: true,
parallelArrays: ['x', 'x2', 'y'],
requireSorting: false,
animate: seriesTypes.line.prototype.animate,
 
/**
* Borrow the column series metrics, but with swapped axes. This gives free access
* to features like groupPadding, grouping, pointWidth etc.
*/
getColumnMetrics: function() {
var metrics,
chart = this.chart;
 
function swapAxes() {
each(chart.series, function(s) {
var xAxis = s.xAxis;
s.xAxis = s.yAxis;
s.yAxis = xAxis;
});
}
 
swapAxes();
 
this.yAxis.closestPointRange = 1;
metrics = columnType.prototype.getColumnMetrics.call(this);
 
swapAxes();
 
return metrics;
},
 
/**
* Override cropData to show a point where x is outside visible range
* but x2 is outside.
*/
cropData: function(xData, yData, min, max) {
 
// Replace xData with x2Data to find the appropriate cropStart
var cropData = Series.prototype.cropData,
crop = cropData.call(this, this.x2Data, yData, min, max);
 
// Re-insert the cropped xData
crop.xData = xData.slice(crop.start, crop.end);
 
return crop;
},
 
translate: function() {
columnType.prototype.translate.apply(this, arguments);
var series = this,
xAxis = series.xAxis,
metrics = series.columnMetrics,
minPointLength = series.options.minPointLength || 0;
 
each(series.points, function(point) {
var plotX = point.plotX,
posX = pick(point.x2, point.x + (point.len || 0)),
plotX2 = xAxis.toPixels(posX, true),
width = plotX2 - plotX,
widthDifference,
shapeArgs,
partialFill;
 
if (minPointLength) {
widthDifference = minPointLength - width;
if (widthDifference < 0) {
widthDifference = 0;
}
plotX -= widthDifference / 2;
plotX2 += widthDifference / 2;
}
 
plotX = Math.max(plotX, -10);
plotX2 = Math.min(Math.max(plotX2, -10), xAxis.len + 10);
 
if (plotX2 < plotX) { // #6107
plotX2 = plotX;
}
 
point.shapeArgs = {
x: plotX,
y: point.plotY + metrics.offset,
width: plotX2 - plotX,
height: metrics.width
};
point.tooltipPos[0] += width / 2;
point.tooltipPos[1] -= metrics.width / 2;
 
// Add a partShapeArgs to the point, based on the shapeArgs property
partialFill = point.partialFill;
if (partialFill) {
// Get the partial fill amount
if (isObject(partialFill)) {
partialFill = partialFill.amount;
}
// If it was not a number, assume 0
if (!isNumber(partialFill)) {
partialFill = 0;
}
shapeArgs = point.shapeArgs;
point.partShapeArgs = {
x: shapeArgs.x,
y: shapeArgs.y + 1,
width: shapeArgs.width * partialFill,
height: shapeArgs.height - 2
};
}
});
},
 
drawPoints: function() {
var series = this,
chart = this.chart,
options = series.options,
renderer = chart.renderer,
animationLimit = options.animationLimit || 250,
verb = chart.pointCount < animationLimit ? 'animate' : 'attr';
 
// draw the columns
each(series.points, function(point) {
var plotY = point.plotY,
graphic = point.graphic,
type = point.shapeType,
shapeArgs = point.shapeArgs,
partShapeArgs = point.partShapeArgs,
seriesOpts = series.options,
pfOptions = point.partialFill,
fill,
state = point.selected && 'select',
cutOff = options.stacking && !options.borderRadius;
 
if (isNumber(plotY) && point.y !== null) {
if (graphic) { // update
point.graphicOriginal[verb](
merge(shapeArgs)
);
if (partShapeArgs) {
point.graphicOverlay[verb](
merge(partShapeArgs)
);
}
 
} else {
point.graphic = graphic = renderer.g('point')
.attr({
'class': point.getClassName()
})
.add(point.group || series.group);
 
point.graphicOriginal = renderer[type](shapeArgs)
.addClass('highcharts-partfill-original')
.add(graphic);
if (partShapeArgs) {
point.graphicOverlay = renderer[type](partShapeArgs)
.addClass('highcharts-partfill-overlay')
.add(graphic);
}
}
 
 
 
} else if (graphic) {
point.graphic = graphic.destroy(); // #1269
}
});
}
});
 
/**
* Max x2 should be considered in xAxis extremes
*/
wrap(Axis.prototype, 'getSeriesExtremes', function(proceed) {
var axis = this,
series = axis.series,
dataMax,
modMax;
 
proceed.call(this);
if (axis.isXAxis && series.type === xrange) {
dataMax = pick(axis.dataMax, Number.MIN_VALUE);
each(this.series, function(series) {
each(series.x2Data || [], function(val) {
if (val > dataMax) {
dataMax = val;
modMax = true;
}
});
});
if (modMax) {
axis.dataMax = dataMax;
}
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2016 Highsoft AS
* Authors: Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
//
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/grid-axis.js
@@ -0,0 +1,19 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
GridAxis
 
(c) 2016 Lars A. V. Cabrera
 
--- WORK IN PROGRESS ---
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(h){var n=h.dateFormat,p=h.each,t=h.isObject,r=h.pick,l=h.wrap,m=h.Axis,u=h.Chart,q=h.Tick;m.prototype.isOuterAxis=function(){var a=this,c=-1,b=!0;p(this.chart.axes,function(e,f){e.side===a.side&&(e===a?c=f:0<=c&&f>c&&(b=!1))});return b};q.prototype.getLabelWidth=function(){return this.label.getBBox().width};m.prototype.getMaxLabelLength=function(a){var c=this.tickPositions,b=this.ticks,e=0;
if(!this.maxLabelLength||a)p(c,function(a){(a=b[a])&&a.labelLength>e&&(e=a.labelLength)}),this.maxLabelLength=e;return this.maxLabelLength};m.prototype.addTitle=function(){var a=this.chart.renderer,c=this.axisParent,b=this.horiz,e=this.opposite,f=this.options,d=f.title,g;this.showAxis=g=this.hasData()||r(f.showEmpty,!0);f.title="";this.axisTitle||((f=d.textAlign)||(f=(b?{low:"left",middle:"center",high:"right"}:{low:e?"right":"left",middle:"center",high:e?"left":"right"})[d.align]),this.axisTitle=
a.text(d.text,0,0,d.useHTML).attr({zIndex:7,rotation:d.rotation||0,align:f}).addClass("highcharts-axis-title").add(c),this.axisTitle.isNew=!0);this.axisTitle[g?"show":"hide"](!0)};h.dateFormats={W:function(a){a=new Date(a);var c=0===a.getUTCDay()?7:a.getUTCDay(),b=a.getTime(),e=new Date(a.getUTCFullYear(),0,1,-6);a.setDate(a.getUTCDate()+4-c);return 1+Math.floor(Math.floor((b-e)/864E5)/7)},E:function(a){return n("%a",a,!0).charAt(0)}};l(q.prototype,"addLabel",function(a){var c=this.axis,b=void 0!==
c.options.categories,e=c.tickPositions,e=this.pos!==e[e.length-1];(!c.options.grid||b||e)&&a.apply(this)});l(q.prototype,"getLabelPosition",function(a,c,b,e){var f=a.apply(this,Array.prototype.slice.call(arguments,1)),d=this.axis,g=d.options,k=g.tickInterval||1,h,l;g.grid&&(h=g.labels.style.fontSize,l=d.chart.renderer.fontMetrics(h,e),h=l.b,l=l.h,d.horiz&&void 0===g.categories?(g=d.axisGroup.getBBox().height,k=this.pos+k/2,f.x=d.translate(k)+d.left,k=g/2+l/2-Math.abs(l-h),f.y=0===d.side?b-k:b+k):
(void 0===g.categories&&(k=this.pos+k/2,f.y=d.translate(k)+d.top+h/2),k=this.getLabelWidth()/2-d.maxLabelLength/2,f.x=3===d.side?f.x+k:f.x-k));return f});l(m.prototype,"tickSize",function(a){var c=a.apply(this,Array.prototype.slice.call(arguments,1)),b;this.options.grid&&!this.horiz&&(b=2*Math.abs(this.defaultLeftAxisOptions.labels.x),this.maxLabelLength||(this.maxLabelLength=this.getMaxLabelLength()),b=this.maxLabelLength+b,c[0]=b);return c});l(m.prototype,"getOffset",function(a){var c=this.chart.axisOffset,
b=this.side,e,f,d=this.options,g=d.title,k=g&&g.text&&!1!==g.enabled;this.options.grid&&t(this.options.title)?(f=this.tickSize("tick")[0],c[b]&&f&&(e=c[b]+f),k&&this.addTitle(),a.apply(this,Array.prototype.slice.call(arguments,1)),c[b]=r(e,c[b]),d.title=g):a.apply(this,Array.prototype.slice.call(arguments,1))});l(m.prototype,"renderUnsquish",function(a){this.options.grid&&(this.labelRotation=0,this.options.labels.rotation=0);a.apply(this)});l(m.prototype,"setOptions",function(a,c){c.grid&&this.horiz&&
(c.startOnTick=!0,c.minPadding=0,c.endOnTick=!0);a.apply(this,Array.prototype.slice.call(arguments,1))});l(m.prototype,"render",function(a){var c=this.options,b,e,f,d,g,k,h=this.chart.renderer;if(c.grid){if(b=2*Math.abs(this.defaultLeftAxisOptions.labels.x),b=this.maxLabelLength+b,e=c.lineWidth,this.rightWall&&this.rightWall.destroy(),a.apply(this),a=this.axisGroup.getBBox(),this.horiz&&(this.rightWall=h.path(["M",a.x+this.width+1,a.y,"L",a.x+this.width+1,a.y+a.height]).attr({stroke:c.tickColor||
"#ccd6eb","stroke-width":c.tickWidth||1,zIndex:7,class:"grid-wall"}).add(this.axisGroup)),this.isOuterAxis()&&this.axisLine&&(this.horiz&&(b=a.height-1),e)){a=this.getLinePath(e);g=a.indexOf("M")+1;k=a.indexOf("L")+1;f=a.indexOf("M")+2;d=a.indexOf("L")+2;if(0===this.side||3===this.side)b=-b;this.horiz?(a[f]+=b,a[d]+=b):(a[g]+=b,a[k]+=b);this.axisLineExtra?this.axisLineExtra.animate({d:a}):this.axisLineExtra=h.path(a).attr({stroke:c.lineColor,"stroke-width":e,zIndex:7}).add(this.axisGroup);this.axisLine[this.showAxis?
"show":"hide"](!0)}}else a.apply(this)});l(u.prototype,"render",function(a){var c=25/11,b,e;p(this.axes,function(a){var d=a.options;d.grid&&(e=d.labels.style.fontSize,b=a.chart.renderer.fontMetrics(e),"datetime"===d.type&&(d.units=[["millisecond",[1]],["second",[1]],["minute",[1]],["hour",[1]],["day",[1]],["week",[1]],["month",[1]],["year",null]]),a.horiz?d.tickLength=d.cellHeight||b.h*c:(d.tickWidth=1,d.lineWidth||(d.lineWidth=1)))});a.apply(this)})})(n)});
/base/000_base/node_modules/highcharts/js/modules/grid-axis.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":19,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","dateFormat","each","isObject","pick","wrap","Axis","Chart","Tick","prototype","isOuterAxis","Axis.prototype.isOuterAxis","axis","thisIndex","isOuter","chart","axes","otherAxis","index","side","getLabelWidth","Tick.prototype.getLabelWidth","label","getBBox","width","getMaxLabelLength","Axis.prototype.getMaxLabelLength","force","tickPositions","ticks","maxLabelLength","tick","labelLength","addTitle","Axis.prototype.addTitle","renderer","axisParent","horiz","opposite","options","axisTitleOptions","title","showAxis","hasData","showEmpty","axisTitle","textAlign","low","middle","high","align","text","useHTML","attr","zIndex","rotation","addClass","add","isNew","dateFormats","W","timestamp","date","Date","day","getUTCDay","time","getTime","startOfYear","getUTCFullYear","setDate","getUTCDate","Math","floor","dayNumber","E","charAt","proceed","isCategoryAxis","undefined","categories","isLastTick","pos","lastTick","length","grid","apply","x","y","retVal","Array","slice","call","arguments","tickInterval","fontSize","labelMetrics","labels","style","fontMetrics","lblB","b","lblH","h","axisHeight","axisGroup","height","newPos","translate","left","labelCenter","abs","top","newX","labelPadding","defaultLeftAxisOptions","distance","axisOffset","tickSize","enabled","labelRotation","userOptions","startOnTick","minPadding","endOnTick","lineWidth","yStartIndex","yEndIndex","xStartIndex","xEndIndex","rightWall","destroy","axisGroupBox","path","stroke","tickColor","tickWidth","class","axisLine","linePath","getLinePath","indexOf","axisLineExtra","animate","d","lineColor","fontSizeToCellHeightRatio","type","units","tickLength","cellHeight"]
}
/base/000_base/node_modules/highcharts/js/modules/grid-axis.src.js
@@ -0,0 +1,545 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* GridAxis
*
* (c) 2016 Lars A. V. Cabrera
*
* --- WORK IN PROGRESS ---
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2016 Highsoft AS
* Authors: Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
 
var dateFormat = H.dateFormat,
each = H.each,
isObject = H.isObject,
pick = H.pick,
wrap = H.wrap,
Axis = H.Axis,
Chart = H.Chart,
Tick = H.Tick;
 
 
// Enum for which side the axis is on.
// Maps to axis.side
var axisSide = {
top: 0,
right: 1,
bottom: 2,
left: 3,
0: 'top',
1: 'right',
2: 'bottom',
3: 'left'
};
 
/**
* Checks if an axis is the outer axis in its dimension. Since
* axes are placed outwards in order, the axis with the highest
* index is the outermost axis.
*
* Example: If there are multiple x-axes at the top of the chart,
* this function returns true if the axis supplied is the last
* of the x-axes.
*
* @return true if the axis is the outermost axis in its dimension;
* false if not
*/
Axis.prototype.isOuterAxis = function() {
var axis = this,
thisIndex = -1,
isOuter = true;
 
each(this.chart.axes, function(otherAxis, index) {
if (otherAxis.side === axis.side) {
if (otherAxis === axis) {
// Get the index of the axis in question
thisIndex = index;
 
// Check thisIndex >= 0 in case thisIndex has
// not been found yet
} else if (thisIndex >= 0 && index > thisIndex) {
// There was an axis on the same side with a
// higher index. Exit the loop.
isOuter = false;
return;
}
}
});
// There were either no other axes on the same side,
// or the other axes were not farther from the chart
return isOuter;
};
 
/**
* Shortcut function to Tick.label.getBBox().width.
*
* @return {number} width - the width of the tick label
*/
Tick.prototype.getLabelWidth = function() {
return this.label.getBBox().width;
};
 
/**
* Get the maximum label length.
* This function can be used in states where the axis.maxLabelLength has not
* been set.
*
* @param {boolean} force - Optional parameter to force a new calculation, even
* if a value has already been set
* @return {number} maxLabelLength - the maximum label length of the axis
*/
Axis.prototype.getMaxLabelLength = function(force) {
var tickPositions = this.tickPositions,
ticks = this.ticks,
maxLabelLength = 0;
 
if (!this.maxLabelLength || force) {
each(tickPositions, function(tick) {
tick = ticks[tick];
if (tick && tick.labelLength > maxLabelLength) {
maxLabelLength = tick.labelLength;
}
});
this.maxLabelLength = maxLabelLength;
}
return this.maxLabelLength;
};
 
/**
* Adds the axis defined in axis.options.title
*/
Axis.prototype.addTitle = function() {
var axis = this,
renderer = axis.chart.renderer,
axisParent = axis.axisParent,
horiz = axis.horiz,
opposite = axis.opposite,
options = axis.options,
axisTitleOptions = options.title,
hasData,
showAxis,
textAlign;
 
// For reuse in Axis.render
hasData = axis.hasData();
axis.showAxis = showAxis = hasData || pick(options.showEmpty, true);
 
// Disregard title generation in original Axis.getOffset()
options.title = '';
 
if (!axis.axisTitle) {
textAlign = axisTitleOptions.textAlign;
if (!textAlign) {
textAlign = (horiz ? {
low: 'left',
middle: 'center',
high: 'right'
} : {
low: opposite ? 'right' : 'left',
middle: 'center',
high: opposite ? 'left' : 'right'
})[axisTitleOptions.align];
}
axis.axisTitle = renderer.text(
axisTitleOptions.text,
0,
0,
axisTitleOptions.useHTML
)
.attr({
zIndex: 7,
rotation: axisTitleOptions.rotation || 0,
align: textAlign
})
.addClass('highcharts-axis-title')
 
// Add to axisParent instead of axisGroup, to ignore the space
// it takes
.add(axisParent);
axis.axisTitle.isNew = true;
}
 
 
// hide or show the title depending on whether showEmpty is set
axis.axisTitle[showAxis ? 'show' : 'hide'](true);
};
 
/**
* Add custom date formats
*/
H.dateFormats = {
// Week number
W: function(timestamp) {
var date = new Date(timestamp),
day = date.getUTCDay() === 0 ? 7 : date.getUTCDay(),
time = date.getTime(),
startOfYear = new Date(date.getUTCFullYear(), 0, 1, -6),
dayNumber;
date.setDate(date.getUTCDate() + 4 - day);
dayNumber = Math.floor((time - startOfYear) / 86400000);
return 1 + Math.floor(dayNumber / 7);
},
// First letter of the day of the week, e.g. 'M' for 'Monday'.
E: function(timestamp) {
return dateFormat('%a', timestamp, true).charAt(0);
}
};
 
/**
* Prevents adding the last tick label if the axis is not a category axis.
*
* Since numeric labels are normally placed at starts and ends of a range of
* value, and this module makes the label point at the value, an "extra" label
* would appear.
*
* @param {function} proceed - the original function
*/
wrap(Tick.prototype, 'addLabel', function(proceed) {
var axis = this.axis,
isCategoryAxis = axis.options.categories !== undefined,
tickPositions = axis.tickPositions,
lastTick = tickPositions[tickPositions.length - 1],
isLastTick = this.pos !== lastTick;
 
if (!axis.options.grid || isCategoryAxis || isLastTick) {
proceed.apply(this);
}
});
 
/**
* Center tick labels vertically and horizontally between ticks
*
* @param {function} proceed - the original function
*
* @return {object} object - an object containing x and y positions
* for the tick
*/
wrap(Tick.prototype, 'getLabelPosition', function(proceed, x, y, label) {
var retVal = proceed.apply(this, Array.prototype.slice.call(arguments, 1)),
axis = this.axis,
options = axis.options,
tickInterval = options.tickInterval || 1,
newX,
newPos,
axisHeight,
fontSize,
labelMetrics,
lblB,
lblH,
labelCenter;
 
// Only center tick labels if axis has option grid: true
if (options.grid) {
fontSize = options.labels.style.fontSize;
labelMetrics = axis.chart.renderer.fontMetrics(fontSize, label);
lblB = labelMetrics.b;
lblH = labelMetrics.h;
 
if (axis.horiz && options.categories === undefined) {
// Center x position
axisHeight = axis.axisGroup.getBBox().height;
newPos = this.pos + tickInterval / 2;
retVal.x = axis.translate(newPos) + axis.left;
labelCenter = (axisHeight / 2) + (lblH / 2) - Math.abs(lblH - lblB);
 
// Center y position
if (axis.side === axisSide.top) {
retVal.y = y - labelCenter;
} else {
retVal.y = y + labelCenter;
}
} else {
// Center y position
if (options.categories === undefined) {
newPos = this.pos + (tickInterval / 2);
retVal.y = axis.translate(newPos) + axis.top + (lblB / 2);
}
 
// Center x position
newX = (this.getLabelWidth() / 2) - (axis.maxLabelLength / 2);
if (axis.side === axisSide.left) {
retVal.x += newX;
} else {
retVal.x -= newX;
}
}
}
return retVal;
});
 
 
/**
* Draw vertical ticks extra long to create cell floors and roofs.
* Overrides the tickLength for vertical axes.
*
* @param {function} proceed - the original function
* @returns {array} retVal -
*/
wrap(Axis.prototype, 'tickSize', function(proceed) {
var axis = this,
retVal = proceed.apply(axis, Array.prototype.slice.call(arguments, 1)),
labelPadding,
distance;
 
if (axis.options.grid && !axis.horiz) {
labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
if (!axis.maxLabelLength) {
axis.maxLabelLength = axis.getMaxLabelLength();
}
distance = axis.maxLabelLength + labelPadding;
 
retVal[0] = distance;
}
return retVal;
});
 
/**
* Disregards space required by axisTitle, by adding axisTitle to axisParent
* instead of axisGroup, and disregarding margins and offsets related to
* axisTitle.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'getOffset', function(proceed) {
var axis = this,
axisOffset = axis.chart.axisOffset,
side = axis.side,
axisHeight,
tickSize,
options = axis.options,
axisTitleOptions = options.title,
addTitle = axisTitleOptions &&
axisTitleOptions.text &&
axisTitleOptions.enabled !== false;
 
if (axis.options.grid && isObject(axis.options.title)) {
 
tickSize = axis.tickSize('tick')[0];
if (axisOffset[side] && tickSize) {
axisHeight = axisOffset[side] + tickSize;
}
 
if (addTitle) {
// Use the custom addTitle() to add it, while preventing making room
// for it
axis.addTitle();
}
 
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
axisOffset[side] = pick(axisHeight, axisOffset[side]);
 
 
// Put axis options back after original Axis.getOffset() has been called
options.title = axisTitleOptions;
 
} else {
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
}
});
 
/**
* Prevents rotation of labels when squished, as rotating them would not
* help.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'renderUnsquish', function(proceed) {
if (this.options.grid) {
this.labelRotation = 0;
this.options.labels.rotation = 0;
}
proceed.apply(this);
});
 
/**
* Places leftmost tick at the start of the axis, to create a left wall.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'setOptions', function(proceed, userOptions) {
var axis = this;
if (userOptions.grid && axis.horiz) {
userOptions.startOnTick = true;
userOptions.minPadding = 0;
userOptions.endOnTick = true;
}
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
/**
* Draw an extra line on the far side of the the axisLine,
* creating cell roofs of a grid.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'render', function(proceed) {
var axis = this,
options = axis.options,
labelPadding,
distance,
lineWidth,
linePath,
yStartIndex,
yEndIndex,
xStartIndex,
xEndIndex,
renderer = axis.chart.renderer,
axisGroupBox;
 
if (options.grid) {
labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
distance = axis.maxLabelLength + labelPadding;
lineWidth = options.lineWidth;
 
// Remove right wall before rendering
if (axis.rightWall) {
axis.rightWall.destroy();
}
 
// Call original Axis.render() to obtain axis.axisLine and
// axis.axisGroup
proceed.apply(axis);
 
axisGroupBox = axis.axisGroup.getBBox();
 
// Add right wall on horizontal axes
if (axis.horiz) {
axis.rightWall = renderer.path([
'M',
axisGroupBox.x + axis.width + 1, // account for left wall
axisGroupBox.y,
'L',
axisGroupBox.x + axis.width + 1, // account for left wall
axisGroupBox.y + axisGroupBox.height
])
.attr({
stroke: options.tickColor || '#ccd6eb',
'stroke-width': options.tickWidth || 1,
zIndex: 7,
class: 'grid-wall'
})
.add(axis.axisGroup);
}
 
if (axis.isOuterAxis() && axis.axisLine) {
if (axis.horiz) {
// -1 to avoid adding distance each time the chart updates
distance = axisGroupBox.height - 1;
}
 
if (lineWidth) {
linePath = axis.getLinePath(lineWidth);
xStartIndex = linePath.indexOf('M') + 1;
xEndIndex = linePath.indexOf('L') + 1;
yStartIndex = linePath.indexOf('M') + 2;
yEndIndex = linePath.indexOf('L') + 2;
 
// Negate distance if top or left axis
if (axis.side === axisSide.top || axis.side === axisSide.left) {
distance = -distance;
}
 
// If axis is horizontal, reposition line path vertically
if (axis.horiz) {
linePath[yStartIndex] = linePath[yStartIndex] + distance;
linePath[yEndIndex] = linePath[yEndIndex] + distance;
} else {
// If axis is vertical, reposition line path horizontally
linePath[xStartIndex] = linePath[xStartIndex] + distance;
linePath[xEndIndex] = linePath[xEndIndex] + distance;
}
 
if (!axis.axisLineExtra) {
axis.axisLineExtra = renderer.path(linePath)
.attr({
stroke: options.lineColor,
'stroke-width': lineWidth,
zIndex: 7
})
.add(axis.axisGroup);
} else {
axis.axisLineExtra.animate({
d: linePath
});
}
 
// show or hide the line depending on options.showEmpty
axis.axisLine[axis.showAxis ? 'show' : 'hide'](true);
}
}
} else {
proceed.apply(axis);
}
});
 
/**
* Wraps chart rendering with the following customizations:
* 1. Prohibit timespans of multitudes of a time unit
* 2. Draw cell walls on vertical axes
*
* @param {function} proceed - the original function
*/
wrap(Chart.prototype, 'render', function(proceed) {
// 25 is optimal height for default fontSize (11px)
// 25 / 11 ≈ 2.28
var fontSizeToCellHeightRatio = 25 / 11,
fontMetrics,
fontSize;
 
each(this.axes, function(axis) {
var options = axis.options;
if (options.grid) {
fontSize = options.labels.style.fontSize;
fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
 
// Prohibit timespans of multitudes of a time unit,
// e.g. two days, three weeks, etc.
if (options.type === 'datetime') {
options.units = [
['millisecond', [1]],
['second', [1]],
['minute', [1]],
['hour', [1]],
['day', [1]],
['week', [1]],
['month', [1]],
['year', null]
];
}
 
// Make tick marks taller, creating cell walls of a grid.
// Use cellHeight axis option if set
if (axis.horiz) {
options.tickLength = options.cellHeight ||
fontMetrics.h * fontSizeToCellHeightRatio;
} else {
options.tickWidth = 1;
if (!options.lineWidth) {
options.lineWidth = 1;
}
}
}
});
 
// Call original Chart.render()
proceed.apply(this);
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/heatmap.js
@@ -0,0 +1,25 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(q){"object"===typeof module&&module.exports?module.exports=q:q(Highcharts)})(function(q){(function(b){var l=b.Axis,t=b.Chart,m=b.color,h,e=b.each,v=b.extend,w=b.isNumber,n=b.Legend,g=b.LegendSymbolMixin,x=b.noop,r=b.merge,u=b.pick,p=b.wrap;h=b.ColorAxis=function(){this.init.apply(this,arguments)};v(h.prototype,l.prototype);v(h.prototype,{defaultColorAxisOptions:{lineWidth:0,minPadding:0,maxPadding:0,gridLineWidth:1,tickPixelInterval:72,startOnTick:!0,endOnTick:!0,offset:0,marker:{animation:{duration:50},
width:.01},labels:{overflow:"justify",rotation:0},minColor:"#e6ebf5",maxColor:"#003399",tickLength:5,showInLegend:!0},keepProps:["legendGroup","legendItemHeight","legendItemWidth","legendItem","legendSymbol"].concat(l.prototype.keepProps),init:function(a,c){var d="vertical"!==a.options.legend.layout,k;this.coll="colorAxis";k=r(this.defaultColorAxisOptions,{side:d?2:1,reversed:!d},c,{opposite:!d,showEmpty:!1,title:null});l.prototype.init.call(this,a,k);c.dataClasses&&this.initDataClasses(c);this.initStops();
this.horiz=d;this.zoomEnabled=!1;this.defaultLegendLength=200},initDataClasses:function(a){var c,d=0,k=this.chart.options.chart.colorCount,f=this.options,b=a.dataClasses.length;this.dataClasses=c=[];this.legendItems=[];e(a.dataClasses,function(a,e){a=r(a);c.push(a);a.color||("category"===f.dataClassColor?(a.colorIndex=d,d++,d===k&&(d=0)):a.color=m(f.minColor).tweenTo(m(f.maxColor),2>b?.5:e/(b-1)))})},initStops:function(){this.stops=this.options.stops||[[0,this.options.minColor],[1,this.options.maxColor]];
e(this.stops,function(a){a.color=m(a[1])})},setOptions:function(a){l.prototype.setOptions.call(this,a);this.options.crosshair=this.options.marker},setAxisSize:function(){var a=this.legendSymbol,c=this.chart,d=c.options.legend||{},k,f;a?(this.left=d=a.attr("x"),this.top=k=a.attr("y"),this.width=f=a.attr("width"),this.height=a=a.attr("height"),this.right=c.chartWidth-d-f,this.bottom=c.chartHeight-k-a,this.len=this.horiz?f:a,this.pos=this.horiz?d:k):this.len=(this.horiz?d.symbolWidth:d.symbolHeight)||
this.defaultLegendLength},normalizedValue:function(a){this.isLog&&(a=this.val2lin(a));return 1-(this.max-a)/(this.max-this.min||1)},toColor:function(a,c){var d=this.stops,k,f,b=this.dataClasses,e,g;if(b)for(g=b.length;g--;){if(e=b[g],k=e.from,d=e.to,(void 0===k||a>=k)&&(void 0===d||a<=d)){f=e.color;c&&(c.dataClass=g,c.colorIndex=e.colorIndex);break}}else{a=this.normalizedValue(a);for(g=d.length;g--&&!(a>d[g][0]););k=d[g]||d[g+1];d=d[g+1]||k;a=1-(d[0]-a)/(d[0]-k[0]||1);f=k.color.tweenTo(d.color,a)}return f},
getOffset:function(){var a=this.legendGroup,c=this.chart.axisOffset[this.side];a&&(this.axisParent=a,l.prototype.getOffset.call(this),this.added||(this.added=!0,this.labelLeft=0,this.labelRight=this.width),this.chart.axisOffset[this.side]=c)},setLegendColor:function(){var a,c=this.reversed;a=c?1:0;c=c?0:1;a=this.horiz?[a,0,c,0]:[0,c,0,a];this.legendColor={linearGradient:{x1:a[0],y1:a[1],x2:a[2],y2:a[3]},stops:this.stops}},drawLegendSymbol:function(a,c){var d=a.padding,b=a.options,f=this.horiz,g=u(b.symbolWidth,
f?this.defaultLegendLength:12),e=u(b.symbolHeight,f?12:this.defaultLegendLength),h=u(b.labelPadding,f?16:30),b=u(b.itemDistance,10);this.setLegendColor();c.legendSymbol=this.chart.renderer.rect(0,a.baseline-11,g,e).attr({zIndex:1}).add(c.legendGroup);this.legendItemWidth=g+d+(f?b:h);this.legendItemHeight=e+d+(f?h:0)},setState:x,visible:!0,setVisible:x,getSeriesExtremes:function(){var a=this.series,c=a.length;this.dataMin=Infinity;for(this.dataMax=-Infinity;c--;)void 0!==a[c].valueMin&&(this.dataMin=
Math.min(this.dataMin,a[c].valueMin),this.dataMax=Math.max(this.dataMax,a[c].valueMax))},drawCrosshair:function(a,c){var d=c&&c.plotX,b=c&&c.plotY,f,g=this.pos,e=this.len;c&&(f=this.toPixels(c[c.series.colorKey]),f<g?f=g-2:f>g+e&&(f=g+e+2),c.plotX=f,c.plotY=this.len-f,l.prototype.drawCrosshair.call(this,a,c),c.plotX=d,c.plotY=b,this.cross&&this.cross.addClass("highcharts-coloraxis-marker").add(this.legendGroup))},getPlotLinePath:function(a,c,d,b,f){return w(f)?this.horiz?["M",f-4,this.top-6,"L",f+
4,this.top-6,f,this.top,"Z"]:["M",this.left,f,"L",this.left-6,f+6,this.left-6,f-6,"Z"]:l.prototype.getPlotLinePath.call(this,a,c,d,b)},update:function(a,c){var d=this.chart,b=d.legend;e(this.series,function(a){a.isDirtyData=!0});a.dataClasses&&b.allItems&&(e(b.allItems,function(a){a.isDataClass&&a.legendGroup&&a.legendGroup.destroy()}),d.isDirtyLegend=!0);d.options[this.coll]=r(this.userOptions,a);l.prototype.update.call(this,a,c);this.legendItem&&(this.setLegendColor(),b.colorizeItem(this,!0))},
remove:function(){this.legendItem&&this.chart.legend.destroyItem(this);l.prototype.remove.call(this)},getDataClassLegendSymbols:function(){var a=this,c=this.chart,d=this.legendItems,k=c.options.legend,f=k.valueDecimals,h=k.valueSuffix||"",p;d.length||e(this.dataClasses,function(k,l){var n=!0,r=k.from,m=k.to;p="";void 0===r?p="\x3c ":void 0===m&&(p="\x3e ");void 0!==r&&(p+=b.numberFormat(r,f)+h);void 0!==r&&void 0!==m&&(p+=" - ");void 0!==m&&(p+=b.numberFormat(m,f)+h);d.push(v({chart:c,name:p,options:{},
drawLegendSymbol:g.drawRectangle,visible:!0,setState:x,isDataClass:!0,setVisible:function(){n=this.visible=!n;e(a.series,function(a){e(a.points,function(a){a.dataClass===l&&a.setVisible(n)})});c.legend.colorizeItem(this,n)}},k))});return d},name:""});e(["fill","stroke"],function(a){b.Fx.prototype[a+"Setter"]=function(){this.elem.attr(a,m(this.start).tweenTo(m(this.end),this.pos),null,!0)}});p(t.prototype,"getAxes",function(a){var c=this.options.colorAxis;a.call(this);this.colorAxis=[];c&&new h(this,
c)});p(n.prototype,"getAllItems",function(a){var c=[],d=this.chart.colorAxis[0];d&&d.options&&(d.options.showInLegend&&(d.options.dataClasses?c=c.concat(d.getDataClassLegendSymbols()):c.push(d)),e(d.series,function(a){a.options.showInLegend=!1}));return c.concat(a.call(this))});p(n.prototype,"colorizeItem",function(a,c,d){a.call(this,c,d);d&&c.legendColor&&c.legendSymbol.attr({fill:c.legendColor})})})(q);(function(b){var l=b.defined,t=b.each,m=b.noop;b.colorPointMixin={isValid:function(){return null!==
this.value},setVisible:function(b){var e=this,h=b?"show":"hide";t(["graphic","dataLabel"],function(b){if(e[b])e[b][h]()})},setState:function(h){b.Point.prototype.setState.call(this,h);this.graphic&&this.graphic.attr({zIndex:"hover"===h?1:0})}};b.colorSeriesMixin={pointArrayMap:["value"],axisTypes:["xAxis","yAxis","colorAxis"],optionalAxis:"colorAxis",trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:m,parallelArrays:["x","y","value"],colorKey:"value",translateColors:function(){var b=
this,e=this.options.nullColor,l=this.colorAxis,m=this.colorKey;t(this.data,function(h){var g=h[m];if(g=h.options.color||(h.isNull?e:l&&void 0!==g?l.toColor(g,h):h.color||b.color))h.color=g})},colorAttribs:function(b){var e={};l(b.color)&&(e[this.colorProp||"fill"]=b.color);return e}}})(q);(function(b){var l=b.colorPointMixin,t=b.each,m=b.merge,h=b.noop,e=b.pick,q=b.Series,w=b.seriesType,n=b.seriesTypes;w("heatmap","scatter",{animation:!1,borderWidth:0,dataLabels:{formatter:function(){return this.point.value},
inside:!0,verticalAlign:"middle",crop:!1,overflow:!1,padding:0},marker:null,pointRange:null,tooltip:{pointFormat:"{point.x}, {point.y}: {point.value}\x3cbr/\x3e"},states:{normal:{animation:!0},hover:{halo:!1,brightness:.2}}},m(b.colorSeriesMixin,{pointArrayMap:["y","value"],hasPointSpecificOptions:!0,supportsDrilldown:!0,getExtremesFromAll:!0,directTouch:!0,init:function(){var b;n.scatter.prototype.init.apply(this,arguments);b=this.options;b.pointRange=e(b.pointRange,b.colsize||1);this.yAxis.axisPointRange=
b.rowsize||1},translate:function(){var b=this.options,e=this.xAxis,h=this.yAxis,l=function(b,a,c){return Math.min(Math.max(a,b),c)};this.generatePoints();t(this.points,function(g){var a=(b.colsize||1)/2,c=(b.rowsize||1)/2,d=l(Math.round(e.len-e.translate(g.x-a,0,1,0,1)),-e.len,2*e.len),a=l(Math.round(e.len-e.translate(g.x+a,0,1,0,1)),-e.len,2*e.len),k=l(Math.round(h.translate(g.y-c,0,1,0,1)),-h.len,2*h.len),c=l(Math.round(h.translate(g.y+c,0,1,0,1)),-h.len,2*h.len);g.plotX=g.clientX=(d+a)/2;g.plotY=
(k+c)/2;g.shapeType="rect";g.shapeArgs={x:Math.min(d,a),y:Math.min(k,c),width:Math.abs(a-d),height:Math.abs(c-k)}});this.translateColors()},drawPoints:function(){n.column.prototype.drawPoints.call(this);t(this.points,function(b){b.graphic.css(this.colorAttribs(b))},this)},animate:h,getBox:h,drawLegendSymbol:b.LegendSymbolMixin.drawRectangle,alignDataLabel:n.column.prototype.alignDataLabel,getExtremes:function(){q.prototype.getExtremes.call(this,this.valueData);this.valueMin=this.dataMin;this.valueMax=
this.dataMax;q.prototype.getExtremes.call(this)}}),l)})(q)});
/base/000_base/node_modules/highcharts/js/modules/heatmap.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":25,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","Axis","Chart","color","ColorAxis","each","extend","isNumber","Legend","LegendSymbolMixin","noop","merge","pick","wrap","H.ColorAxis","init","apply","arguments","prototype","defaultColorAxisOptions","lineWidth","minPadding","maxPadding","gridLineWidth","tickPixelInterval","startOnTick","endOnTick","offset","marker","animation","duration","width","labels","overflow","rotation","minColor","maxColor","tickLength","showInLegend","keepProps","concat","chart","userOptions","horiz","options","legend","layout","coll","side","reversed","opposite","showEmpty","title","call","dataClasses","initDataClasses","initStops","zoomEnabled","defaultLegendLength","colorCounter","colorCount","len","length","legendItems","dataClass","i","push","dataClassColor","colorIndex","tweenTo","stops","stop","setOptions","crosshair","setAxisSize","symbol","legendSymbol","legendOptions","y","left","x","attr","top","height","right","chartWidth","bottom","chartHeight","pos","symbolWidth","symbolHeight","normalizedValue","value","isLog","val2lin","max","min","toColor","point","from","to","undefined","getOffset","group","legendGroup","sideOffset","axisOffset","axisParent","added","labelLeft","labelRight","setLegendColor","grad","one","zero","legendColor","linearGradient","x1","y1","x2","y2","drawLegendSymbol","item","padding","labelPadding","itemDistance","renderer","rect","baseline","zIndex","add","legendItemWidth","legendItemHeight","setState","visible","setVisible","getSeriesExtremes","series","dataMin","Infinity","dataMax","valueMin","Math","valueMax","drawCrosshair","e","plotX","plotY","crossPos","axisPos","axisLen","toPixels","colorKey","cross","addClass","getPlotLinePath","a","b","c","d","update","newOptions","redraw","isDirtyData","allItems","isDataClass","destroy","isDirtyLegend","legendItem","colorizeItem","remove","destroyItem","getDataClassLegendSymbols","axis","valueDecimals","valueSuffix","name","vis","numberFormat","drawRectangle","points","prop","Fx","elem","start","end","proceed","colorAxisOptions","colorAxis","fill","defined","colorPointMixin","isValid","method","key","state","Point","graphic","colorSeriesMixin","pointArrayMap","axisTypes","optionalAxis","trackerGroups","getSymbol","parallelArrays","translateColors","nullColor","data","isNull","colorAttribs","ret","colorProp","Series","seriesType","seriesTypes","borderWidth","dataLabels","formatter","inside","verticalAlign","crop","pointRange","tooltip","pointFormat","states","normal","hover","halo","brightness","hasPointSpecificOptions","supportsDrilldown","getExtremesFromAll","directTouch","scatter","colsize","yAxis","axisPointRange","rowsize","translate","xAxis","between","generatePoints","xPad","yPad","round","clientX","shapeType","shapeArgs","abs","drawPoints","column","css","animate","getBox","alignDataLabel","getExtremes","valueData"]
}
/base/000_base/node_modules/highcharts/js/modules/heatmap.src.js
@@ -0,0 +1,782 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Axis = H.Axis,
Chart = H.Chart,
color = H.color,
ColorAxis,
each = H.each,
extend = H.extend,
isNumber = H.isNumber,
Legend = H.Legend,
LegendSymbolMixin = H.LegendSymbolMixin,
noop = H.noop,
merge = H.merge,
pick = H.pick,
wrap = H.wrap;
 
/**
* The ColorAxis object for inclusion in gradient legends
*/
ColorAxis = H.ColorAxis = function() {
this.init.apply(this, arguments);
};
extend(ColorAxis.prototype, Axis.prototype);
extend(ColorAxis.prototype, {
defaultColorAxisOptions: {
lineWidth: 0,
minPadding: 0,
maxPadding: 0,
gridLineWidth: 1,
tickPixelInterval: 72,
startOnTick: true,
endOnTick: true,
offset: 0,
marker: {
animation: {
duration: 50
},
width: 0.01
 
},
labels: {
overflow: 'justify',
rotation: 0
},
minColor: '#e6ebf5',
maxColor: '#003399',
tickLength: 5,
showInLegend: true
},
 
// Properties to preserve after destroy, for Axis.update (#5881, #6025)
keepProps: [
'legendGroup',
'legendItemHeight',
'legendItemWidth',
'legendItem',
'legendSymbol'
].concat(Axis.prototype.keepProps),
 
/**
* Initialize the color axis
*/
init: function(chart, userOptions) {
var horiz = chart.options.legend.layout !== 'vertical',
options;
 
this.coll = 'colorAxis';
 
// Build the options
options = merge(this.defaultColorAxisOptions, {
side: horiz ? 2 : 1,
reversed: !horiz
}, userOptions, {
opposite: !horiz,
showEmpty: false,
title: null
});
 
Axis.prototype.init.call(this, chart, options);
 
// Base init() pushes it to the xAxis array, now pop it again
//chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
 
// Prepare data classes
if (userOptions.dataClasses) {
this.initDataClasses(userOptions);
}
this.initStops();
 
// Override original axis properties
this.horiz = horiz;
this.zoomEnabled = false;
 
// Add default values
this.defaultLegendLength = 200;
},
 
initDataClasses: function(userOptions) {
var chart = this.chart,
dataClasses,
colorCounter = 0,
colorCount = chart.options.chart.colorCount,
options = this.options,
len = userOptions.dataClasses.length;
this.dataClasses = dataClasses = [];
this.legendItems = [];
 
each(userOptions.dataClasses, function(dataClass, i) {
var colors;
 
dataClass = merge(dataClass);
dataClasses.push(dataClass);
if (!dataClass.color) {
if (options.dataClassColor === 'category') {
 
dataClass.colorIndex = colorCounter;
 
// increase and loop back to zero
colorCounter++;
if (colorCounter === colorCount) {
colorCounter = 0;
}
} else {
dataClass.color = color(options.minColor).tweenTo(
color(options.maxColor),
len < 2 ? 0.5 : i / (len - 1) // #3219
);
}
}
});
},
 
initStops: function() {
this.stops = this.options.stops || [
[0, this.options.minColor],
[1, this.options.maxColor]
];
each(this.stops, function(stop) {
stop.color = color(stop[1]);
});
},
 
/**
* Extend the setOptions method to process extreme colors and color
* stops.
*/
setOptions: function(userOptions) {
Axis.prototype.setOptions.call(this, userOptions);
 
this.options.crosshair = this.options.marker;
},
 
setAxisSize: function() {
var symbol = this.legendSymbol,
chart = this.chart,
legendOptions = chart.options.legend || {},
x,
y,
width,
height;
 
if (symbol) {
this.left = x = symbol.attr('x');
this.top = y = symbol.attr('y');
this.width = width = symbol.attr('width');
this.height = height = symbol.attr('height');
this.right = chart.chartWidth - x - width;
this.bottom = chart.chartHeight - y - height;
 
this.len = this.horiz ? width : height;
this.pos = this.horiz ? x : y;
} else {
// Fake length for disabled legend to avoid tick issues and such (#5205)
this.len = (this.horiz ? legendOptions.symbolWidth : legendOptions.symbolHeight) || this.defaultLegendLength;
}
},
 
normalizedValue: function(value) {
if (this.isLog) {
value = this.val2lin(value);
}
return 1 - ((this.max - value) / ((this.max - this.min) || 1));
},
 
/**
* Translate from a value to a color
*/
toColor: function(value, point) {
var pos,
stops = this.stops,
from,
to,
color,
dataClasses = this.dataClasses,
dataClass,
i;
 
if (dataClasses) {
i = dataClasses.length;
while (i--) {
dataClass = dataClasses[i];
from = dataClass.from;
to = dataClass.to;
if ((from === undefined || value >= from) && (to === undefined || value <= to)) {
color = dataClass.color;
if (point) {
point.dataClass = i;
point.colorIndex = dataClass.colorIndex;
}
break;
}
}
 
} else {
 
pos = this.normalizedValue(value);
i = stops.length;
while (i--) {
if (pos > stops[i][0]) {
break;
}
}
from = stops[i] || stops[i + 1];
to = stops[i + 1] || from;
 
// The position within the gradient
pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
 
color = from.color.tweenTo(
to.color,
pos
);
}
return color;
},
 
/**
* Override the getOffset method to add the whole axis groups inside the legend.
*/
getOffset: function() {
var group = this.legendGroup,
sideOffset = this.chart.axisOffset[this.side];
 
if (group) {
 
// Hook for the getOffset method to add groups to this parent group
this.axisParent = group;
 
// Call the base
Axis.prototype.getOffset.call(this);
 
// First time only
if (!this.added) {
 
this.added = true;
 
this.labelLeft = 0;
this.labelRight = this.width;
}
// Reset it to avoid color axis reserving space
this.chart.axisOffset[this.side] = sideOffset;
}
},
 
/**
* Create the color gradient
*/
setLegendColor: function() {
var grad,
horiz = this.horiz,
reversed = this.reversed,
one = reversed ? 1 : 0,
zero = reversed ? 0 : 1;
 
grad = horiz ? [one, 0, zero, 0] : [0, zero, 0, one]; // #3190
this.legendColor = {
linearGradient: {
x1: grad[0],
y1: grad[1],
x2: grad[2],
y2: grad[3]
},
stops: this.stops
};
},
 
/**
* The color axis appears inside the legend and has its own legend symbol
*/
drawLegendSymbol: function(legend, item) {
var padding = legend.padding,
legendOptions = legend.options,
horiz = this.horiz,
width = pick(legendOptions.symbolWidth, horiz ? this.defaultLegendLength : 12),
height = pick(legendOptions.symbolHeight, horiz ? 12 : this.defaultLegendLength),
labelPadding = pick(legendOptions.labelPadding, horiz ? 16 : 30),
itemDistance = pick(legendOptions.itemDistance, 10);
 
this.setLegendColor();
 
// Create the gradient
item.legendSymbol = this.chart.renderer.rect(
0,
legend.baseline - 11,
width,
height
).attr({
zIndex: 1
}).add(item.legendGroup);
 
// Set how much space this legend item takes up
this.legendItemWidth = width + padding + (horiz ? itemDistance : labelPadding);
this.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
},
/**
* Fool the legend
*/
setState: noop,
visible: true,
setVisible: noop,
getSeriesExtremes: function() {
var series = this.series,
i = series.length;
this.dataMin = Infinity;
this.dataMax = -Infinity;
while (i--) {
if (series[i].valueMin !== undefined) {
this.dataMin = Math.min(this.dataMin, series[i].valueMin);
this.dataMax = Math.max(this.dataMax, series[i].valueMax);
}
}
},
drawCrosshair: function(e, point) {
var plotX = point && point.plotX,
plotY = point && point.plotY,
crossPos,
axisPos = this.pos,
axisLen = this.len;
 
if (point) {
crossPos = this.toPixels(point[point.series.colorKey]);
if (crossPos < axisPos) {
crossPos = axisPos - 2;
} else if (crossPos > axisPos + axisLen) {
crossPos = axisPos + axisLen + 2;
}
 
point.plotX = crossPos;
point.plotY = this.len - crossPos;
Axis.prototype.drawCrosshair.call(this, e, point);
point.plotX = plotX;
point.plotY = plotY;
 
if (this.cross) {
this.cross
.addClass('highcharts-coloraxis-marker')
.add(this.legendGroup);
 
 
 
}
}
},
getPlotLinePath: function(a, b, c, d, pos) {
return isNumber(pos) ? // crosshairs only // #3969 pos can be 0 !!
(this.horiz ? ['M', pos - 4, this.top - 6, 'L', pos + 4, this.top - 6, pos, this.top, 'Z'] : ['M', this.left, pos, 'L', this.left - 6, pos + 6, this.left - 6, pos - 6, 'Z']) :
Axis.prototype.getPlotLinePath.call(this, a, b, c, d);
},
 
update: function(newOptions, redraw) {
var chart = this.chart,
legend = chart.legend;
 
each(this.series, function(series) {
series.isDirtyData = true; // Needed for Axis.update when choropleth colors change
});
 
// When updating data classes, destroy old items and make sure new ones are created (#3207)
if (newOptions.dataClasses && legend.allItems) {
each(legend.allItems, function(item) {
if (item.isDataClass && item.legendGroup) {
item.legendGroup.destroy();
}
});
chart.isDirtyLegend = true;
}
 
// Keep the options structure updated for export. Unlike xAxis and yAxis, the colorAxis is
// not an array. (#3207)
chart.options[this.coll] = merge(this.userOptions, newOptions);
 
Axis.prototype.update.call(this, newOptions, redraw);
if (this.legendItem) {
this.setLegendColor();
legend.colorizeItem(this, true);
}
},
 
/**
* Extend basic axis remove by also removing the legend item.
*/
remove: function() {
if (this.legendItem) {
this.chart.legend.destroyItem(this);
}
Axis.prototype.remove.call(this);
},
 
/**
* Get the legend item symbols for data classes
*/
getDataClassLegendSymbols: function() {
var axis = this,
chart = this.chart,
legendItems = this.legendItems,
legendOptions = chart.options.legend,
valueDecimals = legendOptions.valueDecimals,
valueSuffix = legendOptions.valueSuffix || '',
name;
 
if (!legendItems.length) {
each(this.dataClasses, function(dataClass, i) {
var vis = true,
from = dataClass.from,
to = dataClass.to;
 
// Assemble the default name. This can be overridden by legend.options.labelFormatter
name = '';
if (from === undefined) {
name = '< ';
} else if (to === undefined) {
name = '> ';
}
if (from !== undefined) {
name += H.numberFormat(from, valueDecimals) + valueSuffix;
}
if (from !== undefined && to !== undefined) {
name += ' - ';
}
if (to !== undefined) {
name += H.numberFormat(to, valueDecimals) + valueSuffix;
}
// Add a mock object to the legend items
legendItems.push(extend({
chart: chart,
name: name,
options: {},
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
visible: true,
setState: noop,
isDataClass: true,
setVisible: function() {
vis = this.visible = !vis;
each(axis.series, function(series) {
each(series.points, function(point) {
if (point.dataClass === i) {
point.setVisible(vis);
}
});
});
 
chart.legend.colorizeItem(this, vis);
}
}, dataClass));
});
}
return legendItems;
},
name: '' // Prevents 'undefined' in legend in IE8
});
 
/**
* Handle animation of the color attributes directly
*/
each(['fill', 'stroke'], function(prop) {
H.Fx.prototype[prop + 'Setter'] = function() {
this.elem.attr(
prop,
color(this.start).tweenTo(
color(this.end),
this.pos
),
null,
true
);
};
});
 
/**
* Extend the chart getAxes method to also get the color axis
*/
wrap(Chart.prototype, 'getAxes', function(proceed) {
 
var options = this.options,
colorAxisOptions = options.colorAxis;
 
proceed.call(this);
 
this.colorAxis = [];
if (colorAxisOptions) {
new ColorAxis(this, colorAxisOptions); // eslint-disable-line no-new
}
});
 
 
/**
* Wrap the legend getAllItems method to add the color axis. This also removes the
* axis' own series to prevent them from showing up individually.
*/
wrap(Legend.prototype, 'getAllItems', function(proceed) {
var allItems = [],
colorAxis = this.chart.colorAxis[0];
 
if (colorAxis && colorAxis.options) {
if (colorAxis.options.showInLegend) {
// Data classes
if (colorAxis.options.dataClasses) {
allItems = allItems.concat(colorAxis.getDataClassLegendSymbols());
// Gradient legend
} else {
// Add this axis on top
allItems.push(colorAxis);
}
}
 
// Don't add the color axis' series
each(colorAxis.series, function(series) {
series.options.showInLegend = false;
});
}
 
return allItems.concat(proceed.call(this));
});
 
wrap(Legend.prototype, 'colorizeItem', function(proceed, item, visible) {
proceed.call(this, item, visible);
if (visible && item.legendColor) {
item.legendSymbol.attr({
fill: item.legendColor
});
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var defined = H.defined,
each = H.each,
noop = H.noop,
seriesTypes = H.seriesTypes;
 
/**
* Mixin for maps and heatmaps
*/
H.colorPointMixin = {
/**
* Color points have a value option that determines whether or not it is a null point
*/
isValid: function() {
return this.value !== null;
},
 
/**
* Set the visibility of a single point
*/
setVisible: function(vis) {
var point = this,
method = vis ? 'show' : 'hide';
 
// Show and hide associated elements
each(['graphic', 'dataLabel'], function(key) {
if (point[key]) {
point[key][method]();
}
});
},
setState: function(state) {
H.Point.prototype.setState.call(this, state);
if (this.graphic) {
this.graphic.attr({
zIndex: state === 'hover' ? 1 : 0
});
}
}
};
 
H.colorSeriesMixin = {
pointArrayMap: ['value'],
axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
optionalAxis: 'colorAxis',
trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
getSymbol: noop,
parallelArrays: ['x', 'y', 'value'],
colorKey: 'value',
 
 
 
/**
* In choropleth maps, the color is a result of the value, so this needs translation too
*/
translateColors: function() {
var series = this,
nullColor = this.options.nullColor,
colorAxis = this.colorAxis,
colorKey = this.colorKey;
 
each(this.data, function(point) {
var value = point[colorKey],
color;
 
color = point.options.color ||
(point.isNull ? nullColor : (colorAxis && value !== undefined) ? colorAxis.toColor(value, point) : point.color || series.color);
 
if (color) {
point.color = color;
}
});
},
 
/**
* Get the color attibutes to apply on the graphic
*/
colorAttribs: function(point) {
var ret = {};
if (defined(point.color)) {
ret[this.colorProp || 'fill'] = point.color;
}
return ret;
}
};
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var colorPointMixin = H.colorPointMixin,
colorSeriesMixin = H.colorSeriesMixin,
each = H.each,
LegendSymbolMixin = H.LegendSymbolMixin,
merge = H.merge,
noop = H.noop,
pick = H.pick,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
// The Heatmap series type
seriesType('heatmap', 'scatter', {
animation: false,
borderWidth: 0,
 
dataLabels: {
formatter: function() { // #2945
return this.point.value;
},
inside: true,
verticalAlign: 'middle',
crop: false,
overflow: false,
padding: 0 // #3837
},
marker: null,
pointRange: null, // dynamically set to colsize by default
tooltip: {
pointFormat: '{point.x}, {point.y}: {point.value}<br/>'
},
states: {
normal: {
animation: true
},
hover: {
halo: false, // #3406, halo is not required on heatmaps
brightness: 0.2
}
}
}, merge(colorSeriesMixin, {
pointArrayMap: ['y', 'value'],
hasPointSpecificOptions: true,
supportsDrilldown: true,
getExtremesFromAll: true,
directTouch: true,
 
/**
* Override the init method to add point ranges on both axes.
*/
init: function() {
var options;
seriesTypes.scatter.prototype.init.apply(this, arguments);
 
options = this.options;
options.pointRange = pick(options.pointRange, options.colsize || 1); // #3758, prevent resetting in setData
this.yAxis.axisPointRange = options.rowsize || 1; // general point range
},
translate: function() {
var series = this,
options = series.options,
xAxis = series.xAxis,
yAxis = series.yAxis,
between = function(x, a, b) {
return Math.min(Math.max(a, x), b);
};
 
series.generatePoints();
 
each(series.points, function(point) {
var xPad = (options.colsize || 1) / 2,
yPad = (options.rowsize || 1) / 2,
x1 = between(Math.round(xAxis.len - xAxis.translate(point.x - xPad, 0, 1, 0, 1)), -xAxis.len, 2 * xAxis.len),
x2 = between(Math.round(xAxis.len - xAxis.translate(point.x + xPad, 0, 1, 0, 1)), -xAxis.len, 2 * xAxis.len),
y1 = between(Math.round(yAxis.translate(point.y - yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len),
y2 = between(Math.round(yAxis.translate(point.y + yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len);
 
// Set plotX and plotY for use in K-D-Tree and more
point.plotX = point.clientX = (x1 + x2) / 2;
point.plotY = (y1 + y2) / 2;
 
point.shapeType = 'rect';
point.shapeArgs = {
x: Math.min(x1, x2),
y: Math.min(y1, y2),
width: Math.abs(x2 - x1),
height: Math.abs(y2 - y1)
};
});
 
series.translateColors();
},
drawPoints: function() {
seriesTypes.column.prototype.drawPoints.call(this);
 
each(this.points, function(point) {
 
// In styled mode, use CSS, otherwise the fill used in the style
// sheet will take precesence over the fill attribute.
point.graphic.css(this.colorAttribs(point));
 
}, this);
},
animate: noop,
getBox: noop,
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
getExtremes: function() {
// Get the extremes from the value data
Series.prototype.getExtremes.call(this, this.valueData);
this.valueMin = this.dataMin;
this.valueMax = this.dataMax;
 
// Get the extremes from the y data
Series.prototype.getExtremes.call(this);
}
 
}), colorPointMixin);
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/map-parser.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":32,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","doc","win","document","each","objectEach","pick","inArray","isNumber","splat","SeriesBuilder","Data","dataOptions","chartOptions","init","extend","prototype","options","columns","rowsToColumns","rows","firstRowAsNames","decimalRegex","decimalPoint","RegExp","rawColumns","length","dataFound","parseCSV","parseTable","parseGoogleSpreadsheet","getColumnDistribution","xColumns","getValueCount","type","seriesTypes","pointArrayMap","globalType","chart","individualCounts","seriesBuilders","seriesIndex","i","series","push","seriesMapping","mapping","x","builder","numberOfValueColumnsNeeded","addColumnReader","val","name","hasReader","undefined","globalPointArrayMap","valueCount","global","individual","switchRowsAndColumns","parseTypes","parsed","complete","self","csv","startRow","endRow","Number","MAX_VALUE","startColumn","endColumn","itemDelimiter","lines","activeRowNo","replace","split","lineDelimiter","indexOf","line","rowNo","trimmed","trim","isComment","items","item","colNo","table","getElementById","getElementsByTagName","tr","children","tagName","innerHTML","googleSpreadsheetKey","gr","gc","jQuery","ajax","dataType","url","googleSpreadsheetWorksheet","error","success","json","cells","feed","entry","cell","cellCount","colCount","rowCount","Math","max","gs$cell","col","row","min","content","$t","column","str","inside","test","parseColumn","floatVal","trimVal","trimInsideVal","isXColumn","backup","descending","columnType","columnTypes","forceCategory","xAxis","parseFloat","isDatetime","isNumeric","dateVal","parseDate","diff","alternativeFormat","dateFormat","dateFormats","alternative","unsorted","mixed","sort","reverse","unshift","pop","regex","parser","match","Date","UTC","ret","key","format","parse","getTime","getTimezoneOffset","rowsLength","colsLength","call","getFreeIndexes","numberOfColumns","freeIndexes","freeIndexValues","referencedIndexes","s","getReferencedColumnIndexes","data","j","allSeriesBuilders","afterComplete","shift","populateColumns","index","splice","readers","typeCol","columnIndex","r","configName","read","turboThreshold","uniqueNames","Highcharts.data","wrap","Chart","proceed","userOptions","callback","hasOwnProperty","merge","pointIsArray","SeriesBuilder.prototype.populateColumns","enoughColumns","reader","SeriesBuilder.prototype.read","rowIndex","point","columnIndexes","value","SeriesBuilder.prototype.addColumnReader","SeriesBuilder.prototype.getReferencedColumnIndexes","referencedColumnIndexes","columnReader","SeriesBuilder.prototype.hasReader","H","svg","loadSVG","pathToArray","path","matrix","position","positions","fixedPoint","startPoint","isRelative","operator","matrixTransform","p","m","a","c","e","b","d","f","isString","toUpperCase","pathToString","arr","join","roundPaths","scale","mapProto","map","fakeSeries","origSize","translate","Axis","minPixelPadding","yAxis","getBox","maxX","minX","maxY","minY","transA","len","translatePath","round","_foundBox","getPathLikeChildren","parent","Array","slice","concat","getPathDefinition","node","nodeName","getAttribute","y","w","h","getTranslate","elem","ctm","getCTM","isNaN","getName","desc","nameTag","innerText","hasFill","handleSVG","xml","currentParent","allPaths","commonLineage","lastCommonAncestor","handleGroups","$frame","$","css","top","appendTo","body","html","removeAttribute","skip","itemLineage","parentNode","g","groupPath","pathHasFill"]
}
/base/000_base/node_modules/highcharts/js/modules/map.js
@@ -0,0 +1,66 @@
/*
Highmaps JS v5.0.12 (2017-05-24)
Highmaps as a plugin for Highcharts 4.1.x or Highstock 2.1.x (x being the patch version of this file)
 
(c) 2011-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(x){"object"===typeof module&&module.exports?module.exports=x:x(Highcharts)})(function(x){(function(a){var h=a.Axis,l=a.each,d=a.pick;a=a.wrap;a(h.prototype,"getSeriesExtremes",function(a){var g=this.isXAxis,n,u,h=[],m;g&&l(this.series,function(a,b){a.useMapGeometry&&(h[b]=a.xData,a.xData=[])});a.call(this);g&&(n=d(this.dataMin,Number.MAX_VALUE),u=d(this.dataMax,-Number.MAX_VALUE),l(this.series,function(a,b){a.useMapGeometry&&(n=Math.min(n,d(a.minX,n)),u=Math.max(u,d(a.maxX,n)),a.xData=h[b],
m=!0)}),m&&(this.dataMin=n,this.dataMax=u))});a(h.prototype,"setAxisTranslation",function(a){var g=this.chart,n=g.plotWidth/g.plotHeight,g=g.xAxis[0],d;a.call(this);"yAxis"===this.coll&&void 0!==g.transA&&l(this.series,function(a){a.preserveAspectRatio&&(d=!0)});if(d&&(this.transA=g.transA=Math.min(this.transA,g.transA),a=n/((g.max-g.min)/(this.max-this.min)),a=1>a?this:g,n=(a.max-a.min)*a.transA,a.pixelPadding=a.len-n,a.minPixelPadding=a.pixelPadding/2,n=a.fixTo)){n=n[1]-a.toValue(n[0],!0);n*=a.transA;
if(Math.abs(n)>a.minPixelPadding||a.min===a.dataMin&&a.max===a.dataMax)n=0;a.minPixelPadding-=n}});a(h.prototype,"render",function(a){a.call(this);this.fixTo=null})})(x);(function(a){var h=a.Axis,l=a.Chart,d=a.color,g,t=a.each,n=a.extend,u=a.isNumber,v=a.Legend,m=a.LegendSymbolMixin,c=a.noop,b=a.merge,e=a.pick,r=a.wrap;g=a.ColorAxis=function(){this.init.apply(this,arguments)};n(g.prototype,h.prototype);n(g.prototype,{defaultColorAxisOptions:{lineWidth:0,minPadding:0,maxPadding:0,gridLineWidth:1,tickPixelInterval:72,
startOnTick:!0,endOnTick:!0,offset:0,marker:{animation:{duration:50},width:.01},labels:{overflow:"justify",rotation:0},minColor:"#e6ebf5",maxColor:"#003399",tickLength:5,showInLegend:!0},keepProps:["legendGroup","legendItemHeight","legendItemWidth","legendItem","legendSymbol"].concat(h.prototype.keepProps),init:function(a,k){var f="vertical"!==a.options.legend.layout,p;this.coll="colorAxis";p=b(this.defaultColorAxisOptions,{side:f?2:1,reversed:!f},k,{opposite:!f,showEmpty:!1,title:null});h.prototype.init.call(this,
a,p);k.dataClasses&&this.initDataClasses(k);this.initStops();this.horiz=f;this.zoomEnabled=!1;this.defaultLegendLength=200},initDataClasses:function(a){var p,f=0,q=this.chart.options.chart.colorCount,w=this.options,e=a.dataClasses.length;this.dataClasses=p=[];this.legendItems=[];t(a.dataClasses,function(a,k){a=b(a);p.push(a);a.color||("category"===w.dataClassColor?(a.colorIndex=f,f++,f===q&&(f=0)):a.color=d(w.minColor).tweenTo(d(w.maxColor),2>e?.5:k/(e-1)))})},initStops:function(){this.stops=this.options.stops||
[[0,this.options.minColor],[1,this.options.maxColor]];t(this.stops,function(a){a.color=d(a[1])})},setOptions:function(a){h.prototype.setOptions.call(this,a);this.options.crosshair=this.options.marker},setAxisSize:function(){var a=this.legendSymbol,k=this.chart,f=k.options.legend||{},q,b;a?(this.left=f=a.attr("x"),this.top=q=a.attr("y"),this.width=b=a.attr("width"),this.height=a=a.attr("height"),this.right=k.chartWidth-f-b,this.bottom=k.chartHeight-q-a,this.len=this.horiz?b:a,this.pos=this.horiz?f:
q):this.len=(this.horiz?f.symbolWidth:f.symbolHeight)||this.defaultLegendLength},normalizedValue:function(a){this.isLog&&(a=this.val2lin(a));return 1-(this.max-a)/(this.max-this.min||1)},toColor:function(a,k){var f=this.stops,q,b,p=this.dataClasses,e,c;if(p)for(c=p.length;c--;){if(e=p[c],q=e.from,f=e.to,(void 0===q||a>=q)&&(void 0===f||a<=f)){b=e.color;k&&(k.dataClass=c,k.colorIndex=e.colorIndex);break}}else{a=this.normalizedValue(a);for(c=f.length;c--&&!(a>f[c][0]););q=f[c]||f[c+1];f=f[c+1]||q;a=
1-(f[0]-a)/(f[0]-q[0]||1);b=q.color.tweenTo(f.color,a)}return b},getOffset:function(){var a=this.legendGroup,k=this.chart.axisOffset[this.side];a&&(this.axisParent=a,h.prototype.getOffset.call(this),this.added||(this.added=!0,this.labelLeft=0,this.labelRight=this.width),this.chart.axisOffset[this.side]=k)},setLegendColor:function(){var a,k=this.reversed;a=k?1:0;k=k?0:1;a=this.horiz?[a,0,k,0]:[0,k,0,a];this.legendColor={linearGradient:{x1:a[0],y1:a[1],x2:a[2],y2:a[3]},stops:this.stops}},drawLegendSymbol:function(a,
k){var f=a.padding,q=a.options,b=this.horiz,c=e(q.symbolWidth,b?this.defaultLegendLength:12),p=e(q.symbolHeight,b?12:this.defaultLegendLength),r=e(q.labelPadding,b?16:30),q=e(q.itemDistance,10);this.setLegendColor();k.legendSymbol=this.chart.renderer.rect(0,a.baseline-11,c,p).attr({zIndex:1}).add(k.legendGroup);this.legendItemWidth=c+f+(b?q:r);this.legendItemHeight=p+f+(b?r:0)},setState:c,visible:!0,setVisible:c,getSeriesExtremes:function(){var a=this.series,b=a.length;this.dataMin=Infinity;for(this.dataMax=
-Infinity;b--;)void 0!==a[b].valueMin&&(this.dataMin=Math.min(this.dataMin,a[b].valueMin),this.dataMax=Math.max(this.dataMax,a[b].valueMax))},drawCrosshair:function(a,b){var f=b&&b.plotX,q=b&&b.plotY,k,e=this.pos,c=this.len;b&&(k=this.toPixels(b[b.series.colorKey]),k<e?k=e-2:k>e+c&&(k=e+c+2),b.plotX=k,b.plotY=this.len-k,h.prototype.drawCrosshair.call(this,a,b),b.plotX=f,b.plotY=q,this.cross&&this.cross.addClass("highcharts-coloraxis-marker").add(this.legendGroup))},getPlotLinePath:function(a,b,f,
q,e){return u(e)?this.horiz?["M",e-4,this.top-6,"L",e+4,this.top-6,e,this.top,"Z"]:["M",this.left,e,"L",this.left-6,e+6,this.left-6,e-6,"Z"]:h.prototype.getPlotLinePath.call(this,a,b,f,q)},update:function(a,e){var f=this.chart,q=f.legend;t(this.series,function(a){a.isDirtyData=!0});a.dataClasses&&q.allItems&&(t(q.allItems,function(a){a.isDataClass&&a.legendGroup&&a.legendGroup.destroy()}),f.isDirtyLegend=!0);f.options[this.coll]=b(this.userOptions,a);h.prototype.update.call(this,a,e);this.legendItem&&
(this.setLegendColor(),q.colorizeItem(this,!0))},remove:function(){this.legendItem&&this.chart.legend.destroyItem(this);h.prototype.remove.call(this)},getDataClassLegendSymbols:function(){var b=this,e=this.chart,f=this.legendItems,q=e.options.legend,r=q.valueDecimals,g=q.valueSuffix||"",d;f.length||t(this.dataClasses,function(q,k){var p=!0,w=q.from,h=q.to;d="";void 0===w?d="\x3c ":void 0===h&&(d="\x3e ");void 0!==w&&(d+=a.numberFormat(w,r)+g);void 0!==w&&void 0!==h&&(d+=" - ");void 0!==h&&(d+=a.numberFormat(h,
r)+g);f.push(n({chart:e,name:d,options:{},drawLegendSymbol:m.drawRectangle,visible:!0,setState:c,isDataClass:!0,setVisible:function(){p=this.visible=!p;t(b.series,function(a){t(a.points,function(a){a.dataClass===k&&a.setVisible(p)})});e.legend.colorizeItem(this,p)}},q))});return f},name:""});t(["fill","stroke"],function(b){a.Fx.prototype[b+"Setter"]=function(){this.elem.attr(b,d(this.start).tweenTo(d(this.end),this.pos),null,!0)}});r(l.prototype,"getAxes",function(a){var b=this.options.colorAxis;
a.call(this);this.colorAxis=[];b&&new g(this,b)});r(v.prototype,"getAllItems",function(a){var b=[],f=this.chart.colorAxis[0];f&&f.options&&(f.options.showInLegend&&(f.options.dataClasses?b=b.concat(f.getDataClassLegendSymbols()):b.push(f)),t(f.series,function(a){a.options.showInLegend=!1}));return b.concat(a.call(this))});r(v.prototype,"colorizeItem",function(a,b,f){a.call(this,b,f);f&&b.legendColor&&b.legendSymbol.attr({fill:b.legendColor})})})(x);(function(a){var h=a.defined,l=a.each,d=a.noop;a.colorPointMixin=
{isValid:function(){return null!==this.value},setVisible:function(a){var g=this,d=a?"show":"hide";l(["graphic","dataLabel"],function(a){if(g[a])g[a][d]()})},setState:function(g){a.Point.prototype.setState.call(this,g);this.graphic&&this.graphic.attr({zIndex:"hover"===g?1:0})}};a.colorSeriesMixin={pointArrayMap:["value"],axisTypes:["xAxis","yAxis","colorAxis"],optionalAxis:"colorAxis",trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:d,parallelArrays:["x","y","value"],colorKey:"value",
translateColors:function(){var a=this,t=this.options.nullColor,d=this.colorAxis,h=this.colorKey;l(this.data,function(g){var m=g[h];if(m=g.options.color||(g.isNull?t:d&&void 0!==m?d.toColor(m,g):g.color||a.color))g.color=m})},colorAttribs:function(a){var g={};h(a.color)&&(g[this.colorProp||"fill"]=a.color);return g}}})(x);(function(a){function h(a){a&&(a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)}function l(a){this.init(a)}var d=a.addEvent,g=a.Chart,
t=a.doc,n=a.each,u=a.extend,v=a.merge,m=a.pick,c=a.wrap;l.prototype.init=function(a){this.chart=a;a.mapNavButtons=[]};l.prototype.update=function(b){var e=this.chart,c=e.options.mapNavigation,p,k=function(a){this.handler.call(e,a);h(a)},f=e.mapNavButtons;b&&(c=e.options.mapNavigation=v(e.options.mapNavigation,b));for(;f.length;)f.pop().destroy();m(c.enableButtons,c.enabled)&&!e.renderer.forExport&&a.objectEach(c.buttons,function(a,b){p=v(c.buttonOptions,a);a=e.renderer.button(p.text,0,0,k,void 0,
void 0,void 0,0,"zoomIn"===b?"topbutton":"bottombutton").addClass("highcharts-map-navigation").attr({width:p.width,height:p.height,title:e.options.lang[b],padding:p.padding,zIndex:5}).add();a.handler=p.onclick;a.align(u(p,{width:a.width,height:2*a.height}),null,p.alignTo);d(a.element,"dblclick",h);f.push(a)});this.updateEvents(c)};l.prototype.updateEvents=function(a){var b=this.chart;m(a.enableDoubleClickZoom,a.enabled)||a.enableDoubleClickZoomTo?this.unbindDblClick=this.unbindDblClick||d(b.container,
"dblclick",function(a){b.pointer.onContainerDblClick(a)}):this.unbindDblClick&&(this.unbindDblClick=this.unbindDblClick());m(a.enableMouseWheelZoom,a.enabled)?this.unbindMouseWheel=this.unbindMouseWheel||d(b.container,void 0===t.onmousewheel?"DOMMouseScroll":"mousewheel",function(a){b.pointer.onContainerMouseWheel(a);h(a);return!1}):this.unbindMouseWheel&&(this.unbindMouseWheel=this.unbindMouseWheel())};u(g.prototype,{fitToBox:function(a,e){n([["x","width"],["y","height"]],function(b){var c=b[0];
b=b[1];a[c]+a[b]>e[c]+e[b]&&(a[b]>e[b]?(a[b]=e[b],a[c]=e[c]):a[c]=e[c]+e[b]-a[b]);a[b]>e[b]&&(a[b]=e[b]);a[c]<e[c]&&(a[c]=e[c])});return a},mapZoom:function(a,c,g,p,k){var f=this.xAxis[0],b=f.max-f.min,e=m(c,f.min+b/2),r=b*a,b=this.yAxis[0],d=b.max-b.min,t=m(g,b.min+d/2),d=d*a,e=this.fitToBox({x:e-r*(p?(p-f.pos)/f.len:.5),y:t-d*(k?(k-b.pos)/b.len:.5),width:r,height:d},{x:f.dataMin,y:b.dataMin,width:f.dataMax-f.dataMin,height:b.dataMax-b.dataMin}),r=e.x<=f.dataMin&&e.width>=f.dataMax-f.dataMin&&e.y<=
b.dataMin&&e.height>=b.dataMax-b.dataMin;p&&(f.fixTo=[p-f.pos,c]);k&&(b.fixTo=[k-b.pos,g]);void 0===a||r?(f.setExtremes(void 0,void 0,!1),b.setExtremes(void 0,void 0,!1)):(f.setExtremes(e.x,e.x+e.width,!1),b.setExtremes(e.y,e.y+e.height,!1));this.redraw()}});c(g.prototype,"render",function(a){this.mapNavigation=new l(this);this.mapNavigation.update();a.call(this)})})(x);(function(a){var h=a.extend,l=a.pick,d=a.Pointer;a=a.wrap;h(d.prototype,{onContainerDblClick:function(a){var g=this.chart;a=this.normalize(a);
g.options.mapNavigation.enableDoubleClickZoomTo?g.pointer.inClass(a.target,"highcharts-tracker")&&g.hoverPoint&&g.hoverPoint.zoomTo():g.isInsidePlot(a.chartX-g.plotLeft,a.chartY-g.plotTop)&&g.mapZoom(.5,g.xAxis[0].toValue(a.chartX),g.yAxis[0].toValue(a.chartY),a.chartX,a.chartY)},onContainerMouseWheel:function(a){var g=this.chart,d;a=this.normalize(a);d=a.detail||-(a.wheelDelta/120);g.isInsidePlot(a.chartX-g.plotLeft,a.chartY-g.plotTop)&&g.mapZoom(Math.pow(g.options.mapNavigation.mouseWheelSensitivity,
d),g.xAxis[0].toValue(a.chartX),g.yAxis[0].toValue(a.chartY),a.chartX,a.chartY)}});a(d.prototype,"zoomOption",function(a){var g=this.chart.options.mapNavigation;l(g.enableTouchZoom,g.enabled)&&(this.chart.options.chart.pinchType="xy");a.apply(this,[].slice.call(arguments,1))});a(d.prototype,"pinchTranslate",function(a,d,h,l,v,m,c){a.call(this,d,h,l,v,m,c);"map"===this.chart.options.chart.type&&this.hasZoom&&(a=l.scaleX>l.scaleY,this.pinchTranslateDirection(!a,d,h,l,v,m,c,a?l.scaleX:l.scaleY))})})(x);
(function(a){var h=a.colorPointMixin,l=a.each,d=a.extend,g=a.isNumber,t=a.map,n=a.merge,u=a.noop,v=a.pick,m=a.isArray,c=a.Point,b=a.Series,e=a.seriesType,r=a.seriesTypes,p=a.splat,k=void 0!==a.doc.documentElement.style.vectorEffect;e("map","scatter",{allAreas:!0,animation:!1,nullColor:"#f7f7f7",borderColor:"#cccccc",borderWidth:1,marker:null,stickyTracking:!1,joinBy:"hc-key",dataLabels:{formatter:function(){return this.point.value},inside:!0,verticalAlign:"middle",crop:!1,overflow:!1,padding:0},turboThreshold:0,
tooltip:{followPointer:!0,pointFormat:"{point.name}: {point.value}\x3cbr/\x3e"},states:{normal:{animation:!0},hover:{brightness:.2,halo:null},select:{color:"#cccccc"}}},n(a.colorSeriesMixin,{type:"map",supportsDrilldown:!0,getExtremesFromAll:!0,useMapGeometry:!0,forceDL:!0,searchPoint:u,directTouch:!0,preserveAspectRatio:!0,pointArrayMap:["value"],getBox:function(f){var b=Number.MAX_VALUE,e=-b,c=b,k=-b,p=b,m=b,d=this.xAxis,r=this.yAxis,h;l(f||[],function(f){if(f.path){"string"===typeof f.path&&(f.path=
a.splitPath(f.path));var q=f.path||[],d=q.length,r=!1,w=-b,l=b,z=-b,n=b,t=f.properties;if(!f._foundBox){for(;d--;)g(q[d])&&(r?(w=Math.max(w,q[d]),l=Math.min(l,q[d])):(z=Math.max(z,q[d]),n=Math.min(n,q[d])),r=!r);f._midX=l+(w-l)*(f.middleX||t&&t["hc-middle-x"]||.5);f._midY=n+(z-n)*(f.middleY||t&&t["hc-middle-y"]||.5);f._maxX=w;f._minX=l;f._maxY=z;f._minY=n;f.labelrank=v(f.labelrank,(w-l)*(z-n));f._foundBox=!0}e=Math.max(e,f._maxX);c=Math.min(c,f._minX);k=Math.max(k,f._maxY);p=Math.min(p,f._minY);m=
Math.min(f._maxX-f._minX,f._maxY-f._minY,m);h=!0}});h&&(this.minY=Math.min(p,v(this.minY,b)),this.maxY=Math.max(k,v(this.maxY,-b)),this.minX=Math.min(c,v(this.minX,b)),this.maxX=Math.max(e,v(this.maxX,-b)),d&&void 0===d.options.minRange&&(d.minRange=Math.min(5*m,(this.maxX-this.minX)/5,d.minRange||b)),r&&void 0===r.options.minRange&&(r.minRange=Math.min(5*m,(this.maxY-this.minY)/5,r.minRange||b)))},getExtremes:function(){b.prototype.getExtremes.call(this,this.valueData);this.chart.hasRendered&&this.isDirtyData&&
this.getBox(this.options.data);this.valueMin=this.dataMin;this.valueMax=this.dataMax;this.dataMin=this.minY;this.dataMax=this.maxY},translatePath:function(a){var f=!1,b=this.xAxis,e=this.yAxis,c=b.min,k=b.transA,b=b.minPixelPadding,p=e.min,m=e.transA,e=e.minPixelPadding,d,r=[];if(a)for(d=a.length;d--;)g(a[d])?(r[d]=f?(a[d]-c)*k+b:(a[d]-p)*m+e,f=!f):r[d]=a[d];return r},setData:function(f,e,c,k){var q=this.options,d=this.chart.options.chart,r=d&&d.map,w=q.mapData,h=q.joinBy,u=null===h,v=q.keys||this.pointArrayMap,
y=[],B={},A=this.chart.mapTransforms;!w&&r&&(w="string"===typeof r?a.maps[r]:r);u&&(h="_i");h=this.joinBy=p(h);h[1]||(h[1]=h[0]);f&&l(f,function(a,b){var e=0;if(g(a))f[b]={value:a};else if(m(a)){f[b]={};!q.keys&&a.length>v.length&&"string"===typeof a[0]&&(f[b]["hc-key"]=a[0],++e);for(var c=0;c<v.length;++c,++e)v[c]&&(f[b][v[c]]=a[e])}u&&(f[b]._i=b)});this.getBox(f);(this.chart.mapTransforms=A=d&&d.mapTransforms||w&&w["hc-transform"]||A)&&a.objectEach(A,function(a){a.rotation&&(a.cosAngle=Math.cos(a.rotation),
a.sinAngle=Math.sin(a.rotation))});if(w){"FeatureCollection"===w.type&&(this.mapTitle=w.title,w=a.geojson(w,this.type,this));this.mapData=w;this.mapMap={};for(A=0;A<w.length;A++)d=w[A],r=d.properties,d._i=A,h[0]&&r&&r[h[0]]&&(d[h[0]]=r[h[0]]),B[d[h[0]]]=d;this.mapMap=B;f&&h[1]&&l(f,function(a){B[a[h[1]]]&&y.push(B[a[h[1]]])});q.allAreas?(this.getBox(w),f=f||[],h[1]&&l(f,function(a){y.push(a[h[1]])}),y="|"+t(y,function(a){return a&&a[h[0]]}).join("|")+"|",l(w,function(a){h[0]&&-1!==y.indexOf("|"+a[h[0]]+
"|")||(f.push(n(a,{value:null})),k=!1)})):this.getBox(y)}b.prototype.setData.call(this,f,e,c,k)},drawGraph:u,drawDataLabels:u,doFullTranslate:function(){return this.isDirtyData||this.chart.isResizing||this.chart.renderer.isVML||!this.baseTrans},translate:function(){var a=this,b=a.xAxis,e=a.yAxis,c=a.doFullTranslate();a.generatePoints();l(a.data,function(f){f.plotX=b.toPixels(f._midX,!0);f.plotY=e.toPixels(f._midY,!0);c&&(f.shapeType="path",f.shapeArgs={d:a.translatePath(f.path)})});a.translateColors()},
pointAttribs:function(a,b){b=this.colorAttribs(a);a.isFading&&delete b.fill;k?b["vector-effect"]="non-scaling-stroke":b["stroke-width"]="inherit";return b},drawPoints:function(){var a=this,b=a.xAxis,e=a.yAxis,c=a.group,d=a.chart,p=d.renderer,m,g,h,n,t=this.baseTrans,y,u,v,x,H;a.transformGroup||(a.transformGroup=p.g().attr({scaleX:1,scaleY:1}).add(c),a.transformGroup.survive=!0);a.doFullTranslate()?(a.group=a.transformGroup,r.column.prototype.drawPoints.apply(a),a.group=c,l(a.points,function(b){b.graphic&&
(b.name&&b.graphic.addClass("highcharts-name-"+b.name.replace(/ /g,"-").toLowerCase()),b.properties&&b.properties["hc-key"]&&b.graphic.addClass("highcharts-key-"+b.properties["hc-key"].toLowerCase()),b.graphic.css(a.pointAttribs(b,b.selected&&"select")))}),this.baseTrans={originX:b.min-b.minPixelPadding/b.transA,originY:e.min-e.minPixelPadding/e.transA+(e.reversed?0:e.len/e.transA),transAX:b.transA,transAY:e.transA},this.transformGroup.animate({translateX:0,translateY:0,scaleX:1,scaleY:1})):(m=b.transA/
t.transAX,g=e.transA/t.transAY,h=b.toPixels(t.originX,!0),n=e.toPixels(t.originY,!0),.99<m&&1.01>m&&.99<g&&1.01>g&&(g=m=1,h=Math.round(h),n=Math.round(n)),y=this.transformGroup,d.renderer.globalAnimation?(u=y.attr("translateX"),v=y.attr("translateY"),x=y.attr("scaleX"),H=y.attr("scaleY"),y.attr({animator:0}).animate({animator:1},{step:function(a,b){y.attr({translateX:u+(h-u)*b.pos,translateY:v+(n-v)*b.pos,scaleX:x+(m-x)*b.pos,scaleY:H+(g-H)*b.pos})}})):y.attr({translateX:h,translateY:n,scaleX:m,scaleY:g}));
k||a.group.element.setAttribute("stroke-width",a.options[a.pointAttrToOptions&&a.pointAttrToOptions["stroke-width"]||"borderWidth"]/(m||1));this.drawMapDataLabels()},drawMapDataLabels:function(){b.prototype.drawDataLabels.call(this);this.dataLabelsGroup&&this.dataLabelsGroup.clip(this.chart.clipRect)},render:function(){var a=this,e=b.prototype.render;a.chart.renderer.isVML&&3E3<a.data.length?setTimeout(function(){e.call(a)}):e.call(a)},animate:function(a){var b=this.options.animation,f=this.group,
e=this.xAxis,c=this.yAxis,k=e.pos,d=c.pos;this.chart.renderer.isSVG&&(!0===b&&(b={duration:1E3}),a?f.attr({translateX:k+e.len/2,translateY:d+c.len/2,scaleX:.001,scaleY:.001}):(f.animate({translateX:k,translateY:d,scaleX:1,scaleY:1},b),this.animate=null))},animateDrilldown:function(a){var b=this.chart.plotBox,f=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1],e=f.bBox,c=this.chart.options.drilldown.animation;a||(a=Math.min(e.width/b.width,e.height/b.height),f.shapeArgs={scaleX:a,scaleY:a,
translateX:e.x,translateY:e.y},l(this.points,function(a){a.graphic&&a.graphic.attr(f.shapeArgs).animate({scaleX:1,scaleY:1,translateX:0,translateY:0},c)}),this.animate=null)},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,animateDrillupFrom:function(a){r.column.prototype.animateDrillupFrom.call(this,a)},animateDrillupTo:function(a){r.column.prototype.animateDrillupTo.call(this,a)}}),d({applyOptions:function(a,b){a=c.prototype.applyOptions.call(this,a,b);b=this.series;var f=b.joinBy;b.mapData&&
((f=void 0!==a[f[1]]&&b.mapMap[a[f[1]]])?(b.xyFromShape&&(a.x=f._midX,a.y=f._midY),d(a,f)):a.value=a.value||null);return a},onMouseOver:function(a){clearTimeout(this.colorInterval);if(null!==this.value||this.series.options.nullInteraction)c.prototype.onMouseOver.call(this,a);else this.series.onMouseOut(a)},zoomTo:function(){var a=this.series;a.xAxis.setExtremes(this._minX,this._maxX,!1);a.yAxis.setExtremes(this._minY,this._maxY,!1);a.chart.redraw()}},h))})(x);(function(a){var h=a.seriesType;h("mapline",
"map",{},{type:"mapline",colorProp:"stroke",drawLegendSymbol:a.seriesTypes.line.prototype.drawLegendSymbol})})(x);(function(a){var h=a.merge,l=a.Point;a=a.seriesType;a("mappoint","scatter",{dataLabels:{enabled:!0,formatter:function(){return this.point.name},crop:!1,defer:!1,overflow:!1,style:{color:"#000000"}}},{type:"mappoint",forceDL:!0},{applyOptions:function(a,g){a=void 0!==a.lat&&void 0!==a.lon?h(a,this.series.chart.fromLatLonToPoint(a)):a;return l.prototype.applyOptions.call(this,a,g)}})})(x);
(function(a){var h=a.arrayMax,l=a.arrayMin,d=a.Axis,g=a.each,t=a.isNumber,n=a.noop,u=a.pick,v=a.pInt,m=a.Point,c=a.seriesType,b=a.seriesTypes;c("bubble","scatter",{dataLabels:{formatter:function(){return this.point.z},inside:!0,verticalAlign:"middle"},marker:{radius:null,states:{hover:{radiusPlus:0}},symbol:"circle"},minSize:8,maxSize:"20%",softThreshold:!1,states:{hover:{halo:{size:5}}},tooltip:{pointFormat:"({point.x}, {point.y}), Size: {point.z}"},turboThreshold:0,zThreshold:0,zoneAxis:"z"},{pointArrayMap:["y",
"z"],parallelArrays:["x","y","z"],trackerGroups:["group","dataLabelsGroup"],specialGroup:"group",bubblePadding:!0,zoneAxis:"z",directTouch:!0,getRadii:function(a,b,c,k){var f,e,d,m=this.zData,g=[],p=this.options,r="width"!==p.sizeBy,h=p.zThreshold,l=b-a;e=0;for(f=m.length;e<f;e++)d=m[e],p.sizeByAbsoluteValue&&null!==d&&(d=Math.abs(d-h),b=Math.max(b-h,Math.abs(a-h)),a=0),null===d?d=null:d<a?d=c/2-1:(d=0<l?(d-a)/l:.5,r&&0<=d&&(d=Math.sqrt(d)),d=Math.ceil(c+d*(k-c))/2),g.push(d);this.radii=g},animate:function(a){var b=
this.options.animation;a||(g(this.points,function(a){var e=a.graphic,f;e&&e.width&&(f={x:e.x,y:e.y,width:e.width,height:e.height},e.attr({x:a.plotX,y:a.plotY,width:1,height:1}),e.animate(f,b))}),this.animate=null)},translate:function(){var e,c=this.data,d,k,f=this.radii;b.scatter.prototype.translate.call(this);for(e=c.length;e--;)d=c[e],k=f?f[e]:0,t(k)&&k>=this.minPxSize/2?(d.marker=a.extend(d.marker,{radius:k,width:2*k,height:2*k}),d.dlBox={x:d.plotX-k,y:d.plotY-k,width:2*k,height:2*k}):d.shapeArgs=
d.plotY=d.dlBox=void 0},alignDataLabel:b.column.prototype.alignDataLabel,buildKDTree:n,applyZones:n},{haloPath:function(a){return m.prototype.haloPath.call(this,0===a?0:(this.marker?this.marker.radius||0:0)+a)},ttBelow:!1});d.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,d=0,f=b,m=this.isXAxis,n=m?"xData":"yData",x=this.min,C={},I=Math.min(c.plotWidth,c.plotHeight),E=Number.MAX_VALUE,F=-Number.MAX_VALUE,z=this.max-x,D=b/z,G=[];g(this.series,function(b){var f=b.options;!b.bubblePadding||
!b.visible&&c.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,G.push(b),m&&(g(["minSize","maxSize"],function(a){var b=f[a],e=/%$/.test(b),b=v(b);C[a]=e?I*b/100:b}),b.minPxSize=C.minSize,b.maxPxSize=Math.max(C.maxSize,C.minSize),b=b.zData,b.length&&(E=u(f.zMin,Math.min(E,Math.max(l(b),!1===f.displayNegative?f.zThreshold:-Number.MAX_VALUE))),F=u(f.zMax,Math.max(F,h(b))))))});g(G,function(b){var e=b[n],c=e.length,k;m&&b.getRadii(E,F,b.minPxSize,b.maxPxSize);if(0<z)for(;c--;)t(e[c])&&a.dataMin<=
e[c]&&e[c]<=a.dataMax&&(k=b.radii[c],d=Math.min((e[c]-x)*D-k,d),f=Math.max((e[c]-x)*D+k,f))});G.length&&0<z&&!this.isLog&&(f-=b,D*=(b+d-f)/b,g([["min","userMin",d],["max","userMax",f]],function(b){void 0===u(a.options[b[0]],a[b[1]])&&(a[b[0]]+=b[2]/D)}))}})(x);(function(a){var h=a.merge,l=a.Point,d=a.seriesType,g=a.seriesTypes;g.bubble&&d("mapbubble","bubble",{animationLimit:500,tooltip:{pointFormat:"{point.name}: {point.z}"}},{xyFromShape:!0,type:"mapbubble",pointArrayMap:["z"],getMapData:g.map.prototype.getMapData,
getBox:g.map.prototype.getBox,setData:g.map.prototype.setData},{applyOptions:function(a,d){return a&&void 0!==a.lat&&void 0!==a.lon?l.prototype.applyOptions.call(this,h(a,this.series.chart.fromLatLonToPoint(a)),d):g.map.prototype.pointClass.prototype.applyOptions.call(this,a,d)},ttBelow:!1})})(x);(function(a){var h=a.colorPointMixin,l=a.each,d=a.merge,g=a.noop,t=a.pick,n=a.Series,u=a.seriesType,v=a.seriesTypes;u("heatmap","scatter",{animation:!1,borderWidth:0,dataLabels:{formatter:function(){return this.point.value},
inside:!0,verticalAlign:"middle",crop:!1,overflow:!1,padding:0},marker:null,pointRange:null,tooltip:{pointFormat:"{point.x}, {point.y}: {point.value}\x3cbr/\x3e"},states:{normal:{animation:!0},hover:{halo:!1,brightness:.2}}},d(a.colorSeriesMixin,{pointArrayMap:["y","value"],hasPointSpecificOptions:!0,supportsDrilldown:!0,getExtremesFromAll:!0,directTouch:!0,init:function(){var a;v.scatter.prototype.init.apply(this,arguments);a=this.options;a.pointRange=t(a.pointRange,a.colsize||1);this.yAxis.axisPointRange=
a.rowsize||1},translate:function(){var a=this.options,c=this.xAxis,b=this.yAxis,e=function(a,b,e){return Math.min(Math.max(b,a),e)};this.generatePoints();l(this.points,function(d){var g=(a.colsize||1)/2,k=(a.rowsize||1)/2,f=e(Math.round(c.len-c.translate(d.x-g,0,1,0,1)),-c.len,2*c.len),g=e(Math.round(c.len-c.translate(d.x+g,0,1,0,1)),-c.len,2*c.len),m=e(Math.round(b.translate(d.y-k,0,1,0,1)),-b.len,2*b.len),k=e(Math.round(b.translate(d.y+k,0,1,0,1)),-b.len,2*b.len);d.plotX=d.clientX=(f+g)/2;d.plotY=
(m+k)/2;d.shapeType="rect";d.shapeArgs={x:Math.min(f,g),y:Math.min(m,k),width:Math.abs(g-f),height:Math.abs(k-m)}});this.translateColors()},drawPoints:function(){v.column.prototype.drawPoints.call(this);l(this.points,function(a){a.graphic.css(this.colorAttribs(a))},this)},animate:g,getBox:g,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,alignDataLabel:v.column.prototype.alignDataLabel,getExtremes:function(){n.prototype.getExtremes.call(this,this.valueData);this.valueMin=this.dataMin;this.valueMax=
this.dataMax;n.prototype.getExtremes.call(this)}}),h)})(x);(function(a){function h(a,c){var b,e,d,g=!1,k=a.x,f=a.y;a=0;for(b=c.length-1;a<c.length;b=a++)e=c[a][1]>f,d=c[b][1]>f,e!==d&&k<(c[b][0]-c[a][0])*(f-c[a][1])/(c[b][1]-c[a][1])+c[a][0]&&(g=!g);return g}var l=a.Chart,d=a.each,g=a.extend,t=a.format,n=a.merge,u=a.win,v=a.wrap;l.prototype.transformFromLatLon=function(d,c){if(void 0===u.proj4)return a.error(21),{x:0,y:null};d=u.proj4(c.crs,[d.lon,d.lat]);var b=c.cosAngle||c.rotation&&Math.cos(c.rotation),
e=c.sinAngle||c.rotation&&Math.sin(c.rotation);d=c.rotation?[d[0]*b+d[1]*e,-d[0]*e+d[1]*b]:d;return{x:((d[0]-(c.xoffset||0))*(c.scale||1)+(c.xpan||0))*(c.jsonres||1)+(c.jsonmarginX||0),y:(((c.yoffset||0)-d[1])*(c.scale||1)+(c.ypan||0))*(c.jsonres||1)-(c.jsonmarginY||0)}};l.prototype.transformToLatLon=function(d,c){if(void 0===u.proj4)a.error(21);else{d={x:((d.x-(c.jsonmarginX||0))/(c.jsonres||1)-(c.xpan||0))/(c.scale||1)+(c.xoffset||0),y:((-d.y-(c.jsonmarginY||0))/(c.jsonres||1)+(c.ypan||0))/(c.scale||
1)+(c.yoffset||0)};var b=c.cosAngle||c.rotation&&Math.cos(c.rotation),e=c.sinAngle||c.rotation&&Math.sin(c.rotation);c=u.proj4(c.crs,"WGS84",c.rotation?{x:d.x*b+d.y*-e,y:d.x*e+d.y*b}:d);return{lat:c.y,lon:c.x}}};l.prototype.fromPointToLatLon=function(d){var c=this.mapTransforms,b;if(c){for(b in c)if(c.hasOwnProperty(b)&&c[b].hitZone&&h({x:d.x,y:-d.y},c[b].hitZone.coordinates[0]))return this.transformToLatLon(d,c[b]);return this.transformToLatLon(d,c["default"])}a.error(22)};l.prototype.fromLatLonToPoint=
function(d){var c=this.mapTransforms,b,e;if(!c)return a.error(22),{x:0,y:null};for(b in c)if(c.hasOwnProperty(b)&&c[b].hitZone&&(e=this.transformFromLatLon(d,c[b]),h({x:e.x,y:-e.y},c[b].hitZone.coordinates[0])))return e;return this.transformFromLatLon(d,c["default"])};a.geojson=function(a,c,b){var e=[],h=[],p=function(a){var b,e=a.length;h.push("M");for(b=0;b<e;b++)1===b&&h.push("L"),h.push(a[b][0],-a[b][1])};c=c||"map";d(a.features,function(a){var b=a.geometry,k=b.type,b=b.coordinates;a=a.properties;
var l;h=[];"map"===c||"mapbubble"===c?("Polygon"===k?(d(b,p),h.push("Z")):"MultiPolygon"===k&&(d(b,function(a){d(a,p)}),h.push("Z")),h.length&&(l={path:h})):"mapline"===c?("LineString"===k?p(b):"MultiLineString"===k&&d(b,p),h.length&&(l={path:h})):"mappoint"===c&&"Point"===k&&(l={x:b[0],y:-b[1]});l&&e.push(g(l,{name:a.name||a.NAME,properties:a}))});b&&a.copyrightShort&&(b.chart.mapCredits=t(b.chart.options.credits.mapText,{geojson:a}),b.chart.mapCreditsFull=t(b.chart.options.credits.mapTextFull,{geojson:a}));
return e};v(l.prototype,"addCredits",function(a,c){c=n(!0,this.options.credits,c);this.mapCredits&&(c.href=null);a.call(this,c);this.credits&&this.mapCreditsFull&&this.credits.attr({title:this.mapCreditsFull})})})(x);(function(a){function h(a,e,c,d,g,f,h,l){return["M",a+g,e,"L",a+c-f,e,"C",a+c-f/2,e,a+c,e+f/2,a+c,e+f,"L",a+c,e+d-h,"C",a+c,e+d-h/2,a+c-h/2,e+d,a+c-h,e+d,"L",a+l,e+d,"C",a+l/2,e+d,a,e+d-l/2,a,e+d-l,"L",a,e+g,"C",a,e+g/2,a+g/2,e,a+g,e,"Z"]}var l=a.Chart,d=a.defaultOptions,g=a.each,t=a.extend,
n=a.merge,u=a.pick,v=a.Renderer,m=a.SVGRenderer,c=a.VMLRenderer;t(d.lang,{zoomIn:"Zoom in",zoomOut:"Zoom out"});d.mapNavigation={buttonOptions:{alignTo:"plotBox",align:"left",verticalAlign:"top",x:0,width:18,height:18,padding:5},buttons:{zoomIn:{onclick:function(){this.mapZoom(.5)},text:"+",y:0},zoomOut:{onclick:function(){this.mapZoom(2)},text:"-",y:28}},mouseWheelSensitivity:1.1};a.splitPath=function(a){var b;a=a.replace(/([A-Za-z])/g," $1 ");a=a.replace(/^\s*/,"").replace(/\s*$/,"");a=a.split(/[ ,]+/);
for(b=0;b<a.length;b++)/[a-zA-Z]/.test(a[b])||(a[b]=parseFloat(a[b]));return a};a.maps={};m.prototype.symbols.topbutton=function(a,c,d,g,k){return h(a-1,c-1,d,g,k.r,k.r,0,0)};m.prototype.symbols.bottombutton=function(a,c,d,g,k){return h(a-1,c-1,d,g,0,0,k.r,k.r)};v===c&&g(["topbutton","bottombutton"],function(a){c.prototype.symbols[a]=m.prototype.symbols[a]});a.Map=a.mapChart=function(b,c,d){var e="string"===typeof b||b.nodeName,g=arguments[e?1:0],f={endOnTick:!1,visible:!1,minPadding:0,maxPadding:0,
startOnTick:!1},h,m=a.getOptions().credits;h=g.series;g.series=null;g=n({chart:{panning:"xy",type:"map"},credits:{mapText:u(m.mapText,' \u00a9 \x3ca href\x3d"{geojson.copyrightUrl}"\x3e{geojson.copyrightShort}\x3c/a\x3e'),mapTextFull:u(m.mapTextFull,"{geojson.copyright}")},tooltip:{followTouchMove:!1},xAxis:f,yAxis:n(f,{reversed:!0})},g,{chart:{inverted:!1,alignTicks:!1}});g.series=h;return e?new l(b,g,d):new l(g,c)}})(x)});
/base/000_base/node_modules/highcharts/js/modules/map.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":66,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","Axis","each","pick","wrap","prototype","proceed","isXAxis","dataMin","dataMax","xData","useMapGeometry","series","i","call","Number","MAX_VALUE","Math","min","minX","max","maxX","chart","plotRatio","plotWidth","plotHeight","xAxis","preserveAspectRatio","coll","undefined","transA","fixTo","mapRatio","padAxis","adjustedAxisLength","pixelPadding","len","minPixelPadding","fixDiff","toValue","abs","Chart","color","ColorAxis","extend","isNumber","Legend","LegendSymbolMixin","noop","merge","H.ColorAxis","init","apply","arguments","defaultColorAxisOptions","lineWidth","minPadding","maxPadding","gridLineWidth","tickPixelInterval","startOnTick","endOnTick","offset","marker","animation","duration","width","labels","overflow","rotation","minColor","maxColor","tickLength","showInLegend","keepProps","concat","userOptions","horiz","options","legend","layout","side","reversed","opposite","showEmpty","title","dataClasses","initDataClasses","initStops","zoomEnabled","defaultLegendLength","colorCounter","colorCount","length","legendItems","dataClass","push","dataClassColor","colorIndex","tweenTo","stops","stop","setOptions","crosshair","setAxisSize","symbol","legendSymbol","legendOptions","y","left","x","attr","top","height","right","chartWidth","bottom","chartHeight","pos","symbolWidth","symbolHeight","normalizedValue","value","isLog","val2lin","toColor","point","from","to","getOffset","group","legendGroup","sideOffset","axisOffset","axisParent","added","labelLeft","labelRight","setLegendColor","grad","one","zero","legendColor","linearGradient","x1","y1","x2","y2","drawLegendSymbol","item","padding","labelPadding","itemDistance","renderer","rect","baseline","zIndex","add","legendItemWidth","legendItemHeight","setState","visible","setVisible","getSeriesExtremes","Infinity","valueMin","valueMax","drawCrosshair","e","plotX","plotY","crossPos","axisPos","axisLen","toPixels","colorKey","cross","addClass","getPlotLinePath","a","b","c","d","update","newOptions","redraw","isDirtyData","allItems","isDataClass","destroy","isDirtyLegend","legendItem","colorizeItem","remove","destroyItem","getDataClassLegendSymbols","axis","valueDecimals","valueSuffix","name","vis","numberFormat","drawRectangle","points","prop","Fx","elem","start","end","colorAxisOptions","colorAxis","fill","defined","colorPointMixin","isValid","method","key","state","Point","graphic","colorSeriesMixin","pointArrayMap","axisTypes","optionalAxis","trackerGroups","getSymbol","parallelArrays","translateColors","nullColor","data","isNull","colorAttribs","ret","colorProp","stopEvent","preventDefault","stopPropagation","cancelBubble","MapNavigation","addEvent","doc","MapNavigation.prototype.init","mapNavButtons","MapNavigation.prototype.update","o","mapNavigation","buttonOptions","outerHandler","handler","pop","enableButtons","enabled","forExport","objectEach","buttons","button","n","text","hoverStates","selectStates","lang","onclick","align","alignTo","element","updateEvents","MapNavigation.prototype.updateEvents","enableDoubleClickZoom","enableDoubleClickZoomTo","unbindDblClick","container","pointer","onContainerDblClick","enableMouseWheelZoom","unbindMouseWheel","onmousewheel","onContainerMouseWheel","fitToBox","inner","outer","dim","size","mapZoom","howMuch","centerXArg","centerYArg","mouseX","mouseY","xRange","centerX","newXRange","yAxis","yRange","centerY","newYRange","newExt","fixToX","fixToY","zoomOut","setExtremes","Pointer","normalize","inClass","target","hoverPoint","zoomTo","isInsidePlot","chartX","plotLeft","chartY","plotTop","delta","detail","wheelDelta","pow","mouseWheelSensitivity","enableTouchZoom","pinchType","slice","pinchDown","touches","transform","selectionMarker","clip","lastValidTouch","type","hasZoom","xBigger","scaleX","scaleY","pinchTranslateDirection","map","isArray","Series","seriesType","seriesTypes","splat","supportsVectorEffect","documentElement","style","vectorEffect","allAreas","borderColor","borderWidth","stickyTracking","joinBy","dataLabels","formatter","inside","verticalAlign","crop","turboThreshold","tooltip","followPointer","pointFormat","states","normal","hover","brightness","halo","select","supportsDrilldown","getExtremesFromAll","forceDL","searchPoint","directTouch","getBox","paths","maxY","minY","minRange","hasBox","path","splitPath","even","pointMaxX","pointMinX","pointMaxY","pointMinY","properties","_foundBox","_midX","middleX","_midY","middleY","_maxX","_minX","_maxY","_minY","labelrank","getExtremes","valueData","hasRendered","translatePath","xMin","xTransA","xMinPixelPadding","yMin","yTransA","yMinPixelPadding","setData","updatePoints","chartOptions","globalMapData","mapData","joinByNull","keys","dataUsed","mapMap","mapTransforms","maps","val","ix","j","_i","cosAngle","cos","sinAngle","sin","mapTitle","geojson","mapPoint","props","join","indexOf","drawGraph","drawDataLabels","doFullTranslate","isResizing","isVML","baseTrans","translate","generatePoints","shapeType","shapeArgs","pointAttribs","isFading","drawPoints","translateX","translateY","transformGroup","startTranslateX","startTranslateY","startScaleX","startScaleY","g","survive","column","replace","toLowerCase","css","selected","originX","originY","transAX","transAY","animate","round","globalAnimation","animator","step","now","fx","setAttribute","pointAttrToOptions","drawMapDataLabels","dataLabelsGroup","clipRect","render","setTimeout","isSVG","animateDrilldown","toBox","plotBox","level","drilldownLevels","fromBox","bBox","animationOptions","drilldown","scale","animateDrillupFrom","animateDrillupTo","applyOptions","xyFromShape","onMouseOver","clearTimeout","colorInterval","nullInteraction","onMouseOut","line","defer","mergedOptions","lat","lon","fromLatLonToPoint","arrayMax","arrayMin","pInt","z","radius","radiusPlus","minSize","maxSize","softThreshold","zThreshold","zoneAxis","specialGroup","bubblePadding","getRadii","zMin","zMax","zData","radii","sizeByArea","sizeBy","zRange","sizeByAbsoluteValue","sqrt","ceil","animationTarget","scatter","minPxSize","dlBox","alignDataLabel","buildKDTree","applyZones","haloPath","ttBelow","beforePadding","Axis.prototype.beforePadding","axisLength","pxMin","pxMax","dataKey","extremes","smallestSize","range","activeSeries","seriesOptions","ignoreHiddenSeries","allowZoomOutside","isPercent","test","maxPxSize","displayNegative","bubble","animationLimit","getMapData","pointClass","pointRange","hasPointSpecificOptions","colsize","axisPointRange","rowsize","between","xPad","yPad","clientX","pointInPolygon","polygon","rel1","rel2","format","win","transformFromLatLon","Chart.prototype.transformFromLatLon","latLon","proj4","error","projected","crs","rotated","xoffset","xpan","jsonres","jsonmarginX","yoffset","ypan","jsonmarginY","transformToLatLon","Chart.prototype.transformToLatLon","normalized","fromPointToLatLon","Chart.prototype.fromPointToLatLon","transforms","hasOwnProperty","hitZone","coordinates","Chart.prototype.fromLatLonToPoint","coords","H.geojson","hType","polygonToPath","features","feature","geometry","items","NAME","copyrightShort","mapCredits","credits","mapText","mapCreditsFull","mapTextFull","href","selectiveRoundedRect","w","h","rTopLeft","rTopRight","rBottomRight","rBottomLeft","defaultOptions","Renderer","SVGRenderer","VMLRenderer","zoomIn","H.splitPath","split","parseFloat","symbols","topbutton","SVGRenderer.prototype.symbols.topbutton","r","bottombutton","SVGRenderer.prototype.symbols.bottombutton","shape","Map","mapChart","H.mapChart","hasRenderToArg","nodeName","hiddenAxis","defaultCreditsOptions","getOptions","panning","followTouchMove","inverted","alignTicks"]
}
/base/000_base/node_modules/highcharts/js/modules/map.src.js
@@ -0,0 +1,3135 @@
/**
* @license Highmaps JS v5.0.12 (2017-05-24)
* Highmaps as a plugin for Highcharts 4.1.x or Highstock 2.1.x (x being the patch version of this file)
*
* (c) 2011-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Axis = H.Axis,
each = H.each,
pick = H.pick,
wrap = H.wrap;
/**
* Override to use the extreme coordinates from the SVG shape, not the
* data values
*/
wrap(Axis.prototype, 'getSeriesExtremes', function(proceed) {
var isXAxis = this.isXAxis,
dataMin,
dataMax,
xData = [],
useMapGeometry;
 
// Remove the xData array and cache it locally so that the proceed method doesn't use it
if (isXAxis) {
each(this.series, function(series, i) {
if (series.useMapGeometry) {
xData[i] = series.xData;
series.xData = [];
}
});
}
 
// Call base to reach normal cartesian series (like mappoint)
proceed.call(this);
 
// Run extremes logic for map and mapline
if (isXAxis) {
dataMin = pick(this.dataMin, Number.MAX_VALUE);
dataMax = pick(this.dataMax, -Number.MAX_VALUE);
each(this.series, function(series, i) {
if (series.useMapGeometry) {
dataMin = Math.min(dataMin, pick(series.minX, dataMin));
dataMax = Math.max(dataMax, pick(series.maxX, dataMin));
series.xData = xData[i]; // Reset xData array
useMapGeometry = true;
}
});
if (useMapGeometry) {
this.dataMin = dataMin;
this.dataMax = dataMax;
}
}
});
 
/**
* Override axis translation to make sure the aspect ratio is always kept
*/
wrap(Axis.prototype, 'setAxisTranslation', function(proceed) {
var chart = this.chart,
mapRatio,
plotRatio = chart.plotWidth / chart.plotHeight,
adjustedAxisLength,
xAxis = chart.xAxis[0],
padAxis,
fixTo,
fixDiff,
preserveAspectRatio;
 
 
// Run the parent method
proceed.call(this);
 
// Check for map-like series
if (this.coll === 'yAxis' && xAxis.transA !== undefined) {
each(this.series, function(series) {
if (series.preserveAspectRatio) {
preserveAspectRatio = true;
}
});
}
 
// On Y axis, handle both
if (preserveAspectRatio) {
 
// Use the same translation for both axes
this.transA = xAxis.transA = Math.min(this.transA, xAxis.transA);
 
mapRatio = plotRatio / ((xAxis.max - xAxis.min) / (this.max - this.min));
 
// What axis to pad to put the map in the middle
padAxis = mapRatio < 1 ? this : xAxis;
 
// Pad it
adjustedAxisLength = (padAxis.max - padAxis.min) * padAxis.transA;
padAxis.pixelPadding = padAxis.len - adjustedAxisLength;
padAxis.minPixelPadding = padAxis.pixelPadding / 2;
 
fixTo = padAxis.fixTo;
if (fixTo) {
fixDiff = fixTo[1] - padAxis.toValue(fixTo[0], true);
fixDiff *= padAxis.transA;
if (Math.abs(fixDiff) > padAxis.minPixelPadding || (padAxis.min === padAxis.dataMin && padAxis.max === padAxis.dataMax)) { // zooming out again, keep within restricted area
fixDiff = 0;
}
padAxis.minPixelPadding -= fixDiff;
}
}
});
 
/**
* Override Axis.render in order to delete the fixTo prop
*/
wrap(Axis.prototype, 'render', function(proceed) {
proceed.call(this);
this.fixTo = null;
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Axis = H.Axis,
Chart = H.Chart,
color = H.color,
ColorAxis,
each = H.each,
extend = H.extend,
isNumber = H.isNumber,
Legend = H.Legend,
LegendSymbolMixin = H.LegendSymbolMixin,
noop = H.noop,
merge = H.merge,
pick = H.pick,
wrap = H.wrap;
 
/**
* The ColorAxis object for inclusion in gradient legends
*/
ColorAxis = H.ColorAxis = function() {
this.init.apply(this, arguments);
};
extend(ColorAxis.prototype, Axis.prototype);
extend(ColorAxis.prototype, {
defaultColorAxisOptions: {
lineWidth: 0,
minPadding: 0,
maxPadding: 0,
gridLineWidth: 1,
tickPixelInterval: 72,
startOnTick: true,
endOnTick: true,
offset: 0,
marker: {
animation: {
duration: 50
},
width: 0.01
 
},
labels: {
overflow: 'justify',
rotation: 0
},
minColor: '#e6ebf5',
maxColor: '#003399',
tickLength: 5,
showInLegend: true
},
 
// Properties to preserve after destroy, for Axis.update (#5881, #6025)
keepProps: [
'legendGroup',
'legendItemHeight',
'legendItemWidth',
'legendItem',
'legendSymbol'
].concat(Axis.prototype.keepProps),
 
/**
* Initialize the color axis
*/
init: function(chart, userOptions) {
var horiz = chart.options.legend.layout !== 'vertical',
options;
 
this.coll = 'colorAxis';
 
// Build the options
options = merge(this.defaultColorAxisOptions, {
side: horiz ? 2 : 1,
reversed: !horiz
}, userOptions, {
opposite: !horiz,
showEmpty: false,
title: null
});
 
Axis.prototype.init.call(this, chart, options);
 
// Base init() pushes it to the xAxis array, now pop it again
//chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
 
// Prepare data classes
if (userOptions.dataClasses) {
this.initDataClasses(userOptions);
}
this.initStops();
 
// Override original axis properties
this.horiz = horiz;
this.zoomEnabled = false;
 
// Add default values
this.defaultLegendLength = 200;
},
 
initDataClasses: function(userOptions) {
var chart = this.chart,
dataClasses,
colorCounter = 0,
colorCount = chart.options.chart.colorCount,
options = this.options,
len = userOptions.dataClasses.length;
this.dataClasses = dataClasses = [];
this.legendItems = [];
 
each(userOptions.dataClasses, function(dataClass, i) {
var colors;
 
dataClass = merge(dataClass);
dataClasses.push(dataClass);
if (!dataClass.color) {
if (options.dataClassColor === 'category') {
 
dataClass.colorIndex = colorCounter;
 
// increase and loop back to zero
colorCounter++;
if (colorCounter === colorCount) {
colorCounter = 0;
}
} else {
dataClass.color = color(options.minColor).tweenTo(
color(options.maxColor),
len < 2 ? 0.5 : i / (len - 1) // #3219
);
}
}
});
},
 
initStops: function() {
this.stops = this.options.stops || [
[0, this.options.minColor],
[1, this.options.maxColor]
];
each(this.stops, function(stop) {
stop.color = color(stop[1]);
});
},
 
/**
* Extend the setOptions method to process extreme colors and color
* stops.
*/
setOptions: function(userOptions) {
Axis.prototype.setOptions.call(this, userOptions);
 
this.options.crosshair = this.options.marker;
},
 
setAxisSize: function() {
var symbol = this.legendSymbol,
chart = this.chart,
legendOptions = chart.options.legend || {},
x,
y,
width,
height;
 
if (symbol) {
this.left = x = symbol.attr('x');
this.top = y = symbol.attr('y');
this.width = width = symbol.attr('width');
this.height = height = symbol.attr('height');
this.right = chart.chartWidth - x - width;
this.bottom = chart.chartHeight - y - height;
 
this.len = this.horiz ? width : height;
this.pos = this.horiz ? x : y;
} else {
// Fake length for disabled legend to avoid tick issues and such (#5205)
this.len = (this.horiz ? legendOptions.symbolWidth : legendOptions.symbolHeight) || this.defaultLegendLength;
}
},
 
normalizedValue: function(value) {
if (this.isLog) {
value = this.val2lin(value);
}
return 1 - ((this.max - value) / ((this.max - this.min) || 1));
},
 
/**
* Translate from a value to a color
*/
toColor: function(value, point) {
var pos,
stops = this.stops,
from,
to,
color,
dataClasses = this.dataClasses,
dataClass,
i;
 
if (dataClasses) {
i = dataClasses.length;
while (i--) {
dataClass = dataClasses[i];
from = dataClass.from;
to = dataClass.to;
if ((from === undefined || value >= from) && (to === undefined || value <= to)) {
color = dataClass.color;
if (point) {
point.dataClass = i;
point.colorIndex = dataClass.colorIndex;
}
break;
}
}
 
} else {
 
pos = this.normalizedValue(value);
i = stops.length;
while (i--) {
if (pos > stops[i][0]) {
break;
}
}
from = stops[i] || stops[i + 1];
to = stops[i + 1] || from;
 
// The position within the gradient
pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
 
color = from.color.tweenTo(
to.color,
pos
);
}
return color;
},
 
/**
* Override the getOffset method to add the whole axis groups inside the legend.
*/
getOffset: function() {
var group = this.legendGroup,
sideOffset = this.chart.axisOffset[this.side];
 
if (group) {
 
// Hook for the getOffset method to add groups to this parent group
this.axisParent = group;
 
// Call the base
Axis.prototype.getOffset.call(this);
 
// First time only
if (!this.added) {
 
this.added = true;
 
this.labelLeft = 0;
this.labelRight = this.width;
}
// Reset it to avoid color axis reserving space
this.chart.axisOffset[this.side] = sideOffset;
}
},
 
/**
* Create the color gradient
*/
setLegendColor: function() {
var grad,
horiz = this.horiz,
reversed = this.reversed,
one = reversed ? 1 : 0,
zero = reversed ? 0 : 1;
 
grad = horiz ? [one, 0, zero, 0] : [0, zero, 0, one]; // #3190
this.legendColor = {
linearGradient: {
x1: grad[0],
y1: grad[1],
x2: grad[2],
y2: grad[3]
},
stops: this.stops
};
},
 
/**
* The color axis appears inside the legend and has its own legend symbol
*/
drawLegendSymbol: function(legend, item) {
var padding = legend.padding,
legendOptions = legend.options,
horiz = this.horiz,
width = pick(legendOptions.symbolWidth, horiz ? this.defaultLegendLength : 12),
height = pick(legendOptions.symbolHeight, horiz ? 12 : this.defaultLegendLength),
labelPadding = pick(legendOptions.labelPadding, horiz ? 16 : 30),
itemDistance = pick(legendOptions.itemDistance, 10);
 
this.setLegendColor();
 
// Create the gradient
item.legendSymbol = this.chart.renderer.rect(
0,
legend.baseline - 11,
width,
height
).attr({
zIndex: 1
}).add(item.legendGroup);
 
// Set how much space this legend item takes up
this.legendItemWidth = width + padding + (horiz ? itemDistance : labelPadding);
this.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
},
/**
* Fool the legend
*/
setState: noop,
visible: true,
setVisible: noop,
getSeriesExtremes: function() {
var series = this.series,
i = series.length;
this.dataMin = Infinity;
this.dataMax = -Infinity;
while (i--) {
if (series[i].valueMin !== undefined) {
this.dataMin = Math.min(this.dataMin, series[i].valueMin);
this.dataMax = Math.max(this.dataMax, series[i].valueMax);
}
}
},
drawCrosshair: function(e, point) {
var plotX = point && point.plotX,
plotY = point && point.plotY,
crossPos,
axisPos = this.pos,
axisLen = this.len;
 
if (point) {
crossPos = this.toPixels(point[point.series.colorKey]);
if (crossPos < axisPos) {
crossPos = axisPos - 2;
} else if (crossPos > axisPos + axisLen) {
crossPos = axisPos + axisLen + 2;
}
 
point.plotX = crossPos;
point.plotY = this.len - crossPos;
Axis.prototype.drawCrosshair.call(this, e, point);
point.plotX = plotX;
point.plotY = plotY;
 
if (this.cross) {
this.cross
.addClass('highcharts-coloraxis-marker')
.add(this.legendGroup);
 
 
 
}
}
},
getPlotLinePath: function(a, b, c, d, pos) {
return isNumber(pos) ? // crosshairs only // #3969 pos can be 0 !!
(this.horiz ? ['M', pos - 4, this.top - 6, 'L', pos + 4, this.top - 6, pos, this.top, 'Z'] : ['M', this.left, pos, 'L', this.left - 6, pos + 6, this.left - 6, pos - 6, 'Z']) :
Axis.prototype.getPlotLinePath.call(this, a, b, c, d);
},
 
update: function(newOptions, redraw) {
var chart = this.chart,
legend = chart.legend;
 
each(this.series, function(series) {
series.isDirtyData = true; // Needed for Axis.update when choropleth colors change
});
 
// When updating data classes, destroy old items and make sure new ones are created (#3207)
if (newOptions.dataClasses && legend.allItems) {
each(legend.allItems, function(item) {
if (item.isDataClass && item.legendGroup) {
item.legendGroup.destroy();
}
});
chart.isDirtyLegend = true;
}
 
// Keep the options structure updated for export. Unlike xAxis and yAxis, the colorAxis is
// not an array. (#3207)
chart.options[this.coll] = merge(this.userOptions, newOptions);
 
Axis.prototype.update.call(this, newOptions, redraw);
if (this.legendItem) {
this.setLegendColor();
legend.colorizeItem(this, true);
}
},
 
/**
* Extend basic axis remove by also removing the legend item.
*/
remove: function() {
if (this.legendItem) {
this.chart.legend.destroyItem(this);
}
Axis.prototype.remove.call(this);
},
 
/**
* Get the legend item symbols for data classes
*/
getDataClassLegendSymbols: function() {
var axis = this,
chart = this.chart,
legendItems = this.legendItems,
legendOptions = chart.options.legend,
valueDecimals = legendOptions.valueDecimals,
valueSuffix = legendOptions.valueSuffix || '',
name;
 
if (!legendItems.length) {
each(this.dataClasses, function(dataClass, i) {
var vis = true,
from = dataClass.from,
to = dataClass.to;
 
// Assemble the default name. This can be overridden by legend.options.labelFormatter
name = '';
if (from === undefined) {
name = '< ';
} else if (to === undefined) {
name = '> ';
}
if (from !== undefined) {
name += H.numberFormat(from, valueDecimals) + valueSuffix;
}
if (from !== undefined && to !== undefined) {
name += ' - ';
}
if (to !== undefined) {
name += H.numberFormat(to, valueDecimals) + valueSuffix;
}
// Add a mock object to the legend items
legendItems.push(extend({
chart: chart,
name: name,
options: {},
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
visible: true,
setState: noop,
isDataClass: true,
setVisible: function() {
vis = this.visible = !vis;
each(axis.series, function(series) {
each(series.points, function(point) {
if (point.dataClass === i) {
point.setVisible(vis);
}
});
});
 
chart.legend.colorizeItem(this, vis);
}
}, dataClass));
});
}
return legendItems;
},
name: '' // Prevents 'undefined' in legend in IE8
});
 
/**
* Handle animation of the color attributes directly
*/
each(['fill', 'stroke'], function(prop) {
H.Fx.prototype[prop + 'Setter'] = function() {
this.elem.attr(
prop,
color(this.start).tweenTo(
color(this.end),
this.pos
),
null,
true
);
};
});
 
/**
* Extend the chart getAxes method to also get the color axis
*/
wrap(Chart.prototype, 'getAxes', function(proceed) {
 
var options = this.options,
colorAxisOptions = options.colorAxis;
 
proceed.call(this);
 
this.colorAxis = [];
if (colorAxisOptions) {
new ColorAxis(this, colorAxisOptions); // eslint-disable-line no-new
}
});
 
 
/**
* Wrap the legend getAllItems method to add the color axis. This also removes the
* axis' own series to prevent them from showing up individually.
*/
wrap(Legend.prototype, 'getAllItems', function(proceed) {
var allItems = [],
colorAxis = this.chart.colorAxis[0];
 
if (colorAxis && colorAxis.options) {
if (colorAxis.options.showInLegend) {
// Data classes
if (colorAxis.options.dataClasses) {
allItems = allItems.concat(colorAxis.getDataClassLegendSymbols());
// Gradient legend
} else {
// Add this axis on top
allItems.push(colorAxis);
}
}
 
// Don't add the color axis' series
each(colorAxis.series, function(series) {
series.options.showInLegend = false;
});
}
 
return allItems.concat(proceed.call(this));
});
 
wrap(Legend.prototype, 'colorizeItem', function(proceed, item, visible) {
proceed.call(this, item, visible);
if (visible && item.legendColor) {
item.legendSymbol.attr({
fill: item.legendColor
});
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var defined = H.defined,
each = H.each,
noop = H.noop,
seriesTypes = H.seriesTypes;
 
/**
* Mixin for maps and heatmaps
*/
H.colorPointMixin = {
/**
* Color points have a value option that determines whether or not it is a null point
*/
isValid: function() {
return this.value !== null;
},
 
/**
* Set the visibility of a single point
*/
setVisible: function(vis) {
var point = this,
method = vis ? 'show' : 'hide';
 
// Show and hide associated elements
each(['graphic', 'dataLabel'], function(key) {
if (point[key]) {
point[key][method]();
}
});
},
setState: function(state) {
H.Point.prototype.setState.call(this, state);
if (this.graphic) {
this.graphic.attr({
zIndex: state === 'hover' ? 1 : 0
});
}
}
};
 
H.colorSeriesMixin = {
pointArrayMap: ['value'],
axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
optionalAxis: 'colorAxis',
trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
getSymbol: noop,
parallelArrays: ['x', 'y', 'value'],
colorKey: 'value',
 
 
 
/**
* In choropleth maps, the color is a result of the value, so this needs translation too
*/
translateColors: function() {
var series = this,
nullColor = this.options.nullColor,
colorAxis = this.colorAxis,
colorKey = this.colorKey;
 
each(this.data, function(point) {
var value = point[colorKey],
color;
 
color = point.options.color ||
(point.isNull ? nullColor : (colorAxis && value !== undefined) ? colorAxis.toColor(value, point) : point.color || series.color);
 
if (color) {
point.color = color;
}
});
},
 
/**
* Get the color attibutes to apply on the graphic
*/
colorAttribs: function(point) {
var ret = {};
if (defined(point.color)) {
ret[this.colorProp || 'fill'] = point.color;
}
return ret;
}
};
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
Chart = H.Chart,
doc = H.doc,
each = H.each,
extend = H.extend,
merge = H.merge,
pick = H.pick,
wrap = H.wrap;
 
function stopEvent(e) {
if (e) {
if (e.preventDefault) {
e.preventDefault();
}
if (e.stopPropagation) {
e.stopPropagation();
}
e.cancelBubble = true;
}
}
 
/**
* The MapNavigation handles buttons for navigation in addition to mousewheel
* and doubleclick handlers for chart zooming.
* @param {Chart} chart The Chart instance.
*/
function MapNavigation(chart) {
this.init(chart);
}
 
/**
* Initiator function.
* @param {Chart} chart The Chart instance.
*/
MapNavigation.prototype.init = function(chart) {
this.chart = chart;
chart.mapNavButtons = [];
};
 
/**
* Update the map navigation with new options. Calling this is the same as
* calling `chart.update({ mapNavigation: {} })`.
* @param {Object} options New options for the map navigation.
*/
MapNavigation.prototype.update = function(options) {
var chart = this.chart,
o = chart.options.mapNavigation,
buttonOptions,
attr,
states,
hoverStates,
selectStates,
outerHandler = function(e) {
this.handler.call(chart, e);
stopEvent(e); // Stop default click event (#4444)
},
mapNavButtons = chart.mapNavButtons;
 
// Merge in new options in case of update, and register back to chart
// options.
if (options) {
o = chart.options.mapNavigation =
merge(chart.options.mapNavigation, options);
}
 
// Destroy buttons in case of dynamic update
while (mapNavButtons.length) {
mapNavButtons.pop().destroy();
}
 
if (pick(o.enableButtons, o.enabled) && !chart.renderer.forExport) {
 
H.objectEach(o.buttons, function(button, n) {
buttonOptions = merge(o.buttonOptions, button);
 
 
 
button = chart.renderer.button(
buttonOptions.text,
0,
0,
outerHandler,
attr,
hoverStates,
selectStates,
0,
n === 'zoomIn' ? 'topbutton' : 'bottombutton'
)
.addClass('highcharts-map-navigation')
.attr({
width: buttonOptions.width,
height: buttonOptions.height,
title: chart.options.lang[n],
padding: buttonOptions.padding,
zIndex: 5
})
.add();
button.handler = buttonOptions.onclick;
button.align(
extend(buttonOptions, {
width: button.width,
height: 2 * button.height
}),
null,
buttonOptions.alignTo
);
// Stop double click event (#4444)
addEvent(button.element, 'dblclick', stopEvent);
 
mapNavButtons.push(button);
 
});
}
 
this.updateEvents(o);
};
 
/**
* Update events, called internally from the update function. Add new event
* handlers, or unbinds events if disabled.
* @param {Object} options Options for map navigation.
*/
MapNavigation.prototype.updateEvents = function(options) {
var chart = this.chart;
 
// Add the double click event
if (
pick(options.enableDoubleClickZoom, options.enabled) ||
options.enableDoubleClickZoomTo
) {
this.unbindDblClick = this.unbindDblClick || addEvent(
chart.container,
'dblclick',
function(e) {
chart.pointer.onContainerDblClick(e);
}
);
} else if (this.unbindDblClick) {
// Unbind and set unbinder to undefined
this.unbindDblClick = this.unbindDblClick();
}
 
// Add the mousewheel event
if (pick(options.enableMouseWheelZoom, options.enabled)) {
this.unbindMouseWheel = this.unbindMouseWheel || addEvent(
chart.container,
doc.onmousewheel === undefined ? 'DOMMouseScroll' : 'mousewheel',
function(e) {
chart.pointer.onContainerMouseWheel(e);
// Issue #5011, returning false from non-jQuery event does
// not prevent default
stopEvent(e);
return false;
}
);
} else if (this.unbindMouseWheel) {
// Unbind and set unbinder to undefined
this.unbindMouseWheel = this.unbindMouseWheel();
}
 
};
 
// Add events to the Chart object itself
extend(Chart.prototype, /** @lends Chart.prototype */ {
 
/**
* Fit an inner box to an outer. If the inner box overflows left or right, align it to the sides of the
* outer. If it overflows both sides, fit it within the outer. This is a pattern that occurs more places
* in Highcharts, perhaps it should be elevated to a common utility function.
*/
fitToBox: function(inner, outer) {
each([
['x', 'width'],
['y', 'height']
], function(dim) {
var pos = dim[0],
size = dim[1];
 
if (inner[pos] + inner[size] > outer[pos] + outer[size]) { // right overflow
if (inner[size] > outer[size]) { // the general size is greater, fit fully to outer
inner[size] = outer[size];
inner[pos] = outer[pos];
} else { // align right
inner[pos] = outer[pos] + outer[size] - inner[size];
}
}
if (inner[size] > outer[size]) {
inner[size] = outer[size];
}
if (inner[pos] < outer[pos]) {
inner[pos] = outer[pos];
}
});
 
 
return inner;
},
 
/**
* Highmaps only. Zoom in or out of the map. See also {@link Point#zoomTo}.
* See {@link Chart#fromLatLonToPoint} for how to get the `centerX` and
* `centerY` parameters for a geographic location.
*
* @param {Number} [howMuch]
* How much to zoom the map. Values less than 1 zooms in. 0.5 zooms
* in to half the current view. 2 zooms to twice the current view.
* If omitted, the zoom is reset.
* @param {Number} [centerX]
* The X axis position to center around if available space.
* @param {Number} [centerY]
* The Y axis position to center around if available space.
* @param {Number} [mouseX]
* Fix the zoom to this position if possible. This is used for
* example in mousewheel events, where the area under the mouse
* should be fixed as we zoom in.
* @param {Number} [mouseY]
* Fix the zoom to this position if possible.
*/
mapZoom: function(howMuch, centerXArg, centerYArg, mouseX, mouseY) {
/*if (this.isMapZooming) {
this.mapZoomQueue = arguments;
return;
}*/
 
var chart = this,
xAxis = chart.xAxis[0],
xRange = xAxis.max - xAxis.min,
centerX = pick(centerXArg, xAxis.min + xRange / 2),
newXRange = xRange * howMuch,
yAxis = chart.yAxis[0],
yRange = yAxis.max - yAxis.min,
centerY = pick(centerYArg, yAxis.min + yRange / 2),
newYRange = yRange * howMuch,
fixToX = mouseX ? ((mouseX - xAxis.pos) / xAxis.len) : 0.5,
fixToY = mouseY ? ((mouseY - yAxis.pos) / yAxis.len) : 0.5,
newXMin = centerX - newXRange * fixToX,
newYMin = centerY - newYRange * fixToY,
newExt = chart.fitToBox({
x: newXMin,
y: newYMin,
width: newXRange,
height: newYRange
}, {
x: xAxis.dataMin,
y: yAxis.dataMin,
width: xAxis.dataMax - xAxis.dataMin,
height: yAxis.dataMax - yAxis.dataMin
}),
zoomOut = newExt.x <= xAxis.dataMin &&
newExt.width >= xAxis.dataMax - xAxis.dataMin &&
newExt.y <= yAxis.dataMin &&
newExt.height >= yAxis.dataMax - yAxis.dataMin;
 
// When mousewheel zooming, fix the point under the mouse
if (mouseX) {
xAxis.fixTo = [mouseX - xAxis.pos, centerXArg];
}
if (mouseY) {
yAxis.fixTo = [mouseY - yAxis.pos, centerYArg];
}
 
// Zoom
if (howMuch !== undefined && !zoomOut) {
xAxis.setExtremes(newExt.x, newExt.x + newExt.width, false);
yAxis.setExtremes(newExt.y, newExt.y + newExt.height, false);
 
// Reset zoom
} else {
xAxis.setExtremes(undefined, undefined, false);
yAxis.setExtremes(undefined, undefined, false);
}
 
// Prevent zooming until this one is finished animating
/*chart.holdMapZoom = true;
setTimeout(function () {
chart.holdMapZoom = false;
}, 200);*/
/*delay = animation ? animation.duration || 500 : 0;
if (delay) {
chart.isMapZooming = true;
setTimeout(function () {
chart.isMapZooming = false;
if (chart.mapZoomQueue) {
chart.mapZoom.apply(chart, chart.mapZoomQueue);
}
chart.mapZoomQueue = null;
}, delay);
}*/
 
chart.redraw();
}
});
 
/**
* Extend the Chart.render method to add zooming and panning
*/
wrap(Chart.prototype, 'render', function(proceed) {
// Render the plus and minus buttons. Doing this before the shapes makes getBBox much quicker, at least in Chrome.
this.mapNavigation = new MapNavigation(this);
this.mapNavigation.update();
 
proceed.call(this);
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var extend = H.extend,
pick = H.pick,
Pointer = H.Pointer,
wrap = H.wrap;
 
// Extend the Pointer
extend(Pointer.prototype, {
 
/**
* The event handler for the doubleclick event
*/
onContainerDblClick: function(e) {
var chart = this.chart;
 
e = this.normalize(e);
 
if (chart.options.mapNavigation.enableDoubleClickZoomTo) {
if (chart.pointer.inClass(e.target, 'highcharts-tracker') && chart.hoverPoint) {
chart.hoverPoint.zoomTo();
}
} else if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
chart.mapZoom(
0.5,
chart.xAxis[0].toValue(e.chartX),
chart.yAxis[0].toValue(e.chartY),
e.chartX,
e.chartY
);
}
},
 
/**
* The event handler for the mouse scroll event
*/
onContainerMouseWheel: function(e) {
var chart = this.chart,
delta;
 
e = this.normalize(e);
 
// Firefox uses e.detail, WebKit and IE uses wheelDelta
delta = e.detail || -(e.wheelDelta / 120);
if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
chart.mapZoom(
Math.pow(chart.options.mapNavigation.mouseWheelSensitivity, delta),
chart.xAxis[0].toValue(e.chartX),
chart.yAxis[0].toValue(e.chartY),
e.chartX,
e.chartY
);
}
}
});
 
// The pinchType is inferred from mapNavigation options.
wrap(Pointer.prototype, 'zoomOption', function(proceed) {
 
 
var mapNavigation = this.chart.options.mapNavigation;
 
// Pinch status
if (pick(mapNavigation.enableTouchZoom, mapNavigation.enabled)) {
this.chart.options.chart.pinchType = 'xy';
}
 
proceed.apply(this, [].slice.call(arguments, 1));
 
});
 
// Extend the pinchTranslate method to preserve fixed ratio when zooming
wrap(Pointer.prototype, 'pinchTranslate', function(proceed, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {
var xBigger;
proceed.call(this, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
 
// Keep ratio
if (this.chart.options.chart.type === 'map' && this.hasZoom) {
xBigger = transform.scaleX > transform.scaleY;
this.pinchTranslateDirection(!xBigger,
pinchDown,
touches,
transform,
selectionMarker,
clip,
lastValidTouch,
xBigger ? transform.scaleX : transform.scaleY
);
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var color = H.color,
colorPointMixin = H.colorPointMixin,
colorSeriesMixin = H.colorSeriesMixin,
doc = H.doc,
each = H.each,
extend = H.extend,
isNumber = H.isNumber,
LegendSymbolMixin = H.LegendSymbolMixin,
map = H.map,
merge = H.merge,
noop = H.noop,
pick = H.pick,
isArray = H.isArray,
Point = H.Point,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes,
splat = H.splat;
 
// The vector-effect attribute is not supported in IE <= 11 (at least), so we need
// diffent logic (#3218)
var supportsVectorEffect = doc.documentElement.style.vectorEffect !== undefined;
 
 
/**
* The MapAreaPoint object
*/
/**
* Add the map series type
*/
seriesType('map', 'scatter', {
allAreas: true,
 
animation: false, // makes the complex shapes slow
nullColor: '#f7f7f7',
borderColor: '#cccccc',
borderWidth: 1,
marker: null,
stickyTracking: false,
joinBy: 'hc-key',
dataLabels: {
formatter: function() { // #2945
return this.point.value;
},
inside: true, // for the color
verticalAlign: 'middle',
crop: false,
overflow: false,
padding: 0
},
turboThreshold: 0,
tooltip: {
followPointer: true,
pointFormat: '{point.name}: {point.value}<br/>'
},
states: {
normal: {
animation: true
},
hover: {
brightness: 0.2,
halo: null
},
select: {
color: '#cccccc'
}
}
 
// Prototype members
}, merge(colorSeriesMixin, {
type: 'map',
supportsDrilldown: true,
getExtremesFromAll: true,
useMapGeometry: true, // get axis extremes from paths, not values
forceDL: true,
searchPoint: noop,
directTouch: true, // When tooltip is not shared, this series (and derivatives) requires direct touch/hover. KD-tree does not apply.
preserveAspectRatio: true, // X axis and Y axis must have same translation slope
pointArrayMap: ['value'],
/**
* Get the bounding box of all paths in the map combined.
*/
getBox: function(paths) {
var MAX_VALUE = Number.MAX_VALUE,
maxX = -MAX_VALUE,
minX = MAX_VALUE,
maxY = -MAX_VALUE,
minY = MAX_VALUE,
minRange = MAX_VALUE,
xAxis = this.xAxis,
yAxis = this.yAxis,
hasBox;
 
// Find the bounding box
each(paths || [], function(point) {
 
if (point.path) {
if (typeof point.path === 'string') {
point.path = H.splitPath(point.path);
}
 
var path = point.path || [],
i = path.length,
even = false, // while loop reads from the end
pointMaxX = -MAX_VALUE,
pointMinX = MAX_VALUE,
pointMaxY = -MAX_VALUE,
pointMinY = MAX_VALUE,
properties = point.properties;
 
// The first time a map point is used, analyze its box
if (!point._foundBox) {
while (i--) {
if (isNumber(path[i])) {
if (even) { // even = x
pointMaxX = Math.max(pointMaxX, path[i]);
pointMinX = Math.min(pointMinX, path[i]);
} else { // odd = Y
pointMaxY = Math.max(pointMaxY, path[i]);
pointMinY = Math.min(pointMinY, path[i]);
}
even = !even;
}
}
// Cache point bounding box for use to position data labels, bubbles etc
point._midX = pointMinX + (pointMaxX - pointMinX) *
(point.middleX || (properties && properties['hc-middle-x']) || 0.5); // pick is slower and very marginally needed
point._midY = pointMinY + (pointMaxY - pointMinY) *
(point.middleY || (properties && properties['hc-middle-y']) || 0.5);
point._maxX = pointMaxX;
point._minX = pointMinX;
point._maxY = pointMaxY;
point._minY = pointMinY;
point.labelrank = pick(point.labelrank, (pointMaxX - pointMinX) * (pointMaxY - pointMinY));
point._foundBox = true;
}
 
maxX = Math.max(maxX, point._maxX);
minX = Math.min(minX, point._minX);
maxY = Math.max(maxY, point._maxY);
minY = Math.min(minY, point._minY);
minRange = Math.min(point._maxX - point._minX, point._maxY - point._minY, minRange);
hasBox = true;
}
});
 
// Set the box for the whole series
if (hasBox) {
this.minY = Math.min(minY, pick(this.minY, MAX_VALUE));
this.maxY = Math.max(maxY, pick(this.maxY, -MAX_VALUE));
this.minX = Math.min(minX, pick(this.minX, MAX_VALUE));
this.maxX = Math.max(maxX, pick(this.maxX, -MAX_VALUE));
 
// If no minRange option is set, set the default minimum zooming range to 5 times the
// size of the smallest element
if (xAxis && xAxis.options.minRange === undefined) {
xAxis.minRange = Math.min(5 * minRange, (this.maxX - this.minX) / 5, xAxis.minRange || MAX_VALUE);
}
if (yAxis && yAxis.options.minRange === undefined) {
yAxis.minRange = Math.min(5 * minRange, (this.maxY - this.minY) / 5, yAxis.minRange || MAX_VALUE);
}
}
},
 
getExtremes: function() {
// Get the actual value extremes for colors
Series.prototype.getExtremes.call(this, this.valueData);
 
// Recalculate box on updated data
if (this.chart.hasRendered && this.isDirtyData) {
this.getBox(this.options.data);
}
 
this.valueMin = this.dataMin;
this.valueMax = this.dataMax;
 
// Extremes for the mock Y axis
this.dataMin = this.minY;
this.dataMax = this.maxY;
},
 
/**
* Translate the path so that it automatically fits into the plot area box
* @param {Object} path
*/
translatePath: function(path) {
 
var series = this,
even = false, // while loop reads from the end
xAxis = series.xAxis,
yAxis = series.yAxis,
xMin = xAxis.min,
xTransA = xAxis.transA,
xMinPixelPadding = xAxis.minPixelPadding,
yMin = yAxis.min,
yTransA = yAxis.transA,
yMinPixelPadding = yAxis.minPixelPadding,
i,
ret = []; // Preserve the original
 
// Do the translation
if (path) {
i = path.length;
while (i--) {
if (isNumber(path[i])) {
ret[i] = even ?
(path[i] - xMin) * xTransA + xMinPixelPadding :
(path[i] - yMin) * yTransA + yMinPixelPadding;
even = !even;
} else {
ret[i] = path[i];
}
}
}
 
return ret;
},
 
/**
* Extend setData to join in mapData. If the allAreas option is true, all areas
* from the mapData are used, and those that don't correspond to a data value
* are given null values.
*/
setData: function(data, redraw, animation, updatePoints) {
var options = this.options,
chartOptions = this.chart.options.chart,
globalMapData = chartOptions && chartOptions.map,
mapData = options.mapData,
joinBy = options.joinBy,
joinByNull = joinBy === null,
pointArrayMap = options.keys || this.pointArrayMap,
dataUsed = [],
mapMap = {},
mapPoint,
mapTransforms = this.chart.mapTransforms,
props,
i;
 
// Collect mapData from chart options if not defined on series
if (!mapData && globalMapData) {
mapData = typeof globalMapData === 'string' ? H.maps[globalMapData] : globalMapData;
}
 
if (joinByNull) {
joinBy = '_i';
}
joinBy = this.joinBy = splat(joinBy);
if (!joinBy[1]) {
joinBy[1] = joinBy[0];
}
 
// Pick up numeric values, add index
// Convert Array point definitions to objects using pointArrayMap
if (data) {
each(data, function(val, i) {
var ix = 0;
if (isNumber(val)) {
data[i] = {
value: val
};
} else if (isArray(val)) {
data[i] = {};
// Automatically copy first item to hc-key if there is an extra leading string
if (!options.keys && val.length > pointArrayMap.length && typeof val[0] === 'string') {
data[i]['hc-key'] = val[0];
++ix;
}
// Run through pointArrayMap and what's left of the point data array in parallel, copying over the values
for (var j = 0; j < pointArrayMap.length; ++j, ++ix) {
if (pointArrayMap[j]) {
data[i][pointArrayMap[j]] = val[ix];
}
}
}
if (joinByNull) {
data[i]._i = i;
}
});
}
 
this.getBox(data);
 
// Pick up transform definitions for chart
this.chart.mapTransforms = mapTransforms = chartOptions && chartOptions.mapTransforms || mapData && mapData['hc-transform'] || mapTransforms;
 
// Cache cos/sin of transform rotation angle
if (mapTransforms) {
H.objectEach(mapTransforms, function(transform) {
if (transform.rotation) {
transform.cosAngle = Math.cos(transform.rotation);
transform.sinAngle = Math.sin(transform.rotation);
}
});
}
 
if (mapData) {
if (mapData.type === 'FeatureCollection') {
this.mapTitle = mapData.title;
mapData = H.geojson(mapData, this.type, this);
}
 
this.mapData = mapData;
this.mapMap = {};
 
for (i = 0; i < mapData.length; i++) {
mapPoint = mapData[i];
props = mapPoint.properties;
 
mapPoint._i = i;
// Copy the property over to root for faster access
if (joinBy[0] && props && props[joinBy[0]]) {
mapPoint[joinBy[0]] = props[joinBy[0]];
}
mapMap[mapPoint[joinBy[0]]] = mapPoint;
}
this.mapMap = mapMap;
 
// Registered the point codes that actually hold data
if (data && joinBy[1]) {
each(data, function(point) {
if (mapMap[point[joinBy[1]]]) {
dataUsed.push(mapMap[point[joinBy[1]]]);
}
});
}
 
if (options.allAreas) {
this.getBox(mapData);
data = data || [];
 
// Registered the point codes that actually hold data
if (joinBy[1]) {
each(data, function(point) {
dataUsed.push(point[joinBy[1]]);
});
}
 
// Add those map points that don't correspond to data, which will be drawn as null points
dataUsed = '|' + map(dataUsed, function(point) {
return point && point[joinBy[0]];
}).join('|') + '|'; // String search is faster than array.indexOf
 
each(mapData, function(mapPoint) {
if (!joinBy[0] || dataUsed.indexOf('|' + mapPoint[joinBy[0]] + '|') === -1) {
data.push(merge(mapPoint, {
value: null
}));
updatePoints = false; // #5050 - adding all areas causes the update optimization of setData to kick in, even though the point order has changed
}
});
} else {
this.getBox(dataUsed); // Issue #4784
}
}
Series.prototype.setData.call(this, data, redraw, animation, updatePoints);
},
 
 
/**
* No graph for the map series
*/
drawGraph: noop,
 
/**
* We need the points' bounding boxes in order to draw the data labels, so
* we skip it now and call it from drawPoints instead.
*/
drawDataLabels: noop,
 
/**
* Allow a quick redraw by just translating the area group. Used for zooming and panning
* in capable browsers.
*/
doFullTranslate: function() {
return this.isDirtyData || this.chart.isResizing || this.chart.renderer.isVML || !this.baseTrans;
},
 
/**
* Add the path option for data points. Find the max value for color calculation.
*/
translate: function() {
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis,
doFullTranslate = series.doFullTranslate();
 
series.generatePoints();
 
each(series.data, function(point) {
 
// Record the middle point (loosely based on centroid), determined
// by the middleX and middleY options.
point.plotX = xAxis.toPixels(point._midX, true);
point.plotY = yAxis.toPixels(point._midY, true);
 
if (doFullTranslate) {
 
point.shapeType = 'path';
point.shapeArgs = {
d: series.translatePath(point.path)
};
}
});
 
series.translateColors();
},
 
/**
* Get presentational attributes. In the maps series this runs in both
* styled and non-styled mode, because colors hold data when a colorAxis
* is used.
*/
pointAttribs: function(point, state) {
var attr;
 
attr = this.colorAttribs(point);
 
 
// Prevent flickering whan called from setState
if (point.isFading) {
delete attr.fill;
}
 
// If vector-effect is not supported, we set the stroke-width on the group element
// and let all point graphics inherit. That way we don't have to iterate over all
// points to update the stroke-width on zooming. TODO: Check unstyled
if (supportsVectorEffect) {
attr['vector-effect'] = 'non-scaling-stroke';
} else {
attr['stroke-width'] = 'inherit';
}
 
return attr;
},
 
/**
* Use the drawPoints method of column, that is able to handle simple shapeArgs.
* Extend it by assigning the tooltip position.
*/
drawPoints: function() {
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis,
group = series.group,
chart = series.chart,
renderer = chart.renderer,
scaleX,
scaleY,
translateX,
translateY,
baseTrans = this.baseTrans,
transformGroup,
startTranslateX,
startTranslateY,
startScaleX,
startScaleY;
 
// Set a group that handles transform during zooming and panning in order to preserve clipping
// on series.group
if (!series.transformGroup) {
series.transformGroup = renderer.g()
.attr({
scaleX: 1,
scaleY: 1
})
.add(group);
series.transformGroup.survive = true;
}
 
// Draw the shapes again
if (series.doFullTranslate()) {
 
// Individual point actions. TODO: Check unstyled.
 
 
// Draw them in transformGroup
series.group = series.transformGroup;
seriesTypes.column.prototype.drawPoints.apply(series);
series.group = group; // Reset
 
// Add class names
each(series.points, function(point) {
if (point.graphic) {
if (point.name) {
point.graphic.addClass('highcharts-name-' + point.name.replace(/ /g, '-').toLowerCase());
}
if (point.properties && point.properties['hc-key']) {
point.graphic.addClass('highcharts-key-' + point.properties['hc-key'].toLowerCase());
}
 
 
point.graphic.css(
series.pointAttribs(point, point.selected && 'select')
);
 
}
});
 
// Set the base for later scale-zooming. The originX and originY properties are the
// axis values in the plot area's upper left corner.
this.baseTrans = {
originX: xAxis.min - xAxis.minPixelPadding / xAxis.transA,
originY: yAxis.min - yAxis.minPixelPadding / yAxis.transA + (yAxis.reversed ? 0 : yAxis.len / yAxis.transA),
transAX: xAxis.transA,
transAY: yAxis.transA
};
 
// Reset transformation in case we're doing a full translate (#3789)
this.transformGroup.animate({
translateX: 0,
translateY: 0,
scaleX: 1,
scaleY: 1
});
 
// Just update the scale and transform for better performance
} else {
scaleX = xAxis.transA / baseTrans.transAX;
scaleY = yAxis.transA / baseTrans.transAY;
translateX = xAxis.toPixels(baseTrans.originX, true);
translateY = yAxis.toPixels(baseTrans.originY, true);
 
// Handle rounding errors in normal view (#3789)
if (scaleX > 0.99 && scaleX < 1.01 && scaleY > 0.99 && scaleY < 1.01) {
scaleX = 1;
scaleY = 1;
translateX = Math.round(translateX);
translateY = Math.round(translateY);
}
 
// Animate or move to the new zoom level. In order to prevent
// flickering as the different transform components are set out of
// sync (#5991), we run a fake animator attribute and set scale and
// translation synchronously in the same step.
// A possible improvement to the API would be to handle this in the
// renderer or animation engine itself, to ensure that when we are
// animating multiple properties, we make sure that each step for
// each property is performed in the same step. Also, for symbols
// and for transform properties, it should induce a single
// updateTransform and symbolAttr call.
transformGroup = this.transformGroup;
if (chart.renderer.globalAnimation) {
startTranslateX = transformGroup.attr('translateX');
startTranslateY = transformGroup.attr('translateY');
startScaleX = transformGroup.attr('scaleX');
startScaleY = transformGroup.attr('scaleY');
transformGroup
.attr({
animator: 0
})
.animate({
animator: 1
}, {
step: function(now, fx) {
transformGroup.attr({
translateX: startTranslateX +
(translateX - startTranslateX) * fx.pos,
translateY: startTranslateY +
(translateY - startTranslateY) * fx.pos,
scaleX: startScaleX +
(scaleX - startScaleX) * fx.pos,
scaleY: startScaleY +
(scaleY - startScaleY) * fx.pos
});
 
}
});
 
// When dragging, animation is off.
} else {
transformGroup.attr({
translateX: translateX,
translateY: translateY,
scaleX: scaleX,
scaleY: scaleY
});
}
 
}
 
// Set the stroke-width directly on the group element so the children inherit it. We need to use
// setAttribute directly, because the stroke-widthSetter method expects a stroke color also to be
// set.
if (!supportsVectorEffect) {
series.group.element.setAttribute(
'stroke-width',
series.options[
(series.pointAttrToOptions && series.pointAttrToOptions['stroke-width']) || 'borderWidth'
] / (scaleX || 1)
);
}
 
this.drawMapDataLabels();
 
 
},
 
/**
* Draw the data labels. Special for maps is the time that the data labels are drawn (after points),
* and the clipping of the dataLabelsGroup.
*/
drawMapDataLabels: function() {
 
Series.prototype.drawDataLabels.call(this);
if (this.dataLabelsGroup) {
this.dataLabelsGroup.clip(this.chart.clipRect);
}
},
 
/**
* Override render to throw in an async call in IE8. Otherwise it chokes on the US counties demo.
*/
render: function() {
var series = this,
render = Series.prototype.render;
 
// Give IE8 some time to breathe.
if (series.chart.renderer.isVML && series.data.length > 3000) {
setTimeout(function() {
render.call(series);
});
} else {
render.call(series);
}
},
 
/**
* The initial animation for the map series. By default, animation is disabled.
* Animation of map shapes is not at all supported in VML browsers.
*/
animate: function(init) {
var chart = this.chart,
animation = this.options.animation,
group = this.group,
xAxis = this.xAxis,
yAxis = this.yAxis,
left = xAxis.pos,
top = yAxis.pos;
 
if (chart.renderer.isSVG) {
 
if (animation === true) {
animation = {
duration: 1000
};
}
 
// Initialize the animation
if (init) {
 
// Scale down the group and place it in the center
group.attr({
translateX: left + xAxis.len / 2,
translateY: top + yAxis.len / 2,
scaleX: 0.001, // #1499
scaleY: 0.001
});
 
// Run the animation
} else {
group.animate({
translateX: left,
translateY: top,
scaleX: 1,
scaleY: 1
}, animation);
 
// Delete this function to allow it only once
this.animate = null;
}
}
},
 
/**
* Animate in the new series from the clicked point in the old series.
* Depends on the drilldown.js module
*/
animateDrilldown: function(init) {
var toBox = this.chart.plotBox,
level = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1],
fromBox = level.bBox,
animationOptions = this.chart.options.drilldown.animation,
scale;
 
if (!init) {
 
scale = Math.min(fromBox.width / toBox.width, fromBox.height / toBox.height);
level.shapeArgs = {
scaleX: scale,
scaleY: scale,
translateX: fromBox.x,
translateY: fromBox.y
};
 
each(this.points, function(point) {
if (point.graphic) {
point.graphic
.attr(level.shapeArgs)
.animate({
scaleX: 1,
scaleY: 1,
translateX: 0,
translateY: 0
}, animationOptions);
}
});
 
this.animate = null;
}
 
},
 
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
 
/**
* When drilling up, pull out the individual point graphics from the lower series
* and animate them into the origin point in the upper series.
*/
animateDrillupFrom: function(level) {
seriesTypes.column.prototype.animateDrillupFrom.call(this, level);
},
 
 
/**
* When drilling up, keep the upper series invisible until the lower series has
* moved into place
*/
animateDrillupTo: function(init) {
seriesTypes.column.prototype.animateDrillupTo.call(this, init);
}
 
// Point class
}), extend({
/**
* Extend the Point object to split paths
*/
applyOptions: function(options, x) {
 
var point = Point.prototype.applyOptions.call(this, options, x),
series = this.series,
joinBy = series.joinBy,
mapPoint;
 
if (series.mapData) {
mapPoint = point[joinBy[1]] !== undefined && series.mapMap[point[joinBy[1]]];
if (mapPoint) {
// This applies only to bubbles
if (series.xyFromShape) {
point.x = mapPoint._midX;
point.y = mapPoint._midY;
}
extend(point, mapPoint); // copy over properties
} else {
point.value = point.value || null;
}
}
 
return point;
},
 
/**
* Stop the fade-out
*/
onMouseOver: function(e) {
clearTimeout(this.colorInterval);
if (this.value !== null || this.series.options.nullInteraction) {
Point.prototype.onMouseOver.call(this, e);
} else { //#3401 Tooltip doesn't hide when hovering over null points
this.series.onMouseOut(e);
}
},
 
 
/**
* Highmaps only. Zoom in on the point using the global animation.
*
* @function #zoomTo
* @memberOf Point
* @sample maps/members/point-zoomto/
* Zoom to points from butons
*/
zoomTo: function() {
var point = this,
series = point.series;
 
series.xAxis.setExtremes(
point._minX,
point._maxX,
false
);
series.yAxis.setExtremes(
point._minY,
point._maxY,
false
);
series.chart.redraw();
}
}, colorPointMixin));
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
// The mapline series type
seriesType('mapline', 'map', {
 
}, {
type: 'mapline',
colorProp: 'stroke',
 
drawLegendSymbol: seriesTypes.line.prototype.drawLegendSymbol
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var merge = H.merge,
Point = H.Point,
seriesType = H.seriesType;
 
// The mappoint series type
seriesType('mappoint', 'scatter', {
dataLabels: {
enabled: true,
formatter: function() { // #2945
return this.point.name;
},
crop: false,
defer: false,
overflow: false,
style: {
color: '#000000'
}
}
 
// Prototype members
}, {
type: 'mappoint',
forceDL: true
 
// Point class
}, {
applyOptions: function(options, x) {
var mergedOptions = options.lat !== undefined && options.lon !== undefined ? merge(options, this.series.chart.fromLatLonToPoint(options)) : options;
return Point.prototype.applyOptions.call(this, mergedOptions, x);
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var arrayMax = H.arrayMax,
arrayMin = H.arrayMin,
Axis = H.Axis,
color = H.color,
each = H.each,
isNumber = H.isNumber,
noop = H.noop,
pick = H.pick,
pInt = H.pInt,
Point = H.Point,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
/* ****************************************************************************
* Start Bubble series code *
*****************************************************************************/
 
seriesType('bubble', 'scatter', {
dataLabels: {
formatter: function() { // #2945
return this.point.z;
},
inside: true,
verticalAlign: 'middle'
},
// displayNegative: true,
marker: {
 
// Avoid offset in Point.setState
radius: null,
states: {
hover: {
radiusPlus: 0
}
},
symbol: 'circle'
},
minSize: 8,
maxSize: '20%',
// negativeColor: null,
// sizeBy: 'area'
softThreshold: false,
states: {
hover: {
halo: {
size: 5
}
}
},
tooltip: {
pointFormat: '({point.x}, {point.y}), Size: {point.z}'
},
turboThreshold: 0,
zThreshold: 0,
zoneAxis: 'z'
 
// Prototype members
}, {
pointArrayMap: ['y', 'z'],
parallelArrays: ['x', 'y', 'z'],
trackerGroups: ['group', 'dataLabelsGroup'],
specialGroup: 'group', // To allow clipping (#6296)
bubblePadding: true,
zoneAxis: 'z',
directTouch: true,
 
 
 
/**
* Get the radius for each point based on the minSize, maxSize and each point's Z value. This
* must be done prior to Series.translate because the axis needs to add padding in
* accordance with the point sizes.
*/
getRadii: function(zMin, zMax, minSize, maxSize) {
var len,
i,
pos,
zData = this.zData,
radii = [],
options = this.options,
sizeByArea = options.sizeBy !== 'width',
zThreshold = options.zThreshold,
zRange = zMax - zMin,
value,
radius;
 
// Set the shape type and arguments to be picked up in drawPoints
for (i = 0, len = zData.length; i < len; i++) {
 
value = zData[i];
 
// When sizing by threshold, the absolute value of z determines the size
// of the bubble.
if (options.sizeByAbsoluteValue && value !== null) {
value = Math.abs(value - zThreshold);
zMax = Math.max(zMax - zThreshold, Math.abs(zMin - zThreshold));
zMin = 0;
}
 
if (value === null) {
radius = null;
// Issue #4419 - if value is less than zMin, push a radius that's always smaller than the minimum size
} else if (value < zMin) {
radius = minSize / 2 - 1;
} else {
// Relative size, a number between 0 and 1
pos = zRange > 0 ? (value - zMin) / zRange : 0.5;
 
if (sizeByArea && pos >= 0) {
pos = Math.sqrt(pos);
}
radius = Math.ceil(minSize + pos * (maxSize - minSize)) / 2;
}
radii.push(radius);
}
this.radii = radii;
},
 
/**
* Perform animation on the bubbles
*/
animate: function(init) {
var animation = this.options.animation;
 
if (!init) { // run the animation
each(this.points, function(point) {
var graphic = point.graphic,
animationTarget;
 
if (graphic && graphic.width) { // URL symbols don't have width
animationTarget = {
x: graphic.x,
y: graphic.y,
width: graphic.width,
height: graphic.height
};
 
// Start values
graphic.attr({
x: point.plotX,
y: point.plotY,
width: 1,
height: 1
});
 
// Run animation
graphic.animate(animationTarget, animation);
}
});
 
// delete this function to allow it only once
this.animate = null;
}
},
 
/**
* Extend the base translate method to handle bubble size
*/
translate: function() {
 
var i,
data = this.data,
point,
radius,
radii = this.radii;
 
// Run the parent method
seriesTypes.scatter.prototype.translate.call(this);
 
// Set the shape type and arguments to be picked up in drawPoints
i = data.length;
 
while (i--) {
point = data[i];
radius = radii ? radii[i] : 0; // #1737
 
if (isNumber(radius) && radius >= this.minPxSize / 2) {
// Shape arguments
point.marker = H.extend(point.marker, {
radius: radius,
width: 2 * radius,
height: 2 * radius
});
 
// Alignment box for the data label
point.dlBox = {
x: point.plotX - radius,
y: point.plotY - radius,
width: 2 * radius,
height: 2 * radius
};
} else { // below zThreshold
point.shapeArgs = point.plotY = point.dlBox = undefined; // #1691
}
}
},
 
alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
buildKDTree: noop,
applyZones: noop
 
// Point class
}, {
haloPath: function(size) {
return Point.prototype.haloPath.call(
this,
size === 0 ? 0 : (this.marker ? this.marker.radius || 0 : 0) + size // #6067
);
},
ttBelow: false
});
 
/**
* Add logic to pad each axis with the amount of pixels
* necessary to avoid the bubbles to overflow.
*/
Axis.prototype.beforePadding = function() {
var axis = this,
axisLength = this.len,
chart = this.chart,
pxMin = 0,
pxMax = axisLength,
isXAxis = this.isXAxis,
dataKey = isXAxis ? 'xData' : 'yData',
min = this.min,
extremes = {},
smallestSize = Math.min(chart.plotWidth, chart.plotHeight),
zMin = Number.MAX_VALUE,
zMax = -Number.MAX_VALUE,
range = this.max - min,
transA = axisLength / range,
activeSeries = [];
 
// Handle padding on the second pass, or on redraw
each(this.series, function(series) {
 
var seriesOptions = series.options,
zData;
 
if (series.bubblePadding && (series.visible || !chart.options.chart.ignoreHiddenSeries)) {
 
// Correction for #1673
axis.allowZoomOutside = true;
 
// Cache it
activeSeries.push(series);
 
if (isXAxis) { // because X axis is evaluated first
 
// For each series, translate the size extremes to pixel values
each(['minSize', 'maxSize'], function(prop) {
var length = seriesOptions[prop],
isPercent = /%$/.test(length);
 
length = pInt(length);
extremes[prop] = isPercent ?
smallestSize * length / 100 :
length;
 
});
series.minPxSize = extremes.minSize;
// Prioritize min size if conflict to make sure bubbles are
// always visible. #5873
series.maxPxSize = Math.max(extremes.maxSize, extremes.minSize);
 
// Find the min and max Z
zData = series.zData;
if (zData.length) { // #1735
zMin = pick(seriesOptions.zMin, Math.min(
zMin,
Math.max(
arrayMin(zData),
seriesOptions.displayNegative === false ? seriesOptions.zThreshold : -Number.MAX_VALUE
)
));
zMax = pick(seriesOptions.zMax, Math.max(zMax, arrayMax(zData)));
}
}
}
});
 
each(activeSeries, function(series) {
 
var data = series[dataKey],
i = data.length,
radius;
 
if (isXAxis) {
series.getRadii(zMin, zMax, series.minPxSize, series.maxPxSize);
}
 
if (range > 0) {
while (i--) {
if (isNumber(data[i]) && axis.dataMin <= data[i] && data[i] <= axis.dataMax) {
radius = series.radii[i];
pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);
pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);
}
}
}
});
 
if (activeSeries.length && range > 0 && !this.isLog) {
pxMax -= axisLength;
transA *= (axisLength + pxMin - pxMax) / axisLength;
each([
['min', 'userMin', pxMin],
['max', 'userMax', pxMax]
], function(keys) {
if (pick(axis.options[keys[0]], axis[keys[1]]) === undefined) {
axis[keys[0]] += keys[2] / transA;
}
});
}
};
 
/* ****************************************************************************
* End Bubble series code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var merge = H.merge,
Point = H.Point,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
// The mapbubble series type
if (seriesTypes.bubble) {
 
seriesType('mapbubble', 'bubble', {
animationLimit: 500,
tooltip: {
pointFormat: '{point.name}: {point.z}'
}
 
// Prototype members
}, {
xyFromShape: true,
type: 'mapbubble',
pointArrayMap: ['z'], // If one single value is passed, it is interpreted as z
/**
* Return the map area identified by the dataJoinBy option
*/
getMapData: seriesTypes.map.prototype.getMapData,
getBox: seriesTypes.map.prototype.getBox,
setData: seriesTypes.map.prototype.setData
 
// Point class
}, {
applyOptions: function(options, x) {
var point;
if (options && options.lat !== undefined && options.lon !== undefined) {
point = Point.prototype.applyOptions.call(
this,
merge(options, this.series.chart.fromLatLonToPoint(options)),
x
);
} else {
point = seriesTypes.map.prototype.pointClass.prototype.applyOptions.call(this, options, x);
}
return point;
},
ttBelow: false
});
}
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var colorPointMixin = H.colorPointMixin,
colorSeriesMixin = H.colorSeriesMixin,
each = H.each,
LegendSymbolMixin = H.LegendSymbolMixin,
merge = H.merge,
noop = H.noop,
pick = H.pick,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
// The Heatmap series type
seriesType('heatmap', 'scatter', {
animation: false,
borderWidth: 0,
 
dataLabels: {
formatter: function() { // #2945
return this.point.value;
},
inside: true,
verticalAlign: 'middle',
crop: false,
overflow: false,
padding: 0 // #3837
},
marker: null,
pointRange: null, // dynamically set to colsize by default
tooltip: {
pointFormat: '{point.x}, {point.y}: {point.value}<br/>'
},
states: {
normal: {
animation: true
},
hover: {
halo: false, // #3406, halo is not required on heatmaps
brightness: 0.2
}
}
}, merge(colorSeriesMixin, {
pointArrayMap: ['y', 'value'],
hasPointSpecificOptions: true,
supportsDrilldown: true,
getExtremesFromAll: true,
directTouch: true,
 
/**
* Override the init method to add point ranges on both axes.
*/
init: function() {
var options;
seriesTypes.scatter.prototype.init.apply(this, arguments);
 
options = this.options;
options.pointRange = pick(options.pointRange, options.colsize || 1); // #3758, prevent resetting in setData
this.yAxis.axisPointRange = options.rowsize || 1; // general point range
},
translate: function() {
var series = this,
options = series.options,
xAxis = series.xAxis,
yAxis = series.yAxis,
between = function(x, a, b) {
return Math.min(Math.max(a, x), b);
};
 
series.generatePoints();
 
each(series.points, function(point) {
var xPad = (options.colsize || 1) / 2,
yPad = (options.rowsize || 1) / 2,
x1 = between(Math.round(xAxis.len - xAxis.translate(point.x - xPad, 0, 1, 0, 1)), -xAxis.len, 2 * xAxis.len),
x2 = between(Math.round(xAxis.len - xAxis.translate(point.x + xPad, 0, 1, 0, 1)), -xAxis.len, 2 * xAxis.len),
y1 = between(Math.round(yAxis.translate(point.y - yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len),
y2 = between(Math.round(yAxis.translate(point.y + yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len);
 
// Set plotX and plotY for use in K-D-Tree and more
point.plotX = point.clientX = (x1 + x2) / 2;
point.plotY = (y1 + y2) / 2;
 
point.shapeType = 'rect';
point.shapeArgs = {
x: Math.min(x1, x2),
y: Math.min(y1, y2),
width: Math.abs(x2 - x1),
height: Math.abs(y2 - y1)
};
});
 
series.translateColors();
},
drawPoints: function() {
seriesTypes.column.prototype.drawPoints.call(this);
 
each(this.points, function(point) {
 
// In styled mode, use CSS, otherwise the fill used in the style
// sheet will take precesence over the fill attribute.
point.graphic.css(this.colorAttribs(point));
 
}, this);
},
animate: noop,
getBox: noop,
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
getExtremes: function() {
// Get the extremes from the value data
Series.prototype.getExtremes.call(this, this.valueData);
this.valueMin = this.dataMin;
this.valueMax = this.dataMax;
 
// Get the extremes from the y data
Series.prototype.getExtremes.call(this);
}
 
}), colorPointMixin);
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Chart = H.Chart,
each = H.each,
extend = H.extend,
format = H.format,
merge = H.merge,
win = H.win,
wrap = H.wrap;
/**
* Test for point in polygon. Polygon defined as array of [x,y] points.
*/
function pointInPolygon(point, polygon) {
var i,
j,
rel1,
rel2,
c = false,
x = point.x,
y = point.y;
 
for (i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
rel1 = polygon[i][1] > y;
rel2 = polygon[j][1] > y;
if (rel1 !== rel2 && (x < (polygon[j][0] - polygon[i][0]) * (y - polygon[i][1]) / (polygon[j][1] - polygon[i][1]) + polygon[i][0])) {
c = !c;
}
}
 
return c;
}
 
/**
* Highmaps only. Get point from latitude and longitude using specified
* transform definition.
*
* @function transformFromLatLon
* @memberOf Chart.prototype
*
* @param {Object} latLon
* A latitude/longitude object.
* @param {Number} latLon.lat
* The latitude.
* @param {Number} latLon.lon
* The longitude.
* @param {Object} transform
* The transform definition to use as explained in the {@link
* https://www.highcharts.com/docs/maps/latlon|documentation}.
*
* @return {Object}
* An object with `x` and `y` properties.
*
* @sample maps/series/latlon-transform/
* Use specific transformation for lat/lon
*/
Chart.prototype.transformFromLatLon = function(latLon, transform) {
if (win.proj4 === undefined) {
H.error(21);
return {
x: 0,
y: null
};
}
 
var projected = win.proj4(transform.crs, [latLon.lon, latLon.lat]),
cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
rotated = transform.rotation ? [projected[0] * cosAngle + projected[1] * sinAngle, -projected[0] * sinAngle + projected[1] * cosAngle] : projected;
 
return {
x: ((rotated[0] - (transform.xoffset || 0)) * (transform.scale || 1) + (transform.xpan || 0)) * (transform.jsonres || 1) + (transform.jsonmarginX || 0),
y: (((transform.yoffset || 0) - rotated[1]) * (transform.scale || 1) + (transform.ypan || 0)) * (transform.jsonres || 1) - (transform.jsonmarginY || 0)
};
};
 
/**
* Highmaps only. Get latLon from point using specified transform definition.
* The method returns an object with the numeric properties `lat` and `lon`.
*
* @function transformToLatLon
* @memberOf Chart.prototype
*
* @param {Point|Object} point
* A `Point` instance, or or any object containing the properties `x`
* and `y` with numeric values.
* @param {Object} transform
* The transform definition to use as explained in the {@link
* https://www.highcharts.com/docs/maps/latlon|documentation}.
*
* @return {Object}
* An object with `lat` and `lon` properties.
*
* @sample maps/series/latlon-transform/
* Use specific transformation for lat/lon
*
*/
Chart.prototype.transformToLatLon = function(point, transform) {
if (win.proj4 === undefined) {
H.error(21);
return;
}
 
var normalized = {
x: ((point.x - (transform.jsonmarginX || 0)) / (transform.jsonres || 1) - (transform.xpan || 0)) / (transform.scale || 1) + (transform.xoffset || 0),
y: ((-point.y - (transform.jsonmarginY || 0)) / (transform.jsonres || 1) + (transform.ypan || 0)) / (transform.scale || 1) + (transform.yoffset || 0)
},
cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
// Note: Inverted sinAngle to reverse rotation direction
projected = win.proj4(transform.crs, 'WGS84', transform.rotation ? {
x: normalized.x * cosAngle + normalized.y * -sinAngle,
y: normalized.x * sinAngle + normalized.y * cosAngle
} : normalized);
 
return {
lat: projected.y,
lon: projected.x
};
};
 
/**
* Highmaps only. Calculate latitude/longitude values for a point. Returns an
* object with the numeric properties `lat` and `lon`.
*
* @function fromPointToLatLon
* @memberOf Chart.prototype
*
* @param {Point|Object} point
* A `Point` instance or anything containing `x` and `y` properties
* with numeric values
* @return {Object}
* An object with `lat` and `lon` properties.
*
* @sample maps/demo/latlon-advanced/
* Advanced lat/lon demo
*/
Chart.prototype.fromPointToLatLon = function(point) {
var transforms = this.mapTransforms,
transform;
 
if (!transforms) {
H.error(22);
return;
}
 
for (transform in transforms) {
if (transforms.hasOwnProperty(transform) && transforms[transform].hitZone &&
pointInPolygon({
x: point.x,
y: -point.y
}, transforms[transform].hitZone.coordinates[0])) {
return this.transformToLatLon(point, transforms[transform]);
}
}
 
return this.transformToLatLon(point, transforms['default']); // eslint-disable-line dot-notation
};
 
/**
* Highmaps only. Get chart coordinates from latitude/longitude. Returns an
* object with x and y values corresponding to the `xAxis` and `yAxis`.
*
* @function fromLatLonToPoint
* @memberOf Chart.prototype
*
* @param {Object} latLon
* Coordinates.
* @param {Number} latLon.lat
* The latitude.
* @param {Number} latLon.lon
* The longitude.
*
* @sample maps/series/latlon-to-point/
* Find a point from lat/lon
*
* @return {Object}
* X and Y coordinates in terms of chart axis values.
*/
Chart.prototype.fromLatLonToPoint = function(latLon) {
var transforms = this.mapTransforms,
transform,
coords;
 
if (!transforms) {
H.error(22);
return {
x: 0,
y: null
};
}
 
for (transform in transforms) {
if (transforms.hasOwnProperty(transform) && transforms[transform].hitZone) {
coords = this.transformFromLatLon(latLon, transforms[transform]);
if (pointInPolygon({
x: coords.x,
y: -coords.y
}, transforms[transform].hitZone.coordinates[0])) {
return coords;
}
}
}
 
return this.transformFromLatLon(latLon, transforms['default']); // eslint-disable-line dot-notation
};
 
/**
* Highmaps only. Restructure a GeoJSON object in preparation to be read
* directly by the {@link
* https://api.highcharts.com/highmaps/plotOptions.series.mapData|
* series.mapData} option. The GeoJSON will be broken down to fit a specific
* Highcharts type, either `map`, `mapline` or `mappoint`. Meta data in
* GeoJSON's properties object will be copied directly over to
* {@link Point.properties} in Highmaps.
*
* @function #geojson
* @memberOf Highcharts
*
* @param {Object} geojson
* The GeoJSON structure to parse, represented as a JavaScript object
* rather than a JSON string.
* @param {String} [hType=map]
* The Highmaps series type to prepare for. Setting "map" will return
* GeoJSON polygons and multipolygons. Setting "mapline" will return
* GeoJSON linestrings and multilinestrings. Setting "mappoint" will
* return GeoJSON points and multipoints.
*
* @return {Object}
* An object ready for the `mapData` option.
*
* @sample samples/maps/demo/geojson/
* Simple areas
* @sample maps/demo/geojson-multiple-types/
* Multiple types
*
*/
H.geojson = function(geojson, hType, series) {
var mapData = [],
path = [],
polygonToPath = function(polygon) {
var i,
len = polygon.length;
path.push('M');
for (i = 0; i < len; i++) {
if (i === 1) {
path.push('L');
}
path.push(polygon[i][0], -polygon[i][1]);
}
};
 
hType = hType || 'map';
 
each(geojson.features, function(feature) {
 
var geometry = feature.geometry,
type = geometry.type,
coordinates = geometry.coordinates,
properties = feature.properties,
point;
 
path = [];
 
if (hType === 'map' || hType === 'mapbubble') {
if (type === 'Polygon') {
each(coordinates, polygonToPath);
path.push('Z');
 
} else if (type === 'MultiPolygon') {
each(coordinates, function(items) {
each(items, polygonToPath);
});
path.push('Z');
}
 
if (path.length) {
point = {
path: path
};
}
 
} else if (hType === 'mapline') {
if (type === 'LineString') {
polygonToPath(coordinates);
} else if (type === 'MultiLineString') {
each(coordinates, polygonToPath);
}
 
if (path.length) {
point = {
path: path
};
}
 
} else if (hType === 'mappoint') {
if (type === 'Point') {
point = {
x: coordinates[0],
y: -coordinates[1]
};
}
}
if (point) {
mapData.push(extend(point, {
name: properties.name || properties.NAME,
 
/**
* In Highmaps, when data is loaded from GeoJSON, the GeoJSON
* item's properies are copied over here.
*
* @name #properties
* @memberOf Point
* @type {Object}
*/
properties: properties
}));
}
 
});
 
// Create a credits text that includes map source, to be picked up in Chart.addCredits
if (series && geojson.copyrightShort) {
series.chart.mapCredits = format(series.chart.options.credits.mapText, {
geojson: geojson
});
series.chart.mapCreditsFull = format(series.chart.options.credits.mapTextFull, {
geojson: geojson
});
}
 
return mapData;
};
 
/**
* Override addCredits to include map source by default
*/
wrap(Chart.prototype, 'addCredits', function(proceed, credits) {
 
credits = merge(true, this.options.credits, credits);
 
// Disable credits link if map credits enabled. This to allow for in-text anchors.
if (this.mapCredits) {
credits.href = null;
}
 
proceed.call(this, credits);
 
// Add full map credits to hover
if (this.credits && this.mapCreditsFull) {
this.credits.attr({
title: this.mapCreditsFull
});
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Chart = H.Chart,
defaultOptions = H.defaultOptions,
each = H.each,
extend = H.extend,
merge = H.merge,
pick = H.pick,
Renderer = H.Renderer,
SVGRenderer = H.SVGRenderer,
VMLRenderer = H.VMLRenderer;
 
 
// Add language
extend(defaultOptions.lang, {
zoomIn: 'Zoom in',
zoomOut: 'Zoom out'
});
 
 
// Set the default map navigation options
defaultOptions.mapNavigation = {
buttonOptions: {
alignTo: 'plotBox',
align: 'left',
verticalAlign: 'top',
x: 0,
width: 18,
height: 18,
padding: 5
 
},
buttons: {
zoomIn: {
onclick: function() {
this.mapZoom(0.5);
},
text: '+',
y: 0
},
zoomOut: {
onclick: function() {
this.mapZoom(2);
},
text: '-',
y: 28
}
},
mouseWheelSensitivity: 1.1
// enabled: false,
// enableButtons: null, // inherit from enabled
// enableTouchZoom: null, // inherit from enabled
// enableDoubleClickZoom: null, // inherit from enabled
// enableDoubleClickZoomTo: false
// enableMouseWheelZoom: null, // inherit from enabled
};
 
/**
* Utility for reading SVG paths directly.
*/
H.splitPath = function(path) {
var i;
 
// Move letters apart
path = path.replace(/([A-Za-z])/g, ' $1 ');
// Trim
path = path.replace(/^\s*/, '').replace(/\s*$/, '');
 
// Split on spaces and commas
path = path.split(/[ ,]+/); // Extra comma to escape gulp.scripts task
 
// Parse numbers
for (i = 0; i < path.length; i++) {
if (!/[a-zA-Z]/.test(path[i])) {
path[i] = parseFloat(path[i]);
}
}
return path;
};
 
// A placeholder for map definitions
H.maps = {};
 
 
 
 
 
// Create symbols for the zoom buttons
function selectiveRoundedRect(x, y, w, h, rTopLeft, rTopRight, rBottomRight, rBottomLeft) {
return [
'M', x + rTopLeft, y,
// top side
'L', x + w - rTopRight, y,
// top right corner
'C', x + w - rTopRight / 2,
y, x + w,
y + rTopRight / 2, x + w, y + rTopRight,
// right side
'L', x + w, y + h - rBottomRight,
// bottom right corner
'C', x + w, y + h - rBottomRight / 2,
x + w - rBottomRight / 2, y + h,
x + w - rBottomRight, y + h,
// bottom side
'L', x + rBottomLeft, y + h,
// bottom left corner
'C', x + rBottomLeft / 2, y + h,
x, y + h - rBottomLeft / 2,
x, y + h - rBottomLeft,
// left side
'L', x, y + rTopLeft,
// top left corner
'C', x, y + rTopLeft / 2,
x + rTopLeft / 2, y,
x + rTopLeft, y,
'Z'
];
}
SVGRenderer.prototype.symbols.topbutton = function(x, y, w, h, attr) {
return selectiveRoundedRect(x - 1, y - 1, w, h, attr.r, attr.r, 0, 0);
};
SVGRenderer.prototype.symbols.bottombutton = function(x, y, w, h, attr) {
return selectiveRoundedRect(x - 1, y - 1, w, h, 0, 0, attr.r, attr.r);
};
// The symbol callbacks are generated on the SVGRenderer object in all browsers. Even
// VML browsers need this in order to generate shapes in export. Now share
// them with the VMLRenderer.
if (Renderer === VMLRenderer) {
each(['topbutton', 'bottombutton'], function(shape) {
VMLRenderer.prototype.symbols[shape] = SVGRenderer.prototype.symbols[shape];
});
}
 
 
/**
* The factory function for creating new map charts. Creates a new {@link
* Chart|Chart} object with different default options than the basic Chart.
*
* @function #mapChart
* @memberOf Highcharts
*
* @param {String|HTMLDOMElement} renderTo
* The DOM element to render to, or its id.
* @param {Options} options
* The chart options structure as described in the {@link
* https://api.highcharts.com/highstock|options reference}.
* @param {Function} callback
* A function to execute when the chart object is finished loading and
* rendering. In most cases the chart is built in one thread, but in
* Internet Explorer version 8 or less the chart is sometimes initiated
* before the document is ready, and in these cases the chart object
* will not be finished synchronously. As a consequence, code that
* relies on the newly built Chart object should always run in the
* callback. Defining a {@link https://api.highcharts.com/highstock/chart.events.load|
* chart.event.load} handler is equivalent.
*
* @return {Chart}
* The chart object.
*/
H.Map = H.mapChart = function(a, b, c) {
 
var hasRenderToArg = typeof a === 'string' || a.nodeName,
options = arguments[hasRenderToArg ? 1 : 0],
hiddenAxis = {
endOnTick: false,
visible: false,
minPadding: 0,
maxPadding: 0,
startOnTick: false
},
seriesOptions,
defaultCreditsOptions = H.getOptions().credits;
 
/* For visual testing
hiddenAxis.gridLineWidth = 1;
hiddenAxis.gridZIndex = 10;
hiddenAxis.tickPositions = undefined;
// */
 
// Don't merge the data
seriesOptions = options.series;
options.series = null;
 
options = merge({
chart: {
panning: 'xy',
type: 'map'
},
credits: {
mapText: pick(defaultCreditsOptions.mapText, ' \u00a9 <a href="{geojson.copyrightUrl}">{geojson.copyrightShort}</a>'),
mapTextFull: pick(defaultCreditsOptions.mapTextFull, '{geojson.copyright}')
},
tooltip: {
followTouchMove: false
},
xAxis: hiddenAxis,
yAxis: merge(hiddenAxis, {
reversed: true
})
},
options, // user's options
 
{ // forced options
chart: {
inverted: false,
alignTicks: false
}
}
);
 
options.series = seriesOptions;
 
 
return hasRenderToArg ?
new Chart(a, options, c) :
new Chart(options, b);
};
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/no-data-to-display.js
@@ -0,0 +1,12 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Plugin for displaying a message when there is no data visible in chart.
 
(c) 2010-2017 Highsoft AS
Author: Oystein Moseng
 
License: www.highcharts.com/license
*/
(function(d){"object"===typeof module&&module.exports?module.exports=d:d(Highcharts)})(function(d){(function(c){function d(){this.hasData()?this.hideNoData():this.showNoData()}var f=c.seriesTypes,e=c.Chart.prototype,g=c.getOptions(),h=c.extend,k=c.each;h(g.lang,{noData:"No data to display"});g.noData={position:{x:0,y:0,align:"center",verticalAlign:"middle"}};k("bubble gauge heatmap pie treemap waterfall".split(" "),function(a){f[a]&&(f[a].prototype.hasData=function(){return!!this.points.length})});
c.Series.prototype.hasData=function(){return this.visible&&void 0!==this.dataMax&&void 0!==this.dataMin};e.showNoData=function(a){var b=this.options;a=a||b.lang.noData;b=b.noData;this.noDataLabel||(this.noDataLabel=this.renderer.label(a,0,0,null,null,null,b.useHTML,null,"no-data"),this.noDataLabel.add(),this.noDataLabel.align(h(this.noDataLabel.getBBox(),b.position),!1,"plotBox"))};e.hideNoData=function(){this.noDataLabel&&(this.noDataLabel=this.noDataLabel.destroy())};e.hasData=function(){for(var a=
this.series,b=a.length;b--;)if(a[b].hasData()&&!a[b].options.isInternal)return!0;return this.loadingShown};e.callbacks.push(function(a){c.addEvent(a,"load",d);c.addEvent(a,"redraw",d)})})(d)});
/base/000_base/node_modules/highcharts/js/modules/no-data-to-display.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":12,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","handleNoData","chart","hasData","hideNoData","showNoData","seriesTypes","chartPrototype","Chart","prototype","defaultOptions","getOptions","extend","each","lang","noData","position","x","y","align","verticalAlign","type","length","points","Series","H.Series.prototype.hasData","visible","undefined","dataMax","dataMin","chartPrototype.showNoData","str","options","text","noDataOptions","noDataLabel","renderer","label","useHTML","add","getBBox","chartPrototype.hideNoData","destroy","chartPrototype.hasData","series","i","isInternal","loadingShown","callbacks","push","addEvent"]
}
/base/000_base/node_modules/highcharts/js/modules/no-data-to-display.src.js
@@ -0,0 +1,159 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Plugin for displaying a message when there is no data visible in chart.
*
* (c) 2010-2017 Highsoft AS
* Author: Oystein Moseng
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Plugin for displaying a message when there is no data visible in chart.
*
* (c) 2010-2017 Highsoft AS
* Author: Oystein Moseng
*
* License: www.highcharts.com/license
*/
 
var seriesTypes = H.seriesTypes,
chartPrototype = H.Chart.prototype,
defaultOptions = H.getOptions(),
extend = H.extend,
each = H.each;
 
// Add language option
extend(defaultOptions.lang, {
noData: 'No data to display'
});
 
// Add default display options for message
defaultOptions.noData = {
position: {
x: 0,
y: 0,
align: 'center',
verticalAlign: 'middle'
}
// useHTML: false
};
 
 
 
 
// Define hasData function for non-cartesian seris. Returns true if the series
// has points at all.
each([
'bubble',
'gauge',
'heatmap',
'pie',
'treemap',
'waterfall'
], function(type) {
if (seriesTypes[type]) {
seriesTypes[type].prototype.hasData = function() {
return !!this.points.length; /* != 0 */
};
}
});
 
/**
* Define hasData functions for series. These return true if there are data
* points on this series within the plot area.
*/
H.Series.prototype.hasData = function() {
return this.visible && this.dataMax !== undefined && this.dataMin !== undefined; // #3703
};
 
/**
* Display a no-data message.
*
* @param {String} str An optional message to show in place of the default one
*/
chartPrototype.showNoData = function(str) {
var chart = this,
options = chart.options,
text = str || options.lang.noData,
noDataOptions = options.noData;
 
if (!chart.noDataLabel) {
chart.noDataLabel = chart.renderer
.label(
text,
0,
0,
null,
null,
null,
noDataOptions.useHTML,
null,
'no-data'
);
 
 
 
chart.noDataLabel.add();
 
chart.noDataLabel.align(extend(chart.noDataLabel.getBBox(), noDataOptions.position), false, 'plotBox');
}
};
 
/**
* Hide no-data message
*/
chartPrototype.hideNoData = function() {
var chart = this;
if (chart.noDataLabel) {
chart.noDataLabel = chart.noDataLabel.destroy();
}
};
 
/**
* Returns true if there are data points within the plot area now
*/
chartPrototype.hasData = function() {
var chart = this,
series = chart.series,
i = series.length;
 
while (i--) {
if (series[i].hasData() && !series[i].options.isInternal) {
return true;
}
}
 
return chart.loadingShown; // #4588
};
 
/**
* Show no-data message if there is no data in sight. Otherwise, hide it.
*/
function handleNoData() {
var chart = this;
if (chart.hasData()) {
chart.hideNoData();
} else {
chart.showNoData();
}
}
 
/**
* Add event listener to handle automatic display of no-data message
*/
chartPrototype.callbacks.push(function(chart) {
H.addEvent(chart, 'load', handleNoData);
H.addEvent(chart, 'redraw', handleNoData);
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/offline-exporting.js
@@ -0,0 +1,20 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Client side exporting module
 
(c) 2015 Torstein Honsi / Oystein Moseng
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(b){function n(c,b){var d=t.getElementsByTagName("head")[0],a=t.createElement("script");a.type="text/javascript";a.src=c;a.onload=b;a.onerror=function(){console.error("Error loading script",c)};d.appendChild(a)}var C=b.merge,e=b.win,r=e.navigator,t=e.document,z=b.each,w=e.URL||e.webkitURL||e,A=/Edge\/|Trident\/|MSIE /.test(r.userAgent),D=/Edge\/\d+/.test(r.userAgent),E=A?150:0;b.CanVGRenderer=
{};b.dataURLtoBlob=function(c){if(e.atob&&e.ArrayBuffer&&e.Uint8Array&&e.Blob&&w.createObjectURL){c=c.match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/);for(var b=e.atob(c[3]),d=new e.ArrayBuffer(b.length),d=new e.Uint8Array(d),a=0;a<d.length;++a)d[a]=b.charCodeAt(a);c=new e.Blob([d],{type:c[1]});return w.createObjectURL(c)}};b.downloadURL=function(c,f){var d=t.createElement("a"),a;if(r.msSaveOrOpenBlob)r.msSaveOrOpenBlob(c,f);else{if(2E6<c.length&&(c=b.dataURLtoBlob(c),!c))throw"Data URL length limit reached";
if(void 0!==d.download)d.href=c,d.download=f,t.body.appendChild(d),d.click(),t.body.removeChild(d);else try{if(a=e.open(c,"chart"),void 0===a||null===a)throw"Failed to open window";}catch(u){e.location.href=c}}};b.svgToDataUrl=function(c){var b=-1<r.userAgent.indexOf("WebKit")&&0>r.userAgent.indexOf("Chrome");try{if(!b&&0>r.userAgent.toLowerCase().indexOf("firefox"))return w.createObjectURL(new e.Blob([c],{type:"image/svg+xml;charset-utf-16"}))}catch(d){}return"data:image/svg+xml;charset\x3dUTF-8,"+
encodeURIComponent(c)};b.imageToDataUrl=function(c,b,d,a,u,l,k,m,p){var g=new e.Image,h,f=function(){setTimeout(function(){var e=t.createElement("canvas"),f=e.getContext&&e.getContext("2d"),x;try{if(f){e.height=g.height*a;e.width=g.width*a;f.drawImage(g,0,0,e.width,e.height);try{x=e.toDataURL(b),u(x,b,d,a)}catch(F){h(c,b,d,a)}}else k(c,b,d,a)}finally{p&&p(c,b,d,a)}},E)},q=function(){m(c,b,d,a);p&&p(c,b,d,a)};h=function(){g=new e.Image;h=l;g.crossOrigin="Anonymous";g.onload=f;g.onerror=q;g.src=c};
g.onload=f;g.onerror=q;g.src=c};b.downloadSVGLocal=function(c,f,d,a){function u(a,b){b=new e.jsPDF("l","pt",[a.width.baseVal.value+2*b,a.height.baseVal.value+2*b]);e.svg2pdf(a,b,{removeInvalid:!0});return b.output("datauristring")}function l(){y.innerHTML=c;var e=y.getElementsByTagName("text"),g,f=y.getElementsByTagName("svg")[0].style;z(e,function(a){z(["font-family","font-size"],function(b){!a.style[b]&&f[b]&&(a.style[b]=f[b])});a.style["font-family"]=a.style["font-family"]&&a.style["font-family"].split(" ").splice(-1);
g=a.getElementsByTagName("title");z(g,function(b){a.removeChild(b)})});e=u(y.firstChild,0);try{b.downloadURL(e,v),a&&a()}catch(G){d()}}var k,m,p=!0,g,h=f.libURL||b.getOptions().exporting.libURL,y=t.createElement("div"),q=f.type||"image/png",v=(f.filename||"chart")+"."+("image/svg+xml"===q?"svg":q.split("/")[1]),B=f.scale||1,h="/"!==h.slice(-1)?h+"/":h;if("image/svg+xml"===q)try{r.msSaveOrOpenBlob?(m=new MSBlobBuilder,m.append(c),k=m.getBlob("image/svg+xml")):k=b.svgToDataUrl(c),b.downloadURL(k,v),
a&&a()}catch(x){d()}else"application/pdf"===q?e.jsPDF&&e.svg2pdf?l():(p=!0,n(h+"jspdf.js",function(){n(h+"svg2pdf.js",function(){l()})})):(k=b.svgToDataUrl(c),g=function(){try{w.revokeObjectURL(k)}catch(x){}},b.imageToDataUrl(k,q,{},B,function(c){try{b.downloadURL(c,v),a&&a()}catch(F){d()}},function(){var f=t.createElement("canvas"),u=f.getContext("2d"),l=c.match(/^<svg[^>]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1]*B,k=c.match(/^<svg[^>]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1]*B,m=function(){u.drawSvg(c,0,0,
l,k);try{b.downloadURL(r.msSaveOrOpenBlob?f.msToBlob():f.toDataURL(q),v),a&&a()}catch(H){d()}finally{g()}};f.width=l;f.height=k;e.canvg?m():(p=!0,n(h+"rgbcolor.js",function(){n(h+"canvg.js",function(){m()})}))},d,d,function(){p&&g()}))};b.Chart.prototype.getSVGForLocalExport=function(c,e,d,a){var f=this,l,k=0,m,p,g,h,n,q=function(b,c,d){++k;d.imageElement.setAttributeNS("http://www.w3.org/1999/xlink","href",b);k===l.length&&a(f.sanitizeSVG(m.innerHTML,p))};b.wrap(b.Chart.prototype,"getChartHTML",
function(a){var b=a.apply(this,Array.prototype.slice.call(arguments,1));p=this.options;m=this.container.cloneNode(!0);return b});f.getSVGForExport(c,e);l=m.getElementsByTagName("image");try{if(l.length)for(h=0,n=l.length;h<n;++h)g=l[h],b.imageToDataUrl(g.getAttributeNS("http://www.w3.org/1999/xlink","href"),"image/png",{imageElement:g},c.scale,q,d,d,d);else a(f.sanitizeSVG(m.innerHTML,p))}catch(v){d()}};b.Chart.prototype.exportChartLocal=function(c,e){var d=this,a=b.merge(d.options.exporting,c),f=
function(){if(!1===a.fallbackToExportServer)if(a.error)a.error(a);else throw"Fallback to export server disabled";else d.exportChart(a)};A&&(b.SVGRenderer.prototype.inlineWhitelist=[/^blockSize/,/^border/,/^caretColor/,/^color/,/^columnRule/,/^columnRuleColor/,/^cssFloat/,/^cursor/,/^fill$/,/^fillOpacity/,/^font/,/^inlineSize/,/^length/,/^lineHeight/,/^opacity/,/^outline/,/^parentRule/,/^rx$/,/^ry$/,/^stroke/,/^textAlign/,/^textAnchor/,/^textDecoration/,/^transform/,/^vectorEffect/,/^visibility/,/^x$/,
/^y$/]);A&&("application/pdf"===a.type||d.container.getElementsByTagName("image").length&&"image/svg+xml"!==a.type)||D&&"image/svg+xml"!==a.type||"application/pdf"===a.type&&d.container.getElementsByTagName("image").length?f():d.getSVGForLocalExport(a,e,f,function(c){-1<c.indexOf("\x3cforeignObject")&&"image/svg+xml"!==a.type?f():b.downloadSVGLocal(c,a,f)})};C(!0,b.getOptions().exporting,{libURL:"https://code.highcharts.com/5.0.12/lib/",buttons:{contextButton:{menuItems:[{textKey:"printChart",onclick:function(){this.print()}},
{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChartLocal()}},{textKey:"downloadJPEG",onclick:function(){this.exportChartLocal({type:"image/jpeg"})}},{textKey:"downloadSVG",onclick:function(){this.exportChartLocal({type:"image/svg+xml"})}},{textKey:"downloadPDF",onclick:function(){this.exportChartLocal({type:"application/pdf"})}}]}}})})(n)});
/base/000_base/node_modules/highcharts/js/modules/offline-exporting.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":20,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","getScript","scriptLocation","callback","head","doc","getElementsByTagName","script","createElement","type","src","onload","onerror","script.onerror","console","error","appendChild","merge","win","nav","navigator","document","each","domurl","URL","webkitURL","isMSBrowser","test","userAgent","isEdgeBrowser","loadEventDeferDelay","CanVGRenderer","dataURLtoBlob","Highcharts.dataURLtoBlob","dataURL","atob","ArrayBuffer","Uint8Array","Blob","createObjectURL","parts","match","binStr","buf","length","binary","i","charCodeAt","blob","downloadURL","Highcharts.downloadURL","filename","a","windowRef","msSaveOrOpenBlob","undefined","download","href","body","click","removeChild","open","e","location","svgToDataUrl","Highcharts.svgToDataUrl","svg","webKit","indexOf","toLowerCase","encodeURIComponent","imageToDataUrl","Highcharts.imageToDataUrl","imageURL","imageType","callbackArgs","scale","successCallback","taintedCallback","noCanvasSupportCallback","failedLoadCallback","finallyCallback","img","Image","taintedHandler","loadHandler","setTimeout","canvas","ctx","getContext","height","width","drawImage","toDataURL","errorHandler","crossOrigin","downloadSVGLocal","Highcharts.downloadSVGLocal","options","failCallback","svgToPdf","svgElement","margin","pdf","jsPDF","baseVal","value","svg2pdf","removeInvalid","output","downloadPDF","dummySVGContainer","innerHTML","textElements","titleElements","svgElementStyle","style","el","property","split","splice","titleElement","svgData","firstChild","svgurl","objectURLRevoke","finallyHandler","libURL","getOptions","exporting","slice","MSBlobBuilder","append","getBlob","revokeObjectURL","imageWidth","imageHeight","downloadWithCanVG","drawSvg","msToBlob","canvg","Chart","prototype","getSVGForLocalExport","Highcharts.Chart.prototype.getSVGForLocalExport","chartOptions","chart","images","imagesEmbedded","chartCopyContainer","chartCopyOptions","l","embeddedSuccess","imageElement","setAttributeNS","sanitizeSVG","wrap","proceed","ret","apply","Array","call","arguments","container","cloneNode","getSVGForExport","getAttributeNS","exportChartLocal","Highcharts.Chart.prototype.exportChartLocal","exportingOptions","fallbackToExportServer","exportChart","SVGRenderer","inlineWhitelist","svgSuccess","buttons","contextButton","menuItems","textKey","onclick","print","separator"]
}
/base/000_base/node_modules/highcharts/js/modules/offline-exporting.src.js
@@ -0,0 +1,591 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Client side exporting module
*
* (c) 2015 Torstein Honsi / Oystein Moseng
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(Highcharts) {
/**
* Client side exporting module
*
* (c) 2015 Torstein Honsi / Oystein Moseng
*
* License: www.highcharts.com/license
*/
 
/*global MSBlobBuilder */
 
var merge = Highcharts.merge,
win = Highcharts.win,
nav = win.navigator,
doc = win.document,
each = Highcharts.each,
domurl = win.URL || win.webkitURL || win,
isMSBrowser = /Edge\/|Trident\/|MSIE /.test(nav.userAgent),
isEdgeBrowser = /Edge\/\d+/.test(nav.userAgent),
loadEventDeferDelay = isMSBrowser ? 150 : 0; // Milliseconds to defer image load event handlers to offset IE bug
 
// Dummy object so we can reuse our canvas-tools.js without errors
Highcharts.CanVGRenderer = {};
 
 
/**
* Downloads a script and executes a callback when done.
* @param {String} scriptLocation
* @param {Function} callback
*/
function getScript(scriptLocation, callback) {
var head = doc.getElementsByTagName('head')[0],
script = doc.createElement('script');
 
script.type = 'text/javascript';
script.src = scriptLocation;
script.onload = callback;
script.onerror = function() {
console.error('Error loading script', scriptLocation); // eslint-disable-line no-console
};
 
head.appendChild(script);
}
 
// Convert dataURL to Blob if supported, otherwise returns undefined
Highcharts.dataURLtoBlob = function(dataURL) {
if (
win.atob &&
win.ArrayBuffer &&
win.Uint8Array &&
win.Blob &&
domurl.createObjectURL
) {
// Try to convert data URL to Blob
var parts = dataURL.match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/),
binStr = win.atob(parts[3]), // Assume base64 encoding
buf = new win.ArrayBuffer(binStr.length),
binary = new win.Uint8Array(buf),
blob;
 
for (var i = 0; i < binary.length; ++i) {
binary[i] = binStr.charCodeAt(i);
}
 
blob = new win.Blob([binary], {
'type': parts[1]
});
return domurl.createObjectURL(blob);
}
};
 
// Download contents by dataURL/blob
Highcharts.downloadURL = function(dataURL, filename) {
var a = doc.createElement('a'),
windowRef;
 
// IE specific blob implementation
if (nav.msSaveOrOpenBlob) {
nav.msSaveOrOpenBlob(dataURL, filename);
return;
}
 
// Some browsers have limitations for data URL lengths. Try to convert to
// Blob or fall back.
if (dataURL.length > 2000000) {
dataURL = Highcharts.dataURLtoBlob(dataURL);
if (!dataURL) {
throw 'Data URL length limit reached';
}
}
 
// Try HTML5 download attr if supported
if (a.download !== undefined) {
a.href = dataURL;
a.download = filename; // HTML5 download attribute
doc.body.appendChild(a);
a.click();
doc.body.removeChild(a);
} else {
// No download attr, just opening data URI
try {
windowRef = win.open(dataURL, 'chart');
if (windowRef === undefined || windowRef === null) {
throw 'Failed to open window';
}
} catch (e) {
// window.open failed, trying location.href
win.location.href = dataURL;
}
}
};
 
// Get blob URL from SVG code. Falls back to normal data URI.
Highcharts.svgToDataUrl = function(svg) {
var webKit = nav.userAgent.indexOf('WebKit') > -1 && nav.userAgent.indexOf('Chrome') < 0; // Webkit and not chrome
try {
// Safari requires data URI since it doesn't allow navigation to blob URLs
// Firefox has an issue with Blobs and internal references, leading to gradients not working using Blobs (#4550)
if (!webKit && nav.userAgent.toLowerCase().indexOf('firefox') < 0) {
return domurl.createObjectURL(new win.Blob([svg], {
type: 'image/svg+xml;charset-utf-16'
}));
}
} catch (e) {
// Ignore
}
return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);
};
 
// Get data:URL from image URL
// Pass in callbacks to handle results. finallyCallback is always called at the end of the process. Supplying this callback is optional.
// All callbacks receive four arguments: imageURL, imageType, callbackArgs and scale. callbackArgs is used only by callbacks and can contain whatever.
Highcharts.imageToDataUrl = function(imageURL, imageType, callbackArgs, scale, successCallback, taintedCallback, noCanvasSupportCallback, failedLoadCallback, finallyCallback) {
var img = new win.Image(),
taintedHandler,
loadHandler = function() {
setTimeout(function() {
var canvas = doc.createElement('canvas'),
ctx = canvas.getContext && canvas.getContext('2d'),
dataURL;
try {
if (!ctx) {
noCanvasSupportCallback(imageURL, imageType, callbackArgs, scale);
} else {
canvas.height = img.height * scale;
canvas.width = img.width * scale;
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
 
// Now we try to get the contents of the canvas.
try {
dataURL = canvas.toDataURL(imageType);
successCallback(dataURL, imageType, callbackArgs, scale);
} catch (e) {
taintedHandler(imageURL, imageType, callbackArgs, scale);
}
}
} finally {
if (finallyCallback) {
finallyCallback(imageURL, imageType, callbackArgs, scale);
}
}
}, loadEventDeferDelay); // IE bug where image is not always ready despite calling load event.
},
// Image load failed (e.g. invalid URL)
errorHandler = function() {
failedLoadCallback(imageURL, imageType, callbackArgs, scale);
if (finallyCallback) {
finallyCallback(imageURL, imageType, callbackArgs, scale);
}
};
 
// This is called on load if the image drawing to canvas failed with a security error.
// We retry the drawing with crossOrigin set to Anonymous.
taintedHandler = function() {
img = new win.Image();
taintedHandler = taintedCallback;
img.crossOrigin = 'Anonymous'; // Must be set prior to loading image source
img.onload = loadHandler;
img.onerror = errorHandler;
img.src = imageURL;
};
 
img.onload = loadHandler;
img.onerror = errorHandler;
img.src = imageURL;
};
 
/**
* Get data URL to an image of an SVG and call download on it
*
* options object:
* filename: Name of resulting downloaded file without extension
* type: File type of resulting download
* scale: Scaling factor of downloaded image compared to source
* libURL: URL pointing to location of dependency scripts to download on demand
*/
Highcharts.downloadSVGLocal = function(svg, options, failCallback, successCallback) {
var svgurl,
blob,
objectURLRevoke = true,
finallyHandler,
libURL = options.libURL || Highcharts.getOptions().exporting.libURL,
dummySVGContainer = doc.createElement('div'),
imageType = options.type || 'image/png',
filename = (options.filename || 'chart') + '.' + (imageType === 'image/svg+xml' ? 'svg' : imageType.split('/')[1]),
scale = options.scale || 1;
 
libURL = libURL.slice(-1) !== '/' ? libURL + '/' : libURL; // Allow libURL to end with or without fordward slash
 
function svgToPdf(svgElement, margin) {
var width = svgElement.width.baseVal.value + 2 * margin,
height = svgElement.height.baseVal.value + 2 * margin,
pdf = new win.jsPDF('l', 'pt', [width, height]); // eslint-disable-line new-cap
 
win.svg2pdf(svgElement, pdf, {
removeInvalid: true
});
return pdf.output('datauristring');
}
 
function downloadPDF() {
dummySVGContainer.innerHTML = svg;
var textElements = dummySVGContainer.getElementsByTagName('text'),
titleElements,
svgData,
svgElementStyle = dummySVGContainer.getElementsByTagName('svg')[0].style;
// Workaround for the text styling. Making sure it does pick up the root element
each(textElements, function(el) {
// Workaround for the text styling. making sure it does pick up the root element
each(['font-family', 'font-size'], function(property) {
if (!el.style[property] && svgElementStyle[property]) {
el.style[property] = svgElementStyle[property];
}
});
el.style['font-family'] = el.style['font-family'] && el.style['font-family'].split(' ').splice(-1);
// Workaround for plotband with width, removing title from text nodes
titleElements = el.getElementsByTagName('title');
each(titleElements, function(titleElement) {
el.removeChild(titleElement);
});
});
svgData = svgToPdf(dummySVGContainer.firstChild, 0);
try {
Highcharts.downloadURL(svgData, filename);
if (successCallback) {
successCallback();
}
} catch (e) {
failCallback();
}
}
 
// Initiate download depending on file type
if (imageType === 'image/svg+xml') {
// SVG download. In this case, we want to use Microsoft specific Blob if available
try {
if (nav.msSaveOrOpenBlob) {
blob = new MSBlobBuilder();
blob.append(svg);
svgurl = blob.getBlob('image/svg+xml');
} else {
svgurl = Highcharts.svgToDataUrl(svg);
}
Highcharts.downloadURL(svgurl, filename);
if (successCallback) {
successCallback();
}
} catch (e) {
failCallback();
}
} else if (imageType === 'application/pdf') {
if (win.jsPDF && win.svg2pdf) {
downloadPDF();
} else {
// Must load pdf libraries first
objectURLRevoke = true; // Don't destroy the object URL yet since we are doing things asynchronously. A cleaner solution would be nice, but this will do for now.
getScript(libURL + 'jspdf.js', function() {
getScript(libURL + 'svg2pdf.js', function() {
downloadPDF();
});
});
}
} else {
// PNG/JPEG download - create bitmap from SVG
 
svgurl = Highcharts.svgToDataUrl(svg);
finallyHandler = function() {
try {
domurl.revokeObjectURL(svgurl);
} catch (e) {
// Ignore
}
};
// First, try to get PNG by rendering on canvas
Highcharts.imageToDataUrl(svgurl, imageType, { /* args */ }, scale, function(imageURL) {
// Success
try {
Highcharts.downloadURL(imageURL, filename);
if (successCallback) {
successCallback();
}
} catch (e) {
failCallback();
}
}, function() {
// Failed due to tainted canvas
// Create new and untainted canvas
var canvas = doc.createElement('canvas'),
ctx = canvas.getContext('2d'),
imageWidth = svg.match(/^<svg[^>]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1] * scale,
imageHeight = svg.match(/^<svg[^>]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1] * scale,
downloadWithCanVG = function() {
ctx.drawSvg(svg, 0, 0, imageWidth, imageHeight);
try {
Highcharts.downloadURL(nav.msSaveOrOpenBlob ? canvas.msToBlob() : canvas.toDataURL(imageType), filename);
if (successCallback) {
successCallback();
}
} catch (e) {
failCallback();
} finally {
finallyHandler();
}
};
 
canvas.width = imageWidth;
canvas.height = imageHeight;
if (win.canvg) {
// Use preloaded canvg
downloadWithCanVG();
} else {
// Must load canVG first
objectURLRevoke = true; // Don't destroy the object URL yet since we are doing things asynchronously. A cleaner solution would be nice, but this will do for now.
getScript(libURL + 'rgbcolor.js', function() { // Get RGBColor.js first
getScript(libURL + 'canvg.js', function() {
downloadWithCanVG();
});
});
}
},
// No canvas support
failCallback,
// Failed to load image
failCallback,
// Finally
function() {
if (objectURLRevoke) {
finallyHandler();
}
});
}
};
 
// Get SVG of chart prepared for client side export. This converts embedded images in the SVG to data URIs.
// The options and chartOptions arguments are passed to the getSVGForExport function.
Highcharts.Chart.prototype.getSVGForLocalExport = function(options, chartOptions, failCallback, successCallback) {
var chart = this,
images,
imagesEmbedded = 0,
chartCopyContainer,
chartCopyOptions,
el,
i,
l,
// After grabbing the SVG of the chart's copy container we need to do sanitation on the SVG
sanitize = function(svg) {
return chart.sanitizeSVG(svg, chartCopyOptions);
},
// Success handler, we converted image to base64!
embeddedSuccess = function(imageURL, imageType, callbackArgs) {
++imagesEmbedded;
 
// Change image href in chart copy
callbackArgs.imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', imageURL);
 
// When done with last image we have our SVG
if (imagesEmbedded === images.length) {
successCallback(sanitize(chartCopyContainer.innerHTML));
}
};
 
// Hook into getSVG to get a copy of the chart copy's container
Highcharts.wrap(
Highcharts.Chart.prototype,
'getChartHTML',
function(proceed) {
var ret = proceed.apply(
this,
Array.prototype.slice.call(arguments, 1)
);
chartCopyOptions = this.options;
chartCopyContainer = this.container.cloneNode(true);
return ret;
}
);
 
// Trigger hook to get chart copy
chart.getSVGForExport(options, chartOptions);
images = chartCopyContainer.getElementsByTagName('image');
 
try {
// If there are no images to embed, the SVG is okay now.
if (!images.length) {
successCallback(sanitize(chartCopyContainer.innerHTML)); // Use SVG of chart copy
return;
}
 
// Go through the images we want to embed
for (i = 0, l = images.length; i < l; ++i) {
el = images[i];
Highcharts.imageToDataUrl(el.getAttributeNS('http://www.w3.org/1999/xlink', 'href'), 'image/png', {
imageElement: el
}, options.scale,
embeddedSuccess,
// Tainted canvas
failCallback,
// No canvas support
failCallback,
// Failed to load source
failCallback
);
}
} catch (e) {
failCallback();
}
};
 
/**
* Exporting and offline-exporting modules required. Export a chart to an image
* locally in the user's browser.
*
* @param {Object} exportingOptions
* Exporting options, the same as in {@link
* Highcharts.Chart#exportChart}.
* @param {Options} chartOptions
* Additional chart options for the exported chart. For example a
* different background color can be added here, or `dataLabels`
* for export only.
*/
Highcharts.Chart.prototype.exportChartLocal = function(exportingOptions, chartOptions) {
var chart = this,
options = Highcharts.merge(chart.options.exporting, exportingOptions),
fallbackToExportServer = function() {
if (options.fallbackToExportServer === false) {
if (options.error) {
options.error(options);
} else {
throw 'Fallback to export server disabled';
}
} else {
chart.exportChart(options);
}
},
svgSuccess = function(svg) {
// If SVG contains foreignObjects all exports except SVG will fail,
// as both CanVG and svg2pdf choke on this. Gracefully fall back.
if (
svg.indexOf('<foreignObject') > -1 &&
options.type !== 'image/svg+xml'
) {
fallbackToExportServer();
} else {
Highcharts.downloadSVGLocal(svg, options, fallbackToExportServer);
}
};
 
// If we are on IE and in styled mode, add a whitelist to the renderer
// for inline styles that we want to pass through. There are so many
// styles by default in IE that we don't want to blacklist them all.
 
if (isMSBrowser) {
Highcharts.SVGRenderer.prototype.inlineWhitelist = [
/^blockSize/,
/^border/,
/^caretColor/,
/^color/,
/^columnRule/,
/^columnRuleColor/,
/^cssFloat/,
/^cursor/,
/^fill$/,
/^fillOpacity/,
/^font/,
/^inlineSize/,
/^length/,
/^lineHeight/,
/^opacity/,
/^outline/,
/^parentRule/,
/^rx$/,
/^ry$/,
/^stroke/,
/^textAlign/,
/^textAnchor/,
/^textDecoration/,
/^transform/,
/^vectorEffect/,
/^visibility/,
/^x$/,
/^y$/
];
}
 
 
// Always fall back on:
// - MS browsers: Embedded images JPEG/PNG, or any PDF
// - Edge: PNG/JPEG all cases
// - Embedded images and PDF
if (
(
isMSBrowser &&
(
options.type === 'application/pdf' ||
chart.container.getElementsByTagName('image').length &&
options.type !== 'image/svg+xml'
)
) || (
isEdgeBrowser && options.type !== 'image/svg+xml'
) || (
options.type === 'application/pdf' &&
chart.container.getElementsByTagName('image').length
)
) {
fallbackToExportServer();
return;
}
 
chart.getSVGForLocalExport(options, chartOptions, fallbackToExportServer, svgSuccess);
};
 
// Extend the default options to use the local exporter logic
merge(true, Highcharts.getOptions().exporting, {
libURL: 'https://code.highcharts.com/5.0.12/lib/',
buttons: {
contextButton: {
menuItems: [{
textKey: 'printChart',
onclick: function() {
this.print();
}
}, {
separator: true
}, {
textKey: 'downloadPNG',
onclick: function() {
this.exportChartLocal();
}
}, {
textKey: 'downloadJPEG',
onclick: function() {
this.exportChartLocal({
type: 'image/jpeg'
});
}
}, {
textKey: 'downloadSVG',
onclick: function() {
this.exportChartLocal({
type: 'image/svg+xml'
});
}
}, {
textKey: 'downloadPDF',
onclick: function() {
this.exportChartLocal({
type: 'application/pdf'
});
}
}]
}
}
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/overlapping-datalabels.js
@@ -0,0 +1,10 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(a){"object"===typeof module&&module.exports?module.exports=a:a(Highcharts)})(function(a){(function(a){var h=a.Chart,k=a.each,q=a.pick,r=a.addEvent;h.prototype.callbacks.push(function(f){function a(){var a=[];k(f.series||[],function(b){var c=b.options.dataLabels,d=b.dataLabelCollections||["dataLabel"];(c.enabled||b._hasPointLabels)&&!c.allowOverlap&&b.visible&&k(d,function(c){k(b.points,function(b){b[c]&&(b[c].labelrank=q(b.labelrank,b.shapeArgs&&b.shapeArgs.height),a.push(b[c]))})})});f.hideOverlappingLabels(a)}
a();r(f,"redraw",a)});h.prototype.hideOverlappingLabels=function(a){var f=a.length,e,b,c,d,l,m,n,p,g,h=function(a,b,c,d,e,f,g,h){return!(e>a+c||e+g<a||f>b+d||f+h<b)};for(b=0;b<f;b++)if(e=a[b])e.oldOpacity=e.opacity,e.newOpacity=1;a.sort(function(a,b){return(b.labelrank||0)-(a.labelrank||0)});for(b=0;b<f;b++)for(c=a[b],e=b+1;e<f;++e)if(d=a[e],c&&d&&c!==d&&c.placed&&d.placed&&0!==c.newOpacity&&0!==d.newOpacity&&(l=c.alignAttr,m=d.alignAttr,n=c.parentGroup,p=d.parentGroup,g=2*(c.box?0:c.padding),l=h(l.x+
n.translateX,l.y+n.translateY,c.width-g,c.height-g,m.x+p.translateX,m.y+p.translateY,d.width-g,d.height-g)))(c.labelrank<d.labelrank?c:d).newOpacity=0;k(a,function(a){var b,c;a&&(c=a.newOpacity,a.oldOpacity!==c&&a.placed&&(c?a.show(!0):b=function(){a.hide()},a.alignAttr.opacity=c,a[a.isOld?"animate":"attr"](a.alignAttr,null,b)),a.isOld=!0)})}})(a)});
/base/000_base/node_modules/highcharts/js/modules/overlapping-datalabels.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":10,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","Chart","each","pick","addEvent","prototype","callbacks","push","chart","collectAndHide","labels","series","dlOptions","options","dataLabels","collections","dataLabelCollections","enabled","_hasPointLabels","allowOverlap","visible","coll","points","point","labelrank","shapeArgs","height","hideOverlappingLabels","Chart.prototype.hideOverlappingLabels","len","length","label","i","label1","label2","isIntersecting","pos2","parent1","parent2","padding","intersectRect","x1","y1","w1","h1","x2","y2","w2","h2","oldOpacity","opacity","newOpacity","sort","a","b","j","placed","pos1","alignAttr","parentGroup","box","x","translateX","y","translateY","width","complete","show","hide","isOld"]
}
/base/000_base/node_modules/highcharts/js/modules/overlapping-datalabels.src.js
@@ -0,0 +1,187 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
/**
* Highcharts module to hide overlapping data labels. This module is included in
* Highcharts.
*/
var Chart = H.Chart,
each = H.each,
pick = H.pick,
addEvent = H.addEvent;
 
// Collect potensial overlapping data labels. Stack labels probably don't need
// to be considered because they are usually accompanied by data labels that lie
// inside the columns.
Chart.prototype.callbacks.push(function(chart) {
function collectAndHide() {
var labels = [];
 
each(chart.series || [], function(series) {
var dlOptions = series.options.dataLabels,
// Range series have two collections
collections = series.dataLabelCollections || ['dataLabel'];
 
if (
(dlOptions.enabled || series._hasPointLabels) &&
!dlOptions.allowOverlap &&
series.visible
) { // #3866
each(collections, function(coll) {
each(series.points, function(point) {
if (point[coll]) {
point[coll].labelrank = pick(
point.labelrank,
point.shapeArgs && point.shapeArgs.height
); // #4118
labels.push(point[coll]);
}
});
});
}
});
chart.hideOverlappingLabels(labels);
}
 
// Do it now ...
collectAndHide();
 
// ... and after each chart redraw
addEvent(chart, 'redraw', collectAndHide);
 
});
 
/**
* Hide overlapping labels. Labels are moved and faded in and out on zoom to
* provide a smooth visual imression.
*/
Chart.prototype.hideOverlappingLabels = function(labels) {
 
var len = labels.length,
label,
i,
j,
label1,
label2,
isIntersecting,
pos1,
pos2,
parent1,
parent2,
padding,
intersectRect = function(x1, y1, w1, h1, x2, y2, w2, h2) {
return !(
x2 > x1 + w1 ||
x2 + w2 < x1 ||
y2 > y1 + h1 ||
y2 + h2 < y1
);
};
 
// Mark with initial opacity
for (i = 0; i < len; i++) {
label = labels[i];
if (label) {
label.oldOpacity = label.opacity;
label.newOpacity = 1;
}
}
 
// Prevent a situation in a gradually rising slope, that each label will
// hide the previous one because the previous one always has lower rank.
labels.sort(function(a, b) {
return (b.labelrank || 0) - (a.labelrank || 0);
});
 
// Detect overlapping labels
for (i = 0; i < len; i++) {
label1 = labels[i];
 
for (j = i + 1; j < len; ++j) {
label2 = labels[j];
if (
label1 && label2 &&
label1 !== label2 && // #6465, polar chart with connectEnds
label1.placed && label2.placed &&
label1.newOpacity !== 0 && label2.newOpacity !== 0
) {
pos1 = label1.alignAttr;
pos2 = label2.alignAttr;
// Different panes have different positions
parent1 = label1.parentGroup;
parent2 = label2.parentGroup;
// Substract the padding if no background or border (#4333)
padding = 2 * (label1.box ? 0 : label1.padding);
isIntersecting = intersectRect(
pos1.x + parent1.translateX,
pos1.y + parent1.translateY,
label1.width - padding,
label1.height - padding,
pos2.x + parent2.translateX,
pos2.y + parent2.translateY,
label2.width - padding,
label2.height - padding
);
 
if (isIntersecting) {
(label1.labelrank < label2.labelrank ? label1 : label2)
.newOpacity = 0;
}
}
}
}
 
// Hide or show
each(labels, function(label) {
var complete,
newOpacity;
 
if (label) {
newOpacity = label.newOpacity;
 
if (label.oldOpacity !== newOpacity && label.placed) {
 
// Make sure the label is completely hidden to avoid catching
// clicks (#4362)
if (newOpacity) {
label.show(true);
} else {
complete = function() {
label.hide();
};
}
 
// Animate or set the opacity
label.alignAttr.opacity = newOpacity;
label[label.isOld ? 'animate' : 'attr'](
label.alignAttr,
null,
complete
);
 
}
label.isOld = true;
}
});
};
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/series-label.js
@@ -0,0 +1,19 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(u){"object"===typeof module&&module.exports?module.exports=u:u(Highcharts)})(function(u){(function(q){function u(f,b,a,m,c,e){f=(e-b)*(a-f)-(m-b)*(c-f);return 0<f?!0:0>f?!1:!0}function v(f,b,a,m,c,e,d,l){return u(f,b,c,e,d,l)!==u(a,m,c,e,d,l)&&u(f,b,a,m,c,e)!==u(f,b,a,m,d,l)}function z(f,b,a,m,c,e,d,l){return v(f,b,f+a,b,c,e,d,l)||v(f+a,b,f+a,b+m,c,e,d,l)||v(f,b+m,f+a,b+m,c,e,d,l)||v(f,b,f,b+m,c,e,d,l)}function A(f){var b=this,a=Math.max(q.animObject(b.renderer.globalAnimation).duration,
250),m=!b.hasRendered;f.apply(b,[].slice.call(arguments,1));b.labelSeries=[];clearTimeout(b.seriesLabelTimer);w(b.series,function(c){var e=c.labelBySeries,d=e&&e.closest;c.options.label.enabled&&c.visible&&(c.graph||c.area)&&(b.labelSeries.push(c),m&&(a=Math.max(a,q.animObject(c.options.animation).duration)),d&&(void 0!==d[0].plotX?e.animate({x:d[0].plotX+d[1],y:d[0].plotY+d[2]}):e.attr({opacity:0})))});b.seriesLabelTimer=setTimeout(function(){b.drawSeriesLabels()},a)}var B=q.wrap,w=q.each,D=q.extend,
x=q.isNumber,C=q.Series,E=q.SVGRenderer,y=q.Chart;q.setOptions({plotOptions:{series:{label:{enabled:!0,connectorAllowed:!0,connectorNeighbourDistance:24,styles:{fontWeight:"bold"}}}}});E.prototype.symbols.connector=function(f,b,a,m,c){var e=c&&c.anchorX;c=c&&c.anchorY;var d,l,h=a/2;x(e)&&x(c)&&(d=["M",e,c],l=b-c,0>l&&(l=-m-l),l<a&&(h=e<f+a/2?l:a-l),c>b+m?d.push("L",f+h,b+m):c<b?d.push("L",f+h,b):e<f?d.push("L",f,b+m/2):e>f+a&&d.push("L",f+a,b+m/2));return d||[]};C.prototype.getPointsOnGraph=function(){var f=
this.points,b,a,m=[],c,e,d,l;e=this.graph||this.area;d=e.element;var h=(b=this.chart.inverted)?this.yAxis.pos:this.xAxis.pos,n=b?this.xAxis.pos:this.yAxis.pos;if(this.getPointSpline&&d.getPointAtLength){e.toD&&(a=e.attr("d"),e.attr({d:e.toD}));l=d.getTotalLength();for(c=0;c<l;c+=16)b=d.getPointAtLength(c),m.push({chartX:h+b.x,chartY:n+b.y,plotX:b.x,plotY:b.y});a&&e.attr({d:a});b=f[f.length-1];b.chartX=h+b.plotX;b.chartY=n+b.plotY;m.push(b)}else for(l=f.length,c=0;c<l;c+=1){b=f[c];a=f[c-1];b.chartX=
h+b.plotX;b.chartY=n+b.plotY;if(0<c&&(e=Math.abs(b.chartX-a.chartX),d=Math.abs(b.chartY-a.chartY),e=Math.max(e,d),16<e))for(e=Math.ceil(e/16),d=1;d<e;d+=1)m.push({chartX:a.chartX+d/e*(b.chartX-a.chartX),chartY:a.chartY+d/e*(b.chartY-a.chartY),plotX:a.plotX+d/e*(b.plotX-a.plotX),plotY:a.plotY+d/e*(b.plotY-a.plotY)});x(b.plotY)&&m.push(b)}return m};C.prototype.checkClearPoint=function(f,b,a,m){var c=Number.MAX_VALUE,e=Number.MAX_VALUE,d,l,h=this.options.label.connectorAllowed,n=this.chart,p,g,r,k;for(r=
0;r<n.boxesToAvoid.length;r+=1){g=n.boxesToAvoid[r];k=f+a.width;p=b;var q=b+a.height;if(!(f>g.right||k<g.left||p>g.bottom||q<g.top))return!1}for(r=0;r<n.series.length;r+=1)if(p=n.series[r],g=p.interpolatedPoints,p.visible&&g){for(k=1;k<g.length;k+=1){if(z(f,b,a.width,a.height,g[k-1].chartX,g[k-1].chartY,g[k].chartX,g[k].chartY))return!1;this===p&&!d&&m&&(d=z(f-16,b-16,a.width+32,a.height+32,g[k-1].chartX,g[k-1].chartY,g[k].chartX,g[k].chartY));this!==p&&(c=Math.min(c,Math.pow(f+a.width/2-g[k].chartX,
2)+Math.pow(b+a.height/2-g[k].chartY,2),Math.pow(f-g[k].chartX,2)+Math.pow(b-g[k].chartY,2),Math.pow(f+a.width-g[k].chartX,2)+Math.pow(b-g[k].chartY,2),Math.pow(f+a.width-g[k].chartX,2)+Math.pow(b+a.height-g[k].chartY,2),Math.pow(f-g[k].chartX,2)+Math.pow(b+a.height-g[k].chartY,2)))}if(h&&this===p&&(m&&!d||c<Math.pow(this.options.label.connectorNeighbourDistance,2))){for(k=1;k<g.length;k+=1)d=Math.min(Math.pow(f+a.width/2-g[k].chartX,2)+Math.pow(b+a.height/2-g[k].chartY,2),Math.pow(f-g[k].chartX,
2)+Math.pow(b-g[k].chartY,2),Math.pow(f+a.width-g[k].chartX,2)+Math.pow(b-g[k].chartY,2),Math.pow(f+a.width-g[k].chartX,2)+Math.pow(b+a.height-g[k].chartY,2),Math.pow(f-g[k].chartX,2)+Math.pow(b+a.height-g[k].chartY,2)),d<e&&(e=d,l=g[k]);d=!0}}return!m||d?{x:f,y:b,weight:c-(l?e:0),connectorPoint:l}:!1};y.prototype.drawSeriesLabels=function(){var f=this,b=this.labelSeries;f.boxesToAvoid=[];w(b,function(a){a.interpolatedPoints=a.getPointsOnGraph();w(a.options.label.boxesToAvoid||[],function(a){f.boxesToAvoid.push(a)})});
w(f.series,function(a){function b(a,b,c){return a>g&&a<=g+k-c.width&&b>=r&&b<=r+q-c.height}var c,e,d,l=[],h,n,p=f.inverted,g=p?a.yAxis.pos:a.xAxis.pos,r=p?a.xAxis.pos:a.yAxis.pos,k=f.inverted?a.yAxis.len:a.xAxis.len,q=f.inverted?a.xAxis.len:a.yAxis.len,t=a.interpolatedPoints,p=a.labelBySeries;if(a.visible&&t){p||(a.labelBySeries=p=f.renderer.label(a.name,0,-9999,"connector").css(D({color:a.color},a.options.label.styles)).attr({padding:0,opacity:0,stroke:a.color,"stroke-width":1}).add(a.group).animate({opacity:1},
{duration:200}));c=p.getBBox();c.width=Math.round(c.width);for(n=t.length-1;0<n;--n)e=t[n].chartX+3,d=t[n].chartY-c.height-3,b(e,d,c)&&(h=a.checkClearPoint(e,d,c)),h&&l.push(h),e=t[n].chartX+3,d=t[n].chartY+3,b(e,d,c)&&(h=a.checkClearPoint(e,d,c)),h&&l.push(h),e=t[n].chartX-c.width-3,d=t[n].chartY+3,b(e,d,c)&&(h=a.checkClearPoint(e,d,c)),h&&l.push(h),e=t[n].chartX-c.width-3,d=t[n].chartY-c.height-3,b(e,d,c)&&(h=a.checkClearPoint(e,d,c)),h&&l.push(h);if(!l.length)for(e=g+k-c.width;e>=g;e-=16)for(d=
r;d<r+q-c.height;d+=16)(h=a.checkClearPoint(e,d,c,!0))&&l.push(h);if(l.length){if(l.sort(function(a,b){return b.weight-a.weight}),h=l[0],f.boxesToAvoid.push({left:h.x,right:h.x+c.width,top:h.y,bottom:h.y+c.height}),Math.round(h.x)!==Math.round(p.x)||Math.round(h.y)!==Math.round(p.y))a.labelBySeries.attr({opacity:0,x:h.x-g,y:h.y-r,anchorX:h.connectorPoint&&h.connectorPoint.plotX,anchorY:h.connectorPoint&&h.connectorPoint.plotY}).animate({opacity:1}),a.options.kdNow=!0,a.buildKDTree(),a=a.searchPoint({chartX:h.x,
chartY:h.y},!0),p.closest=[a,h.x-g-a.plotX,h.y-r-a.plotY]}else p&&(a.labelBySeries=p.destroy())}})};B(y.prototype,"render",A);B(y.prototype,"redraw",A)})(u)});
/base/000_base/node_modules/highcharts/js/modules/series-label.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":19,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","ccw","x1","y1","x2","y2","x3","y3","cw","intersectLine","x4","y4","boxIntersectLine","x","y","w","h","drawLabels","proceed","chart","delay","Math","max","animObject","renderer","globalAnimation","duration","initial","hasRendered","apply","slice","call","arguments","labelSeries","clearTimeout","seriesLabelTimer","each","series","label","labelBySeries","closest","options","enabled","visible","graph","area","push","animation","undefined","plotX","animate","plotY","attr","opacity","setTimeout","drawSeriesLabels","wrap","extend","isNumber","Series","SVGRenderer","Chart","setOptions","plotOptions","connectorAllowed","connectorNeighbourDistance","styles","fontWeight","prototype","symbols","connector","SVGRenderer.prototype.symbols.connector","anchorX","anchorY","path","yOffset","lateral","getPointsOnGraph","Series.prototype.getPointsOnGraph","points","point","last","interpolated","i","deltaX","deltaY","len","node","element","paneLeft","inverted","yAxis","pos","xAxis","paneTop","getPointSpline","getPointAtLength","toD","d","getTotalLength","distance","chartX","chartY","length","abs","delta","n","ceil","j","checkClearPoint","Series.prototype.checkClearPoint","bBox","checkDistance","distToOthersSquared","Number","MAX_VALUE","distToPointSquared","dist","connectorPoint","connectorEnabled","boxesToAvoid","width","height","r1","right","left","top","bottom","interpolatedPoints","withinRange","leastDistance","min","pow","weight","Chart.prototype.drawSeriesLabels","box","insidePane","paneWidth","paneHeight","results","clearPoint","name","css","color","padding","stroke","add","group","getBBox","round","labelDistance","best","sort","a","b","kdNow","buildKDTree","searchPoint","destroy"]
}
/base/000_base/node_modules/highcharts/js/modules/series-label.src.js
@@ -0,0 +1,606 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
/**
* EXPERIMENTAL Highcharts module to place labels next to a series in a natural position.
*
* TODO:
* - add column support (box collision detection, boxesToAvoid logic)
* - other series types, area etc.
* - avoid data labels, when data labels above, show series label below.
* - add more options (connector, format, formatter)
*
* http://jsfiddle.net/highcharts/L2u9rpwr/
* http://jsfiddle.net/highcharts/y5A37/
* http://jsfiddle.net/highcharts/264Nm/
* http://jsfiddle.net/highcharts/y5A37/
*/
 
 
var labelDistance = 3,
wrap = H.wrap,
each = H.each,
extend = H.extend,
isNumber = H.isNumber,
Series = H.Series,
SVGRenderer = H.SVGRenderer,
Chart = H.Chart;
 
H.setOptions({
plotOptions: {
series: {
label: {
enabled: true,
// Allow labels to be placed distant to the graph if necessary, and
// draw a connector line to the graph
connectorAllowed: true,
connectorNeighbourDistance: 24, // If the label is closer than this to a neighbour graph, draw a connector
styles: {
fontWeight: 'bold'
}
// boxesToAvoid: []
}
}
}
});
 
/**
* Counter-clockwise, part of the fast line intersection logic
*/
function ccw(x1, y1, x2, y2, x3, y3) {
var cw = ((y3 - y1) * (x2 - x1)) - ((y2 - y1) * (x3 - x1));
return cw > 0 ? true : cw < 0 ? false : true;
}
 
/**
* Detect if two lines intersect
*/
function intersectLine(x1, y1, x2, y2, x3, y3, x4, y4) {
return ccw(x1, y1, x3, y3, x4, y4) !== ccw(x2, y2, x3, y3, x4, y4) &&
ccw(x1, y1, x2, y2, x3, y3) !== ccw(x1, y1, x2, y2, x4, y4);
}
 
/**
* Detect if a box intersects with a line
*/
function boxIntersectLine(x, y, w, h, x1, y1, x2, y2) {
return (
intersectLine(x, y, x + w, y, x1, y1, x2, y2) || // top of label
intersectLine(x + w, y, x + w, y + h, x1, y1, x2, y2) || // right of label
intersectLine(x, y + h, x + w, y + h, x1, y1, x2, y2) || // bottom of label
intersectLine(x, y, x, y + h, x1, y1, x2, y2) // left of label
);
}
 
/**
* General symbol definition for labels with connector
*/
SVGRenderer.prototype.symbols.connector = function(x, y, w, h, options) {
var anchorX = options && options.anchorX,
anchorY = options && options.anchorY,
path,
yOffset,
lateral = w / 2;
 
if (isNumber(anchorX) && isNumber(anchorY)) {
 
path = ['M', anchorX, anchorY];
 
// Prefer 45 deg connectors
yOffset = y - anchorY;
if (yOffset < 0) {
yOffset = -h - yOffset;
}
if (yOffset < w) {
lateral = anchorX < x + (w / 2) ? yOffset : w - yOffset;
}
 
// Anchor below label
if (anchorY > y + h) {
path.push('L', x + lateral, y + h);
 
// Anchor above label
} else if (anchorY < y) {
path.push('L', x + lateral, y);
 
// Anchor left of label
} else if (anchorX < x) {
path.push('L', x, y + h / 2);
 
// Anchor right of label
} else if (anchorX > x + w) {
path.push('L', x + w, y + h / 2);
}
}
return path || [];
};
 
/**
* Points to avoid. In addition to actual data points, the label should avoid
* interpolated positions.
*/
Series.prototype.getPointsOnGraph = function() {
var distance = 16,
points = this.points,
point,
last,
interpolated = [],
i,
deltaX,
deltaY,
delta,
len,
n,
j,
d,
graph = this.graph || this.area,
node = graph.element,
inverted = this.chart.inverted,
paneLeft = inverted ? this.yAxis.pos : this.xAxis.pos,
paneTop = inverted ? this.xAxis.pos : this.yAxis.pos;
 
// For splines, get the point at length (possible caveat: peaks are not correctly detected)
if (this.getPointSpline && node.getPointAtLength) {
// If it is animating towards a path definition, use that briefly, and reset
if (graph.toD) {
d = graph.attr('d');
graph.attr({
d: graph.toD
});
}
len = node.getTotalLength();
for (i = 0; i < len; i += distance) {
point = node.getPointAtLength(i);
interpolated.push({
chartX: paneLeft + point.x,
chartY: paneTop + point.y,
plotX: point.x,
plotY: point.y
});
}
if (d) {
graph.attr({
d: d
});
}
// Last point
point = points[points.length - 1];
point.chartX = paneLeft + point.plotX;
point.chartY = paneTop + point.plotY;
interpolated.push(point);
 
// Interpolate
} else {
len = points.length;
for (i = 0; i < len; i += 1) {
 
point = points[i];
last = points[i - 1];
 
// Absolute coordinates so we can compare different panes
point.chartX = paneLeft + point.plotX;
point.chartY = paneTop + point.plotY;
 
// Add interpolated points
if (i > 0) {
deltaX = Math.abs(point.chartX - last.chartX);
deltaY = Math.abs(point.chartY - last.chartY);
delta = Math.max(deltaX, deltaY);
if (delta > distance) {
 
n = Math.ceil(delta / distance);
 
for (j = 1; j < n; j += 1) {
interpolated.push({
chartX: last.chartX + (point.chartX - last.chartX) * (j / n),
chartY: last.chartY + (point.chartY - last.chartY) * (j / n),
plotX: last.plotX + (point.plotX - last.plotX) * (j / n),
plotY: last.plotY + (point.plotY - last.plotY) * (j / n)
});
}
}
}
 
// Add the real point in order to find positive and negative peaks
if (isNumber(point.plotY)) {
interpolated.push(point);
}
}
}
return interpolated;
};
 
/**
* Check whether a proposed label position is clear of other elements
*/
Series.prototype.checkClearPoint = function(x, y, bBox, checkDistance) {
var distToOthersSquared = Number.MAX_VALUE, // distance to other graphs
distToPointSquared = Number.MAX_VALUE,
dist,
connectorPoint,
connectorEnabled = this.options.label.connectorAllowed,
 
chart = this.chart,
series,
points,
leastDistance = 16,
withinRange,
i,
j;
 
function intersectRect(r1, r2) {
return !(r2.left > r1.right ||
r2.right < r1.left ||
r2.top > r1.bottom ||
r2.bottom < r1.top);
}
 
/**
* Get the weight in order to determine the ideal position. Larger distance to
* other series gives more weight. Smaller distance to the actual point (connector points only)
* gives more weight.
*/
function getWeight(distToOthersSquared, distToPointSquared) {
return distToOthersSquared - distToPointSquared;
}
 
// First check for collision with existing labels
for (i = 0; i < chart.boxesToAvoid.length; i += 1) {
if (intersectRect(chart.boxesToAvoid[i], {
left: x,
right: x + bBox.width,
top: y,
bottom: y + bBox.height
})) {
return false;
}
}
 
// For each position, check if the lines around the label intersect with any of the
// graphs
for (i = 0; i < chart.series.length; i += 1) {
series = chart.series[i];
points = series.interpolatedPoints;
if (series.visible && points) {
for (j = 1; j < points.length; j += 1) {
// If any of the box sides intersect with the line, return
if (boxIntersectLine(
x,
y,
bBox.width,
bBox.height,
points[j - 1].chartX,
points[j - 1].chartY,
points[j].chartX,
points[j].chartY
)) {
return false;
}
 
// But if it is too far away (a padded box doesn't intersect), also return
if (this === series && !withinRange && checkDistance) {
withinRange = boxIntersectLine(
x - leastDistance,
y - leastDistance,
bBox.width + 2 * leastDistance,
bBox.height + 2 * leastDistance,
points[j - 1].chartX,
points[j - 1].chartY,
points[j].chartX,
points[j].chartY
);
}
 
// Find the squared distance from the center of the label
if (this !== series) {
distToOthersSquared = Math.min(
distToOthersSquared,
Math.pow(x + bBox.width / 2 - points[j].chartX, 2) + Math.pow(y + bBox.height / 2 - points[j].chartY, 2),
Math.pow(x - points[j].chartX, 2) + Math.pow(y - points[j].chartY, 2),
Math.pow(x + bBox.width - points[j].chartX, 2) + Math.pow(y - points[j].chartY, 2),
Math.pow(x + bBox.width - points[j].chartX, 2) + Math.pow(y + bBox.height - points[j].chartY, 2),
Math.pow(x - points[j].chartX, 2) + Math.pow(y + bBox.height - points[j].chartY, 2)
);
}
}
 
// Do we need a connector?
if (connectorEnabled && this === series && ((checkDistance && !withinRange) ||
distToOthersSquared < Math.pow(this.options.label.connectorNeighbourDistance, 2))) {
for (j = 1; j < points.length; j += 1) {
dist = Math.min(
Math.pow(x + bBox.width / 2 - points[j].chartX, 2) + Math.pow(y + bBox.height / 2 - points[j].chartY, 2),
Math.pow(x - points[j].chartX, 2) + Math.pow(y - points[j].chartY, 2),
Math.pow(x + bBox.width - points[j].chartX, 2) + Math.pow(y - points[j].chartY, 2),
Math.pow(x + bBox.width - points[j].chartX, 2) + Math.pow(y + bBox.height - points[j].chartY, 2),
Math.pow(x - points[j].chartX, 2) + Math.pow(y + bBox.height - points[j].chartY, 2)
);
if (dist < distToPointSquared) {
distToPointSquared = dist;
connectorPoint = points[j];
}
}
withinRange = true;
}
}
}
 
return !checkDistance || withinRange ? {
x: x,
y: y,
weight: getWeight(distToOthersSquared, connectorPoint ? distToPointSquared : 0),
connectorPoint: connectorPoint
} : false;
 
};
 
/**
* The main initiator method that runs on chart level after initiation and redraw. It runs in
* a timeout to prevent locking, and loops over all series, taking all series and labels into
* account when placing the labels.
*/
Chart.prototype.drawSeriesLabels = function() {
var chart = this,
labelSeries = this.labelSeries;
 
chart.boxesToAvoid = [];
 
// Build the interpolated points
each(labelSeries, function(series) {
series.interpolatedPoints = series.getPointsOnGraph();
 
each(series.options.label.boxesToAvoid || [], function(box) {
chart.boxesToAvoid.push(box);
});
});
 
each(chart.series, function(series) {
var bBox,
x,
y,
results = [],
clearPoint,
i,
best,
inverted = chart.inverted,
paneLeft = inverted ? series.yAxis.pos : series.xAxis.pos,
paneTop = inverted ? series.xAxis.pos : series.yAxis.pos,
paneWidth = chart.inverted ? series.yAxis.len : series.xAxis.len,
paneHeight = chart.inverted ? series.xAxis.len : series.yAxis.len,
points = series.interpolatedPoints,
label = series.labelBySeries;
 
function insidePane(x, y, bBox) {
return x > paneLeft && x <= paneLeft + paneWidth - bBox.width &&
y >= paneTop && y <= paneTop + paneHeight - bBox.height;
}
 
if (series.visible && points) {
if (!label) {
series.labelBySeries = label = chart.renderer
.label(series.name, 0, -9999, 'connector')
.css(extend({
color: series.color
}, series.options.label.styles))
.attr({
padding: 0,
opacity: 0,
stroke: series.color,
'stroke-width': 1
})
.add(series.group)
.animate({
opacity: 1
}, {
duration: 200
});
}
 
bBox = label.getBBox();
bBox.width = Math.round(bBox.width);
 
// Ideal positions are centered above or below a point on right side
// of chart
for (i = points.length - 1; i > 0; i -= 1) {
 
// Right - up
x = points[i].chartX + labelDistance;
y = points[i].chartY - bBox.height - labelDistance;
if (insidePane(x, y, bBox)) {
best = series.checkClearPoint(
x,
y,
bBox
);
}
if (best) {
results.push(best);
}
 
// Right - down
x = points[i].chartX + labelDistance;
y = points[i].chartY + labelDistance;
if (insidePane(x, y, bBox)) {
best = series.checkClearPoint(
x,
y,
bBox
);
}
if (best) {
results.push(best);
}
 
// Left - down
x = points[i].chartX - bBox.width - labelDistance;
y = points[i].chartY + labelDistance;
if (insidePane(x, y, bBox)) {
best = series.checkClearPoint(
x,
y,
bBox
);
}
if (best) {
results.push(best);
}
 
// Left - up
x = points[i].chartX - bBox.width - labelDistance;
y = points[i].chartY - bBox.height - labelDistance;
if (insidePane(x, y, bBox)) {
best = series.checkClearPoint(
x,
y,
bBox
);
}
if (best) {
results.push(best);
}
 
}
 
// Brute force, try all positions on the chart in a 16x16 grid
if (!results.length) {
for (x = paneLeft + paneWidth - bBox.width; x >= paneLeft; x -= 16) {
for (y = paneTop; y < paneTop + paneHeight - bBox.height; y += 16) {
clearPoint = series.checkClearPoint(x, y, bBox, true);
if (clearPoint) {
results.push(clearPoint);
}
}
}
}
 
if (results.length) {
 
results.sort(function(a, b) {
return b.weight - a.weight;
});
 
best = results[0];
 
chart.boxesToAvoid.push({
left: best.x,
right: best.x + bBox.width,
top: best.y,
bottom: best.y + bBox.height
});
 
// Move it if needed
if (Math.round(best.x) !== Math.round(label.x) ||
Math.round(best.y) !== Math.round(label.y)) {
series.labelBySeries
.attr({
opacity: 0,
x: best.x - paneLeft,
y: best.y - paneTop,
anchorX: best.connectorPoint && best.connectorPoint.plotX,
anchorY: best.connectorPoint && best.connectorPoint.plotY
})
.animate({
opacity: 1
});
 
// Record closest point to stick to for sync redraw
series.options.kdNow = true;
series.buildKDTree();
var closest = series.searchPoint({
chartX: best.x,
chartY: best.y
}, true);
label.closest = [
closest,
best.x - paneLeft - closest.plotX,
best.y - paneTop - closest.plotY
];
 
}
 
} else if (label) {
series.labelBySeries = label.destroy();
}
}
});
};
 
/**
* Prepare drawing series labels
*/
function drawLabels(proceed) {
 
var chart = this,
delay = Math.max(
H.animObject(chart.renderer.globalAnimation).duration,
250
),
initial = !chart.hasRendered;
 
proceed.apply(chart, [].slice.call(arguments, 1));
 
chart.labelSeries = [];
 
clearTimeout(chart.seriesLabelTimer);
 
// Which series should have labels
each(chart.series, function(series) {
var options = series.options.label,
label = series.labelBySeries,
closest = label && label.closest;
 
if (options.enabled && series.visible && (series.graph || series.area)) {
chart.labelSeries.push(series);
 
// The labels are processing heavy, wait until the animation is done
if (initial) {
delay = Math.max(
delay,
H.animObject(series.options.animation).duration
);
}
 
// Keep the position updated to the axis while redrawing
if (closest) {
if (closest[0].plotX !== undefined) {
label.animate({
x: closest[0].plotX + closest[1],
y: closest[0].plotY + closest[2]
});
} else {
label.attr({
opacity: 0
});
}
}
}
});
 
chart.seriesLabelTimer = setTimeout(function() {
chart.drawSeriesLabels();
}, delay);
 
}
wrap(Chart.prototype, 'render', drawLabels);
wrap(Chart.prototype, 'redraw', drawLabels);
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/solid-gauge.js
@@ -0,0 +1,14 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Solid angular gauge module
 
(c) 2010-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(l){"object"===typeof module&&module.exports?module.exports=l:l(Highcharts)})(function(l){(function(e){var l=e.pInt,u=e.pick,m=e.each,r=e.isNumber,w=e.wrap,v;w(e.Renderer.prototype.symbols,"arc",function(a,f,d,c,e,b){a=a(f,d,c,e,b);b.rounded&&(c=((b.r||c)-b.innerR)/2,b=["A",c,c,0,1,1,a[12],a[13]],a.splice.apply(a,[a.length-1,0].concat(["A",c,c,0,1,1,a[1],a[2]])),a.splice.apply(a,[11,3].concat(b)));return a});v={initDataClasses:function(a){var f=this.chart,d,c=0,t=this.options;this.dataClasses=
d=[];m(a.dataClasses,function(b,h){b=e.merge(b);d.push(b);b.color||("category"===t.dataClassColor?(h=f.options.colors,b.color=h[c++],c===h.length&&(c=0)):b.color=e.color(t.minColor).tweenTo(e.color(t.maxColor),h/(a.dataClasses.length-1)))})},initStops:function(a){this.stops=a.stops||[[0,this.options.minColor],[1,this.options.maxColor]];m(this.stops,function(a){a.color=e.color(a[1])})},toColor:function(a,f){var d=this.stops,c,e,b=this.dataClasses,h,g;if(b)for(g=b.length;g--;){if(h=b[g],c=h.from,d=
h.to,(void 0===c||a>=c)&&(void 0===d||a<=d)){e=h.color;f&&(f.dataClass=g);break}}else{this.isLog&&(a=this.val2lin(a));a=1-(this.max-a)/(this.max-this.min);for(g=d.length;g--&&!(a>d[g][0]););c=d[g]||d[g+1];d=d[g+1]||c;a=1-(d[0]-a)/(d[0]-c[0]||1);e=c.color.tweenTo(d.color,a)}return e}};e.seriesType("solidgauge","gauge",{colorByPoint:!0},{translate:function(){var a=this.yAxis;e.extend(a,v);!a.dataClasses&&a.options.dataClasses&&a.initDataClasses(a.options);a.initStops(a.options);e.seriesTypes.gauge.prototype.translate.call(this)},
drawPoints:function(){var a=this,f=a.yAxis,d=f.center,c=a.options,t=a.chart.renderer,b=c.overshoot,h=r(b)?b/180*Math.PI:0,g;r(c.threshold)&&(g=f.startAngleRad+f.translate(c.threshold,null,null,null,!0));this.thresholdAngleRad=u(g,f.startAngleRad);m(a.points,function(b){var g=b.graphic,k=f.startAngleRad+f.translate(b.y,null,null,null,!0),m=l(u(b.options.radius,c.radius,100))*d[2]/200,n=l(u(b.options.innerRadius,c.innerRadius,60))*d[2]/200,p=f.toColor(b.y,b),q=Math.min(f.startAngleRad,f.endAngleRad),
r=Math.max(f.startAngleRad,f.endAngleRad);"none"===p&&(p=b.color||a.color||"none");"none"!==p&&(b.color=p);k=Math.max(q-h,Math.min(r+h,k));!1===c.wrap&&(k=Math.max(q,Math.min(r,k)));q=Math.min(k,a.thresholdAngleRad);k=Math.max(k,a.thresholdAngleRad);k-q>2*Math.PI&&(k=q+2*Math.PI);b.shapeArgs=n={x:d[0],y:d[1],r:m,innerR:n,start:q,end:k,rounded:c.rounded};b.startR=m;g?(b=n.d,g.animate(e.extend({fill:p},n)),b&&(n.d=b)):b.graphic=t.arc(n).addClass(b.getClassName(),!0).attr({fill:p,"sweep-flag":0}).add(a.group)})},
animate:function(a){a||(this.startAngleRad=this.thresholdAngleRad,e.seriesTypes.pie.prototype.animate.call(this,a))}})})(l)});
/base/000_base/node_modules/highcharts/js/modules/solid-gauge.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":14,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","pInt","pick","each","isNumber","wrap","colorAxisMethods","Renderer","prototype","symbols","proceed","x","y","w","h","options","path","rounded","smallR","r","innerR","roundEnd","x2","y2","splice","apply","length","concat","roundStart","x1","y1","initDataClasses","userOptions","chart","dataClasses","colorCounter","dataClass","i","merge","push","color","dataClassColor","colors","minColor","tweenTo","maxColor","initStops","stops","stop","toColor","value","point","from","to","undefined","isLog","val2lin","pos","max","min","seriesType","colorByPoint","translate","axis","yAxis","extend","seriesTypes","gauge","call","drawPoints","series","center","renderer","overshoot","overshootVal","Math","PI","thresholdAngleRad","threshold","startAngleRad","points","graphic","rotation","radius","innerRadius","axisMinAngle","endAngleRad","axisMaxAngle","minAngle","maxAngle","shapeArgs","start","end","startR","d","animate","fill","arc","addClass","getClassName","attr","add","group","init","pie"]
}
/base/000_base/node_modules/highcharts/js/modules/solid-gauge.src.js
@@ -0,0 +1,297 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Solid angular gauge module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Solid angular gauge module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
 
var pInt = H.pInt,
pick = H.pick,
each = H.each,
isNumber = H.isNumber,
wrap = H.wrap,
Renderer = H.Renderer,
colorAxisMethods;
 
/**
* Symbol definition of an arc with round edges.
*
* @param {Number} x - The X coordinate for the top left position.
* @param {Number} y - The Y coordinate for the top left position.
* @param {Number} w - The pixel width.
* @param {Number} h - The pixel height.
* @param {Object} [options] - Additional options, depending on the actual
* symbol drawn.
* @param {boolean} [options.rounded] - Whether to draw rounded edges.
* @return {Array} Path of the created arc.
*/
wrap(Renderer.prototype.symbols, 'arc', function(proceed, x, y, w, h, options) {
var arc = proceed,
path = arc(x, y, w, h, options);
if (options.rounded) {
var r = options.r || w,
smallR = (r - options.innerR) / 2,
x1 = path[1],
y1 = path[2],
x2 = path[12],
y2 = path[13],
roundStart = ['A', smallR, smallR, 0, 1, 1, x1, y1],
roundEnd = ['A', smallR, smallR, 0, 1, 1, x2, y2];
// Insert rounded edge on end, and remove line.
path.splice.apply(path, [path.length - 1, 0].concat(roundStart));
// Insert rounded edge on end, and remove line.
path.splice.apply(path, [11, 3].concat(roundEnd));
}
return path;
});
 
// These methods are defined in the ColorAxis object, and copied here.
// If we implement an AMD system we should make ColorAxis a dependency.
colorAxisMethods = {
 
 
initDataClasses: function(userOptions) {
var chart = this.chart,
dataClasses,
colorCounter = 0,
options = this.options;
this.dataClasses = dataClasses = [];
 
each(userOptions.dataClasses, function(dataClass, i) {
var colors;
 
dataClass = H.merge(dataClass);
dataClasses.push(dataClass);
if (!dataClass.color) {
if (options.dataClassColor === 'category') {
colors = chart.options.colors;
dataClass.color = colors[colorCounter++];
// loop back to zero
if (colorCounter === colors.length) {
colorCounter = 0;
}
} else {
dataClass.color = H.color(options.minColor).tweenTo(
H.color(options.maxColor),
i / (userOptions.dataClasses.length - 1)
);
}
}
});
},
 
initStops: function(userOptions) {
this.stops = userOptions.stops || [
[0, this.options.minColor],
[1, this.options.maxColor]
];
each(this.stops, function(stop) {
stop.color = H.color(stop[1]);
});
},
/**
* Translate from a value to a color
*/
toColor: function(value, point) {
var pos,
stops = this.stops,
from,
to,
color,
dataClasses = this.dataClasses,
dataClass,
i;
 
if (dataClasses) {
i = dataClasses.length;
while (i--) {
dataClass = dataClasses[i];
from = dataClass.from;
to = dataClass.to;
if ((from === undefined || value >= from) && (to === undefined || value <= to)) {
color = dataClass.color;
if (point) {
point.dataClass = i;
}
break;
}
}
 
} else {
 
if (this.isLog) {
value = this.val2lin(value);
}
pos = 1 - ((this.max - value) / (this.max - this.min));
i = stops.length;
while (i--) {
if (pos > stops[i][0]) {
break;
}
}
from = stops[i] || stops[i + 1];
to = stops[i + 1] || from;
 
// The position within the gradient
pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
 
color = from.color.tweenTo(
to.color,
pos
);
}
return color;
}
};
 
// The solidgauge series type
H.seriesType('solidgauge', 'gauge', {
colorByPoint: true
 
}, {
 
/**
* Extend the translate function to extend the Y axis with the necessary
* decoration (#5895).
*/
translate: function() {
var axis = this.yAxis;
H.extend(axis, colorAxisMethods);
 
// Prepare data classes
if (!axis.dataClasses && axis.options.dataClasses) {
axis.initDataClasses(axis.options);
}
axis.initStops(axis.options);
 
// Generate points and inherit data label position
H.seriesTypes.gauge.prototype.translate.call(this);
},
 
/**
* Draw the points where each point is one needle
*/
drawPoints: function() {
var series = this,
yAxis = series.yAxis,
center = yAxis.center,
options = series.options,
renderer = series.chart.renderer,
overshoot = options.overshoot,
overshootVal = isNumber(overshoot) ? overshoot / 180 * Math.PI : 0,
thresholdAngleRad;
 
// Handle the threshold option
if (isNumber(options.threshold)) {
thresholdAngleRad = yAxis.startAngleRad + yAxis.translate(
options.threshold,
null,
null,
null,
true
);
}
this.thresholdAngleRad = pick(thresholdAngleRad, yAxis.startAngleRad);
 
 
each(series.points, function(point) {
var graphic = point.graphic,
rotation = yAxis.startAngleRad + yAxis.translate(point.y, null, null, null, true),
radius = (pInt(pick(point.options.radius, options.radius, 100)) * center[2]) / 200,
innerRadius = (pInt(pick(point.options.innerRadius, options.innerRadius, 60)) * center[2]) / 200,
shapeArgs,
d,
toColor = yAxis.toColor(point.y, point),
axisMinAngle = Math.min(yAxis.startAngleRad, yAxis.endAngleRad),
axisMaxAngle = Math.max(yAxis.startAngleRad, yAxis.endAngleRad),
minAngle,
maxAngle;
 
if (toColor === 'none') { // #3708
toColor = point.color || series.color || 'none';
}
if (toColor !== 'none') {
point.color = toColor;
}
 
// Handle overshoot and clipping to axis max/min
rotation = Math.max(axisMinAngle - overshootVal, Math.min(axisMaxAngle + overshootVal, rotation));
 
// Handle the wrap option
if (options.wrap === false) {
rotation = Math.max(axisMinAngle, Math.min(axisMaxAngle, rotation));
}
 
minAngle = Math.min(rotation, series.thresholdAngleRad);
maxAngle = Math.max(rotation, series.thresholdAngleRad);
 
if (maxAngle - minAngle > 2 * Math.PI) {
maxAngle = minAngle + 2 * Math.PI;
}
 
point.shapeArgs = shapeArgs = {
x: center[0],
y: center[1],
r: radius,
innerR: innerRadius,
start: minAngle,
end: maxAngle,
rounded: options.rounded
};
point.startR = radius; // For PieSeries.animate
 
if (graphic) {
d = shapeArgs.d;
graphic.animate(H.extend({
fill: toColor
}, shapeArgs));
if (d) {
shapeArgs.d = d; // animate alters it
}
} else {
point.graphic = renderer.arc(shapeArgs)
.addClass(point.getClassName(), true)
.attr({
fill: toColor,
'sweep-flag': 0
})
.add(series.group);
 
 
}
});
},
 
/**
* Extend the pie slice animation by animating from start angle and up
*/
animate: function(init) {
 
if (!init) {
this.startAngleRad = this.thresholdAngleRad;
H.seriesTypes.pie.prototype.animate.call(this, init);
}
}
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/static-scale.js
@@ -0,0 +1,12 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
StaticScale
 
(c) 2016 Torstein Honsi, Lars A. V. Cabrera
 
--- WORK IN PROGRESS ---
 
License: www.highcharts.com/license
*/
(function(a){"object"===typeof module&&module.exports?module.exports=a:a(Highcharts)})(function(a){(function(c){var a=c.Chart,e=c.each,f=c.pick;a.prototype.adjustHeight=function(){e(this.axes,function(b){var a=b.chart,e=!!a.initiatedScale&&a.options.animation,d=b.options.staticScale;c.isNumber(d)&&!b.horiz&&c.defined(b.min)&&(b=f(b.unitLength,b.max+b.tickInterval-b.min)*d,b=Math.max(b,d),d=b-a.plotHeight,1<=Math.abs(d)&&(a.plotHeight=b,a.setSize(null,a.chartHeight+d,e)))});this.initiatedScale=!0};
c.addEvent(a.prototype,"render",a.prototype.adjustHeight)})(a)});
/base/000_base/node_modules/highcharts/js/modules/static-scale.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":12,
"mappings":"A;;;;;;;;;;AAWC,SAAQ,CAACA,CAAD,CAAU,CACO,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,CACID,MAAAC,QADJ,CACqBF,CADrB,CAGIA,CAAA,CAAQG,UAAR,CAJW,CAAlB,CAAA,CAMC,QAAQ,CAACA,CAAD,CAAa,CAClB,SAAQ,CAACC,CAAD,CAAI,CAAA,IAOLC,EAAQD,CAAAC,MAPH,CAQLC,EAAOF,CAAAE,KARF,CASLC,EAAOH,CAAAG,KAEXF,EAAAG,UAAAC,aAAA,CAA+BC,QAAQ,EAAG,CACtCJ,CAAA,CAAK,IAAAK,KAAL,CAAgB,QAAQ,CAACC,CAAD,CAAO,CAAA,IACvBC,EAAQD,CAAAC,MADe,CAEvBC,EAAU,CAAEC,CAAAF,CAAAE,eAAZD,EAAoCD,CAAAG,QAAAC,UAFb,CAGvBC,EAAcN,CAAAI,QAAAE,YAIdd,EAAAe,SAAA,CAAWD,CAAX,CADJ,EAEKE,CAAAR,CAAAQ,MAFL,EAGIhB,CAAAiB,QAAA,CAAUT,CAAAU,IAAV,CAHJ,GAKIC,CAUA,CAVShB,CAAA,CACLK,CAAAY,WADK,CAELZ,CAAAa,IAFK,CAEMb,CAAAc,aAFN,CAE0Bd,CAAAU,IAF1B,CAUT,CAPIJ,CAOJ,CAJAK,CAIA,CAJSI,IAAAF,IAAA,CAASF,CAAT,CAAiBL,CAAjB,CAIT,CAFAU,CAEA,CAFOL,CAEP,CAFgBV,CAAAgB,WAEhB,CAAsB,CAAtB,EAAIF,IAAAG,IAAA,CAASF,CAAT,CAAJ,GACIf,CAAAgB,WACA,CADmBN,CACnB,CAAAV,CAAAkB,QAAA,CAAc,IAAd,CAAoBlB,CAAAmB,YAApB,CAAwCJ,CAAxC,CAA8Cd,CAA9C,CAFJ,CAfJ,CAN2B,CAA/B,CA4BA,KAAAC,eAAA,CAAsB,CAAA,CA7BgB,CA+B1CX;CAAA6B,SAAA,CAAW5B,CAAAG,UAAX,CAA4B,QAA5B,CAAsCH,CAAAG,UAAAC,aAAtC,CA1CS,CAAZ,CAAA,CA4CCN,CA5CD,CADkB,CANtB;",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","Chart","each","pick","prototype","adjustHeight","Chart.prototype.adjustHeight","axes","axis","chart","animate","initiatedScale","options","animation","staticScale","isNumber","horiz","defined","min","height","unitLength","max","tickInterval","Math","diff","plotHeight","abs","setSize","chartHeight","addEvent"]
}
/base/000_base/node_modules/highcharts/js/modules/static-scale.src.js
@@ -0,0 +1,64 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* StaticScale
*
* (c) 2016 Torstein Honsi, Lars A. V. Cabrera
*
* --- WORK IN PROGRESS ---
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2017 Torstein Honsi, Lars Cabrera
*
* License: www.highcharts.com/license
*/
 
var Chart = H.Chart,
each = H.each,
pick = H.pick;
 
Chart.prototype.adjustHeight = function() {
each(this.axes, function(axis) {
var chart = axis.chart,
animate = !!chart.initiatedScale && chart.options.animation,
staticScale = axis.options.staticScale,
height,
diff;
if (
H.isNumber(staticScale) &&
!axis.horiz &&
H.defined(axis.min)
) {
height = pick(
axis.unitLength,
axis.max + axis.tickInterval - axis.min
) * staticScale;
 
// Minimum height is 1 x staticScale.
height = Math.max(height, staticScale);
 
diff = height - chart.plotHeight;
 
if (Math.abs(diff) >= 1) {
chart.plotHeight = height;
chart.setSize(null, chart.chartHeight + diff, animate);
}
}
 
});
this.initiatedScale = true;
};
H.addEvent(Chart.prototype, 'render', Chart.prototype.adjustHeight);
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/stock.js
@@ -0,0 +1,123 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
Highstock as a plugin for Highcharts
 
(c) 2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(K){"object"===typeof module&&module.exports?module.exports=K:K(Highcharts)})(function(K){(function(a){var E=a.addEvent,k=a.Axis,t=a.Chart,z=a.css,F=a.dateFormat,H=a.defined,I=a.each,w=a.extend,h=a.noop,q=a.timeUnits,G=a.wrap;G(a.Series.prototype,"init",function(a){var b;a.apply(this,Array.prototype.slice.call(arguments,1));(b=this.xAxis)&&b.options.ordinal&&E(this,"updatedData",function(){delete b.ordinalIndex})});G(k.prototype,"getTimeTicks",function(a,b,d,u,A,l,h,g){var r=0,e,x,c={},f,
m,B,n=[],v=-Number.MAX_VALUE,y=this.options.tickPixelInterval;if(!this.options.ordinal&&!this.options.breaks||!l||3>l.length||void 0===d)return a.call(this,b,d,u,A);m=l.length;for(e=0;e<m;e++){B=e&&l[e-1]>u;l[e]<d&&(r=e);if(e===m-1||l[e+1]-l[e]>5*h||B){if(l[e]>v){for(x=a.call(this,b,l[r],l[e],A);x.length&&x[0]<=v;)x.shift();x.length&&(v=x[x.length-1]);n=n.concat(x)}r=e+1}if(B)break}a=x.info;if(g&&a.unitRange<=q.hour){e=n.length-1;for(r=1;r<e;r++)F("%d",n[r])!==F("%d",n[r-1])&&(c[n[r]]="day",f=!0);
f&&(c[n[0]]="day");a.higherRanks=c}n.info=a;if(g&&H(y)){g=a=n.length;e=[];var D;for(f=[];g--;)r=this.translate(n[g]),D&&(f[g]=D-r),e[g]=D=r;f.sort();f=f[Math.floor(f.length/2)];f<.6*y&&(f=null);g=n[a-1]>u?a-1:a;for(D=void 0;g--;)r=e[g],u=Math.abs(D-r),D&&u<.8*y&&(null===f||u<.8*f)?(c[n[g]]&&!c[n[g+1]]?(u=g+1,D=r):u=g,n.splice(u,1)):D=r}return n});w(k.prototype,{beforeSetTickPositions:function(){var a,b=[],d=!1,u,A=this.getExtremes(),l=A.min,h=A.max,g,r=this.isXAxis&&!!this.options.breaks,A=this.options.ordinal,
C=this.chart.options.chart.ignoreHiddenSeries;if(A||r){I(this.series,function(g,c){if(!(C&&!1===g.visible||!1===g.takeOrdinalPosition&&!r)&&(b=b.concat(g.processedXData),a=b.length,b.sort(function(f,c){return f-c}),a))for(c=a-1;c--;)b[c]===b[c+1]&&b.splice(c,1)});a=b.length;if(2<a){u=b[1]-b[0];for(g=a-1;g--&&!d;)b[g+1]-b[g]!==u&&(d=!0);!this.options.keepOrdinalPadding&&(b[0]-l>u||h-b[b.length-1]>u)&&(d=!0)}d?(this.ordinalPositions=b,u=this.ordinal2lin(Math.max(l,b[0]),!0),g=Math.max(this.ordinal2lin(Math.min(h,
b[b.length-1]),!0),1),this.ordinalSlope=h=(h-l)/(g-u),this.ordinalOffset=l-u*h):this.ordinalPositions=this.ordinalSlope=this.ordinalOffset=void 0}this.isOrdinal=A&&d;this.groupIntervalFactor=null},val2lin:function(a,b){var d=this.ordinalPositions;if(d){var u=d.length,e,l;for(e=u;e--;)if(d[e]===a){l=e;break}for(e=u-1;e--;)if(a>d[e]||0===e){a=(a-d[e])/(d[e+1]-d[e]);l=e+a;break}b=b?l:this.ordinalSlope*(l||0)+this.ordinalOffset}else b=a;return b},lin2val:function(a,b){var d=this.ordinalPositions;if(d){var e=
this.ordinalSlope,h=this.ordinalOffset,l=d.length-1,p;if(b)0>a?a=d[0]:a>l?a=d[l]:(l=Math.floor(a),p=a-l);else for(;l--;)if(b=e*l+h,a>=b){e=e*(l+1)+h;p=(a-b)/(e-b);break}return void 0!==p&&void 0!==d[l]?d[l]+(p?p*(d[l+1]-d[l]):0):a}return a},getExtendedPositions:function(){var a=this.chart,b=this.series[0].currentDataGrouping,d=this.ordinalIndex,u=b?b.count+b.unitName:"raw",A=this.getExtremes(),l,p;d||(d=this.ordinalIndex={});d[u]||(l={series:[],chart:a,getExtremes:function(){return{min:A.dataMin,
max:A.dataMax}},options:{ordinal:!0},val2lin:k.prototype.val2lin,ordinal2lin:k.prototype.ordinal2lin},I(this.series,function(g){p={xAxis:l,xData:g.xData,chart:a,destroyGroupedData:h};p.options={dataGrouping:b?{enabled:!0,forced:!0,approximation:"open",units:[[b.unitName,[b.count]]]}:{enabled:!1}};g.processData.apply(p);l.series.push(p)}),this.beforeSetTickPositions.apply(l),d[u]=l.ordinalPositions);return d[u]},getGroupIntervalFactor:function(a,b,d){var e;d=d.processedXData;var h=d.length,l=[];e=
this.groupIntervalFactor;if(!e){for(e=0;e<h-1;e++)l[e]=d[e+1]-d[e];l.sort(function(a,g){return a-g});l=l[Math.floor(h/2)];a=Math.max(a,d[0]);b=Math.min(b,d[h-1]);this.groupIntervalFactor=e=h*l/(b-a)}return e},postProcessTickInterval:function(a){var b=this.ordinalSlope;return b?this.options.breaks?this.closestPointRange:a/(b/this.closestPointRange):a}});k.prototype.ordinal2lin=k.prototype.val2lin;G(t.prototype,"pan",function(a,b){var d=this.xAxis[0],e=b.chartX,h=!1;if(d.options.ordinal&&d.series.length){var l=
this.mouseDownX,p=d.getExtremes(),g=p.dataMax,r=p.min,C=p.max,x=this.hoverPoints,c=d.closestPointRange,l=(l-e)/(d.translationSlope*(d.ordinalSlope||c)),f={ordinalPositions:d.getExtendedPositions()},c=d.lin2val,m=d.val2lin,B;f.ordinalPositions?1<Math.abs(l)&&(x&&I(x,function(n){n.setState()}),0>l?(x=f,B=d.ordinalPositions?d:f):(x=d.ordinalPositions?d:f,B=f),f=B.ordinalPositions,g>f[f.length-1]&&f.push(g),this.fixedRange=C-r,l=d.toFixedRange(null,null,c.apply(x,[m.apply(x,[r,!0])+l,!0]),c.apply(B,[m.apply(B,
[C,!0])+l,!0])),l.min>=Math.min(p.dataMin,r)&&l.max<=Math.max(g,C)&&d.setExtremes(l.min,l.max,!0,!1,{trigger:"pan"}),this.mouseDownX=e,z(this.container,{cursor:"move"})):h=!0}else h=!0;h&&a.apply(this,Array.prototype.slice.call(arguments,1))})})(K);(function(a){function E(){return Array.prototype.slice.call(arguments,1)}function k(a){a.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,t(this.pointArrayMap,["y"]))}var t=a.pick,z=a.wrap,F=a.each,H=a.extend,I=a.isArray,w=a.fireEvent,
h=a.Axis,q=a.Series;H(h.prototype,{isInBreak:function(a,e){var b=a.repeat||Infinity,d=a.from,h=a.to-a.from;e=e>=d?(e-d)%b:b-(d-e)%b;return a.inclusive?e<=h:e<h&&0!==e},isInAnyBreak:function(a,e){var b=this.options.breaks,d=b&&b.length,h,A,l;if(d){for(;d--;)this.isInBreak(b[d],a)&&(h=!0,A||(A=t(b[d].showPoints,this.isXAxis?!1:!0)));l=h&&e?h&&!A:h}return l}});z(h.prototype,"setTickPositions",function(a){a.apply(this,Array.prototype.slice.call(arguments,1));if(this.options.breaks){var e=this.tickPositions,
b=this.tickPositions.info,d=[],h;for(h=0;h<e.length;h++)this.isInAnyBreak(e[h])||d.push(e[h]);this.tickPositions=d;this.tickPositions.info=b}});z(h.prototype,"init",function(a,e,b){var d=this;b.breaks&&b.breaks.length&&(b.ordinal=!1);a.call(this,e,b);a=this.options.breaks;d.isBroken=I(a)&&!!a.length;d.isBroken&&(d.val2lin=function(a){var b=a,e,h;for(h=0;h<d.breakArray.length;h++)if(e=d.breakArray[h],e.to<=a)b-=e.len;else if(e.from>=a)break;else if(d.isInBreak(e,a)){b-=a-e.from;break}return b},d.lin2val=
function(a){var b,e;for(e=0;e<d.breakArray.length&&!(b=d.breakArray[e],b.from>=a);e++)b.to<a?a+=b.len:d.isInBreak(b,a)&&(a+=b.len);return a},d.setExtremes=function(a,b,d,e,g){for(;this.isInAnyBreak(a);)a-=this.closestPointRange;for(;this.isInAnyBreak(b);)b-=this.closestPointRange;h.prototype.setExtremes.call(this,a,b,d,e,g)},d.setAxisTranslation=function(a){h.prototype.setAxisTranslation.call(this,a);a=d.options.breaks;var b=[],e=[],p=0,g,r,C=d.userMin||d.min,x=d.userMax||d.max,c=t(d.pointRangePadding,
0),f,m;F(a,function(f){r=f.repeat||Infinity;d.isInBreak(f,C)&&(C+=f.to%r-C%r);d.isInBreak(f,x)&&(x-=x%r-f.from%r)});F(a,function(c){f=c.from;for(r=c.repeat||Infinity;f-r>C;)f-=r;for(;f<C;)f+=r;for(m=f;m<x;m+=r)b.push({value:m,move:"in"}),b.push({value:m+(c.to-c.from),move:"out",size:c.breakSize})});b.sort(function(f,n){return f.value===n.value?("in"===f.move?0:1)-("in"===n.move?0:1):f.value-n.value});g=0;f=C;F(b,function(c){g+="in"===c.move?1:-1;1===g&&"in"===c.move&&(f=c.value);0===g&&(e.push({from:f,
to:c.value,len:c.value-f-(c.size||0)}),p+=c.value-f-(c.size||0))});d.breakArray=e;d.unitLength=x-C-p+c;w(d,"afterBreaks");d.options.staticScale?d.transA=d.options.staticScale:d.unitLength&&(d.transA*=(x-d.min+c)/d.unitLength);c&&(d.minPixelPadding=d.transA*d.minPointOffset);d.min=C;d.max=x})});z(q.prototype,"generatePoints",function(a){a.apply(this,E(arguments));var e=this.xAxis,b=this.yAxis,d=this.points,h,q=d.length,l=this.options.connectNulls,p;if(e&&b&&(e.options.breaks||b.options.breaks))for(;q--;)h=
d[q],p=null===h.y&&!1===l,p||!e.isInAnyBreak(h.x,!0)&&!b.isInAnyBreak(h.y,!0)||(d.splice(q,1),this.data[q]&&this.data[q].destroyElements())});a.Series.prototype.drawBreaks=function(a,e){var b=this,d=b.points,h,q,l,p;a&&F(e,function(g){h=a.breakArray||[];q=a.isXAxis?a.min:t(b.options.threshold,a.min);F(d,function(b){p=t(b["stack"+g.toUpperCase()],b[g]);F(h,function(g){l=!1;if(q<g.from&&p>g.to||q>g.from&&p<g.from)l="pointBreak";else if(q<g.from&&p>g.from&&p<g.to||q>g.from&&p>g.to&&p<g.from)l="pointInBreak";
l&&w(a,l,{point:b,brk:g})})})})};a.Series.prototype.gappedPath=function(){var a=this.options.gapSize,e=this.points.slice(),b=e.length-1;if(a&&0<b)for(;b--;)e[b+1].x-e[b].x>this.closestPointRange*a&&e.splice(b+1,0,{isNull:!0});return this.getGraphPath(e)};z(a.seriesTypes.column.prototype,"drawPoints",k);z(a.Series.prototype,"drawPoints",k)})(K);(function(a){var E=a.arrayMax,k=a.arrayMin,t=a.Axis,z=a.defaultPlotOptions,F=a.defined,H=a.each,I=a.extend,w=a.format,h=a.isNumber,q=a.merge,G=a.pick,e=a.Point,
b=a.Tooltip,d=a.wrap,u=a.Series.prototype,A=u.processData,l=u.generatePoints,p=u.destroy,g={approximation:"average",groupPixelWidth:2,dateTimeLabelFormats:{millisecond:["%A, %b %e, %H:%M:%S.%L","%A, %b %e, %H:%M:%S.%L","-%H:%M:%S.%L"],second:["%A, %b %e, %H:%M:%S","%A, %b %e, %H:%M:%S","-%H:%M:%S"],minute:["%A, %b %e, %H:%M","%A, %b %e, %H:%M","-%H:%M"],hour:["%A, %b %e, %H:%M","%A, %b %e, %H:%M","-%H:%M"],day:["%A, %b %e, %Y","%A, %b %e","-%A, %b %e, %Y"],week:["Week from %A, %b %e, %Y","%A, %b %e",
"-%A, %b %e, %Y"],month:["%B %Y","%B","-%B %Y"],year:["%Y","%Y","-%Y"]}},r={line:{},spline:{},area:{},areaspline:{},column:{approximation:"sum",groupPixelWidth:10},arearange:{approximation:"range"},areasplinerange:{approximation:"range"},columnrange:{approximation:"range",groupPixelWidth:10},candlestick:{approximation:"ohlc",groupPixelWidth:10},ohlc:{approximation:"ohlc",groupPixelWidth:5}},C=a.defaultDataGroupingUnits=[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",
[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1]],["week",[1]],["month",[1,3,6]],["year",null]],x={sum:function(c){var f=c.length,a;if(!f&&c.hasNulls)a=null;else if(f)for(a=0;f--;)a+=c[f];return a},average:function(c){var f=c.length;c=x.sum(c);h(c)&&f&&(c/=f);return c},averages:function(){var c=[];H(arguments,function(f){c.push(x.average(f))});return c},open:function(c){return c.length?c[0]:c.hasNulls?null:void 0},high:function(c){return c.length?E(c):c.hasNulls?null:void 0},low:function(c){return c.length?
k(c):c.hasNulls?null:void 0},close:function(c){return c.length?c[c.length-1]:c.hasNulls?null:void 0},ohlc:function(c,f,a,g){c=x.open(c);f=x.high(f);a=x.low(a);g=x.close(g);if(h(c)||h(f)||h(a)||h(g))return[c,f,a,g]},range:function(c,f){c=x.low(c);f=x.high(f);if(h(c)||h(f))return[c,f];if(null===c&&null===f)return null}};u.groupData=function(c,f,a,b){var n=this.data,v=this.options.data,m=[],d=[],B=[],e=c.length,J,M,l=!!f,C=[];b="function"===typeof b?b:x[b]||r[this.type]&&x[r[this.type].approximation]||
x[g.approximation];var L=this.pointArrayMap,q=L&&L.length,p=0;M=0;var u,k;q?H(L,function(){C.push([])}):C.push([]);u=q||1;for(k=0;k<=e&&!(c[k]>=a[0]);k++);for(k;k<=e;k++){for(;void 0!==a[p+1]&&c[k]>=a[p+1]||k===e;){J=a[p];this.dataGroupInfo={start:M,length:C[0].length};M=b.apply(this,C);void 0!==M&&(m.push(J),d.push(M),B.push(this.dataGroupInfo));M=k;for(J=0;J<u;J++)C[J].length=0,C[J].hasNulls=!1;p+=1;if(k===e)break}if(k===e)break;if(L){J=this.cropStart+k;var G=n&&n[J]||this.pointClass.prototype.applyOptions.apply({series:this},
[v[J]]),w;for(J=0;J<q;J++)w=G[L[J]],h(w)?C[J].push(w):null===w&&(C[J].hasNulls=!0)}else J=l?f[k]:null,h(J)?C[0].push(J):null===J&&(C[0].hasNulls=!0)}return[m,d,B]};u.processData=function(){var c=this.chart,f=this.options.dataGrouping,a=!1!==this.allowDG&&f&&G(f.enabled,c.options.isStock),g=this.visible||!c.options.chart.ignoreHiddenSeries,n;this.forceCrop=a;this.groupPixelWidth=null;this.hasProcessed=!0;if(!1!==A.apply(this,arguments)&&a){this.destroyGroupedData();var v=this.processedXData,y=this.processedYData,
b=c.plotSizeX,c=this.xAxis,d=c.options.ordinal,r=this.groupPixelWidth=c.getGroupPixelWidth&&c.getGroupPixelWidth();if(r){this.isDirty=n=!0;this.points=null;var e=c.getExtremes(),a=e.min,e=e.max,d=d&&c.getGroupIntervalFactor(a,e,this)||1,b=r*(e-a)/b*d,r=c.getTimeTicks(c.normalizeTimeTickInterval(b,f.units||C),Math.min(a,v[0]),Math.max(e,v[v.length-1]),c.options.startOfWeek,v,this.closestPointRange),v=u.groupData.apply(this,[v,y,r,f.approximation]),y=v[0],d=v[1];if(f.smoothed){f=y.length-1;for(y[f]=
Math.min(y[f],e);f--&&0<f;)y[f]+=b/2;y[0]=Math.max(y[0],a)}this.currentDataGrouping=r.info;this.closestPointRange=r.info.totalRange;this.groupMap=v[2];F(y[0])&&y[0]<c.dataMin&&g&&(c.min===c.dataMin&&(c.min=y[0]),c.dataMin=y[0]);this.processedXData=y;this.processedYData=d}else this.currentDataGrouping=this.groupMap=null;this.hasGroupedData=n}};u.destroyGroupedData=function(){var c=this.groupedData;H(c||[],function(f,a){f&&(c[a]=f.destroy?f.destroy():null)});this.groupedData=null};u.generatePoints=
function(){l.apply(this);this.destroyGroupedData();this.groupedData=this.hasGroupedData?this.points:null};d(e.prototype,"update",function(c){this.dataGroup?a.error(24):c.apply(this,[].slice.call(arguments,1))});d(b.prototype,"tooltipFooterHeaderFormatter",function(c,f,g){var m=f.series,n=m.tooltipOptions,v=m.options.dataGrouping,y=n.xDateFormat,b,d=m.xAxis,r=a.dateFormat;return d&&"datetime"===d.options.type&&v&&h(f.key)?(c=m.currentDataGrouping,v=v.dateTimeLabelFormats,c?(d=v[c.unitName],1===c.count?
y=d[0]:(y=d[1],b=d[2])):!y&&v&&(y=this.getXDateFormat(f,n,d)),y=r(y,f.key),b&&(y+=r(b,f.key+c.totalRange-1)),w(n[(g?"footer":"header")+"Format"],{point:I(f.point,{key:y}),series:m})):c.call(this,f,g)});u.destroy=function(){for(var c=this.groupedData||[],f=c.length;f--;)c[f]&&c[f].destroy();p.apply(this)};d(u,"setOptions",function(c,f){c=c.call(this,f);var a=this.type,b=this.chart.options.plotOptions,n=z[a].dataGrouping;r[a]&&(n||(n=q(g,r[a])),c.dataGrouping=q(n,b.series&&b.series.dataGrouping,b[a].dataGrouping,
f.dataGrouping));this.chart.options.isStock&&(this.requireSorting=!0);return c});d(t.prototype,"setScale",function(c){c.call(this);H(this.series,function(c){c.hasProcessed=!1})});t.prototype.getGroupPixelWidth=function(){var c=this.series,a=c.length,g,b=0,n=!1,v;for(g=a;g--;)(v=c[g].options.dataGrouping)&&(b=Math.max(b,v.groupPixelWidth));for(g=a;g--;)(v=c[g].options.dataGrouping)&&c[g].hasProcessed&&(a=(c[g].processedXData||c[g].data).length,c[g].groupPixelWidth||a>this.chart.plotSizeX/b||a&&v.forced)&&
(n=!0);return n?b:0};t.prototype.setDataGrouping=function(a,f){var c;f=G(f,!0);a||(a={forced:!1,units:null});if(this instanceof t)for(c=this.series.length;c--;)this.series[c].update({dataGrouping:a},!1);else H(this.chart.options.series,function(c){c.dataGrouping=a},!1);f&&this.chart.redraw()}})(K);(function(a){var E=a.each,k=a.Point,t=a.seriesType,z=a.seriesTypes;t("ohlc","column",{lineWidth:1,tooltip:{pointFormat:'\x3cspan class\x3d"highcharts-color-{point.colorIndex}"\x3e\u25cf\x3c/span\x3e \x3cb\x3e {series.name}\x3c/b\x3e\x3cbr/\x3eOpen: {point.open}\x3cbr/\x3eHigh: {point.high}\x3cbr/\x3eLow: {point.low}\x3cbr/\x3eClose: {point.close}\x3cbr/\x3e'},
threshold:null},{directTouch:!1,pointArrayMap:["open","high","low","close"],toYData:function(a){return[a.open,a.high,a.low,a.close]},pointValKey:"close",translate:function(){var a=this,k=a.yAxis,t=!!a.modifyValue,w=["plotOpen","plotHigh","plotLow","plotClose","yBottom"];z.column.prototype.translate.apply(a);E(a.points,function(h){E([h.open,h.high,h.low,h.close,h.low],function(q,G){null!==q&&(t&&(q=a.modifyValue(q)),h[w[G]]=k.toPixels(q,!0))});h.tooltipPos[1]=h.plotHigh+k.pos-a.chart.plotTop})},drawPoints:function(){var a=
this,k=a.chart;E(a.points,function(t){var w,h,q,G,e=t.graphic,b,d=!e;void 0!==t.plotY&&(e||(t.graphic=e=k.renderer.path().add(a.group)),h=e.strokeWidth()%2/2,b=Math.round(t.plotX)-h,q=Math.round(t.shapeArgs.width/2),G=["M",b,Math.round(t.yBottom),"L",b,Math.round(t.plotHigh)],null!==t.open&&(w=Math.round(t.plotOpen)+h,G.push("M",b,w,"L",b-q,w)),null!==t.close&&(w=Math.round(t.plotClose)+h,G.push("M",b,w,"L",b+q,w)),e[d?"attr":"animate"]({d:G}).addClass(t.getClassName(),!0))})},animate:null},{getClassName:function(){return k.prototype.getClassName.call(this)+
(this.open<this.close?" highcharts-point-up":" highcharts-point-down")}})})(K);(function(a){var E=a.defaultPlotOptions,k=a.each,t=a.merge;a=a.seriesType;a("candlestick","ohlc",t(E.column,{states:{hover:{lineWidth:2}},tooltip:E.ohlc.tooltip,threshold:null}),{drawPoints:function(){var a=this,t=a.chart;k(a.points,function(k){var z=k.graphic,w,h,q,G,e,b,d,u=!z;void 0!==k.plotY&&(z||(k.graphic=z=t.renderer.path().add(a.group)),e=z.strokeWidth()%2/2,b=Math.round(k.plotX)-e,w=k.plotOpen,h=k.plotClose,q=
Math.min(w,h),w=Math.max(w,h),d=Math.round(k.shapeArgs.width/2),h=Math.round(q)!==Math.round(k.plotHigh),G=w!==k.yBottom,q=Math.round(q)+e,w=Math.round(w)+e,e=[],e.push("M",b-d,w,"L",b-d,q,"L",b+d,q,"L",b+d,w,"Z","M",b,q,"L",b,h?Math.round(k.plotHigh):q,"M",b,w,"L",b,G?Math.round(k.yBottom):w),z[u?"attr":"animate"]({d:e}).addClass(k.getClassName(),!0))})}})})(K);(function(a){var E=a.addEvent,k=a.each,t=a.noop,z=a.seriesType,F=a.seriesTypes,H=a.TrackerMixin,I=a.SVGRenderer.prototype.symbols,w=a.stableSort;
z("flags","column",{pointRange:0,shape:"flag",stackDistance:12,textAlign:"center",tooltip:{pointFormat:"{point.text}\x3cbr/\x3e"},threshold:null,y:-30},{sorted:!1,noSharedTooltip:!0,allowDG:!1,takeOrdinalPosition:!1,trackerGroups:["markerGroup"],forceCrop:!0,init:a.Series.prototype.init,translate:function(){F.column.prototype.translate.apply(this);var a=this.options,q=this.chart,t=this.points,e=t.length-1,b,d,u=a.onSeries;b=u&&q.get(u);var a=a.onKey||"y",u=b&&b.options.step,A=b&&b.points,l=A&&A.length,
p=this.xAxis,g=this.yAxis,r=p.getExtremes(),C=0,x,c,f;if(b&&b.visible&&l)for(C=(b.pointXOffset||0)+(b.barW||0)/2,b=b.currentDataGrouping,c=A[l-1].x+(b?b.totalRange:0),w(t,function(a,c){return a.x-c.x}),a="plot"+a[0].toUpperCase()+a.substr(1);l--&&t[e]&&!(b=t[e],x=A[l],x.x<=b.x&&void 0!==x[a]&&(b.x<=c&&(b.plotY=x[a],x.x<b.x&&!u&&(f=A[l+1])&&void 0!==f[a]&&(b.plotY+=(b.x-x.x)/(f.x-x.x)*(f[a]-x[a]))),e--,l++,0>e)););k(t,function(a,c){var n;void 0===a.plotY&&(a.x>=r.min&&a.x<=r.max?a.plotY=q.chartHeight-
p.bottom-(p.opposite?p.height:0)+p.offset-g.top:a.shapeArgs={});a.plotX+=C;(d=t[c-1])&&d.plotX===a.plotX&&(void 0===d.stackIndex&&(d.stackIndex=0),n=d.stackIndex+1);a.stackIndex=n})},drawPoints:function(){var h=this.points,q=this.chart,k=q.renderer,e,b,d=this.options,t=d.y,w,l,p,g,r,C,x,c=this.yAxis;for(l=h.length;l--;)p=h[l],x=p.plotX>this.xAxis.len,e=p.plotX,g=p.stackIndex,w=p.options.shape||d.shape,b=p.plotY,void 0!==b&&(b=p.plotY+t-(void 0!==g&&g*d.stackDistance)),r=g?void 0:p.plotX,C=g?void 0:
p.plotY,g=p.graphic,void 0!==b&&0<=e&&!x?(g||(g=p.graphic=k.label("",null,null,w,null,null,d.useHTML).attr({align:"flag"===w?"left":"center",width:d.width,height:d.height,"text-align":d.textAlign}).addClass("highcharts-point").add(this.markerGroup),p.graphic.div&&(p.graphic.div.point=p)),0<e&&(e-=g.strokeWidth()%2),g.attr({text:p.options.title||d.title||"A",x:e,y:b,anchorX:r,anchorY:C}),p.tooltipPos=q.inverted?[c.len+c.pos-q.plotLeft-b,this.xAxis.len-e]:[e,b+c.pos-q.plotTop]):g&&(p.graphic=g.destroy());
d.useHTML&&a.wrap(this.markerGroup,"on",function(c){return a.SVGElement.prototype.on.apply(c.apply(this,[].slice.call(arguments,1)),[].slice.call(arguments,1))})},drawTracker:function(){var a=this.points;H.drawTrackerPoint.apply(this);k(a,function(h){var q=h.graphic;q&&E(q.element,"mouseover",function(){0<h.stackIndex&&!h.raised&&(h._y=q.y,q.attr({y:h._y-8}),h.raised=!0);k(a,function(a){a!==h&&a.raised&&a.graphic&&(a.graphic.attr({y:a._y}),a.raised=!1)})})})},animate:t,buildKDTree:t,setClip:t});I.flag=
function(a,q,k,e,b){return["M",b&&b.anchorX||a,b&&b.anchorY||q,"L",a,q+e,a,q,a+k,q,a+k,q+e,a,q+e,"Z"]};k(["circle","square"],function(a){I[a+"pin"]=function(h,k,e,b,d){var q=d&&d.anchorX;d=d&&d.anchorY;"circle"===a&&b>e&&(h-=Math.round((b-e)/2),e=b);h=I[a](h,k,e,b);q&&d&&h.push("M",q,k>d?k:k+b,"L",q,d);return h}})})(K);(function(a){function E(a,b,d){this.init(a,b,d)}var k=a.addEvent,t=a.Axis,z=a.correctFloat,F=a.defaultOptions,H=a.defined,I=a.destroyObjectProperties,w=a.doc,h=a.each,q=a.fireEvent,
G=a.hasTouch,e=a.isTouchDevice,b=a.merge,d=a.pick,u=a.removeEvent,A=a.wrap,l,p={height:e?20:14,barBorderRadius:0,buttonBorderRadius:0,liveRedraw:a.svg&&!e,margin:10,minWidth:6,step:.2,zIndex:3};F.scrollbar=b(!0,p,F.scrollbar);a.swapXY=l=function(a,b){var g=a.length,d;if(b)for(b=0;b<g;b+=3)d=a[b+1],a[b+1]=a[b+2],a[b+2]=d;return a};E.prototype={init:function(a,r,e){this.scrollbarButtons=[];this.renderer=a;this.userOptions=r;this.options=b(p,r);this.chart=e;this.size=d(this.options.size,this.options.height);
r.enabled&&(this.render(),this.initEvents(),this.addEvents())},render:function(){var a=this.renderer,b=this.options,d=this.size,e;this.group=e=a.g("scrollbar").attr({zIndex:b.zIndex,translateY:-99999}).add();this.track=a.rect().addClass("highcharts-scrollbar-track").attr({x:0,r:b.trackBorderRadius||0,height:d,width:d}).add(e);this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=a.g().add(e);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:d,
width:d,r:b.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(l(["M",-3,d/4,"L",-3,2*d/3,"M",0,d/4,"L",0,2*d/3,"M",3,d/4,"L",3,2*d/3],b.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);this.scrollbarStrokeWidth=this.scrollbar.strokeWidth();this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2);this.drawScrollbarButton(0);this.drawScrollbarButton(1)},position:function(a,b,d,e){var c=this.options.vertical,f=0,g=
this.rendered?"animate":"attr";this.x=a;this.y=b+this.trackBorderWidth;this.width=d;this.xOffset=this.height=e;this.yOffset=f;c?(this.width=this.yOffset=d=f=this.size,this.xOffset=b=0,this.barWidth=e-2*d,this.x=a+=this.options.margin):(this.height=this.xOffset=e=b=this.size,this.barWidth=d-2*e,this.y+=this.options.margin);this.group[g]({translateX:a,translateY:this.y});this.track[g]({width:d,height:e});this.scrollbarButtons[1][g]({translateX:c?0:d-b,translateY:c?e-f:0})},drawScrollbarButton:function(a){var g=
this.renderer,b=this.scrollbarButtons,d=this.options,c=this.size,f;f=g.g().add(this.group);b.push(f);f=g.rect().addClass("highcharts-scrollbar-button").add(f);f.attr(f.crisp({x:-.5,y:-.5,width:c+1,height:c+1,r:d.buttonBorderRadius},f.strokeWidth()));g.path(l(["M",c/2+(a?-1:1),c/2-3,"L",c/2+(a?-1:1),c/2+3,"L",c/2+(a?2:-2),c/2],d.vertical)).addClass("highcharts-scrollbar-arrow").add(b[a])},setRange:function(a,b){var g=this.options,d=g.vertical,c=g.minWidth,f=this.barWidth,m,e,n=this.rendered&&!this.hasDragged?
"animate":"attr";H(f)&&(a=Math.max(a,0),m=Math.ceil(f*a),this.calculatedWidth=e=z(f*Math.min(b,1)-m),e<c&&(m=(f-c+e)*a,e=c),c=Math.floor(m+this.xOffset+this.yOffset),f=e/2-.5,this.from=a,this.to=b,d?(this.scrollbarGroup[n]({translateY:c}),this.scrollbar[n]({height:e}),this.scrollbarRifles[n]({translateY:f}),this.scrollbarTop=c,this.scrollbarLeft=0):(this.scrollbarGroup[n]({translateX:c}),this.scrollbar[n]({width:e}),this.scrollbarRifles[n]({translateX:f}),this.scrollbarLeft=c,this.scrollbarTop=0),
12>=e?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0),!1===g.showFull&&(0>=a&&1<=b?this.group.hide():this.group.show()),this.rendered=!0)},initEvents:function(){var a=this;a.mouseMoveHandler=function(b){var d=a.chart.pointer.normalize(b),e=a.options.vertical?"chartY":"chartX",c=a.initPositions;!a.grabbedCenter||b.touches&&0===b.touches[0][e]||(d=a.cursorToScrollbarPosition(d)[e],e=a[e],e=d-e,a.hasDragged=!0,a.updatePosition(c[0]+e,c[1]+e),a.hasDragged&&q(a,"changed",{from:a.from,to:a.to,
trigger:"scrollbar",DOMType:b.type,DOMEvent:b}))};a.mouseUpHandler=function(b){a.hasDragged&&q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b});a.grabbedCenter=a.hasDragged=a.chartX=a.chartY=null};a.mouseDownHandler=function(b){b=a.chart.pointer.normalize(b);b=a.cursorToScrollbarPosition(b);a.chartX=b.chartX;a.chartY=b.chartY;a.initPositions=[a.from,a.to];a.grabbedCenter=!0};a.buttonToMinClick=function(b){var d=z(a.to-a.from)*a.options.step;a.updatePosition(z(a.from-
d),z(a.to-d));q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.buttonToMaxClick=function(b){var d=(a.to-a.from)*a.options.step;a.updatePosition(a.from+d,a.to+d);q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.trackClick=function(b){var d=a.chart.pointer.normalize(b),e=a.to-a.from,c=a.y+a.scrollbarTop,f=a.x+a.scrollbarLeft;a.options.vertical&&d.chartY>c||!a.options.vertical&&d.chartX>f?a.updatePosition(a.from+e,a.to+e):a.updatePosition(a.from-e,a.to-e);
q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})}},cursorToScrollbarPosition:function(a){var b=this.options,b=b.minWidth>this.calculatedWidth?b.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-b)}},updatePosition:function(a,b){1<b&&(a=z(1-z(b-a)),b=1);0>a&&(b=z(b-a),a=0);this.from=a;this.to=b},update:function(a){this.destroy();this.init(this.chart.renderer,b(!0,this.options,a),this.chart)},addEvents:function(){var a=
this.options.inverted?[1,0]:[0,1],b=this.scrollbarButtons,d=this.scrollbarGroup.element,e=this.mouseDownHandler,c=this.mouseMoveHandler,f=this.mouseUpHandler,a=[[b[a[0]].element,"click",this.buttonToMinClick],[b[a[1]].element,"click",this.buttonToMaxClick],[this.track.element,"click",this.trackClick],[d,"mousedown",e],[w,"mousemove",c],[w,"mouseup",f]];G&&a.push([d,"touchstart",e],[w,"touchmove",c],[w,"touchend",f]);h(a,function(a){k.apply(null,a)});this._events=a},removeEvents:function(){h(this._events,
function(a){u.apply(null,a)});this._events.length=0},destroy:function(){var a=this.chart.scroller;this.removeEvents();h(["track","scrollbarRifles","scrollbar","scrollbarGroup","group"],function(a){this[a]&&this[a].destroy&&(this[a]=this[a].destroy())},this);a&&this===a.scrollbar&&(a.scrollbar=null,I(a.scrollbarButtons))}};A(t.prototype,"init",function(a){var b=this;a.apply(b,Array.prototype.slice.call(arguments,1));b.options.scrollbar&&b.options.scrollbar.enabled&&(b.options.scrollbar.vertical=!b.horiz,
b.options.startOnTick=b.options.endOnTick=!1,b.scrollbar=new E(b.chart.renderer,b.options.scrollbar,b.chart),k(b.scrollbar,"changed",function(a){var e=Math.min(d(b.options.min,b.min),b.min,b.dataMin),c=Math.max(d(b.options.max,b.max),b.max,b.dataMax)-e,f;b.horiz&&!b.reversed||!b.horiz&&b.reversed?(f=e+c*this.to,e+=c*this.from):(f=e+c*(1-this.from),e+=c*(1-this.to));b.setExtremes(e,f,!0,!1,a)}))});A(t.prototype,"render",function(a){var b=Math.min(d(this.options.min,this.min),this.min,this.dataMin),
e=Math.max(d(this.options.max,this.max),this.max,this.dataMax),g=this.scrollbar,c=this.titleOffset||0;a.apply(this,Array.prototype.slice.call(arguments,1));if(g){this.horiz?(g.position(this.left,this.top+this.height+2+this.chart.scrollbarsOffsets[1]+(this.opposite?0:c+this.axisTitleMargin+this.offset),this.width,this.height),c=1):(g.position(this.left+this.width+2+this.chart.scrollbarsOffsets[0]+(this.opposite?c+this.axisTitleMargin+this.offset:0),this.top,this.width,this.height),c=0);if(!this.opposite&&
!this.horiz||this.opposite&&this.horiz)this.chart.scrollbarsOffsets[c]+=this.scrollbar.size+this.scrollbar.options.margin;isNaN(b)||isNaN(e)||!H(this.min)||!H(this.max)?g.setRange(0,0):(c=(this.min-b)/(e-b),b=(this.max-b)/(e-b),this.horiz&&!this.reversed||!this.horiz&&this.reversed?g.setRange(c,b):g.setRange(1-b,1-c))}});A(t.prototype,"getOffset",function(a){var b=this.horiz?2:1,d=this.scrollbar;a.apply(this,Array.prototype.slice.call(arguments,1));d&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[b]+=
d.size+d.options.margin)});A(t.prototype,"destroy",function(a){this.scrollbar&&(this.scrollbar=this.scrollbar.destroy());a.apply(this,Array.prototype.slice.call(arguments,1))});a.Scrollbar=E})(K);(function(a){function E(a){this.init(a)}var k=a.addEvent,t=a.Axis,z=a.Chart,F=a.defaultOptions,H=a.defined,I=a.destroyObjectProperties,w=a.doc,h=a.each,q=a.erase,G=a.error,e=a.extend,b=a.grep,d=a.hasTouch,u=a.isNumber,A=a.isObject,l=a.merge,p=a.pick,g=a.removeEvent,r=a.Scrollbar,C=a.Series,x=a.seriesTypes,
c=a.wrap,f=a.swapXY,m=[].concat(a.defaultDataGroupingUnits),B=function(a){var n=b(arguments,u);if(n.length)return Math[a].apply(0,n)};m[4]=["day",[1,2,3,4]];m[5]=["week",[1,2,3]];e(F,{navigator:{height:40,margin:25,maskInside:!0,series:{type:void 0===x.areaspline?"line":"areaspline",compare:null,dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,smoothed:!0,units:m},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series",className:"highcharts-navigator-series",lineColor:null,
marker:{enabled:!1},pointRange:0,shadow:!1,threshold:null},xAxis:{className:"highcharts-navigator-xaxis",tickLength:0,tickPixelInterval:200,labels:{align:"left",x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}});E.prototype={drawHandle:function(a,b,c,f){this.handles[b][f](c?{translateX:Math.round(this.left+this.height/2-8),translateY:Math.round(this.top+
parseInt(a,10)+.5)}:{translateX:Math.round(this.left+parseInt(a,10)),translateY:Math.round(this.top+this.height/2-8)})},getHandlePath:function(a){return f(["M",-4.5,.5,"L",3.5,.5,"L",3.5,15.5,"L",-4.5,15.5,"L",-4.5,.5,"M",-1.5,4,"L",-1.5,12,"M",.5,4,"L",.5,12],a)},drawOutline:function(a,b,c,f){var n=this.navigatorOptions.maskInside,d=this.outline.strokeWidth(),v=d/2,d=d%2/2,e=this.outlineHeight,m=this.scrollbarHeight,y=this.size,D=this.left-m,g=this.top;c?(D-=v,c=g+b+d,b=g+a+d,a=["M",D+e,g-m-d,"L",
D+e,c,"L",D,c,"L",D,b,"L",D+e,b,"L",D+e,g+y+m].concat(n?["M",D+e,c-v,"L",D+e,b+v]:[])):(a+=D+m-d,b+=D+m-d,g+=v,a=["M",D,g,"L",a,g,"L",a,g+e,"L",b,g+e,"L",b,g,"L",D+y+2*m,g].concat(n?["M",a-v,g,"L",b+v,g]:[]));this.outline[f]({d:a})},drawMasks:function(a,b,c,f){var n=this.left,d=this.top,v=this.height,e,m,y,D;c?(y=[n,n,n],D=[d,d+a,d+b],m=[v,v,v],e=[a,b-a,this.size-b]):(y=[n,n+a,n+b],D=[d,d,d],m=[a,b-a,this.size-b],e=[v,v,v]);h(this.shades,function(a,b){a[f]({x:y[b],y:D[b],width:m[b],height:e[b]})})},
renderElements:function(){var a=this,b=a.navigatorOptions.maskInside,c=a.chart,f=c.inverted,d=c.renderer,e;a.navigatorGroup=e=d.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();h([!b,b,!b],function(b,n){a.shades[n]=d.rect().addClass("highcharts-navigator-mask"+(1===n?"-inside":"-outside")).add(e)});a.outline=d.path().addClass("highcharts-navigator-outline").add(e);h([0,1],function(b){a.handles[b]=d.path(a.getHandlePath(f)).attr({zIndex:7-b}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+
["left","right"][b]).add(e)})},update:function(a){this.destroy();l(!0,this.chart.options.navigator,this.options,a);this.init(this.chart)},render:function(a,b,c,f){var n=this.chart,d,e,v=this.scrollbarHeight,m,y=this.xAxis;d=y.fake?n.xAxis[0]:y;var g=this.navigatorEnabled,D,B=this.rendered;e=n.inverted;var h=n.xAxis[0].minRange;if(!this.hasDragged||H(c)){if(!u(a)||!u(b))if(B)c=0,f=y.width;else return;this.left=p(y.left,n.plotLeft+v+(e?n.plotWidth:0));this.size=D=m=p(y.len,(e?n.plotHeight:n.plotWidth)-
2*v);n=e?v:m+2*v;c=p(c,y.toPixels(a,!0));f=p(f,y.toPixels(b,!0));u(c)&&Infinity!==Math.abs(c)||(c=0,f=n);a=y.toValue(c,!0);b=y.toValue(f,!0);if(Math.abs(b-a)<h)if(this.grabbedLeft)c=y.toPixels(b-h,!0);else if(this.grabbedRight)f=y.toPixels(a+h,!0);else return;this.zoomedMax=Math.min(Math.max(c,f,0),D);this.zoomedMin=Math.min(Math.max(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(c,f),0),D);this.range=this.zoomedMax-this.zoomedMin;D=Math.round(this.zoomedMax);c=Math.round(this.zoomedMin);
g&&(this.navigatorGroup.attr({visibility:"visible"}),B=B&&!this.hasDragged?"animate":"attr",this.drawMasks(c,D,e,B),this.drawOutline(c,D,e,B),this.drawHandle(c,0,e,B),this.drawHandle(D,1,e,B));this.scrollbar&&(e?(e=this.top-v,d=this.left-v+(g||!d.opposite?0:(d.titleOffset||0)+d.axisTitleMargin),v=m+2*v):(e=this.top+(g?this.height:-v),d=this.left-v),this.scrollbar.position(d,e,n,v),this.scrollbar.setRange(this.zoomedMin/m,this.zoomedMax/m));this.rendered=!0}},addMouseEvents:function(){var a=this,b=
a.chart,c=b.container,f=[],e,m;a.mouseMoveHandler=e=function(b){a.onMouseMove(b)};a.mouseUpHandler=m=function(b){a.onMouseUp(b)};f=a.getPartsEvents("mousedown");f.push(k(c,"mousemove",e),k(w,"mouseup",m));d&&(f.push(k(c,"touchmove",e),k(w,"touchend",m)),f.concat(a.getPartsEvents("touchstart")));a.eventsToUnbind=f;a.series&&a.series[0]&&f.push(k(a.series[0].xAxis,"foundExtremes",function(){b.navigator.modifyNavigatorAxisExtremes()}))},getPartsEvents:function(a){var b=this,c=[];h(["shades","handles"],
function(n){h(b[n],function(f,d){c.push(k(f.element,a,function(a){b[n+"Mousedown"](a,d)}))})});return c},shadesMousedown:function(a,b){a=this.chart.pointer.normalize(a);var c=this.chart,f=this.xAxis,n=this.zoomedMin,d=this.left,e=this.size,v=this.range,m=a.chartX,g;c.inverted&&(m=a.chartY,d=this.top);1===b?(this.grabbedCenter=m,this.fixedWidth=v,this.dragOffset=m-n):(a=m-d-v/2,0===b?a=Math.max(0,a):2===b&&a+v>=e&&(a=e-v,g=this.getUnionExtremes().dataMax),a!==n&&(this.fixedWidth=v,b=f.toFixedRange(a,
a+v,null,g),c.xAxis[0].setExtremes(Math.min(b.min,b.max),Math.max(b.min,b.max),!0,null,{trigger:"navigator"})))},handlesMousedown:function(a,b){this.chart.pointer.normalize(a);a=this.chart;var c=a.xAxis[0],f=a.inverted&&!c.reversed||!a.inverted&&c.reversed;0===b?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=f?c.min:c.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=f?c.max:c.min);a.fixedRange=null},onMouseMove:function(a){var b=this,c=b.chart,
f=b.left,n=b.navigatorSize,d=b.range,e=b.dragOffset,m=c.inverted;a.touches&&0===a.touches[0].pageX||(a=c.pointer.normalize(a),c=a.chartX,m&&(f=b.top,c=a.chartY),b.grabbedLeft?(b.hasDragged=!0,b.render(0,0,c-f,b.otherHandlePos)):b.grabbedRight?(b.hasDragged=!0,b.render(0,0,b.otherHandlePos,c-f)):b.grabbedCenter&&(b.hasDragged=!0,c<e?c=e:c>n+e-d&&(c=n+e-d),b.render(0,0,c-e,c-e+d)),b.hasDragged&&b.scrollbar&&b.scrollbar.options.liveRedraw&&(a.DOMType=a.type,setTimeout(function(){b.onMouseUp(a)},0)))},
onMouseUp:function(a){var b=this.chart,c=this.xAxis,f=this.scrollbar,n,d,e=a.DOMEvent||a;(!this.hasDragged||f&&f.hasDragged)&&"scrollbar"!==a.trigger||(this.zoomedMin===this.otherHandlePos?n=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(d=this.fixedExtreme),this.zoomedMax===this.size&&(d=this.getUnionExtremes().dataMax),c=c.toFixedRange(this.zoomedMin,this.zoomedMax,n,d),H(c.min)&&b.xAxis[0].setExtremes(Math.min(c.min,c.max),Math.max(c.min,c.max),!0,this.hasDragged?!1:null,{trigger:"navigator",
triggerOp:"navigator-drag",DOMEvent:e}));"mousemove"!==a.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null)},removeEvents:function(){this.eventsToUnbind&&(h(this.eventsToUnbind,function(a){a()}),this.eventsToUnbind=void 0);this.removeBaseSeriesEvents()},removeBaseSeriesEvents:function(){var a=this.baseSeries||[];this.navigatorEnabled&&a[0]&&!1!==this.navigatorOptions.adaptToUpdatedData&&(h(a,function(a){g(a,
"updatedData",this.updatedDataHandler)},this),a[0].xAxis&&g(a[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))},init:function(a){var b=a.options,f=b.navigator,d=f.enabled,e=b.scrollbar,n=e.enabled,b=d?f.height:0,m=n?e.height:0;this.handles=[];this.shades=[];this.chart=a;this.setBaseSeries();this.height=b;this.scrollbarHeight=m;this.scrollbarEnabled=n;this.navigatorEnabled=d;this.navigatorOptions=f;this.scrollbarOptions=e;this.outlineHeight=b+m;this.opposite=p(f.opposite,!d&&a.inverted);var g=
this,e=g.baseSeries,n=a.xAxis.length,h=a.yAxis.length,q=e&&e[0]&&e[0].xAxis||a.xAxis[0];a.extraMargin={type:g.opposite?"plotTop":"marginBottom",value:(d||!a.inverted?g.outlineHeight:0)+f.margin};a.inverted&&(a.extraMargin.type=g.opposite?"marginRight":"plotLeft");a.isDirtyBox=!0;g.navigatorEnabled?(g.xAxis=new t(a,l({breaks:q.options.breaks,ordinal:q.options.ordinal},f.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",isX:!0,type:"datetime",index:n,offset:0,keepOrdinalPadding:!0,startOnTick:!1,
endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},a.inverted?{offsets:[m,0,-m,0],width:b}:{offsets:[0,-m,0,m],height:b})),g.yAxis=new t(a,l(f.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:h,zoomEnabled:!1},a.inverted?{width:b}:{height:b})),e||f.series.data?g.addBaseSeries():0===a.series.length&&c(a,"redraw",function(b,c){0<a.series.length&&!g.series&&(g.setBaseSeries(),a.redraw=b);b.call(a,c)}),g.renderElements(),g.addMouseEvents()):g.xAxis={translate:function(b,c){var f=a.xAxis[0],
d=f.getExtremes(),e=f.len-2*m,n=B("min",f.options.min,d.dataMin),f=B("max",f.options.max,d.dataMax)-n;return c?b*f/e+n:e*(b-n)/f},toPixels:function(a){return this.translate(a)},toValue:function(a){return this.translate(a,!0)},toFixedRange:t.prototype.toFixedRange,fake:!0};a.options.scrollbar.enabled&&(a.scrollbar=g.scrollbar=new r(a.renderer,l(a.options.scrollbar,{margin:g.navigatorEnabled?0:10,vertical:a.inverted}),a),k(g.scrollbar,"changed",function(b){var c=g.size,f=c*this.to,c=c*this.from;g.hasDragged=
g.scrollbar.hasDragged;g.render(0,0,c,f);(a.options.scrollbar.liveRedraw||"mousemove"!==b.DOMType)&&setTimeout(function(){g.onMouseUp(b)})}));g.addBaseSeriesEvents();g.addChartEvents()},getUnionExtremes:function(a){var b=this.chart.xAxis[0],c=this.xAxis,f=c.options,d=b.options,e;a&&null===b.dataMin||(e={dataMin:p(f&&f.min,B("min",d.min,b.dataMin,c.dataMin,c.min)),dataMax:p(f&&f.max,B("max",d.max,b.dataMax,c.dataMax,c.max))});return e},setBaseSeries:function(a){var b=this.chart,c;a=a||b.options&&b.options.navigator.baseSeries||
0;this.series&&(this.removeBaseSeriesEvents(),h(this.series,function(a){a.destroy()}));c=this.baseSeries=[];h(b.series||[],function(b,f){(b.options.showInNavigator||(f===a||b.options.id===a)&&!1!==b.options.showInNavigator)&&c.push(b)});this.xAxis&&!this.xAxis.fake&&this.addBaseSeries()},addBaseSeries:function(){var a=this,b=a.chart,c=a.series=[],f=a.baseSeries,d,e,m=a.navigatorOptions.series,g,B={enableMouseTracking:!1,index:null,group:"nav",padXAxis:!1,xAxis:"navigator-x-axis",yAxis:"navigator-y-axis",
showInLegend:!1,stacking:!1,isInternal:!0,visible:!0};f?h(f,function(f,n){B.name="Navigator "+(n+1);d=f.options||{};g=d.navigatorOptions||{};e=l(d,B,m,g);n=g.data||m.data;a.hasNavigatorData=a.hasNavigatorData||!!n;e.data=n||d.data&&d.data.slice(0);f.navigatorSeries=b.initSeries(e);c.push(f.navigatorSeries)}):(e=l(m,B),e.data=m.data,a.hasNavigatorData=!!e.data,c.push(b.initSeries(e)));this.addBaseSeriesEvents()},addBaseSeriesEvents:function(){var a=this,b=a.baseSeries||[];b[0]&&b[0].xAxis&&k(b[0].xAxis,
"foundExtremes",this.modifyBaseAxisExtremes);!1!==this.navigatorOptions.adaptToUpdatedData&&h(b,function(b){b.xAxis&&k(b,"updatedData",this.updatedDataHandler);k(b,"remove",function(){this.navigatorSeries&&(q(a.series,this.navigatorSeries),this.navigatorSeries.remove(!1),delete this.navigatorSeries)})},this)},modifyNavigatorAxisExtremes:function(){var a=this.xAxis,b;a.getExtremes&&(!(b=this.getUnionExtremes(!0))||b.dataMin===a.min&&b.dataMax===a.max||(a.min=b.dataMin,a.max=b.dataMax))},modifyBaseAxisExtremes:function(){var a=
this.chart.navigator,b=this.getExtremes(),c=b.dataMin,f=b.dataMax,b=b.max-b.min,d=a.stickToMin,e=a.stickToMax,m,g,B=a.series&&a.series[0],h=!!this.setExtremes;this.eventArgs&&"rangeSelectorButton"===this.eventArgs.trigger||(d&&(g=c,m=g+b),e&&(m=f,d||(g=Math.max(m-b,B&&B.xData?B.xData[0]:-Number.MAX_VALUE))),h&&(d||e)&&u(g)&&(this.min=this.userMin=g,this.max=this.userMax=m));a.stickToMin=a.stickToMax=null},updatedDataHandler:function(){var a=this.chart.navigator,b=this.navigatorSeries;a.stickToMin=
u(this.xAxis.min)&&this.xAxis.min<=this.xData[0];a.stickToMax=Math.round(a.zoomedMax)>=Math.round(a.size);b&&!a.hasNavigatorData&&(b.options.pointStart=this.xData[0],b.setData(this.options.data,!1,null,!1))},addChartEvents:function(){k(this.chart,"redraw",function(){var a=this.navigator,b=a&&(a.baseSeries&&a.baseSeries[0]&&a.baseSeries[0].xAxis||a.scrollbar&&this.xAxis[0]);b&&a.render(b.min,b.max)})},destroy:function(){this.removeEvents();this.xAxis&&(q(this.chart.xAxis,this.xAxis),q(this.chart.axes,
this.xAxis));this.yAxis&&(q(this.chart.yAxis,this.yAxis),q(this.chart.axes,this.yAxis));h(this.series||[],function(a){a.destroy&&a.destroy()});h("series xAxis yAxis shades outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" "),function(a){this[a]&&this[a].destroy&&this[a].destroy();this[a]=null},this);h([this.handles],function(a){I(a)},this)}};a.Navigator=E;c(t.prototype,"zoom",function(a,b,c){var f=this.chart,d=f.options,e=d.chart.zoomType,m=d.navigator,
d=d.rangeSelector,n;this.isXAxis&&(m&&m.enabled||d&&d.enabled)&&("x"===e?f.resetZoomButton="blocked":"y"===e?n=!1:"xy"===e&&(f=this.previousZoom,H(b)?this.previousZoom=[this.min,this.max]:f&&(b=f[0],c=f[1],delete this.previousZoom)));return void 0!==n?n:a.call(this,b,c)});c(z.prototype,"init",function(a,b,c){k(this,"beforeRender",function(){var a=this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new E(this)});a.call(this,b,c)});c(z.prototype,"setChartSize",function(a){var b=
this.legend,c=this.navigator,f,d,e,m;a.apply(this,[].slice.call(arguments,1));c&&(d=b.options,e=c.xAxis,m=c.yAxis,f=c.scrollbarHeight,this.inverted?(c.left=c.opposite?this.chartWidth-f-c.height:this.spacing[3]+f,c.top=this.plotTop+f):(c.left=this.plotLeft+f,c.top=c.navigatorOptions.top||this.chartHeight-c.height-f-this.spacing[2]-("bottom"===d.verticalAlign&&d.enabled&&!d.floating?b.legendHeight+p(d.margin,10):0)),e&&m&&(this.inverted?e.options.left=m.options.left=c.left:e.options.top=m.options.top=
c.top,e.setAxisSize(),m.setAxisSize()))});c(C.prototype,"addPoint",function(a,b,c,f,d){var e=this.options.turboThreshold;e&&this.xData.length>e&&A(b,!0)&&this.chart.navigator&&G(20,!0);a.call(this,b,c,f,d)});c(z.prototype,"addSeries",function(a,b,c,f){a=a.call(this,b,!1,f);this.navigator&&this.navigator.setBaseSeries();p(c,!0)&&this.redraw();return a});c(C.prototype,"update",function(a,b,c){a.call(this,b,!1);this.chart.navigator&&this.chart.navigator.setBaseSeries();p(c,!0)&&this.chart.redraw()});
z.prototype.callbacks.push(function(a){var b=a.navigator;b&&(a=a.xAxis[0].getExtremes(),b.render(a.min,a.max))})})(K);(function(a){function E(a){this.init(a)}var k=a.addEvent,t=a.Axis,z=a.Chart,F=a.css,H=a.createElement,I=a.dateFormat,w=a.defaultOptions,h=w.global.useUTC,q=a.defined,G=a.destroyObjectProperties,e=a.discardElement,b=a.each,d=a.extend,u=a.fireEvent,A=a.Date,l=a.isNumber,p=a.merge,g=a.pick,r=a.pInt,C=a.splat,x=a.wrap;d(w,{rangeSelector:{buttonTheme:{"stroke-width":0,width:28,height:18,
padding:2,zIndex:7},height:35,inputPosition:{align:"right"}}});w.lang=p(w.lang,{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"From",rangeSelectorTo:"To"});E.prototype={clickButton:function(a,f){var c=this,d=c.chart,e=c.buttonOptions[a],v=d.xAxis[0],y=d.scroller&&d.scroller.getUnionExtremes()||v||{},D=y.dataMin,q=y.dataMax,p,r=v&&Math.round(Math.min(v.max,g(q,v.max))),u=e.type,w,y=e._range,x,L,z,A=e.dataGrouping;if(null!==D&&null!==q){d.fixedRange=y;A&&(this.forcedDataGrouping=!0,t.prototype.setDataGrouping.call(v||
{chart:this.chart},A,!1));if("month"===u||"year"===u)v?(u={range:e,max:r,dataMin:D,dataMax:q},p=v.minFromRange.call(u),l(u.newMax)&&(r=u.newMax)):y=e;else if(y)p=Math.max(r-y,D),r=Math.min(p+y,q);else if("ytd"===u)if(v)void 0===q&&(D=Number.MAX_VALUE,q=Number.MIN_VALUE,b(d.series,function(a){a=a.xData;D=Math.min(a[0],D);q=Math.max(a[a.length-1],q)}),f=!1),r=c.getYTDExtremes(q,D,h),p=x=r.min,r=r.max;else{k(d,"beforeRender",function(){c.clickButton(a)});return}else"all"===u&&v&&(p=D,r=q);c.setSelected(a);
v?v.setExtremes(p,r,g(f,1),null,{trigger:"rangeSelectorButton",rangeSelectorButton:e}):(w=C(d.options.xAxis)[0],z=w.range,w.range=y,L=w.min,w.min=x,k(d,"load",function(){w.range=z;w.min=L}))}},setSelected:function(a){this.selected=this.options.selected=a},defaultButtons:[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],init:function(a){var c=this,d=a.options.rangeSelector,
e=d.buttons||[].concat(c.defaultButtons),g=d.selected,h=function(){var a=c.minInput,b=c.maxInput;a&&a.blur&&u(a,"blur");b&&b.blur&&u(b,"blur")};c.chart=a;c.options=d;c.buttons=[];a.extraTopMargin=d.height;c.buttonOptions=e;this.unMouseDown=k(a.container,"mousedown",h);this.unResize=k(a,"resize",h);b(e,c.computeButtonRange);void 0!==g&&e[g]&&this.clickButton(g,!1);k(a,"load",function(){k(a.xAxis[0],"setExtremes",function(b){this.max-this.min!==a.fixedRange&&"rangeSelectorButton"!==b.trigger&&"updatedData"!==
b.trigger&&c.forcedDataGrouping&&this.setDataGrouping(!1,!1)})})},updateButtonStates:function(){var a=this.chart,f=a.xAxis[0],d=Math.round(f.max-f.min),e=!f.hasVisibleSeries,a=a.scroller&&a.scroller.getUnionExtremes()||f,g=a.dataMin,v=a.dataMax,a=this.getYTDExtremes(v,g,h),q=a.min,k=a.max,p=this.selected,r=l(p),u=this.options.allButtonsEnabled,t=this.buttons;b(this.buttonOptions,function(a,b){var c=a._range,m=a.type,n=a.count||1;a=t[b];var h=0;b=b===p;var B=c>v-g,l=c<f.minRange,D=!1,y=!1,c=c===d;
("month"===m||"year"===m)&&d>=864E5*{month:28,year:365}[m]*n&&d<=864E5*{month:31,year:366}[m]*n?c=!0:"ytd"===m?(c=k-q===d,D=!b):"all"===m&&(c=f.max-f.min>=v-g,y=!b&&r&&c);m=!u&&(B||l||y||e);c=b&&c||c&&!r&&!D;m?h=3:c&&(r=!0,h=2);a.state!==h&&a.setState(h)})},computeButtonRange:function(a){var b=a.type,c=a.count||1,d={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(d[b])a._range=d[b]*c;else if("month"===b||"year"===b)a._range=864E5*{month:30,year:365}[b]*c},setInputValue:function(a,
b){var c=this.chart.options.rangeSelector,f=this[a+"Input"];q(b)&&(f.previousValue=f.HCTime,f.HCTime=b);f.value=I(c.inputEditDateFormat||"%Y-%m-%d",f.HCTime);this[a+"DateBox"].attr({text:I(c.inputDateFormat||"%b %e, %Y",f.HCTime)})},showInput:function(a){var b=this.inputGroup,c=this[a+"DateBox"];F(this[a+"Input"],{left:b.translateX+c.x+"px",top:b.translateY+"px",width:c.width-2+"px",height:c.height-2+"px",border:"2px solid silver"})},hideInput:function(a){F(this[a+"Input"],{border:0,width:"1px",height:"1px"});
this.setInputValue(a)},drawInput:function(a){function b(){var a=p.value,b=(g.inputDateParser||Date.parse)(a),f=d.xAxis[0],e=d.scroller&&d.scroller.xAxis?d.scroller.xAxis:f,m=e.dataMin,e=e.dataMax;b!==p.previousValue&&(p.previousValue=b,l(b)||(b=a.split("-"),b=Date.UTC(r(b[0]),r(b[1])-1,r(b[2]))),l(b)&&(h||(b+=6E4*(new Date).getTimezoneOffset()),k?b>c.maxInput.HCTime?b=void 0:b<m&&(b=m):b<c.minInput.HCTime?b=void 0:b>e&&(b=e),void 0!==b&&f.setExtremes(k?b:f.min,k?f.max:b,void 0,void 0,{trigger:"rangeSelectorInput"})))}
var c=this,d=c.chart,e=d.renderer,g=d.options.rangeSelector,q=c.div,k="min"===a,p,u,t=this.inputGroup;this[a+"Label"]=u=e.label(w.lang[k?"rangeSelectorFrom":"rangeSelectorTo"],this.inputGroup.offset).addClass("highcharts-range-label").attr({padding:2}).add(t);t.offset+=u.width+5;this[a+"DateBox"]=e=e.label("",t.offset).addClass("highcharts-range-input").attr({padding:2,width:g.inputBoxWidth||90,height:g.inputBoxHeight||17,stroke:g.inputBoxBorderColor||"#cccccc","stroke-width":1,"text-align":"center"}).on("click",
function(){c.showInput(a);c[a+"Input"].focus()}).add(t);t.offset+=e.width+(k?10:0);this[a+"Input"]=p=H("input",{name:a,className:"highcharts-range-selector",type:"text"},{top:d.plotTop+"px"},q);p.onfocus=function(){c.showInput(a)};p.onblur=function(){c.hideInput(a)};p.onchange=b;p.onkeypress=function(a){13===a.keyCode&&b()}},getPosition:function(){var a=this.chart,b=a.options.rangeSelector,a=g((b.buttonPosition||{}).y,a.plotTop-a.axisOffset[0]-b.height);return{buttonTop:a,inputTop:a-10}},getYTDExtremes:function(a,
b,d){var c=new A(a),f=c[A.hcGetFullYear]();d=d?A.UTC(f,0,1):+new A(f,0,1);b=Math.max(b||0,d);c=c.getTime();return{max:Math.min(a||c,c),min:b}},render:function(a,f){var c=this,e=c.chart,n=e.renderer,h=e.container,l=e.options,k=l.exporting&&!1!==l.exporting.enabled&&l.navigation&&l.navigation.buttonOptions,p=l.rangeSelector,r=c.buttons,l=w.lang,t=c.div,t=c.inputGroup,u=p.buttonTheme,x=p.buttonPosition||{},z=p.inputEnabled,A=u&&u.states,C=e.plotLeft,E,G=this.getPosition(),F=c.group,I=c.rendered;!1!==
p.enabled&&(I||(c.group=F=n.g("range-selector-buttons").add(),c.zoomText=n.text(l.rangeSelectorZoom,g(x.x,C),15).css(p.labelStyle).add(F),E=g(x.x,C)+c.zoomText.getBBox().width+5,b(c.buttonOptions,function(a,b){r[b]=n.button(a.text,E,0,function(){c.clickButton(b);c.isActive=!0},u,A&&A.hover,A&&A.select,A&&A.disabled).attr({"text-align":"center"}).add(F);E+=r[b].width+g(p.buttonSpacing,5)}),!1!==z&&(c.div=t=H("div",null,{position:"relative",height:0,zIndex:1}),h.parentNode.insertBefore(t,h),c.inputGroup=
t=n.g("input-group").add(),t.offset=0,c.drawInput("min"),c.drawInput("max"))),c.updateButtonStates(),F[I?"animate":"attr"]({translateY:G.buttonTop}),!1!==z&&(t.align(d({y:G.inputTop,width:t.offset,x:k&&G.inputTop<(k.y||0)+k.height-e.spacing[0]?-40:0},p.inputPosition),!0,e.spacingBox),q(z)||(e=F.getBBox(),t[t.alignAttr.translateX<e.x+e.width+10?"hide":"show"]()),c.setInputValue("min",a),c.setInputValue("max",f)),c.rendered=!0)},update:function(a){var b=this.chart;p(!0,b.options.rangeSelector,a);this.destroy();
this.init(b)},destroy:function(){var b=this,f=b.minInput,d=b.maxInput;b.unMouseDown();b.unResize();G(b.buttons);f&&(f.onfocus=f.onblur=f.onchange=null);d&&(d.onfocus=d.onblur=d.onchange=null);a.objectEach(b,function(a,c){a&&"chart"!==c&&(a.destroy?a.destroy():a.nodeType&&e(this[c]));a!==E.prototype[c]&&(b[c]=null)},this)}};t.prototype.toFixedRange=function(a,b,d,e){var c=this.chart&&this.chart.fixedRange;a=g(d,this.translate(a,!0,!this.horiz));b=g(e,this.translate(b,!0,!this.horiz));d=c&&(b-a)/c;
.7<d&&1.3>d&&(e?a=b-c:b=a+c);l(a)||(a=b=void 0);return{min:a,max:b}};t.prototype.minFromRange=function(){var a=this.range,b={month:"Month",year:"FullYear"}[a.type],d,e=this.max,n,h,p=function(a,c){var d=new Date(a),f=d["get"+b]();d["set"+b](f+c);f===d["get"+b]()&&d.setDate(0);return d.getTime()-a};l(a)?(d=e-a,h=a):(d=e+p(e,-a.count),this.chart&&(this.chart.fixedRange=e-d));n=g(this.dataMin,Number.MIN_VALUE);l(d)||(d=n);d<=n&&(d=n,void 0===h&&(h=p(d,a.count)),this.newMax=Math.min(d+h,this.dataMax));
l(e)||(d=void 0);return d};x(z.prototype,"init",function(a,b,d){k(this,"init",function(){this.options.rangeSelector.enabled&&(this.rangeSelector=new E(this))});a.call(this,b,d)});z.prototype.callbacks.push(function(a){function b(){c=a.xAxis[0].getExtremes();l(c.min)&&d.render(c.min,c.max)}var c,d=a.rangeSelector,e,g;d&&(g=k(a.xAxis[0],"afterSetExtremes",function(a){d.render(a.min,a.max)}),e=k(a,"redraw",b),b());k(a,"destroy",function(){d&&(e(),g())})});a.RangeSelector=E})(K);(function(a){var E=a.arrayMax,
k=a.arrayMin,t=a.Axis,z=a.Chart,F=a.defined,H=a.each,I=a.format,w=a.grep,h=a.inArray,q=a.isNumber,G=a.isString,e=a.map,b=a.merge,d=a.pick,u=a.Point,A=a.Series,l=a.splat,p=a.SVGRenderer,g=a.wrap,r=A.prototype,C=r.init,x=r.processData,c=u.prototype.tooltipFormatter;a.StockChart=a.stockChart=function(c,g,h){var f=G(c)||c.nodeName,m=arguments[f?1:0],p=m.series,k=a.getOptions(),q,r=d(m.navigator&&m.navigator.enabled,k.navigator.enabled,!0),t=r?{startOnTick:!1,endOnTick:!1}:null,B={marker:{enabled:!1,radius:2}},
u={shadow:!1,borderWidth:0};m.xAxis=e(l(m.xAxis||{}),function(a){return b({minPadding:0,maxPadding:0,ordinal:!0,title:{text:null},labels:{overflow:"justify"},showLastLabel:!0},k.xAxis,a,{type:"datetime",categories:null},t)});m.yAxis=e(l(m.yAxis||{}),function(a){q=d(a.opposite,!0);return b({labels:{y:-2},opposite:q,showLastLabel:!1,title:{text:null}},k.yAxis,a)});m.series=null;m=b({chart:{panning:!0,pinchType:"x"},navigator:{enabled:r},scrollbar:{enabled:d(k.scrollbar.enabled,!0)},rangeSelector:{enabled:d(k.rangeSelector.enabled,
!0)},title:{text:null},tooltip:{shared:!0,crosshairs:!0},legend:{enabled:!1},plotOptions:{line:B,spline:B,area:B,areaspline:B,arearange:B,areasplinerange:B,column:u,columnrange:u,candlestick:u,ohlc:u}},m,{isStock:!0});m.series=p;return f?new z(c,m,h):new z(m,g)};g(t.prototype,"autoLabelAlign",function(a){var b=this.chart,c=this.options,b=b._labelPanes=b._labelPanes||{},d=this.options.labels;return this.chart.options.isStock&&"yAxis"===this.coll&&(c=c.top+","+c.height,!b[c]&&d.enabled)?(15===d.x&&
(d.x=0),void 0===d.align&&(d.align="right"),b[c]=this,"right"):a.call(this,[].slice.call(arguments,1))});g(t.prototype,"destroy",function(a){var b=this.chart,c=this.options&&this.options.top+","+this.options.height;c&&b._labelPanes&&b._labelPanes[c]===this&&delete b._labelPanes[c];return a.call(this,Array.prototype.slice.call(arguments,1))});g(t.prototype,"getPlotLinePath",function(b,c,g,n,l,p){var f=this,m=this.isLinked&&!this.series?this.linkedParent.series:this.series,k=f.chart,r=k.renderer,t=
f.left,v=f.top,u,B,y,w,x=[],A=[],z,C;if("xAxis"!==f.coll&&"yAxis"!==f.coll)return b.apply(this,[].slice.call(arguments,1));A=function(a){var b="xAxis"===a?"yAxis":"xAxis";a=f.options[b];return q(a)?[k[b][a]]:G(a)?[k.get(a)]:e(m,function(a){return a[b]})}(f.coll);H(f.isXAxis?k.yAxis:k.xAxis,function(a){if(F(a.options.id)?-1===a.options.id.indexOf("navigator"):1){var b=a.isXAxis?"yAxis":"xAxis",b=F(a.options[b])?k[b][a.options[b]]:k[b][0];f===b&&A.push(a)}});z=A.length?[]:[f.isXAxis?k.yAxis[0]:k.xAxis[0]];
H(A,function(b){-1!==h(b,z)||a.find(z,function(a){return a.pos===b.pos&&a.len&&b.len})||z.push(b)});C=d(p,f.translate(c,null,null,n));q(C)&&(f.horiz?H(z,function(a){var b;B=a.pos;w=B+a.len;u=y=Math.round(C+f.transB);if(u<t||u>t+f.width)l?u=y=Math.min(Math.max(t,u),t+f.width):b=!0;b||x.push("M",u,B,"L",y,w)}):H(z,function(a){var b;u=a.pos;y=u+a.len;B=w=Math.round(v+f.height-C);if(B<v||B>v+f.height)l?B=w=Math.min(Math.max(v,B),f.top+f.height):b=!0;b||x.push("M",u,B,"L",y,w)}));return 0<x.length?r.crispPolyLine(x,
g||1):null});t.prototype.getPlotBandPath=function(a,b){b=this.getPlotLinePath(b,null,null,!0);a=this.getPlotLinePath(a,null,null,!0);var c=[],d;if(a&&b)if(a.toString()===b.toString())c=a,c.flat=!0;else for(d=0;d<a.length;d+=6)c.push("M",a[d+1],a[d+2],"L",a[d+4],a[d+5],b[d+4],b[d+5],b[d+1],b[d+2],"z");else c=null;return c};p.prototype.crispPolyLine=function(a,b){var c;for(c=0;c<a.length;c+=6)a[c+1]===a[c+4]&&(a[c+1]=a[c+4]=Math.round(a[c+1])-b%2/2),a[c+2]===a[c+5]&&(a[c+2]=a[c+5]=Math.round(a[c+2])+
b%2/2);return a};g(t.prototype,"hideCrosshair",function(a,b){a.call(this,b);this.crossLabel&&(this.crossLabel=this.crossLabel.hide())});g(t.prototype,"drawCrosshair",function(a,b,c){var e,f;a.call(this,b,c);if(F(this.crosshair.label)&&this.crosshair.label.enabled&&this.cross){a=this.chart;var g=this.options.crosshair.label,h=this.horiz;e=this.opposite;f=this.left;var m=this.top,k=this.crossLabel,l,p=g.format,q="",t="inside"===this.options.tickPosition,r=!1!==this.crosshair.snap,u=0;b||(b=this.cross&&
this.cross.e);l=h?"center":e?"right"===this.labelAlign?"right":"left":"left"===this.labelAlign?"left":"center";k||(k=this.crossLabel=a.renderer.label(null,null,null,g.shape||"callout").addClass("highcharts-crosshair-label"+(this.series[0]&&" highcharts-color-"+this.series[0].colorIndex)).attr({align:g.align||l,padding:d(g.padding,8),r:d(g.borderRadius,3),zIndex:2}).add(this.labelGroup));h?(l=r?c.plotX+f:b.chartX,m+=e?0:this.height):(l=e?this.width+f:0,m=r?c.plotY+m:b.chartY);p||g.formatter||(this.isDatetimeAxis&&
(q="%b %d, %Y"),p="{value"+(q?":"+q:"")+"}");b=r?c[this.isXAxis?"x":"y"]:this.toValue(h?b.chartX:b.chartY);k.attr({text:p?I(p,{value:b}):g.formatter.call(this,b),x:l,y:m,visibility:"visible"});b=k.getBBox();if(h){if(t&&!e||!t&&e)m=k.y-b.height}else m=k.y-b.height/2;h?(e=f-b.x,f=f+this.width-b.x):(e="left"===this.labelAlign?f:0,f="right"===this.labelAlign?f+this.width:a.chartWidth);k.translateX<e&&(u=e-k.translateX);k.translateX+b.width>=f&&(u=-(k.translateX+b.width-f));k.attr({x:l+u,y:m,anchorX:h?
l:this.opposite?0:a.chartWidth,anchorY:h?this.opposite?a.chartHeight:0:m+b.height/2})}});r.init=function(){C.apply(this,arguments);this.setCompare(this.options.compare)};r.setCompare=function(a){this.modifyValue="value"===a||"percent"===a?function(b,c){var d=this.compareValue;if(void 0!==b&&void 0!==d)return b="value"===a?b-d:b/d*100-(100===this.options.compareBase?0:100),c&&(c.change=b),b}:null;this.userOptions.compare=a;this.chart.hasRendered&&(this.isDirty=!0)};r.processData=function(){var a,b=
-1,c,d,e,g;x.apply(this,arguments);if(this.xAxis&&this.processedYData)for(c=this.processedXData,d=this.processedYData,e=d.length,this.pointArrayMap&&(b=h("close",this.pointArrayMap),-1===b&&(b=h(this.pointValKey||"y",this.pointArrayMap))),a=0;a<e-1;a++)if(g=d[a]&&-1<b?d[a][b]:d[a],q(g)&&c[a+1]>=this.xAxis.min&&0!==g){this.compareValue=g;break}};g(r,"getExtremes",function(a){var b;a.apply(this,[].slice.call(arguments,1));this.modifyValue&&(b=[this.modifyValue(this.dataMin),this.modifyValue(this.dataMax)],
this.dataMin=k(b),this.dataMax=E(b))});t.prototype.setCompare=function(a,b){this.isXAxis||(H(this.series,function(b){b.setCompare(a)}),d(b,!0)&&this.chart.redraw())};u.prototype.tooltipFormatter=function(b){b=b.replace("{point.change}",(0<this.change?"+":"")+a.numberFormat(this.change,d(this.series.tooltipOptions.changeDecimals,2)));return c.apply(this,[b])};g(A.prototype,"render",function(a){this.chart.is3d&&this.chart.is3d()||this.chart.polar||!this.xAxis||this.xAxis.isRadial||(!this.clipBox&&this.animate?
(this.clipBox=b(this.chart.clipBox),this.clipBox.width=this.xAxis.len,this.clipBox.height=this.yAxis.len):this.chart[this.sharedClipKey]?this.chart[this.sharedClipKey].attr({width:this.xAxis.len,height:this.yAxis.len}):this.clipBox&&(this.clipBox.width=this.xAxis.len,this.clipBox.height=this.yAxis.len));a.call(this)});g(z.prototype,"getSelectedPoints",function(a){var b=a.call(this);H(this.series,function(a){a.hasGroupedData&&(b=b.concat(w(a.points||[],function(a){return a.selected})))});return b});
g(z.prototype,"update",function(a,c){"scrollbar"in c&&this.navigator&&(b(!0,this.options.scrollbar,c.scrollbar),this.navigator.update({},!1),delete c.scrollbar);return a.apply(this,Array.prototype.slice.call(arguments,1))})})(K)});
/base/000_base/node_modules/highcharts/js/modules/stock.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":123,
"mappings":"A;;;;;;;;AASC,SAAQ,CAACA,CAAD,CAAU,CACO,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,CACID,MAAAC,QADJ,CACqBF,CADrB,CAGIA,CAAA,CAAQG,UAAR,CAJW,CAAlB,CAAA,CAMC,QAAQ,CAACA,CAAD,CAAa,CAClB,SAAQ,CAACC,CAAD,CAAI,CAAA,IAMLC,EAAWD,CAAAC,SANN,CAOLC,EAAOF,CAAAE,KAPF,CAQLC,EAAQH,CAAAG,MARH,CASLC,EAAMJ,CAAAI,IATD,CAULC,EAAaL,CAAAK,WAVR,CAWLC,EAAUN,CAAAM,QAXL,CAYLC,EAAOP,CAAAO,KAZF,CAaLC,EAASR,CAAAQ,OAbJ,CAcLC,EAAOT,CAAAS,KAdF,CAgBLC,EAAYV,CAAAU,UAhBP,CAiBLC,EAAOX,CAAAW,KAOXA,EAAA,CATaX,CAAAY,OASRC,UAAL,CAAuB,MAAvB,CAA+B,QAAQ,CAACC,CAAD,CAAU,CAC7C,IACIC,CAGJD,EAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAKA,EAHAL,CAGA,CATaM,IAMLN,MAGR,GAAaA,CAAAO,QAAAC,QAAb,EACItB,CAAA,CAVSoB,IAUT,CAAiB,aAAjB,CAAgC,QAAQ,EAAG,CACvC,OAAON,CAAAS,aADgC,CAA3C,CAXyC,CAAjD,CAwBAb,EAAA,CAAKT,CAAAW,UAAL,CAAqB,cAArB,CAAqC,QAAQ,CAACC,CAAD,CAAUW,CAAV,CAA8BC,CAA9B,CAAmCC,CAAnC,CAAwCC,CAAxC,CAAqDC,CAArD,CAAgEC,CAAhE,CAAiFC,CAAjF,CAAkG,CAAA,IAEvIC,EAAQ,CAF+H,CAGvIC,CAHuI,CAIvIC,CAJuI,CAKvIC,EAAc,EALyH,CAMvIC,CANuI;AAQvIC,CARuI,CASvIC,CATuI,CAUvIC,EAAiB,EAVsH,CAWvIC,EAAoB,CAACC,MAAAC,UAXkH,CAYvIC,EAA0B,IAAArB,QAAAsB,kBAI9B,IAAMrB,CAAA,IAAAD,QAAAC,QAAN,EAA+BsB,CAAA,IAAAvB,QAAAuB,OAA/B,EAAwDhB,CAAAA,CAAxD,EAAwF,CAAxF,CAAqEA,CAAAiB,OAArE,EAAqGC,IAAAA,EAArG,GAA6FrB,CAA7F,CACI,MAAOZ,EAAAK,KAAA,CAAa,IAAb,CAAmBM,CAAnB,CAAuCC,CAAvC,CAA4CC,CAA5C,CAAiDC,CAAjD,CAMXS,EAAA,CAAYR,CAAAiB,OAEZ,KAAKb,CAAL,CAAW,CAAX,CAAcA,CAAd,CAAoBI,CAApB,CAA+BJ,CAAA,EAA/B,CAAsC,CAElCK,CAAA,CAAaL,CAAb,EAAoBJ,CAAA,CAAUI,CAAV,CAAgB,CAAhB,CAApB,CAAyCN,CAErCE,EAAA,CAAUI,CAAV,CAAJ,CAAqBP,CAArB,GACIM,CADJ,CACYC,CADZ,CAIA,IAAIA,CAAJ,GAAYI,CAAZ,CAAwB,CAAxB,EAA6BR,CAAA,CAAUI,CAAV,CAAgB,CAAhB,CAA7B,CAAkDJ,CAAA,CAAUI,CAAV,CAAlD,CAAqF,CAArF,CAAmEH,CAAnE,EAA0FQ,CAA1F,CAAsG,CAIlG,GAAIT,CAAA,CAAUI,CAAV,CAAJ,CAAqBO,CAArB,CAAwC,CAKpC,IAHAN,CAGA,CAHmBpB,CAAAK,KAAA,CAAa,IAAb,CAAmBM,CAAnB,CAAuCI,CAAA,CAAUG,CAAV,CAAvC,CAAyDH,CAAA,CAAUI,CAAV,CAAzD,CAAyEL,CAAzE,CAGnB,CAAOM,CAAAY,OAAP,EAAkCZ,CAAA,CAAiB,CAAjB,CAAlC,EAAyDM,CAAzD,CAAA,CACIN,CAAAc,MAAA,EAEAd,EAAAY,OAAJ,GACIN,CADJ,CACwBN,CAAA,CAAiBA,CAAAY,OAAjB,CAA2C,CAA3C,CADxB,CAIAP,EAAA,CAAiBA,CAAAU,OAAA,CAAsBf,CAAtB,CAZmB,CAexCF,CAAA,CAAQC,CAAR,CAAc,CAnBoF,CAsBtG,GAAIK,CAAJ,CACI,KA/B8B,CAqCtCY,CAAA,CAAOhB,CAAAgB,KAIP,IAAInB,CAAJ,EAAuBmB,CAAAC,UAAvB,EAAyCzC,CAAA0C,KAAzC,CAAyD,CACrDnB,CAAA,CAAMM,CAAAO,OAAN,CAA8B,CAG9B,KAAKd,CAAL,CAAa,CAAb,CAAgBA,CAAhB,CAAwBC,CAAxB,CAA6BD,CAAA,EAA7B,CACQ3B,CAAA,CAAW,IAAX,CAAiBkC,CAAA,CAAeP,CAAf,CAAjB,CAAJ,GAAgD3B,CAAA,CAAW,IAAX,CAAiBkC,CAAA,CAAeP,CAAf,CAAuB,CAAvB,CAAjB,CAAhD,GACIG,CAAA,CAAYI,CAAA,CAAeP,CAAf,CAAZ,CACA,CADqC,KACrC,CAAAI,CAAA,CAAuB,CAAA,CAF3B,CAQAA;CAAJ,GACID,CAAA,CAAYI,CAAA,CAAe,CAAf,CAAZ,CADJ,CACqC,KADrC,CAGAW,EAAAf,YAAA,CAAmBA,CAhBkC,CAoBzDI,CAAAW,KAAA,CAAsBA,CAMtB,IAAInB,CAAJ,EAAuBzB,CAAA,CAAQqC,CAAR,CAAvB,CAAyD,CAGjDU,CAAAA,CADAP,CACAO,CADSd,CAAAO,OAITQ,EAAAA,CAAgB,EANiC,KAOjDC,CAOJ,KAJIC,CAIJ,CAJgB,EAIhB,CAAOH,CAAA,EAAP,CAAA,CACII,CAIA,CAJa,IAAAC,UAAA,CAAenB,CAAA,CAAec,CAAf,CAAf,CAIb,CAHIE,CAGJ,GAFIC,CAAA,CAAUH,CAAV,CAEJ,CAFmBE,CAEnB,CAFoCE,CAEpC,EAAAH,CAAA,CAAcD,CAAd,CAAA,CAAmBE,CAAnB,CAAoCE,CAExCD,EAAAG,KAAA,EACAC,EAAA,CAAiBJ,CAAA,CAAUK,IAAAC,MAAA,CAAWN,CAAAV,OAAX,CAA8B,CAA9B,CAAV,CACbc,EAAJ,CAA+C,EAA/C,CAAqBjB,CAArB,GACIiB,CADJ,CACqB,IADrB,CAKAP,EAAA,CAAId,CAAA,CAAeO,CAAf,CAAwB,CAAxB,CAAA,CAA6BnB,CAA7B,CAAmCmB,CAAnC,CAA4C,CAA5C,CAAgDA,CAEpD,KADAS,CACA,CADiBR,IAAAA,EACjB,CAAOM,CAAA,EAAP,CAAA,CACII,CAOA,CAPaH,CAAA,CAAcD,CAAd,CAOb,CANAU,CAMA,CANWF,IAAAG,IAAA,CAAST,CAAT,CAA0BE,CAA1B,CAMX,CAAIF,CAAJ,EAAsBQ,CAAtB,CAA2D,EAA3D,CAAiCpB,CAAjC,GACwB,IADxB,GACKiB,CADL,EACgCG,CADhC,CAC4D,EAD5D,CAC2CH,CAD3C,GAIQzB,CAAA,CAAYI,CAAA,CAAec,CAAf,CAAZ,CAAJ,EAAuC,CAAAlB,CAAA,CAAYI,CAAA,CAAec,CAAf,CAAmB,CAAnB,CAAZ,CAAvC,EAGIY,CACA,CADeZ,CACf,CADmB,CACnB,CAAAE,CAAA,CAAiBE,CAJrB,EASIQ,CATJ,CASmBZ,CAGnB,CAAAd,CAAA2B,OAAA,CAAsBD,CAAtB,CAAoC,CAApC,CAhBJ,EAmBIV,CAnBJ,CAmBqBE,CAzD4B,CA6DzD,MAAOlB,EAzJoI,CAA/I,CA6JA/B,EAAA,CAAON,CAAAW,UAAP,CAAoD,CAKhDsD,uBAAwBA,QAAQ,EAAG,CAAA,IAE3BC,CAF2B,CAG3BC,EAAmB,EAHQ,CAI3BC,EAAa,CAAA,CAJc,CAK3BC,CAL2B,CAM3BC,EALOC,IAKIC,YAAA,EANgB,CAO3BhD,EAAM8C,CAAA9C,IAPqB,CAQ3BC,EAAM6C,CAAA7C,IARqB,CAU3BgD,CAV2B,CAY3BC,EAXOH,IAWKI,QAAZD,EAA4B,CAAE/B,CAXvB4B,IAWuBnD,QAAAuB,OAZH,CAa3BiC,EAZOL,IAYKnD,QAAAC,QAbe;AAc3BwD,EAbON,IAacO,MAAA1D,QAAA0D,MAAAD,mBAIzB,IAAID,CAAJ,EAAiBF,CAAjB,CAA4B,CAExBrE,CAAA,CAnBOkE,IAmBFpD,OAAL,CAAkB,QAAQ,CAACA,CAAD,CAASgC,CAAT,CAAY,CAElC,GAAI,EAAE0B,CAAF,EAA2C,CAAA,CAA3C,GAAwB1D,CAAA4D,QAAxB,EAAqF,CAAA,CAArF,GAAsD5D,CAAA6D,oBAAtD,EAA8FN,CAAAA,CAA9F,CAAJ,GAGIP,CAQID,CAReC,CAAApB,OAAA,CAAwB5B,CAAA8D,eAAxB,CAQff,CAPJA,CAOIA,CAPEC,CAAAvB,OAOFsB,CAJJC,CAAAV,KAAA,CAAsB,QAAQ,CAACyB,CAAD,CAAIC,CAAJ,CAAO,CACjC,MAAOD,EAAP,CAAWC,CADsB,CAArC,CAIIjB,CAAAA,CAXR,EAaQ,IADAf,CACA,CADIe,CACJ,CADU,CACV,CAAOf,CAAA,EAAP,CAAA,CACQgB,CAAA,CAAiBhB,CAAjB,CAAJ,GAA4BgB,CAAA,CAAiBhB,CAAjB,CAAqB,CAArB,CAA5B,EACIgB,CAAAH,OAAA,CAAwBb,CAAxB,CAA2B,CAA3B,CAjBkB,CAAtC,CA0BAe,EAAA,CAAMC,CAAAvB,OAIN,IAAU,CAAV,CAAIsB,CAAJ,CAAa,CACTG,CAAA,CAAOF,CAAA,CAAiB,CAAjB,CAAP,CAA6BA,CAAA,CAAiB,CAAjB,CAE7B,KADAhB,CACA,CADIe,CACJ,CADU,CACV,CAAOf,CAAA,EAAP,EAAeiB,CAAAA,CAAf,CAAA,CACQD,CAAA,CAAiBhB,CAAjB,CAAqB,CAArB,CAAJ,CAA8BgB,CAAA,CAAiBhB,CAAjB,CAA9B,GAAsDkB,CAAtD,GACID,CADJ,CACiB,CAAA,CADjB,CAOCgB,EA5DFb,IA4DEnD,QAAAgE,mBAAL,GAAyCjB,CAAA,CAAiB,CAAjB,CAAzC,CAA+D3C,CAA/D,CAAqE6C,CAArE,EAA6E5C,CAA7E,CAAmF0C,CAAA,CAAiBA,CAAAvB,OAAjB,CAA2C,CAA3C,CAAnF,CAAmIyB,CAAnI,IACID,CADJ,CACiB,CAAA,CADjB,CAXS,CAmBTA,CAAJ,EApEOG,IAuEHJ,iBAqBA,CArBwBA,CAqBxB,CAjBAkB,CAiBA,CA5FGd,IA2EQe,YAAA,CACP3B,IAAAlC,IAAA,CACID,CADJ,CAEI2C,CAAA,CAAiB,CAAjB,CAFJ,CADO,CAKP,CAAA,CALO,CAiBX,CAVAM,CAUA,CAVWd,IAAAlC,IAAA,CAlFR8C,IAkFiBe,YAAA,CAChB3B,IAAAnC,IAAA,CACIC,CADJ;AAEI0C,CAAA,CAAiBA,CAAAvB,OAAjB,CAA2C,CAA3C,CAFJ,CADgB,CAKhB,CAAA,CALgB,CAAT,CAMR,CANQ,CAUX,CA5FG2B,IA2FHgB,aACA,CADoBC,CACpB,EAD6B/D,CAC7B,CADmCD,CACnC,GAD2CiD,CAC3C,CADsDY,CACtD,EA5FGd,IA4FHkB,cAAA,CAAqBjE,CAArB,CAA4B6D,CAA5B,CAAuCG,CAxB3C,EApEOjB,IA+FHJ,iBA3BJ,CApEOI,IA+FqBgB,aA3B5B,CApEOhB,IA+FyCkB,cA3BhD,CA2BqE5C,IAAAA,EA9E7C,CAjBjB0B,IAkGXK,UAAA,CAAiBA,CAAjB,EAA8BR,CAlGnBG,KAmGXmB,oBAAA,CAA2B,IApGI,CALa,CAmHhDC,QAASA,QAAQ,CAACC,CAAD,CAAMC,CAAN,CAAe,CAAA,IAExB1B,EADOI,IACYJ,iBAGvB,IAAKA,CAAL,CAGO,CAAA,IAEC2B,EAAgB3B,CAAAvB,OAFjB,CAGCO,CAHD,CAKC7B,CAIJ,KADA6B,CACA,CADI2C,CACJ,CAAO3C,CAAA,EAAP,CAAA,CACI,GAAIgB,CAAA,CAAiBhB,CAAjB,CAAJ,GAA4ByC,CAA5B,CAAiC,CAC7BtE,CAAA,CAAe6B,CACf,MAF6B,CAQrC,IADAA,CACA,CADI2C,CACJ,CADoB,CACpB,CAAO3C,CAAA,EAAP,CAAA,CACI,GAAIyC,CAAJ,CAAUzB,CAAA,CAAiBhB,CAAjB,CAAV,EAAuC,CAAvC,GAAiCA,CAAjC,CAA0C,CACtCU,CAAA,EAAY+B,CAAZ,CAAkBzB,CAAA,CAAiBhB,CAAjB,CAAlB,GAA0CgB,CAAA,CAAiBhB,CAAjB,CAAqB,CAArB,CAA1C,CAAoEgB,CAAA,CAAiBhB,CAAjB,CAApE,CACA7B,EAAA,CAAe6B,CAAf,CAAmBU,CACnB,MAHsC,CAM9CkC,CAAA,CAAMF,CAAA,CACFvE,CADE,CAhCCiD,IAkCHgB,aAFE,EAEmBjE,CAFnB,EAEmC,CAFnC,EAhCCiD,IAkCuCkB,cA3B3C,CAHP,IACIM,EAAA,CAAMH,CA+BV,OAAOG,EArCqB,CAnHgB,CAgKhDC,QAASA,QAAQ,CAACJ,CAAD,CAAMK,CAAN,CAAiB,CAAA,IAE1B9B,EADOI,IACYJ,iBAGvB,IAAKA,CAAL,CAGO,CAAA,IAECoB;AATGhB,IASYgB,aAFhB,CAGCE,EAVGlB,IAUakB,cAHjB,CAICtC,EAAIgB,CAAAvB,OAAJO,CAA8B,CAJ/B,CAOCU,CAKJ,IAAIoC,CAAJ,CAEc,CAAV,CAAIL,CAAJ,CACIA,CADJ,CACUzB,CAAA,CAAiB,CAAjB,CADV,CAEWyB,CAAJ,CAAUzC,CAAV,CACHyC,CADG,CACGzB,CAAA,CAAiBhB,CAAjB,CADH,EAGHA,CACA,CADIQ,IAAAC,MAAA,CAAWgC,CAAX,CACJ,CAAA/B,CAAA,CAAW+B,CAAX,CAAiBzC,CAJd,CAJX,KAcI,KAAA,CAAOA,CAAA,EAAP,CAAA,CAEI,GADA+C,CACI,CADoBX,CACpB,CADmCpC,CACnC,CADwCsC,CACxC,CAAAG,CAAA,EAAOM,CAAX,CAAiC,CAC7BC,CAAA,CAAyBZ,CAAzB,EAAyCpC,CAAzC,CAA6C,CAA7C,EAAmDsC,CACnD5B,EAAA,EAAY+B,CAAZ,CAAkBM,CAAlB,GAA2CC,CAA3C,CAAmED,CAAnE,CACA,MAH6B,CAUzC,MAAoBrD,KAAAA,EAAb,GAAAgB,CAAA,EAAkDhB,IAAAA,EAAlD,GAA0BsB,CAAA,CAAiBhB,CAAjB,CAA1B,CACHgB,CAAA,CAAiBhB,CAAjB,CADG,EACoBU,CAAA,CAAWA,CAAX,EAAuBM,CAAA,CAAiBhB,CAAjB,CAAqB,CAArB,CAAvB,CAAiDgB,CAAA,CAAiBhB,CAAjB,CAAjD,EAAwE,CAD5F,EAEHyC,CAxCD,CA0CP,MA5CUA,EANoB,CAhKc,CA2NhDQ,qBAAsBA,QAAQ,EAAG,CAAA,IAEzBtB,EADOP,IACCO,MAFiB,CAGzBuB,EAFO9B,IAEIpD,OAAA,CAAY,CAAZ,CAAAmF,oBAHc,CAIzBhF,EAHOiD,IAGQjD,aAJU,CAKzBiF,EAAMF,CAAA,CAAWA,CAAAG,MAAX,CAA4BH,CAAAI,SAA5B,CAAgD,KAL7B,CAMzBnC,EALOC,IAKIC,YAAA,EANc,CAOzBkC,CAPyB,CAQzBC,CAICrF,EAAL,GACIA,CADJ,CAXWiD,IAYQjD,aADnB,CACuC,EADvC,CAKKA,EAAA,CAAaiF,CAAb,CAAL,GAGIG,CA6CA,CA7CW,CACPvF,OAAQ,EADD,CAEP2D,MAAOA,CAFA,CAGPN,YAAaA,QAAQ,EAAG,CACpB,MAAO,CACHhD,IAAK8C,CAAAsC,QADF;AAEHnF,IAAK6C,CAAAuC,QAFF,CADa,CAHjB,CASPzF,QAAS,CACLC,QAAS,CAAA,CADJ,CATF,CAYPsE,QAAS3F,CAAAW,UAAAgF,QAZF,CAaPL,YAAatF,CAAAW,UAAA2E,YAbN,CA6CX,CA5BAjF,CAAA,CApCOkE,IAoCFpD,OAAL,CAAkB,QAAQ,CAACA,CAAD,CAAS,CAC/BwF,CAAA,CAAa,CACT9F,MAAO6F,CADE,CAETI,MAAO3F,CAAA2F,MAFE,CAGThC,MAAOA,CAHE,CAITiC,mBAAoBxG,CAJX,CAMboG,EAAAvF,QAAA,CAAqB,CACjB4F,aAAcX,CAAA,CAAW,CACrBY,QAAS,CAAA,CADY,CAErBC,OAAQ,CAAA,CAFa,CAGrBC,cAAe,MAHM,CAIrBC,MAAO,CACH,CAACf,CAAAI,SAAD,CAAoB,CAACJ,CAAAG,MAAD,CAApB,CADG,CAJc,CAAX,CAOV,CACAS,QAAS,CAAA,CADT,CARa,CAYrB9F,EAAAkG,YAAAvG,MAAA,CAAyB6F,CAAzB,CAEAD,EAAAvF,OAAAmG,KAAA,CAAqBX,CAArB,CArB+B,CAAnC,CA4BA,CAhEOpC,IA6DPN,uBAAAnD,MAAA,CAAkC4F,CAAlC,CAGA,CAAApF,CAAA,CAAaiF,CAAb,CAAA,CAAoBG,CAAAvC,iBAhDxB,CAkDA,OAAO7C,EAAA,CAAaiF,CAAb,CAnEsB,CA3Ne,CAsThDgB,uBAAwBA,QAAQ,CAACC,CAAD,CAAOC,CAAP,CAAatG,CAAb,CAAqB,CAAA,IAC7CgC,CACA8B,EAAAA,CAAiB9D,CAAA8D,eAF4B,KAG7Cf,EAAMe,CAAArC,OAHuC,CAI7CU,EAAY,EAEZoC,EAAAA;AAAsB,IAAAA,oBAG1B,IAAKA,CAAAA,CAAL,CAA0B,CAGtB,IAAKvC,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBe,CAAhB,CAAsB,CAAtB,CAAyBf,CAAA,EAAzB,CACIG,CAAA,CAAUH,CAAV,CAAA,CAAe8B,CAAA,CAAe9B,CAAf,CAAmB,CAAnB,CAAf,CAAuC8B,CAAA,CAAe9B,CAAf,CAI3CG,EAAAG,KAAA,CAAe,QAAQ,CAACyB,CAAD,CAAIC,CAAJ,CAAO,CAC1B,MAAOD,EAAP,CAAWC,CADe,CAA9B,CAGAuC,EAAA,CAASpE,CAAA,CAAUK,IAAAC,MAAA,CAAWM,CAAX,CAAiB,CAAjB,CAAV,CAGTsD,EAAA,CAAO7D,IAAAlC,IAAA,CAAS+F,CAAT,CAAevC,CAAA,CAAe,CAAf,CAAf,CACPwC,EAAA,CAAO9D,IAAAnC,IAAA,CAASiG,CAAT,CAAexC,CAAA,CAAef,CAAf,CAAqB,CAArB,CAAf,CAEP,KAAAwB,oBAAA,CAA2BA,CAA3B,CAAkDxB,CAAlD,CAAwDwD,CAAxD,EAAmED,CAAnE,CAA0ED,CAA1E,CAjBsB,CAqB1B,MAAO9B,EA9B0C,CAtTL,CA0VhDiC,wBAAyBA,QAAQ,CAACC,CAAD,CAAe,CAAA,IAMxCrC,EAAe,IAAAA,aAanB,OATIA,EAAJQ,CACS,IAAA3E,QAAAuB,OAAL,CAGU,IAAAkF,kBAHV,CACUD,CADV,EAC0BrC,CAD1B,CACyC,IAAAsC,kBADzC,CADJ9B,CAOU6B,CAjBkC,CA1VA,CAApD,CAkXA5H,EAAAW,UAAA2E,YAAA,CAA6BtF,CAAAW,UAAAgF,QAG7BlF,EAAA,CAAKR,CAAAU,UAAL,CAAsB,KAAtB,CAA6B,QAAQ,CAACC,CAAD,CAAUkH,CAAV,CAAa,CAAA,IAE1CjH,EADQiE,IACAjE,MAAA,CAAY,CAAZ,CAFkC,CAG1CkH,EAASD,CAAAC,OAHiC,CAI1CC,EAAU,CAAA,CAEd,IAAInH,CAAAO,QAAAC,QAAJ,EAA6BR,CAAAM,OAAAyB,OAA7B,CAAkD,CAAA,IAE1CqF;AAPInD,IAOSmD,WAF6B,CAG1C3D,EAAWzD,CAAA2D,YAAA,EAH+B,CAI1CqC,EAAUvC,CAAAuC,QAJgC,CAK1CrF,EAAM8C,CAAA9C,IALoC,CAM1CC,EAAM6C,CAAA7C,IANoC,CAQ1CyG,EAbIpD,IAaUoD,YAR4B,CAS1CL,EAAoBhH,CAAAgH,kBATsB,CAW1CM,GAAcF,CAAdE,CAA2BJ,CAA3BI,GADkBtH,CAAAuH,iBAClBD,EAD4CtH,CAAA0E,aAC5C4C,EADkEN,CAClEM,EAX0C,CAY1CE,EAAe,CACXlE,iBAAkBtD,CAAAuF,qBAAA,EADP,CAZ2B,CAiB1CJ,EAAUnF,CAAAmF,QAjBgC,CAkB1CL,EAAU9E,CAAA8E,QAlBgC,CAmB1C2C,CAECD,EAAAlE,iBAAL,CAGkC,CAHlC,CAGWR,IAAAG,IAAA,CAASqE,CAAT,CAHX,GAMQD,CA8CJ,EA7CI7H,CAAA,CAAK6H,CAAL,CAAkB,QAAQ,CAACK,CAAD,CAAQ,CAC9BA,CAAAC,SAAA,EAD8B,CAAlC,CA6CJ,CAxCiB,CAAjB,CAAIL,CAAJ,EACIM,CACA,CADiBJ,CACjB,CAAAC,CAAA,CAAkBzH,CAAAsD,iBAAA,CAAyBtD,CAAzB,CAAiCwH,CAFvD,GAIII,CACA,CADiB5H,CAAAsD,iBAAA,CAAyBtD,CAAzB,CAAiCwH,CAClD,CAAAC,CAAA,CAAkBD,CALtB,CAwCA,CA7BAlE,CA6BA,CA7BmBmE,CAAAnE,iBA6BnB,CA5BI0C,CA4BJ,CA5Bc1C,CAAA,CAAiBA,CAAAvB,OAAjB,CAA2C,CAA3C,CA4Bd,EA3BIuB,CAAAmD,KAAA,CAAsBT,CAAtB,CA2BJ,CA9EI/B,IA0DJ4D,WAoBA,CApBmBjH,CAoBnB,CApByBD,CAoBzB,CAnBAmH,CAmBA,CAnBe9H,CAAA+H,aAAA,CAAmB,IAAnB,CAAyB,IAAzB,CACX5C,CAAAlF,MAAA,CAAc2H,CAAd,CAA8B,CAC1B9C,CAAA7E,MAAA,CAAc2H,CAAd,CAA8B,CAACjH,CAAD,CAAM,CAAA,CAAN,CAA9B,CAD0B,CACmB2G,CADnB,CAE1B,CAAA,CAF0B,CAA9B,CADW,CAKXnC,CAAAlF,MAAA,CAAcwH,CAAd,CAA+B,CAC3B3C,CAAA7E,MAAA,CAAcwH,CAAd;AAA+B,CAAC7G,CAAD,CAAM,CAAA,CAAN,CAA/B,CAD2B,CACmB0G,CADnB,CAE3B,CAAA,CAF2B,CAA/B,CALW,CAmBf,CAPIQ,CAAAnH,IAOJ,EAPwBmC,IAAAnC,IAAA,CAAS8C,CAAAsC,QAAT,CAA2BpF,CAA3B,CAOxB,EAP2DmH,CAAAlH,IAO3D,EAP+EkC,IAAAlC,IAAA,CAASoF,CAAT,CAAkBpF,CAAlB,CAO/E,EANIZ,CAAAgI,YAAA,CAAkBF,CAAAnH,IAAlB,CAAoCmH,CAAAlH,IAApC,CAAsD,CAAA,CAAtD,CAA4D,CAAA,CAA5D,CAAmE,CAC/DqH,QAAS,KADsD,CAAnE,CAMJ,CA9EIhE,IA6EJmD,WACA,CADmBF,CACnB,CAAA7H,CAAA,CA9EI4E,IA8EAiE,UAAJ,CAAqB,CACjBC,OAAQ,MADS,CAArB,CApDJ,EACIhB,CADJ,CACc,CAAA,CAtBgC,CAAlD,IA+EIA,EAAA,CAAU,CAAA,CAIVA,EAAJ,EAEIpH,CAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CA3F0C,CAAlD,CAlkBS,CAAZ,CAAA,CAqqBCrB,CArqBD,CAsqBA,UAAQ,CAACC,CAAD,CAAI,CAgBTmJ,QAASA,EAAc,EAAG,CACtB,MAAOlI,MAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CADe,CA2Q1BgI,QAASA,EAAiB,CAACtI,CAAD,CAAU,CAChCA,CAAAE,MAAA,CAAc,IAAd,CACA,KAAAqI,WAAA,CAAgB,IAAAtI,MAAhB,CAA4B,CAAC,GAAD,CAA5B,CACA,KAAAsI,WAAA,CAAgB,IAAAC,MAAhB,CAA4BC,CAAA,CAAK,IAAAC,cAAL,CAAyB,CAAC,GAAD,CAAzB,CAA5B,CAHgC,CA3R3B,IAOLD,EAAOvJ,CAAAuJ,KAPF,CAQL5I,EAAOX,CAAAW,KARF,CASLJ,EAAOP,CAAAO,KATF,CAULC,EAASR,CAAAQ,OAVJ,CAWLiJ,EAAUzJ,CAAAyJ,QAXL,CAYLC,EAAY1J,CAAA0J,UAZP;AAaLxJ,EAAOF,CAAAE,KAbF,CAcLU,EAASZ,CAAAY,OAMbJ,EAAA,CAAON,CAAAW,UAAP,CAAuB,CACnB8I,UAAWA,QAAQ,CAACC,CAAD,CAAM9D,CAAN,CAAW,CAAA,IAEtB+D,EAASD,CAAAC,OAATA,EAAuBC,QAFD,CAGtBC,EAAOH,CAAAG,KAHe,CAItBjH,EAAS8G,CAAAI,GAATlH,CAAkB8G,CAAAG,KAClBE,EAAAA,CAAQnE,CAAA,EAAOiE,CAAP,EAAejE,CAAf,CAAqBiE,CAArB,EAA6BF,CAA7B,CAAsCA,CAAtC,EAAiDE,CAAjD,CAAwDjE,CAAxD,EAA+D+D,CAO3E,OALKD,EAAAM,UAALjE,CAGUgE,CAHVhE,EAGkBnD,CAHlBmD,CACUgE,CADVhE,CACiBnD,CADjBmD,EACoC,CADpCA,GAC2BgE,CARD,CADX,CAgBnBE,aAAcA,QAAQ,CAACrE,CAAD,CAAMsE,CAAN,CAAgB,CAAA,IAE9BvH,EAAS,IAAAvB,QAAAuB,OAFqB,CAG9BQ,EAAIR,CAAJQ,EAAcR,CAAAC,OAHgB,CAI9BuH,CAJ8B,CAK9BC,CAL8B,CAM9BrE,CAGJ,IAAI5C,CAAJ,CAAO,CAEH,IAAA,CAAOA,CAAA,EAAP,CAAA,CACQ,IAAAsG,UAAA,CAAe9G,CAAA,CAAOQ,CAAP,CAAf,CAA0ByC,CAA1B,CAAJ,GACIuE,CACA,CADQ,CAAA,CACR,CAAKC,CAAL,GACIA,CADJ,CACWf,CAAA,CAAK1G,CAAA,CAAOQ,CAAP,CAAAkH,WAAL,CAA2B,IAAA1F,QAAA,CAAe,CAAA,CAAf,CAAuB,CAAA,CAAlD,CADX,CAFJ,CASAoB,EAAA,CADAoE,CAAJ,EAAaD,CAAb,CACUC,CADV,EACmB,CAACC,CADpB,CAGUD,CAdP,CAiBP,MAAOpE,EA1B2B,CAhBnB,CAAvB,CA8CAtF,EAAA,CAAKT,CAAAW,UAAL,CAAqB,kBAArB,CAAyC,QAAQ,CAACC,CAAD,CAAU,CACvDA,CAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAEA,IAAI,IAAAE,QAAAuB,OAAJ,CAAyB,CAAA,IAEjB2H,EAAgB,IAAAA,cAFC;AAGjBtH,EAAO,IAAAsH,cAAAtH,KAHU,CAIjBuH,EAAe,EAJE,CAKjBpH,CAEJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBmH,CAAA1H,OAAhB,CAAsCO,CAAA,EAAtC,CANWoB,IAOF0F,aAAA,CAAkBK,CAAA,CAAcnH,CAAd,CAAlB,CAAL,EACIoH,CAAAjD,KAAA,CAAkBgD,CAAA,CAAcnH,CAAd,CAAlB,CAIR,KAAAmH,cAAA,CAAqBC,CACrB,KAAAD,cAAAtH,KAAA,CAA0BA,CAdL,CAH8B,CAA3D,CAqBAvC,EAAA,CAAKT,CAAAW,UAAL,CAAqB,MAArB,CAA6B,QAAQ,CAACC,CAAD,CAAUkE,CAAV,CAAiB0F,CAAjB,CAA8B,CAAA,IAC3DjG,EAAO,IAGPiG,EAAA7H,OAAJ,EAA0B6H,CAAA7H,OAAAC,OAA1B,GACI4H,CAAAnJ,QADJ,CAC0B,CAAA,CAD1B,CAGAT,EAAAK,KAAA,CAAa,IAAb,CAAmB6D,CAAnB,CAA0B0F,CAA1B,CACA7H,EAAA,CAAS,IAAAvB,QAAAuB,OACT4B,EAAAkG,SAAA,CAAiBlB,CAAA,CAAQ5G,CAAR,CAAjB,EAAoC,CAAEC,CAAAD,CAAAC,OAClC2B,EAAAkG,SAAJ,GACIlG,CAAAoB,QAiDA,CAjDe+E,QAAQ,CAAC9E,CAAD,CAAM,CAAA,IACrB+E,EAAO/E,CADc,CAErB8D,CAFqB,CAGrBvG,CAEJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBoB,CAAAqG,WAAAhI,OAAhB,CAAwCO,CAAA,EAAxC,CAEI,GADAuG,CACI,CADEnF,CAAAqG,WAAA,CAAgBzH,CAAhB,CACF,CAAAuG,CAAAI,GAAA,EAAUlE,CAAd,CACI+E,CAAA,EAAQjB,CAAAxF,IADZ,KAEO,IAAIwF,CAAAG,KAAJ,EAAgBjE,CAAhB,CACH,KADG,KAEA,IAAIrB,CAAAkF,UAAA,CAAeC,CAAf,CAAoB9D,CAApB,CAAJ,CAA8B,CACjC+E,CAAA,EAAS/E,CAAT,CAAe8D,CAAAG,KACf,MAFiC,CAMzC,MAAOc,EAjBkB,CAiD7B,CA7BApG,CAAAyB,QA6BA;AA7Be6E,QAAQ,CAACjF,CAAD,CAAM,CAAA,IAErB8D,CAFqB,CAGrBvG,CAEJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBoB,CAAAqG,WAAAhI,OAAhB,EAEQ,EADJ8G,CACI,CADEnF,CAAAqG,WAAA,CAAgBzH,CAAhB,CACF,CAAAuG,CAAAG,KAAA,EAAYc,CAAZ,CAFR,CAAwCxH,CAAA,EAAxC,CAIeuG,CAAAI,GAAJ,CAAaa,CAAb,CACHA,CADG,EACKjB,CAAAxF,IADL,CAEIK,CAAAkF,UAAA,CAAeC,CAAf,CAAoBiB,CAApB,CAFJ,GAGHA,CAHG,EAGKjB,CAAAxF,IAHL,CAMX,OAAOyG,EAfkB,CA6B7B,CAXApG,CAAAsE,YAWA,CAXmBiC,QAAQ,CAACC,CAAD,CAASC,CAAT,CAAiBC,CAAjB,CAAyBC,CAAzB,CAAoCC,CAApC,CAAoD,CAE3E,IAAA,CAAO,IAAAlB,aAAA,CAAkBc,CAAlB,CAAP,CAAA,CACIA,CAAA,EAAU,IAAAlD,kBAEd,KAAA,CAAO,IAAAoC,aAAA,CAAkBe,CAAlB,CAAP,CAAA,CACIA,CAAA,EAAU,IAAAnD,kBAEd7H,EAAAW,UAAAkI,YAAA5H,KAAA,CAAgC,IAAhC,CAAsC8J,CAAtC,CAA8CC,CAA9C,CAAsDC,CAAtD,CAA8DC,CAA9D,CAAyEC,CAAzE,CAR2E,CAW/E,CAAA5G,CAAA6G,mBAAA,CAA0BC,QAAQ,CAACC,CAAD,CAAU,CACxCtL,CAAAW,UAAAyK,mBAAAnK,KAAA,CAAuC,IAAvC,CAA6CqK,CAA7C,CAEI3I,EAAAA,CAAS4B,CAAAnD,QAAAuB,OAH2B,KAIpC4I,EAAc,EAJsB,CAKpCX,EAAa,EALuB,CAMpChI,EAAS,CAN2B,CAOpC4I,CAPoC,CAQpC7B,CARoC,CASpCnI,EAAM+C,CAAAkH,QAANjK,EAAsB+C,CAAA/C,IATc,CAUpCC,EAAM8C,CAAAmH,QAANjK,EAAsB8C,CAAA9C,IAVc,CAWpCkK,EAAoBtC,CAAA,CAAK9E,CAAAoH,kBAAL;AAA6B,CAA7B,CAXgB,CAYpC7J,CAZoC,CAapCqB,CAGJ9C,EAAA,CAAKsC,CAAL,CAAa,QAAQ,CAAC+G,CAAD,CAAM,CACvBC,CAAA,CAASD,CAAAC,OAAT,EAAuBC,QACnBrF,EAAAkF,UAAA,CAAeC,CAAf,CAAoBlI,CAApB,CAAJ,GACIA,CADJ,EACYkI,CAAAI,GADZ,CACqBH,CADrB,CACgCnI,CADhC,CACsCmI,CADtC,CAGIpF,EAAAkF,UAAA,CAAeC,CAAf,CAAoBjI,CAApB,CAAJ,GACIA,CADJ,EACYA,CADZ,CACkBkI,CADlB,CAC6BD,CAAAG,KAD7B,CACwCF,CADxC,CALuB,CAA3B,CAWAtJ,EAAA,CAAKsC,CAAL,CAAa,QAAQ,CAAC+G,CAAD,CAAM,CACvB5H,CAAA,CAAQ4H,CAAAG,KAGR,KAFAF,CAEA,CAFSD,CAAAC,OAET,EAFuBC,QAEvB,CAAO9H,CAAP,CAAe6H,CAAf,CAAwBnI,CAAxB,CAAA,CACIM,CAAA,EAAS6H,CAEb,KAAA,CAAO7H,CAAP,CAAeN,CAAf,CAAA,CACIM,CAAA,EAAS6H,CAGb,KAAKxG,CAAL,CAASrB,CAAT,CAAgBqB,CAAhB,CAAoB1B,CAApB,CAAyB0B,CAAzB,EAA8BwG,CAA9B,CACI4B,CAAAjE,KAAA,CAAiB,CACbsE,MAAOzI,CADM,CAEb0I,KAAM,IAFO,CAAjB,CAIA,CAAAN,CAAAjE,KAAA,CAAiB,CACbsE,MAAOzI,CAAPyI,EAAYlC,CAAAI,GAAZ8B,CAAqBlC,CAAAG,KAArB+B,CADa,CAEbC,KAAM,KAFO,CAGbC,KAAMpC,CAAAqC,UAHO,CAAjB,CAhBmB,CAA3B,CAwBAR,EAAA9H,KAAA,CAAiB,QAAQ,CAACyB,CAAD,CAAIC,CAAJ,CAAO,CAO5B,MALID,EAAA0G,MAAJ7F,GAAgBZ,CAAAyG,MAAhB7F,EACsB,IAAX,GAAAb,CAAA2G,KAAA,CAAkB,CAAlB,CAAsB,CADjC9F,GACkD,IAAX,GAAAZ,CAAA0G,KAAA,CAAkB,CAAlB,CAAsB,CAD7D9F,EAGUb,CAAA0G,MAHV7F,CAGoBZ,CAAAyG,MALQ,CAAhC,CAWAJ,EAAA,CAAQ,CACR1J,EAAA,CAAQN,CAERnB,EAAA,CAAKkL,CAAL,CAAkB,QAAQ,CAAC7B,CAAD,CAAM,CAC5B8B,CAAA,EAAuB,IAAb,GAAA9B,CAAAmC,KAAA,CAAoB,CAApB,CAAyB,EAErB,EAAd,GAAIL,CAAJ,EAAgC,IAAhC,GAAmB9B,CAAAmC,KAAnB,GACI/J,CADJ,CACY4H,CAAAkC,MADZ,CAGc,EAAd,GAAIJ,CAAJ,GACIZ,CAAAtD,KAAA,CAAgB,CACZuC,KAAM/H,CADM;AAEZgI,GAAIJ,CAAAkC,MAFQ,CAGZ1H,IAAKwF,CAAAkC,MAAL1H,CAAiBpC,CAAjBoC,EAA0BwF,CAAAoC,KAA1B5H,EAAsC,CAAtCA,CAHY,CAAhB,CAKA,CAAAtB,CAAA,EAAU8G,CAAAkC,MAAV,CAAsB9J,CAAtB,EAA+B4H,CAAAoC,KAA/B,EAA2C,CAA3C,CANJ,CAN4B,CAAhC,CAgBAvH,EAAAqG,WAAA,CAAkBA,CAIlBrG,EAAAyH,WAAA,CAAkBvK,CAAlB,CAAwBD,CAAxB,CAA8BoB,CAA9B,CAAuC+I,CAEvCnC,EAAA,CAAUjF,CAAV,CAAgB,aAAhB,CAEIA,EAAAnD,QAAA6K,YAAJ,CACI1H,CAAA2H,OADJ,CACkB3H,CAAAnD,QAAA6K,YADlB,CAEW1H,CAAAyH,WAFX,GAGIzH,CAAA2H,OAHJ,GAGoBzK,CAHpB,CAG0B8C,CAAA/C,IAH1B,CAGqCmK,CAHrC,EAIQpH,CAAAyH,WAJR,CAOIL,EAAJ,GACIpH,CAAA4H,gBADJ,CAC2B5H,CAAA2H,OAD3B,CACyC3H,CAAA6H,eADzC,CAIA7H,EAAA/C,IAAA,CAAWA,CACX+C,EAAA9C,IAAA,CAAWA,CArG6B,CAlDhD,CAV+D,CAAnE,CAsKAhB,EAAA,CAAKC,CAAAC,UAAL,CAAuB,gBAAvB,CAAyC,QAAQ,CAACC,CAAD,CAAU,CAEvDA,CAAAE,MAAA,CAAc,IAAd,CAAoBmI,CAAA,CAAe/H,SAAf,CAApB,CAFuD,KAKnDL,EADSM,IACDN,MAL2C,CAMnDuI,EAFSjI,IAEDiI,MAN2C,CAOnDiD,EAHSlL,IAGAkL,OAP0C,CAQnD9D,CARmD,CASnDpF,EAAIkJ,CAAAzJ,OAT+C,CAUnD0J,EANSnL,IAMMC,QAAAkL,aAVoC,CAWnDC,CAGJ,IAAI1L,CAAJ,EAAauI,CAAb,GAAuBvI,CAAAO,QAAAuB,OAAvB,EAA+CyG,CAAAhI,QAAAuB,OAA/C,EACI,IAAA,CAAOQ,CAAA,EAAP,CAAA,CACIoF,CAGA;AAHQ8D,CAAA,CAAOlJ,CAAP,CAGR,CADAoJ,CACA,CADsB,IACtB,GADUhE,CAAAiE,EACV,EAD+C,CAAA,CAC/C,GAD8BF,CAC9B,CAAKC,CAAL,EAAiB,CAAA1L,CAAAoJ,aAAA,CAAmB1B,CAAAkE,EAAnB,CAA4B,CAAA,CAA5B,CAAjB,EAAsD,CAAArD,CAAAa,aAAA,CAAmB1B,CAAAiE,EAAnB,CAA4B,CAAA,CAA5B,CAAtD,GACIH,CAAArI,OAAA,CAAcb,CAAd,CAAiB,CAAjB,CACA,CAAI,IAAAuJ,KAAA,CAAUvJ,CAAV,CAAJ,EACI,IAAAuJ,KAAA,CAAUvJ,CAAV,CAAAwJ,gBAAA,EAHR,CAnB+C,CAA3D,CAoCA7M,EAAAY,OAAAC,UAAAwI,WAAA,CAAgCyD,QAAQ,CAACrI,CAAD,CAAOsI,CAAP,CAAa,CAAA,IAC7C1L,EAAS,IADoC,CAE7CkL,EAASlL,CAAAkL,OAFoC,CAG7C1J,CAH6C,CAI7CmK,CAJ6C,CAK7CC,CAL6C,CAM7CP,CAECjI,EAAL,EAIAlE,CAAA,CAAKwM,CAAL,CAAW,QAAQ,CAACtG,CAAD,CAAM,CACrB5D,CAAA,CAAS4B,CAAAqG,WAAT,EAA4B,EAC5BkC,EAAA,CAAYvI,CAAAI,QAAA,CAAeJ,CAAA/C,IAAf,CAA0B6H,CAAA,CAAKlI,CAAAC,QAAA0L,UAAL,CAA+BvI,CAAA/C,IAA/B,CACtCnB,EAAA,CAAKgM,CAAL,CAAa,QAAQ,CAAC9D,CAAD,CAAQ,CACzBiE,CAAA,CAAInD,CAAA,CAAKd,CAAA,CAAM,OAAN,CAAgBhC,CAAAyG,YAAA,EAAhB,CAAL,CAAyCzE,CAAA,CAAMhC,CAAN,CAAzC,CACJlG,EAAA,CAAKsC,CAAL,CAAa,QAAQ,CAAC+G,CAAD,CAAM,CACvBqD,CAAA,CAAY,CAAA,CAEZ,IAAKD,CAAL,CAAiBpD,CAAAG,KAAjB,EAA6B2C,CAA7B,CAAiC9C,CAAAI,GAAjC,EAA6CgD,CAA7C,CAAyDpD,CAAAG,KAAzD,EAAqE2C,CAArE,CAAyE9C,CAAAG,KAAzE,CACIkD,CAAA,CAAY,YADhB,KAEO,IAAKD,CAAL,CAAiBpD,CAAAG,KAAjB,EAA6B2C,CAA7B,CAAiC9C,CAAAG,KAAjC,EAA6C2C,CAA7C,CAAiD9C,CAAAI,GAAjD,EAA6DgD,CAA7D,CAAyEpD,CAAAG,KAAzE,EAAqF2C,CAArF,CAAyF9C,CAAAI,GAAzF,EAAmG0C,CAAnG,CAAuG9C,CAAAG,KAAvG,CACHkD,CAAA,CAAY,cAEZA;CAAJ,EACIvD,CAAA,CAAUjF,CAAV,CAAgBwI,CAAhB,CAA2B,CACvBxE,MAAOA,CADgB,CAEvBmB,IAAKA,CAFkB,CAA3B,CATmB,CAA3B,CAFyB,CAA7B,CAHqB,CAAzB,CAZiD,CA0CrD5J,EAAAY,OAAAC,UAAAsM,WAAA,CAAgCC,QAAQ,EAAG,CAAA,IACnCC,EAAU,IAAA/L,QAAA+L,QADyB,CAEnCd,EAAS,IAAAA,OAAArL,MAAA,EAF0B,CAGnCmC,EAAIkJ,CAAAzJ,OAAJO,CAAoB,CAExB,IAAIgK,CAAJ,EAAmB,CAAnB,CAAehK,CAAf,CAGI,IAAA,CAAOA,CAAA,EAAP,CAAA,CACQkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAAsJ,EAAJ,CAAsBJ,CAAA,CAAOlJ,CAAP,CAAAsJ,EAAtB,CAAoC,IAAA5E,kBAApC,CAA6DsF,CAA7D,EACId,CAAArI,OAAA,CACIb,CADJ,CACQ,CADR,CAEI,CAFJ,CAEO,CACCiK,OAAQ,CAAA,CADT,CAFP,CAWZ,OAAO,KAAAC,aAAA,CAAkBhB,CAAlB,CArBgC,CAwB3C5L,EAAA,CAAKX,CAAAwN,YAAAC,OAAA5M,UAAL,CAAqC,YAArC,CAAmDuI,CAAnD,CACAzI,EAAA,CAAKX,CAAAY,OAAAC,UAAL,CAAyB,YAAzB,CAAuCuI,CAAvC,CApWS,CAAZ,CAAA,CAsWCrJ,CAtWD,CA2WA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAML0N,EAAW1N,CAAA0N,SANN,CAOLC,EAAW3N,CAAA2N,SAPN,CAQLzN,EAAOF,CAAAE,KARF,CASL0N,EAAqB5N,CAAA4N,mBAThB,CAULtN,EAAUN,CAAAM,QAVL,CAWLC,EAAOP,CAAAO,KAXF,CAYLC,EAASR,CAAAQ,OAZJ,CAaLqN,EAAS7N,CAAA6N,OAbJ,CAcLC,EAAW9N,CAAA8N,SAdN,CAeLC,EAAQ/N,CAAA+N,MAfH,CAgBLxE,EAAOvJ,CAAAuJ,KAhBF,CAiBLyE,EAAQhO,CAAAgO,MAjBH;AAmBLC,EAAUjO,CAAAiO,QAnBL,CAoBLtN,EAAOX,CAAAW,KApBF,CA0BLuN,EARSlO,CAAAY,OAQKC,UA1BT,CA2BLsN,EAAkBD,CAAA3G,YA3Bb,CA4BL6G,EAAqBF,CAAAG,eA5BhB,CA6BLC,EAAcJ,CAAAK,QA7BT,CA+BLC,EAAgB,CACZnH,cAAe,SADH,CAIZoH,gBAAiB,CAJL,CAOZC,qBAAsB,CAClBC,YAAa,CAAC,wBAAD,CAA2B,wBAA3B,CAAqD,cAArD,CADK,CAElBC,OAAQ,CAAC,qBAAD,CAAwB,qBAAxB,CAA+C,WAA/C,CAFU,CAGlBC,OAAQ,CAAC,kBAAD,CAAqB,kBAArB,CAAyC,QAAzC,CAHU,CAIlBzL,KAAM,CAAC,kBAAD,CAAqB,kBAArB,CAAyC,QAAzC,CAJY,CAKlB0L,IAAK,CAAC,eAAD,CAAkB,WAAlB,CAA+B,gBAA/B,CALa,CAMlBC,KAAM,CAAC,yBAAD,CAA4B,WAA5B;AAAyC,gBAAzC,CANY,CAOlBC,MAAO,CAAC,OAAD,CAAU,IAAV,CAAgB,QAAhB,CAPW,CAQlBC,KAAM,CAAC,IAAD,CAAO,IAAP,CAAa,KAAb,CARY,CAPV,CA/BX,CAmDLC,EAAkB,CACdC,KAAM,EADQ,CAEdC,OAAQ,EAFM,CAGdC,KAAM,EAHQ,CAIdC,WAAY,EAJE,CAKd7B,OAAQ,CACJpG,cAAe,KADX,CAEJoH,gBAAiB,EAFb,CALM,CASdc,UAAW,CACPlI,cAAe,OADR,CATG,CAYdmI,gBAAiB,CACbnI,cAAe,OADF,CAZH,CAedoI,YAAa,CACTpI,cAAe,OADN,CAEToH,gBAAiB,EAFR,CAfC,CAmBdiB,YAAa,CACTrI,cAAe,MADN,CAEToH,gBAAiB,EAFR,CAnBC,CAuBdkB,KAAM,CACFtI,cAAe,MADb,CAEFoH,gBAAiB,CAFf,CAvBQ,CAnDb,CAiFLmB,EAA2B5P,CAAA4P,yBAA3BA,CAAwD,CACpD,CACI,aADJ,CAEI,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,EAAV,CAAc,EAAd,CAAkB,EAAlB,CAAsB,EAAtB,CAA0B,GAA1B,CAA+B,GAA/B,CAAoC,GAApC,CAFJ,CADoD,CAKpD,CACI,QADJ,CACc,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,EAAV,CAAc,EAAd,CAAkB,EAAlB,CADd,CALoD,CAQpD,CACI,QADJ;AACc,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,EAAV,CAAc,EAAd,CAAkB,EAAlB,CADd,CARoD,CAWpD,CACI,MADJ,CACY,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,CAAV,CAAa,CAAb,CAAgB,CAAhB,CAAmB,EAAnB,CADZ,CAXoD,CAcpD,CACI,KADJ,CACW,CAAC,CAAD,CADX,CAdoD,CAiBpD,CACI,MADJ,CACY,CAAC,CAAD,CADZ,CAjBoD,CAoBpD,CACI,OADJ,CACa,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CADb,CApBoD,CAuBpD,CACI,MADJ,CAEI,IAFJ,CAvBoD,CAjFnD,CAsHLC,EAAiB,CACbC,IAAKA,QAAQ,CAACC,CAAD,CAAM,CAAA,IACX3L,EAAM2L,CAAAjN,OADK,CAEXmD,CAGJ,IAAK7B,CAAAA,CAAL,EAAY2L,CAAAC,SAAZ,CACI/J,CAAA,CAAM,IADV,KAGO,IAAI7B,CAAJ,CAEH,IADA6B,CACA,CADM,CACN,CAAO7B,CAAA,EAAP,CAAA,CACI6B,CAAA,EAAO8J,CAAA,CAAI3L,CAAJ,CAMf,OAAO6B,EAjBQ,CADN,CAoBbgK,QAASA,QAAQ,CAACF,CAAD,CAAM,CAAA,IACf3L,EAAM2L,CAAAjN,OACNmD,EAAAA,CAAM4J,CAAAC,IAAA,CAAmBC,CAAnB,CAINjC,EAAA,CAAS7H,CAAT,CAAJ,EAAqB7B,CAArB,GACU6B,CADV,EACgB7B,CADhB,CAIA,OAAO6B,EAVY,CApBV,CAkCbiK,SAAUA,QAAQ,EAAG,CACjB,IAAIjK,EAAM,EAEV1F,EAAA,CAAKa,SAAL,CAAgB,QAAQ,CAAC2O,CAAD,CAAM,CAC1B9J,CAAAuB,KAAA,CAASqI,CAAAI,QAAA,CAAuBF,CAAvB,CAAT,CAD0B,CAA9B,CAIA,OAAO9J,EAPU,CAlCR,CA2CbkK,KAAMA,QAAQ,CAACJ,CAAD,CAAM,CAChB,MAAOA,EAAAjN,OAAA,CAAaiN,CAAA,CAAI,CAAJ,CAAb,CAAuBA,CAAAC,SAAA,CAAe,IAAf,CAAsBjN,IAAAA,EADpC,CA3CP,CA8CbqN,KAAMA,QAAQ,CAACL,CAAD,CAAM,CAChB,MAAOA,EAAAjN,OAAA,CAAa4K,CAAA,CAASqC,CAAT,CAAb,CAA8BA,CAAAC,SAAA,CAAe,IAAf,CAAsBjN,IAAAA,EAD3C,CA9CP,CAiDbsN,IAAKA,QAAQ,CAACN,CAAD,CAAM,CACf,MAAOA,EAAAjN,OAAA;AAAa6K,CAAA,CAASoC,CAAT,CAAb,CAA8BA,CAAAC,SAAA,CAAe,IAAf,CAAsBjN,IAAAA,EAD5C,CAjDN,CAoDbuN,MAAOA,QAAQ,CAACP,CAAD,CAAM,CACjB,MAAOA,EAAAjN,OAAA,CAAaiN,CAAA,CAAIA,CAAAjN,OAAJ,CAAiB,CAAjB,CAAb,CAAoCiN,CAAAC,SAAA,CAAe,IAAf,CAAsBjN,IAAAA,EADhD,CApDR,CAwDb4M,KAAMA,QAAQ,CAACQ,CAAD,CAAOC,CAAP,CAAaC,CAAb,CAAkBC,CAAlB,CAAyB,CACnCH,CAAA,CAAON,CAAAM,KAAA,CAAoBA,CAApB,CACPC,EAAA,CAAOP,CAAAO,KAAA,CAAoBA,CAApB,CACPC,EAAA,CAAMR,CAAAQ,IAAA,CAAmBA,CAAnB,CACNC,EAAA,CAAQT,CAAAS,MAAA,CAAqBA,CAArB,CAER,IAAIxC,CAAA,CAASqC,CAAT,CAAJ,EAAsBrC,CAAA,CAASsC,CAAT,CAAtB,EAAwCtC,CAAA,CAASuC,CAAT,CAAxC,EAAyDvC,CAAA,CAASwC,CAAT,CAAzD,CACI,MAAO,CAACH,CAAD,CAAOC,CAAP,CAAaC,CAAb,CAAkBC,CAAlB,CAPwB,CAxD1B,CAmEbC,MAAOA,QAAQ,CAACF,CAAD,CAAMD,CAAN,CAAY,CACvBC,CAAA,CAAMR,CAAAQ,IAAA,CAAmBA,CAAnB,CACND,EAAA,CAAOP,CAAAO,KAAA,CAAoBA,CAApB,CAEP,IAAItC,CAAA,CAASuC,CAAT,CAAJ,EAAqBvC,CAAA,CAASsC,CAAT,CAArB,CACI,MAAO,CAACC,CAAD,CAAMD,CAAN,CACJ,IAAY,IAAZ,GAAIC,CAAJ,EAA6B,IAA7B,GAAoBD,CAApB,CACH,MAAO,KAPY,CAnEd,CAqFrBlC,EAAAsC,UAAA,CAAwBC,QAAQ,CAACzJ,CAAD,CAAQ0J,CAAR,CAAenO,CAAf,CAA+B8E,CAA/B,CAA8C,CAAA,IAEtEuF,EADSvL,IACFuL,KAF+D,CAGtE+D,EAFStP,IAEKC,QAAAsL,KAHwD,CAItEgE,EAAe,EAJuD,CAKtEC,EAAe,EALuD,CAMtEC,EAAW,EAN2D,CAOtEC,EAAa/J,CAAAlE,OAPyD,CAQtEkO,CARsE,CAUtEC,CAVsE,CAatEC,EAAc,CAAER,CAAAA,CAbsD,CActES,EAAS,EACTC,EAAAA,CAA2C,UAAzB,GAAA,MAAO/J,EAAP,CAClBA,CADkB,CAElBwI,CAAA,CAAexI,CAAf,CAFkB,EAMd6H,CAAA,CApBK7N,IAoBWgQ,KAAhB,CANc,EAOdxB,CAAA,CAAeX,CAAA,CArBV7N,IAqB0BgQ,KAAhB,CAAAhK,cAAf,CAPc;AAQbwI,CAAA,CAAerB,CAAAnH,cAAf,CAvBiE,KAwBtEmC,EAvBSnI,IAuBOmI,cAxBsD,CAyBtE8H,EAAsB9H,CAAtB8H,EAAuC9H,CAAA1G,OAzB+B,CA0BtEyO,EAAM,CACNvP,EAAAA,CAAQ,CA3B8D,KA4BtEwP,CA5BsE,CA6BtEnO,CAGAiO,EAAJ,CACI/Q,CAAA,CAAKiJ,CAAL,CAAoB,QAAQ,EAAG,CAC3B2H,CAAA3J,KAAA,CAAY,EAAZ,CAD2B,CAA/B,CADJ,CAKI2J,CAAA3J,KAAA,CAAY,EAAZ,CAEJgK,EAAA,CAAYF,CAAZ,EAAmC,CAGnC,KAAKjO,CAAL,CAAS,CAAT,CAAYA,CAAZ,EAAiB0N,CAAjB,EACQ,EAAA/J,CAAA,CAAM3D,CAAN,CAAA,EAAYd,CAAA,CAAe,CAAf,CAAZ,CADR,CAA6Bc,CAAA,EAA7B,EAMA,IAAKA,CAAL,CAAQA,CAAR,EAAa0N,CAAb,CAAyB1N,CAAA,EAAzB,CAA8B,CAI1B,IAAA,CACoCN,IAAAA,EADpC,GACQR,CAAA,CAAegP,CAAf,CAAqB,CAArB,CADR,EAEQvK,CAAA,CAAM3D,CAAN,CAFR,EAEoBd,CAAA,CAAegP,CAAf,CAAqB,CAArB,CAFpB,EAGSlO,CAHT,GAGe0N,CAHf,CAAA,CAG2B,CAGvBC,CAAA,CAASzO,CAAA,CAAegP,CAAf,CAzDJlQ,KA0DLoQ,cAAA,CAAuB,CACnBzP,MAAOA,CADY,CAEnBc,OAAQqO,CAAA,CAAO,CAAP,CAAArO,OAFW,CAIvBmO,EAAA,CAAWG,CAAApQ,MAAA,CA9DNK,IA8DM,CAA8B8P,CAA9B,CAGMpO,KAAAA,EAAjB,GAAIkO,CAAJ,GACIL,CAAApJ,KAAA,CAAkBwJ,CAAlB,CAEA,CADAH,CAAArJ,KAAA,CAAkByJ,CAAlB,CACA,CAAAH,CAAAtJ,KAAA,CApECnG,IAoEaoQ,cAAd,CAHJ,CAOAzP,EAAA,CAAQqB,CACR,KAAKqO,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBF,CAAhB,CAA2BE,CAAA,EAA3B,CACIP,CAAA,CAAOO,CAAP,CAAA5O,OACA,CADmB,CACnB,CAAAqO,CAAA,CAAOO,CAAP,CAAA1B,SAAA,CAAqB,CAAA,CAIzBuB,EAAA,EAAO,CAGP,IAAIlO,CAAJ,GAAU0N,CAAV,CACI,KA7BmB,CAkC3B,GAAI1N,CAAJ,GAAU0N,CAAV,CACI,KAKJ,IAAIvH,CAAJ,CAAmB,CAEXmI,CAAAA,CAhGCtQ,IAgGOuQ,UAARD,CAA2BtO,CAFhB,KAGXoF,EAASmE,CAATnE,EAAiBmE,CAAA,CAAK+E,CAAL,CAAjBlJ,EAjGCpH,IAkGDwQ,WAAAhR,UAAAiR,aAAA9Q,MAAA,CAA+C,CAC3CK,OAnGHA,IAkG8C,CAA/C;AAEG,CAACsP,CAAA,CAAYgB,CAAZ,CAAD,CAFH,CAJW,CAOX7L,CAEJ,KAAK4L,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBJ,CAAhB,CAAqCI,CAAA,EAArC,CACI5L,CACA,CADM2C,CAAA,CAAMe,CAAA,CAAckI,CAAd,CAAN,CACN,CAAI5D,CAAA,CAAShI,CAAT,CAAJ,CACIqL,CAAA,CAAOO,CAAP,CAAAlK,KAAA,CAAe1B,CAAf,CADJ,CAEmB,IAFnB,GAEWA,CAFX,GAGIqL,CAAA,CAAOO,CAAP,CAAA1B,SAHJ,CAGyB,CAAA,CAHzB,CAXW,CAAnB,IAmBI+B,EAEA,CAFSb,CAAA,CAAcR,CAAA,CAAMrN,CAAN,CAAd,CAAyB,IAElC,CAAIyK,CAAA,CAASiE,CAAT,CAAJ,CACIZ,CAAA,CAAO,CAAP,CAAA3J,KAAA,CAAeuK,CAAf,CADJ,CAEsB,IAFtB,GAEWA,CAFX,GAGIZ,CAAA,CAAO,CAAP,CAAAnB,SAHJ,CAGyB,CAAA,CAHzB,CApEsB,CA4E9B,MAAO,CAACY,CAAD,CAAeC,CAAf,CAA6BC,CAA7B,CA5HmE,CAmI9E5C,EAAA3G,YAAA,CAA0ByK,QAAQ,EAAG,CAAA,IAE7BhN,EADS3D,IACD2D,MAFqB,CAI7BiN,EAHS5Q,IAECC,QACY4F,aAJO,CAK7BgL,EAAqC,CAAA,CAArCA,GAJS7Q,IAIS8Q,QAAlBD,EAA8CD,CAA9CC,EACA3I,CAAA,CAAK0I,CAAA9K,QAAL,CAAkCnC,CAAA1D,QAAA8Q,QAAlC,CAN6B,CAO7BnN,EANS5D,IAMC4D,QAAVA,EAA4B,CAACD,CAAA1D,QAAA0D,MAAAD,mBAPA,CAQ7BsN,CAPShR,KAWbiR,UAAA,CAAmBJ,CAXN7Q,KAYboN,gBAAA,CAAyB,IAZZpN,KAabkR,aAAA,CAAsB,CAAA,CAItB,IADoD,CAAA,CACpD,GADOpE,CAAAnN,MAAA,CAhBMK,IAgBN,CAA8BD,SAA9B,CACP,EAD8D8Q,CAC9D,CAAW,CAjBE7Q,IAkBT4F,mBAAA,EADO,KAIH9B,EArBK9D,IAqBY8D,eAJd,CAKHqN,EAtBKnR,IAsBYmR,eALd;AAMHC,EAAYzN,CAAAyN,UANT,CAOH1R,EAxBKM,IAwBGN,MAPL,CAQHQ,EAAUR,CAAAO,QAAAC,QARP,CASHkN,EA1BKpN,IA0BaoN,gBAAlBA,CAA2C1N,CAAA2R,mBAA3CjE,EAAuE1N,CAAA2R,mBAAA,EAG3E,IAAIjE,CAAJ,CAAqB,CA7BZpN,IAgCLsR,QAAA,CAFAN,CAEA,CAFiB,CAAA,CA9BZhR,KAiCLkL,OAAA,CAAgB,IAJC,KAMb/H,EAAWzD,CAAA2D,YAAA,EANE,CAObgD,EAAOlD,CAAA9C,IAPM,CAQbiG,EAAOnD,CAAA7C,IARM,CASbiE,EAAuBrE,CAAvBqE,EAAkC7E,CAAA0G,uBAAA,CAA6BC,CAA7B,CAAmCC,CAAnC,CAtCjCtG,IAsCiC,CAAlCuE,EAAuF,CAT1E,CAUbgN,EAAYnE,CAAZmE,EAA+BjL,CAA/BiL,CAAsClL,CAAtCkL,EAA8CH,CAA9CG,CAA2DhN,CAV9C,CAWbrD,EAAiBxB,CAAA8R,aAAA,CACb9R,CAAA+R,0BAAA,CAAgCF,CAAhC,CAA0CX,CAAA3K,MAA1C,EAAuEsI,CAAvE,CADa,CAEb/L,IAAAnC,IAAA,CAASgG,CAAT,CAAevC,CAAA,CAAe,CAAf,CAAf,CAFa,CAGbtB,IAAAlC,IAAA,CAASgG,CAAT,CAAexC,CAAA,CAAeA,CAAArC,OAAf,CAAuC,CAAvC,CAAf,CAHa,CAIb/B,CAAAO,QAAAM,YAJa,CAKbuD,CALa,CAxChB9D,IA8CG0G,kBANa,CAXJ,CAmBbgL,EAAc7E,CAAAsC,UAAAxP,MAAA,CAhDbK,IAgDa,CAAoC,CAAC8D,CAAD,CAAiBqN,CAAjB,CAAiCjQ,CAAjC,CAAiD0P,CAAA5K,cAAjD,CAApC,CAnBD,CAoBbuJ,EAAemC,CAAA,CAAY,CAAZ,CApBF,CAqBblC,EAAekC,CAAA,CAAY,CAAZ,CAInB,IAAId,CAAAe,SAAJ,CAAkC,CAC9B3P,CAAA,CAAIuN,CAAA9N,OAAJ,CAA0B,CAE1B,KADA8N,CAAA,CAAavN,CAAb,CACA;AADkBQ,IAAAnC,IAAA,CAASkP,CAAA,CAAavN,CAAb,CAAT,CAA0BsE,CAA1B,CAClB,CAAOtE,CAAA,EAAP,EAAkB,CAAlB,CAAcA,CAAd,CAAA,CACIuN,CAAA,CAAavN,CAAb,CAAA,EAAmBuP,CAAnB,CAA8B,CAElChC,EAAA,CAAa,CAAb,CAAA,CAAkB/M,IAAAlC,IAAA,CAASiP,CAAA,CAAa,CAAb,CAAT,CAA0BlJ,CAA1B,CANY,CAtD7BrG,IAgELmF,oBAAA,CAA6BjE,CAAAW,KAhExB7B,KAiEL0G,kBAAA,CAA2BxF,CAAAW,KAAA+P,WAjEtB5R,KAkELyP,SAAA,CAAkBiC,CAAA,CAAY,CAAZ,CAIdzS,EAAA,CAAQsQ,CAAA,CAAa,CAAb,CAAR,CAAJ,EAAgCA,CAAA,CAAa,CAAb,CAAhC,CAAkD7P,CAAA+F,QAAlD,EAAmE7B,CAAnE,GACQlE,CAAAW,IAGJ,GAHkBX,CAAA+F,QAGlB,GAFI/F,CAAAW,IAEJ,CAFgBkP,CAAA,CAAa,CAAb,CAEhB,EAAA7P,CAAA+F,QAAA,CAAgB8J,CAAA,CAAa,CAAb,CAJpB,CAtEKvP,KA8EL8D,eAAA,CAAwByL,CA9EnBvP,KA+ELmR,eAAA,CAAwB3B,CAlDP,CAArB,IA7BSxP,KAiFLmF,oBAAA,CAjFKnF,IAiFwByP,SAA7B,CAA+C,IAjF1CzP,KAmFTgR,eAAA,CAAwBA,CAlEjB,CAlBsB,CA2FrCnE,EAAAjH,mBAAA,CAAiCiM,QAAQ,EAAG,CAExC,IAAIH,EAAc,IAAAA,YAGlBxS,EAAA,CAAKwS,CAAL,EAAoB,EAApB,CAAwB,QAAQ,CAACtK,CAAD,CAAQpF,CAAR,CAAW,CACnCoF,CAAJ,GACIsK,CAAA,CAAY1P,CAAZ,CADJ,CACqBoF,CAAA8F,QAAA,CAAgB9F,CAAA8F,QAAA,EAAhB,CAAkC,IADvD,CADuC,CAA3C,CAKA,KAAAwE,YAAA,CAAmB,IAVqB,CAgB5C7E,EAAAG,eAAA;AAA6B8E,QAAQ,EAAG,CAEpC/E,CAAApN,MAAA,CAAyB,IAAzB,CAGA,KAAAiG,mBAAA,EACA,KAAA8L,YAAA,CAAmB,IAAAV,eAAA,CAAsB,IAAA9F,OAAtB,CAAoC,IANnB,CAYxC5L,EAAA,CAAKqN,CAAAnN,UAAL,CAAsB,QAAtB,CAAgC,QAAQ,CAACC,CAAD,CAAU,CAC1C,IAAAsS,UAAJ,CACIpT,CAAAqT,MAAA,CAAQ,EAAR,CADJ,CAGIvS,CAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAJ0C,CAAlD,CAWAT,EAAA,CAAKsN,CAAApN,UAAL,CAAwB,8BAAxB,CAAwD,QAAQ,CAACC,CAAD,CAAUwS,CAAV,CAAuBC,CAAvB,CAAiC,CAAA,IAEzFlS,EAASiS,CAAAjS,OAFgF,CAIzFmS,EAAiBnS,CAAAmS,eAJwE,CAKzFvB,EAFU5Q,CAAAC,QAEY4F,aALmE,CAMzFuM,EAAcD,CAAAC,YAN2E,CAOzFC,CAPyF,CAQzF3S,EAAQM,CAAAN,MARiF,CASzFV,EAAaL,CAAAK,WAOjB,OAAIU,EAAJ,EAAoC,UAApC,GAAaA,CAAAO,QAAA+P,KAAb,EAAkDY,CAAlD,EAAyEnE,CAAA,CAASwF,CAAA7M,IAAT,CAAzE,EAGID,CA0BO,CA1BenF,CAAAmF,oBA0Bf,CAzBPkI,CAyBO,CAzBgBuD,CAAAvD,qBAyBhB,CAtBHlI,CAAJ,EACImN,CACA,CADejF,CAAA,CAAqBlI,CAAAG,SAArB,CACf,CAAkC,CAAlC,GAAIH,CAAAE,MAAJ;AACI+M,CADJ,CACkBE,CAAA,CAAa,CAAb,CADlB,EAGIF,CACA,CADcE,CAAA,CAAa,CAAb,CACd,CAAAD,CAAA,CAAiBC,CAAA,CAAa,CAAb,CAJrB,CAFJ,EAWYF,CAAAA,CAXZ,EAW2B/E,CAX3B,GAYI+E,CAZJ,CAtBUG,IAkCQC,eAAA,CAAuBP,CAAvB,CAAoCE,CAApC,CAAoDzS,CAApD,CAZlB,CAsBO,CANP+S,CAMO,CANQzT,CAAA,CAAWoT,CAAX,CAAwBH,CAAA7M,IAAxB,CAMR,CALHiN,CAKG,GAJHI,CAIG,EAJazT,CAAA,CAAWqT,CAAX,CAA2BJ,CAAA7M,IAA3B,CAA6CD,CAAAyM,WAA7C,CAA8E,CAA9E,CAIb,EAAApF,CAAA,CAAO2F,CAAA,EAAgBD,CAAA,CAAW,QAAX,CAAsB,QAAtC,EAAkD,QAAlD,CAAP,CAAoE,CACvE9K,MAAOjI,CAAA,CAAO8S,CAAA7K,MAAP,CAA0B,CAC7BhC,IAAKqN,CADwB,CAA1B,CADgE,CAIvEzS,OAAQA,CAJ+D,CAApE,CA7BX,EAuCOP,CAAAK,KAAA,CAtDOyS,IAsDP,CAAsBN,CAAtB,CAAmCC,CAAnC,CAvDsF,CAAjG,CA6DArF,EAAAK,QAAA,CAAsBwF,QAAQ,EAAG,CAK7B,IAL6B,IAEzBhB,EADS1R,IACK0R,YAAdA,EAAoC,EAFX,CAGzB1P,EAAI0P,CAAAjQ,OAER,CAAOO,CAAA,EAAP,CAAA,CACQ0P,CAAA,CAAY1P,CAAZ,CAAJ,EACI0P,CAAA,CAAY1P,CAAZ,CAAAkL,QAAA,EAGRD,EAAAtN,MAAA,CATaK,IASb,CAV6B,CAgBjCV,EAAA,CAAKuN,CAAL,CAAkB,YAAlB,CAAgC,QAAQ,CAACpN,CAAD,CAAUkT,CAAV,CAAuB,CAEvD1S,CAAAA,CAAUR,CAAAK,KAAA,CAAa,IAAb,CAAmB6S,CAAnB,CAF6C,KAGvD3C,EAAO,IAAAA,KAHgD,CAIvD4C,EAAc,IAAAjP,MAAA1D,QAAA2S,YAJyC,CAKvDC,EAAiBtG,CAAA,CAAmByD,CAAnB,CAAAnK,aAEjBgI,EAAA,CAAgBmC,CAAhB,CAAJ,GACS6C,CAIL,GAHIA,CAGJ,CAHqBnG,CAAA,CAAMS,CAAN,CAAqBU,CAAA,CAAgBmC,CAAhB,CAArB,CAGrB,EAAA/P,CAAA4F,aAAA,CAAuB6G,CAAA,CACnBmG,CADmB,CAEnBD,CAAA5S,OAFmB,EAEG4S,CAAA5S,OAAA6F,aAFH,CAGnB+M,CAAA,CAAY5C,CAAZ,CAAAnK,aAHmB;AAInB8M,CAAA9M,aAJmB,CAL3B,CAaI,KAAAlC,MAAA1D,QAAA8Q,QAAJ,GACI,IAAA+B,eADJ,CAC0B,CAAA,CAD1B,CAIA,OAAO7S,EAxBoD,CAA/D,CAgCAX,EAAA,CAAKT,CAAAW,UAAL,CAAqB,UAArB,CAAiC,QAAQ,CAACC,CAAD,CAAU,CAC/CA,CAAAK,KAAA,CAAa,IAAb,CACAZ,EAAA,CAAK,IAAAc,OAAL,CAAkB,QAAQ,CAACA,CAAD,CAAS,CAC/BA,CAAAkR,aAAA,CAAsB,CAAA,CADS,CAAnC,CAF+C,CAAnD,CAWArS,EAAAW,UAAA6R,mBAAA,CAAoC0B,QAAQ,EAAG,CAAA,IAEvC/S,EAAS,IAAAA,OAF8B,CAGvC+C,EAAM/C,CAAAyB,OAHiC,CAIvCO,CAJuC,CAKvCoL,EAAkB,CALqB,CAMvC4F,EAAa,CAAA,CAN0B,CAQvCC,CAKJ,KADAjR,CACA,CADIe,CACJ,CAAOf,CAAA,EAAP,CAAA,CAEI,CADAiR,CACA,CADYjT,CAAA,CAAOgC,CAAP,CAAA/B,QAAA4F,aACZ,IACIuH,CADJ,CACsB5K,IAAAlC,IAAA,CAAS8M,CAAT,CAA0B6F,CAAA7F,gBAA1B,CADtB,CAQJ,KADApL,CACA,CADIe,CACJ,CAAOf,CAAA,EAAP,CAAA,CAGI,CAFAiR,CAEA,CAFYjT,CAAA,CAAOgC,CAAP,CAAA/B,QAAA4F,aAEZ,GAAiB7F,CAAA,CAAOgC,CAAP,CAAAkP,aAAjB,GAEIxB,CAGI,CAHSjO,CAACzB,CAAA,CAAOgC,CAAP,CAAA8B,eAADrC,EAA6BzB,CAAA,CAAOgC,CAAP,CAAAuJ,KAA7B9J,QAGT,CAAAzB,CAAA,CAAOgC,CAAP,CAAAoL,gBAAA,EAA6BsC,CAA7B,CAA2C,IAAA/L,MAAAyN,UAA3C,CAAkEhE,CAAlE,EAAuFsC,CAAvF,EAAqGuD,CAAAlN,OAL7G;CAMQiN,CANR,CAMqB,CAAA,CANrB,CAWJ,OAAOA,EAAA,CAAa5F,CAAb,CAA+B,CArCK,CAqD/CvO,EAAAW,UAAA0T,gBAAA,CAAiCC,QAAQ,CAACtN,CAAD,CAAeiE,CAAf,CAAuB,CAC5D,IAAI9H,CAEJ8H,EAAA,CAAS5B,CAAA,CAAK4B,CAAL,CAAa,CAAA,CAAb,CAEJjE,EAAL,GACIA,CADJ,CACmB,CACXE,OAAQ,CAAA,CADG,CAEXE,MAAO,IAFI,CADnB,CAQA,IAAI,IAAJ,WAAoBpH,EAApB,CAEI,IADAmD,CACA,CADI,IAAAhC,OAAAyB,OACJ,CAAOO,CAAA,EAAP,CAAA,CACI,IAAAhC,OAAA,CAAYgC,CAAZ,CAAAoR,OAAA,CAAsB,CAClBvN,aAAcA,CADI,CAAtB,CAEG,CAAA,CAFH,CAHR,KAUI3G,EAAA,CAAK,IAAAyE,MAAA1D,QAAAD,OAAL,CAAgC,QAAQ,CAACqT,CAAD,CAAgB,CACpDA,CAAAxN,aAAA,CAA6BA,CADuB,CAAxD,CAEG,CAAA,CAFH,CAKAiE,EAAJ,EACI,IAAAnG,MAAAmG,OAAA,EA7BwD,CA7nBvD,CAAZ,CAAA,CAoqBCpL,CApqBD,CAqqBA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAMLO,EAAOP,CAAAO,KANF,CAOLyN,EAAQhO,CAAAgO,MAPH,CAQL2G,EAAa3U,CAAA2U,WARR,CASLnH,EAAcxN,CAAAwN,YAQlBmH,EAAA,CAAW,MAAX,CAAmB,QAAnB,CAA6B,CACzBC,UAAW,CADc,CAEzBhB,QAAS,CAELiB,YAAa,iPAFR,CAFgB;AAWzB7H,UAAW,IAXc,CAA7B,CAckC,CAC9B8H,YAAa,CAAA,CADiB,CAE9BtL,cAAe,CAAC,MAAD,CAAS,MAAT,CAAiB,KAAjB,CAAwB,OAAxB,CAFe,CAG9BuL,QAASA,QAAQ,CAACtM,CAAD,CAAQ,CACrB,MAAO,CAACA,CAAA0H,KAAD,CAAa1H,CAAA2H,KAAb,CAAyB3H,CAAA4H,IAAzB,CAAoC5H,CAAA6H,MAApC,CADc,CAHK,CAM9B0E,YAAa,OANiB,CAa9BtR,UAAWA,QAAQ,EAAG,CAAA,IACdrC,EAAS,IADK,CAEdiI,EAAQjI,CAAAiI,MAFM,CAGd2L,EAAiB,CAAEC,CAAA7T,CAAA6T,YAHL,CAIdzR,EAAa,CAAC,UAAD,CAAa,UAAb,CAAyB,SAAzB,CAAoC,WAApC,CAAiD,SAAjD,CAEjB+J,EAAAC,OAAA5M,UAAA6C,UAAA1C,MAAA,CAA6CK,CAA7C,CAGAd,EAAA,CAAKc,CAAAkL,OAAL,CAAoB,QAAQ,CAAC9D,CAAD,CAAQ,CAChClI,CAAA,CAAK,CAACkI,CAAA0H,KAAD,CAAa1H,CAAA2H,KAAb,CAAyB3H,CAAA4H,IAAzB,CAAoC5H,CAAA6H,MAApC,CAAiD7H,CAAA4H,IAAjD,CAAL,CAAkE,QAAQ,CAACvE,CAAD,CAAQzI,CAAR,CAAW,CACnE,IAAd,GAAIyI,CAAJ,GACQmJ,CAGJ,GAFInJ,CAEJ,CAFYzK,CAAA6T,YAAA,CAAmBpJ,CAAnB,CAEZ,EAAArD,CAAA,CAAMhF,CAAA,CAAWJ,CAAX,CAAN,CAAA,CAAuBiG,CAAA6L,SAAA,CAAerJ,CAAf,CAAsB,CAAA,CAAtB,CAJ3B,CADiF,CAArF,CAUArD,EAAA2M,WAAA,CAAiB,CAAjB,CAAA,CACI3M,CAAA4M,SADJ,CACqB/L,CAAAiI,IADrB,CACiClQ,CAAA2D,MAAAsQ,QAZD,CAApC,CATkB,CAbQ,CAyC9BC,WAAYA,QAAQ,EAAG,CAAA,IACflU;AAAS,IADM,CAGf2D,EAAQ3D,CAAA2D,MAGZzE,EAAA,CAJac,CAAAkL,OAIb,CAAa,QAAQ,CAAC9D,CAAD,CAAQ,CAAA,IACrB+M,CADqB,CAGrBC,CAHqB,CAIrBC,CAJqB,CAKrBC,CALqB,CAMrBC,EAAUnN,CAAAmN,QANW,CAOrBC,CAPqB,CAQrBC,EAAQ,CAACF,CAEO7S,KAAAA,EAApB,GAAI0F,CAAAsN,MAAJ,GAGSH,CA8CL,GA7CInN,CAAAmN,QA6CJ,CA7CoBA,CA6CpB,CA7C8B5Q,CAAAgR,SAAAL,KAAA,EAAAM,IAAA,CACjB5U,CAAA6U,MADiB,CA6C9B,EAtCAT,CAsCA,CAtCaG,CAAAO,YAAA,EAsCb,CAtCqC,CAsCrC,CAtC0C,CAsC1C,CArCAN,CAqCA,CArCShS,IAAAuS,MAAA,CAAW3N,CAAA4N,MAAX,CAqCT,CArCmCZ,CAqCnC,CApCAC,CAoCA,CApCY7R,IAAAuS,MAAA,CAAW3N,CAAA6N,UAAAC,MAAX,CAAmC,CAAnC,CAoCZ,CAjCAZ,CAiCA,CAjCO,CACH,GADG,CAEHE,CAFG,CAEKhS,IAAAuS,MAAA,CAAW3N,CAAA+N,QAAX,CAFL,CAGH,GAHG,CAIHX,CAJG,CAIKhS,IAAAuS,MAAA,CAAW3N,CAAA4M,SAAX,CAJL,CAiCP,CAzBmB,IAyBnB,GAzBI5M,CAAA0H,KAyBJ,GAxBIqF,CACA,CADW3R,IAAAuS,MAAA,CAAW3N,CAAA+M,SAAX,CACX,CADwCC,CACxC,CAAAE,CAAAnO,KAAA,CACI,GADJ,CAEIqO,CAFJ,CAGIL,CAHJ,CAII,GAJJ,CAKIK,CALJ,CAKaH,CALb,CAMIF,CANJ,CAuBJ,EAZoB,IAYpB,GAZI/M,CAAA6H,MAYJ,GAXImG,CACA,CADY5S,IAAAuS,MAAA,CAAW3N,CAAAgO,UAAX,CACZ,CAD0ChB,CAC1C,CAAAE,CAAAnO,KAAA,CACI,GADJ,CAEIqO,CAFJ,CAGIY,CAHJ,CAII,GAJJ,CAKIZ,CALJ,CAKaH,CALb,CAMIe,CANJ,CAUJ,EAAAb,CAAA,CAAQE,CAAA,CAAQ,MAAR,CAAiB,SAAzB,CAAA,CAAoC,CAC5BY,EAAGf,CADyB,CAApC,CAAAgB,SAAA,CAGclO,CAAAmO,aAAA,EAHd,CAGoC,CAAA,CAHpC,CAjDJ,CAVyB,CAA7B,CANmB,CAzCO,CAsH9BC,QAAS,IAtHqB,CAdlC,CA0IiE,CAI7DD,aAAcA,QAAQ,EAAG,CACrB,MAAO5I,EAAAnN,UAAA+V,aAAAzV,KAAA,CAAkC,IAAlC,CAAP;CACK,IAAAgP,KAAA,CAAY,IAAAG,MAAZ,CAAyB,sBAAzB,CAAkD,wBADvD,CADqB,CAJoC,CA1IjE,CAjBS,CAAZ,CAAA,CAwKCvQ,CAxKD,CAyKA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAML4N,EAAqB5N,CAAA4N,mBANhB,CAOLrN,EAAOP,CAAAO,KAPF,CAQLwN,EAAQ/N,CAAA+N,MACR4G,EAAAA,CAAa3U,CAAA2U,WASjBA,EAAA,CAAW,aAAX,CAA0B,MAA1B,CAAkC5G,CAAA,CAAMH,CAAAH,OAAN,CAAiC,CAC/DqJ,OAAQ,CACJC,MAAO,CACHnC,UAAW,CADR,CADH,CADuD,CAM/DhB,QAAShG,CAAA+B,KAAAiE,QANsD,CAO/D5G,UAAW,IAPoD,CAAjC,CAAlC,CAU0C,CAKtCuI,WAAYA,QAAQ,EAAG,CAAA,IACflU,EAAS,IADM,CAGf2D,EAAQ3D,CAAA2D,MAGZzE,EAAA,CAJac,CAAAkL,OAIb,CAAa,QAAQ,CAAC9D,CAAD,CAAQ,CAAA,IAErBmN,EAAUnN,CAAAmN,QAFW,CAGrBJ,CAHqB,CAIrBiB,CAJqB,CAKrBO,CALqB,CAQrBC,CARqB,CASrBxB,CATqB,CAUrBI,CAVqB,CAYrBH,CAZqB,CAarBI,EAAQ,CAACF,CAEO7S,KAAAA,EAApB,GAAI0F,CAAAsN,MAAJ,GAESH,CA6CL,GA5CInN,CAAAmN,QA4CJ,CA5CoBA,CA4CpB,CA5C8B5Q,CAAAgR,SAAAL,KAAA,EAAAM,IAAA,CACjB5U,CAAA6U,MADiB,CA4C9B,EArCAT,CAqCA,CArCaG,CAAAO,YAAA,EAqCb,CArCqC,CAqCrC,CArC0C,CAqC1C,CApCAN,CAoCA,CApCShS,IAAAuS,MAAA,CAAW3N,CAAA4N,MAAX,CAoCT,CApCmCZ,CAoCnC,CAnCAD,CAmCA,CAnCW/M,CAAA+M,SAmCX,CAlCAiB,CAkCA,CAlCYhO,CAAAgO,UAkCZ,CAjCAO,CAiCA;AAjCSnT,IAAAnC,IAAA,CAAS8T,CAAT,CAAmBiB,CAAnB,CAiCT,CAhCAS,CAgCA,CAhCYrT,IAAAlC,IAAA,CAAS6T,CAAT,CAAmBiB,CAAnB,CAgCZ,CA/BAf,CA+BA,CA/BY7R,IAAAuS,MAAA,CAAW3N,CAAA6N,UAAAC,MAAX,CAAmC,CAAnC,CA+BZ,CA9BAY,CA8BA,CA9BgBtT,IAAAuS,MAAA,CAAWY,CAAX,CA8BhB,GA9BuCnT,IAAAuS,MAAA,CAAW3N,CAAA4M,SAAX,CA8BvC,CA7BA4B,CA6BA,CA7BmBC,CA6BnB,GA7BiCzO,CAAA+N,QA6BjC,CA5BAQ,CA4BA,CA5BSnT,IAAAuS,MAAA,CAAWY,CAAX,CA4BT,CA5B8BvB,CA4B9B,CA3BAyB,CA2BA,CA3BYrT,IAAAuS,MAAA,CAAWc,CAAX,CA2BZ,CA3BoCzB,CA2BpC,CArBAE,CAqBA,CArBO,EAqBP,CApBAA,CAAAnO,KAAA,CACI,GADJ,CAEIqO,CAFJ,CAEaH,CAFb,CAEwBwB,CAFxB,CAGI,GAHJ,CAIIrB,CAJJ,CAIaH,CAJb,CAIwBsB,CAJxB,CAKI,GALJ,CAMInB,CANJ,CAMaH,CANb,CAMwBsB,CANxB,CAOI,GAPJ,CAQInB,CARJ,CAQaH,CARb,CAQwBwB,CARxB,CASI,GATJ,CAUI,GAVJ,CAWIrB,CAXJ,CAWYmB,CAXZ,CAYI,GAZJ,CAaInB,CAbJ,CAaYsB,CAAA,CAAgBtT,IAAAuS,MAAA,CAAW3N,CAAA4M,SAAX,CAAhB,CAA6C2B,CAbzD,CAcI,GAdJ,CAeInB,CAfJ,CAeYqB,CAfZ,CAgBI,GAhBJ,CAiBIrB,CAjBJ,CAiBYoB,CAAA,CAAmBpT,IAAAuS,MAAA,CAAW3N,CAAA+N,QAAX,CAAnB,CAA+CU,CAjB3D,CAoBA,CAAAtB,CAAA,CAAQE,CAAA,CAAQ,MAAR,CAAiB,SAAzB,CAAA,CAAoC,CAC5BY,EAAGf,CADyB,CAApC,CAAAgB,SAAA,CAGclO,CAAAmO,aAAA,EAHd,CAGoC,CAAA,CAHpC,CA/CJ,CAfyB,CAA7B,CANmB,CALe,CAV1C,CAlBS,CAAZ,CAAA,CAsHC7W,CAtHD,CAuHA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAMLC,EAAWD,CAAAC,SANN,CAOLM,EAAOP,CAAAO,KAPF,CASLE,EAAOT,CAAAS,KATF,CAYLkU,EAAa3U,CAAA2U,WAZR,CAaLnH,EAAcxN,CAAAwN,YAbT,CAeL4J,EAAepX,CAAAoX,aAfV,CAiBLC,EAHcrX,CAAAsX,YAGJzW,UAAAwW,QAjBL,CAkBLE,EAAavX,CAAAuX,WAQjB5C;CAAA,CAAW,OAAX,CAAoB,QAApB,CAA8B,CAC1B6C,WAAY,CADc,CAG1BC,MAAO,MAHmB,CAI1BC,cAAe,EAJW,CAK1BC,UAAW,QALe,CAM1B/D,QAAS,CACLiB,YAAa,yBADR,CANiB,CAS1B7H,UAAW,IATe,CAU1BN,EAAI,GAVsB,CAA9B,CAa6C,CACzCkL,OAAQ,CAAA,CADiC,CAEzCC,gBAAiB,CAAA,CAFwB,CAGzC1F,QAAS,CAAA,CAHgC,CAIzCjN,oBAAqB,CAAA,CAJoB,CAKzC4S,cAAe,CAAC,aAAD,CAL0B,CAMzCxF,UAAW,CAAA,CAN8B,CAUzCyF,KAtCS/X,CAAAY,OAsCHC,UAAAkX,KAVmC,CAiBzCrU,UAAWA,QAAQ,EAAG,CAElB8J,CAAAC,OAAA5M,UAAA6C,UAAA1C,MAAA,CAA6C,IAA7C,CAFkB,KAKdM,EADSD,IACCC,QALI,CAMd0D,EAFS3D,IAED2D,MANM,CAOduH,EAHSlL,IAGAkL,OAPK,CAQdrD,EAASqD,CAAAzJ,OAAToG,CAAyB,CARX,CASdT,CATc,CAUduP,CAVc,CAWdC,EAAkB3W,CAAA4W,SAClBA,EAAAA,CAAWD,CAAXC,EAA8BlT,CAAAmT,IAAA,CAAUF,CAAV,CAC9BG,KAAAA,EAAQ9W,CAAA8W,MAARA,EAAyB,GAAzBA,CACAC,EAAOH,CAAPG,EAAmBH,CAAA5W,QAAA+W,KADnBD,CAEAE,EAASJ,CAATI,EAAqBJ,CAAA3L,OAFrB6L,CAGA/U,EAAIiV,CAAJjV,EAAciV,CAAAxV,OAHdsV;AAIArX,EAbSM,IAaDN,MAJRqX,CAKA9O,EAdSjI,IAcDiI,MALR8O,CAMAG,EAAWxX,CAAA2D,YAAA,EANX0T,CAOAI,EAAU,CAPVJ,CAQAK,CARAL,CASAM,CATAN,CAUAO,CAIJ,IAAIT,CAAJ,EAAgBA,CAAAjT,QAAhB,EAAoC5B,CAApC,CAWI,IAVAmV,CASA,EATWN,CAAAU,aASX,EAToC,CASpC,GAT0CV,CAAAW,KAS1C,EAT2D,CAS3D,EATgE,CAShE,CARArS,CAQA,CARsB0R,CAAA1R,oBAQtB,CAPAkS,CAOA,CAPQJ,CAAA,CAAOjV,CAAP,CAAW,CAAX,CAAAsJ,EAOR,EAP2BnG,CAAA,CAAsBA,CAAAyM,WAAtB,CAAuD,CAOlF,EAJAsE,CAAA,CAAWhL,CAAX,CAAmB,QAAQ,CAACnH,CAAD,CAAIC,CAAJ,CAAO,CAC9B,MAAQD,EAAAuH,EAAR,CAActH,CAAAsH,EADgB,CAAlC,CAIA,CAAAyL,CAAA,CAAQ,MAAR,CAAiBA,CAAA,CAAM,CAAN,CAAAlL,YAAA,EAAjB,CAA0CkL,CAAAU,OAAA,CAAa,CAAb,CAC1C,CAAOzV,CAAA,EAAP,EAAckJ,CAAA,CAAOrD,CAAP,CAAd,EAGQ,EAFJT,CAEI,CAFI8D,CAAA,CAAOrD,CAAP,CAEJ,CADJuP,CACI,CADQH,CAAA,CAAOjV,CAAP,CACR,CAAAoV,CAAA9L,EAAA,EAAelE,CAAAkE,EAAf,EAA+C5J,IAAAA,EAA/C,GAA0B0V,CAAA,CAAUL,CAAV,CAA1B,GACI3P,CAAAkE,EAgBA,EAhBW+L,CAgBX,GAdAjQ,CAAAsN,MAGA,CAHc0C,CAAA,CAAUL,CAAV,CAGd,CAAIK,CAAA9L,EAAJ,CAAkBlE,CAAAkE,EAAlB,EAA8B0L,CAAAA,CAA9B,GACIM,CADJ,CACiBL,CAAA,CAAOjV,CAAP,CAAW,CAAX,CADjB,GAE4CN,IAAAA,EAF5C,GAEsB4V,CAAA,CAAWP,CAAX,CAFtB,GAGQ3P,CAAAsN,MAHR,GAIctN,CAAAkE,EAJd,CAIwB8L,CAAA9L,EAJxB,GAIwCgM,CAAAhM,EAJxC,CAIuD8L,CAAA9L,EAJvD,GAKagM,CAAA,CAAWP,CAAX,CALb,CAKiCK,CAAA,CAAUL,CAAV,CALjC,EAWA,EAFJlP,CAAA,EAEI,CADJ7F,CAAA,EACI,CAAS,CAAT,CAAA6F,CAjBJ,CAAA,CAHR,CAAA,EA4BJ3I,CAAA,CAAKgM,CAAL,CAAa,QAAQ,CAAC9D,CAAD,CAAQpF,CAAR,CAAW,CAE5B,IAAI0V,CAMgBhW,KAAAA,EAApB,GAAI0F,CAAAsN,MAAJ,GACQtN,CAAAkE,EAAJ,EAAe4L,CAAA7W,IAAf,EAA+B+G,CAAAkE,EAA/B,EAA0C4L,CAAA5W,IAA1C,CAEI8G,CAAAsN,MAFJ,CAEkB/Q,CAAAgU,YAFlB;AAEsCjY,CAAAkY,OAFtC,EAGSlY,CAAAmY,SAAA,CAAiBnY,CAAAoY,OAAjB,CAAgC,CAHzC,EAIQpY,CAAAqY,OAJR,CAIuB9P,CAAA+P,IAJvB,CAMI5Q,CAAA6N,UANJ,CAMsB,EAP1B,CAUA7N,EAAA4N,MAAA,EAAemC,CAGf,EADAR,CACA,CADYzL,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CACZ,GAAiB2U,CAAA3B,MAAjB,GAAqC5N,CAAA4N,MAArC,GACiCtT,IAAAA,EAG7B,GAHIiV,CAAAe,WAGJ,GAFIf,CAAAe,WAEJ,CAF2B,CAE3B,EAAAA,CAAA,CAAaf,CAAAe,WAAb,CAAoC,CAJxC,CAMAtQ,EAAAsQ,WAAA,CAAmBA,CA3BS,CAAhC,CAlEkB,CAjBmB,CAuHzCxD,WAAYA,QAAQ,EAAG,CAAA,IAEfhJ,EADSlL,IACAkL,OAFM,CAGfvH,EAFS3D,IAED2D,MAHO,CAIfgR,EAAWhR,CAAAgR,SAJI,CAKfK,CALe,CAMfN,CANe,CAOfzU,EANSD,IAMCC,QAPK,CAQfgY,EAAWhY,CAAAoL,EARI,CASf+K,CATe,CAUfpU,CAVe,CAWfoF,CAXe,CAYfmN,CAZe,CAcf2D,CAde,CAefC,CAfe,CAgBfC,CAhBe,CAiBfnQ,EAhBSjI,IAgBDiI,MAGZ,KADAjG,CACA,CADIkJ,CAAAzJ,OACJ,CAAOO,CAAA,EAAP,CAAA,CACIoF,CAgBA,CAhBQ8D,CAAA,CAAOlJ,CAAP,CAgBR,CAfAoW,CAeA,CAfehR,CAAA4N,MAef,CApCShV,IAqBoBN,MAAAqD,IAe7B,CAdAiS,CAcA,CAdQ5N,CAAA4N,MAcR,CAbA0C,CAaA,CAbatQ,CAAAsQ,WAab,CAZAtB,CAYA,CAZQhP,CAAAnH,QAAAmW,MAYR,EAZ+BnW,CAAAmW,MAY/B,CAXA1B,CAWA,CAXQtN,CAAAsN,MAWR,CATchT,IAAAA,EASd,GATIgT,CASJ,GARIA,CAQJ,CARYtN,CAAAsN,MAQZ,CAR0BuD,CAQ1B,EARqDvW,IAAAA,EAQrD,GARsCgW,CAQtC,EARkEA,CAQlE,CAR+EzX,CAAAoW,cAQ/E,GANA6B,CAMA,CANUR,CAAA,CAAahW,IAAAA,EAAb,CAAyB0F,CAAA4N,MAMnC,CALAmD,CAKA,CALUT,CAAA,CAAahW,IAAAA,EAAb;AAAyB0F,CAAAsN,MAKnC,CAHAH,CAGA,CAHUnN,CAAAmN,QAGV,CAAc7S,IAAAA,EAAd,GAAIgT,CAAJ,EAAoC,CAApC,EAA2BM,CAA3B,EAA0CoD,CAAAA,CAA1C,EAGS7D,CA0CL,GAzCIA,CAoBA,CApBUnN,CAAAmN,QAoBV,CApB0BI,CAAA0D,MAAA,CAClB,EADkB,CAElB,IAFkB,CAGlB,IAHkB,CAIlBjC,CAJkB,CAKlB,IALkB,CAMlB,IANkB,CAOlBnW,CAAAqY,QAPkB,CAAAC,KAAA,CAUhB,CACFC,MAAiB,MAAV,GAAApC,CAAA,CAAmB,MAAnB,CAA4B,QADjC,CAEFlB,MAAOjV,CAAAiV,MAFL,CAGF4C,OAAQ7X,CAAA6X,OAHN,CAIF,aAAc7X,CAAAqW,UAJZ,CAVgB,CAAAhB,SAAA,CAgBZ,kBAhBY,CAAAV,IAAA,CAxCzB5U,IAyDQyY,YAjBiB,CAoB1B,CAAIrR,CAAAmN,QAAAmE,IAAJ,GACItR,CAAAmN,QAAAmE,IAAAtR,MADJ,CAC8BA,CAD9B,CAqBJ,EAdY,CAcZ,CAdI4N,CAcJ,GAbIA,CAaJ,EAbaT,CAAAO,YAAA,EAab,CAbqC,CAarC,EATAP,CAAAgE,KAAA,CAAa,CACTI,KAAMvR,CAAAnH,QAAA2Y,MAAND,EAA6B1Y,CAAA2Y,MAA7BD,EAA8C,GADrC,CAETrN,EAAG0J,CAFM,CAGT3J,EAAGqJ,CAHM,CAITwD,QAASA,CAJA,CAKTC,QAASA,CALA,CAAb,CASA,CAAA/Q,CAAA2M,WAAA,CAAmBpQ,CAAAkV,SAAA,CAAiB,CAAC5Q,CAAAlF,IAAD,CAAakF,CAAAiI,IAAb,CAAyBvM,CAAAmV,SAAzB,CAA0CpE,CAA1C,CAjF/B1U,IAiFgFN,MAAAqD,IAAjD,CAAoEiS,CAApE,CAAjB,CAA8F,CAACA,CAAD,CAAQN,CAAR,CAAgBzM,CAAAiI,IAAhB,CAA4BvM,CAAAsQ,QAA5B,CA7CrH,EA+CWM,CA/CX,GAgDInN,CAAAmN,QAhDJ,CAgDoBA,CAAArH,QAAA,EAhDpB,CAsDAjN;CAAAqY,QAAJ,EACI3Z,CAAAW,KAAA,CA3FSU,IA2FFyY,YAAP,CAA2B,IAA3B,CAAiC,QAAQ,CAAChZ,CAAD,CAAU,CAC/C,MAAOd,EAAAoa,WAAAvZ,UAAAwZ,GAAArZ,MAAA,CACHF,CAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CADG,CAEH,EAAAF,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAFG,CADwC,CAAnD,CA5Fe,CAvHkB,CA+NzCkZ,YAAaA,QAAQ,EAAG,CACpB,IACI/N,EADSlL,IACAkL,OAEb6K,EAAAmD,iBAAAvZ,MAAA,CAAoC,IAApC,CAIAT,EAAA,CAAKgM,CAAL,CAAa,QAAQ,CAAC9D,CAAD,CAAQ,CACzB,IAAImN,EAAUnN,CAAAmN,QACVA,EAAJ,EACI3V,CAAA,CAAS2V,CAAA4E,QAAT,CAA0B,WAA1B,CAAuC,QAAQ,EAAG,CAGvB,CAAvB,CAAI/R,CAAAsQ,WAAJ,EAA6B0B,CAAAhS,CAAAgS,OAA7B,GACIhS,CAAAiS,GAIA,CAJW9E,CAAAlJ,EAIX,CAHAkJ,CAAAgE,KAAA,CAAa,CACTlN,EAAGjE,CAAAiS,GAAHhO,CAAc,CADL,CAAb,CAGA,CAAAjE,CAAAgS,OAAA,CAAe,CAAA,CALnB,CASAla,EAAA,CAAKgM,CAAL,CAAa,QAAQ,CAACoO,CAAD,CAAa,CAC1BA,CAAJ,GAAmBlS,CAAnB,EAA4BkS,CAAAF,OAA5B,EAAiDE,CAAA/E,QAAjD,GACI+E,CAAA/E,QAAAgE,KAAA,CAAwB,CACpBlN,EAAGiO,CAAAD,GADiB,CAAxB,CAGA,CAAAC,CAAAF,OAAA,CAAoB,CAAA,CAJxB,CAD8B,CAAlC,CAZ8C,CAAlD,CAHqB,CAA7B,CARoB,CA/NiB,CAmQzC5D,QAASpW,CAnQgC,CAoQzCma,YAAana,CApQ4B,CAqQzCoa,QAASpa,CArQgC,CAb7C,CAuRA4W,EAAAyD,KAAA;AAAeC,QAAQ,CAACpO,CAAD,CAAID,CAAJ,CAAOsO,CAAP,CAAUC,CAAV,CAAa3Z,CAAb,CAAsB,CAIzC,MAAO,CACH,GADG,CAHQA,CAGR,EAHmBA,CAAAiY,QAGnB,EAHuC5M,CAGvC,CAFQrL,CAER,EAFmBA,CAAAkY,QAEnB,EAFuC9M,CAEvC,CAEH,GAFG,CAEEC,CAFF,CAEKD,CAFL,CAESuO,CAFT,CAGHtO,CAHG,CAGAD,CAHA,CAIHC,CAJG,CAICqO,CAJD,CAIItO,CAJJ,CAKHC,CALG,CAKCqO,CALD,CAKItO,CALJ,CAKQuO,CALR,CAMHtO,CANG,CAMAD,CANA,CAMIuO,CANJ,CAOH,GAPG,CAJkC,CAgB7C1a,EAAA,CAAK,CAAC,QAAD,CAAW,QAAX,CAAL,CAA2B,QAAQ,CAACkX,CAAD,CAAQ,CACvCJ,CAAA,CAAQI,CAAR,CAAgB,KAAhB,CAAA,CAAyB,QAAQ,CAAC9K,CAAD,CAAID,CAAJ,CAAOsO,CAAP,CAAUC,CAAV,CAAa3Z,CAAb,CAAsB,CAAA,IAE/CiY,EAAUjY,CAAViY,EAAqBjY,CAAAiY,QACrBC,EAAAA,CAAUlY,CAAVkY,EAAqBlY,CAAAkY,QAKX,SAAd,GAAI/B,CAAJ,EAA0BwD,CAA1B,CAA8BD,CAA9B,GACIrO,CACA,EADK9I,IAAAuS,MAAA,EAAY6E,CAAZ,CAAgBD,CAAhB,EAAqB,CAArB,CACL,CAAAA,CAAA,CAAIC,CAFR,CAKAtF,EAAA,CAAO0B,CAAA,CAAQI,CAAR,CAAA,CAAe9K,CAAf,CAAkBD,CAAlB,CAAqBsO,CAArB,CAAwBC,CAAxB,CAEH1B,EAAJ,EAAeC,CAAf,EAII7D,CAAAnO,KAAA,CAAU,GAAV,CAAe+R,CAAf,CADqB7M,CAADwO,CAAK1B,CAAL0B,CAAgBxO,CAAhBwO,CAAoBxO,CAApBwO,CAAwBD,CAC5C,CAA2C,GAA3C,CAAgD1B,CAAhD,CAAyDC,CAAzD,CAGJ,OAAO7D,EAtB4C,CADhB,CAA3C,CAjUS,CAAZ,CAAA,CAiWC5V,CAjWD,CAkWA,UAAQ,CAACC,CAAD,CAAI,CAyETmb,QAASA,EAAS,CAACnF,CAAD,CAAW1U,CAAX,CAAoB0D,CAApB,CAA2B,CACzC,IAAA+S,KAAA,CAAU/B,CAAV,CAAoB1U,CAApB,CAA6B0D,CAA7B,CADyC,CAzEpC,IAML/E,EAAWD,CAAAC,SANN,CAOLC,EAAOF,CAAAE,KAPF,CAQLkb,EAAepb,CAAAob,aARV,CASLlH,EAAiBlU,CAAAkU,eATZ,CAUL5T,EAAUN,CAAAM,QAVL,CAWL+a,EAA0Brb,CAAAqb,wBAXrB,CAYLC,EAAMtb,CAAAsb,IAZD,CAaL/a,EAAOP,CAAAO,KAbF,CAcLmJ,EAAY1J,CAAA0J,UAdP;AAeL6R,EAAWvb,CAAAub,SAfN,CAgBLC,EAAgBxb,CAAAwb,cAhBX,CAiBLzN,EAAQ/N,CAAA+N,MAjBH,CAkBLxE,EAAOvJ,CAAAuJ,KAlBF,CAmBLkS,EAAczb,CAAAyb,YAnBT,CAqBL9a,EAAOX,CAAAW,KArBF,CAsBL+a,CAtBK,CAwBLC,EAA0B,CAE1BxC,OAAQqC,CAAA,CAAgB,EAAhB,CAAqB,EAFH,CAI1BI,gBAAiB,CAJS,CAK1BC,mBAAoB,CALM,CAM1BC,WAVM9b,CAAA+b,IAUND,EAAmB,CAACN,CANM,CAO1BQ,OAAQ,EAPkB,CAQ1BC,SAAU,CARgB,CAW1B5D,KAAM,EAXoB,CAY1B6D,OAAQ,CAZkB,CAgB9BhI,EAAAiI,UAAA,CAA2BpO,CAAA,CAAM,CAAA,CAAN,CAAY4N,CAAZ,CAAqCzH,CAAAiI,UAArC,CAQ3Bnc,EAAA0b,OAAA,CAAWA,CAAX,CAAoBA,QAAQ,CAAC/F,CAAD,CAAOyG,CAAP,CAAiB,CAAA,IAErChY,EAAMuR,CAAA7S,OAF+B,CAGrCuZ,CAEJ,IAAID,CAAJ,CACI,IAAK/Y,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBe,CAAhB,CAAqBf,CAArB,EAA0B,CAA1B,CACIgZ,CAEA,CAFO1G,CAAA,CAAKtS,CAAL,CAAS,CAAT,CAEP,CADAsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CACA,CADcsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CACd,CAAAsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CAAA,CAAcgZ,CAItB,OAAO1G,EAbkC,CA6B7CwF,EAAAta,UAAA,CAAsB,CAElBkX,KAAMA,QAAQ,CAAC/B,CAAD,CAAW1U,CAAX,CAAoB0D,CAApB,CAA2B,CAErC,IAAAsX,iBAAA,CAAwB,EAExB,KAAAtG,SAAA,CAAgBA,CAEhB,KAAAtL,YAAA,CAAmBpJ,CACnB,KAAAA,QAAA,CAAeyM,CAAA,CAAM4N,CAAN,CAA+Bra,CAA/B,CAEf,KAAA0D,MAAA,CAAaA,CAEb,KAAAgH,KAAA,CAAYzC,CAAA,CAAK,IAAAjI,QAAA0K,KAAL,CAAwB,IAAA1K,QAAA6X,OAAxB,CAGR7X;CAAA6F,QAAJ,GACI,IAAAoV,OAAA,EAEA,CADA,IAAAC,WAAA,EACA,CAAA,IAAAC,UAAA,EAHJ,CAdqC,CAFvB,CA0BlBF,OAAQA,QAAQ,EAAG,CAAA,IAEXvG,EADW0G,IACA1G,SAFA,CAGX1U,EAFWob,IAEDpb,QAHC,CAIX0K,EAHW0Q,IAGJ1Q,KAJI,CAKXkK,CAJWwG,KAOfxG,MAAA,CAAiBA,CAAjB,CAAyBF,CAAA2G,EAAA,CAAW,WAAX,CAAA/C,KAAA,CAA6B,CAClDsC,OAAQ5a,CAAA4a,OAD0C,CAElDU,WAAa,MAFqC,CAA7B,CAAA3G,IAAA,EAPVyG,KAafG,MAAA,CAAiB7G,CAAA8G,KAAA,EAAAnG,SAAA,CACH,4BADG,CAAAiD,KAAA,CAEP,CACFjN,EAAG,CADD,CAEFoQ,EAAGzb,CAAA0b,kBAAHD,EAAgC,CAF9B,CAGF5D,OAAQnN,CAHN,CAIFuK,MAAOvK,CAJL,CAFO,CAAAiK,IAAA,CAONC,CAPM,CAUjB,KAAA+G,iBAAA,CAvBeP,IAuBSG,MAAA1G,YAAA,EAvBTuG,KAwBfG,MAAAjD,KAAA,CAAoB,CAChBlN,EAAG,CAAC,IAAAuQ,iBAAJvQ,CAA4B,CAA5BA,CAAgC,CADhB,CAApB,CAxBegQ,KA8BfQ,eAAA,CAA0BlH,CAAA2G,EAAA,EAAA1G,IAAA,CAAiBC,CAAjB,CA9BXwG,KAgCfP,UAAA,CAAqBnG,CAAA8G,KAAA,EAAAnG,SAAA,CACP,4BADO,CAAAiD,KAAA,CAEX,CACFT,OAAQnN,CADN;AAEFuK,MAAOvK,CAFL,CAGF+Q,EAAGzb,CAAAsa,gBAAHmB,EAA8B,CAH5B,CAFW,CAAA9G,IAAA,CAhCNyG,IAsCJQ,eANU,CAhCNR,KAwCfS,gBAAA,CAA2BnH,CAAAL,KAAA,CACnB+F,CAAA,CAAO,CACH,GADG,CACG,EADH,CACM1P,CADN,CACa,CADb,CAEH,GAFG,CAEG,EAFH,CAEM,CAFN,CAEUA,CAFV,CAEiB,CAFjB,CAGH,GAHG,CAIH,CAJG,CAIAA,CAJA,CAIO,CAJP,CAKH,GALG,CAMH,CANG,CAMA,CANA,CAMIA,CANJ,CAMW,CANX,CAOH,GAPG,CAQH,CARG,CAQAA,CARA,CAQO,CARP,CASH,GATG,CAUH,CAVG,CAUA,CAVA,CAUIA,CAVJ,CAUW,CAVX,CAAP,CAWG1K,CAAA8a,SAXH,CADmB,CAAAzF,SAAA,CAab,6BAba,CAAAV,IAAA,CAxCZyG,IAsDNQ,eAdkB,CAxCZR,KAyDfU,qBAAA,CAzDeV,IAyDiBP,UAAAhG,YAAA,EAzDjBuG,KA0DfQ,eAAAxZ,UAAA,CAAkC,CA1DnBgZ,IA0DoBU,qBAAnC,CAAmE,CAAnE,CAAuE,CAAvE,CAA0E,CA1D3DV,IA0D4DU,qBAA3E,CAA2G,CAA3G,CAA+G,CAA/G,CA1DeV,KA6DfW,oBAAA,CAA6B,CAA7B,CA7DeX,KA8DfW,oBAAA,CAA6B,CAA7B,CA/De,CA1BD,CAmGlBC,SAAUA,QAAQ,CAAC3Q,CAAD,CAAID,CAAJ,CAAO6J,CAAP,CAAc4C,CAAd,CAAsB,CAAA,IAGhCiD,EAFWM,IACDpb,QACC8a,SAHqB,CAKhCmB,EAAU,CALsB,CAMhCC;AALWd,IAKFe,SAAA,CAAoB,SAApB,CAAgC,MAL9Bf,KAOf/P,EAAA,CAAaA,CAPE+P,KAQfhQ,EAAA,CAAaA,CAAb,CAAiB,IAAAuQ,iBARFP,KASfnG,MAAA,CAAiBA,CATFmG,KAWflE,QAAA,CAXekE,IAUfvD,OACA,CADkBA,CAVHuD,KAYfa,QAAA,CAAmBA,CAGfnB,EAAJ,EAfeM,IAgBXnG,MAGA,CAnBWmG,IAgBMa,QAGjB,CAHoChH,CAGpC,CAH4CgH,CAG5C,CAnBWb,IAgB2C1Q,KAGtD,CAnBW0Q,IAiBXlE,QAEA,CAFmBA,CAEnB,CAF6B,CAE7B,CAnBWkE,IAkBXgB,SACA,CADoBvE,CACpB,CADqC,CACrC,CAD6B5C,CAC7B,CAnBWmG,IAmBX/P,EAAA,CAAiBA,CAAjB,EAnBW+P,IAmBUpb,QAAA0a,OAJzB,GAfeU,IAqBXvD,OAEA,CAvBWuD,IAqBOlE,QAElB,CAFqCW,CAErC,CAF8CX,CAE9C,CAvBWkE,IAqB6C1Q,KAExD,CAvBW0Q,IAsBXgB,SACA,CADoBnH,CACpB,CADqC,CACrC,CAD4B4C,CAC5B,CAvBWuD,IAuBXhQ,EAAA,EAvBWgQ,IAuBepb,QAAA0a,OAR9B,CAfeU,KA2BfxG,MAAA,CAAesH,CAAf,CAAA,CAAuB,CACnBG,WAAYhR,CADO,CAEnBiQ,WA7BWF,IA6BChQ,EAFO,CAAvB,CA3BegQ,KAiCfG,MAAA,CAAeW,CAAf,CAAA,CAAuB,CACnBjH,MAAOA,CADY,CAEnB4C,OAAQA,CAFW,CAAvB,CAjCeuD,KAuCfJ,iBAAA,CAA0B,CAA1B,CAAA,CAA6BkB,CAA7B,CAAA,CAAqC,CACjCG,WAAYvB,CAAA,CAAW,CAAX,CAAe7F,CAAf,CAAuBiC,CADF,CAEjCoE,WAAYR,CAAA,CAAWjD,CAAX,CAAoBoE,CAApB,CAA8B,CAFT,CAArC,CAxCoC,CAnGtB,CAqJlBF,oBAAqBA,QAAQ,CAAC1L,CAAD,CAAQ,CAAA,IAE7BqE;AADW0G,IACA1G,SAFkB,CAG7BsG,EAFWI,IAEQJ,iBAHU,CAI7Bhb,EAHWob,IAGDpb,QAJmB,CAK7B0K,EAJW0Q,IAIJ1Q,KALsB,CAM7BkK,CAGJA,EAAA,CAAQF,CAAA2G,EAAA,EAAA1G,IAAA,CAROyG,IAQUxG,MAAjB,CACRoG,EAAA9U,KAAA,CAAsB0O,CAAtB,CAGA0H,EAAA,CAAW5H,CAAA8G,KAAA,EAAAnG,SAAA,CACG,6BADH,CAAAV,IAAA,CAEFC,CAFE,CAOX0H,EAAAhE,KAAA,CAAcgE,CAAAC,MAAA,CAAe,CACzBlR,EAAI,GADqB,CAEzBD,EAAI,GAFqB,CAGzB6J,MAAOvK,CAAPuK,CAAc,CAHW,CAIzB4C,OAAQnN,CAARmN,CAAe,CAJU,CAKzB4D,EAAGzb,CAAAua,mBALsB,CAAf,CAMX+B,CAAAzH,YAAA,EANW,CAAd,CASWH,EAAAL,KAAA,CACD+F,CAAA,CAAO,CACT,GADS,CAET1P,CAFS,CAEF,CAFE,EAEG2F,CAAA,CAAS,EAAT,CAAa,CAFhB,EAGT3F,CAHS,CAGF,CAHE,CAGE,CAHF,CAIT,GAJS,CAKTA,CALS,CAKF,CALE,EAKG2F,CAAA,CAAS,EAAT,CAAa,CALhB,EAMT3F,CANS,CAMF,CANE,CAME,CANF,CAOT,GAPS,CAQTA,CARS,CAQF,CARE,EAQG2F,CAAA,CAAQ,CAAR,CAAa,EARhB,EAST3F,CATS,CASF,CATE,CAAP,CAUH1K,CAAA8a,SAVG,CADC,CAAAzF,SAAA,CAYG,4BAZH,CAAAV,IAAA,CAaFqG,CAAA,CAAiB3K,CAAjB,CAbE,CA7BsB,CArJnB,CAyMlBmM,SAAUA,QAAQ,CAAC/T,CAAD,CAAOC,CAAP,CAAW,CAAA,IAErB1I,EADWob,IACDpb,QAFW,CAGrB8a,EAAW9a,CAAA8a,SAHU,CAIrBH,EAAW3a,CAAA2a,SAJU,CAKrB8B,EAJWrB,IAICgB,SALS,CAMrBM,CANqB,CASrBC,CATqB,CAWrBT,EAAS,IAAAC,SAAA,EAAkBS,CAAA,IAAAA,WAAlB;AAAoC,SAApC,CAAgD,MAExD5d,EAAA,CAAQyd,CAAR,CAAL,GAIAhU,CA0DA,CA1DOlG,IAAAlC,IAAA,CAASoI,CAAT,CAAe,CAAf,CA0DP,CAzDAiU,CAyDA,CAzDSna,IAAAsa,KAAA,CAAUJ,CAAV,CAAsBhU,CAAtB,CAyDT,CA1Ee2S,IAmBf0B,gBAuDA,CAvD2BH,CAuD3B,CAvDqC7C,CAAA,CAD9B2C,CAC8B,CADlBla,IAAAnC,IAAA,CAASsI,CAAT,CAAa,CAAb,CACkB,CAAoBgU,CAApB,CAuDrC,CApDIC,CAoDJ,CApDchC,CAoDd,GAnDI+B,CACA,EADUD,CACV,CADsB9B,CACtB,CADiCgC,CACjC,EAD4ClU,CAC5C,CAAAkU,CAAA,CAAUhC,CAkDd,EAhDAoC,CAgDA,CAhDSxa,IAAAC,MAAA,CAAWka,CAAX,CA1BMtB,IA0BclE,QAApB,CA1BMkE,IA0BiCa,QAAvC,CAgDT,CA/CAe,CA+CA,CA/CeL,CA+Cf,CA/CyB,CA+CzB,CA/C6B,EA+C7B,CA1EevB,IA8Bf3S,KA4CA,CA5CgBA,CA4ChB,CA1Ee2S,IA+Bf1S,GA2CA,CA3CcA,CA2Cd,CAzCKoS,CAAL,EAjCeM,IA8CXQ,eAAA,CAAwBM,CAAxB,CAAA,CAAgC,CAC5BZ,WAAYyB,CADgB,CAAhC,CAUA,CAxDW3B,IAiDXP,UAAA,CAAmBqB,CAAnB,CAAA,CAA2B,CACvBrE,OAAQ8E,CADe,CAA3B,CAOA,CAxDWvB,IAoDXS,gBAAA,CAAyBK,CAAzB,CAAA,CAAiC,CAC7BZ,WAAY0B,CADiB,CAAjC,CAIA,CAxDW5B,IAuDX6B,aACA,CADwBF,CACxB,CAxDW3B,IAwDX8B,cAAA,CAAyB,CAvB7B,GAjCe9B,IAkCXQ,eAAA,CAAwBM,CAAxB,CAAA,CAAgC,CAC5BG,WAAYU,CADgB,CAAhC,CAUA,CA5CW3B,IAqCXP,UAAA,CAAmBqB,CAAnB,CAAA,CAA2B,CACvBjH,MAAO0H,CADgB,CAA3B,CAOA,CA5CWvB,IAwCXS,gBAAA,CAAyBK,CAAzB,CAAA,CAAiC,CAC7BG,WAAYW,CADiB,CAAjC,CAIA,CA5CW5B,IA2CX8B,cACA,CADyBH,CACzB,CA5CW3B,IA4CX6B,aAAA,CAAwB,CAX5B,CAyCA;AAfe,EAAf,EAAIN,CAAJ,CA3DevB,IA4DXS,gBAAAsB,KAAA,EADJ,CA3De/B,IA8DXS,gBAAAuB,KAAA,CAA8B,CAAA,CAA9B,CAYJ,CARyB,CAAA,CAQzB,GARIpd,CAAAqd,SAQJ,GAPgB,CAAZ,EAAI5U,CAAJ,EAAuB,CAAvB,EAAiBC,CAAjB,CAnEW0S,IAoEPxG,MAAAuI,KAAA,EADJ,CAnEW/B,IAsEPxG,MAAAwI,KAAA,EAIR,EA1EehC,IA0Efe,SAAA,CAAoB,CAAA,CA9DpB,CAbyB,CAzMX,CA0RlBjB,WAAYA,QAAQ,EAAG,CACnB,IAAIE,EAAW,IAIfA,EAAAkC,iBAAA,CAA4BC,QAAQ,CAAC7W,CAAD,CAAI,CAAA,IAChC8W,EAAkBpC,CAAA1X,MAAA+Z,QAAAC,UAAA,CAAiChX,CAAjC,CADc,CAGhCiX,EADUvC,CAAApb,QACE8a,SAAA,CAAmB,QAAnB,CAA8B,QAHV,CAIhC8C,EAAgBxC,CAAAwC,cAOhBC,EAAAzC,CAAAyC,cAAJ,EAAgCnX,CAAAoX,QAAhC,EAAyE,CAAzE,GAA6CpX,CAAAoX,QAAA,CAAU,CAAV,CAAA,CAAaH,CAAb,CAA7C,GACII,CAQA,CARgB3C,CAAA4C,0BAAA,CAAmCR,CAAnC,CAAA,CAAoDG,CAApD,CAQhB,CAPAM,CAOA,CAPiB7C,CAAA,CAASuC,CAAT,CAOjB,CALAO,CAKA,CALSH,CAKT,CALyBE,CAKzB,CAHA7C,CAAAwB,WAGA,CAHsB,CAAA,CAGtB,CAFAxB,CAAA+C,eAAA,CAAwBP,CAAA,CAAc,CAAd,CAAxB,CAA2CM,CAA3C,CAAmDN,CAAA,CAAc,CAAd,CAAnD,CAAsEM,CAAtE,CAEA,CAAI9C,CAAAwB,WAAJ,EACIxU,CAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB;AAG3BhB,QAAS,WAHkB,CAI3B0W,QAAS1X,CAAAqJ,KAJkB,CAK3BsO,SAAU3X,CALiB,CAA/B,CAVR,CAXoC,CAmCxC0U,EAAAkD,eAAA,CAA0BC,QAAQ,CAAC7X,CAAD,CAAI,CAC9B0U,CAAAwB,WAAJ,EACIxU,CAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB,CAG3BhB,QAAS,WAHkB,CAI3B0W,QAAS1X,CAAAqJ,KAJkB,CAK3BsO,SAAU3X,CALiB,CAA/B,CAQJ0U,EAAAyC,cAAA,CAAyBzC,CAAAwB,WAAzB,CAA+CxB,CAAAzU,OAA/C,CAAiEyU,CAAAoD,OAAjE,CAAmF,IAVjD,CAatCpD,EAAAqD,iBAAA,CAA4BC,QAAQ,CAAChY,CAAD,CAAI,CAChC8W,CAAAA,CAAkBpC,CAAA1X,MAAA+Z,QAAAC,UAAA,CAAiChX,CAAjC,CAClBiY,EAAAA,CAAgBvD,CAAA4C,0BAAA,CAAmCR,CAAnC,CAEpBpC,EAAAzU,OAAA,CAAkBgY,CAAAhY,OAClByU,EAAAoD,OAAA,CAAkBG,CAAAH,OAClBpD,EAAAwC,cAAA,CAAyB,CAACxC,CAAA3S,KAAD,CAAgB2S,CAAA1S,GAAhB,CAEzB0S,EAAAyC,cAAA,CAAyB,CAAA,CARW,CAWxCzC,EAAAwD,iBAAA,CAA4BC,QAAQ,CAACnY,CAAD,CAAI,CACpC,IAAIuI,EAAQ6K,CAAA,CAAasB,CAAA1S,GAAb,CAA2B0S,CAAA3S,KAA3B,CAARwG,CAAoDmM,CAAApb,QAAA+W,KACxDqE,EAAA+C,eAAA,CAAwBrE,CAAA,CAAasB,CAAA3S,KAAb;AAA6BwG,CAA7B,CAAxB,CAA6D6K,CAAA,CAAasB,CAAA1S,GAAb,CAA2BuG,CAA3B,CAA7D,CACA7G,EAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB,CAG3BhB,QAAS,WAHkB,CAI3B2W,SAAU3X,CAJiB,CAA/B,CAHoC,CAWxC0U,EAAA0D,iBAAA,CAA4BC,QAAQ,CAACrY,CAAD,CAAI,CACpC,IAAIuI,GAASmM,CAAA1S,GAATuG,CAAuBmM,CAAA3S,KAAvBwG,EAAwCmM,CAAApb,QAAA+W,KAC5CqE,EAAA+C,eAAA,CAAwB/C,CAAA3S,KAAxB,CAAwCwG,CAAxC,CAA+CmM,CAAA1S,GAA/C,CAA6DuG,CAA7D,CACA7G,EAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB,CAG3BhB,QAAS,WAHkB,CAI3B2W,SAAU3X,CAJiB,CAA/B,CAHoC,CAWxC0U,EAAA4D,WAAA,CAAsBC,QAAQ,CAACvY,CAAD,CAAI,CAAA,IAC1B8W,EAAkBpC,CAAA1X,MAAA+Z,QAAAC,UAAA,CAAiChX,CAAjC,CADQ,CAE1BuI,EAAQmM,CAAA1S,GAARuG,CAAsBmM,CAAA3S,KAFI,CAG1BsP,EAAMqD,CAAAhQ,EAAN2M,CAAmBqD,CAAA6B,aAHO,CAI1BiC,EAAO9D,CAAA/P,EAAP6T,CAAoB9D,CAAA8B,cAEnB9B,EAAApb,QAAA8a,SAAL,EAAkC0C,CAAAgB,OAAlC,CAA2DzG,CAA3D,EACM+C,CAAAM,CAAApb,QAAA8a,SADN,EACmC0C,CAAA7W,OADnC,CAC4DuY,CAD5D,CAGI9D,CAAA+C,eAAA,CAAwB/C,CAAA3S,KAAxB,CAAwCwG,CAAxC,CAA+CmM,CAAA1S,GAA/C,CAA6DuG,CAA7D,CAHJ,CAMImM,CAAA+C,eAAA,CAAwB/C,CAAA3S,KAAxB,CAAwCwG,CAAxC,CAA+CmM,CAAA1S,GAA/C,CAA6DuG,CAA7D,CAGJ7G;CAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB,CAG3BhB,QAAS,WAHkB,CAI3B2W,SAAU3X,CAJiB,CAA/B,CAf8B,CAtFf,CA1RL,CA6YlBsX,0BAA2BA,QAAQ,CAACR,CAAD,CAAkB,CAAA,IAE7Cxd,EADWob,IACDpb,QAFmC,CAG7Cmf,EAAqBnf,CAAA2a,SAAA,CAFVS,IAE6B0B,gBAAnB,CAA8C9c,CAAA2a,SAA9C,CAAiE,CAE1F,OAAO,CACHhU,QAAS6W,CAAA7W,OAATA,CALWyU,IAKuB/P,EAAlC1E,CALWyU,IAKoClE,QAA/CvQ,GALWyU,IAKyDgB,SAApEzV,CAAwFwY,CAAxFxY,CADG,CAEH6X,QAAShB,CAAAgB,OAATA,CANWpD,IAMuBhQ,EAAlCoT,CANWpD,IAMoCa,QAA/CuC,GANWpD,IAMyDgB,SAApEoC,CAAwFW,CAAxFX,CAFG,CAL0C,CA7YnC,CA2ZlBL,eAAgBA,QAAQ,CAAC1V,CAAD,CAAOC,CAAP,CAAW,CACtB,CAAT,CAAIA,CAAJ,GACID,CACA,CADOqR,CAAA,CAAa,CAAb,CAAiBA,CAAA,CAAapR,CAAb,CAAkBD,CAAlB,CAAjB,CACP,CAAAC,CAAA,CAAK,CAFT,CAKW,EAAX,CAAID,CAAJ,GACIC,CACA,CADKoR,CAAA,CAAapR,CAAb,CAAkBD,CAAlB,CACL,CAAAA,CAAA,CAAO,CAFX,CAKA,KAAAA,KAAA,CAAYA,CACZ,KAAAC,GAAA,CAAUA,CAZqB,CA3ZjB,CA6alByK,OAAQA,QAAQ,CAACnT,CAAD,CAAU,CACtB,IAAAiN,QAAA,EACA,KAAAwJ,KAAA,CAAU,IAAA/S,MAAAgR,SAAV,CAA+BjI,CAAA,CAAM,CAAA,CAAN,CAAY,IAAAzM,QAAZ,CAA0BA,CAA1B,CAA/B,CAAmE,IAAA0D,MAAnE,CAFsB,CA7aR,CAqblByX,UAAWA,QAAQ,EAAG,CAAA,IACdiE;AAAe,IAAApf,QAAA4Y,SAAA,CAAwB,CAAC,CAAD,CAAI,CAAJ,CAAxB,CAAiC,CAAC,CAAD,CAAI,CAAJ,CADlC,CAEdyG,EAAU,IAAArE,iBAFI,CAGdsE,EAAM,IAAA1D,eAAA1C,QAHQ,CAKduF,EAAmB,IAAAA,iBALL,CAMdnB,EAAmB,IAAAA,iBANL,CAOdgB,EAAiB,IAAAA,eAPH,CAWlBiB,EAAU,CACN,CAACF,CAAA,CAAQD,CAAA,CAAa,CAAb,CAAR,CAAAlG,QAAD,CAAmC,OAAnC,CAA4C,IAAA0F,iBAA5C,CADM,CAEN,CAACS,CAAA,CAAQD,CAAA,CAAa,CAAb,CAAR,CAAAlG,QAAD,CAAmC,OAAnC,CAA4C,IAAA4F,iBAA5C,CAFM,CAGN,CAVQ,IAAAvD,MAAArC,QAUR,CAAQ,OAAR,CAAiB,IAAA8F,WAAjB,CAHM,CAIN,CAACM,CAAD,CAAM,WAAN,CAAmBb,CAAnB,CAJM,CAKN,CAACzE,CAAD,CAAM,WAAN,CAAmBsD,CAAnB,CALM,CAMN,CAACtD,CAAD,CAAM,SAAN,CAAiBsE,CAAjB,CANM,CAUNrE,EAAJ,EACIsF,CAAArZ,KAAA,CACI,CAACoZ,CAAD,CAAM,YAAN,CAAoBb,CAApB,CADJ,CAC2C,CAACzE,CAAD,CAAM,WAAN,CAAmBsD,CAAnB,CAD3C,CACiF,CAACtD,CAAD,CAAM,UAAN,CAAkBsE,CAAlB,CADjF,CAMJrf,EAAA,CAAKsgB,CAAL,CAAc,QAAQ,CAACC,CAAD,CAAO,CACzB7gB,CAAAe,MAAA,CAAe,IAAf,CAAqB8f,CAArB,CADyB,CAA7B,CAGA,KAAAD,QAAA,CAAeA,CA/BG,CArbJ,CA0dlBE,aAAcA,QAAQ,EAAG,CACrBxgB,CAAA,CAAK,IAAAsgB,QAAL;AAAmB,QAAQ,CAACC,CAAD,CAAO,CAC9BrF,CAAAza,MAAA,CAAkB,IAAlB,CAAwB8f,CAAxB,CAD8B,CAAlC,CAGA,KAAAD,QAAA/d,OAAA,CAAsB,CAJD,CA1dP,CAoelByL,QAASA,QAAQ,EAAG,CAEhB,IAAImO,EAAW,IAAA1X,MAAA0X,SAGf,KAAAqE,aAAA,EAGAxgB,EAAA,CAAK,CAAC,OAAD,CAAU,iBAAV,CAA6B,WAA7B,CAA0C,gBAA1C,CAA4D,OAA5D,CAAL,CAA2E,QAAQ,CAACygB,CAAD,CAAO,CAClF,IAAA,CAAKA,CAAL,CAAJ,EAAkB,IAAA,CAAKA,CAAL,CAAAzS,QAAlB,GACI,IAAA,CAAKyS,CAAL,CADJ,CACiB,IAAA,CAAKA,CAAL,CAAAzS,QAAA,EADjB,CADsF,CAA1F,CAIG,IAJH,CAMImO,EAAJ,EAAgB,IAAhB,GAAyBA,CAAAP,UAAzB,GACIO,CAAAP,UAGA,CAHqB,IAGrB,CAAAd,CAAA,CAAwBqB,CAAAJ,iBAAxB,CAJJ,CAdgB,CApeF,CA8ftB3b,EAAA,CAAKT,CAAAW,UAAL,CAAqB,MAArB,CAA6B,QAAQ,CAACC,CAAD,CAAU,CAC3C,IAAI2D,EAAO,IACX3D,EAAAE,MAAA,CAAcyD,CAAd,CAAoBxD,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAEIqD,EAAAnD,QAAA6a,UAAJ,EAA8B1X,CAAAnD,QAAA6a,UAAAhV,QAA9B,GAEI1C,CAAAnD,QAAA6a,UAAAC,SAKA,CALkC,CAAC3X,CAAAwc,MAKnC;AAJAxc,CAAAnD,QAAA4f,YAIA,CAJ2Bzc,CAAAnD,QAAA6f,UAI3B,CAJoD,CAAA,CAIpD,CAFA1c,CAAA0X,UAEA,CAFiB,IAAIhB,CAAJ,CAAc1W,CAAAO,MAAAgR,SAAd,CAAmCvR,CAAAnD,QAAA6a,UAAnC,CAA2D1X,CAAAO,MAA3D,CAEjB,CAAA/E,CAAA,CAASwE,CAAA0X,UAAT,CAAyB,SAAzB,CAAoC,QAAQ,CAACnU,CAAD,CAAI,CAAA,IACxCoZ,EAAYvd,IAAAnC,IAAA,CAAS6H,CAAA,CAAK9E,CAAAnD,QAAAI,IAAL,CAAuB+C,CAAA/C,IAAvB,CAAT,CAA2C+C,CAAA/C,IAA3C,CAAqD+C,CAAAqC,QAArD,CAD4B,CAGxCyJ,EADY1M,IAAAlC,IAAA0f,CAAS9X,CAAA,CAAK9E,CAAAnD,QAAAK,IAAL,CAAuB8C,CAAA9C,IAAvB,CAAT0f,CAA2C5c,CAAA9C,IAA3C0f,CAAqD5c,CAAAsC,QAArDsa,CACZ9Q,CAAoB6Q,CAHoB,CAIxCpX,CAGCvF,EAAAwc,MAAL,EAAoBK,CAAA7c,CAAA6c,SAApB,EAAwCL,CAAAxc,CAAAwc,MAAxC,EAAsDxc,CAAA6c,SAAtD,EACItX,CACO,CADFoX,CACE,CADU7Q,CACV,CADkB,IAAAvG,GAClB,CAAAoX,CAAA,EAAY7Q,CAAZ,CAAoB,IAAAxG,KAF/B,GAKIC,CACO,CADFoX,CACE,CADU7Q,CACV,EADmB,CACnB,CADuB,IAAAxG,KACvB,EAAAqX,CAAA,EAAY7Q,CAAZ,EAAqB,CAArB,CAAyB,IAAAvG,GAAzB,CANX,CASAvF,EAAAsE,YAAA,CAAiBgB,CAAjB,CAAuBC,CAAvB,CAA2B,CAAA,CAA3B,CAAiC,CAAA,CAAjC,CAAwChC,CAAxC,CAhB4C,CAAhD,CAPJ,CAJ2C,CAA/C,CAmCArH,EAAA,CAAKT,CAAAW,UAAL,CAAqB,QAArB,CAA+B,QAAQ,CAACC,CAAD,CAAU,CAAA,IAEzCygB,EAAY1d,IAAAnC,IAAA,CAAS6H,CAAA,CADd9E,IACmBnD,QAAAI,IAAL,CADd+C,IACqC/C,IAAvB,CAAT,CADL+C,IACgD/C,IAA3C,CADL+C,IAC0DqC,QAArD,CAF6B;AAGzC0a,EAAY3d,IAAAlC,IAAA,CAAS4H,CAAA,CAFd9E,IAEmBnD,QAAAK,IAAL,CAFd8C,IAEqC9C,IAAvB,CAAT,CAFL8C,IAEgD9C,IAA3C,CAFL8C,IAE0DsC,QAArD,CAH6B,CAIzCoV,EAHO1X,IAGK0X,UAJ6B,CAKzCsF,EAJOhd,IAIOgd,YAAdA,EAAkC,CAKtC3gB,EAAAE,MAAA,CATWyD,IASX,CAAoBxD,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAEA,IAAI+a,CAAJ,CAAe,CAXJ1X,IAaHwc,MAAJ,EACI9E,CAAAmB,SAAA,CAdG7Y,IAeC+b,KADJ,CAdG/b,IAgBC4U,IAFJ,CAdG5U,IAgBY0U,OAFf,CAE6B,CAF7B,CAdG1U,IAgB8BO,MAAA0c,kBAAA,CAA6B,CAA7B,CAFjC,EAdGjd,IAiBEyU,SAAA,CACG,CADH,CAEGuI,CAFH,CAjBFhd,IAmBmBkd,gBAFjB,CAjBFld,IAmB0C2U,OAL7C,EAdG3U,IAqBC8R,MAPJ,CAdG9R,IAsBC0U,OARJ,CAUA,CAAAyI,CAAA,CAAe,CAXnB,GAaIzF,CAAAmB,SAAA,CA1BG7Y,IA2BC+b,KADJ,CA1BG/b,IA2Ba8R,MADhB,CAC6B,CAD7B,CA1BG9R,IA2B8BO,MAAA0c,kBAAA,CAA6B,CAA7B,CADjC,EA1BGjd,IA4BEyU,SAAA,CACGuI,CADH,CA5BFhd,IA6BmBkd,gBADjB,CA5BFld,IA6B0C2U,OADxC,CAEG,CAJR,EA1BG3U,IAgCC4U,IANJ,CA1BG5U,IAiCC8R,MAPJ,CA1BG9R,IAkCC0U,OARJ,CAUA,CAAAyI,CAAA,CAAe,CAvBnB,CA0BA,IAAM1I,CAvCCzU,IAuCDyU,SAAN;AAAwB+H,CAvCjBxc,IAuCiBwc,MAAxB,EAvCOxc,IAuCiCyU,SAAxC,EAvCOzU,IAuCkDwc,MAAzD,CAvCOxc,IAwCHO,MAAA0c,kBAAA,CAA6BE,CAA7B,CAAA,EAxCGnd,IAyCC0X,UAAAnQ,KADJ,CAxCGvH,IAyCuB0X,UAAA7a,QAAA0a,OAG1B6F,MAAA,CAAMN,CAAN,CAAJ,EAAwBM,KAAA,CAAML,CAAN,CAAxB,EAA6C,CAAAlhB,CAAA,CA5CtCmE,IA4C8C/C,IAAR,CAA7C,EAAmE,CAAApB,CAAA,CA5C5DmE,IA4CoE9C,IAAR,CAAnE,CACIwa,CAAA2B,SAAA,CAAmB,CAAnB,CAAsB,CAAtB,CADJ,EAGI/T,CAGA,EAlDGtF,IA+CK/C,IAGR,CAHmB6f,CAGnB,GAHiCC,CAGjC,CAH6CD,CAG7C,EAFAvX,CAEA,EAlDGvF,IAgDG9C,IAEN,CAFiB4f,CAEjB,GAF+BC,CAE/B,CAF2CD,CAE3C,EAlDG9c,IAkDEwc,MAAL,EAAoBK,CAlDjB7c,IAkDiB6c,SAApB,EAAwCL,CAlDrCxc,IAkDqCwc,MAAxC,EAlDGxc,IAkDmD6c,SAAtD,CACInF,CAAA2B,SAAA,CAAmB/T,CAAnB,CAAyBC,CAAzB,CADJ,CAGImS,CAAA2B,SAAA,CAAmB,CAAnB,CAAuB9T,CAAvB,CAA2B,CAA3B,CAA+BD,CAA/B,CATR,CAjCW,CAZ8B,CAAjD,CA+DApJ,EAAA,CAAKT,CAAAW,UAAL,CAAqB,WAArB,CAAkC,QAAQ,CAACC,CAAD,CAAU,CAAA,IAE5C6Q,EADOlN,IACCwc,MAAA,CAAa,CAAb,CAAiB,CAFmB,CAG5C9E,EAFO1X,IAEK0X,UAEhBrb,EAAAE,MAAA,CAJWyD,IAIX,CAAoBxD,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAEI+a,EAAJ,GANW1X,IAOPO,MAAA0c,kBACA,CAD+B,CAAC,CAAD,CAAI,CAAJ,CAC/B,CAROjd,IAQPO,MAAA8c,WAAA,CAAsBnQ,CAAtB,CAAA;AAAgCwK,CAAAnQ,KAAhC,CAAiDmQ,CAAA7a,QAAA0a,OAFrD,CAPgD,CAApD,CAgBArb,EAAA,CAAKT,CAAAW,UAAL,CAAqB,SAArB,CAAgC,QAAQ,CAACC,CAAD,CAAU,CAC1C,IAAAqb,UAAJ,GACI,IAAAA,UADJ,CACqB,IAAAA,UAAA5N,QAAA,EADrB,CAIAzN,EAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAL8C,CAAlD,CAQApB,EAAAmb,UAAA,CAAcA,CArsBL,CAAZ,CAAA,CAusBCpb,CAvsBD,CAwsBA,UAAQ,CAACC,CAAD,CAAI,CA8HT+hB,QAASA,EAAS,CAAC/c,CAAD,CAAQ,CACtB,IAAA+S,KAAA,CAAU/S,CAAV,CADsB,CA9HjB,IASL/E,EAAWD,CAAAC,SATN,CAULC,EAAOF,CAAAE,KAVF,CAWLC,EAAQH,CAAAG,MAXH,CAcL+T,EAAiBlU,CAAAkU,eAdZ,CAeL5T,EAAUN,CAAAM,QAfL,CAgBL+a,EAA0Brb,CAAAqb,wBAhBrB,CAiBLC,EAAMtb,CAAAsb,IAjBD,CAkBL/a,EAAOP,CAAAO,KAlBF,CAmBLyhB,EAAQhiB,CAAAgiB,MAnBH,CAoBL3O,EAAQrT,CAAAqT,MApBH,CAqBL7S,EAASR,CAAAQ,OArBJ,CAsBLyhB,EAAOjiB,CAAAiiB,KAtBF,CAuBL1G,EAAWvb,CAAAub,SAvBN,CAwBLzN,EAAW9N,CAAA8N,SAxBN,CAyBLoU,EAAWliB,CAAAkiB,SAzBN,CA0BLnU,EAAQ/N,CAAA+N,MA1BH,CA2BLxE,EAAOvJ,CAAAuJ,KA3BF,CA4BLkS,EAAczb,CAAAyb,YA5BT,CA6BLN,EAAYnb,CAAAmb,UA7BP,CA8BLva,EAASZ,CAAAY,OA9BJ,CA+BL4M,EAAcxN,CAAAwN,YA/BT;AAgCL7M,EAAOX,CAAAW,KAhCF,CAiCL+a,EAAS1b,CAAA0b,OAjCJ,CAmCLpU,EAAQ,EAAArE,OAAA,CAtBmBjD,CAAA4P,yBAsBnB,CAnCH,CAyCLuS,EAASA,QAAQ,CAACC,CAAD,CAAU,CACvB,IAAIC,EAAUJ,CAAA,CAAK7gB,SAAL,CAAgB0M,CAAhB,CACd,IAAIuU,CAAAvf,OAAJ,CACI,MAAOe,KAAA,CAAKue,CAAL,CAAAphB,MAAA,CAAoB,CAApB,CAAuBqhB,CAAvB,CAHY,CAQ/B/a,EAAA,CAAM,CAAN,CAAA,CAAW,CAAC,KAAD,CAAQ,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,CAAV,CAAR,CACXA,EAAA,CAAM,CAAN,CAAA,CAAW,CAAC,MAAD,CAAS,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAT,CAIX9G,EAAA,CAAO0T,CAAP,CAAuB,CACnBoO,UAAW,CAEPnJ,OAAQ,EAFD,CAGP6C,OAAQ,EAHD,CAIPuG,WAAY,CAAA,CAJL,CAMPlhB,OAAQ,CACJgQ,KAVmCtO,IAAAA,EAA3Byf,GAAAhV,CAAA8B,WAAAkT,CAAuC,MAAvCA,CAAgD,YASpD,CAGJC,QAAS,IAHL,CAIJvb,aAAc,CACVG,cAAe,SADL,CAEVF,QAAS,CAAA,CAFC,CAGVsH,gBAAiB,CAHP,CAIVuE,SAAU,CAAA,CAJA,CAKV1L,MAAOA,CALG,CAJV,CAWJob,WAAY,CACRvb,QAAS,CAAA,CADD,CAER+U,OAAQ,CAFA,CAXR,CAeJyG,GAAI,6BAfA,CAgBJC,UAAW,6BAhBP,CAiBJC,UAAW,IAjBP;AAkBJC,OAAQ,CACJ3b,QAAS,CAAA,CADL,CAlBJ,CAqBJqQ,WAAY,CArBR,CAsBJuL,OAAQ,CAAA,CAtBJ,CAuBJ/V,UAAW,IAvBP,CAND,CAiCPjM,MAAO,CACH6hB,UAAW,4BADR,CAEHI,WAAY,CAFT,CAIHpgB,kBAAmB,GAJhB,CAKHqgB,OAAQ,CACJpJ,MAAO,MADH,CAGJlN,EAAG,CAHC,CAIJD,EAAI,EAJA,CALL,CAWHwW,UAAW,CAAA,CAXR,CAjCA,CA8CP5Z,MAAO,CACHsZ,UAAW,4BADR,CAGH1B,YAAa,CAAA,CAHV,CAIHC,UAAW,CAAA,CAJR,CAKHgC,WAAY,EALT,CAMHC,WAAY,EANT,CAOHH,OAAQ,CACJ9b,QAAS,CAAA,CADL,CAPL,CAUH+b,UAAW,CAAA,CAVR,CAWHjJ,MAAO,CACHD,KAAM,IADH,CAXJ,CAcHgJ,WAAY,CAdT,CAeHK,UAAW,CAfR,CA9CA,CADQ,CAAvB,CA4EAtB,EAAAlhB,UAAA,CAAsB,CAQlByiB,WAAYA,QAAQ,CAAC3W,CAAD,CAAIgF,CAAJ,CAAWuI,CAAX,CAAqBqJ,CAArB,CAA2B,CAC3BjB,IAGhBkB,QAAA,CAAkB7R,CAAlB,CAAA,CAAyB4R,CAAzB,CAAA,CAA+BrJ,CAAA,CAAW,CACtCyD,WAAY9Z,IAAAuS,MAAA,CAJAkM,IAIW9B,KAAX,CAJA8B,IAI4BnJ,OAA5B,CAA+C,CAA/C,CAAmD,CAAnD,CAD0B,CAEtCyD,WAAY/Y,IAAAuS,MAAA,CALAkM,IAKWjJ,IAAX;AAA2BoK,QAAA,CAAS9W,CAAT,CAAY,EAAZ,CAA3B,CAA6C,EAA7C,CAF0B,CAAX,CAG3B,CACAgR,WAAY9Z,IAAAuS,MAAA,CAPAkM,IAOW9B,KAAX,CAA4BiD,QAAA,CAAS9W,CAAT,CAAY,EAAZ,CAA5B,CADZ,CAEAiQ,WAAY/Y,IAAAuS,MAAA,CARAkM,IAQWjJ,IAAX,CARAiJ,IAQ2BnJ,OAA3B,CAA8C,CAA9C,CAAkD,CAAlD,CAFZ,CAHJ,CAJ2C,CAR7B,CA0BlBuK,cAAeA,QAAQ,CAACxJ,CAAD,CAAW,CAC9B,MAAOwB,EAAA,CAAO,CACV,GADU,CACJ,IADI,CACC,EADD,CAEV,GAFU,CAGV,GAHU,CAGL,EAHK,CAIV,GAJU,CAKV,GALU,CAKL,IALK,CAMV,GANU,CAMJ,IANI,CAMC,IAND,CAOV,GAPU,CAOJ,IAPI,CAOC,EAPD,CAQV,GARU,CAQJ,IARI,CAQC,CARD,CASV,GATU,CASJ,IATI,CASC,EATD,CAUV,GAVU,CAWV,EAXU,CAWL,CAXK,CAYV,GAZU,CAaV,EAbU,CAaL,EAbK,CAAP,CAcJxB,CAdI,CADuB,CA1BhB,CAkDlByJ,YAAaA,QAAQ,CAACC,CAAD,CAAYC,CAAZ,CAAuB3J,CAAvB,CAAiCqJ,CAAjC,CAAuC,CAAA,IAEpDhB,EADYD,IACCwB,iBAAAvB,WAFuC,CAGpDwB,EAFYzB,IAEG0B,QAAA7N,YAAA,EAHqC,CAIpD8N,EAAcF,CAAdE,CAA6B,CAJuB,CAKpDC,EAAqBH,CAArBG,CAAoC,CAApCA,CAAyC,CALW,CAMpDC,EALY7B,IAKI6B,cANoC,CAOpDC,EANY9B,IAMM8B,gBAPkC,CAQpDC,EAPY/B,IAOItW,KARoC,CASpDwU,EARY8B,IAQL9B,KAAPA,CAAwB4D,CAT4B,CAUpDE,EATYhC,IASGjJ,IAIfa,EAAJ,EACIsG,CAIA,EAJQyD,CAIR,CAHAM,CAGA,CAHcD,CAGd,CAH6BT,CAG7B,CAHyCK,CAGzC,CAFAL,CAEA,CAFYS,CAEZ,CAF2BV,CAE3B,CAFuCM,CAEvC,CAAAvO,CAAA,CAAO,CACH,GADG,CAEH6K,CAFG,CAEI2D,CAFJ,CAGHG,CAHG,CAGYF,CAHZ,CAG8BF,CAH9B,CAIH,GAJG;AAKH1D,CALG,CAKI2D,CALJ,CAMHI,CANG,CAOH,GAPG,CAQH/D,CARG,CASH+D,CATG,CAUH,GAVG,CAWH/D,CAXG,CAYHqD,CAZG,CAaH,GAbG,CAcHrD,CAdG,CAcI2D,CAdJ,CAeHN,CAfG,CAgBH,GAhBG,CAiBHrD,CAjBG,CAiBI2D,CAjBJ,CAkBHG,CAlBG,CAkBYD,CAlBZ,CAkB4BD,CAlB5B,CAAAnhB,OAAA,CAmBEsf,CAAA,CAAa,CAClB,GADkB,CAElB/B,CAFkB,CAEX2D,CAFW,CAGlBI,CAHkB,CAGJN,CAHI,CAIlB,GAJkB,CAKlBzD,CALkB,CAKX2D,CALW,CAMlBN,CANkB,CAMNI,CANM,CAAb,CAOL,EA1BG,CALX,GAiCIL,CAIA,EAJapD,CAIb,CAJoB4D,CAIpB,CAJsCF,CAItC,CAHAL,CAGA,EAHarD,CAGb,CAHoB4D,CAGpB,CAHsCF,CAGtC,CAFAI,CAEA,EAFgBL,CAEhB,CAAAtO,CAAA,CAAO,CACH,GADG,CAEH6K,CAFG,CAGH8D,CAHG,CAIH,GAJG,CAKHV,CALG,CAMHU,CANG,CAOH,GAPG,CAQHV,CARG,CASHU,CATG,CASYH,CATZ,CAUH,GAVG,CAWHN,CAXG,CAYHS,CAZG,CAYYH,CAZZ,CAaH,GAbG,CAcHN,CAdG,CAeHS,CAfG,CAgBH,GAhBG,CAiBH9D,CAjBG,CAiBI6D,CAjBJ,CAiBsC,CAjBtC,CAiBoBD,CAjBpB,CAkBHE,CAlBG,CAAArhB,OAAA,CAmBEsf,CAAA,CAAa,CAClB,GADkB,CAElBqB,CAFkB,CAENK,CAFM,CAGlBK,CAHkB,CAIlB,GAJkB,CAKlBT,CALkB,CAKNI,CALM,CAMlBK,CANkB,CAAb,CAOL,EA1BG,CArCX,CAbgBhC,KA8EhB0B,QAAA,CAAkBT,CAAlB,CAAA,CAAwB,CACpB7M,EAAGf,CADiB,CAAxB,CA/EwD,CAlD1C,CA6IlB6O,UAAWA,QAAQ,CAACZ,CAAD,CAAYC,CAAZ,CAAuB3J,CAAvB,CAAiCqJ,CAAjC,CAAuC,CAAA,IAElD/C,EADY8B,IACL9B,KAF2C,CAGlDnH,EAFYiJ,IAENjJ,IAH4C,CAIlDoL,EAHYnC,IAGMnJ,OAJgC,CAKlDA,CALkD,CAMlD5C,CANkD,CAOlD5J,CAPkD,CAQlDD,CAIAwN,EAAJ,EACIvN,CAGA,CAHI,CAAC6T,CAAD,CAAOA,CAAP,CAAaA,CAAb,CAGJ,CAFA9T,CAEA,CAFI,CAAC2M,CAAD,CAAMA,CAAN,CAAYuK,CAAZ,CAAuBvK,CAAvB,CAA6BwK,CAA7B,CAEJ,CADAtN,CACA,CADQ,CAACkO,CAAD,CAAkBA,CAAlB,CAAmCA,CAAnC,CACR,CAAAtL,CAAA,CAAS,CACLyK,CADK,CAELC,CAFK,CAEOD,CAFP,CAfGtB,IAkBRtW,KAHK,CAGY6X,CAHZ,CAJb,GAUIlX,CAOA,CAPI,CAAC6T,CAAD,CAAOA,CAAP,CAAcoD,CAAd,CAAyBpD,CAAzB,CAAgCqD,CAAhC,CAOJ,CANAnX,CAMA,CANI,CAAC2M,CAAD,CAAMA,CAAN,CAAWA,CAAX,CAMJ,CALA9C,CAKA,CALQ,CACJqN,CADI,CAEJC,CAFI,CAEQD,CAFR,CAvBItB,IA0BRtW,KAHI,CAGa6X,CAHb,CAKR,CAAA1K,CAAA,CAAS,CAACsL,CAAD,CAAkBA,CAAlB,CAAmCA,CAAnC,CAjBb,CAmBAlkB,EAAA,CA9BgB+hB,IA8BXoC,OAAL,CAAuB,QAAQ,CAACC,CAAD,CAAQthB,CAAR,CAAW,CACtCshB,CAAA,CAAMpB,CAAN,CAAA,CAAY,CACR5W,EAAGA,CAAA,CAAEtJ,CAAF,CADK,CAERqJ,EAAGA,CAAA,CAAErJ,CAAF,CAFK,CAGRkT,MAAOA,CAAA,CAAMlT,CAAN,CAHC,CAIR8V,OAAQA,CAAA,CAAO9V,CAAP,CAJA,CAAZ,CADsC,CAA1C,CA/BsD,CA7IxC;AA6LlBuhB,eAAgBA,QAAQ,EAAG,CAAA,IACnBtC,EAAY,IADO,CAGnBC,EADmBD,CAAAwB,iBACNvB,WAHM,CAInBvd,EAAQsd,CAAAtd,MAJW,CAKnBkV,EAAWlV,CAAAkV,SALQ,CAMnBlE,EAAWhR,CAAAgR,SANQ,CAOnB6O,CAGJvC,EAAAuC,eAAA,CAA2BA,CAA3B,CAA4C7O,CAAA2G,EAAA,CAAW,WAAX,CAAA/C,KAAA,CAClC,CACFsC,OAAQ,CADN,CAEF4I,WAAY,QAFV,CADkC,CAAA7O,IAAA,EAW5C1V,EAAA,CAAK,CAAC,CAACgiB,CAAF,CAAcA,CAAd,CAA0B,CAACA,CAA3B,CAAL,CAA6C,QAAQ,CAACwC,CAAD,CAAUpT,CAAV,CAAiB,CAClE2Q,CAAAoC,OAAA,CAAiB/S,CAAjB,CAAA,CAA0BqE,CAAA8G,KAAA,EAAAnG,SAAA,CACZ,2BADY,EAEP,CAAV,GAAAhF,CAAA,CAAc,SAAd,CAA0B,UAFT,EAAAsE,IAAA,CAIjB4O,CAJiB,CADwC,CAAtE,CASAvC,EAAA0B,QAAA,CAAoBhO,CAAAL,KAAA,EAAAgB,SAAA,CACN,8BADM,CAAAV,IAAA,CAGX4O,CAHW,CAMpBtkB,EAAA,CAAK,CAAC,CAAD,CAAI,CAAJ,CAAL,CAAa,QAAQ,CAACoR,CAAD,CAAQ,CACzB2Q,CAAAkB,QAAA,CAAkB7R,CAAlB,CAAA,CAA2BqE,CAAAL,KAAA,CACjB2M,CAAAoB,cAAA,CAAwBxJ,CAAxB,CADiB,CAAAN,KAAA,CAIjB,CACFsC,OAAQ,CAARA,CAAYvK,CADV,CAJiB,CAAAgF,SAAA,CAQnB,0DARmB;AAQ0C,CAAC,MAAD,CAAS,OAAT,CAAA,CAAkBhF,CAAlB,CAR1C,CAAAsE,IAAA,CASjB4O,CATiB,CADF,CAA7B,CApCuB,CA7LT,CAqPlBpQ,OAAQA,QAAQ,CAACnT,CAAD,CAAU,CACtB,IAAAiN,QAAA,EAEAR,EAAA,CAAM,CAAA,CAAN,CADmB,IAAA/I,MAAA1D,QACPghB,UAAZ,CAAoC,IAAAhhB,QAApC,CAAkDA,CAAlD,CACA,KAAAyW,KAAA,CAAU,IAAA/S,MAAV,CAJsB,CArPR,CAmQlBuX,OAAQA,QAAQ,CAAC7a,CAAD,CAAMC,CAAN,CAAWqjB,CAAX,CAAkBC,CAAlB,CAAyB,CAAA,IAEjCjgB,EADYsd,IACJtd,MAFyB,CAIjCwZ,CAJiC,CAKjCD,CALiC,CAMjC6F,EALY9B,IAKM8B,gBANe,CAOjCC,CAPiC,CAQjCtjB,EAPYuhB,IAOJvhB,MACRmkB,EAAAA,CAAiBnkB,CAAAokB,KAAA,CAAangB,CAAAjE,MAAA,CAAY,CAAZ,CAAb,CAA8BA,CATd,KAUjCqkB,EATY9C,IASO8C,iBAVc,CAYjCvB,CAZiC,CAajCpG,EAZY6E,IAYD7E,SACXvD,EAAAA,CAAWlV,CAAAkV,SAbf,KAiBImL,EAAWrgB,CAAAjE,MAAA,CAAY,CAAZ,CAAAskB,SAGf,IAAInH,CAAA,IAAAA,WAAJ,EAAwB5d,CAAA,CAAQ0kB,CAAR,CAAxB,CAAA,CAKA,GAAK,CAAAlX,CAAA,CAASpM,CAAT,CAAL,EAAuB,CAAAoM,CAAA,CAASnM,CAAT,CAAvB,CAGI,GAAI8b,CAAJ,CACIuH,CACA,CADQ,CACR,CAAAC,CAAA,CAAQlkB,CAAAwV,MAFZ,KAII,OAhCQ+L,KAoChB9B,KAAA,CAAiBjX,CAAA,CACbxI,CAAAyf,KADa,CAGbxb,CAAAmV,SAHa,CAGIiK,CAHJ,EAGuBlK,CAAA,CAAWlV,CAAAsgB,UAAX,CAA6B,CAHpD,EApCDhD,KA0ChBtW,KAAA,CAAiB6X,CAAjB,CAA6BQ,CAA7B,CAA6C9a,CAAA,CACzCxI,CAAAqD,IADyC,EAExC8V,CAAA,CAAWlV,CAAAugB,WAAX,CAA8BvgB,CAAAsgB,UAFU;AAES,CAFT,CAEalB,CAFb,CAMzCoB,EAAA,CADAtL,CAAJ,CACqBkK,CADrB,CAGqBC,CAHrB,CAGqC,CAHrC,CAGyCD,CAIzCY,EAAA,CAAQzb,CAAA,CAAKyb,CAAL,CAAYjkB,CAAAoU,SAAA,CAAezT,CAAf,CAAoB,CAAA,CAApB,CAAZ,CACRujB,EAAA,CAAQ1b,CAAA,CAAK0b,CAAL,CAAYlkB,CAAAoU,SAAA,CAAexT,CAAf,CAAoB,CAAA,CAApB,CAAZ,CAEHmM,EAAA,CAASkX,CAAT,CAAL,EAA4Clb,QAA5C,GAAwBjG,IAAAG,IAAA,CAASghB,CAAT,CAAxB,GACIA,CACA,CADQ,CACR,CAAAC,CAAA,CAAQO,CAFZ,CAMAva,EAAA,CAASlK,CAAA0kB,QAAA,CAAcT,CAAd,CAAqB,CAAA,CAArB,CACT9Z,EAAA,CAASnK,CAAA0kB,QAAA,CAAcR,CAAd,CAAqB,CAAA,CAArB,CACT,IAAIphB,IAAAG,IAAA,CAASkH,CAAT,CAAkBD,CAAlB,CAAJ,CAAgCoa,CAAhC,CACI,GAAI,IAAAK,YAAJ,CACIV,CAAA,CAAQjkB,CAAAoU,SAAA,CAAejK,CAAf,CAAwBma,CAAxB,CAAkC,CAAA,CAAlC,CADZ,KAEO,IAAI,IAAAM,aAAJ,CACHV,CAAA,CAAQlkB,CAAAoU,SAAA,CAAelK,CAAf,CAAwBoa,CAAxB,CAAkC,CAAA,CAAlC,CADL,KAGH,OAvEQ/C,KA4EhBuB,UAAA,CAAsBhgB,IAAAnC,IAAA,CAASmC,IAAAlC,IAAA,CAASqjB,CAAT,CAAgBC,CAAhB,CAAuB,CAAvB,CAAT,CAAoCpB,CAApC,CA5ENvB,KA6EhBsB,UAAA,CAAsB/f,IAAAnC,IAAA,CAClBmC,IAAAlC,IAAA,CA9EY2gB,IA+ERsD,WAAA,CA/EQtD,IAgFRuB,UADA,CA/EQvB,IAgFcsD,WADtB,CAEA/hB,IAAAnC,IAAA,CAASsjB,CAAT,CAAgBC,CAAhB,CAHJ,CAII,CAJJ,CADkB,CAOlBpB,CAPkB,CA7ENvB,KAuFhB/R,MAAA,CAvFgB+R,IAuFEuB,UAAlB,CAvFgBvB,IAuFwBsB,UAExCC,EAAA,CAAYhgB,IAAAuS,MAAA,CAzFIkM,IAyFOuB,UAAX,CACZD,EAAA,CAAY/f,IAAAuS,MAAA,CA1FIkM,IA0FOsB,UAAX,CAERwB;CAAJ,GA5FgB9C,IA6FZuC,eAAAjL,KAAA,CAA8B,CAC1BkL,WAAY,SADc,CAA9B,CASA,CALAvB,CAKA,CALO9F,CAAA,EAAaS,CAjGRoE,IAiGQpE,WAAb,CAAoC,SAApC,CAAgD,MAKvD,CAtGYoE,IAmGZkC,UAAA,CAAoBZ,CAApB,CAA+BC,CAA/B,CAA0C3J,CAA1C,CAAoDqJ,CAApD,CAGA,CAtGYjB,IAoGZqB,YAAA,CAAsBC,CAAtB,CAAiCC,CAAjC,CAA4C3J,CAA5C,CAAsDqJ,CAAtD,CAEA,CAtGYjB,IAqGZgB,WAAA,CAAqBM,CAArB,CAAgC,CAAhC,CAAmC1J,CAAnC,CAA6CqJ,CAA7C,CACA,CAtGYjB,IAsGZgB,WAAA,CAAqBO,CAArB,CAAgC,CAAhC,CAAmC3J,CAAnC,CAA6CqJ,CAA7C,CAVJ,CA5FgBjB,KAyGZnG,UAAJ,GACQjC,CAAJ,EACIqE,CAQA,CAnHQ+D,IA2GOjJ,IAQf,CAR+B+K,CAQ/B,CAPA5F,CAOA,CAnHQ8D,IA4GQ9B,KAOhB,CAPiC4D,CAOjC,EANKgB,CAAA,EAAqBlM,CAAAgM,CAAAhM,SAArB,CAA+C,CAA/C,EAEIgM,CAAAzD,YAFJ,EAEkC,CAFlC,EAIGyD,CAAAvD,gBAER,EAAAyC,CAAA,CAAkBC,CAAlB,CAAkC,CAAlC,CAAsCD,CAT1C,GAWI7F,CAEA,CAvHQ+D,IAqHOjJ,IAEf,EADK+L,CAAA,CAtHG9C,IAsHgBnJ,OAAnB,CAAsC,CAACiL,CAC5C,EAAA5F,CAAA,CAvHQ8D,IAuHQ9B,KAAhB,CAAiC4D,CAbrC,CAuBA,CAjIY9B,IA0HZnG,UAAAmB,SAAA,CACIkB,CADJ,CAEID,CAFJ,CAGIiH,CAHJ,CAIIpB,CAJJ,CAOA,CAjIY9B,IAiIZnG,UAAA2B,SAAA,CAjIYwE,IAmIRsB,UAFJ,CAE0BS,CAF1B,CAjIY/B,IAoIRuB,UAHJ,CAG0BQ,CAH1B,CAxBJ,CAzGgB/B,KAuIhB7E,SAAA,CAAqB,CAAA,CAnHrB,CArBqC,CAnQvB,CAiZlBoI,eAAgBA,QAAQ,EAAG,CAAA,IACnBvD,EAAY,IADO,CAEnBtd;AAAQsd,CAAAtd,MAFW,CAGnBiE,EAAYjE,CAAAiE,UAHO,CAInB6c,EAAiB,EAJE,CAKnBlH,CALmB,CAMnBgB,CAMJ0C,EAAA1D,iBAAA,CAA6BA,CAA7B,CAAgDA,QAAQ,CAAC5W,CAAD,CAAI,CACxDsa,CAAAyD,YAAA,CAAsB/d,CAAtB,CADwD,CAG5Dsa,EAAA1C,eAAA,CAA2BA,CAA3B,CAA4CA,QAAQ,CAAC5X,CAAD,CAAI,CACpDsa,CAAA0D,UAAA,CAAoBhe,CAApB,CADoD,CAKxD8d,EAAA,CAAiBxD,CAAA2D,eAAA,CAAyB,WAAzB,CAGjBH,EAAAte,KAAA,CACIvH,CAAA,CAASgJ,CAAT,CAAoB,WAApB,CAAiC2V,CAAjC,CADJ,CAEI3e,CAAA,CAASqb,CAAT,CAAc,SAAd,CAAyBsE,CAAzB,CAFJ,CAMIrE,EAAJ,GACIuK,CAAAte,KAAA,CACIvH,CAAA,CAASgJ,CAAT,CAAoB,WAApB,CAAiC2V,CAAjC,CADJ,CAEI3e,CAAA,CAASqb,CAAT,CAAc,UAAd,CAA0BsE,CAA1B,CAFJ,CAIA,CAAAkG,CAAA7iB,OAAA,CAAsBqf,CAAA2D,eAAA,CAAyB,YAAzB,CAAtB,CALJ,CAQA3D,EAAAwD,eAAA,CAA2BA,CAGvBxD,EAAAjhB,OAAJ,EAAwBihB,CAAAjhB,OAAA,CAAiB,CAAjB,CAAxB,EACIykB,CAAAte,KAAA,CACIvH,CAAA,CAASqiB,CAAAjhB,OAAA,CAAiB,CAAjB,CAAAN,MAAT,CAAoC,eAApC,CAAqD,QAAQ,EAAG,CAC5DiE,CAAAsd,UAAA4D,4BAAA,EAD4D,CAAhE,CADJ,CAzCmB,CAjZT,CAuclBD,eAAgBA,QAAQ,CAAChZ,CAAD,CAAY,CAAA,IAC5BqV,EAAY,IADgB,CAE5B6D,EAAS,EACb5lB,EAAA,CAAK,CAAC,QAAD,CAAW,SAAX,CAAL;AAA4B,QAAQ,CAAC6lB,CAAD,CAAO,CACvC7lB,CAAA,CAAK+hB,CAAA,CAAU8D,CAAV,CAAL,CAAsB,QAAQ,CAACC,CAAD,CAAgB1U,CAAhB,CAAuB,CACjDwU,CAAA3e,KAAA,CACIvH,CAAA,CACIomB,CAAA7L,QADJ,CAEIvN,CAFJ,CAGI,QAAQ,CAACjF,CAAD,CAAI,CACRsa,CAAA,CAAU8D,CAAV,CAAiB,WAAjB,CAAA,CAA8Bpe,CAA9B,CAAiC2J,CAAjC,CADQ,CAHhB,CADJ,CADiD,CAArD,CADuC,CAA3C,CAaA,OAAOwU,EAhByB,CAvclB,CAkelBG,gBAAiBA,QAAQ,CAACte,CAAD,CAAI2J,CAAJ,CAAW,CAChC3J,CAAA,CAAI,IAAAhD,MAAA+Z,QAAAC,UAAA,CAA6BhX,CAA7B,CAD4B,KAI5BhD,EADYsd,IACJtd,MAJoB,CAK5BjE,EAFYuhB,IAEJvhB,MALoB,CAM5B6iB,EAHYtB,IAGAsB,UANgB,CAO5B2C,EAJYjE,IAIQ9B,KAPQ,CAQ5B6D,EALY/B,IAKItW,KARY,CAS5BuE,EANY+R,IAMJ/R,MAToB,CAU5BtI,EAASD,CAAAC,OAVmB,CAW5Bue,CAKAxhB,EAAAkV,SAAJ,GACIjS,CACA,CADSD,CAAA8X,OACT,CAAAyG,CAAA,CAfYjE,IAeQjJ,IAFxB,CAKc,EAAd,GAAI1H,CAAJ,EAlBgB2Q,IAoBZnD,cAEA,CAF0BlX,CAE1B,CAtBYqa,IAqBZsD,WACA,CADuBrV,CACvB,CAtBY+R,IAsBZmE,WAAA,CAAuBxe,CAAvB,CAAgC2b,CAJpC,GAOIpD,CAOA,CAPOvY,CAOP,CAPgBse,CAOhB,CAPoChW,CAOpC,CAP4C,CAO5C,CANc,CAAd,GAAIoB,CAAJ,CACI6O,CADJ,CACW3c,IAAAlC,IAAA,CAAS,CAAT,CAAY6e,CAAZ,CADX,CAEqB,CAFrB,GAEW7O,CAFX,EAE0B6O,CAF1B,CAEiCjQ,CAFjC,EAE0C8T,CAF1C,GAGI7D,CACA,CADO6D,CACP,CADuB9T,CACvB,CAAAiW,CAAA,CA9BQlE,IA8BGoE,iBAAA,EAAA3f,QAJf,CAMA,CAAIyZ,CAAJ,GAAaoD,CAAb,GAhCYtB,IAiCRsD,WAGA,CAHuBrV,CAGvB,CADAoW,CACA,CADM5lB,CAAA+H,aAAA,CAAmB0X,CAAnB;AAAyBA,CAAzB,CAAgCjQ,CAAhC,CAAuC,IAAvC,CAA6CiW,CAA7C,CACN,CAAAxhB,CAAAjE,MAAA,CAAY,CAAZ,CAAAgI,YAAA,CACIlF,IAAAnC,IAAA,CAASilB,CAAAjlB,IAAT,CAAkBilB,CAAAhlB,IAAlB,CADJ,CAEIkC,IAAAlC,IAAA,CAASglB,CAAAjlB,IAAT,CAAkBilB,CAAAhlB,IAAlB,CAFJ,CAGI,CAAA,CAHJ,CAII,IAJJ,CAKI,CACIqH,QAAS,WADb,CALJ,CAJJ,CAdJ,CArBgC,CAlelB,CA6hBlB4d,iBAAkBA,QAAQ,CAAC5e,CAAD,CAAI2J,CAAJ,CAAW,CAC7B,IAAA3M,MAAA+Z,QAAAC,UAAA,CAA6BhX,CAA7B,CAGAhD,EAAAA,CADYsd,IACJtd,MAJqB,KAK7B6hB,EAAY7hB,CAAAjE,MAAA,CAAY,CAAZ,CALiB,CAQ7B+lB,EAAW9hB,CAAAkV,SAAX4M,EAA6B,CAACD,CAAAvF,SAA9BwF,EACC,CAAC9hB,CAAAkV,SADF4M,EACoBD,CAAAvF,SAEV,EAAd,GAAI3P,CAAJ,EARgB2Q,IAUZoD,YAEA,CAFwB,CAAA,CAExB,CAZYpD,IAWZyE,eACA,CAZYzE,IAWeuB,UAC3B,CAZYvB,IAYZ0E,aAAA,CAAyBF,CAAA,CAAUD,CAAAnlB,IAAV,CAA0BmlB,CAAAllB,IAJvD,GARgB2gB,IAeZqD,aAEA,CAFyB,CAAA,CAEzB,CAjBYrD,IAgBZyE,eACA,CAjBYzE,IAgBesB,UAC3B,CAjBYtB,IAiBZ0E,aAAA,CAAyBF,CAAA,CAAUD,CAAAllB,IAAV,CAA0BklB,CAAAnlB,IATvD,CAYAsD,EAAA4D,WAAA,CAAmB,IAvBc,CA7hBnB,CA0jBlBmd,YAAaA,QAAQ,CAAC/d,CAAD,CAAI,CAAA,IACjBsa,EAAY,IADK,CAEjBtd,EAAQsd,CAAAtd,MAFS;AAGjBwb,EAAO8B,CAAA9B,KAHU,CAIjB6D,EAAgB/B,CAAA+B,cAJC,CAKjB9T,EAAQ+R,CAAA/R,MALS,CAMjBkW,EAAanE,CAAAmE,WANI,CAOjBvM,EAAWlV,CAAAkV,SAMVlS,EAAAoX,QAAL,EAAyC,CAAzC,GAAkBpX,CAAAoX,QAAA,CAAU,CAAV,CAAA6H,MAAlB,GAEIjf,CA2CA,CA3CIhD,CAAA+Z,QAAAC,UAAA,CAAwBhX,CAAxB,CA2CJ,CA1CAC,CA0CA,CA1CSD,CAAAC,OA0CT,CAvCIiS,CAuCJ,GAtCIsG,CACA,CADO8B,CAAAjJ,IACP,CAAApR,CAAA,CAASD,CAAA8X,OAqCb,EAjCIwC,CAAAoD,YAAJ,EACIpD,CAAApE,WACA,CADuB,CAAA,CACvB,CAAAoE,CAAA/F,OAAA,CACI,CADJ,CAEI,CAFJ,CAGItU,CAHJ,CAGauY,CAHb,CAII8B,CAAAyE,eAJJ,CAFJ,EASWzE,CAAAqD,aAAJ,EACHrD,CAAApE,WACA,CADuB,CAAA,CACvB,CAAAoE,CAAA/F,OAAA,CACI,CADJ,CAEI,CAFJ,CAGI+F,CAAAyE,eAHJ,CAII9e,CAJJ,CAIauY,CAJb,CAFG,EASI8B,CAAAnD,cATJ,GAUHmD,CAAApE,WAOA,CAPuB,CAAA,CAOvB,CANIjW,CAAJ,CAAawe,CAAb,CACIxe,CADJ,CACawe,CADb,CAEWxe,CAFX,CAEoBoc,CAFpB,CAEoCoC,CAFpC,CAEiDlW,CAFjD,GAGItI,CAHJ,CAGaoc,CAHb,CAG6BoC,CAH7B,CAG0ClW,CAH1C,CAMA,CAAA+R,CAAA/F,OAAA,CACI,CADJ,CAEI,CAFJ,CAGItU,CAHJ,CAGawe,CAHb,CAIIxe,CAJJ,CAIawe,CAJb,CAI0BlW,CAJ1B,CAjBG,CAwBP,CAAI+R,CAAApE,WAAJ,EAA4BoE,CAAAnG,UAA5B,EAAmDmG,CAAAnG,UAAA7a,QAAAwa,WAAnD,GACI9T,CAAA0X,QACA,CADY1X,CAAAqJ,KACZ,CAAA6V,UAAA,CAAW,QAAQ,EAAG,CAClB5E,CAAA0D,UAAA,CAAoBhe,CAApB,CADkB,CAAtB,CAEG,CAFH,CAFJ,CA7CJ,CAbqB,CA1jBP;AAioBlBge,UAAWA,QAAQ,CAAChe,CAAD,CAAI,CAAA,IAEfhD,EADYsd,IACJtd,MAFO,CAGfjE,EAFYuhB,IAEJvhB,MAHO,CAIfob,EAHYmG,IAGAnG,UAJG,CAKfgL,CALe,CAMfX,CANe,CAQf7G,EAAW3X,CAAA2X,SAAXA,EAAyB3X,CAE7B,EAIKkW,CAbWoE,IAaXpE,WAJL,EAI+B/B,CAJ/B,EAI6CA,CAAA+B,WAJ7C,GAKkB,WALlB,GAKIlW,CAAAgB,QALJ,GATgBsZ,IAiBRsB,UAAJ,GAjBYtB,IAiBgByE,eAA5B,CACII,CADJ,CAjBY7E,IAkBG0E,aADf,CAjBY1E,IAmBDuB,UAFX,GAjBYvB,IAmBuByE,eAFnC,GAGIP,CAHJ,CAjBYlE,IAoBG0E,aAHf,CAgBA,CAjCY1E,IAuBRuB,UAUJ,GAjCYvB,IAuBgBtW,KAU5B,GATIwa,CASJ,CAjCYlE,IAwBGoE,iBAAA,EAAA3f,QASf,EAPA4f,CAOA,CAPM5lB,CAAA+H,aAAA,CA1BMwZ,IA2BRsB,UADE,CA1BMtB,IA4BRuB,UAFE,CAGFsD,CAHE,CAIFX,CAJE,CAON,CAAIlmB,CAAA,CAAQqmB,CAAAjlB,IAAR,CAAJ,EACIsD,CAAAjE,MAAA,CAAY,CAAZ,CAAAgI,YAAA,CACIlF,IAAAnC,IAAA,CAASilB,CAAAjlB,IAAT,CAAkBilB,CAAAhlB,IAAlB,CADJ,CAEIkC,IAAAlC,IAAA,CAASglB,CAAAjlB,IAAT,CAAkBilB,CAAAhlB,IAAlB,CAFJ,CAGI,CAAA,CAHJ,CAlCQ2gB,IAsCJpE,WAAA,CAAuB,CAAA,CAAvB,CAA+B,IAJnC,CAKI,CACIlV,QAAS,WADb;AAEIoe,UAAW,gBAFf,CAGIzH,SAAUA,CAHd,CALJ,CAzBR,CAuCkB,YAAlB,GAAI3X,CAAA0X,QAAJ,GAhDgB4C,IAiDZoD,YADJ,CAhDgBpD,IAiDYqD,aAD5B,CAhDgBrD,IAkDRnD,cAFR,CAhDgBmD,IAkDkBsD,WAFlC,CAhDgBtD,IAmDR0E,aAHR,CAhDgB1E,IAmDiByE,eAHjC,CAhDgBzE,IAoDRpE,WAJR,CAhDgBoE,IAoDemE,WAJ/B,CAIsD,IAJtD,CAjDmB,CAjoBL,CA6rBlB1F,aAAcA,QAAQ,EAAG,CACjB,IAAA+E,eAAJ,GACIvlB,CAAA,CAAK,IAAAulB,eAAL,CAA0B,QAAQ,CAACuB,CAAD,CAAS,CACvCA,CAAA,EADuC,CAA3C,CAGA,CAAA,IAAAvB,eAAA,CAAsB/iB,IAAAA,EAJ1B,CAMA,KAAAukB,uBAAA,EAPqB,CA7rBP,CA0sBlBA,uBAAwBA,QAAQ,EAAG,CAC/B,IAAIC,EAAa,IAAAA,WAAbA,EAAgC,EAChC,KAAAnC,iBAAJ,EAA6BmC,CAAA,CAAW,CAAX,CAA7B,EAA2F,CAAA,CAA3F,GAA8C,IAAAzD,iBAAA0D,mBAA9C,GACIjnB,CAAA,CAAKgnB,CAAL,CAAiB,QAAQ,CAAClmB,CAAD,CAAS,CAC9Boa,CAAA,CAAYpa,CAAZ;AAAoB,aAApB,CAAmC,IAAAomB,mBAAnC,CAD8B,CAAlC,CAEG,IAFH,CAKA,CAAIF,CAAA,CAAW,CAAX,CAAAxmB,MAAJ,EACI0a,CAAA,CAAY8L,CAAA,CAAW,CAAX,CAAAxmB,MAAZ,CAAiC,eAAjC,CAAkD,IAAA2mB,uBAAlD,CAPR,CAF+B,CA1sBjB,CA2tBlB3P,KAAMA,QAAQ,CAAC/S,CAAD,CAAQ,CAAA,IACd2iB,EAAe3iB,CAAA1D,QADD,CAEdwiB,EAAmB6D,CAAArF,UAFL,CAGd8C,EAAmBtB,CAAA3c,QAHL,CAIdygB,EAAmBD,CAAAxL,UAJL,CAKd0L,EAAmBD,CAAAzgB,QALL,CAMdgS,EAASiM,CAAA,CAAmBtB,CAAA3K,OAAnB,CAA6C,CANxC,CAOdiL,EAAkByD,CAAA,CAAmBD,CAAAzO,OAAnB,CAA6C,CAEnE,KAAAqK,QAAA,CAAe,EACf,KAAAkB,OAAA,CAAc,EAEd,KAAA1f,MAAA,CAAaA,CACb,KAAA8iB,cAAA,EAEA,KAAA3O,OAAA,CAAcA,CACd,KAAAiL,gBAAA,CAAuBA,CACvB,KAAAyD,iBAAA,CAAwBA,CACxB,KAAAzC,iBAAA,CAAwBA,CACxB,KAAAtB,iBAAA,CAAwBA,CACxB,KAAA8D,iBAAA,CAAwBA,CACxB,KAAAzD,cAAA,CAAqBhL,CAArB,CAA8BiL,CAE9B,KAAAlL,SAAA,CAAgB3P,CAAA,CAAKua,CAAA5K,SAAL,CAAgC,CAACkM,CAAjC,EAAqDpgB,CAAAkV,SAArD,CAvBE,KAyBdoI;AAAY,IAzBE,CA0BdiF,EAAajF,CAAAiF,WA1BC,CA2BdQ,EAAa/iB,CAAAjE,MAAA+B,OA3BC,CA4BdklB,EAAahjB,CAAAsE,MAAAxG,OA5BC,CA6BdmlB,EAAYV,CAAZU,EAA0BV,CAAA,CAAW,CAAX,CAA1BU,EAA2CV,CAAA,CAAW,CAAX,CAAAxmB,MAA3CknB,EAAkEjjB,CAAAjE,MAAA,CAAY,CAAZ,CAGtEiE,EAAAkjB,YAAA,CAAoB,CAChB7W,KAAMiR,CAAApJ,SAAA,CAAqB,SAArB,CAAiC,cADvB,CAEhBpN,OAAQsZ,CAAA,EAAqBlL,CAAAlV,CAAAkV,SAArB,CAAsCoI,CAAA6B,cAAtC,CAAgE,CAAxErY,EAA6EgY,CAAA9H,OAF7D,CAIhBhX,EAAAkV,SAAJ,GACIlV,CAAAkjB,YAAA7W,KADJ,CAC6BiR,CAAApJ,SAAA,CAAqB,aAArB,CAAqC,UADlE,CAGAlU,EAAAmjB,WAAA,CAAmB,CAAA,CAEf7F,EAAA8C,iBAAJ,EAEI9C,CAAAvhB,MAyDA,CAzDkB,IAAIb,CAAJ,CAAS8E,CAAT,CAAgB+I,CAAA,CAAM,CAEpClL,OAAQolB,CAAA3mB,QAAAuB,OAF4B,CAGpCtB,QAAS0mB,CAAA3mB,QAAAC,QAH2B,CAAN,CAI/BuiB,CAAA/iB,MAJ+B,CAIP,CACvB4hB,GAAI,kBADmB,CAEvBrZ,MAAO,kBAFgB,CAGvB8e,IAAK,CAAA,CAHkB,CAIvB/W,KAAM,UAJiB,CAKvBM,MAAOoW,CALgB,CAMvB3O,OAAQ,CANe,CAOvB9T,mBAAoB,CAAA,CAPG,CAQvB4b,YAAa,CAAA,CARU;AASvBC,UAAW,CAAA,CATY,CAUvBgC,WAAY,CAVW,CAWvBC,WAAY,CAXW,CAYvBiF,YAAa,CAAA,CAZU,CAJO,CAiB/BrjB,CAAAkV,SAAA,CAAiB,CAChBoO,QAAS,CAAClE,CAAD,CAAkB,CAAlB,CAAqB,CAACA,CAAtB,CAAuC,CAAvC,CADO,CAEhB7N,MAAO4C,CAFS,CAAjB,CAGC,CACAmP,QAAS,CAAC,CAAD,CAAI,CAAClE,CAAL,CAAsB,CAAtB,CAAyBA,CAAzB,CADT,CAEAjL,OAAQA,CAFR,CApB8B,CAAhB,CAyDlB,CAhCAmJ,CAAAhZ,MAgCA,CAhCkB,IAAIpJ,CAAJ,CAAS8E,CAAT,CAAgB+I,CAAA,CAAM+V,CAAAxa,MAAN,CAA8B,CAC5DqZ,GAAI,kBADwD,CAE5D4F,WAAY,CAAA,CAFgD,CAG5DnP,OAAQ,CAHoD,CAI5DzH,MAAOqW,CAJqD,CAK5DK,YAAa,CAAA,CAL+C,CAA9B,CAM/BrjB,CAAAkV,SAAA,CAAiB,CAChB3D,MAAO4C,CADS,CAAjB,CAEC,CACAA,OAAQA,CADR,CAR8B,CAAhB,CAgClB,CAnBIoO,CAAJ,EAAkBzD,CAAAziB,OAAAuL,KAAlB,CACI0V,CAAAkG,cAAA,EADJ,CAImC,CAJnC,GAIWxjB,CAAA3D,OAAAyB,OAJX,EAMInC,CAAA,CAAKqE,CAAL,CAAY,QAAZ,CAAsB,QAAQ,CAAClE,CAAD,CAAUsK,CAAV,CAAqB,CAErB,CAA1B,CAAIpG,CAAA3D,OAAAyB,OAAJ,EAAgCzB,CAAAihB,CAAAjhB,OAAhC,GACIihB,CAAAwF,cAAA,EACA,CAAA9iB,CAAAmG,OAAA,CAAerK,CAFnB,CAIAA,EAAAK,KAAA,CAAa6D,CAAb,CAAoBoG,CAApB,CAN+C,CAAnD,CAaJ,CAFAkX,CAAAsC,eAAA,EAEA,CAAAtC,CAAAuD,eAAA,EA3DJ,EA+DIvD,CAAAvhB,MA/DJ,CA+DsB,CACd2C,UAAWA,QAAQ,CAACoI,CAAD,CAAQgb,CAAR,CAAiB,CAAA,IAC5BriB,EAAOO,CAAAjE,MAAA,CAAY,CAAZ,CADqB;AAE5B4lB,EAAMliB,CAAAC,YAAA,EAFsB,CAG5B+jB,EAAmBhkB,CAAAL,IAAnBqkB,CAA8B,CAA9BA,CAAkCrE,CAHN,CAI5B1iB,EAAMygB,CAAA,CAAO,KAAP,CAAc1d,CAAAnD,QAAAI,IAAd,CAAgCilB,CAAA7f,QAAhC,CAJsB,CAK5B4hB,EAAavG,CAAA,CAAO,KAAP,CAAc1d,CAAAnD,QAAAK,IAAd,CAAgCglB,CAAA5f,QAAhC,CAAb2hB,CAA4DhnB,CAEhE,OAAOolB,EAAA,CAEFhb,CAFE,CAEM4c,CAFN,CAEmBD,CAFnB,CAEuC/mB,CAFvC,CAIH+mB,CAJG,EAIiB3c,CAJjB,CAIyBpK,CAJzB,EAIgCgnB,CAXP,CADtB,CAcdvT,SAAUA,QAAQ,CAACrJ,CAAD,CAAQ,CACtB,MAAO,KAAApI,UAAA,CAAeoI,CAAf,CADe,CAdZ,CAiBd2Z,QAASA,QAAQ,CAAC3Z,CAAD,CAAQ,CACrB,MAAO,KAAApI,UAAA,CAAeoI,CAAf,CAAsB,CAAA,CAAtB,CADc,CAjBX,CAoBdhD,aAAc5I,CAAAW,UAAAiI,aApBA,CAqBdqc,KAAM,CAAA,CArBQ,CA2BlBngB,EAAA1D,QAAA6a,UAAAhV,QAAJ,GACInC,CAAAmX,UAQA,CARkBmG,CAAAnG,UAQlB,CARwC,IAAIhB,CAAJ,CACpCnW,CAAAgR,SADoC,CAEpCjI,CAAA,CAAM/I,CAAA1D,QAAA6a,UAAN,CAA+B,CAC3BH,OAAQsG,CAAA8C,iBAAA,CAA6B,CAA7B,CAAiC,EADd,CAE3BhJ,SAAUpX,CAAAkV,SAFiB,CAA/B,CAFoC,CAMpClV,CANoC,CAQxC,CAAA/E,CAAA,CAASqiB,CAAAnG,UAAT,CAA8B,SAA9B,CAAyC,QAAQ,CAACnU,CAAD,CAAI,CAAA,IAC7CuI,EAAQ+R,CAAAtW,KADqC,CAE7ChC,EAAKuG,CAALvG,CAAa,IAAAA,GAFgC,CAG7CD,EAAOwG,CAAPxG,CAAe,IAAAA,KAEnBuY,EAAApE,WAAA;AAAuBoE,CAAAnG,UAAA+B,WACvBoE,EAAA/F,OAAA,CAAiB,CAAjB,CAAoB,CAApB,CAAuBxS,CAAvB,CAA6BC,CAA7B,CAEA,EAAIhF,CAAA1D,QAAA6a,UAAAL,WAAJ,EAAwD,WAAxD,GAA0C9T,CAAA0X,QAA1C,GACIwH,UAAA,CAAW,QAAQ,EAAG,CAClB5E,CAAA0D,UAAA,CAAoBhe,CAApB,CADkB,CAAtB,CAT6C,CAArD,CATJ,CA0BAsa,EAAAqG,oBAAA,EAEArG,EAAAsG,eAAA,EA/JkB,CA3tBJ,CAk4BlBlC,iBAAkBA,QAAQ,CAACmC,CAAD,CAA4B,CAAA,IAC9CC,EAAW,IAAA9jB,MAAAjE,MAAA,CAAiB,CAAjB,CADmC,CAE9CgoB,EAAU,IAAAhoB,MAFoC,CAG9CioB,EAAiBD,CAAAznB,QAH6B,CAI9C2nB,EAAkBH,CAAAxnB,QAJ4B,CAK9C2E,CAEC4iB,EAAL,EAAuD,IAAvD,GAAkCC,CAAAhiB,QAAlC,GACIb,CADJ,CACU,CACFa,QAASyC,CAAA,CACLyf,CADK,EACaA,CAAAtnB,IADb,CAELygB,CAAA,CACI,KADJ,CAEI8G,CAAAvnB,IAFJ,CAGIonB,CAAAhiB,QAHJ,CAIIiiB,CAAAjiB,QAJJ,CAKIiiB,CAAArnB,IALJ,CAFK,CADP,CAWFqF,QAASwC,CAAA,CACLyf,CADK,EACaA,CAAArnB,IADb,CAELwgB,CAAA,CACI,KADJ,CAEI8G,CAAAtnB,IAFJ,CAGImnB,CAAA/hB,QAHJ,CAIIgiB,CAAAhiB,QAJJ,CAKIgiB,CAAApnB,IALJ,CAFK,CAXP,CADV,CAwBA,OAAOsE,EA/B2C,CAl4BpC,CAy6BlB6hB,cAAeA,QAAQ,CAACoB,CAAD,CAAoB,CAAA,IACnClkB,EAAQ,IAAAA,MAD2B,CAEnCuiB,CAEJ2B,EAAA,CAAoBA,CAApB,EAAyClkB,CAAA1D,QAAzC,EAA0D0D,CAAA1D,QAAAghB,UAAAiF,WAA1D;AAAgG,CAG5F,KAAAlmB,OAAJ,GACI,IAAAimB,uBAAA,EACA,CAAA/mB,CAAA,CAAK,IAAAc,OAAL,CAAkB,QAAQ,CAAC8nB,CAAD,CAAI,CAC1BA,CAAA5a,QAAA,EAD0B,CAA9B,CAFJ,CAOAgZ,EAAA,CAAa,IAAAA,WAAb,CAA+B,EAG/BhnB,EAAA,CAAKyE,CAAA3D,OAAL,EAAqB,EAArB,CAAyB,QAAQ,CAACA,CAAD,CAASgC,CAAT,CAAY,CACzC,CAAIhC,CAAAC,QAAA8nB,gBAAJ,GAAuC/lB,CAAvC,GAA6C6lB,CAA7C,EAAkE7nB,CAAAC,QAAAqhB,GAAlE,GAAwFuG,CAAxF,GACuC,CAAA,CADvC,GACI7nB,CAAAC,QAAA8nB,gBADJ,GAEI7B,CAAA/f,KAAA,CAAgBnG,CAAhB,CAHqC,CAA7C,CAQI,KAAAN,MAAJ,EAAmBokB,CAAA,IAAApkB,MAAAokB,KAAnB,EACI,IAAAqD,cAAA,EA1BmC,CAz6BzB,CA08BlBA,cAAeA,QAAQ,EAAG,CAAA,IAClBlG,EAAY,IADM,CAElBtd,EAAQsd,CAAAtd,MAFU,CAGlBqkB,EAAkB/G,CAAAjhB,OAAlBgoB,CAAqC,EAHnB,CAIlB9B,EAAajF,CAAAiF,WAJK,CAKlB+B,CALkB,CAMlBC,CANkB,CAOlBC,EAAwBlH,CAAAwB,iBAAAziB,OAPN,CAQlBooB,CARkB,CASlBC,EAAiB,CACbC,oBAAqB,CAAA,CADR,CAEbhY,MAAO,IAFM,CAGbuE,MAAO,KAHM,CAIb0T,SAAU,CAAA,CAJG,CAKb7oB,MAAO,kBALM,CAMbuI,MAAO,kBANM;AAObugB,aAAc,CAAA,CAPD,CAQbC,SAAU,CAAA,CARG,CASbC,WAAY,CAAA,CATC,CAUb9kB,QAAS,CAAA,CAVI,CAcjBsiB,EAAJ,CACIhnB,CAAA,CAAKgnB,CAAL,CAAiB,QAAQ,CAACyC,CAAD,CAAO3mB,CAAP,CAAU,CAC/BqmB,CAAAtD,KAAA,CAAsB,YAAtB,EAAsC/iB,CAAtC,CAA0C,CAA1C,CAEAimB,EAAA,CAAcU,CAAA1oB,QAAd,EAA8B,EAC9BmoB,EAAA,CAAuBH,CAAAxF,iBAAvB,EAAuD,EACvDyF,EAAA,CAAyBxb,CAAA,CAAMub,CAAN,CAAmBI,CAAnB,CAAmCF,CAAnC,CAA0DC,CAA1D,CAGrBQ,EAAAA,CAAsBR,CAAA7c,KAAtBqd,EAAmDT,CAAA5c,KACvD0V,EAAA4H,iBAAA,CAA6B5H,CAAA4H,iBAA7B,EAA2D,CAAED,CAAAA,CAC7DV,EAAA3c,KAAA,CAA8Bqd,CAA9B,EAAqDX,CAAA1c,KAArD,EAAyE0c,CAAA1c,KAAA1L,MAAA,CAAuB,CAAvB,CAGzE8oB,EAAAX,gBAAA,CAAuBrkB,CAAAmlB,WAAA,CAAiBZ,CAAjB,CACvBF,EAAA7hB,KAAA,CAAqBwiB,CAAAX,gBAArB,CAd+B,CAAnC,CADJ,EAmBIE,CAGA,CAHyBxb,CAAA,CAAMyb,CAAN,CAA6BE,CAA7B,CAGzB,CAFAH,CAAA3c,KAEA,CAF8B4c,CAAA5c,KAE9B,CADA0V,CAAA4H,iBACA,CAD6B,CAAEtd,CAAA2c,CAAA3c,KAC/B,CAAAyc,CAAA7hB,KAAA,CAAqBxC,CAAAmlB,WAAA,CAAiBZ,CAAjB,CAArB,CAtBJ,CAyBA,KAAAZ,oBAAA,EAhDsB,CA18BR,CAigClBA,oBAAqBA,QAAQ,EAAG,CAAA,IACxBrG,EAAY,IADY,CAExBiF,EAAajF,CAAAiF,WAAbA,EAAqC,EAGrCA,EAAA,CAAW,CAAX,CAAJ,EAAqBA,CAAA,CAAW,CAAX,CAAAxmB,MAArB,EACId,CAAA,CAASsnB,CAAA,CAAW,CAAX,CAAAxmB,MAAT;AAA8B,eAA9B,CAA+C,IAAA2mB,uBAA/C,CAG6C,EAAA,CAAjD,GAAI,IAAA5D,iBAAA0D,mBAAJ,EAGIjnB,CAAA,CAAKgnB,CAAL,CAAiB,QAAQ,CAACyC,CAAD,CAAO,CACxBA,CAAAjpB,MAAJ,EACId,CAAA,CAAS+pB,CAAT,CAAe,aAAf,CAA8B,IAAAvC,mBAA9B,CAIJxnB,EAAA,CAAS+pB,CAAT,CAAe,QAAf,CAAyB,QAAQ,EAAG,CAC5B,IAAAX,gBAAJ,GACIrH,CAAA,CAAMM,CAAAjhB,OAAN,CAAwB,IAAAgoB,gBAAxB,CAEA,CADA,IAAAA,gBAAAe,OAAA,CAA4B,CAAA,CAA5B,CACA,CAAA,OAAO,IAAAf,gBAHX,CADgC,CAApC,CAN4B,CAAhC,CAaG,IAbH,CAZwB,CAjgCd,CAmiClBnD,4BAA6BA,QAAQ,EAAG,CAAA,IAChCnlB,EAAQ,IAAAA,MADwB,CAEhCspB,CAEAtpB,EAAA2D,YAAJ,GACI2lB,EAAAA,CAAAA,CAAgB,IAAA3D,iBAAA,CAAsB,CAAA,CAAtB,CAAhB2D,CADJ,EAE0BA,CAAAvjB,QAF1B,GAEoD/F,CAAAW,IAFpD,EAEiE2oB,CAAAtjB,QAFjE,GAE2FhG,CAAAY,IAF3F,GAGQZ,CAAAW,IACA,CADY2oB,CAAAvjB,QACZ,CAAA/F,CAAAY,IAAA,CAAY0oB,CAAAtjB,QAJpB,EAJoC,CAniCtB,CAmjClB2gB,uBAAwBA,QAAQ,EAAG,CAAA,IAE3BpF;AADYuE,IACA7hB,MAAAsd,UAFe,CAG3BgI,EAFYzD,IAEGniB,YAAA,EAHY,CAM3B6lB,EAAcD,CAAAxjB,QANa,CAO3B0jB,EAAcF,CAAAvjB,QAPa,CAQ3BwJ,EAHU+Z,CAAA3oB,IAGV4O,CAJU+Z,CAAA5oB,IAJiB,CAS3B+oB,EAAanI,CAAAmI,WATc,CAU3BC,EAAapI,CAAAoI,WAVc,CAW3Bxf,CAX2B,CAY3BD,CAZ2B,CAa3Boe,EAAkB/G,CAAAjhB,OAAlBgoB,EAAsC/G,CAAAjhB,OAAA,CAAiB,CAAjB,CAbX,CAc3BspB,EAAiB,CAAE5hB,CAbP8d,IAaO9d,YAbP8d,KAiBA+D,UAEhB,EAFuE,qBAEvE,GAnBgB/D,IAiBuB+D,UAAA5hB,QAEvC,GAIQyhB,CAmBJ,GAlBIxf,CACA,CADSsf,CACT,CAAArf,CAAA,CAASD,CAAT,CAAkBsF,CAiBtB,EAZIma,CAYJ,GAXIxf,CACA,CADSsf,CACT,CAAKC,CAAL,GACIxf,CADJ,CACapH,IAAAlC,IAAA,CACLuJ,CADK,CACIqF,CADJ,CAEL8Y,CAAA,EAAmBA,CAAAriB,MAAnB,CACAqiB,CAAAriB,MAAA,CAAsB,CAAtB,CADA,CAC2B,CAACvE,MAAAC,UAHvB,CADb,CAUJ,EAAIioB,CAAJ,GAAuBF,CAAvB,EAAqCC,CAArC,GACQ5c,CAAA,CAAS7C,CAAT,CADR,GA1CY4b,IA4CJnlB,IACA,CA7CImlB,IA4CYlb,QAChB,CADoCV,CACpC,CA7CI4b,IA6CJllB,IAAA,CA7CIklB,IA6CYjb,QAAhB,CAAoCV,CAH5C,CAvBJ,CAgCAoX,EAAAmI,WAAA,CAAuBnI,CAAAoI,WAAvB,CAA8C,IApDf,CAnjCjB,CA+mClBjD,mBAAoBA,QAAQ,EAAG,CAAA,IACvBnF,EAAY,IAAAtd,MAAAsd,UADW,CAGvB+G,EAAkB,IAAAA,gBAItB/G,EAAAmI,WAAA;AAAuB3c,CAAA,CALNyZ,IAKexmB,MAAAW,IAAT,CAAvB,EALiB6lB,IAKyCxmB,MAAAW,IAA1D,EALiB6lB,IAKiEvgB,MAAA,CAAiB,CAAjB,CAGlFsb,EAAAoI,WAAA,CAAuB7mB,IAAAuS,MAAA,CAAWkM,CAAAuB,UAAX,CAAvB,EAA0DhgB,IAAAuS,MAAA,CAAWkM,CAAAtW,KAAX,CAGtDqd,EAAJ,EAAwBa,CAAA5H,CAAA4H,iBAAxB,GACIb,CAAA/nB,QAAAupB,WACA,CAbatD,IAYwBvgB,MAAA,CAAiB,CAAjB,CACrC,CAAAqiB,CAAAyB,QAAA,CAbavD,IAaWjmB,QAAAsL,KAAxB,CAAiD,CAAA,CAAjD,CAAwD,IAAxD,CAA8D,CAAA,CAA9D,CAFJ,CAb2B,CA/mCb,CAqoClBgc,eAAgBA,QAAQ,EAAG,CACvB3oB,CAAA,CAAS,IAAA+E,MAAT,CAAqB,QAArB,CAA+B,QAAQ,EAAG,CAAA,IAElCsd,EAAY,IAAAA,UAFsB,CAGlCvhB,EAAQuhB,CAARvhB,GACIuhB,CAAAiF,WADJxmB,EAEIuhB,CAAAiF,WAAA,CAAqB,CAArB,CAFJxmB,EAGIuhB,CAAAiF,WAAA,CAAqB,CAArB,CAAAxmB,MAHJA,EAIIuhB,CAAAnG,UAJJpb,EAI2B,IAAAA,MAAA,CAAW,CAAX,CAJ3BA,CAOAA,EAAJ,EACIuhB,CAAA/F,OAAA,CAAiBxb,CAAAW,IAAjB,CAA4BX,CAAAY,IAA5B,CAXkC,CAA1C,CADuB,CAroCT,CAypClB4M,QAASA,QAAQ,EAAG,CAGhB,IAAAwS,aAAA,EAEI,KAAAhgB,MAAJ,GACIihB,CAAA,CAAM,IAAAhd,MAAAjE,MAAN,CAAwB,IAAAA,MAAxB,CACA,CAAAihB,CAAA,CAAM,IAAAhd,MAAA+lB,KAAN;AAAuB,IAAAhqB,MAAvB,CAFJ,CAII,KAAAuI,MAAJ,GACI0Y,CAAA,CAAM,IAAAhd,MAAAsE,MAAN,CAAwB,IAAAA,MAAxB,CACA,CAAA0Y,CAAA,CAAM,IAAAhd,MAAA+lB,KAAN,CAAuB,IAAAzhB,MAAvB,CAFJ,CAKA/I,EAAA,CAAK,IAAAc,OAAL,EAAoB,EAApB,CAAwB,QAAQ,CAAC8nB,CAAD,CAAI,CAC5BA,CAAA5a,QAAJ,EACI4a,CAAA5a,QAAA,EAF4B,CAApC,CAOAhO,EAAA,CAAK,mHAAA,MAAA,CAAA,GAAA,CAAL,CAIG,QAAQ,CAACygB,CAAD,CAAO,CACV,IAAA,CAAKA,CAAL,CAAJ,EAAkB,IAAA,CAAKA,CAAL,CAAAzS,QAAlB,EACI,IAAA,CAAKyS,CAAL,CAAAzS,QAAA,EAEJ,KAAA,CAAKyS,CAAL,CAAA,CAAa,IAJC,CAJlB,CASG,IATH,CAYAzgB,EAAA,CAAK,CAAC,IAAAijB,QAAD,CAAL,CAAqB,QAAQ,CAACwH,CAAD,CAAO,CAChC3P,CAAA,CAAwB2P,CAAxB,CADgC,CAApC,CAEG,IAFH,CAjCgB,CAzpCF,CAgsCtBhrB,EAAA+hB,UAAA,CAAcA,CAMdphB,EAAA,CAAKT,CAAAW,UAAL,CAAqB,MAArB,CAA6B,QAAQ,CAACC,CAAD,CAAUmK,CAAV,CAAkBC,CAAlB,CAA0B,CAAA,IACvDlG,EAAQ,IAAAA,MAD+C,CAEvD2iB,EAAe3iB,CAAA1D,QAFwC,CAGvD2pB,EAAWtD,CAAA3iB,MAAAimB,SAH4C,CAKvD3I,EAAYqF,CAAArF,UAL2C;AAMvD4I,EAAgBvD,CAAAuD,cANuC,CAOvDjlB,CAEA,KAAApB,QAAJ,GAAsByd,CAAtB,EAAmCA,CAAAnb,QAAnC,EACS+jB,CADT,EAC0BA,CAAA/jB,QAD1B,IAKqB,GAAjB,GAAI8jB,CAAJ,CACIjmB,CAAAmmB,gBADJ,CAC4B,SAD5B,CAIwB,GAAjB,GAAIF,CAAJ,CACHhlB,CADG,CACG,CAAA,CADH,CAKiB,IALjB,GAKIglB,CALJ,GAMHG,CACA,CADe,IAAAA,aACf,CAAI9qB,CAAA,CAAQ2K,CAAR,CAAJ,CACI,IAAAmgB,aADJ,CACwB,CAAC,IAAA1pB,IAAD,CAAW,IAAAC,IAAX,CADxB,CAEWypB,CAFX,GAGIngB,CAEA,CAFSmgB,CAAA,CAAa,CAAb,CAET,CADAlgB,CACA,CADSkgB,CAAA,CAAa,CAAb,CACT,CAAA,OAAO,IAAAA,aALX,CAPG,CATX,CA0BA,OAAeroB,KAAAA,EAAR,GAAAkD,CAAA,CAAoBA,CAApB,CAA0BnF,CAAAK,KAAA,CAAa,IAAb,CAAmB8J,CAAnB,CAA2BC,CAA3B,CAnC0B,CAA/D,CAuCAvK,EAAA,CAAKR,CAAAU,UAAL,CAAsB,MAAtB,CAA8B,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB+pB,CAAnB,CAA6B,CAE/DprB,CAAA,CAAS,IAAT,CAAe,cAAf,CAA+B,QAAQ,EAAG,CACtC,IAAIqB,EAAU,IAAAA,QACd,IAAIA,CAAAghB,UAAAnb,QAAJ,EAAiC7F,CAAA6a,UAAAhV,QAAjC,CACI,IAAAuV,SAAA,CAAgB,IAAA4F,UAAhB,CAAiC,IAAIP,CAAJ,CAAc,IAAd,CAHC,CAA1C,CAOAjhB,EAAAK,KAAA,CAAa,IAAb,CAAmBG,CAAnB,CAA4B+pB,CAA5B,CAT+D,CAAnE,CAkBA1qB,EAAA,CAAKR,CAAAU,UAAL,CAAsB,cAAtB,CAAsC,QAAQ,CAACC,CAAD,CAAU,CAAA,IAEhDwqB;AAAS,IAAAA,OAFuC,CAGhDhJ,EAAY,IAAAA,UAHoC,CAIhD8B,CAJgD,CAKhDmH,CALgD,CAMhDxqB,CANgD,CAOhDuI,CAEJxI,EAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAEIkhB,EAAJ,GACIiJ,CAmBA,CAnBgBD,CAAAhqB,QAmBhB,CAlBAP,CAkBA,CAlBQuhB,CAAAvhB,MAkBR,CAjBAuI,CAiBA,CAjBQgZ,CAAAhZ,MAiBR,CAhBA8a,CAgBA,CAhBkB9B,CAAA8B,gBAgBlB,CAbI,IAAAlK,SAAJ,EACIoI,CAAA9B,KAGA,CAHiB8B,CAAApJ,SAAA,CACb,IAAAsS,WADa,CACKpH,CADL,CACuB9B,CAAAnJ,OADvB,CAEb,IAAAsS,QAAA,CAAa,CAAb,CAFa,CAEKrH,CACtB,CAAA9B,CAAAjJ,IAAA,CAAgB,IAAA/D,QAAhB,CAA+B8O,CAJnC,GAMI9B,CAAA9B,KACA,CADiB,IAAArG,SACjB,CADiCiK,CACjC,CAAA9B,CAAAjJ,IAAA,CAAgBiJ,CAAAwB,iBAAAzK,IAAhB,EACI,IAAAL,YADJ,CACuBsJ,CAAAnJ,OADvB,CAC0CiL,CAD1C,CAC4D,IAAAqH,QAAA,CAAa,CAAb,CAD5D,EAEqC,QAAhC,GAAAF,CAAAG,cAAA,EAA4CH,CAAApkB,QAA5C,EAAsEwkB,CAAAJ,CAAAI,SAAtE,CACGL,CAAAM,aADH,CACyBriB,CAAA,CAAKgiB,CAAAvP,OAAL,CAA2B,EAA3B,CADzB,CAC0D,CAH/D,CAPJ,CAaA,CAAIjb,CAAJ,EAAauI,CAAb,GAEQ,IAAA4Q,SAAJ,CACInZ,CAAAO,QAAAkf,KADJ,CACyBlX,CAAAhI,QAAAkf,KADzB,CAC8C8B,CAAA9B,KAD9C,CAGIzf,CAAAO,QAAA+X,IAHJ,CAGwB/P,CAAAhI,QAAA+X,IAHxB;AAG4CiJ,CAAAjJ,IAI5C,CADAtY,CAAA8qB,YAAA,EACA,CAAAviB,CAAAuiB,YAAA,EATJ,CApBJ,CAXoD,CAAxD,CA8CAlrB,EAAA,CAAKC,CAAAC,UAAL,CAAuB,UAAvB,CAAmC,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB6J,CAAnB,CAA2BnI,CAA3B,CAAkCoI,CAAlC,CAA6C,CACpF,IAAI0gB,EAAiB,IAAAxqB,QAAAwqB,eACjBA,EAAJ,EAAsB,IAAA9kB,MAAAlE,OAAtB,CAA0CgpB,CAA1C,EAA4D5J,CAAA,CAAS5gB,CAAT,CAAkB,CAAA,CAAlB,CAA5D,EAAuF,IAAA0D,MAAAsd,UAAvF,EACIjP,CAAA,CAAM,EAAN,CAAU,CAAA,CAAV,CAEJvS,EAAAK,KAAA,CAAa,IAAb,CAAmBG,CAAnB,CAA4B6J,CAA5B,CAAoCnI,CAApC,CAA2CoI,CAA3C,CALoF,CAAxF,CASAzK,EAAA,CAAKR,CAAAU,UAAL,CAAsB,WAAtB,CAAmC,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB6J,CAAnB,CAA2BC,CAA3B,CAAsC,CACzE/J,CAAAA,CAASP,CAAAK,KAAA,CAAa,IAAb,CAAmBG,CAAnB,CAA4B,CAAA,CAA5B,CAAmC8J,CAAnC,CACT,KAAAkX,UAAJ,EACI,IAAAA,UAAAwF,cAAA,EAEAve,EAAA,CAAK4B,CAAL,CAAa,CAAA,CAAb,CAAJ,EACI,IAAAA,OAAA,EAEJ,OAAO9J,EARsE,CAAjF,CAYAV,EAAA,CAAKC,CAAAC,UAAL,CAAuB,QAAvB,CAAiC,QAAQ,CAACC,CAAD,CAAUirB,CAAV,CAAsB5gB,CAAtB,CAA8B,CACnErK,CAAAK,KAAA,CAAa,IAAb,CAAmB4qB,CAAnB,CAA+B,CAAA,CAA/B,CACI,KAAA/mB,MAAAsd,UAAJ,EACI,IAAAtd,MAAAsd,UAAAwF,cAAA,EAEAve,EAAA,CAAK4B,CAAL,CAAa,CAAA,CAAb,CAAJ,EACI,IAAAnG,MAAAmG,OAAA,EAN+D,CAAvE,CAUAhL;CAAAU,UAAAmrB,UAAAxkB,KAAA,CAA+B,QAAQ,CAACxC,CAAD,CAAQ,CAC3C,IACIsd,EAAYtd,CAAAsd,UAGZA,EAAJ,GACI9d,CACA,CADWQ,CAAAjE,MAAA,CAAY,CAAZ,CAAA2D,YAAA,EACX,CAAA4d,CAAA/F,OAAA,CAAiB/X,CAAA9C,IAAjB,CAA+B8C,CAAA7C,IAA/B,CAFJ,CAL2C,CAA/C,CA98CS,CAAZ,CAAA,CA69CC5B,CA79CD,CA89CA,UAAQ,CAACC,CAAD,CAAI,CAkETisB,QAASA,EAAa,CAACjnB,CAAD,CAAQ,CAG1B,IAAA+S,KAAA,CAAU/S,CAAV,CAH0B,CAlErB,IAML/E,EAAWD,CAAAC,SANN,CAOLC,EAAOF,CAAAE,KAPF,CAQLC,EAAQH,CAAAG,MARH,CASLC,EAAMJ,CAAAI,IATD,CAUL8rB,EAAgBlsB,CAAAksB,cAVX,CAWL7rB,EAAaL,CAAAK,WAXR,CAYL6T,EAAiBlU,CAAAkU,eAZZ,CAaLiY,EAASjY,CAAAkY,OAAAD,OAbJ,CAcL7rB,EAAUN,CAAAM,QAdL,CAeL+a,EAA0Brb,CAAAqb,wBAfrB,CAgBLgR,EAAiBrsB,CAAAqsB,eAhBZ,CAiBL9rB,EAAOP,CAAAO,KAjBF,CAkBLC,EAASR,CAAAQ,OAlBJ,CAmBLkJ,EAAY1J,CAAA0J,UAnBP,CAoBL4iB,EAAStsB,CAAAusB,KApBJ,CAqBLze,EAAW9N,CAAA8N,SArBN,CAsBLC,EAAQ/N,CAAA+N,MAtBH,CAuBLxE,EAAOvJ,CAAAuJ,KAvBF,CAwBLijB,EAAOxsB,CAAAwsB,KAxBF,CAyBLC,EAAQzsB,CAAAysB,MAzBH,CA0BL9rB,EAAOX,CAAAW,KAKXH,EAAA,CAAO0T,CAAP,CAAuB,CACnBgX,cAAe,CAKXwB,YAAa,CACT,eAAgB,CADP,CAETnW,MAAO,EAFE,CAGT4C,OAAQ,EAHC;AAITwT,QAAS,CAJA,CAKTzQ,OAAQ,CALC,CALF,CAYX/C,OAAQ,EAZG,CAaXyT,cAAe,CACX/S,MAAO,OADI,CAbJ,CADI,CAAvB,CAwBA3F,EAAA2Y,KAAA,CAAsB9e,CAAA,CAAMmG,CAAA2Y,KAAN,CAA2B,CAC7CC,kBAAmB,MAD0B,CAE7CC,kBAAmB,MAF0B,CAG7CC,gBAAiB,IAH4B,CAA3B,CAiBtBf,EAAAprB,UAAA,CAA0B,CAOtBosB,YAAaA,QAAQ,CAAC5pB,CAAD,CAAI8H,CAAJ,CAAY,CAAA,IACzB+f,EAAgB,IADS,CAEzBlmB,EAAQkmB,CAAAlmB,MAFiB,CAGzBkoB,EAAehC,CAAAiC,cAAA,CAA4B9pB,CAA5B,CAHU,CAIzBylB,EAAW9jB,CAAAjE,MAAA,CAAY,CAAZ,CAJc,CAKzBspB,EAAiBrlB,CAAA0X,SAAjB2N,EAAmCrlB,CAAA0X,SAAAgK,iBAAA,EAAnC2D,EAAyEvB,CAAzEuB,EAAqF,EAL5D,CAMzBvjB,EAAUujB,CAAAvjB,QANe,CAOzBC,EAAUsjB,CAAAtjB,QAPe,CAQzBkE,CARyB,CASzBC,EAAS4d,CAAT5d,EAAqBrH,IAAAuS,MAAA,CAAWvS,IAAAnC,IAAA,CAASonB,CAAAnnB,IAAT,CAAuB4H,CAAA,CAAKxC,CAAL,CAAc+hB,CAAAnnB,IAAd,CAAvB,CAAX,CATI,CAUzB0P,EAAO6b,CAAA7b,KAVkB,CAWzB+b,CAXyB,CAYzB7c,EAAQ2c,CAAAG,OAZiB,CAazBC,CAbyB,CAczBC,CAdyB,CAezBC,CAfyB,CAkBzBtmB,EAAegmB,CAAAhmB,aAEnB,IAAgB,IAAhB,GAAIJ,CAAJ,EAAoC,IAApC,GAAwBC,CAAxB,CAAA,CAKA/B,CAAA4D,WAAA,CAAmB2H,CAGfrJ,EAAJ,GACI,IAAAumB,mBACA,CAD0B,CAAA,CAC1B,CAAAvtB,CAAAW,UAAA0T,gBAAApT,KAAA,CAAoC2nB,CAApC;AAAgD,CAC5C9jB,MAAO,IAAAA,MADqC,CAAhD,CAEGkC,CAFH,CAEiB,CAAA,CAFjB,CAFJ,CAQA,IAAa,OAAb,GAAImK,CAAJ,EAAiC,MAAjC,GAAwBA,CAAxB,CACSyX,CAAL,EAKI4E,CAOA,CAPM,CACFnd,MAAO2c,CADL,CAEFvrB,IAAKuJ,CAFH,CAGFpE,QAASA,CAHP,CAIFC,QAASA,CAJP,CAON,CADAkE,CACA,CADS6d,CAAA6E,aAAAxsB,KAAA,CAA2BusB,CAA3B,CACT,CAAI5f,CAAA,CAAS4f,CAAAxiB,OAAT,CAAJ,GACIA,CADJ,CACawiB,CAAAxiB,OADb,CAZJ,EAGIqF,CAHJ,CAGY2c,CAJhB,KAmBO,IAAI3c,CAAJ,CACHtF,CACA,CADSpH,IAAAlC,IAAA,CAASuJ,CAAT,CAAkBqF,CAAlB,CAAyBzJ,CAAzB,CACT,CAAAoE,CAAA,CAASrH,IAAAnC,IAAA,CAASuJ,CAAT,CAAkBsF,CAAlB,CAAyBxJ,CAAzB,CAFN,KAIA,IAAa,KAAb,GAAIsK,CAAJ,CAIH,GAAIyX,CAAJ,CAKoB/lB,IAAAA,EAYhB,GAZIgE,CAYJ,GAXID,CAOA,CAPUrE,MAAAC,UAOV,CANAqE,CAMA,CANUtE,MAAAmrB,UAMV,CALArtB,CAAA,CAAKyE,CAAA3D,OAAL,CAAmB,QAAQ,CAACA,CAAD,CAAS,CAC5B2F,CAAAA,CAAQ3F,CAAA2F,MACZF,EAAA,CAAUjD,IAAAnC,IAAA,CAASsF,CAAA,CAAM,CAAN,CAAT,CAAmBF,CAAnB,CACVC,EAAA,CAAUlD,IAAAlC,IAAA,CAASqF,CAAA,CAAMA,CAAAlE,OAAN,CAAqB,CAArB,CAAT,CAAkCiE,CAAlC,CAHsB,CAApC,CAKA,CAAAoE,CAAA,CAAS,CAAA,CAIb,EAFA0iB,CAEA,CAFc3C,CAAA4C,eAAA,CAA6B/mB,CAA7B,CAAsCD,CAAtC,CAA+CqlB,CAA/C,CAEd,CADAlhB,CACA,CADSqiB,CACT,CADoBO,CAAAnsB,IACpB,CAAAwJ,CAAA,CAAS2iB,CAAAlsB,IAjBb,KAqBO,CACH1B,CAAA,CAAS+E,CAAT,CAAgB,cAAhB,CAAgC,QAAQ,EAAG,CACvCkmB,CAAA+B,YAAA,CAA0B5pB,CAA1B,CADuC,CAA3C,CAGA,OAJG,CAzBJ,IA+Ba,KAAb,GAAIgO,CAAJ,EAAsByX,CAAtB,GACH7d,CACA,CADSnE,CACT,CAAAoE,CAAA,CAASnE,CAFN,CAIPmkB,EAAA6C,YAAA,CAA0B1qB,CAA1B,CAGKylB;CAAL,CAcIA,CAAA/f,YAAA,CACIkC,CADJ,CAEIC,CAFJ,CAGI3B,CAAA,CAAK4B,CAAL,CAAa,CAAb,CAHJ,CAII,IAJJ,CAKI,CACInC,QAAS,qBADb,CAEIglB,oBAAqBd,CAFzB,CALJ,CAdJ,EAGIE,CAKA,CALmBX,CAAA,CAAMznB,CAAA1D,QAAAP,MAAN,CAAA,CAA2B,CAA3B,CAKnB,CAJAysB,CAIA,CAJeJ,CAAA7c,MAIf,CAHA6c,CAAA7c,MAGA,CAHyBA,CAGzB,CAFAgd,CAEA,CAFaH,CAAA1rB,IAEb,CADA0rB,CAAA1rB,IACA,CADuB4rB,CACvB,CAAArtB,CAAA,CAAS+E,CAAT,CAAgB,MAAhB,CAAwBipB,QAAyB,EAAG,CAChDb,CAAA7c,MAAA,CAAyBid,CACzBJ,EAAA1rB,IAAA,CAAuB6rB,CAFyB,CAApD,CARJ,CA7EA,CApB6B,CAPX,CAuItBQ,YAAaA,QAAQ,CAACG,CAAD,CAAW,CAC5B,IAAAA,SAAA,CAAgB,IAAA5sB,QAAA4sB,SAAhB,CAAwCA,CADZ,CAvIV,CA8ItBC,eAAgB,CAAC,CACb9c,KAAM,OADO,CAEb3K,MAAO,CAFM,CAGbsT,KAAM,IAHO,CAAD,CAIb,CACC3I,KAAM,OADP,CAEC3K,MAAO,CAFR,CAGCsT,KAAM,IAHP,CAJa,CAQb,CACC3I,KAAM,OADP,CAEC3K,MAAO,CAFR,CAGCsT,KAAM,IAHP,CARa,CAYb,CACC3I,KAAM,KADP,CAEC2I,KAAM,KAFP,CAZa,CAeb,CACC3I,KAAM,MADP,CAEC3K,MAAO,CAFR,CAGCsT,KAAM,IAHP,CAfa,CAmBb,CACC3I,KAAM,KADP,CAEC2I,KAAM,KAFP,CAnBa,CA9IM,CAyKtBjC,KAAMA,QAAQ,CAAC/S,CAAD,CAAQ,CAAA,IACdkmB,EAAgB,IADF,CAEd5pB,EAAU0D,CAAA1D,QAAA4pB,cAFI;AAGdiC,EAAgB7rB,CAAAqf,QAAhBwM,EAAmC,EAAAlqB,OAAA,CAAUioB,CAAAiD,eAAV,CAHrB,CAIdC,EAAiB9sB,CAAA4sB,SAJH,CAKdG,EAAaA,QAAQ,EAAG,CAAA,IAChBC,EAAWpD,CAAAoD,SADK,CAEhBC,EAAWrD,CAAAqD,SACXD,EAAJ,EAAgBA,CAAAE,KAAhB,EACI9kB,CAAA,CAAU4kB,CAAV,CAAoB,MAApB,CAEAC,EAAJ,EAAgBA,CAAAC,KAAhB,EACI9kB,CAAA,CAAU6kB,CAAV,CAAoB,MAApB,CAPgB,CAW5BrD,EAAAlmB,MAAA,CAAsBA,CACtBkmB,EAAA5pB,QAAA,CAAwBA,CACxB4pB,EAAAvK,QAAA,CAAwB,EAExB3b,EAAAypB,eAAA,CAAuBntB,CAAA6X,OACvB+R,EAAAiC,cAAA,CAA8BA,CAE9B,KAAAuB,YAAA,CAAmBzuB,CAAA,CAAS+E,CAAAiE,UAAT,CAA0B,WAA1B,CAAuColB,CAAvC,CACnB,KAAAM,SAAA,CAAgB1uB,CAAA,CAAS+E,CAAT,CAAgB,QAAhB,CAA0BqpB,CAA1B,CAGhB9tB,EAAA,CAAK4sB,CAAL,CAAoBjC,CAAA0D,mBAApB,CAGuB7rB,KAAAA,EAAvB,GAAIqrB,CAAJ,EAAoCjB,CAAA,CAAciB,CAAd,CAApC,EACI,IAAAnB,YAAA,CAAiBmB,CAAjB,CAAiC,CAAA,CAAjC,CAIJnuB,EAAA,CAAS+E,CAAT,CAAgB,MAAhB,CAAwB,QAAQ,EAAG,CAE/B/E,CAAA,CAAS+E,CAAAjE,MAAA,CAAY,CAAZ,CAAT,CAAyB,aAAzB,CAAwC,QAAQ,CAACiH,CAAD,CAAI,CAC5C,IAAArG,IAAJ,CAAe,IAAAD,IAAf,GAA4BsD,CAAA4D,WAA5B,EAA8D,qBAA9D,GAAgDZ,CAAAgB,QAAhD,EACkB,aADlB;AACIhB,CAAAgB,QADJ,EACmCkiB,CAAAuC,mBADnC,EAEI,IAAAlZ,gBAAA,CAAqB,CAAA,CAArB,CAA4B,CAAA,CAA5B,CAH4C,CAApD,CAF+B,CAAnC,CAnCkB,CAzKA,CA0NtBsa,mBAAoBA,QAAQ,EAAG,CAAA,IAEvB7pB,EAAQ,IAAAA,MAFe,CAGvB8jB,EAAW9jB,CAAAjE,MAAA,CAAY,CAAZ,CAHY,CAIvB+tB,EAAcjrB,IAAAuS,MAAA,CAAW0S,CAAAnnB,IAAX,CAA0BmnB,CAAApnB,IAA1B,CAJS,CAKvBqtB,EAAY,CAACjG,CAAAkG,iBALU,CAOvB3E,EAAiBrlB,CAAA0X,SAAjB2N,EAAmCrlB,CAAA0X,SAAAgK,iBAAA,EAAnC2D,EAAyEvB,CAPlD,CAQvBhiB,EAAUujB,CAAAvjB,QARa,CASvBC,EAAUsjB,CAAAtjB,QATa,CAUvB8mB,EATgB3C,IASF4C,eAAA,CAA6B/mB,CAA7B,CAAsCD,CAAtC,CAA+CqlB,CAA/C,CAVS,CAWvB8C,EAASpB,CAAAnsB,IAXc,CAYvBwtB,EAASrB,CAAAlsB,IAZc,CAavBusB,EAZgBhD,IAYLgD,SAbY,CAcvBiB,EAAiBrhB,CAAA,CAASogB,CAAT,CAdM,CAevBkB,EAdgBlE,IAcI5pB,QAAA8tB,kBAfG,CAgBvBzO,EAfgBuK,IAeNvK,QAEdpgB,EAAA,CAjBoB2qB,IAiBfiC,cAAL,CAAkC,QAAQ,CAACD,CAAD,CAAe7pB,CAAf,CAAkB,CAAA,IACpDkN,EAAQ2c,CAAAG,OAD4C,CAEpDhc,EAAO6b,CAAA7b,KAF6C,CAGpD3K,EAAQwmB,CAAAxmB,MAARA,EAA8B,CAC9B2oB,EAAAA,CAAS1O,CAAA,CAAQtd,CAAR,CAJ2C,KAKpDisB,EAAQ,CAGRC,EAAAA,CAAalsB,CAAbksB,GAAmBrB,CARiC,KAUpDsB,EAAkBjf,CAAlBif,CAA0BzoB,CAA1ByoB,CAAoC1oB,CAVgB,CAYpD2oB,EAAkBlf,CAAlBkf,CAA0B3G,CAAAzD,SAZ0B,CAcpDqK,EAAsB,CAAA,CAd8B,CAgBpDC,EAA4B,CAAA,CAhBwB,CAiBpDC,EAAcrf,CAAdqf,GAAwBd,CAE5B;CACc,OADd,GACKzd,CADL,EACkC,MADlC,GACyBA,CADzB,GAEKyd,CAFL,EA/BMhgB,KA+BN,CAEoB,CACZE,MAAO,EADK,CAEZC,KAAM,GAFM,CAAA,CAGdoC,CAHc,CAFpB,CAKoB3K,CALpB,EAMKooB,CANL,EA/BMhgB,KA+BN,CAMoB,CACZE,MAAO,EADK,CAEZC,KAAM,GAFM,CAAA,CAGdoC,CAHc,CANpB,CASoB3K,CATpB,CAWIkpB,CAXJ,CAWkB,CAAA,CAXlB,CAYoB,KAAb,GAAIve,CAAJ,EACHue,CACA,CADeV,CACf,CADwBD,CACxB,GADoCH,CACpC,CAAAY,CAAA,CAAsB,CAACH,CAFpB,EAGa,KAHb,GAGIle,CAHJ,GAIHue,CACA,CADc9G,CAAAnnB,IACd,CAD6BmnB,CAAApnB,IAC7B,EAD6CqF,CAC7C,CADuDD,CACvD,CAAA6oB,CAAA,CAA4B,CAACJ,CAA7B,EAA2CJ,CAA3C,EAA6DS,CAL1D,CAUPC,EAAA,CAAW,CAACT,CAAZ,GAEQI,CAFR,EAGQC,CAHR,EAIQE,CAJR,EAKQZ,CALR,CAQAe,EAAA,CACKP,CADL,EACmBK,CADnB,EAEKA,CAFL,EAEoB,CAACT,CAFrB,EAEuC,CAACO,CAGpCG,EAAJ,CACIP,CADJ,CACY,CADZ,CAEWQ,CAFX,GAGIX,CACA,CADiB,CAAA,CACjB,CAAAG,CAAA,CAAQ,CAJZ,CAQID,EAAAC,MAAJ,GAAqBA,CAArB,EACID,CAAA3mB,SAAA,CAAgB4mB,CAAhB,CA/DoD,CAA5D,CAlB2B,CA1NT,CAmTtBV,mBAAoBA,QAAQ,CAAC1B,CAAD,CAAe,CAAA,IACnC7b,EAAO6b,CAAA7b,KAD4B,CAEnC3K,EAAQwmB,CAAAxmB,MAARA,EAA8B,CAFK,CAMnCqpB,EAAa,CACTphB,YAAa,CADJ,CAETC,OAAQ,GAFC,CAGTC,OAAQ,GAHC,CAITzL,KAAM,IAJG,CAKT0L,IAAK,KALI,CAMTC,KAAM,MANG,CAUjB,IAAIghB,CAAA,CAAW1e,CAAX,CAAJ,CACI6b,CAAAG,OAAA,CAAsB0C,CAAA,CAAW1e,CAAX,CAAtB,CAAyC3K,CAD7C,KAEO,IAAa,OAAb,GAAI2K,CAAJ,EAAiC,MAAjC,GAAwBA,CAAxB,CACH6b,CAAAG,OAAA,CAGe,KAHf,CAAsB,CAClBre,MAAO,EADW,CAElBC,KAAM,GAFY,CAAA,CAGpBoC,CAHoB,CAAtB,CAGsB3K,CAtBa,CAnTrB,CAkVtBspB,cAAeA,QAAQ,CAAC5J,CAAD;AAAO6J,CAAP,CAAa,CAAA,IAC5B3uB,EAAU,IAAA0D,MAAA1D,QAAA4pB,cADkB,CAE5BgF,EAAQ,IAAA,CAAK9J,CAAL,CAAY,OAAZ,CAER9lB,EAAA,CAAQ2vB,CAAR,CAAJ,GACIC,CAAAC,cACA,CADsBD,CAAAE,OACtB,CAAAF,CAAAE,OAAA,CAAeH,CAFnB,CAKAC,EAAApkB,MAAA,CAAczL,CAAA,CACViB,CAAA+uB,oBADU,EACqB,UADrB,CAEVH,CAAAE,OAFU,CAId,KAAA,CAAKhK,CAAL,CAAY,SAAZ,CAAAxM,KAAA,CAA4B,CACxBI,KAAM3Z,CAAA,CAAWiB,CAAAgvB,gBAAX,EAAsC,WAAtC,CAAmDJ,CAAAE,OAAnD,CADkB,CAA5B,CAbgC,CAlVd,CAoWtBG,UAAWA,QAAQ,CAACnK,CAAD,CAAO,CAAA,IAClBoK,EAAa,IAAAA,WADK,CAElBC,EAAU,IAAA,CAAKrK,CAAL,CAAY,SAAZ,CAEdhmB,EAAA,CAAI,IAAA,CAAKgmB,CAAL,CAAY,OAAZ,CAAJ,CAA0B,CACtB5F,KAAOgQ,CAAA7S,WAAP6C,CAA+BiQ,CAAA9jB,EAA/B6T,CAA4C,IADtB,CAEtBnH,IAAKmX,CAAA5T,WAALvD,CAA6B,IAFP,CAGtB9C,MAAQka,CAAAla,MAARA,CAAwB,CAAxBA,CAA6B,IAHP,CAItB4C,OAASsX,CAAAtX,OAATA,CAA0B,CAA1BA,CAA+B,IAJT,CAKtBuX,OAAQ,kBALc,CAA1B,CAJsB,CApWJ,CAiXtBC,UAAWA,QAAQ,CAACvK,CAAD,CAAO,CACtBhmB,CAAA,CAAI,IAAA,CAAKgmB,CAAL,CAAY,OAAZ,CAAJ,CAA0B,CACtBsK,OAAQ,CADc,CAEtBna,MAAO,KAFe,CAGtB4C,OAAQ,KAHc,CAA1B,CAKA;IAAA6W,cAAA,CAAmB5J,CAAnB,CANsB,CAjXJ,CA8XtBwK,UAAWA,QAAQ,CAACxK,CAAD,CAAO,CActByK,QAASA,EAAc,EAAG,CAAA,IAClBC,EAAaZ,CAAApkB,MADK,CAElBA,EAAQ,CAACxK,CAAAyvB,gBAAD,EAA4BxE,IAAAyE,MAA5B,EAAwCF,CAAxC,CAFU,CAGlBG,EAAYjsB,CAAAjE,MAAA,CAAY,CAAZ,CAHM,CAIlBmwB,EAAWlsB,CAAA0X,SAAA,EAAkB1X,CAAA0X,SAAA3b,MAAlB,CAAyCiE,CAAA0X,SAAA3b,MAAzC,CAAgEkwB,CAJzD,CAKlBnqB,EAAUoqB,CAAApqB,QALQ,CAMlBC,EAAUmqB,CAAAnqB,QACV+E,EAAJ,GAAcokB,CAAAC,cAAd,GACID,CAAAC,cAQA,CARsBrkB,CAQtB,CALKgC,CAAA,CAAShC,CAAT,CAKL,GAJIA,CACA,CADQglB,CAAAK,MAAA,CAAiB,GAAjB,CACR,CAAArlB,CAAA,CAAQygB,IAAA6E,IAAA,CAAS5E,CAAA,CAAK1gB,CAAA,CAAM,CAAN,CAAL,CAAT,CAAyB0gB,CAAA,CAAK1gB,CAAA,CAAM,CAAN,CAAL,CAAzB,CAA0C,CAA1C,CAA6C0gB,CAAA,CAAK1gB,CAAA,CAAM,CAAN,CAAL,CAA7C,CAGZ,EAAIgC,CAAA,CAAShC,CAAT,CAAJ,GAGSqgB,CAqBL,GApBYrgB,CAoBZ,EApB0D,GAoB1D,CApBoBulB,CAAA,IAAI9E,IAAJ8E,mBAAA,EAoBpB,EAfIC,CAAJ,CACQxlB,CAAJ,CAAYof,CAAAqD,SAAA6B,OAAZ,CACItkB,CADJ,CACY/I,IAAAA,EADZ,CAEW+I,CAFX,CAEmBhF,CAFnB,GAGIgF,CAHJ,CAGYhF,CAHZ,CADJ,CAOQgF,CAAJ,CAAYof,CAAAoD,SAAA8B,OAAZ,CACItkB,CADJ,CACY/I,IAAAA,EADZ,CAEW+I,CAFX,CAEmB/E,CAFnB,GAGI+E,CAHJ,CAGY/E,CAHZ,CAQJ,CAAchE,IAAAA,EAAd,GAAI+I,CAAJ,EACImlB,CAAAloB,YAAA,CACIuoB,CAAA,CAAQxlB,CAAR,CAAgBmlB,CAAAvvB,IADpB,CAEI4vB,CAAA,CAAQL,CAAAtvB,IAAR,CAAwBmK,CAF5B,CAGI/I,IAAAA,EAHJ,CAIIA,IAAAA,EAJJ,CAIe,CACPiG,QAAS,oBADF,CAJf,CAzBR,CATJ,CAPsB,CAdJ;AAAA,IAClBkiB,EAAgB,IADE,CAElBlmB,EAAQkmB,CAAAlmB,MAFU,CAIlBgR,EAAWhR,CAAAgR,SAJO,CAKlB1U,EAAU0D,CAAA1D,QAAA4pB,cALQ,CAOlBnR,EAAMmR,CAAAnR,IAPY,CAQlBuX,EAAiB,KAAjBA,GAAQlL,CARU,CASlB8J,CATkB,CAUlBxW,CAVkB,CAYlB8W,EAAa,IAAAA,WAyDjB,KAAA,CAAKpK,CAAL,CAAY,OAAZ,CAAA,CAAuB1M,CAAvB,CAA+B1D,CAAA0D,MAAA,CA/DpBxF,CAAA2Y,KA+DmC,CAAKyE,CAAA,CAAQ,mBAAR,CAA8B,iBAAnC,CAAf,CAAsE,IAAAd,WAAApX,OAAtE,CAAAzC,SAAA,CACjB,wBADiB,CAAAiD,KAAA,CAErB,CACF+S,QAAS,CADP,CAFqB,CAAA1W,IAAA,CAKtBua,CALsB,CAM/BA,EAAApX,OAAA,EAAqBM,CAAAnD,MAArB,CAAmC,CAInC,KAAA,CAAK6P,CAAL,CAAY,SAAZ,CAAA,CAAyBqK,CAAzB,CAAmCza,CAAA0D,MAAA,CAAe,EAAf,CAAmB8W,CAAApX,OAAnB,CAAAzC,SAAA,CACrB,wBADqB,CAAAiD,KAAA,CAEzB,CACF+S,QAAS,CADP,CAEFpW,MAAOjV,CAAAiwB,cAAPhb,EAAgC,EAF9B,CAGF4C,OAAQ7X,CAAAkwB,eAARrY,EAAkC,EAHhC,CAIFsY,OAAQnwB,CAAAowB,oBAARD,EAAuC,SAJrC,CAKF,eAAgB,CALd,CAMF,aAAc,QANZ,CAFyB,CAAApX,GAAA,CAU3B,OAV2B;AAUlB,QAAQ,EAAG,CACpB6Q,CAAAqF,UAAA,CAAwBnK,CAAxB,CACA8E,EAAA,CAAc9E,CAAd,CAAqB,OAArB,CAAAuL,MAAA,EAFoB,CAVO,CAAA1b,IAAA,CAc1Bua,CAd0B,CAenCA,EAAApX,OAAA,EAAqBqX,CAAAla,MAArB,EAAsC+a,CAAA,CAAQ,EAAR,CAAa,CAAnD,CAKA,KAAA,CAAKlL,CAAL,CAAY,OAAZ,CAAA,CAAuB8J,CAAvB,CAA+BhE,CAAA,CAAc,OAAd,CAAuB,CAClD9F,KAAMA,CAD4C,CAElDxD,UAAW,2BAFuC,CAGlDvR,KAAM,MAH4C,CAAvB,CAI5B,CACCgI,IAAKrU,CAAAsQ,QAAL+D,CAAqB,IADtB,CAJ4B,CAM5BU,CAN4B,CAW/BmW,EAAA0B,QAAA,CAAgBC,QAAQ,EAAG,CACvB3G,CAAAqF,UAAA,CAAwBnK,CAAxB,CADuB,CAI3B8J,EAAA4B,OAAA,CAAeC,QAAQ,EAAG,CACtB7G,CAAAyF,UAAA,CAAwBvK,CAAxB,CADsB,CAK1B8J,EAAA8B,SAAA,CAAiBnB,CAEjBX,EAAA+B,WAAA,CAAmBC,QAAQ,CAACC,CAAD,CAAQ,CAET,EAAtB,GAAIA,CAAAC,QAAJ,EACIvB,CAAA,EAH2B,CAzHb,CA9XJ,CAkgBtBwB,YAAaA,QAAQ,EAAG,CAAA,IAChBrtB,EAAQ,IAAAA,MADQ,CAEhB1D,EAAU0D,CAAA1D,QAAA4pB,cAFM,CAGhBoH,EAAY/oB,CAAA,CAAKmD,CAACpL,CAAAixB,eAAD7lB,EAA2B,EAA3BA,GAAL,CAAuC1H,CAAAsQ,QAAvC,CAAuDtQ,CAAA8c,WAAA,CAAiB,CAAjB,CAAvD,CAA6ExgB,CAAA6X,OAA7E,CAEhB,OAAO,CACHmZ,UAAWA,CADR,CAEHE,SAAUF,CAAVE,CAAsB,EAFnB,CALa,CAlgBF,CAqhBtB1E,eAAgBA,QAAQ,CAAC/mB,CAAD;AAAUD,CAAV,CAAmBqlB,CAAnB,CAA2B,CAAA,IAE3CsG,EAAM,IAAInG,CAAJ,CAAWvlB,CAAX,CAFqC,CAG3CkI,EAAOwjB,CAAA,CAAInG,CAAAoG,cAAJ,CAAA,EACPC,EAAAA,CAAcxG,CAAA,CAASG,CAAA8E,IAAA,CAAWniB,CAAX,CAAiB,CAAjB,CAAoB,CAApB,CAAT,CAAkC,CAAC,IAAIqd,CAAJ,CAAWrd,CAAX,CAAiB,CAAjB,CAAoB,CAApB,CACrDvN,EAAA,CAAMmC,IAAAlC,IAAA,CAASmF,CAAT,EAAoB,CAApB,CAAuB6rB,CAAvB,CACNF,EAAA,CAAMA,CAAAG,QAAA,EACN,OAAO,CACHjxB,IAAKkC,IAAAnC,IAAA,CAASqF,CAAT,EAAoB0rB,CAApB,CAAyBA,CAAzB,CADF,CAEH/wB,IAAKA,CAFF,CAPwC,CArhB7B,CAyiBtB6a,OAAQA,QAAQ,CAAC7a,CAAD,CAAMC,CAAN,CAAW,CAAA,IAEnBupB,EAAgB,IAFG,CAGnBlmB,EAAQkmB,CAAAlmB,MAHW,CAInBgR,EAAWhR,CAAAgR,SAJQ,CAKnB/M,EAAYjE,CAAAiE,UALO,CAMnB0e,EAAe3iB,CAAA1D,QANI,CAOnBuxB,EAAmBlL,CAAAmL,UAAnBD,EAAgF,CAAA,CAAhFA,GAA6ClL,CAAAmL,UAAA3rB,QAA7C0rB,EACAlL,CAAAoL,WADAF,EAC2BlL,CAAAoL,WAAA5F,cARR,CASnB7rB,EAAUqmB,CAAAuD,cATS,CAUnBvK,EAAUuK,CAAAvK,QAVS,CAWnBkM,EAAO3Y,CAAA2Y,KAXY,CAYnB9S,EAAMmR,CAAAnR,IAZa,CAanByW,EAAatF,CAAAsF,WAbM,CAcnB9D,EAAcprB,CAAAorB,YAdK,CAenB6F,EAAiBjxB,CAAAixB,eAAjBA,EAA2C,EAfxB,CAgBnBS,EAAe1xB,CAAA0xB,aAhBI,CAiBnBlc,EAAS4V,CAAT5V,EAAwB4V,CAAA5V,OAjBL,CAkBnBqD,EAAWnV,CAAAmV,SAlBQ,CAmBnB8Y,CAnBmB,CAoBnB1hB,EAAM,IAAA8gB,YAAA,EApBa,CAqBnBa,EAAchI,CAAAhV,MArBK,CAuBnBuH,EAAWyN,CAAAzN,SAES,EAAA,CAAxB;AAAInc,CAAA6F,QAAJ,GAKKsW,CAmFL,GAjFIyN,CAAAhV,MAkCA,CAlCsBgd,CAkCtB,CAlCoCld,CAAA2G,EAAA,CAAW,wBAAX,CAAA1G,IAAA,EAkCpC,CAhCAiV,CAAAiI,SAgCA,CAhCyBnd,CAAAgE,KAAA,CAAc6S,CAAAC,kBAAd,CAAsCvjB,CAAA,CAAKgpB,CAAA5lB,EAAL,CAAuBwN,CAAvB,CAAtC,CAAwE,EAAxE,CAAA/Z,IAAA,CAChBkB,CAAA8xB,WADgB,CAAAnd,IAAA,CAEhBid,CAFgB,CAgCzB,CA3BAD,CA2BA,CA3Ba1pB,CAAA,CAAKgpB,CAAA5lB,EAAL,CAAuBwN,CAAvB,CA2Bb,CA3BgD+Q,CAAAiI,SAAAE,QAAA,EAAA9c,MA2BhD,CA3ByF,CA2BzF,CAzBAhW,CAAA,CAAK2qB,CAAAiC,cAAL,CAAkC,QAAQ,CAACD,CAAD,CAAe7pB,CAAf,CAAkB,CACxDsd,CAAA,CAAQtd,CAAR,CAAA,CAAa2S,CAAAqZ,OAAA,CACLnC,CAAAlT,KADK,CAELiZ,CAFK,CAGL,CAHK,CAIL,QAAQ,EAAG,CACP/H,CAAA+B,YAAA,CAA0B5pB,CAA1B,CACA6nB,EAAAoI,SAAA,CAAyB,CAAA,CAFlB,CAJN,CAQL5G,CARK,CASL5V,CATK,EASKA,CAAAC,MATL,CAULD,CAVK,EAUKA,CAAAgZ,OAVL,CAWLhZ,CAXK,EAWKA,CAAAyc,SAXL,CAAA3Z,KAAA,CAaH,CACF,aAAc,QADZ,CAbG,CAAA3D,IAAA,CAgBJid,CAhBI,CAmBbD,EAAA,EAActS,CAAA,CAAQtd,CAAR,CAAAkT,MAAd,CAAiChN,CAAA,CAAKjI,CAAAkyB,cAAL,CAA4B,CAA5B,CApBuB,CAA5D,CAyBA,CAAqB,CAAA,CAArB,GAAIR,CAAJ,GACI9H,CAAAnR,IAcA,CAdoBA,CAcpB,CAd0BmS,CAAA,CAAc,KAAd,CAAqB,IAArB,CAA2B,CACjD5O,SAAU,UADuC,CAEjDnE,OAAQ,CAFyC,CAGjD+C,OAAQ,CAHyC,CAA3B,CAc1B,CARAjT,CAAAwqB,WAAAC,aAAA,CAAkC3Z,CAAlC,CAAuC9Q,CAAvC,CAQA,CALAiiB,CAAAsF,WAKA;AAL2BA,CAK3B,CALwCxa,CAAA2G,EAAA,CAAW,aAAX,CAAA1G,IAAA,EAKxC,CAHAua,CAAApX,OAGA,CAHoB,CAGpB,CADA8R,CAAA0F,UAAA,CAAwB,KAAxB,CACA,CAAA1F,CAAA0F,UAAA,CAAwB,KAAxB,CAfJ,CA+CJ,EA7BA1F,CAAA2D,mBAAA,EA6BA,CA1BAqE,CAAA,CAAYzV,CAAA,CAAW,SAAX,CAAuB,MAAnC,CAAA,CAA2C,CACvCb,WAAYrL,CAAA+gB,UAD2B,CAA3C,CA0BA,CAtBqB,CAAA,CAsBrB,GAtBIU,CAsBJ,GAnBIxC,CAAA3W,MAAA,CAAiBrZ,CAAA,CAAO,CACpBkM,EAAG6E,CAAAihB,SADiB,CAEpBjc,MAAOia,CAAApX,OAFa,CAIpBzM,EAAGkmB,CAAA,EAAqBthB,CAAAihB,SAArB,EAAqCK,CAAAnmB,EAArC,EAA2D,CAA3D,EAAgEmmB,CAAA1Z,OAAhE,CAA0FnU,CAAAymB,QAAA,CAAc,CAAd,CAA1F,CACE,GADF,CACO,CALU,CAAP,CAMdnqB,CAAAsrB,cANc,CAAjB,CAM2B,CAAA,CAN3B,CAMiC5nB,CAAA2uB,WANjC,CAgBA,CAPKrzB,CAAA,CAAQ0yB,CAAR,CAOL,GANIY,CACA,CADaV,CAAAG,QAAA,EACb,CAAA7C,CAAA,CAAWA,CAAAqD,UAAAlW,WAAA,CAAkCiW,CAAAjnB,EAAlC,CAAiDinB,CAAArd,MAAjD,CAAoE,EAApE,CAAyE,MAAzE,CAAkF,MAA7F,CAAA,EAKJ,EADA2U,CAAA8E,cAAA,CAA4B,KAA5B,CAAmCtuB,CAAnC,CACA,CAAAwpB,CAAA8E,cAAA,CAA4B,KAA5B,CAAmCruB,CAAnC,CAGJ,EAAAupB,CAAAzN,SAAA,CAAyB,CAAA,CAxFzB,CAzBuB,CAziBL,CAgqBtBhJ,OAAQA,QAAQ,CAACnT,CAAD,CAAU,CACtB,IAAI0D,EAAQ,IAAAA,MACZ+I,EAAA,CAAM,CAAA,CAAN,CAAY/I,CAAA1D,QAAA4pB,cAAZ,CAAyC5pB,CAAzC,CACA,KAAAiN,QAAA,EACA;IAAAwJ,KAAA,CAAU/S,CAAV,CAJsB,CAhqBJ,CA0qBtBuJ,QAASA,QAAQ,EAAG,CAAA,IACZulB,EAAY,IADA,CAEZxF,EAAWwF,CAAAxF,SAFC,CAGZC,EAAWuF,CAAAvF,SAEfuF,EAAApF,YAAA,EACAoF,EAAAnF,SAAA,EAGAtT,EAAA,CAAwByY,CAAAnT,QAAxB,CAGI2N,EAAJ,GACIA,CAAAsD,QADJ,CACuBtD,CAAAwD,OADvB,CACyCxD,CAAA0D,SADzC,CAC6D,IAD7D,CAGIzD,EAAJ,GACIA,CAAAqD,QADJ,CACuBrD,CAAAuD,OADvB,CACyCvD,CAAAyD,SADzC,CAC6D,IAD7D,CAKAhyB,EAAA+zB,WAAA,CAAaD,CAAb,CAAwB,QAAQ,CAAChuB,CAAD,CAAMW,CAAN,CAAW,CACnCX,CAAJ,EAAmB,OAAnB,GAAWW,CAAX,GACQX,CAAAyI,QAAJ,CACIzI,CAAAyI,QAAA,EADJ,CAEWzI,CAAAkuB,SAFX,EAGI3H,CAAA,CAAe,IAAA,CAAK5lB,CAAL,CAAf,CAJR,CAOIX,EAAJ,GAAYmmB,CAAAprB,UAAA,CAAwB4F,CAAxB,CAAZ,GACIqtB,CAAA,CAAUrtB,CAAV,CADJ,CACqB,IADrB,CARuC,CAA3C,CAWG,IAXH,CApBgB,CA1qBE,CAgtB1BvG,EAAAW,UAAAiI,aAAA,CAA8BmrB,QAAQ,CAACjP,CAAD,CAAQC,CAAR,CAAekC,CAAf,CAAyBX,CAAzB,CAAmC,CAAA,IACjE5d,EAAa,IAAA5D,MAAb4D,EAA2B,IAAA5D,MAAA4D,WAC3BqC,EAAAA,CAAS1B,CAAA,CAAK4d,CAAL,CAAe,IAAAzjB,UAAA,CAAeshB,CAAf,CAAsB,CAAA,CAAtB,CAA4B,CAAC,IAAA/D,MAA7B,CAAf,CACT/V,EAAAA,CAAS3B,CAAA,CAAKid,CAAL,CAAe,IAAA9iB,UAAA,CAAeuhB,CAAf,CAAsB,CAAA,CAAtB,CAA4B,CAAC,IAAAhE,MAA7B,CAAf,CACTiT,EAAAA,CAActrB,CAAdsrB,GAA6BhpB,CAA7BgpB,CAAsCjpB,CAAtCipB,EAAgDtrB,CAKlC;EAAlB,CAAIsrB,CAAJ,EAAuC,GAAvC,CAAyBA,CAAzB,GACQ1N,CAAJ,CACIvb,CADJ,CACaC,CADb,CACsBtC,CADtB,CAGIsC,CAHJ,CAGaD,CAHb,CAGsBrC,CAJ1B,CAOKkF,EAAA,CAAS7C,CAAT,CAAL,GACIA,CADJ,CACaC,CADb,CACsBnI,IAAAA,EADtB,CAIA,OAAO,CACHrB,IAAKuJ,CADF,CAEHtJ,IAAKuJ,CAFF,CApB8D,CAkCzEhL,EAAAW,UAAA8sB,aAAA,CAA8BwG,QAAQ,EAAG,CAAA,IACjCjH,EAAe,IAAA3c,MADkB,CAGjC6jB,EAAW,CACPplB,MAAO,OADA,CAEPC,KAAM,UAFC,CAAA,CADJie,CAAA7b,KACI,CAHsB,CAOjC3P,CAPiC,CAQjCC,EAAM,IAAAA,IAR2B,CASjCmF,CATiC,CAUjCyJ,CAViC,CAYjC8jB,EAAeA,QAAQ,CAACrK,CAAD,CAAOtjB,CAAP,CAAc,CAAA,IAC7B4tB,EAAO,IAAI/H,IAAJ,CAASvC,CAAT,CADsB,CAE7BuK,EAAaD,CAAA,CAAK,KAAL,CAAaF,CAAb,CAAA,EAEjBE,EAAA,CAAK,KAAL,CAAaF,CAAb,CAAA,CAAuBG,CAAvB,CAAoC7tB,CAApC,CAEI6tB,EAAJ,GAAmBD,CAAA,CAAK,KAAL,CAAaF,CAAb,CAAA,EAAnB,EACIE,CAAAE,QAAA,CAAa,CAAb,CAGJ,OAAOF,EAAA1B,QAAA,EAAP,CAAwB5I,CAVS,CAarClc,EAAA,CAASof,CAAT,CAAJ,EACIxrB,CACA,CADMC,CACN,CADYurB,CACZ,CAAA3c,CAAA,CAAQ2c,CAFZ,GAIIxrB,CAGA,CAHMC,CAGN,CAHY0yB,CAAA,CAAa1yB,CAAb,CAAkB,CAACurB,CAAAxmB,MAAnB,CAGZ,CAAI,IAAA1B,MAAJ,GACI,IAAAA,MAAA4D,WADJ,CAC4BjH,CAD5B,CACkCD,CADlC,CAPJ,CAYAoF,EAAA,CAAUyC,CAAA,CAAK,IAAAzC,QAAL,CAAmBrE,MAAAmrB,UAAnB,CACL9f,EAAA,CAASpM,CAAT,CAAL,GACIA,CADJ,CACUoF,CADV,CAGIpF,EAAJ,EAAWoF,CAAX,GACIpF,CAIA,CAJMoF,CAIN,CAHc/D,IAAAA,EAGd,GAHIwN,CAGJ,GAFIA,CAEJ,CAFY8jB,CAAA,CAAa3yB,CAAb,CAAkBwrB,CAAAxmB,MAAlB,CAEZ,EAAA,IAAAwE,OAAA,CAAcrH,IAAAnC,IAAA,CAASA,CAAT,CAAe6O,CAAf,CAAsB,IAAAxJ,QAAtB,CALlB,CAOK+G;CAAA,CAASnM,CAAT,CAAL,GACID,CADJ,CACUqB,IAAAA,EADV,CAGA,OAAOrB,EAnD8B,CAwDzCf,EAAA,CAAKR,CAAAU,UAAL,CAAsB,MAAtB,CAA8B,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB+pB,CAAnB,CAA6B,CAE/DprB,CAAA,CAAS,IAAT,CAAe,MAAf,CAAuB,QAAQ,EAAG,CAC1B,IAAAqB,QAAA4pB,cAAA/jB,QAAJ,GACI,IAAA+jB,cADJ,CACyB,IAAIe,CAAJ,CAAkB,IAAlB,CADzB,CAD8B,CAAlC,CAMAnrB,EAAAK,KAAA,CAAa,IAAb,CAAmBG,CAAnB,CAA4B+pB,CAA5B,CAR+D,CAAnE,CAYAlrB,EAAAU,UAAAmrB,UAAAxkB,KAAA,CAA+B,QAAQ,CAACxC,CAAD,CAAQ,CAM3CyvB,QAASA,EAAmB,EAAG,CAC3BjwB,CAAA,CAAWQ,CAAAjE,MAAA,CAAY,CAAZ,CAAA2D,YAAA,EACPoJ,EAAA,CAAStJ,CAAA9C,IAAT,CAAJ,EACIwpB,CAAA3O,OAAA,CAAqB/X,CAAA9C,IAArB,CAAmC8C,CAAA7C,IAAnC,CAHuB,CANY,IACvC6C,CADuC,CAEvC0mB,EAAgBlmB,CAAAkmB,cAFuB,CAGvCwJ,CAHuC,CAIvCC,CASAzJ,EAAJ,GAEIyJ,CAYA,CAZoB10B,CAAA,CAChB+E,CAAAjE,MAAA,CAAY,CAAZ,CADgB,CAEhB,kBAFgB,CAGhB,QAAQ,CAACiH,CAAD,CAAI,CACRkjB,CAAA3O,OAAA,CAAqBvU,CAAAtG,IAArB,CAA4BsG,CAAArG,IAA5B,CADQ,CAHI,CAYpB,CAHA+yB,CAGA,CAHez0B,CAAA,CAAS+E,CAAT,CAAgB,QAAhB,CAA0ByvB,CAA1B,CAGf,CAAAA,CAAA,EAdJ,CAkBAx0B,EAAA,CAAS+E,CAAT,CAAgB,SAAhB,CAA2B4vB,QAAsB,EAAG,CAC5C1J,CAAJ,GACIwJ,CAAA,EACA,CAAAC,CAAA,EAFJ,CADgD,CAApD,CA/B2C,CAA/C,CAwCA30B,EAAAisB,cAAA,CAAkBA,CAt6BT,CAAZ,CAAA,CA46BClsB,CA56BD,CA66BA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAML0N,EAAW1N,CAAA0N,SANN;AAOLC,EAAW3N,CAAA2N,SAPN,CAQLzN,EAAOF,CAAAE,KARF,CASLC,EAAQH,CAAAG,MATH,CAULG,EAAUN,CAAAM,QAVL,CAWLC,EAAOP,CAAAO,KAXF,CAaLsN,EAAS7N,CAAA6N,OAbJ,CAcLoU,EAAOjiB,CAAAiiB,KAdF,CAeL4S,EAAU70B,CAAA60B,QAfL,CAgBL/mB,EAAW9N,CAAA8N,SAhBN,CAiBLgnB,EAAW90B,CAAA80B,SAjBN,CAkBLC,EAAM/0B,CAAA+0B,IAlBD,CAmBLhnB,EAAQ/N,CAAA+N,MAnBH,CAoBLxE,EAAOvJ,CAAAuJ,KApBF,CAqBLyE,EAAQhO,CAAAgO,MArBH,CAuBLpN,EAASZ,CAAAY,OAvBJ,CAwBL6rB,EAAQzsB,CAAAysB,MAxBH,CAyBLnV,EAActX,CAAAsX,YAzBT,CA2BL3W,EAAOX,CAAAW,KA3BF,CA8BLuN,EAActN,CAAAC,UA9BT,CA+BLm0B,EAAa9mB,CAAA6J,KA/BR,CAgCLkd,EAAoB/mB,CAAA3G,YAhCf,CAiCL2tB,EAAwBlnB,CAAAnN,UAAAs0B,iBAmC5Bn1B,EAAAo1B,WAAA,CAAep1B,CAAAq1B,WAAf,CAA8BC,QAAQ,CAAClwB,CAAD,CAAIC,CAAJ,CAAOkwB,CAAP,CAAU,CAAA,IACxCC,EAAiBV,CAAA,CAAS1vB,CAAT,CAAjBowB,EAAgCpwB,CAAAqwB,SADQ,CAExCn0B,EAAUF,SAAA,CAAUo0B,CAAA,CAAiB,CAAjB,CAAqB,CAA/B,CAF8B,CAGxC9gB,EAAgBpT,CAAAD,OAHwB,CAIxC6S,EAAiBlU,CAAA01B,WAAA,EAJuB,CAKxCxc,CALwC,CASxCkM,EAAmB7b,CAAA,CACfjI,CAAAghB,UADe,EACMhhB,CAAAghB,UAAAnb,QADN,CAEf+M,CAAAoO,UAAAnb,QAFe,CAGf,CAAA,CAHe,CATqB,CAcxCwuB,EAAqBvQ,CAAA,CAAmB,CACpClE,YAAa,CAAA,CADuB,CAEpCC,UAAW,CAAA,CAFyB,CAAnB,CAGjB,IAjBoC,CAmBxCyU,EAAc,CAEV9S,OAAQ,CACJ3b,QAAS,CAAA,CADL,CAEJ0uB,OAAQ,CAFJ,CAFE,CAnB0B;AA2BxCC,EAAgB,CACZ/S,OAAQ,CAAA,CADI,CAEZgT,YAAa,CAFD,CAMpBz0B,EAAAP,MAAA,CAAgBg0B,CAAA,CAAItI,CAAA,CAAMnrB,CAAAP,MAAN,EAAuB,EAAvB,CAAJ,CAAgC,QAAQ,CAACi1B,CAAD,CAAe,CACnE,MAAOjoB,EAAA,CAAM,CACLoV,WAAY,CADP,CAELC,WAAY,CAFP,CAGL7hB,QAAS,CAAA,CAHJ,CAIL0Y,MAAO,CACHD,KAAM,IADH,CAJF,CAOLiJ,OAAQ,CACJgT,SAAU,SADN,CAPH,CAULC,cAAe,CAAA,CAVV,CAAN,CAYHhiB,CAAAnT,MAZG,CAaHi1B,CAbG,CAcH,CACI3kB,KAAM,UADV,CAEI8kB,WAAY,IAFhB,CAdG,CAkBHR,CAlBG,CAD4D,CAAvD,CAwBhBr0B,EAAAgI,MAAA,CAAgByrB,CAAA,CAAItI,CAAA,CAAMnrB,CAAAgI,MAAN,EAAuB,EAAvB,CAAJ,CAAgC,QAAQ,CAAC8sB,CAAD,CAAe,CACnEld,CAAA,CAAW3P,CAAA,CAAK6sB,CAAAld,SAAL,CAA4B,CAAA,CAA5B,CACX,OAAOnL,EAAA,CAAM,CACLkV,OAAQ,CACJvW,EAAI,EADA,CADH,CAILwM,SAAUA,CAJL,CAKLgd,cAAe,CAAA,CALV,CAMLjc,MAAO,CACHD,KAAM,IADH,CANF,CAAN,CAUH9F,CAAA5K,MAVG,CAWH8sB,CAXG,CAF4D,CAAvD,CAiBhB90B,EAAAD,OAAA,CAAiB,IAEjBC,EAAA,CAAUyM,CAAA,CAAM,CACR/I,MAAO,CACHqxB,QAAS,CAAA,CADN,CAEHC,UAAW,GAFR,CADC,CAKRhU,UAAW,CACPnb,QAASie,CADF,CALH,CAQRjJ,UAAW,CAEPhV,QAASoC,CAAA,CAAK2K,CAAAiI,UAAAhV,QAAL,CAAuC,CAAA,CAAvC,CAFF,CARH,CAYR+jB,cAAe,CAEX/jB,QAASoC,CAAA,CAAK2K,CAAAgX,cAAA/jB,QAAL;AAA2C,CAAA,CAA3C,CAFE,CAZP,CAgBR8S,MAAO,CACHD,KAAM,IADH,CAhBC,CAmBRpG,QAAS,CACL2iB,OAAQ,CAAA,CADH,CAELC,WAAY,CAAA,CAFP,CAnBD,CAuBRlL,OAAQ,CACJnkB,QAAS,CAAA,CADL,CAvBA,CA2BR8M,YAAa,CACT9E,KAAMymB,CADG,CAETxmB,OAAQwmB,CAFC,CAGTvmB,KAAMumB,CAHG,CAITtmB,WAAYsmB,CAJH,CAKTrmB,UAAWqmB,CALF,CAMTpmB,gBAAiBomB,CANR,CAOTnoB,OAAQqoB,CAPC,CAQTrmB,YAAaqmB,CARJ,CASTpmB,YAAaomB,CATJ,CAUTnmB,KAAMmmB,CAVG,CA3BL,CAAN,CA0CNx0B,CA1CM,CA4CN,CACI8Q,QAAS,CAAA,CADb,CA5CM,CAiDV9Q,EAAAD,OAAA,CAAiBqT,CAEjB,OAAO8gB,EAAA,CACH,IAAIr1B,CAAJ,CAAUiF,CAAV,CAAa9D,CAAb,CAAsBi0B,CAAtB,CADG,CAEH,IAAIp1B,CAAJ,CAAUmB,CAAV,CAAmB+D,CAAnB,CAjIwC,CAsIhD1E,EAAA,CAAKT,CAAAW,UAAL,CAAqB,gBAArB,CAAuC,QAAQ,CAACC,CAAD,CAAU,CAAA,IACjDkE,EAAQ,IAAAA,MADyC,CAEjD1D,EAAU,IAAAA,QAFuC,CAGjDm1B,EAAQzxB,CAAA0xB,YAARD,CAA4BzxB,CAAA0xB,YAA5BD,EAAiD,EAHA,CAKjDE,EAAe,IAAAr1B,QAAA2hB,OACnB,OAAI,KAAAje,MAAA1D,QAAA8Q,QAAJ,EAAgD,OAAhD,GAAkC,IAAA4Y,KAAlC,GACIvkB,CACI,CADEnF,CAAA+X,IACF,CADgB,GAChB,CADsB/X,CAAA6X,OACtB,CAAC,CAAAsd,CAAA,CAAMhwB,CAAN,CAAD,EAAekwB,CAAAxvB,QAFvB,GAG+B,EAOhB,GAPHwvB,CAAAhqB,EAOG;CANHgqB,CAAAhqB,EAMG,CANc,CAMd,EAJoB5J,IAAAA,EAIpB,GAJH4zB,CAAA9c,MAIG,GAHH8c,CAAA9c,MAGG,CAHkB,OAGlB,EADP4c,CAAA,CAAMhwB,CAAN,CACO,CADM,IACN,CAAA,OAVf,EAaO3F,CAAAK,KAAA,CAAa,IAAb,CAAmB,EAAAD,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAAnB,CAnB8C,CAAzD,CAuBAT,EAAA,CAAKT,CAAAW,UAAL,CAAqB,SAArB,CAAgC,QAAQ,CAACC,CAAD,CAAU,CAAA,IAC1CkE,EAAQ,IAAAA,MADkC,CAE1CyB,EAAM,IAAAnF,QAANmF,EAAuB,IAAAnF,QAAA+X,IAAvB5S,CAA0C,GAA1CA,CAAgD,IAAAnF,QAAA6X,OAEhD1S,EAAJ,EAAWzB,CAAA0xB,YAAX,EAAgC1xB,CAAA0xB,YAAA,CAAkBjwB,CAAlB,CAAhC,GAA2D,IAA3D,EACI,OAAOzB,CAAA0xB,YAAA,CAAkBjwB,CAAlB,CAGX,OAAO3F,EAAAK,KAAA,CAAa,IAAb,CAAmBF,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAAnB,CARuC,CAAlD,CAYAT,EAAA,CAAKT,CAAAW,UAAL,CAAqB,iBAArB,CAAwC,QAAQ,CAACC,CAAD,CAAUgL,CAAV,CAAiB8I,CAAjB,CAA4BgiB,CAA5B,CAAiCC,CAAjC,CAAwCC,CAAxC,CAAyD,CAAA,IACjGryB,EAAO,IAD0F,CAEjGpD,EAAU,IAAA01B,SAAA,EAAkB11B,CAAA,IAAAA,OAAlB,CAAgC,IAAA21B,aAAA31B,OAAhC,CAA2D,IAAAA,OAF4B,CAGjG2D,EAAQP,CAAAO,MAHyF,CAIjGgR,EAAWhR,CAAAgR,SAJsF,CAKjGihB;AAAWxyB,CAAA+b,KALsF,CAMjG0W,EAAUzyB,CAAA4U,IANuF,CAOjG8d,CAPiG,CAQjGC,CARiG,CASjGC,CATiG,CAUjGC,CAViG,CAWjGC,EAAS,EAXwF,CAYjGxM,EAAO,EAZ0F,CAcjGyM,CAdiG,CAejGC,CA0BJ,IAAkB,OAAlB,GAAIhzB,CAAAumB,KAAJ,EAA2C,OAA3C,GAA6BvmB,CAAAumB,KAA7B,CACI,MAAOlqB,EAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAIX2pB,EAAA,CA1BA2M,QAAgB,CAAC1M,CAAD,CAAO,CAAA,IACf2M,EAAqB,OAAT,GAAA3M,CAAA,CAAmB,OAAnB,CAA6B,OACzC4M,EAAAA,CAAMnzB,CAAAnD,QAAA,CAAaq2B,CAAb,CAGV,OAAI7pB,EAAA,CAAS8pB,CAAT,CAAJ,CACW,CAAC5yB,CAAA,CAAM2yB,CAAN,CAAA,CAAiBC,CAAjB,CAAD,CADX,CAKI9C,CAAA,CAAS8C,CAAT,CAAJ,CACW,CAAC5yB,CAAAmT,IAAA,CAAUyf,CAAV,CAAD,CADX,CAKO7C,CAAA,CAAI1zB,CAAJ,CAAY,QAAQ,CAAC8nB,CAAD,CAAI,CAC3B,MAAOA,EAAA,CAAEwO,CAAF,CADoB,CAAxB,CAfY,CA0BhB,CAAQlzB,CAAAumB,KAAR,CAIPzqB,EAAA,CADSkE,CAAAI,QAAAgzB,CAAe7yB,CAAAsE,MAAfuuB,CAA6B7yB,CAAAjE,MACtC,CAAY,QAAQ,CAAC+2B,CAAD,CAAI,CACpB,GAAIx3B,CAAA,CAAQw3B,CAAAx2B,QAAAqhB,GAAR,CAAA,CAA+D,EAA/D,GAAwBmV,CAAAx2B,QAAAqhB,GAAAoV,QAAA,CAAqB,WAArB,CAAxB,CAAmE,CAAvE,CAA6E,CAAA,IACrE3yB,EAAK0yB,CAAAjzB,QAAA,CAAY,OAAZ,CAAsB,OAD0C,CAErEmzB,EAAO13B,CAAA,CAAQw3B,CAAAx2B,QAAA,CAAU8D,CAAV,CAAR,CAAA,CAAwBJ,CAAA,CAAMI,CAAN,CAAA,CAAS0yB,CAAAx2B,QAAA,CAAU8D,CAAV,CAAT,CAAxB,CAAiDJ,CAAA,CAAMI,CAAN,CAAA,CAAS,CAAT,CAExDX,EAAJ,GAAauzB,CAAb,EACIjN,CAAAvjB,KAAA,CAAUswB,CAAV,CALqE,CADzD,CAAxB,CAeAN,EAAA,CAAazM,CAAAjoB,OAAA,CAAc,EAAd,CAAmB,CAAC2B,CAAAI,QAAA,CAAeG,CAAAsE,MAAA,CAAY,CAAZ,CAAf,CAAgCtE,CAAAjE,MAAA,CAAY,CAAZ,CAAjC,CAChCR;CAAA,CAAKwqB,CAAL,CAAW,QAAQ,CAACkN,CAAD,CAAQ,CAEa,EADpC,GACIpD,CAAA,CAAQoD,CAAR,CAAeT,CAAf,CADJ,EAGKx3B,CAAAk4B,KAAA,CAAOV,CAAP,CAAmB,QAAQ,CAACW,CAAD,CAAS,CACjC,MAAOA,EAAA5mB,IAAP,GAAsB0mB,CAAA1mB,IAAtB,EAAmC4mB,CAAA/zB,IAAnC,EAAiD6zB,CAAA7zB,IADhB,CAApC,CAHL,EAOIozB,CAAAhwB,KAAA,CAAgBywB,CAAhB,CARmB,CAA3B,CAYAR,EAAA,CAAWluB,CAAA,CAAKutB,CAAL,CAAsBryB,CAAAf,UAAA,CAAeoI,CAAf,CAAsB,IAAtB,CAA4B,IAA5B,CAAkC8qB,CAAlC,CAAtB,CACP9oB,EAAA,CAAS2pB,CAAT,CAAJ,GACQhzB,CAAAwc,MAAJ,CACI1gB,CAAA,CAAKi3B,CAAL,CAAiB,QAAQ,CAACS,CAAD,CAAQ,CAC7B,IAAIG,CAEJhB,EAAA,CAAKa,CAAA1mB,IACL+lB,EAAA,CAAKF,CAAL,CAAUa,CAAA7zB,IACV+yB,EAAA,CAAKE,CAAL,CAAUxzB,IAAAuS,MAAA,CAAWqhB,CAAX,CAAsBhzB,CAAA4zB,OAAtB,CAEV,IAAIlB,CAAJ,CAASF,CAAT,EAAqBE,CAArB,CAA0BF,CAA1B,CAAqCxyB,CAAA8R,MAArC,CACQsgB,CAAJ,CACIM,CADJ,CACSE,CADT,CACcxzB,IAAAnC,IAAA,CAASmC,IAAAlC,IAAA,CAASs1B,CAAT,CAAmBE,CAAnB,CAAT,CAAiCF,CAAjC,CAA4CxyB,CAAA8R,MAA5C,CADd,CAGI6hB,CAHJ,CAGW,CAAA,CAGVA,EAAL,EACIb,CAAA/vB,KAAA,CAAY,GAAZ,CAAiB2vB,CAAjB,CAAqBC,CAArB,CAAyB,GAAzB,CAA8BC,CAA9B,CAAkCC,CAAlC,CAfyB,CAAjC,CADJ,CAoBI/2B,CAAA,CAAKi3B,CAAL,CAAiB,QAAQ,CAACS,CAAD,CAAQ,CAC7B,IAAIG,CAEJjB,EAAA,CAAKc,CAAA1mB,IACL8lB,EAAA,CAAKF,CAAL,CAAUc,CAAA7zB,IACVgzB,EAAA,CAAKE,CAAL,CAAUzzB,IAAAuS,MAAA,CAAW8gB,CAAX,CAAqBzyB,CAAA0U,OAArB,CAAmCse,CAAnC,CAEV,IAAIL,CAAJ,CAASF,CAAT,EAAoBE,CAApB,CAAyBF,CAAzB,CAAmCzyB,CAAA0U,OAAnC,CACQ0d,CAAJ,CACIO,CADJ,CACSE,CADT,CACczzB,IAAAnC,IAAA,CAASmC,IAAAlC,IAAA,CAASu1B,CAAT,CAAkBE,CAAlB,CAAT,CAAgC3yB,CAAA4U,IAAhC,CAA2C5U,CAAA0U,OAA3C,CADd,CAGIif,CAHJ,CAGW,CAAA,CAGVA,EAAL,EACIb,CAAA/vB,KAAA,CAAY,GAAZ,CAAiB2vB,CAAjB,CAAqBC,CAArB,CAAyB,GAAzB,CAA8BC,CAA9B,CAAkCC,CAAlC,CAfyB,CAAjC,CArBR,CAyCA,OAAuB,EAAhB,CAAAC,CAAAz0B,OAAA,CACHkT,CAAAsiB,cAAA,CAAuBf,CAAvB;AAA+B3iB,CAA/B,EAA4C,CAA5C,CADG,CAEH,IA1HiG,CAAzG,CA8HA1U,EAAAW,UAAA03B,gBAAA,CAAiCC,QAAQ,CAACzuB,CAAD,CAAOC,CAAP,CAAW,CAC5CyuB,CAAAA,CAAS,IAAAC,gBAAA,CAAqB1uB,CAArB,CAAyB,IAAzB,CAA+B,IAA/B,CAAqC,CAAA,CAArC,CACT2L,EAAAA,CAAO,IAAA+iB,gBAAA,CAAqB3uB,CAArB,CAA2B,IAA3B,CAAiC,IAAjC,CAAuC,CAAA,CAAvC,CAFqC,KAG5CwtB,EAAS,EAHmC,CAI5Cl0B,CAEJ,IAAIsS,CAAJ,EAAY8iB,CAAZ,CACI,GAAI9iB,CAAAgjB,SAAA,EAAJ,GAAwBF,CAAAE,SAAA,EAAxB,CAEIpB,CACA,CADS5hB,CACT,CAAA4hB,CAAAqB,KAAA,CAAc,CAAA,CAHlB,KAMI,KAAKv1B,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBsS,CAAA7S,OAAhB,CAA6BO,CAA7B,EAAkC,CAAlC,CACIk0B,CAAA/vB,KAAA,CACI,GADJ,CACSmO,CAAA,CAAKtS,CAAL,CAAS,CAAT,CADT,CACsBsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CADtB,CAEI,GAFJ,CAESsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CAFT,CAEsBsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CAFtB,CAGIo1B,CAAA,CAAOp1B,CAAP,CAAW,CAAX,CAHJ,CAGmBo1B,CAAA,CAAOp1B,CAAP,CAAW,CAAX,CAHnB,CAIIo1B,CAAA,CAAOp1B,CAAP,CAAW,CAAX,CAJJ,CAImBo1B,CAAA,CAAOp1B,CAAP,CAAW,CAAX,CAJnB,CAKI,GALJ,CARZ,KAkBIk0B,EAAA,CAAS,IAGb,OAAOA,EA3ByC,CA+BpDjgB,EAAAzW,UAAAy3B,cAAA,CAAsCO,QAAQ,CAACtsB,CAAD,CAASgK,CAAT,CAAgB,CAG1D,IAAIlT,CACJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBkJ,CAAAzJ,OAAhB,CAAmCO,CAAnC,EAAuC,CAAvC,CACQkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAIJ,GAJsBkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAItB,GAFIkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAEJ,CAFoBkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAEpB,CAFoCQ,IAAAuS,MAAA,CAAW7J,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAX,CAEpC,CAFiEkT,CAEjE,CAFyE,CAEzE,CAF6E,CAE7E,EAAIhK,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAJ,GAAsBkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAtB,GACIkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CADJ,CACoBkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CADpB,CACoCQ,IAAAuS,MAAA,CAAW7J,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAX,CADpC;AACiEkT,CADjE,CACyE,CADzE,CAC6E,CAD7E,CAIJ,OAAOhK,EAbmD,CAkB9D5L,EAAA,CAAKT,CAAAW,UAAL,CAAqB,eAArB,CAAsC,QAAQ,CAACC,CAAD,CAAUuC,CAAV,CAAa,CAEvDvC,CAAAK,KAAA,CAAa,IAAb,CAAmBkC,CAAnB,CAEI,KAAAy1B,WAAJ,GACI,IAAAA,WADJ,CACsB,IAAAA,WAAAra,KAAA,EADtB,CAJuD,CAA3D,CAUA9d,EAAA,CAAKT,CAAAW,UAAL,CAAqB,eAArB,CAAsC,QAAQ,CAACC,CAAD,CAAUkH,CAAV,CAAaS,CAAb,CAAoB,CAG9D,IAAA,CAAA,CAAA,CAAA3H,EAAAK,KAAA,CAAa,IAAb,CAAmB6G,CAAnB,CAAsBS,CAAtB,CAGA,IAAKnI,CAAA,CAAQ,IAAA4iB,UAAAxJ,MAAR,CAAL,EAAuC,IAAAwJ,UAAAxJ,MAAAvS,QAAvC,EAAwE,IAAA4xB,MAAxE,CAAA,CAII/zB,CAAAA,CAAQ,IAAAA,MAVkD,KAW1D1D,EAAU,IAAAA,QAAA4hB,UAAAxJ,MAXgD,CAY1DuH,EAAQ,IAAAA,MACR/H,EAAAA,CAAW,IAAAA,SACXsH,EAAAA,CAAO,IAAAA,KAdmD,KAe1DnH,EAAM,IAAAA,IAfoD,CAgB1Dyf,EAAa,IAAAA,WAhB6C,CAiB1DE,CAjB0D,CAoB1DC,EAAe33B,CAAAuM,OApB2C,CAqB1DqrB,EAAe,EArB2C,CAwB1DC,EAA2C,QAA3CA,GAAa,IAAA73B,QAAA83B,aAxB6C,CAyB1DC,EAA+B,CAAA,CAA/BA,GAAO,IAAAnW,UAAAmW,KAzBmD,CA2B1DjgB,EAAS,CAGRpR,EAAL,GACIA,CADJ,CACQ,IAAA+wB,MADR;AACsB,IAAAA,MAAA/wB,EADtB,CAIA6R,EAAA,CAASoH,CAAA,CAAQ,QAAR,CAAmB/H,CAAA,CACH,OAApB,GAAA,IAAAogB,WAAA,CAA8B,OAA9B,CAAwC,MADjB,CAEH,MAApB,GAAA,IAAAA,WAAA,CAA6B,MAA7B,CAAsC,QAGtCR,EAAL,GACIA,CADJ,CACiB,IAAAA,WADjB,CACmC9zB,CAAAgR,SAAA0D,MAAA,CAAqB,IAArB,CAA2B,IAA3B,CAAiC,IAAjC,CAAuCpY,CAAAmW,MAAvC,EAAwD,SAAxD,CAAAd,SAAA,CACjB,4BADiB,EAEtB,IAAAtV,OAAA,CAAY,CAAZ,CAFsB,EAEJ,oBAFI,CAEmB,IAAAA,OAAA,CAAY,CAAZ,CAAAk4B,WAFnB,EAAA3f,KAAA,CAGrB,CACFC,MAAOvY,CAAAuY,MAAPA,EAAwBA,CADtB,CAEF8S,QAASpjB,CAAA,CAAKjI,CAAAqrB,QAAL,CAAsB,CAAtB,CAFP,CAGF5P,EAAGxT,CAAA,CAAKjI,CAAAk4B,aAAL,CAA2B,CAA3B,CAHD,CAIFtd,OAAQ,CAJN,CAHqB,CAAAjG,IAAA,CAStB,IAAAwjB,WATsB,CADnC,CAeIxY,EAAJ,EACI+X,CACO,CADAK,CAAA,CAAO5wB,CAAA4N,MAAP,CAAqBmK,CAArB,CAA4BxY,CAAAC,OAC5B,CAAAoR,CAAA,EAAOH,CAAA,CAAW,CAAX,CAAe,IAAAC,OAFjC,GAII6f,CACA,CADO9f,CAAA,CAAW,IAAA3C,MAAX,CAAwBiK,CAAxB,CAA+B,CACtC,CAAAkZ,CAAA,CAAOL,CAAA,CAAO5wB,CAAAsN,MAAP,CAAqBsD,CAArB,CAA2BrR,CAAA8X,OALtC,CAQKmZ,EAAL,EAAsB33B,CAAAq4B,UAAtB,GACQ,IAAAC,eAGJ;CAFIV,CAEJ,CAFmB,WAEnB,EAAAD,CAAA,CAAe,QAAf,EAA2BC,CAAA,CAAe,GAAf,CAAqBA,CAArB,CAAoC,EAA/D,EAAqE,GAJzE,CAQAptB,EAAA,CAAQutB,CAAA,CAAO5wB,CAAA,CAAM,IAAA5D,QAAA,CAAe,GAAf,CAAqB,GAA3B,CAAP,CAAyC,IAAA4gB,QAAA,CAAaxE,CAAA,CAAQjZ,CAAAC,OAAR,CAAmBD,CAAA8X,OAAhC,CACjDgZ,EAAAlf,KAAA,CAAgB,CACZI,KAAMif,CAAA,CAAeprB,CAAA,CAAOorB,CAAP,CAAqB,CACtCntB,MAAOA,CAD+B,CAArB,CAAf,CAEDxK,CAAAq4B,UAAAx4B,KAAA,CAAuB,IAAvB,CAA6B2K,CAA7B,CAHO,CAIZa,EAAGqsB,CAJS,CAKZtsB,EAAGgtB,CALS,CAMZ5U,WAAY,SANA,CAAhB,CASA+U,EAAA,CAAWf,CAAAzF,QAAA,EAGX,IAAIpS,CAAJ,CACI,IAAKkY,CAAL,EAAoBjgB,CAAAA,CAApB,EAAmCigB,CAAAA,CAAnC,EAAiDjgB,CAAjD,CACIwgB,CAAA,CAAOZ,CAAApsB,EAAP,CAAsBmtB,CAAA1gB,OAD1B,CADJ,IAKIugB,EAAA,CAAOZ,CAAApsB,EAAP,CAAuBmtB,CAAA1gB,OAAvB,CAAyC,CAIzC8H,EAAJ,EACI,CAAA,CACUT,CADV,CACiBqZ,CAAAltB,EADjB,CAAA,CAAA,CAEW6T,CAFX,CAEkB,IAAAjK,MAFlB,CAE+BsjB,CAAAltB,EAHnC,GAMI,CAAA,CAC8B,MAApB,GAAA,IAAA2sB,WAAA,CAA6B9Y,CAA7B,CAAoC,CAD9C,CAAA,CAAA,CAE+B,OAApB,GAAA,IAAA8Y,WAAA,CAA8B9Y,CAA9B,CAAqC,IAAAjK,MAArC,CAAkDvR,CAAAwmB,WARjE,CAaIsN,EAAAnb,WAAJ,CAA4B6C,CAA5B,GACIpH,CADJ,CACaoH,CADb,CAC0BsY,CAAAnb,WAD1B,CAIImb,EAAAnb,WAAJ,CAA4Bkc,CAAAtjB,MAA5B,EAA8CujB,CAA9C,GACI1gB,CADJ,CACa,EAAE0f,CAAAnb,WAAF,CAA0Bkc,CAAAtjB,MAA1B,CAA2CujB,CAA3C,CADb,CAKAhB,EAAAlf,KAAA,CAAgB,CACZjN,EAAGqsB,CAAHrsB,CAAUyM,CADE,CAEZ1M,EAAGgtB,CAFS,CAIZngB,QAAS0H,CAAA;AAAQ+X,CAAR,CAAgB,IAAA9f,SAAA,CAAgB,CAAhB,CAAoBlU,CAAAwmB,WAJjC,CAKZhS,QAASyH,CAAA,CAAS,IAAA/H,SAAA,CAAgBlU,CAAAgU,YAAhB,CAAoC,CAA7C,CAAkD0gB,CAAlD,CAAyDG,CAAA1gB,OAAzD,CAA2E,CALxE,CAAhB,CA5GA,CAN8D,CAAlE,CAoIAjL,EAAA6J,KAAA,CAAmBgiB,QAAQ,EAAG,CAG1B/E,CAAAh0B,MAAA,CAAiB,IAAjB,CAAuBI,SAAvB,CAGA,KAAA44B,WAAA,CAAgB,IAAA14B,QAAAmhB,QAAhB,CAN0B,CAsB9BvU,EAAA8rB,WAAA,CAAyBC,QAAQ,CAACxX,CAAD,CAAU,CAGvC,IAAAvN,YAAA,CAAgC,OAAb,GAACuN,CAAD,EAAoC,SAApC,GAAwBA,CAAxB,CAAiD,QAAQ,CAAC3W,CAAD,CAAQrD,CAAR,CAAe,CACvF,IAAIyxB,EAAe,IAAAA,aAEnB,IAAcn3B,IAAAA,EAAd,GAAI+I,CAAJ,EAA4C/I,IAAAA,EAA5C,GAA2Bm3B,CAA3B,CAiBI,MAbIpuB,EAaGA,CAdS,OAAhB,GAAI2W,CAAJ,CACI3W,CADJ,CACaouB,CADb,CAKmBpuB,CALnB,CAK2BouB,CAL3B,CAKY,GALZ,EAMsC,GAA7B,GAAA,IAAA54B,QAAA64B,YAAA,CAAmC,CAAnC,CAAuC,GANhD,CAcOruB,CAJHrD,CAIGqD,GAHHrD,CAAA+W,OAGG1T,CAHYA,CAGZA,EAAAA,CApB4E,CAAxE,CAsBf,IAGJ,KAAApB,YAAA+X,QAAA,CAA2BA,CAGvB,KAAAzd,MAAAo1B,YAAJ,GACI,IAAAznB,QADJ,CACmB,CAAA,CADnB,CA/BuC,CAyC3CzE,EAAA3G,YAAA,CAA0ByK,QAAQ,EAAG,CAAA,IAE7B3O,CAF6B,CAG7Bg3B;AAAY,EAHiB,CAI7Bl1B,CAJ6B,CAK7BqN,CAL6B,CAM7B1P,CAN6B,CAO7Bo3B,CAGJjF,EAAAj0B,MAAA,CAAwB,IAAxB,CAA8BI,SAA9B,CAEA,IAXaC,IAWTN,MAAJ,EAXaM,IAWOmR,eAApB,CAkBI,IAfArN,CAeK,CA7BI9D,IAcQ8D,eAeZ,CAdLqN,CAcK,CA7BInR,IAeQmR,eAcZ,CAbL1P,CAaK,CAbI0P,CAAA1P,OAaJ,CA7BIzB,IAoBLmI,cASC,GAPD6wB,CACA,CADWxF,CAAA,CAAQ,OAAR,CAtBNxzB,IAsBuBmI,cAAjB,CACX,CAAkB,EAAlB,GAAI6wB,CAAJ,GACIA,CADJ,CACexF,CAAA,CAxBVxzB,IAwBkB2T,YAAR,EAA8B,GAA9B,CAxBV3T,IAwB6CmI,cAAnC,CADf,CAMC,EAAAnG,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgBP,CAAhB,CAAyB,CAAzB,CAA4BO,CAAA,EAA5B,CAII,GAHA62B,CAGI,CAHW1nB,CAAA,CAAenP,CAAf,CAAA,EAAiC,EAAjC,CAAqBg3B,CAArB,CACX7nB,CAAA,CAAenP,CAAf,CAAA,CAAkBg3B,CAAlB,CADW,CAEX7nB,CAAA,CAAenP,CAAf,CACA,CAAAyK,CAAA,CAASosB,CAAT,CAAA,EAA0B/0B,CAAA,CAAe9B,CAAf,CAAmB,CAAnB,CAA1B,EAjCChC,IAiCkDN,MAAAW,IAAnD,EAAwF,CAAxF,GAAuEw4B,CAA3E,CAA+F,CAjC1F74B,IAkCD64B,aAAA,CAAsBA,CACtB,MAF2F,CAlCtE,CA6CrCv5B,EAAA,CAAKuN,CAAL,CAAkB,aAAlB,CAAiC,QAAQ,CAACpN,CAAD,CAAU,CAC/C,IAAI0D,CAEJ1D,EAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAEI,KAAA8T,YAAJ,GACI1Q,CAEA,CAFW,CAAC,IAAA0Q,YAAA,CAAiB,IAAApO,QAAjB,CAAD,CAAiC,IAAAoO,YAAA,CAAiB,IAAAnO,QAAjB,CAAjC,CAEX;AADA,IAAAD,QACA,CADe6G,CAAA,CAASnJ,CAAT,CACf,CAAA,IAAAuC,QAAA,CAAe2G,CAAA,CAASlJ,CAAT,CAHnB,CAL+C,CAAnD,CA+BAtE,EAAAW,UAAAm5B,WAAA,CAA4BM,QAAQ,CAAC7X,CAAD,CAAUtX,CAAV,CAAkB,CAC7C,IAAAtG,QAAL,GACItE,CAAA,CAAK,IAAAc,OAAL,CAAkB,QAAQ,CAACA,CAAD,CAAS,CAC/BA,CAAA24B,WAAA,CAAkBvX,CAAlB,CAD+B,CAAnC,CAGA,CAAIlZ,CAAA,CAAK4B,CAAL,CAAa,CAAA,CAAb,CAAJ,EACI,IAAAnG,MAAAmG,OAAA,EALR,CADkD,CAetD6C,EAAAnN,UAAAs0B,iBAAA,CAAmCoF,QAAQ,CAAC1lB,CAAD,CAAc,CAGrDA,CAAA,CAAcA,CAAA2lB,QAAA,CACV,gBADU,EAEM,CAAf,CAJO/xB,IAIP+W,OAAA,CAAmB,GAAnB,CAAyB,EAFhB,EAGVxf,CAAAy6B,aAAA,CALQhyB,IAKO+W,OAAf,CAA6BjW,CAAA,CALrBd,IAK0BpH,OAAAmS,eAAAknB,eAAL,CAAiD,CAAjD,CAA7B,CAHU,CAMd,OAAOxF,EAAAl0B,MAAA,CAA4B,IAA5B,CAAkC,CAAC6T,CAAD,CAAlC,CAT8C,CAsBzDlU,EAAA,CAAKC,CAAAC,UAAL,CAAuB,QAAvB,CAAiC,QAAQ,CAACC,CAAD,CAAU,CAGzC,IAAAkE,MAAA21B,KAAN,EAAyB,IAAA31B,MAAA21B,KAAA,EAAzB,EACK,IAAA31B,MAAA41B,MADL,EAEI75B,CAAA,IAAAA,MAFJ,EAGK,IAAAA,MAAA85B,SAHL,GAOSC,CAAA,IAAAA,QAAL,EAAqB,IAAAjkB,QAArB;CACI,IAAAikB,QAEA,CAFe/sB,CAAA,CAAM,IAAA/I,MAAA81B,QAAN,CAEf,CADA,IAAAA,QAAAvkB,MACA,CADqB,IAAAxV,MAAAqD,IACrB,CAAA,IAAA02B,QAAA3hB,OAAA,CAAsB,IAAA7P,MAAAlF,IAH1B,EAMW,IAAAY,MAAA,CAAW,IAAA+1B,cAAX,CAAJ,CACH,IAAA/1B,MAAA,CAAW,IAAA+1B,cAAX,CAAAnhB,KAAA,CAAoC,CAChCrD,MAAO,IAAAxV,MAAAqD,IADyB,CAEhC+U,OAAQ,IAAA7P,MAAAlF,IAFwB,CAApC,CADG,CAMI,IAAA02B,QANJ,GAOH,IAAAA,QAAAvkB,MACA,CADqB,IAAAxV,MAAAqD,IACrB,CAAA,IAAA02B,QAAA3hB,OAAA,CAAsB,IAAA7P,MAAAlF,IARnB,CAbX,CAwBAtD,EAAAK,KAAA,CAAa,IAAb,CA3B+C,CAAnD,CA8BAR,EAAA,CAAKR,CAAAU,UAAL,CAAsB,mBAAtB,CAA2C,QAAQ,CAACC,CAAD,CAAU,CACzD,IAAIyL,EAASzL,CAAAK,KAAA,CAAa,IAAb,CAEbZ,EAAA,CAAK,IAAAc,OAAL,CAAkB,QAAQ,CAAC25B,CAAD,CAAQ,CAE1BA,CAAA3oB,eAAJ,GACI9F,CADJ,CACaA,CAAAtJ,OAAA,CAAcgf,CAAA,CAAK+Y,CAAAzuB,OAAL,EAAqB,EAArB,CAAyB,QAAQ,CAAC9D,CAAD,CAAQ,CAC5D,MAAOA,EAAAylB,SADqD,CAAzC,CAAd,CADb,CAF8B,CAAlC,CAQA,OAAO3hB,EAXkD,CAA7D,CAcA5L;CAAA,CAAKR,CAAAU,UAAL,CAAsB,QAAtB,CAAgC,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB,CAInD,WAAJ,EAAmBA,EAAnB,EAA8B,IAAAghB,UAA9B,GACIvU,CAAA,CAAM,CAAA,CAAN,CAAY,IAAAzM,QAAA6a,UAAZ,CAAoC7a,CAAA6a,UAApC,CAEA,CADA,IAAAmG,UAAA7N,OAAA,CAAsB,EAAtB,CAA0B,CAAA,CAA1B,CACA,CAAA,OAAOnT,CAAA6a,UAHX,CAMA,OAAOrb,EAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAVgD,CAA3D,CAtwBS,CAAZ,CAAA,CAmxBCrB,CAnxBD,CA54KkB,CANtB;",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","addEvent","Axis","Chart","css","dateFormat","defined","each","extend","noop","timeUnits","wrap","Series","prototype","proceed","xAxis","apply","Array","slice","call","arguments","series","options","ordinal","ordinalIndex","normalizedInterval","min","max","startOfWeek","positions","closestDistance","findHigherRanks","start","end","segmentPositions","higherRanks","hasCrossedHigherRank","posLength","outsideMax","groupPositions","lastGroupPosition","Number","MAX_VALUE","tickPixelIntervalOption","tickPixelInterval","breaks","length","undefined","shift","concat","info","unitRange","hour","i","translatedArr","lastTranslated","distances","translated","translate","sort","medianDistance","Math","floor","distance","abs","itemToRemove","splice","beforeSetTickPositions","len","ordinalPositions","useOrdinal","dist","extremes","axis","getExtremes","maxIndex","hasBreaks","isXAxis","isOrdinal","ignoreHiddenSeries","chart","visible","takeOrdinalPosition","processedXData","a","b","keepOrdinalPadding","minIndex","ordinal2lin","ordinalSlope","slope","ordinalOffset","groupIntervalFactor","val2lin","val","toIndex","ordinalLength","ret","lin2val","fromIndex","linearEquivalentLeft","linearEquivalentRight","getExtendedPositions","grouping","currentDataGrouping","key","count","unitName","fakeAxis","fakeSeries","dataMin","dataMax","xData","destroyGroupedData","dataGrouping","enabled","forced","approximation","units","processData","push","getGroupIntervalFactor","xMin","xMax","median","postProcessTickInterval","tickInterval","closestPointRange","e","chartX","runBase","mouseDownX","hoverPoints","movedUnits","translationSlope","extendedAxis","searchAxisRight","point","setState","searchAxisLeft","fixedRange","trimmedRange","toFixedRange","setExtremes","trigger","container","cursor","stripArguments","drawPointsWrapped","drawBreaks","yAxis","pick","pointArrayMap","isArray","fireEvent","isInBreak","brk","repeat","Infinity","from","to","test","inclusive","isInAnyBreak","testKeep","inbrk","keep","showPoints","tickPositions","newPositions","userOptions","isBroken","axis.val2lin","nval","breakArray","axis.lin2val","axis.setExtremes","newMin","newMax","redraw","animation","eventArguments","setAxisTranslation","axis.setAxisTranslation","saveOld","breakArrayT","inBrk","userMin","userMax","pointRangePadding","value","move","size","breakSize","unitLength","staticScale","transA","minPixelPadding","minPointOffset","points","connectNulls","nullGap","y","x","data","destroyElements","H.Series.prototype.drawBreaks","keys","threshold","eventName","toUpperCase","gappedPath","H.Series.prototype.gappedPath","gapSize","isNull","getGraphPath","seriesTypes","column","arrayMax","arrayMin","defaultPlotOptions","format","isNumber","merge","Point","Tooltip","seriesProto","baseProcessData","baseGeneratePoints","generatePoints","baseDestroy","destroy","commonOptions","groupPixelWidth","dateTimeLabelFormats","millisecond","second","minute","day","week","month","year","specificOptions","line","spline","area","areaspline","arearange","areasplinerange","columnrange","candlestick","ohlc","defaultDataGroupingUnits","approximations","sum","arr","hasNulls","average","averages","open","high","low","close","range","groupData","seriesProto.groupData","yData","dataOptions","groupedXData","groupedYData","groupMap","dataLength","pointX","groupedY","handleYData","values","approximationFn","type","pointArrayMapLength","pos","valuesLen","dataGroupInfo","j","index","cropStart","pointClass","applyOptions","pointY","seriesProto.processData","dataGroupingOptions","groupingEnabled","allowDG","isStock","hasGroupedData","forceCrop","hasProcessed","processedYData","plotSizeX","getGroupPixelWidth","isDirty","interval","getTimeTicks","normalizeTimeTickInterval","groupedData","smoothed","totalRange","seriesProto.destroyGroupedData","seriesProto.generatePoints","dataGroup","error","labelConfig","isFooter","tooltipOptions","xDateFormat","xDateFormatEnd","labelFormats","tooltip","getXDateFormat","formattedKey","seriesProto.destroy","itemOptions","plotOptions","defaultOptions","requireSorting","Axis.prototype.getGroupPixelWidth","doGrouping","dgOptions","setDataGrouping","Axis.prototype.setDataGrouping","update","seriesOptions","seriesType","lineWidth","pointFormat","directTouch","toYData","pointValKey","hasModifyValue","modifyValue","toPixels","tooltipPos","plotHigh","plotTop","drawPoints","plotOpen","crispCorr","halfWidth","path","graphic","crispX","isNew","plotY","renderer","add","group","strokeWidth","round","plotX","shapeArgs","width","yBottom","plotClose","d","addClass","getClassName","animate","states","hover","topBox","hasBottomWhisker","bottomBox","hasTopWhisker","TrackerMixin","symbols","SVGRenderer","stableSort","pointRange","shape","stackDistance","textAlign","sorted","noSharedTooltip","trackerGroups","init","lastPoint","optionsOnSeries","onSeries","get","onKey","step","onData","xAxisExt","xOffset","leftPoint","lastX","rightPoint","pointXOffset","barW","substr","stackIndex","chartHeight","bottom","opposite","height","offset","top","optionsY","anchorX","anchorY","outsideRight","label","useHTML","attr","align","markerGroup","div","text","title","inverted","plotLeft","SVGElement","on","drawTracker","drawTrackerPoint","element","raised","_y","otherPoint","buildKDTree","setClip","flag","symbols.flag","w","h","labelTopOrBottomY","Scrollbar","correctFloat","destroyObjectProperties","doc","hasTouch","isTouchDevice","removeEvent","swapXY","defaultScrollbarOptions","barBorderRadius","buttonBorderRadius","liveRedraw","svg","margin","minWidth","zIndex","scrollbar","vertical","temp","scrollbarButtons","render","initEvents","addEvents","scroller","g","translateY","track","rect","r","trackBorderRadius","trackBorderWidth","scrollbarGroup","scrollbarRifles","scrollbarStrokeWidth","drawScrollbarButton","position","yOffset","method","rendered","barWidth","translateX","tempElem","crisp","setRange","fullWidth","fromPX","newSize","hasDragged","ceil","calculatedWidth","newPos","newRiflesPos","scrollbarTop","scrollbarLeft","hide","show","showFull","mouseMoveHandler","scroller.mouseMoveHandler","normalizedEvent","pointer","normalize","direction","initPositions","grabbedCenter","touches","chartPosition","cursorToScrollbarPosition","scrollPosition","change","updatePosition","DOMType","DOMEvent","mouseUpHandler","scroller.mouseUpHandler","chartY","mouseDownHandler","scroller.mouseDownHandler","mousePosition","buttonToMinClick","scroller.buttonToMinClick","buttonToMaxClick","scroller.buttonToMaxClick","trackClick","scroller.trackClick","left","minWidthDifference","buttonsOrder","buttons","bar","_events","args","removeEvents","prop","horiz","startOnTick","endOnTick","unitedMin","unitedMax","reversed","scrollMin","scrollMax","titleOffset","scrollbarsOffsets","axisTitleMargin","offsetsIndex","isNaN","axisOffset","Navigator","erase","grep","isObject","numExt","extreme","numbers","navigator","maskInside","defaultSeriesType","compare","dataLabels","id","className","lineColor","marker","shadow","tickLength","labels","crosshair","minPadding","maxPadding","tickWidth","drawHandle","verb","handles","parseInt","getHandlePath","drawOutline","zoomedMin","zoomedMax","navigatorOptions","outlineWidth","outline","halfOutline","outlineCorrection","outlineHeight","scrollbarHeight","navigatorSize","navigatorTop","verticalMin","drawMasks","navigatorHeight","shades","shade","renderElements","navigatorGroup","visibility","hasMask","pxMin","pxMax","scrollbarXAxis","fake","navigatorEnabled","minRange","plotWidth","plotHeight","navigatorWidth","toValue","grabbedLeft","grabbedRight","fixedWidth","addMouseEvents","eventsToUnbind","onMouseMove","onMouseUp","getPartsEvents","modifyNavigatorAxisExtremes","events","name","navigatorItem","shadesMousedown","navigatorPosition","fixedMax","dragOffset","getUnionExtremes","ext","handlesMousedown","baseXAxis","reverse","otherHandlePos","fixedExtreme","pageX","setTimeout","fixedMin","triggerOp","unbind","removeBaseSeriesEvents","baseSeries","adaptToUpdatedData","updatedDataHandler","modifyBaseAxisExtremes","chartOptions","scrollbarOptions","scrollbarEnabled","setBaseSeries","xAxisIndex","yAxisIndex","baseXaxis","extraMargin","isDirtyBox","isX","zoomEnabled","offsets","alignTicks","addBaseSeries","scrollTrackWidth","valueRange","addBaseSeriesEvents","addChartEvents","returnFalseOnNoBaseSeries","baseAxis","navAxis","navAxisOptions","baseAxisOptions","baseSeriesOptions","s","showInNavigator","navigatorSeries","baseOptions","mergedNavSeriesOptions","chartNavigatorOptions","baseNavigatorOptions","navSeriesMixin","enableMouseTracking","padXAxis","showInLegend","stacking","isInternal","base","navigatorSeriesData","hasNavigatorData","initSeries","remove","unionExtremes","baseExtremes","baseDataMin","baseDataMax","stickToMin","stickToMax","hasSetExtremes","eventArgs","pointStart","setData","axes","coll","zoomType","rangeSelector","resetZoomButton","previousZoom","callback","legend","legendOptions","chartWidth","spacing","verticalAlign","floating","legendHeight","setAxisSize","turboThreshold","newOptions","callbacks","RangeSelector","createElement","useUTC","global","discardElement","HCDate","Date","pInt","splat","buttonTheme","padding","inputPosition","lang","rangeSelectorZoom","rangeSelectorFrom","rangeSelectorTo","clickButton","rangeOptions","buttonOptions","baseXAxisOptions","_range","rangeMin","minSetting","rangeSetting","forcedDataGrouping","ctx","minFromRange","MIN_VALUE","ytdExtremes","getYTDExtremes","setSelected","rangeSelectorButton","resetMinAndRange","selected","defaultButtons","selectedOption","blurInputs","minInput","maxInput","blur","extraTopMargin","unMouseDown","unResize","computeButtonRange","updateButtonStates","actualRange","hasNoData","hasVisibleSeries","ytdMin","ytdMax","selectedExists","allButtonsEnabled","button","state","isSelected","isTooGreatRange","isTooSmallRange","isYTDButNotSelected","isAllButAlreadyShowingAll","isSameRange","disable","select","fixedTimes","setInputValue","time","input","previousValue","HCTime","inputEditDateFormat","inputDateFormat","showInput","inputGroup","dateBox","border","hideInput","drawInput","updateExtremes","inputValue","inputDateParser","parse","chartAxis","dataAxis","split","UTC","getTimezoneOffset","isMin","inputBoxWidth","inputBoxHeight","stroke","inputBoxBorderColor","focus","onfocus","input.onfocus","onblur","input.onblur","onchange","onkeypress","input.onkeypress","event","keyCode","getPosition","buttonTop","buttonPosition","inputTop","now","hcGetFullYear","startOfYear","getTime","navButtonOptions","exporting","navigation","inputEnabled","buttonLeft","buttonGroup","zoomText","labelStyle","getBBox","isActive","disabled","buttonSpacing","parentNode","insertBefore","spacingBox","buttonBBox","alignAttr","rSelector","objectEach","nodeType","Axis.prototype.toFixedRange","changeRatio","Axis.prototype.minFromRange","timeName","getTrueRange","date","basePeriod","setDate","renderRangeSelector","unbindRender","unbindSetExtremes","destroyEvents","inArray","isString","map","seriesInit","seriesProcessData","pointTooltipFormatter","tooltipFormatter","StockChart","stockChart","H.stockChart","c","hasRenderToArg","nodeName","getOptions","disableStartOnTick","lineOptions","radius","columnOptions","borderWidth","xAxisOptions","overflow","showLastLabel","categories","yAxisOptions","panning","pinchType","shared","crosshairs","panes","_labelPanes","labelOptions","old","force","translatedValue","isLinked","linkedParent","axisLeft","axisTop","x1","y1","x2","y2","result","uniqueAxes","transVal","getAxis","otherColl","opt","axes2","A","indexOf","rax","axis2","find","unique","skip","transB","crispPolyLine","getPlotBandPath","Axis.prototype.getPlotBandPath","toPath","getPlotLinePath","toString","flat","SVGRenderer.prototype.crispPolyLine","crossLabel","cross","posx","formatOption","formatFormat","tickInside","tickPosition","snap","labelAlign","colorIndex","borderRadius","labelGroup","posy","formatter","isDatetimeAxis","crossBox","right","seriesProto.init","setCompare","seriesProto.setCompare","compareValue","compareBase","hasRendered","keyIndex","Axis.prototype.setCompare","Point.prototype.tooltipFormatter","replace","numberFormat","changeDecimals","is3d","polar","isRadial","clipBox","sharedClipKey","serie"]
}
/base/000_base/node_modules/highcharts/js/modules/stock.src.js
@@ -0,0 +1,6320 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* Highstock as a plugin for Highcharts
*
* (c) 2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
Axis = H.Axis,
Chart = H.Chart,
css = H.css,
dateFormat = H.dateFormat,
defined = H.defined,
each = H.each,
extend = H.extend,
noop = H.noop,
Series = H.Series,
timeUnits = H.timeUnits,
wrap = H.wrap;
 
/* ****************************************************************************
* Start ordinal axis logic *
*****************************************************************************/
 
 
wrap(Series.prototype, 'init', function(proceed) {
var series = this,
xAxis;
 
// call the original function
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
xAxis = series.xAxis;
 
// Destroy the extended ordinal index on updated data
if (xAxis && xAxis.options.ordinal) {
addEvent(series, 'updatedData', function() {
delete xAxis.ordinalIndex;
});
}
});
 
/**
* In an ordinal axis, there might be areas with dense consentrations of points, then large
* gaps between some. Creating equally distributed ticks over this entire range
* may lead to a huge number of ticks that will later be removed. So instead, break the
* positions up in segments, find the tick positions for each segment then concatenize them.
* This method is used from both data grouping logic and X axis tick position logic.
*/
wrap(Axis.prototype, 'getTimeTicks', function(proceed, normalizedInterval, min, max, startOfWeek, positions, closestDistance, findHigherRanks) {
 
var start = 0,
end,
segmentPositions,
higherRanks = {},
hasCrossedHigherRank,
info,
posLength,
outsideMax,
groupPositions = [],
lastGroupPosition = -Number.MAX_VALUE,
tickPixelIntervalOption = this.options.tickPixelInterval;
 
// The positions are not always defined, for example for ordinal positions when data
// has regular interval (#1557, #2090)
if ((!this.options.ordinal && !this.options.breaks) || !positions || positions.length < 3 || min === undefined) {
return proceed.call(this, normalizedInterval, min, max, startOfWeek);
}
 
// Analyze the positions array to split it into segments on gaps larger than 5 times
// the closest distance. The closest distance is already found at this point, so
// we reuse that instead of computing it again.
posLength = positions.length;
 
for (end = 0; end < posLength; end++) {
 
outsideMax = end && positions[end - 1] > max;
 
if (positions[end] < min) { // Set the last position before min
start = end;
}
 
if (end === posLength - 1 || positions[end + 1] - positions[end] > closestDistance * 5 || outsideMax) {
 
// For each segment, calculate the tick positions from the getTimeTicks utility
// function. The interval will be the same regardless of how long the segment is.
if (positions[end] > lastGroupPosition) { // #1475
 
segmentPositions = proceed.call(this, normalizedInterval, positions[start], positions[end], startOfWeek);
 
// Prevent duplicate groups, for example for multiple segments within one larger time frame (#1475)
while (segmentPositions.length && segmentPositions[0] <= lastGroupPosition) {
segmentPositions.shift();
}
if (segmentPositions.length) {
lastGroupPosition = segmentPositions[segmentPositions.length - 1];
}
 
groupPositions = groupPositions.concat(segmentPositions);
}
// Set start of next segment
start = end + 1;
}
 
if (outsideMax) {
break;
}
}
 
// Get the grouping info from the last of the segments. The info is the same for
// all segments.
info = segmentPositions.info;
 
// Optionally identify ticks with higher rank, for example when the ticks
// have crossed midnight.
if (findHigherRanks && info.unitRange <= timeUnits.hour) {
end = groupPositions.length - 1;
 
// Compare points two by two
for (start = 1; start < end; start++) {
if (dateFormat('%d', groupPositions[start]) !== dateFormat('%d', groupPositions[start - 1])) {
higherRanks[groupPositions[start]] = 'day';
hasCrossedHigherRank = true;
}
}
 
// If the complete array has crossed midnight, we want to mark the first
// positions also as higher rank
if (hasCrossedHigherRank) {
higherRanks[groupPositions[0]] = 'day';
}
info.higherRanks = higherRanks;
}
 
// Save the info
groupPositions.info = info;
 
 
 
// Don't show ticks within a gap in the ordinal axis, where the space between
// two points is greater than a portion of the tick pixel interval
if (findHigherRanks && defined(tickPixelIntervalOption)) { // check for squashed ticks
 
var length = groupPositions.length,
i = length,
itemToRemove,
translated,
translatedArr = [],
lastTranslated,
medianDistance,
distance,
distances = [];
 
// Find median pixel distance in order to keep a reasonably even distance between
// ticks (#748)
while (i--) {
translated = this.translate(groupPositions[i]);
if (lastTranslated) {
distances[i] = lastTranslated - translated;
}
translatedArr[i] = lastTranslated = translated;
}
distances.sort();
medianDistance = distances[Math.floor(distances.length / 2)];
if (medianDistance < tickPixelIntervalOption * 0.6) {
medianDistance = null;
}
 
// Now loop over again and remove ticks where needed
i = groupPositions[length - 1] > max ? length - 1 : length; // #817
lastTranslated = undefined;
while (i--) {
translated = translatedArr[i];
distance = Math.abs(lastTranslated - translated);
// #4175 - when axis is reversed, the distance, is negative but
// tickPixelIntervalOption positive, so we need to compare the same values
 
// Remove ticks that are closer than 0.6 times the pixel interval from the one to the right,
// but not if it is close to the median distance (#748).
if (lastTranslated && distance < tickPixelIntervalOption * 0.8 &&
(medianDistance === null || distance < medianDistance * 0.8)) {
 
// Is this a higher ranked position with a normal position to the right?
if (higherRanks[groupPositions[i]] && !higherRanks[groupPositions[i + 1]]) {
 
// Yes: remove the lower ranked neighbour to the right
itemToRemove = i + 1;
lastTranslated = translated; // #709
 
} else {
 
// No: remove this one
itemToRemove = i;
}
 
groupPositions.splice(itemToRemove, 1);
 
} else {
lastTranslated = translated;
}
}
}
return groupPositions;
});
 
// Extend the Axis prototype
extend(Axis.prototype, /** @lends Axis.prototype */ {
 
/**
* Calculate the ordinal positions before tick positions are calculated.
*/
beforeSetTickPositions: function() {
var axis = this,
len,
ordinalPositions = [],
useOrdinal = false,
dist,
extremes = axis.getExtremes(),
min = extremes.min,
max = extremes.max,
minIndex,
maxIndex,
slope,
hasBreaks = axis.isXAxis && !!axis.options.breaks,
isOrdinal = axis.options.ordinal,
ignoreHiddenSeries = axis.chart.options.chart.ignoreHiddenSeries,
i;
 
// apply the ordinal logic
if (isOrdinal || hasBreaks) { // #4167 YAxis is never ordinal ?
 
each(axis.series, function(series, i) {
 
if ((!ignoreHiddenSeries || series.visible !== false) && (series.takeOrdinalPosition !== false || hasBreaks)) {
 
// concatenate the processed X data into the existing positions, or the empty array
ordinalPositions = ordinalPositions.concat(series.processedXData);
len = ordinalPositions.length;
 
// remove duplicates (#1588)
ordinalPositions.sort(function(a, b) {
return a - b; // without a custom function it is sorted as strings
});
 
if (len) {
i = len - 1;
while (i--) {
if (ordinalPositions[i] === ordinalPositions[i + 1]) {
ordinalPositions.splice(i, 1);
}
}
}
}
 
});
 
// cache the length
len = ordinalPositions.length;
 
// Check if we really need the overhead of mapping axis data against the ordinal positions.
// If the series consist of evenly spaced data any way, we don't need any ordinal logic.
if (len > 2) { // two points have equal distance by default
dist = ordinalPositions[1] - ordinalPositions[0];
i = len - 1;
while (i-- && !useOrdinal) {
if (ordinalPositions[i + 1] - ordinalPositions[i] !== dist) {
useOrdinal = true;
}
}
 
// When zooming in on a week, prevent axis padding for weekends even though the data within
// the week is evenly spaced.
if (!axis.options.keepOrdinalPadding && (ordinalPositions[0] - min > dist || max - ordinalPositions[ordinalPositions.length - 1] > dist)) {
useOrdinal = true;
}
}
 
// Record the slope and offset to compute the linear values from the array index.
// Since the ordinal positions may exceed the current range, get the start and
// end positions within it (#719, #665b)
if (useOrdinal) {
 
// Register
axis.ordinalPositions = ordinalPositions;
 
// This relies on the ordinalPositions being set. Use Math.max
// and Math.min to prevent padding on either sides of the data.
minIndex = axis.ordinal2lin( // #5979
Math.max(
min,
ordinalPositions[0]
),
true
);
maxIndex = Math.max(axis.ordinal2lin(
Math.min(
max,
ordinalPositions[ordinalPositions.length - 1]
),
true
), 1); // #3339
 
// Set the slope and offset of the values compared to the indices in the ordinal positions
axis.ordinalSlope = slope = (max - min) / (maxIndex - minIndex);
axis.ordinalOffset = min - (minIndex * slope);
 
} else {
axis.ordinalPositions = axis.ordinalSlope = axis.ordinalOffset = undefined;
}
}
axis.isOrdinal = isOrdinal && useOrdinal; // #3818, #4196, #4926
axis.groupIntervalFactor = null; // reset for next run
},
/**
* Translate from a linear axis value to the corresponding ordinal axis position. If there
* are no gaps in the ordinal axis this will be the same. The translated value is the value
* that the point would have if the axis were linear, using the same min and max.
*
* @param Number val The axis value
* @param Boolean toIndex Whether to return the index in the ordinalPositions or the new value
*/
val2lin: function(val, toIndex) {
var axis = this,
ordinalPositions = axis.ordinalPositions,
ret;
 
if (!ordinalPositions) {
ret = val;
 
} else {
 
var ordinalLength = ordinalPositions.length,
i,
distance,
ordinalIndex;
 
// first look for an exact match in the ordinalpositions array
i = ordinalLength;
while (i--) {
if (ordinalPositions[i] === val) {
ordinalIndex = i;
break;
}
}
 
// if that failed, find the intermediate position between the two nearest values
i = ordinalLength - 1;
while (i--) {
if (val > ordinalPositions[i] || i === 0) { // interpolate
distance = (val - ordinalPositions[i]) / (ordinalPositions[i + 1] - ordinalPositions[i]); // something between 0 and 1
ordinalIndex = i + distance;
break;
}
}
ret = toIndex ?
ordinalIndex :
axis.ordinalSlope * (ordinalIndex || 0) + axis.ordinalOffset;
}
return ret;
},
/**
* Translate from linear (internal) to axis value
*
* @param Number val The linear abstracted value
* @param Boolean fromIndex Translate from an index in the ordinal positions rather than a value
*/
lin2val: function(val, fromIndex) {
var axis = this,
ordinalPositions = axis.ordinalPositions,
ret;
 
if (!ordinalPositions) { // the visible range contains only equally spaced values
ret = val;
 
} else {
 
var ordinalSlope = axis.ordinalSlope,
ordinalOffset = axis.ordinalOffset,
i = ordinalPositions.length - 1,
linearEquivalentLeft,
linearEquivalentRight,
distance;
 
 
// Handle the case where we translate from the index directly, used only
// when panning an ordinal axis
if (fromIndex) {
 
if (val < 0) { // out of range, in effect panning to the left
val = ordinalPositions[0];
} else if (val > i) { // out of range, panning to the right
val = ordinalPositions[i];
} else { // split it up
i = Math.floor(val);
distance = val - i; // the decimal
}
 
// Loop down along the ordinal positions. When the linear equivalent of i matches
// an ordinal position, interpolate between the left and right values.
} else {
while (i--) {
linearEquivalentLeft = (ordinalSlope * i) + ordinalOffset;
if (val >= linearEquivalentLeft) {
linearEquivalentRight = (ordinalSlope * (i + 1)) + ordinalOffset;
distance = (val - linearEquivalentLeft) / (linearEquivalentRight - linearEquivalentLeft); // something between 0 and 1
break;
}
}
}
 
// If the index is within the range of the ordinal positions, return the associated
// or interpolated value. If not, just return the value
return distance !== undefined && ordinalPositions[i] !== undefined ?
ordinalPositions[i] + (distance ? distance * (ordinalPositions[i + 1] - ordinalPositions[i]) : 0) :
val;
}
return ret;
},
/**
* Get the ordinal positions for the entire data set. This is necessary in chart panning
* because we need to find out what points or data groups are available outside the
* visible range. When a panning operation starts, if an index for the given grouping
* does not exists, it is created and cached. This index is deleted on updated data, so
* it will be regenerated the next time a panning operation starts.
*/
getExtendedPositions: function() {
var axis = this,
chart = axis.chart,
grouping = axis.series[0].currentDataGrouping,
ordinalIndex = axis.ordinalIndex,
key = grouping ? grouping.count + grouping.unitName : 'raw',
extremes = axis.getExtremes(),
fakeAxis,
fakeSeries;
 
// If this is the first time, or the ordinal index is deleted by updatedData,
// create it.
if (!ordinalIndex) {
ordinalIndex = axis.ordinalIndex = {};
}
 
 
if (!ordinalIndex[key]) {
 
// Create a fake axis object where the extended ordinal positions are emulated
fakeAxis = {
series: [],
chart: chart,
getExtremes: function() {
return {
min: extremes.dataMin,
max: extremes.dataMax
};
},
options: {
ordinal: true
},
val2lin: Axis.prototype.val2lin, // #2590
ordinal2lin: Axis.prototype.ordinal2lin // #6276
};
 
// Add the fake series to hold the full data, then apply processData to it
each(axis.series, function(series) {
fakeSeries = {
xAxis: fakeAxis,
xData: series.xData,
chart: chart,
destroyGroupedData: noop
};
fakeSeries.options = {
dataGrouping: grouping ? {
enabled: true,
forced: true,
approximation: 'open', // doesn't matter which, use the fastest
units: [
[grouping.unitName, [grouping.count]]
]
} : {
enabled: false
}
};
series.processData.apply(fakeSeries);
 
fakeAxis.series.push(fakeSeries);
});
 
// Run beforeSetTickPositions to compute the ordinalPositions
axis.beforeSetTickPositions.apply(fakeAxis);
 
// Cache it
ordinalIndex[key] = fakeAxis.ordinalPositions;
}
return ordinalIndex[key];
},
 
/**
* Find the factor to estimate how wide the plot area would have been if ordinal
* gaps were included. This value is used to compute an imagined plot width in order
* to establish the data grouping interval.
*
* A real world case is the intraday-candlestick
* example. Without this logic, it would show the correct data grouping when viewing
* a range within each day, but once moving the range to include the gap between two
* days, the interval would include the cut-away night hours and the data grouping
* would be wrong. So the below method tries to compensate by identifying the most
* common point interval, in this case days.
*
* An opposite case is presented in issue #718. We have a long array of daily data,
* then one point is appended one hour after the last point. We expect the data grouping
* not to change.
*
* In the future, if we find cases where this estimation doesn't work optimally, we
* might need to add a second pass to the data grouping logic, where we do another run
* with a greater interval if the number of data groups is more than a certain fraction
* of the desired group count.
*/
getGroupIntervalFactor: function(xMin, xMax, series) {
var i,
processedXData = series.processedXData,
len = processedXData.length,
distances = [],
median,
groupIntervalFactor = this.groupIntervalFactor;
 
// Only do this computation for the first series, let the other inherit it (#2416)
if (!groupIntervalFactor) {
 
// Register all the distances in an array
for (i = 0; i < len - 1; i++) {
distances[i] = processedXData[i + 1] - processedXData[i];
}
 
// Sort them and find the median
distances.sort(function(a, b) {
return a - b;
});
median = distances[Math.floor(len / 2)];
 
// Compensate for series that don't extend through the entire axis extent. #1675.
xMin = Math.max(xMin, processedXData[0]);
xMax = Math.min(xMax, processedXData[len - 1]);
 
this.groupIntervalFactor = groupIntervalFactor = (len * median) / (xMax - xMin);
}
 
// Return the factor needed for data grouping
return groupIntervalFactor;
},
 
/**
* Make the tick intervals closer because the ordinal gaps make the ticks spread out or cluster
*/
postProcessTickInterval: function(tickInterval) {
// Problem: http://jsfiddle.net/highcharts/FQm4E/1/
// This is a case where this algorithm doesn't work optimally. In this case, the
// tick labels are spread out per week, but all the gaps reside within weeks. So
// we have a situation where the labels are courser than the ordinal gaps, and
// thus the tick interval should not be altered
var ordinalSlope = this.ordinalSlope,
ret;
 
 
if (ordinalSlope) {
if (!this.options.breaks) {
ret = tickInterval / (ordinalSlope / this.closestPointRange);
} else {
ret = this.closestPointRange;
}
} else {
ret = tickInterval;
}
return ret;
}
});
 
// Record this to prevent overwriting by broken-axis module (#5979)
Axis.prototype.ordinal2lin = Axis.prototype.val2lin;
 
// Extending the Chart.pan method for ordinal axes
wrap(Chart.prototype, 'pan', function(proceed, e) {
var chart = this,
xAxis = chart.xAxis[0],
chartX = e.chartX,
runBase = false;
 
if (xAxis.options.ordinal && xAxis.series.length) {
 
var mouseDownX = chart.mouseDownX,
extremes = xAxis.getExtremes(),
dataMax = extremes.dataMax,
min = extremes.min,
max = extremes.max,
trimmedRange,
hoverPoints = chart.hoverPoints,
closestPointRange = xAxis.closestPointRange,
pointPixelWidth = xAxis.translationSlope * (xAxis.ordinalSlope || closestPointRange),
movedUnits = (mouseDownX - chartX) / pointPixelWidth, // how many ordinal units did we move?
extendedAxis = {
ordinalPositions: xAxis.getExtendedPositions()
}, // get index of all the chart's points
ordinalPositions,
searchAxisLeft,
lin2val = xAxis.lin2val,
val2lin = xAxis.val2lin,
searchAxisRight;
 
if (!extendedAxis.ordinalPositions) { // we have an ordinal axis, but the data is equally spaced
runBase = true;
 
} else if (Math.abs(movedUnits) > 1) {
 
// Remove active points for shared tooltip
if (hoverPoints) {
each(hoverPoints, function(point) {
point.setState();
});
}
 
if (movedUnits < 0) {
searchAxisLeft = extendedAxis;
searchAxisRight = xAxis.ordinalPositions ? xAxis : extendedAxis;
} else {
searchAxisLeft = xAxis.ordinalPositions ? xAxis : extendedAxis;
searchAxisRight = extendedAxis;
}
 
// In grouped data series, the last ordinal position represents the grouped data, which is
// to the left of the real data max. If we don't compensate for this, we will be allowed
// to pan grouped data series passed the right of the plot area.
ordinalPositions = searchAxisRight.ordinalPositions;
if (dataMax > ordinalPositions[ordinalPositions.length - 1]) {
ordinalPositions.push(dataMax);
}
 
// Get the new min and max values by getting the ordinal index for the current extreme,
// then add the moved units and translate back to values. This happens on the
// extended ordinal positions if the new position is out of range, else it happens
// on the current x axis which is smaller and faster.
chart.fixedRange = max - min;
trimmedRange = xAxis.toFixedRange(null, null,
lin2val.apply(searchAxisLeft, [
val2lin.apply(searchAxisLeft, [min, true]) + movedUnits, // the new index
true // translate from index
]),
lin2val.apply(searchAxisRight, [
val2lin.apply(searchAxisRight, [max, true]) + movedUnits, // the new index
true // translate from index
])
);
 
// Apply it if it is within the available data range
if (trimmedRange.min >= Math.min(extremes.dataMin, min) && trimmedRange.max <= Math.max(dataMax, max)) {
xAxis.setExtremes(trimmedRange.min, trimmedRange.max, true, false, {
trigger: 'pan'
});
}
 
chart.mouseDownX = chartX; // set new reference for next run
css(chart.container, {
cursor: 'move'
});
}
 
} else {
runBase = true;
}
 
// revert to the linear chart.pan version
if (runBase) {
// call the original function
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
/* ****************************************************************************
* End ordinal axis logic *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
var pick = H.pick,
wrap = H.wrap,
each = H.each,
extend = H.extend,
isArray = H.isArray,
fireEvent = H.fireEvent,
Axis = H.Axis,
Series = H.Series;
 
function stripArguments() {
return Array.prototype.slice.call(arguments, 1);
}
 
extend(Axis.prototype, {
isInBreak: function(brk, val) {
var ret,
repeat = brk.repeat || Infinity,
from = brk.from,
length = brk.to - brk.from,
test = (val >= from ? (val - from) % repeat : repeat - ((from - val) % repeat));
 
if (!brk.inclusive) {
ret = test < length && test !== 0;
} else {
ret = test <= length;
}
return ret;
},
 
isInAnyBreak: function(val, testKeep) {
 
var breaks = this.options.breaks,
i = breaks && breaks.length,
inbrk,
keep,
ret;
 
 
if (i) {
 
while (i--) {
if (this.isInBreak(breaks[i], val)) {
inbrk = true;
if (!keep) {
keep = pick(breaks[i].showPoints, this.isXAxis ? false : true);
}
}
}
 
if (inbrk && testKeep) {
ret = inbrk && !keep;
} else {
ret = inbrk;
}
}
return ret;
}
});
 
wrap(Axis.prototype, 'setTickPositions', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
if (this.options.breaks) {
var axis = this,
tickPositions = this.tickPositions,
info = this.tickPositions.info,
newPositions = [],
i;
 
for (i = 0; i < tickPositions.length; i++) {
if (!axis.isInAnyBreak(tickPositions[i])) {
newPositions.push(tickPositions[i]);
}
}
 
this.tickPositions = newPositions;
this.tickPositions.info = info;
}
});
 
wrap(Axis.prototype, 'init', function(proceed, chart, userOptions) {
var axis = this,
breaks;
// Force Axis to be not-ordinal when breaks are defined
if (userOptions.breaks && userOptions.breaks.length) {
userOptions.ordinal = false;
}
proceed.call(this, chart, userOptions);
breaks = this.options.breaks;
axis.isBroken = (isArray(breaks) && !!breaks.length);
if (axis.isBroken) {
axis.val2lin = function(val) {
var nval = val,
brk,
i;
 
for (i = 0; i < axis.breakArray.length; i++) {
brk = axis.breakArray[i];
if (brk.to <= val) {
nval -= brk.len;
} else if (brk.from >= val) {
break;
} else if (axis.isInBreak(brk, val)) {
nval -= (val - brk.from);
break;
}
}
 
return nval;
};
 
axis.lin2val = function(val) {
var nval = val,
brk,
i;
 
for (i = 0; i < axis.breakArray.length; i++) {
brk = axis.breakArray[i];
if (brk.from >= nval) {
break;
} else if (brk.to < nval) {
nval += brk.len;
} else if (axis.isInBreak(brk, nval)) {
nval += brk.len;
}
}
return nval;
};
 
axis.setExtremes = function(newMin, newMax, redraw, animation, eventArguments) {
// If trying to set extremes inside a break, extend it to before and after the break ( #3857 )
while (this.isInAnyBreak(newMin)) {
newMin -= this.closestPointRange;
}
while (this.isInAnyBreak(newMax)) {
newMax -= this.closestPointRange;
}
Axis.prototype.setExtremes.call(this, newMin, newMax, redraw, animation, eventArguments);
};
 
axis.setAxisTranslation = function(saveOld) {
Axis.prototype.setAxisTranslation.call(this, saveOld);
 
var breaks = axis.options.breaks,
breakArrayT = [], // Temporary one
breakArray = [],
length = 0,
inBrk,
repeat,
min = axis.userMin || axis.min,
max = axis.userMax || axis.max,
pointRangePadding = pick(axis.pointRangePadding, 0),
start,
i;
 
// Min & max check (#4247)
each(breaks, function(brk) {
repeat = brk.repeat || Infinity;
if (axis.isInBreak(brk, min)) {
min += (brk.to % repeat) - (min % repeat);
}
if (axis.isInBreak(brk, max)) {
max -= (max % repeat) - (brk.from % repeat);
}
});
 
// Construct an array holding all breaks in the axis
each(breaks, function(brk) {
start = brk.from;
repeat = brk.repeat || Infinity;
 
while (start - repeat > min) {
start -= repeat;
}
while (start < min) {
start += repeat;
}
 
for (i = start; i < max; i += repeat) {
breakArrayT.push({
value: i,
move: 'in'
});
breakArrayT.push({
value: i + (brk.to - brk.from),
move: 'out',
size: brk.breakSize
});
}
});
 
breakArrayT.sort(function(a, b) {
var ret;
if (a.value === b.value) {
ret = (a.move === 'in' ? 0 : 1) - (b.move === 'in' ? 0 : 1);
} else {
ret = a.value - b.value;
}
return ret;
});
 
// Simplify the breaks
inBrk = 0;
start = min;
 
each(breakArrayT, function(brk) {
inBrk += (brk.move === 'in' ? 1 : -1);
 
if (inBrk === 1 && brk.move === 'in') {
start = brk.value;
}
if (inBrk === 0) {
breakArray.push({
from: start,
to: brk.value,
len: brk.value - start - (brk.size || 0)
});
length += brk.value - start - (brk.size || 0);
}
});
 
axis.breakArray = breakArray;
 
// Used with staticScale, and below, the actual axis length when
// breaks are substracted.
axis.unitLength = max - min - length + pointRangePadding;
 
fireEvent(axis, 'afterBreaks');
 
if (axis.options.staticScale) {
axis.transA = axis.options.staticScale;
} else if (axis.unitLength) {
axis.transA *= (max - axis.min + pointRangePadding) /
axis.unitLength;
}
 
if (pointRangePadding) {
axis.minPixelPadding = axis.transA * axis.minPointOffset;
}
 
axis.min = min;
axis.max = max;
};
}
});
 
wrap(Series.prototype, 'generatePoints', function(proceed) {
 
proceed.apply(this, stripArguments(arguments));
 
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis,
points = series.points,
point,
i = points.length,
connectNulls = series.options.connectNulls,
nullGap;
 
 
if (xAxis && yAxis && (xAxis.options.breaks || yAxis.options.breaks)) {
while (i--) {
point = points[i];
 
nullGap = point.y === null && connectNulls === false; // respect nulls inside the break (#4275)
if (!nullGap && (xAxis.isInAnyBreak(point.x, true) || yAxis.isInAnyBreak(point.y, true))) {
points.splice(i, 1);
if (this.data[i]) {
this.data[i].destroyElements(); // removes the graphics for this point if they exist
}
}
}
}
 
});
 
function drawPointsWrapped(proceed) {
proceed.apply(this);
this.drawBreaks(this.xAxis, ['x']);
this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));
}
 
H.Series.prototype.drawBreaks = function(axis, keys) {
var series = this,
points = series.points,
breaks,
threshold,
eventName,
y;
 
if (!axis) {
return; // #5950
}
 
each(keys, function(key) {
breaks = axis.breakArray || [];
threshold = axis.isXAxis ? axis.min : pick(series.options.threshold, axis.min);
each(points, function(point) {
y = pick(point['stack' + key.toUpperCase()], point[key]);
each(breaks, function(brk) {
eventName = false;
 
if ((threshold < brk.from && y > brk.to) || (threshold > brk.from && y < brk.from)) {
eventName = 'pointBreak';
} else if ((threshold < brk.from && y > brk.from && y < brk.to) || (threshold > brk.from && y > brk.to && y < brk.from)) { // point falls inside the break
eventName = 'pointInBreak';
}
if (eventName) {
fireEvent(axis, eventName, {
point: point,
brk: brk
});
}
});
});
});
};
 
 
/**
* Extend getGraphPath by identifying gaps in the data so that we can draw a gap
* in the line or area. This was moved from ordinal axis module to broken axis
* module as of #5045.
*/
H.Series.prototype.gappedPath = function() {
var gapSize = this.options.gapSize,
points = this.points.slice(),
i = points.length - 1;
 
if (gapSize && i > 0) { // #5008
 
// extension for ordinal breaks
while (i--) {
if (points[i + 1].x - points[i].x > this.closestPointRange * gapSize) {
points.splice( // insert after this one
i + 1,
0, {
isNull: true
}
);
}
}
}
 
// Call base method
return this.getGraphPath(points);
};
 
wrap(H.seriesTypes.column.prototype, 'drawPoints', drawPointsWrapped);
wrap(H.Series.prototype, 'drawPoints', drawPointsWrapped);
 
}(Highcharts));
(function() {
 
 
}());
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var arrayMax = H.arrayMax,
arrayMin = H.arrayMin,
Axis = H.Axis,
defaultPlotOptions = H.defaultPlotOptions,
defined = H.defined,
each = H.each,
extend = H.extend,
format = H.format,
isNumber = H.isNumber,
merge = H.merge,
pick = H.pick,
Point = H.Point,
Series = H.Series,
Tooltip = H.Tooltip,
wrap = H.wrap;
 
/* ****************************************************************************
* Start data grouping module *
******************************************************************************/
 
var seriesProto = Series.prototype,
baseProcessData = seriesProto.processData,
baseGeneratePoints = seriesProto.generatePoints,
baseDestroy = seriesProto.destroy,
 
commonOptions = {
approximation: 'average', // average, open, high, low, close, sum
//enabled: null, // (true for stock charts, false for basic),
//forced: undefined,
groupPixelWidth: 2,
// the first one is the point or start value, the second is the start value if we're dealing with range,
// the third one is the end value if dealing with a range
dateTimeLabelFormats: {
millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],
second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],
minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],
hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],
day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],
week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],
month: ['%B %Y', '%B', '-%B %Y'],
year: ['%Y', '%Y', '-%Y']
}
// smoothed = false, // enable this for navigator series only
},
 
specificOptions = { // extends common options
line: {},
spline: {},
area: {},
areaspline: {},
column: {
approximation: 'sum',
groupPixelWidth: 10
},
arearange: {
approximation: 'range'
},
areasplinerange: {
approximation: 'range'
},
columnrange: {
approximation: 'range',
groupPixelWidth: 10
},
candlestick: {
approximation: 'ohlc',
groupPixelWidth: 10
},
ohlc: {
approximation: 'ohlc',
groupPixelWidth: 5
}
},
 
// units are defined in a separate array to allow complete overriding in case of a user option
defaultDataGroupingUnits = H.defaultDataGroupingUnits = [
[
'millisecond', // unit name
[1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
],
[
'second', [1, 2, 5, 10, 15, 30]
],
[
'minute', [1, 2, 5, 10, 15, 30]
],
[
'hour', [1, 2, 3, 4, 6, 8, 12]
],
[
'day', [1]
],
[
'week', [1]
],
[
'month', [1, 3, 6]
],
[
'year',
null
]
],
 
 
/**
* Define the available approximation types. The data grouping
* approximations takes an array or numbers as the first parameter. In case
* of ohlc, four arrays are sent in as four parameters. Each array consists
* only of numbers. In case null values belong to the group, the property
* .hasNulls will be set to true on the array.
*/
approximations = {
sum: function(arr) {
var len = arr.length,
ret;
 
// 1. it consists of nulls exclusively
if (!len && arr.hasNulls) {
ret = null;
// 2. it has a length and real values
} else if (len) {
ret = 0;
while (len--) {
ret += arr[len];
}
}
// 3. it has zero length, so just return undefined
// => doNothing()
 
return ret;
},
average: function(arr) {
var len = arr.length,
ret = approximations.sum(arr);
 
// If we have a number, return it divided by the length. If not,
// return null or undefined based on what the sum method finds.
if (isNumber(ret) && len) {
ret = ret / len;
}
 
return ret;
},
// The same as average, but for series with multiple values, like area
// ranges.
averages: function() { // #5479
var ret = [];
 
each(arguments, function(arr) {
ret.push(approximations.average(arr));
});
 
return ret;
},
open: function(arr) {
return arr.length ? arr[0] : (arr.hasNulls ? null : undefined);
},
high: function(arr) {
return arr.length ? arrayMax(arr) : (arr.hasNulls ? null : undefined);
},
low: function(arr) {
return arr.length ? arrayMin(arr) : (arr.hasNulls ? null : undefined);
},
close: function(arr) {
return arr.length ? arr[arr.length - 1] : (arr.hasNulls ? null : undefined);
},
// ohlc and range are special cases where a multidimensional array is input and an array is output
ohlc: function(open, high, low, close) {
open = approximations.open(open);
high = approximations.high(high);
low = approximations.low(low);
close = approximations.close(close);
 
if (isNumber(open) || isNumber(high) || isNumber(low) || isNumber(close)) {
return [open, high, low, close];
}
// else, return is undefined
},
range: function(low, high) {
low = approximations.low(low);
high = approximations.high(high);
 
if (isNumber(low) || isNumber(high)) {
return [low, high];
} else if (low === null && high === null) {
return null;
}
// else, return is undefined
}
};
 
 
/**
* Takes parallel arrays of x and y data and groups the data into intervals
* defined by groupPositions, a collection of starting x values for each group.
*/
seriesProto.groupData = function(xData, yData, groupPositions, approximation) {
var series = this,
data = series.data,
dataOptions = series.options.data,
groupedXData = [],
groupedYData = [],
groupMap = [],
dataLength = xData.length,
pointX,
pointY,
groupedY,
// when grouping the fake extended axis for panning,
// we don't need to consider y
handleYData = !!yData,
values = [],
approximationFn = typeof approximation === 'function' ?
approximation :
approximations[approximation] ||
// if the approximation is not found use default series type
// approximation (#2914)
(
specificOptions[series.type] &&
approximations[specificOptions[series.type].approximation]
) || approximations[commonOptions.approximation],
pointArrayMap = series.pointArrayMap,
pointArrayMapLength = pointArrayMap && pointArrayMap.length,
pos = 0,
start = 0,
valuesLen,
i, j;
 
// Calculate values array size from pointArrayMap length
if (pointArrayMapLength) {
each(pointArrayMap, function() {
values.push([]);
});
} else {
values.push([]);
}
valuesLen = pointArrayMapLength || 1;
 
// Start with the first point within the X axis range (#2696)
for (i = 0; i <= dataLength; i++) {
if (xData[i] >= groupPositions[0]) {
break;
}
}
 
for (i; i <= dataLength; i++) {
 
// when a new group is entered, summarize and initiate
// the previous group
while ((
groupPositions[pos + 1] !== undefined &&
xData[i] >= groupPositions[pos + 1]
) || i === dataLength) { // get the last group
 
// get group x and y
pointX = groupPositions[pos];
series.dataGroupInfo = {
start: start,
length: values[0].length
};
groupedY = approximationFn.apply(series, values);
 
// push the grouped data
if (groupedY !== undefined) {
groupedXData.push(pointX);
groupedYData.push(groupedY);
groupMap.push(series.dataGroupInfo);
}
 
// reset the aggregate arrays
start = i;
for (j = 0; j < valuesLen; j++) {
values[j].length = 0; // faster than values[j] = []
values[j].hasNulls = false;
}
 
// Advance on the group positions
pos += 1;
 
// don't loop beyond the last group
if (i === dataLength) {
break;
}
}
 
// break out
if (i === dataLength) {
break;
}
 
// for each raw data point, push it to an array that contains all values
// for this specific group
if (pointArrayMap) {
 
var index = series.cropStart + i,
point = (data && data[index]) ||
series.pointClass.prototype.applyOptions.apply({
series: series
}, [dataOptions[index]]),
val;
 
for (j = 0; j < pointArrayMapLength; j++) {
val = point[pointArrayMap[j]];
if (isNumber(val)) {
values[j].push(val);
} else if (val === null) {
values[j].hasNulls = true;
}
}
 
} else {
pointY = handleYData ? yData[i] : null;
 
if (isNumber(pointY)) {
values[0].push(pointY);
} else if (pointY === null) {
values[0].hasNulls = true;
}
}
}
 
return [groupedXData, groupedYData, groupMap];
};
 
/**
* Extend the basic processData method, that crops the data to the current zoom
* range, with data grouping logic.
*/
seriesProto.processData = function() {
var series = this,
chart = series.chart,
options = series.options,
dataGroupingOptions = options.dataGrouping,
groupingEnabled = series.allowDG !== false && dataGroupingOptions &&
pick(dataGroupingOptions.enabled, chart.options.isStock),
visible = series.visible || !chart.options.chart.ignoreHiddenSeries,
hasGroupedData,
skip;
 
// run base method
series.forceCrop = groupingEnabled; // #334
series.groupPixelWidth = null; // #2110
series.hasProcessed = true; // #2692
 
// skip if processData returns false or if grouping is disabled (in that order)
skip = baseProcessData.apply(series, arguments) === false || !groupingEnabled;
if (!skip) {
series.destroyGroupedData();
 
var i,
processedXData = series.processedXData,
processedYData = series.processedYData,
plotSizeX = chart.plotSizeX,
xAxis = series.xAxis,
ordinal = xAxis.options.ordinal,
groupPixelWidth = series.groupPixelWidth = xAxis.getGroupPixelWidth && xAxis.getGroupPixelWidth();
 
// Execute grouping if the amount of points is greater than the limit defined in groupPixelWidth
if (groupPixelWidth) {
hasGroupedData = true;
 
series.isDirty = true; // force recreation of point instances in series.translate, #5699
series.points = null; // #6709
 
var extremes = xAxis.getExtremes(),
xMin = extremes.min,
xMax = extremes.max,
groupIntervalFactor = (ordinal && xAxis.getGroupIntervalFactor(xMin, xMax, series)) || 1,
interval = (groupPixelWidth * (xMax - xMin) / plotSizeX) * groupIntervalFactor,
groupPositions = xAxis.getTimeTicks(
xAxis.normalizeTimeTickInterval(interval, dataGroupingOptions.units || defaultDataGroupingUnits),
Math.min(xMin, processedXData[0]), // Processed data may extend beyond axis (#4907)
Math.max(xMax, processedXData[processedXData.length - 1]),
xAxis.options.startOfWeek,
processedXData,
series.closestPointRange
),
groupedData = seriesProto.groupData.apply(series, [processedXData, processedYData, groupPositions, dataGroupingOptions.approximation]),
groupedXData = groupedData[0],
groupedYData = groupedData[1];
 
// prevent the smoothed data to spill out left and right, and make
// sure data is not shifted to the left
if (dataGroupingOptions.smoothed) {
i = groupedXData.length - 1;
groupedXData[i] = Math.min(groupedXData[i], xMax);
while (i-- && i > 0) {
groupedXData[i] += interval / 2;
}
groupedXData[0] = Math.max(groupedXData[0], xMin);
}
 
// record what data grouping values were used
series.currentDataGrouping = groupPositions.info;
series.closestPointRange = groupPositions.info.totalRange;
series.groupMap = groupedData[2];
 
// Make sure the X axis extends to show the first group (#2533)
// But only for visible series (#5493, #6393)
if (defined(groupedXData[0]) && groupedXData[0] < xAxis.dataMin && visible) {
if (xAxis.min === xAxis.dataMin) {
xAxis.min = groupedXData[0];
}
xAxis.dataMin = groupedXData[0];
}
 
// set series props
series.processedXData = groupedXData;
series.processedYData = groupedYData;
} else {
series.currentDataGrouping = series.groupMap = null;
}
series.hasGroupedData = hasGroupedData;
}
};
 
/**
* Destroy the grouped data points. #622, #740
*/
seriesProto.destroyGroupedData = function() {
 
var groupedData = this.groupedData;
 
// clear previous groups
each(groupedData || [], function(point, i) {
if (point) {
groupedData[i] = point.destroy ? point.destroy() : null;
}
});
this.groupedData = null;
};
 
/**
* Override the generatePoints method by adding a reference to grouped data
*/
seriesProto.generatePoints = function() {
 
baseGeneratePoints.apply(this);
 
// record grouped data in order to let it be destroyed the next time processData runs
this.destroyGroupedData(); // #622
this.groupedData = this.hasGroupedData ? this.points : null;
};
 
/**
* Override point prototype to throw a warning when trying to update grouped points
*/
wrap(Point.prototype, 'update', function(proceed) {
if (this.dataGroup) {
H.error(24);
} else {
proceed.apply(this, [].slice.call(arguments, 1));
}
});
 
/**
* Extend the original method, make the tooltip's header reflect the grouped range
*/
wrap(Tooltip.prototype, 'tooltipFooterHeaderFormatter', function(proceed, labelConfig, isFooter) {
var tooltip = this,
series = labelConfig.series,
options = series.options,
tooltipOptions = series.tooltipOptions,
dataGroupingOptions = options.dataGrouping,
xDateFormat = tooltipOptions.xDateFormat,
xDateFormatEnd,
xAxis = series.xAxis,
dateFormat = H.dateFormat,
currentDataGrouping,
dateTimeLabelFormats,
labelFormats,
formattedKey;
 
// apply only to grouped series
if (xAxis && xAxis.options.type === 'datetime' && dataGroupingOptions && isNumber(labelConfig.key)) {
 
// set variables
currentDataGrouping = series.currentDataGrouping;
dateTimeLabelFormats = dataGroupingOptions.dateTimeLabelFormats;
 
// if we have grouped data, use the grouping information to get the right format
if (currentDataGrouping) {
labelFormats = dateTimeLabelFormats[currentDataGrouping.unitName];
if (currentDataGrouping.count === 1) {
xDateFormat = labelFormats[0];
} else {
xDateFormat = labelFormats[1];
xDateFormatEnd = labelFormats[2];
}
// if not grouped, and we don't have set the xDateFormat option, get the best fit,
// so if the least distance between points is one minute, show it, but if the
// least distance is one day, skip hours and minutes etc.
} else if (!xDateFormat && dateTimeLabelFormats) {
xDateFormat = tooltip.getXDateFormat(labelConfig, tooltipOptions, xAxis);
}
 
// now format the key
formattedKey = dateFormat(xDateFormat, labelConfig.key);
if (xDateFormatEnd) {
formattedKey += dateFormat(xDateFormatEnd, labelConfig.key + currentDataGrouping.totalRange - 1);
}
 
// return the replaced format
return format(tooltipOptions[(isFooter ? 'footer' : 'header') + 'Format'], {
point: extend(labelConfig.point, {
key: formattedKey
}),
series: series
});
 
}
 
// else, fall back to the regular formatter
return proceed.call(tooltip, labelConfig, isFooter);
});
 
/**
* Extend the series destroyer
*/
seriesProto.destroy = function() {
var series = this,
groupedData = series.groupedData || [],
i = groupedData.length;
 
while (i--) {
if (groupedData[i]) {
groupedData[i].destroy();
}
}
baseDestroy.apply(series);
};
 
 
// Handle default options for data grouping. This must be set at runtime because some series types are
// defined after this.
wrap(seriesProto, 'setOptions', function(proceed, itemOptions) {
 
var options = proceed.call(this, itemOptions),
type = this.type,
plotOptions = this.chart.options.plotOptions,
defaultOptions = defaultPlotOptions[type].dataGrouping;
 
if (specificOptions[type]) { // #1284
if (!defaultOptions) {
defaultOptions = merge(commonOptions, specificOptions[type]);
}
 
options.dataGrouping = merge(
defaultOptions,
plotOptions.series && plotOptions.series.dataGrouping, // #1228
plotOptions[type].dataGrouping, // Set by the StockChart constructor
itemOptions.dataGrouping
);
}
 
if (this.chart.options.isStock) {
this.requireSorting = true;
}
 
return options;
});
 
 
/**
* When resetting the scale reset the hasProccessed flag to avoid taking previous data grouping
* of neighbour series into accound when determining group pixel width (#2692).
*/
wrap(Axis.prototype, 'setScale', function(proceed) {
proceed.call(this);
each(this.series, function(series) {
series.hasProcessed = false;
});
});
 
/**
* Get the data grouping pixel width based on the greatest defined individual width
* of the axis' series, and if whether one of the axes need grouping.
*/
Axis.prototype.getGroupPixelWidth = function() {
 
var series = this.series,
len = series.length,
i,
groupPixelWidth = 0,
doGrouping = false,
dataLength,
dgOptions;
 
// If multiple series are compared on the same x axis, give them the same
// group pixel width (#334)
i = len;
while (i--) {
dgOptions = series[i].options.dataGrouping;
if (dgOptions) {
groupPixelWidth = Math.max(groupPixelWidth, dgOptions.groupPixelWidth);
 
}
}
 
// If one of the series needs grouping, apply it to all (#1634)
i = len;
while (i--) {
dgOptions = series[i].options.dataGrouping;
 
if (dgOptions && series[i].hasProcessed) { // #2692
 
dataLength = (series[i].processedXData || series[i].data).length;
 
// Execute grouping if the amount of points is greater than the limit defined in groupPixelWidth
if (series[i].groupPixelWidth || dataLength > (this.chart.plotSizeX / groupPixelWidth) || (dataLength && dgOptions.forced)) {
doGrouping = true;
}
}
}
 
return doGrouping ? groupPixelWidth : 0;
};
 
/**
* Highstock only. Force data grouping on all the axis' series.
*
* @param {SeriesDatagroupingOptions} [dataGrouping]
* A `dataGrouping` configuration. Use `false` to disable data grouping
* dynamically.
* @param {Boolean} [redraw=true]
* Whether to redraw the chart or wait for a later call to {@link
* Chart#redraw}.
*
* @function setDataGrouping
* @memberOf Axis.prototype
*/
Axis.prototype.setDataGrouping = function(dataGrouping, redraw) {
var i;
 
redraw = pick(redraw, true);
 
if (!dataGrouping) {
dataGrouping = {
forced: false,
units: null
};
}
 
// Axis is instantiated, update all series
if (this instanceof Axis) {
i = this.series.length;
while (i--) {
this.series[i].update({
dataGrouping: dataGrouping
}, false);
}
 
// Axis not yet instanciated, alter series options
} else {
each(this.chart.options.series, function(seriesOptions) {
seriesOptions.dataGrouping = dataGrouping;
}, false);
}
 
if (redraw) {
this.chart.redraw();
}
};
 
 
 
/* ****************************************************************************
* End data grouping module *
******************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var each = H.each,
Point = H.Point,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
/**
* The ohlc series type.
*
* @constructor seriesTypes.ohlc
* @augments seriesTypes.column
*/
seriesType('ohlc', 'column', {
lineWidth: 1,
tooltip: {
 
pointFormat: '<span class="highcharts-color-{point.colorIndex}">\u25CF</span> <b> {series.name}</b><br/>' +
'Open: {point.open}<br/>' +
'High: {point.high}<br/>' +
'Low: {point.low}<br/>' +
'Close: {point.close}<br/>'
 
},
threshold: null
 
 
}, /** @lends seriesTypes.ohlc */ {
directTouch: false,
pointArrayMap: ['open', 'high', 'low', 'close'], // array point configs are mapped to this
toYData: function(point) { // return a plain array for speedy calculation
return [point.open, point.high, point.low, point.close];
},
pointValKey: 'close',
 
 
 
/**
* Translate data points from raw values x and y to plotX and plotY
*/
translate: function() {
var series = this,
yAxis = series.yAxis,
hasModifyValue = !!series.modifyValue,
translated = ['plotOpen', 'plotHigh', 'plotLow', 'plotClose', 'yBottom']; // translate OHLC for
 
seriesTypes.column.prototype.translate.apply(series);
 
// Do the translation
each(series.points, function(point) {
each([point.open, point.high, point.low, point.close, point.low], function(value, i) {
if (value !== null) {
if (hasModifyValue) {
value = series.modifyValue(value);
}
point[translated[i]] = yAxis.toPixels(value, true);
}
});
 
// Align the tooltip to the high value to avoid covering the point
point.tooltipPos[1] =
point.plotHigh + yAxis.pos - series.chart.plotTop;
});
},
 
/**
* Draw the data points
*/
drawPoints: function() {
var series = this,
points = series.points,
chart = series.chart;
 
 
each(points, function(point) {
var plotOpen,
plotClose,
crispCorr,
halfWidth,
path,
graphic = point.graphic,
crispX,
isNew = !graphic;
 
if (point.plotY !== undefined) {
 
// Create and/or update the graphic
if (!graphic) {
point.graphic = graphic = chart.renderer.path()
.add(series.group);
}
 
 
 
// crisp vector coordinates
crispCorr = (graphic.strokeWidth() % 2) / 2;
crispX = Math.round(point.plotX) - crispCorr; // #2596
halfWidth = Math.round(point.shapeArgs.width / 2);
 
// the vertical stem
path = [
'M',
crispX, Math.round(point.yBottom),
'L',
crispX, Math.round(point.plotHigh)
];
 
// open
if (point.open !== null) {
plotOpen = Math.round(point.plotOpen) + crispCorr;
path.push(
'M',
crispX,
plotOpen,
'L',
crispX - halfWidth,
plotOpen
);
}
 
// close
if (point.close !== null) {
plotClose = Math.round(point.plotClose) + crispCorr;
path.push(
'M',
crispX,
plotClose,
'L',
crispX + halfWidth,
plotClose
);
}
 
graphic[isNew ? 'attr' : 'animate']({
d: path
})
.addClass(point.getClassName(), true);
 
}
 
 
});
 
},
 
animate: null // Disable animation
 
/**
* @constructor seriesTypes.ohlc.prototype.pointClass
* @extends {Point}
*/
}, /** @lends seriesTypes.ohlc.prototype.pointClass.prototype */ {
/**
* Extend the parent method by adding up or down to the class name.
*/
getClassName: function() {
return Point.prototype.getClassName.call(this) +
(this.open < this.close ? ' highcharts-point-up' : ' highcharts-point-down');
}
});
/* ****************************************************************************
* End OHLC series code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var defaultPlotOptions = H.defaultPlotOptions,
each = H.each,
merge = H.merge,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
/**
* The candlestick series type.
*
* @constructor seriesTypes.candlestick
* @augments seriesTypes.ohlc
*/
seriesType('candlestick', 'ohlc', merge(defaultPlotOptions.column, {
states: {
hover: {
lineWidth: 2
}
},
tooltip: defaultPlotOptions.ohlc.tooltip,
threshold: null
 
 
}), /** @lends seriesTypes.candlestick */ {
 
/**
* Draw the data points
*/
drawPoints: function() {
var series = this, //state = series.state,
points = series.points,
chart = series.chart;
 
 
each(points, function(point) {
 
var graphic = point.graphic,
plotOpen,
plotClose,
topBox,
bottomBox,
hasTopWhisker,
hasBottomWhisker,
crispCorr,
crispX,
path,
halfWidth,
isNew = !graphic;
 
if (point.plotY !== undefined) {
 
if (!graphic) {
point.graphic = graphic = chart.renderer.path()
.add(series.group);
}
 
 
 
// Crisp vector coordinates
crispCorr = (graphic.strokeWidth() % 2) / 2;
crispX = Math.round(point.plotX) - crispCorr; // #2596
plotOpen = point.plotOpen;
plotClose = point.plotClose;
topBox = Math.min(plotOpen, plotClose);
bottomBox = Math.max(plotOpen, plotClose);
halfWidth = Math.round(point.shapeArgs.width / 2);
hasTopWhisker = Math.round(topBox) !== Math.round(point.plotHigh);
hasBottomWhisker = bottomBox !== point.yBottom;
topBox = Math.round(topBox) + crispCorr;
bottomBox = Math.round(bottomBox) + crispCorr;
 
// Create the path. Due to a bug in Chrome 49, the path is first instanciated
// with no values, then the values pushed. For unknown reasons, instanciated
// the path array with all the values would lead to a crash when updating
// frequently (#5193).
path = [];
path.push(
'M',
crispX - halfWidth, bottomBox,
'L',
crispX - halfWidth, topBox,
'L',
crispX + halfWidth, topBox,
'L',
crispX + halfWidth, bottomBox,
'Z', // Use a close statement to ensure a nice rectangle #2602
'M',
crispX, topBox,
'L',
crispX, hasTopWhisker ? Math.round(point.plotHigh) : topBox, // #460, #2094
'M',
crispX, bottomBox,
'L',
crispX, hasBottomWhisker ? Math.round(point.yBottom) : bottomBox // #460, #2094
);
 
graphic[isNew ? 'attr' : 'animate']({
d: path
})
.addClass(point.getClassName(), true);
 
}
});
 
}
 
 
});
 
/* ****************************************************************************
* End Candlestick series code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
each = H.each,
merge = H.merge,
noop = H.noop,
Renderer = H.Renderer,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes,
SVGRenderer = H.SVGRenderer,
TrackerMixin = H.TrackerMixin,
VMLRenderer = H.VMLRenderer,
symbols = SVGRenderer.prototype.symbols,
stableSort = H.stableSort;
 
/**
* The flags series type.
*
* @constructor seriesTypes.flags
* @augments seriesTypes.column
*/
seriesType('flags', 'column', {
pointRange: 0, // #673
//radius: 2,
shape: 'flag',
stackDistance: 12,
textAlign: 'center',
tooltip: {
pointFormat: '{point.text}<br/>'
},
threshold: null,
y: -30
 
 
}, /** @lends seriesTypes.flags.prototype */ {
sorted: false,
noSharedTooltip: true,
allowDG: false,
takeOrdinalPosition: false, // #1074
trackerGroups: ['markerGroup'],
forceCrop: true,
/**
* Inherit the initialization from base Series.
*/
init: Series.prototype.init,
 
 
 
/**
* Extend the translate method by placing the point on the related series
*/
translate: function() {
 
seriesTypes.column.prototype.translate.apply(this);
 
var series = this,
options = series.options,
chart = series.chart,
points = series.points,
cursor = points.length - 1,
point,
lastPoint,
optionsOnSeries = options.onSeries,
onSeries = optionsOnSeries && chart.get(optionsOnSeries),
onKey = options.onKey || 'y',
step = onSeries && onSeries.options.step,
onData = onSeries && onSeries.points,
i = onData && onData.length,
xAxis = series.xAxis,
yAxis = series.yAxis,
xAxisExt = xAxis.getExtremes(),
xOffset = 0,
leftPoint,
lastX,
rightPoint,
currentDataGrouping;
 
// relate to a master series
if (onSeries && onSeries.visible && i) {
xOffset = (onSeries.pointXOffset || 0) + (onSeries.barW || 0) / 2;
currentDataGrouping = onSeries.currentDataGrouping;
lastX = onData[i - 1].x + (currentDataGrouping ? currentDataGrouping.totalRange : 0); // #2374
 
// sort the data points
stableSort(points, function(a, b) {
return (a.x - b.x);
});
 
onKey = 'plot' + onKey[0].toUpperCase() + onKey.substr(1);
while (i-- && points[cursor]) {
point = points[cursor];
leftPoint = onData[i];
if (leftPoint.x <= point.x && leftPoint[onKey] !== undefined) {
if (point.x <= lastX) { // #803
 
point.plotY = leftPoint[onKey];
 
// interpolate between points, #666
if (leftPoint.x < point.x && !step) {
rightPoint = onData[i + 1];
if (rightPoint && rightPoint[onKey] !== undefined) {
point.plotY +=
((point.x - leftPoint.x) / (rightPoint.x - leftPoint.x)) * // the distance ratio, between 0 and 1
(rightPoint[onKey] - leftPoint[onKey]); // the y distance
}
}
}
cursor--;
i++; // check again for points in the same x position
if (cursor < 0) {
break;
}
}
}
}
 
// Add plotY position and handle stacking
each(points, function(point, i) {
 
var stackIndex;
 
// Undefined plotY means the point is either on axis, outside series
// range or hidden series. If the series is outside the range of the
// x axis it should fall through with an undefined plotY, but then
// we must remove the shapeArgs (#847).
if (point.plotY === undefined) {
if (point.x >= xAxisExt.min && point.x <= xAxisExt.max) {
// we're inside xAxis range
point.plotY = chart.chartHeight - xAxis.bottom -
(xAxis.opposite ? xAxis.height : 0) +
xAxis.offset - yAxis.top; // #3517
} else {
point.shapeArgs = {}; // 847
}
}
point.plotX += xOffset; // #2049
// if multiple flags appear at the same x, order them into a stack
lastPoint = points[i - 1];
if (lastPoint && lastPoint.plotX === point.plotX) {
if (lastPoint.stackIndex === undefined) {
lastPoint.stackIndex = 0;
}
stackIndex = lastPoint.stackIndex + 1;
}
point.stackIndex = stackIndex; // #3639
});
 
 
},
 
/**
* Draw the markers
*/
drawPoints: function() {
var series = this,
points = series.points,
chart = series.chart,
renderer = chart.renderer,
plotX,
plotY,
options = series.options,
optionsY = options.y,
shape,
i,
point,
graphic,
stackIndex,
anchorX,
anchorY,
outsideRight,
yAxis = series.yAxis;
 
i = points.length;
while (i--) {
point = points[i];
outsideRight = point.plotX > series.xAxis.len;
plotX = point.plotX;
stackIndex = point.stackIndex;
shape = point.options.shape || options.shape;
plotY = point.plotY;
 
if (plotY !== undefined) {
plotY = point.plotY + optionsY - (stackIndex !== undefined && stackIndex * options.stackDistance);
}
anchorX = stackIndex ? undefined : point.plotX; // skip connectors for higher level stacked points
anchorY = stackIndex ? undefined : point.plotY;
 
graphic = point.graphic;
 
// Only draw the point if y is defined and the flag is within the visible area
if (plotY !== undefined && plotX >= 0 && !outsideRight) {
 
// Create the flag
if (!graphic) {
graphic = point.graphic = renderer.label(
'',
null,
null,
shape,
null,
null,
options.useHTML
)
 
.attr({
align: shape === 'flag' ? 'left' : 'center',
width: options.width,
height: options.height,
'text-align': options.textAlign
})
.addClass('highcharts-point')
.add(series.markerGroup);
 
// Add reference to the point for tracker (#6303)
if (point.graphic.div) {
point.graphic.div.point = point;
}
 
 
}
 
if (plotX > 0) { // #3119
plotX -= graphic.strokeWidth() % 2; // #4285
}
 
// Plant the flag
graphic.attr({
text: point.options.title || options.title || 'A',
x: plotX,
y: plotY,
anchorX: anchorX,
anchorY: anchorY
});
 
// Set the tooltip anchor position
point.tooltipPos = chart.inverted ? [yAxis.len + yAxis.pos - chart.plotLeft - plotY, series.xAxis.len - plotX] : [plotX, plotY + yAxis.pos - chart.plotTop]; // #6327
 
} else if (graphic) {
point.graphic = graphic.destroy();
}
 
}
 
// Might be a mix of SVG and HTML and we need events for both (#6303)
if (options.useHTML) {
H.wrap(series.markerGroup, 'on', function(proceed) {
return H.SVGElement.prototype.on.apply(
proceed.apply(this, [].slice.call(arguments, 1)), // for HTML
[].slice.call(arguments, 1)); // and for SVG
});
}
 
},
 
/**
* Extend the column trackers with listeners to expand and contract stacks
*/
drawTracker: function() {
var series = this,
points = series.points;
 
TrackerMixin.drawTrackerPoint.apply(this);
 
// Bring each stacked flag up on mouse over, this allows readability of vertically
// stacked elements as well as tight points on the x axis. #1924.
each(points, function(point) {
var graphic = point.graphic;
if (graphic) {
addEvent(graphic.element, 'mouseover', function() {
 
// Raise this point
if (point.stackIndex > 0 && !point.raised) {
point._y = graphic.y;
graphic.attr({
y: point._y - 8
});
point.raised = true;
}
 
// Revert other raised points
each(points, function(otherPoint) {
if (otherPoint !== point && otherPoint.raised && otherPoint.graphic) {
otherPoint.graphic.attr({
y: otherPoint._y
});
otherPoint.raised = false;
}
});
});
}
});
},
 
animate: noop, // Disable animation
buildKDTree: noop,
setClip: noop
 
});
 
// create the flag icon with anchor
symbols.flag = function(x, y, w, h, options) {
var anchorX = (options && options.anchorX) || x,
anchorY = (options && options.anchorY) || y;
 
return [
'M', anchorX, anchorY,
'L', x, y + h,
x, y,
x + w, y,
x + w, y + h,
x, y + h,
'Z'
];
};
 
// create the circlepin and squarepin icons with anchor
each(['circle', 'square'], function(shape) {
symbols[shape + 'pin'] = function(x, y, w, h, options) {
 
var anchorX = options && options.anchorX,
anchorY = options && options.anchorY,
path,
labelTopOrBottomY;
 
// For single-letter flags, make sure circular flags are not taller than their width
if (shape === 'circle' && h > w) {
x -= Math.round((h - w) / 2);
w = h;
}
 
path = symbols[shape](x, y, w, h);
 
if (anchorX && anchorY) {
// if the label is below the anchor, draw the connecting line from the top edge of the label
// otherwise start drawing from the bottom edge
labelTopOrBottomY = (y > anchorY) ? y : y + h;
path.push('M', anchorX, labelTopOrBottomY, 'L', anchorX, anchorY);
}
 
return path;
};
});
 
 
/* ****************************************************************************
* End Flags series code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
Axis = H.Axis,
correctFloat = H.correctFloat,
defaultOptions = H.defaultOptions,
defined = H.defined,
destroyObjectProperties = H.destroyObjectProperties,
doc = H.doc,
each = H.each,
fireEvent = H.fireEvent,
hasTouch = H.hasTouch,
isTouchDevice = H.isTouchDevice,
merge = H.merge,
pick = H.pick,
removeEvent = H.removeEvent,
svg = H.svg,
wrap = H.wrap,
swapXY;
 
var defaultScrollbarOptions = {
//enabled: true
height: isTouchDevice ? 20 : 14,
// trackBorderRadius: 0
barBorderRadius: 0,
buttonBorderRadius: 0,
liveRedraw: svg && !isTouchDevice,
margin: 10,
minWidth: 6,
//showFull: true,
//size: null,
step: 0.2,
zIndex: 3
 
};
 
defaultOptions.scrollbar = merge(true, defaultScrollbarOptions, defaultOptions.scrollbar);
 
/**
* When we have vertical scrollbar, rifles and arrow in buttons should be rotated.
* The same method is used in Navigator's handles, to rotate them.
* @param {Array} path - path to be rotated
* @param {Boolean} vertical - if vertical scrollbar, swap x-y values
*/
H.swapXY = swapXY = function(path, vertical) {
var i,
len = path.length,
temp;
 
if (vertical) {
for (i = 0; i < len; i += 3) {
temp = path[i + 1];
path[i + 1] = path[i + 2];
path[i + 2] = temp;
}
}
 
return path;
};
 
/**
* A reusable scrollbar, internally used in Highstock's navigator and optionally
* on individual axes.
*
* @class
* @param {Object} renderer
* @param {Object} options
* @param {Object} chart
*/
function Scrollbar(renderer, options, chart) { // docs
this.init(renderer, options, chart);
}
 
Scrollbar.prototype = {
 
init: function(renderer, options, chart) {
 
this.scrollbarButtons = [];
 
this.renderer = renderer;
 
this.userOptions = options;
this.options = merge(defaultScrollbarOptions, options);
 
this.chart = chart;
 
this.size = pick(this.options.size, this.options.height); // backward compatibility
 
// Init
if (options.enabled) {
this.render();
this.initEvents();
this.addEvents();
}
},
 
/**
* Render scrollbar with all required items.
*/
render: function() {
var scroller = this,
renderer = scroller.renderer,
options = scroller.options,
size = scroller.size,
group;
 
// Draw the scrollbar group
scroller.group = group = renderer.g('scrollbar').attr({
zIndex: options.zIndex,
translateY: -99999
}).add();
 
// Draw the scrollbar track:
scroller.track = renderer.rect()
.addClass('highcharts-scrollbar-track')
.attr({
x: 0,
r: options.trackBorderRadius || 0,
height: size,
width: size
}).add(group);
 
 
this.trackBorderWidth = scroller.track.strokeWidth();
scroller.track.attr({
y: -this.trackBorderWidth % 2 / 2
});
 
 
// Draw the scrollbar itself
scroller.scrollbarGroup = renderer.g().add(group);
 
scroller.scrollbar = renderer.rect()
.addClass('highcharts-scrollbar-thumb')
.attr({
height: size,
width: size,
r: options.barBorderRadius || 0
}).add(scroller.scrollbarGroup);
 
scroller.scrollbarRifles = renderer.path(
swapXY([
'M', -3, size / 4,
'L', -3, 2 * size / 3,
'M',
0, size / 4,
'L',
0, 2 * size / 3,
'M',
3, size / 4,
'L',
3, 2 * size / 3
], options.vertical))
.addClass('highcharts-scrollbar-rifles')
.add(scroller.scrollbarGroup);
 
 
scroller.scrollbarStrokeWidth = scroller.scrollbar.strokeWidth();
scroller.scrollbarGroup.translate(-scroller.scrollbarStrokeWidth % 2 / 2, -scroller.scrollbarStrokeWidth % 2 / 2);
 
// Draw the buttons:
scroller.drawScrollbarButton(0);
scroller.drawScrollbarButton(1);
},
 
/**
* Position the scrollbar, method called from a parent with defined dimensions
* @param {Number} x - x-position on the chart
* @param {Number} y - y-position on the chart
* @param {Number} width - width of the scrollbar
* @param {Number} height - height of the scorllbar
*/
position: function(x, y, width, height) {
var scroller = this,
options = scroller.options,
vertical = options.vertical,
xOffset = height,
yOffset = 0,
method = scroller.rendered ? 'animate' : 'attr';
 
scroller.x = x;
scroller.y = y + this.trackBorderWidth;
scroller.width = width; // width with buttons
scroller.height = height;
scroller.xOffset = xOffset;
scroller.yOffset = yOffset;
 
// If Scrollbar is a vertical type, swap options:
if (vertical) {
scroller.width = scroller.yOffset = width = yOffset = scroller.size;
scroller.xOffset = xOffset = 0;
scroller.barWidth = height - width * 2; // width without buttons
scroller.x = x = x + scroller.options.margin;
} else {
scroller.height = scroller.xOffset = height = xOffset = scroller.size;
scroller.barWidth = width - height * 2; // width without buttons
scroller.y = scroller.y + scroller.options.margin;
}
 
// Set general position for a group:
scroller.group[method]({
translateX: x,
translateY: scroller.y
});
 
// Resize background/track:
scroller.track[method]({
width: width,
height: height
});
 
// Move right/bottom button ot it's place:
scroller.scrollbarButtons[1][method]({
translateX: vertical ? 0 : width - xOffset,
translateY: vertical ? height - yOffset : 0
});
},
 
/**
* Draw the scrollbar buttons with arrows
* @param {Number} index 0 is left, 1 is right
*/
drawScrollbarButton: function(index) {
var scroller = this,
renderer = scroller.renderer,
scrollbarButtons = scroller.scrollbarButtons,
options = scroller.options,
size = scroller.size,
group,
tempElem;
 
group = renderer.g().add(scroller.group);
scrollbarButtons.push(group);
 
// Create a rectangle for the scrollbar button
tempElem = renderer.rect()
.addClass('highcharts-scrollbar-button')
.add(group);
 
 
 
// Place the rectangle based on the rendered stroke width
tempElem.attr(tempElem.crisp({
x: -0.5,
y: -0.5,
width: size + 1, // +1 to compensate for crispifying in rect method
height: size + 1,
r: options.buttonBorderRadius
}, tempElem.strokeWidth()));
 
// Button arrow
tempElem = renderer
.path(swapXY([
'M',
size / 2 + (index ? -1 : 1),
size / 2 - 3,
'L',
size / 2 + (index ? -1 : 1),
size / 2 + 3,
'L',
size / 2 + (index ? 2 : -2),
size / 2
], options.vertical))
.addClass('highcharts-scrollbar-arrow')
.add(scrollbarButtons[index]);
 
 
},
 
/**
* Set scrollbar size, with a given scale.
* @param {Number} from - scale (0-1) where bar should start
* @param {Number} to - scale (0-1) where bar should end
*/
setRange: function(from, to) {
var scroller = this,
options = scroller.options,
vertical = options.vertical,
minWidth = options.minWidth,
fullWidth = scroller.barWidth,
fromPX,
toPX,
newPos,
newSize,
newRiflesPos,
method = this.rendered && !this.hasDragged ? 'animate' : 'attr';
 
if (!defined(fullWidth)) {
return;
}
 
from = Math.max(from, 0);
fromPX = Math.ceil(fullWidth * from);
toPX = fullWidth * Math.min(to, 1);
scroller.calculatedWidth = newSize = correctFloat(toPX - fromPX);
 
// We need to recalculate position, if minWidth is used
if (newSize < minWidth) {
fromPX = (fullWidth - minWidth + newSize) * from;
newSize = minWidth;
}
newPos = Math.floor(fromPX + scroller.xOffset + scroller.yOffset);
newRiflesPos = newSize / 2 - 0.5; // -0.5 -> rifle line width / 2
 
// Store current position:
scroller.from = from;
scroller.to = to;
 
if (!vertical) {
scroller.scrollbarGroup[method]({
translateX: newPos
});
scroller.scrollbar[method]({
width: newSize
});
scroller.scrollbarRifles[method]({
translateX: newRiflesPos
});
scroller.scrollbarLeft = newPos;
scroller.scrollbarTop = 0;
} else {
scroller.scrollbarGroup[method]({
translateY: newPos
});
scroller.scrollbar[method]({
height: newSize
});
scroller.scrollbarRifles[method]({
translateY: newRiflesPos
});
scroller.scrollbarTop = newPos;
scroller.scrollbarLeft = 0;
}
 
if (newSize <= 12) {
scroller.scrollbarRifles.hide();
} else {
scroller.scrollbarRifles.show(true);
}
 
// Show or hide the scrollbar based on the showFull setting
if (options.showFull === false) {
if (from <= 0 && to >= 1) {
scroller.group.hide();
} else {
scroller.group.show();
}
}
 
scroller.rendered = true;
},
 
/**
* Init events methods, so we have an access to the Scrollbar itself
*/
initEvents: function() {
var scroller = this;
/**
* Event handler for the mouse move event.
*/
scroller.mouseMoveHandler = function(e) {
var normalizedEvent = scroller.chart.pointer.normalize(e),
options = scroller.options,
direction = options.vertical ? 'chartY' : 'chartX',
initPositions = scroller.initPositions,
scrollPosition,
chartPosition,
change;
 
// In iOS, a mousemove event with e.pageX === 0 is fired when holding the finger
// down in the center of the scrollbar. This should be ignored.
if (scroller.grabbedCenter && (!e.touches || e.touches[0][direction] !== 0)) { // #4696, scrollbar failed on Android
chartPosition = scroller.cursorToScrollbarPosition(normalizedEvent)[direction];
scrollPosition = scroller[direction];
 
change = chartPosition - scrollPosition;
 
scroller.hasDragged = true;
scroller.updatePosition(initPositions[0] + change, initPositions[1] + change);
 
if (scroller.hasDragged) {
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMType: e.type,
DOMEvent: e
});
}
}
};
 
/**
* Event handler for the mouse up event.
*/
scroller.mouseUpHandler = function(e) {
if (scroller.hasDragged) {
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMType: e.type,
DOMEvent: e
});
}
scroller.grabbedCenter = scroller.hasDragged = scroller.chartX = scroller.chartY = null;
};
 
scroller.mouseDownHandler = function(e) {
var normalizedEvent = scroller.chart.pointer.normalize(e),
mousePosition = scroller.cursorToScrollbarPosition(normalizedEvent);
 
scroller.chartX = mousePosition.chartX;
scroller.chartY = mousePosition.chartY;
scroller.initPositions = [scroller.from, scroller.to];
 
scroller.grabbedCenter = true;
};
 
scroller.buttonToMinClick = function(e) {
var range = correctFloat(scroller.to - scroller.from) * scroller.options.step;
scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMEvent: e
});
};
 
scroller.buttonToMaxClick = function(e) {
var range = (scroller.to - scroller.from) * scroller.options.step;
scroller.updatePosition(scroller.from + range, scroller.to + range);
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMEvent: e
});
};
 
scroller.trackClick = function(e) {
var normalizedEvent = scroller.chart.pointer.normalize(e),
range = scroller.to - scroller.from,
top = scroller.y + scroller.scrollbarTop,
left = scroller.x + scroller.scrollbarLeft;
 
if ((scroller.options.vertical && normalizedEvent.chartY > top) ||
(!scroller.options.vertical && normalizedEvent.chartX > left)) {
// On the top or on the left side of the track:
scroller.updatePosition(scroller.from + range, scroller.to + range);
} else {
// On the bottom or the right side of the track:
scroller.updatePosition(scroller.from - range, scroller.to - range);
}
 
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMEvent: e
});
};
},
 
/**
* Get normalized (0-1) cursor position over the scrollbar
* @param {Event} normalizedEvent - normalized event, with chartX and chartY values
* @return {Object} Local position {chartX, chartY}
*/
cursorToScrollbarPosition: function(normalizedEvent) {
var scroller = this,
options = scroller.options,
minWidthDifference = options.minWidth > scroller.calculatedWidth ? options.minWidth : 0; // minWidth distorts translation
 
return {
chartX: (normalizedEvent.chartX - scroller.x - scroller.xOffset) / (scroller.barWidth - minWidthDifference),
chartY: (normalizedEvent.chartY - scroller.y - scroller.yOffset) / (scroller.barWidth - minWidthDifference)
};
},
 
/**
* Update position option in the Scrollbar, with normalized 0-1 scale
*/
updatePosition: function(from, to) {
if (to > 1) {
from = correctFloat(1 - correctFloat(to - from));
to = 1;
}
 
if (from < 0) {
to = correctFloat(to - from);
from = 0;
}
 
this.from = from;
this.to = to;
},
 
/**
* Update the scrollbar with new options
*/
update: function(options) {
this.destroy();
this.init(this.chart.renderer, merge(true, this.options, options), this.chart);
},
 
/**
* Set up the mouse and touch events for the Scrollbar
*/
addEvents: function() {
var buttonsOrder = this.options.inverted ? [1, 0] : [0, 1],
buttons = this.scrollbarButtons,
bar = this.scrollbarGroup.element,
track = this.track.element,
mouseDownHandler = this.mouseDownHandler,
mouseMoveHandler = this.mouseMoveHandler,
mouseUpHandler = this.mouseUpHandler,
_events;
 
// Mouse events
_events = [
[buttons[buttonsOrder[0]].element, 'click', this.buttonToMinClick],
[buttons[buttonsOrder[1]].element, 'click', this.buttonToMaxClick],
[track, 'click', this.trackClick],
[bar, 'mousedown', mouseDownHandler],
[doc, 'mousemove', mouseMoveHandler],
[doc, 'mouseup', mouseUpHandler]
];
 
// Touch events
if (hasTouch) {
_events.push(
[bar, 'touchstart', mouseDownHandler], [doc, 'touchmove', mouseMoveHandler], [doc, 'touchend', mouseUpHandler]
);
}
 
// Add them all
each(_events, function(args) {
addEvent.apply(null, args);
});
this._events = _events;
},
 
/**
* Removes the event handlers attached previously with addEvents.
*/
removeEvents: function() {
each(this._events, function(args) {
removeEvent.apply(null, args);
});
this._events.length = 0;
},
 
/**
* Destroys allocated elements.
*/
destroy: function() {
 
var scroller = this.chart.scroller;
 
// Disconnect events added in addEvents
this.removeEvents();
 
// Destroy properties
each(['track', 'scrollbarRifles', 'scrollbar', 'scrollbarGroup', 'group'], function(prop) {
if (this[prop] && this[prop].destroy) {
this[prop] = this[prop].destroy();
}
}, this);
 
if (scroller && this === scroller.scrollbar) { // #6421, chart may have more scrollbars
scroller.scrollbar = null;
 
// Destroy elements in collection
destroyObjectProperties(scroller.scrollbarButtons);
}
}
};
 
/**
* Wrap axis initialization and create scrollbar if enabled:
*/
wrap(Axis.prototype, 'init', function(proceed) {
var axis = this;
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
if (axis.options.scrollbar && axis.options.scrollbar.enabled) {
// Predefined options:
axis.options.scrollbar.vertical = !axis.horiz;
axis.options.startOnTick = axis.options.endOnTick = false;
 
axis.scrollbar = new Scrollbar(axis.chart.renderer, axis.options.scrollbar, axis.chart);
 
addEvent(axis.scrollbar, 'changed', function(e) {
var unitedMin = Math.min(pick(axis.options.min, axis.min), axis.min, axis.dataMin),
unitedMax = Math.max(pick(axis.options.max, axis.max), axis.max, axis.dataMax),
range = unitedMax - unitedMin,
to,
from;
 
if ((axis.horiz && !axis.reversed) || (!axis.horiz && axis.reversed)) {
to = unitedMin + range * this.to;
from = unitedMin + range * this.from;
} else {
// y-values in browser are reversed, but this also applies for reversed horizontal axis:
to = unitedMin + range * (1 - this.from);
from = unitedMin + range * (1 - this.to);
}
 
axis.setExtremes(from, to, true, false, e);
});
}
});
 
/**
* Wrap rendering axis, and update scrollbar if one is created:
*/
wrap(Axis.prototype, 'render', function(proceed) {
var axis = this,
scrollMin = Math.min(pick(axis.options.min, axis.min), axis.min, axis.dataMin),
scrollMax = Math.max(pick(axis.options.max, axis.max), axis.max, axis.dataMax),
scrollbar = axis.scrollbar,
titleOffset = axis.titleOffset || 0,
offsetsIndex,
from,
to;
 
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
if (scrollbar) {
 
if (axis.horiz) {
scrollbar.position(
axis.left,
axis.top + axis.height + 2 + axis.chart.scrollbarsOffsets[1] +
(axis.opposite ?
0 :
titleOffset + axis.axisTitleMargin + axis.offset
),
axis.width,
axis.height
);
offsetsIndex = 1;
} else {
scrollbar.position(
axis.left + axis.width + 2 + axis.chart.scrollbarsOffsets[0] +
(axis.opposite ?
titleOffset + axis.axisTitleMargin + axis.offset :
0
),
axis.top,
axis.width,
axis.height
);
offsetsIndex = 0;
}
 
if ((!axis.opposite && !axis.horiz) || (axis.opposite && axis.horiz)) {
axis.chart.scrollbarsOffsets[offsetsIndex] +=
axis.scrollbar.size + axis.scrollbar.options.margin;
}
 
if (isNaN(scrollMin) || isNaN(scrollMax) || !defined(axis.min) || !defined(axis.max)) {
scrollbar.setRange(0, 0); // default action: when there is not extremes on the axis, but scrollbar exists, make it full size
} else {
from = (axis.min - scrollMin) / (scrollMax - scrollMin);
to = (axis.max - scrollMin) / (scrollMax - scrollMin);
 
if ((axis.horiz && !axis.reversed) || (!axis.horiz && axis.reversed)) {
scrollbar.setRange(from, to);
} else {
scrollbar.setRange(1 - to, 1 - from); // inverse vertical axis
}
}
}
});
 
/**
* Make space for a scrollbar
*/
wrap(Axis.prototype, 'getOffset', function(proceed) {
var axis = this,
index = axis.horiz ? 2 : 1,
scrollbar = axis.scrollbar;
 
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
if (scrollbar) {
axis.chart.scrollbarsOffsets = [0, 0]; // reset scrollbars offsets
axis.chart.axisOffset[index] += scrollbar.size + scrollbar.options.margin;
}
});
 
/**
* Destroy scrollbar when connected to the specific axis
*/
wrap(Axis.prototype, 'destroy', function(proceed) {
if (this.scrollbar) {
this.scrollbar = this.scrollbar.destroy();
}
 
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
H.Scrollbar = Scrollbar;
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
/* ****************************************************************************
* Start Navigator code *
*****************************************************************************/
var addEvent = H.addEvent,
Axis = H.Axis,
Chart = H.Chart,
color = H.color,
defaultDataGroupingUnits = H.defaultDataGroupingUnits,
defaultOptions = H.defaultOptions,
defined = H.defined,
destroyObjectProperties = H.destroyObjectProperties,
doc = H.doc,
each = H.each,
erase = H.erase,
error = H.error,
extend = H.extend,
grep = H.grep,
hasTouch = H.hasTouch,
isNumber = H.isNumber,
isObject = H.isObject,
merge = H.merge,
pick = H.pick,
removeEvent = H.removeEvent,
Scrollbar = H.Scrollbar,
Series = H.Series,
seriesTypes = H.seriesTypes,
wrap = H.wrap,
swapXY = H.swapXY,
 
units = [].concat(defaultDataGroupingUnits), // copy
defaultSeriesType,
 
// Finding the min or max of a set of variables where we don't know if they are defined,
// is a pattern that is repeated several places in Highcharts. Consider making this
// a global utility method.
numExt = function(extreme) {
var numbers = grep(arguments, isNumber);
if (numbers.length) {
return Math[extreme].apply(0, numbers);
}
};
 
// add more resolution to units
units[4] = ['day', [1, 2, 3, 4]]; // allow more days
units[5] = ['week', [1, 2, 3]]; // allow more weeks
 
defaultSeriesType = seriesTypes.areaspline === undefined ? 'line' : 'areaspline';
 
extend(defaultOptions, {
navigator: {
//enabled: true,
height: 40,
margin: 25,
maskInside: true,
 
series: {
type: defaultSeriesType,
 
compare: null,
dataGrouping: {
approximation: 'average',
enabled: true,
groupPixelWidth: 2,
smoothed: true,
units: units
},
dataLabels: {
enabled: false,
zIndex: 2 // #1839
},
id: 'highcharts-navigator-series',
className: 'highcharts-navigator-series',
lineColor: null, // Allow color setting while disallowing default candlestick setting (#4602)
marker: {
enabled: false
},
pointRange: 0,
shadow: false,
threshold: null
},
//top: undefined,
//opposite: undefined,
xAxis: {
className: 'highcharts-navigator-xaxis',
tickLength: 0,
 
tickPixelInterval: 200,
labels: {
align: 'left',
 
x: 3,
y: -4
},
crosshair: false
},
yAxis: {
className: 'highcharts-navigator-yaxis',
 
startOnTick: false,
endOnTick: false,
minPadding: 0.1,
maxPadding: 0.1,
labels: {
enabled: false
},
crosshair: false,
title: {
text: null
},
tickLength: 0,
tickWidth: 0
}
}
});
 
/**
* The Navigator class
* @param {Object} chart - Chart object
* @class
*/
function Navigator(chart) {
this.init(chart);
}
 
Navigator.prototype = {
/**
* Draw one of the handles on the side of the zoomed range in the navigator
* @param {Number} x The x center for the handle
* @param {Number} index 0 for left and 1 for right
* @param {Boolean} inverted flag for chart.inverted
* @param {String} verb use 'animate' or 'attr'
*/
drawHandle: function(x, index, inverted, verb) {
var navigator = this;
 
// Place it
navigator.handles[index][verb](inverted ? {
translateX: Math.round(navigator.left + navigator.height / 2 - 8),
translateY: Math.round(navigator.top + parseInt(x, 10) + 0.5)
} : {
translateX: Math.round(navigator.left + parseInt(x, 10)),
translateY: Math.round(navigator.top + navigator.height / 2 - 8)
});
},
 
/**
* Draw one of the handles on the side of the zoomed range in the navigator
* @param {Boolean} inverted flag for chart.inverted
* @returns {Array} Path to be used in a handle
*/
getHandlePath: function(inverted) {
return swapXY([
'M', -4.5, 0.5,
'L',
3.5, 0.5,
'L',
3.5, 15.5,
'L', -4.5, 15.5,
'L', -4.5, 0.5,
'M', -1.5, 4,
'L', -1.5, 12,
'M',
0.5, 4,
'L',
0.5, 12
], inverted);
},
/**
* Render outline around the zoomed range
* @param {Number} zoomedMin in pixels position where zoomed range starts
* @param {Number} zoomedMax in pixels position where zoomed range ends
* @param {Boolean} inverted flag if chart is inverted
* @param {String} verb use 'animate' or 'attr'
*/
drawOutline: function(zoomedMin, zoomedMax, inverted, verb) {
var navigator = this,
maskInside = navigator.navigatorOptions.maskInside,
outlineWidth = navigator.outline.strokeWidth(),
halfOutline = outlineWidth / 2,
outlineCorrection = (outlineWidth % 2) / 2, // #5800
outlineHeight = navigator.outlineHeight,
scrollbarHeight = navigator.scrollbarHeight,
navigatorSize = navigator.size,
left = navigator.left - scrollbarHeight,
navigatorTop = navigator.top,
verticalMin,
path;
 
if (inverted) {
left -= halfOutline;
verticalMin = navigatorTop + zoomedMax + outlineCorrection;
zoomedMax = navigatorTop + zoomedMin + outlineCorrection;
 
path = [
'M',
left + outlineHeight,
navigatorTop - scrollbarHeight - outlineCorrection, // top edge
'L',
left + outlineHeight,
verticalMin, // top right of zoomed range
'L',
left,
verticalMin, // top left of z.r.
'L',
left,
zoomedMax, // bottom left of z.r.
'L',
left + outlineHeight,
zoomedMax, // bottom right of z.r.
'L',
left + outlineHeight,
navigatorTop + navigatorSize + scrollbarHeight // bottom edge
].concat(maskInside ? [
'M',
left + outlineHeight,
verticalMin - halfOutline, // upper left of zoomed range
'L',
left + outlineHeight,
zoomedMax + halfOutline // upper right of z.r.
] : []);
} else {
zoomedMin += left + scrollbarHeight - outlineCorrection;
zoomedMax += left + scrollbarHeight - outlineCorrection;
navigatorTop += halfOutline;
 
path = [
'M',
left,
navigatorTop, // left
'L',
zoomedMin,
navigatorTop, // upper left of zoomed range
'L',
zoomedMin,
navigatorTop + outlineHeight, // lower left of z.r.
'L',
zoomedMax,
navigatorTop + outlineHeight, // lower right of z.r.
'L',
zoomedMax,
navigatorTop, // upper right of z.r.
'L',
left + navigatorSize + scrollbarHeight * 2,
navigatorTop // right
].concat(maskInside ? [
'M',
zoomedMin - halfOutline,
navigatorTop, // upper left of zoomed range
'L',
zoomedMax + halfOutline,
navigatorTop // upper right of z.r.
] : []);
}
navigator.outline[verb]({
d: path
});
},
 
/**
* Render outline around the zoomed range
* @param {Number} zoomedMin in pixels position where zoomed range starts
* @param {Number} zoomedMax in pixels position where zoomed range ends
* @param {Boolean} inverted flag if chart is inverted
* @param {String} verb use 'animate' or 'attr'
*/
drawMasks: function(zoomedMin, zoomedMax, inverted, verb) {
var navigator = this,
left = navigator.left,
top = navigator.top,
navigatorHeight = navigator.height,
height,
width,
x,
y;
 
// Determine rectangle position & size
// According to (non)inverted position:
if (inverted) {
x = [left, left, left];
y = [top, top + zoomedMin, top + zoomedMax];
width = [navigatorHeight, navigatorHeight, navigatorHeight];
height = [
zoomedMin,
zoomedMax - zoomedMin,
navigator.size - zoomedMax
];
} else {
x = [left, left + zoomedMin, left + zoomedMax];
y = [top, top, top];
width = [
zoomedMin,
zoomedMax - zoomedMin,
navigator.size - zoomedMax
];
height = [navigatorHeight, navigatorHeight, navigatorHeight];
}
each(navigator.shades, function(shade, i) {
shade[verb]({
x: x[i],
y: y[i],
width: width[i],
height: height[i]
});
});
},
 
/**
* Generate DOM elements for a navigator:
* - main navigator group
* - all shades
* - outline
* - handles
*/
renderElements: function() {
var navigator = this,
navigatorOptions = navigator.navigatorOptions,
maskInside = navigatorOptions.maskInside,
chart = navigator.chart,
inverted = chart.inverted,
renderer = chart.renderer,
navigatorGroup;
 
// Create the main navigator group
navigator.navigatorGroup = navigatorGroup = renderer.g('navigator')
.attr({
zIndex: 8,
visibility: 'hidden'
})
.add();
 
 
 
 
// Create masks, each mask will get events and fill:
each([!maskInside, maskInside, !maskInside], function(hasMask, index) {
navigator.shades[index] = renderer.rect()
.addClass('highcharts-navigator-mask' +
(index === 1 ? '-inside' : '-outside'))
 
.add(navigatorGroup);
});
 
// Create the outline:
navigator.outline = renderer.path()
.addClass('highcharts-navigator-outline')
 
.add(navigatorGroup);
 
// Create the handlers:
each([0, 1], function(index) {
navigator.handles[index] = renderer
.path(navigator.getHandlePath(inverted))
// zIndex = 6 for right handle, 7 for left.
// Can't be 10, because of the tooltip in inverted chart #2908
.attr({
zIndex: 7 - index
})
.addClass(
'highcharts-navigator-handle highcharts-navigator-handle-' + ['left', 'right'][index]
).add(navigatorGroup);
 
 
});
},
 
/**
* Update navigator
* @param {Object} options Options to merge in when updating navigator
*/
update: function(options) {
this.destroy();
var chartOptions = this.chart.options;
merge(true, chartOptions.navigator, this.options, options);
this.init(this.chart);
},
 
/**
* Render the navigator
* @param {Number} min X axis value minimum
* @param {Number} max X axis value maximum
* @param {Number} pxMin Pixel value minimum
* @param {Number} pxMax Pixel value maximum
*/
render: function(min, max, pxMin, pxMax) {
var navigator = this,
chart = navigator.chart,
navigatorWidth,
scrollbarLeft,
scrollbarTop,
scrollbarHeight = navigator.scrollbarHeight,
navigatorSize,
xAxis = navigator.xAxis,
scrollbarXAxis = xAxis.fake ? chart.xAxis[0] : xAxis,
navigatorEnabled = navigator.navigatorEnabled,
zoomedMin,
zoomedMax,
rendered = navigator.rendered,
inverted = chart.inverted,
verb,
newMin,
newMax,
minRange = chart.xAxis[0].minRange;
 
// Don't redraw while moving the handles (#4703).
if (this.hasDragged && !defined(pxMin)) {
return;
}
 
// Don't render the navigator until we have data (#486, #4202, #5172).
if (!isNumber(min) || !isNumber(max)) {
// However, if navigator was already rendered, we may need to resize
// it. For example hidden series, but visible navigator (#6022).
if (rendered) {
pxMin = 0;
pxMax = xAxis.width;
} else {
return;
}
}
 
navigator.left = pick(
xAxis.left,
// in case of scrollbar only, without navigator
chart.plotLeft + scrollbarHeight + (inverted ? chart.plotWidth : 0)
);
 
navigator.size = zoomedMax = navigatorSize = pick(
xAxis.len,
(inverted ? chart.plotHeight : chart.plotWidth) - 2 * scrollbarHeight
);
 
if (inverted) {
navigatorWidth = scrollbarHeight;
} else {
navigatorWidth = navigatorSize + 2 * scrollbarHeight;
}
 
// Get the pixel position of the handles
pxMin = pick(pxMin, xAxis.toPixels(min, true));
pxMax = pick(pxMax, xAxis.toPixels(max, true));
 
if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) { // Verify (#1851, #2238)
pxMin = 0;
pxMax = navigatorWidth;
}
 
// Are we below the minRange? (#2618, #6191)
newMin = xAxis.toValue(pxMin, true);
newMax = xAxis.toValue(pxMax, true);
if (Math.abs(newMax - newMin) < minRange) {
if (this.grabbedLeft) {
pxMin = xAxis.toPixels(newMax - minRange, true);
} else if (this.grabbedRight) {
pxMax = xAxis.toPixels(newMin + minRange, true);
} else {
return;
}
}
 
// Handles are allowed to cross, but never exceed the plot area
navigator.zoomedMax = Math.min(Math.max(pxMin, pxMax, 0), zoomedMax);
navigator.zoomedMin = Math.min(
Math.max(
navigator.fixedWidth ?
navigator.zoomedMax - navigator.fixedWidth :
Math.min(pxMin, pxMax),
0
),
zoomedMax
);
 
navigator.range = navigator.zoomedMax - navigator.zoomedMin;
 
zoomedMax = Math.round(navigator.zoomedMax);
zoomedMin = Math.round(navigator.zoomedMin);
 
if (navigatorEnabled) {
navigator.navigatorGroup.attr({
visibility: 'visible'
});
// Place elements
verb = rendered && !navigator.hasDragged ? 'animate' : 'attr';
 
navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);
navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);
navigator.drawHandle(zoomedMin, 0, inverted, verb);
navigator.drawHandle(zoomedMax, 1, inverted, verb);
}
 
if (navigator.scrollbar) {
if (inverted) {
scrollbarTop = navigator.top - scrollbarHeight;
scrollbarLeft = navigator.left - scrollbarHeight +
(navigatorEnabled || !scrollbarXAxis.opposite ? 0 :
// Multiple axes has offsets:
(scrollbarXAxis.titleOffset || 0) +
// Self margin from the axis.title
scrollbarXAxis.axisTitleMargin
);
scrollbarHeight = navigatorSize + 2 * scrollbarHeight;
} else {
scrollbarTop = navigator.top +
(navigatorEnabled ? navigator.height : -scrollbarHeight);
scrollbarLeft = navigator.left - scrollbarHeight;
}
// Reposition scrollbar
navigator.scrollbar.position(
scrollbarLeft,
scrollbarTop,
navigatorWidth,
scrollbarHeight
);
// Keep scale 0-1
navigator.scrollbar.setRange(
// Use real value, not rounded because range can be very small (#1716)
navigator.zoomedMin / navigatorSize,
navigator.zoomedMax / navigatorSize
);
}
navigator.rendered = true;
},
 
/**
* Set up the mouse and touch events for the navigator
*/
addMouseEvents: function() {
var navigator = this,
chart = navigator.chart,
container = chart.container,
eventsToUnbind = [],
mouseMoveHandler,
mouseUpHandler;
 
/**
* Create mouse events' handlers.
* Make them as separate functions to enable wrapping them:
*/
navigator.mouseMoveHandler = mouseMoveHandler = function(e) {
navigator.onMouseMove(e);
};
navigator.mouseUpHandler = mouseUpHandler = function(e) {
navigator.onMouseUp(e);
};
 
// Add shades and handles mousedown events
eventsToUnbind = navigator.getPartsEvents('mousedown');
// Add mouse move and mouseup events. These are bind to doc/container,
// because Navigator.grabbedSomething flags are stored in mousedown events:
eventsToUnbind.push(
addEvent(container, 'mousemove', mouseMoveHandler),
addEvent(doc, 'mouseup', mouseUpHandler)
);
 
// Touch events
if (hasTouch) {
eventsToUnbind.push(
addEvent(container, 'touchmove', mouseMoveHandler),
addEvent(doc, 'touchend', mouseUpHandler)
);
eventsToUnbind.concat(navigator.getPartsEvents('touchstart'));
}
 
navigator.eventsToUnbind = eventsToUnbind;
 
// Data events
if (navigator.series && navigator.series[0]) {
eventsToUnbind.push(
addEvent(navigator.series[0].xAxis, 'foundExtremes', function() {
chart.navigator.modifyNavigatorAxisExtremes();
})
);
}
},
 
/**
* Generate events for handles and masks
* @param {String} eventName Event name handler, 'mousedown' or 'touchstart'
* @returns {Array} An array of arrays: [DOMElement, eventName, callback].
*/
getPartsEvents: function(eventName) {
var navigator = this,
events = [];
each(['shades', 'handles'], function(name) {
each(navigator[name], function(navigatorItem, index) {
events.push(
addEvent(
navigatorItem.element,
eventName,
function(e) {
navigator[name + 'Mousedown'](e, index);
}
)
);
});
});
return events;
},
 
/**
* Mousedown on a shaded mask, either:
* - will be stored for future drag&drop
* - will directly shift to a new range
*
* @param {Object} e Mouse event
* @param {Number} index Index of a mask in Navigator.shades array
*/
shadesMousedown: function(e, index) {
e = this.chart.pointer.normalize(e);
 
var navigator = this,
chart = navigator.chart,
xAxis = navigator.xAxis,
zoomedMin = navigator.zoomedMin,
navigatorPosition = navigator.left,
navigatorSize = navigator.size,
range = navigator.range,
chartX = e.chartX,
fixedMax,
ext,
left;
 
// For inverted chart, swap some options:
if (chart.inverted) {
chartX = e.chartY;
navigatorPosition = navigator.top;
}
 
if (index === 1) {
// Store information for drag&drop
navigator.grabbedCenter = chartX;
navigator.fixedWidth = range;
navigator.dragOffset = chartX - zoomedMin;
} else {
// Shift the range by clicking on shaded areas
left = chartX - navigatorPosition - range / 2;
if (index === 0) {
left = Math.max(0, left);
} else if (index === 2 && left + range >= navigatorSize) {
left = navigatorSize - range;
fixedMax = navigator.getUnionExtremes().dataMax; // #2293, #3543
}
if (left !== zoomedMin) { // it has actually moved
navigator.fixedWidth = range; // #1370
 
ext = xAxis.toFixedRange(left, left + range, null, fixedMax);
chart.xAxis[0].setExtremes(
Math.min(ext.min, ext.max),
Math.max(ext.min, ext.max),
true,
null, // auto animation
{
trigger: 'navigator'
}
);
}
}
},
 
/**
* Mousedown on a handle mask.
* Will store necessary information for drag&drop.
*
* @param {Object} e Mouse event
* @param {Number} index Index of a handle in Navigator.handles array
*/
handlesMousedown: function(e, index) {
e = this.chart.pointer.normalize(e);
 
var navigator = this,
chart = navigator.chart,
baseXAxis = chart.xAxis[0],
// For reversed axes, min and max are chagned,
// so the other extreme should be stored
reverse = (chart.inverted && !baseXAxis.reversed) ||
(!chart.inverted && baseXAxis.reversed);
 
if (index === 0) {
// Grab the left handle
navigator.grabbedLeft = true;
navigator.otherHandlePos = navigator.zoomedMax;
navigator.fixedExtreme = reverse ? baseXAxis.min : baseXAxis.max;
} else {
// Grab the right handle
navigator.grabbedRight = true;
navigator.otherHandlePos = navigator.zoomedMin;
navigator.fixedExtreme = reverse ? baseXAxis.max : baseXAxis.min;
}
 
chart.fixedRange = null;
},
/**
* Mouse move event based on x/y mouse position.
* @param {Object} e Mouse event
*/
onMouseMove: function(e) {
var navigator = this,
chart = navigator.chart,
left = navigator.left,
navigatorSize = navigator.navigatorSize,
range = navigator.range,
dragOffset = navigator.dragOffset,
inverted = chart.inverted,
chartX;
 
 
// In iOS, a mousemove event with e.pageX === 0 is fired when holding the finger
// down in the center of the scrollbar. This should be ignored.
if (!e.touches || e.touches[0].pageX !== 0) { // #4696, scrollbar failed on Android
 
e = chart.pointer.normalize(e);
chartX = e.chartX;
 
// Swap some options for inverted chart
if (inverted) {
left = navigator.top;
chartX = e.chartY;
}
 
// Drag left handle or top handle
if (navigator.grabbedLeft) {
navigator.hasDragged = true;
navigator.render(
0,
0,
chartX - left,
navigator.otherHandlePos
);
// Drag right handle or bottom handle
} else if (navigator.grabbedRight) {
navigator.hasDragged = true;
navigator.render(
0,
0,
navigator.otherHandlePos,
chartX - left
);
// Drag scrollbar or open area in navigator
} else if (navigator.grabbedCenter) {
navigator.hasDragged = true;
if (chartX < dragOffset) { // outside left
chartX = dragOffset;
} else if (chartX > navigatorSize + dragOffset - range) { // outside right
chartX = navigatorSize + dragOffset - range;
}
 
navigator.render(
0,
0,
chartX - dragOffset,
chartX - dragOffset + range
);
}
if (navigator.hasDragged && navigator.scrollbar && navigator.scrollbar.options.liveRedraw) {
e.DOMType = e.type; // DOMType is for IE8 because it can't read type async
setTimeout(function() {
navigator.onMouseUp(e);
}, 0);
}
}
},
 
/**
* Mouse up event based on x/y mouse position.
* @param {Object} e Mouse event
*/
onMouseUp: function(e) {
var navigator = this,
chart = navigator.chart,
xAxis = navigator.xAxis,
scrollbar = navigator.scrollbar,
fixedMin,
fixedMax,
ext,
DOMEvent = e.DOMEvent || e;
 
if (
// MouseUp is called for both, navigator and scrollbar (that order),
// which causes calling afterSetExtremes twice. Prevent first call
// by checking if scrollbar is going to set new extremes (#6334)
(navigator.hasDragged && (!scrollbar || !scrollbar.hasDragged)) ||
e.trigger === 'scrollbar'
) {
// When dragging one handle, make sure the other one doesn't change
if (navigator.zoomedMin === navigator.otherHandlePos) {
fixedMin = navigator.fixedExtreme;
} else if (navigator.zoomedMax === navigator.otherHandlePos) {
fixedMax = navigator.fixedExtreme;
}
// Snap to right edge (#4076)
if (navigator.zoomedMax === navigator.size) {
fixedMax = navigator.getUnionExtremes().dataMax;
}
ext = xAxis.toFixedRange(
navigator.zoomedMin,
navigator.zoomedMax,
fixedMin,
fixedMax
);
 
if (defined(ext.min)) {
chart.xAxis[0].setExtremes(
Math.min(ext.min, ext.max),
Math.max(ext.min, ext.max),
true,
navigator.hasDragged ? false : null, // Run animation when clicking buttons, scrollbar track etc, but not when dragging handles or scrollbar
{
trigger: 'navigator',
triggerOp: 'navigator-drag',
DOMEvent: DOMEvent // #1838
}
);
}
}
 
if (e.DOMType !== 'mousemove') {
navigator.grabbedLeft = navigator.grabbedRight =
navigator.grabbedCenter = navigator.fixedWidth =
navigator.fixedExtreme = navigator.otherHandlePos =
navigator.hasDragged = navigator.dragOffset = null;
}
},
 
/**
* Removes the event handlers attached previously with addEvents.
*/
removeEvents: function() {
if (this.eventsToUnbind) {
each(this.eventsToUnbind, function(unbind) {
unbind();
});
this.eventsToUnbind = undefined;
}
this.removeBaseSeriesEvents();
},
 
/**
* Remove data events.
*/
removeBaseSeriesEvents: function() {
var baseSeries = this.baseSeries || [];
if (this.navigatorEnabled && baseSeries[0] && this.navigatorOptions.adaptToUpdatedData !== false) {
each(baseSeries, function(series) {
removeEvent(series, 'updatedData', this.updatedDataHandler);
}, this);
 
// We only listen for extremes-events on the first baseSeries
if (baseSeries[0].xAxis) {
removeEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);
}
}
},
 
/**
* Initiate the Navigator object
*/
init: function(chart) {
var chartOptions = chart.options,
navigatorOptions = chartOptions.navigator,
navigatorEnabled = navigatorOptions.enabled,
scrollbarOptions = chartOptions.scrollbar,
scrollbarEnabled = scrollbarOptions.enabled,
height = navigatorEnabled ? navigatorOptions.height : 0,
scrollbarHeight = scrollbarEnabled ? scrollbarOptions.height : 0;
 
this.handles = [];
this.shades = [];
 
this.chart = chart;
this.setBaseSeries();
 
this.height = height;
this.scrollbarHeight = scrollbarHeight;
this.scrollbarEnabled = scrollbarEnabled;
this.navigatorEnabled = navigatorEnabled;
this.navigatorOptions = navigatorOptions;
this.scrollbarOptions = scrollbarOptions;
this.outlineHeight = height + scrollbarHeight;
 
this.opposite = pick(navigatorOptions.opposite, !navigatorEnabled && chart.inverted); // #6262
 
var navigator = this,
baseSeries = navigator.baseSeries,
xAxisIndex = chart.xAxis.length,
yAxisIndex = chart.yAxis.length,
baseXaxis = baseSeries && baseSeries[0] && baseSeries[0].xAxis || chart.xAxis[0];
 
// Make room for the navigator, can be placed around the chart:
chart.extraMargin = {
type: navigator.opposite ? 'plotTop' : 'marginBottom',
value: (navigatorEnabled || !chart.inverted ? navigator.outlineHeight : 0) + navigatorOptions.margin
};
if (chart.inverted) {
chart.extraMargin.type = navigator.opposite ? 'marginRight' : 'plotLeft';
}
chart.isDirtyBox = true;
 
if (navigator.navigatorEnabled) {
// an x axis is required for scrollbar also
navigator.xAxis = new Axis(chart, merge({
// inherit base xAxis' break and ordinal options
breaks: baseXaxis.options.breaks,
ordinal: baseXaxis.options.ordinal
}, navigatorOptions.xAxis, {
id: 'navigator-x-axis',
yAxis: 'navigator-y-axis',
isX: true,
type: 'datetime',
index: xAxisIndex,
offset: 0,
keepOrdinalPadding: true, // #2436
startOnTick: false,
endOnTick: false,
minPadding: 0,
maxPadding: 0,
zoomEnabled: false
}, chart.inverted ? {
offsets: [scrollbarHeight, 0, -scrollbarHeight, 0],
width: height
} : {
offsets: [0, -scrollbarHeight, 0, scrollbarHeight],
height: height
}));
 
navigator.yAxis = new Axis(chart, merge(navigatorOptions.yAxis, {
id: 'navigator-y-axis',
alignTicks: false,
offset: 0,
index: yAxisIndex,
zoomEnabled: false
}, chart.inverted ? {
width: height
} : {
height: height
}));
 
// If we have a base series, initialize the navigator series
if (baseSeries || navigatorOptions.series.data) {
navigator.addBaseSeries();
 
// If not, set up an event to listen for added series
} else if (chart.series.length === 0) {
 
wrap(chart, 'redraw', function(proceed, animation) {
// We've got one, now add it as base and reset chart.redraw
if (chart.series.length > 0 && !navigator.series) {
navigator.setBaseSeries();
chart.redraw = proceed; // reset
}
proceed.call(chart, animation);
});
}
 
// Render items, so we can bind events to them:
navigator.renderElements();
// Add mouse events
navigator.addMouseEvents();
 
// in case of scrollbar only, fake an x axis to get translation
} else {
navigator.xAxis = {
translate: function(value, reverse) {
var axis = chart.xAxis[0],
ext = axis.getExtremes(),
scrollTrackWidth = axis.len - 2 * scrollbarHeight,
min = numExt('min', axis.options.min, ext.dataMin),
valueRange = numExt('max', axis.options.max, ext.dataMax) - min;
 
return reverse ?
// from pixel to value
(value * valueRange / scrollTrackWidth) + min :
// from value to pixel
scrollTrackWidth * (value - min) / valueRange;
},
toPixels: function(value) {
return this.translate(value);
},
toValue: function(value) {
return this.translate(value, true);
},
toFixedRange: Axis.prototype.toFixedRange,
fake: true
};
}
 
 
// Initialize the scrollbar
if (chart.options.scrollbar.enabled) {
chart.scrollbar = navigator.scrollbar = new Scrollbar(
chart.renderer,
merge(chart.options.scrollbar, {
margin: navigator.navigatorEnabled ? 0 : 10,
vertical: chart.inverted
}),
chart
);
addEvent(navigator.scrollbar, 'changed', function(e) {
var range = navigator.size,
to = range * this.to,
from = range * this.from;
 
navigator.hasDragged = navigator.scrollbar.hasDragged;
navigator.render(0, 0, from, to);
 
if (chart.options.scrollbar.liveRedraw || e.DOMType !== 'mousemove') {
setTimeout(function() {
navigator.onMouseUp(e);
});
}
});
}
 
// Add data events
navigator.addBaseSeriesEvents();
// Add redraw events
navigator.addChartEvents();
},
 
/**
* Get the union data extremes of the chart - the outer data extremes of the base
* X axis and the navigator axis.
* @param {boolean} returnFalseOnNoBaseSeries - as the param says.
*/
getUnionExtremes: function(returnFalseOnNoBaseSeries) {
var baseAxis = this.chart.xAxis[0],
navAxis = this.xAxis,
navAxisOptions = navAxis.options,
baseAxisOptions = baseAxis.options,
ret;
 
if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {
ret = {
dataMin: pick( // #4053
navAxisOptions && navAxisOptions.min,
numExt(
'min',
baseAxisOptions.min,
baseAxis.dataMin,
navAxis.dataMin,
navAxis.min
)
),
dataMax: pick(
navAxisOptions && navAxisOptions.max,
numExt(
'max',
baseAxisOptions.max,
baseAxis.dataMax,
navAxis.dataMax,
navAxis.max
)
)
};
}
return ret;
},
 
/**
* Set the base series. With a bit of modification we should be able to make
* this an API method to be called from the outside
* @param {Object} baseSeriesOptions - series options for a navigator
*/
setBaseSeries: function(baseSeriesOptions) {
var chart = this.chart,
baseSeries;
 
baseSeriesOptions = baseSeriesOptions || chart.options && chart.options.navigator.baseSeries || 0;
 
// If we're resetting, remove the existing series
if (this.series) {
this.removeBaseSeriesEvents();
each(this.series, function(s) {
s.destroy();
});
}
 
baseSeries = this.baseSeries = [];
 
// Iterate through series and add the ones that should be shown in navigator
each(chart.series || [], function(series, i) {
if (series.options.showInNavigator || (i === baseSeriesOptions || series.options.id === baseSeriesOptions) &&
series.options.showInNavigator !== false) {
baseSeries.push(series);
}
});
 
// When run after render, this.xAxis already exists
if (this.xAxis && !this.xAxis.fake) {
this.addBaseSeries();
}
},
 
/*
* Add base series to the navigator.
*/
addBaseSeries: function() {
var navigator = this,
chart = navigator.chart,
navigatorSeries = navigator.series = [],
baseSeries = navigator.baseSeries,
baseOptions,
mergedNavSeriesOptions,
chartNavigatorOptions = navigator.navigatorOptions.series,
baseNavigatorOptions,
navSeriesMixin = {
enableMouseTracking: false,
index: null, // #6162
group: 'nav', // for columns
padXAxis: false,
xAxis: 'navigator-x-axis',
yAxis: 'navigator-y-axis',
showInLegend: false,
stacking: false, // #4823
isInternal: true,
visible: true
};
 
// Go through each base series and merge the options to create new series
if (baseSeries) {
each(baseSeries, function(base, i) {
navSeriesMixin.name = 'Navigator ' + (i + 1);
 
baseOptions = base.options || {};
baseNavigatorOptions = baseOptions.navigatorOptions || {};
mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, chartNavigatorOptions, baseNavigatorOptions);
 
// Merge data separately. Do a slice to avoid mutating the navigator options from base series (#4923).
var navigatorSeriesData = baseNavigatorOptions.data || chartNavigatorOptions.data;
navigator.hasNavigatorData = navigator.hasNavigatorData || !!navigatorSeriesData;
mergedNavSeriesOptions.data = navigatorSeriesData || baseOptions.data && baseOptions.data.slice(0);
 
// Add the series
base.navigatorSeries = chart.initSeries(mergedNavSeriesOptions);
navigatorSeries.push(base.navigatorSeries);
});
} else {
// No base series, build from mixin and chart wide options
mergedNavSeriesOptions = merge(chartNavigatorOptions, navSeriesMixin);
mergedNavSeriesOptions.data = chartNavigatorOptions.data;
navigator.hasNavigatorData = !!mergedNavSeriesOptions.data;
navigatorSeries.push(chart.initSeries(mergedNavSeriesOptions));
}
 
this.addBaseSeriesEvents();
},
 
/**
* Add data events.
* For example when main series is updated we need to recalculate extremes
*/
addBaseSeriesEvents: function() {
var navigator = this,
baseSeries = navigator.baseSeries || [];
 
// Bind modified extremes event to first base's xAxis only. In event of > 1 base-xAxes, the navigator will ignore those.
if (baseSeries[0] && baseSeries[0].xAxis) {
addEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);
}
 
if (this.navigatorOptions.adaptToUpdatedData !== false) {
// Respond to updated data in the base series.
// Abort if lazy-loading data from the server.
each(baseSeries, function(base) {
if (base.xAxis) {
addEvent(base, 'updatedData', this.updatedDataHandler);
}
 
// Handle series removal
addEvent(base, 'remove', function() {
if (this.navigatorSeries) {
erase(navigator.series, this.navigatorSeries);
this.navigatorSeries.remove(false);
delete this.navigatorSeries;
}
});
}, this);
}
},
 
/**
* Set the navigator x axis extremes to reflect the total. The navigator extremes
* should always be the extremes of the union of all series in the chart as
* well as the navigator series.
*/
modifyNavigatorAxisExtremes: function() {
var xAxis = this.xAxis,
unionExtremes;
 
if (xAxis.getExtremes) {
unionExtremes = this.getUnionExtremes(true);
if (unionExtremes && (unionExtremes.dataMin !== xAxis.min || unionExtremes.dataMax !== xAxis.max)) {
xAxis.min = unionExtremes.dataMin;
xAxis.max = unionExtremes.dataMax;
}
}
},
 
/**
* Hook to modify the base axis extremes with information from the Navigator
*/
modifyBaseAxisExtremes: function() {
var baseXAxis = this,
navigator = baseXAxis.chart.navigator,
baseExtremes = baseXAxis.getExtremes(),
baseMin = baseExtremes.min,
baseMax = baseExtremes.max,
baseDataMin = baseExtremes.dataMin,
baseDataMax = baseExtremes.dataMax,
range = baseMax - baseMin,
stickToMin = navigator.stickToMin,
stickToMax = navigator.stickToMax,
newMax,
newMin,
navigatorSeries = navigator.series && navigator.series[0],
hasSetExtremes = !!baseXAxis.setExtremes,
 
// When the extremes have been set by range selector button, don't stick to min or max.
// The range selector buttons will handle the extremes. (#5489)
unmutable = baseXAxis.eventArgs && baseXAxis.eventArgs.trigger === 'rangeSelectorButton';
 
if (!unmutable) {
 
// If the zoomed range is already at the min, move it to the right as new data
// comes in
if (stickToMin) {
newMin = baseDataMin;
newMax = newMin + range;
}
 
// If the zoomed range is already at the max, move it to the right as new data
// comes in
if (stickToMax) {
newMax = baseDataMax;
if (!stickToMin) { // if stickToMin is true, the new min value is set above
newMin = Math.max(
newMax - range,
navigatorSeries && navigatorSeries.xData ?
navigatorSeries.xData[0] : -Number.MAX_VALUE
);
}
}
 
// Update the extremes
if (hasSetExtremes && (stickToMin || stickToMax)) {
if (isNumber(newMin)) {
baseXAxis.min = baseXAxis.userMin = newMin;
baseXAxis.max = baseXAxis.userMax = newMax;
}
}
}
 
// Reset
navigator.stickToMin = navigator.stickToMax = null;
},
 
/**
* Handler for updated data on the base series. When data is modified, the navigator series
* must reflect it. This is called from the Chart.redraw function before axis and series
* extremes are computed.
*/
updatedDataHandler: function() {
var navigator = this.chart.navigator,
baseSeries = this,
navigatorSeries = this.navigatorSeries;
 
// Detect whether the zoomed area should stick to the minimum or maximum. If the current
// axis minimum falls outside the new updated dataset, we must adjust.
navigator.stickToMin = isNumber(baseSeries.xAxis.min) && (baseSeries.xAxis.min <= baseSeries.xData[0]);
// If the scrollbar is scrolled all the way to the right, keep right as new data
// comes in.
navigator.stickToMax = Math.round(navigator.zoomedMax) >= Math.round(navigator.size);
 
// Set the navigator series data to the new data of the base series
if (navigatorSeries && !navigator.hasNavigatorData) {
navigatorSeries.options.pointStart = baseSeries.xData[0];
navigatorSeries.setData(baseSeries.options.data, false, null, false); // #5414
}
},
 
/**
* Add chart events, like redrawing navigator, when chart requires that.
*/
addChartEvents: function() {
addEvent(this.chart, 'redraw', function() {
// Move the scrollbar after redraw, like after data updata even if axes don't redraw
var navigator = this.navigator,
xAxis = navigator && (
navigator.baseSeries &&
navigator.baseSeries[0] &&
navigator.baseSeries[0].xAxis ||
navigator.scrollbar && this.xAxis[0]
); // #5709
 
if (xAxis) {
navigator.render(xAxis.min, xAxis.max);
}
});
},
 
/**
* Destroys allocated elements.
*/
destroy: function() {
 
// Disconnect events added in addEvents
this.removeEvents();
 
if (this.xAxis) {
erase(this.chart.xAxis, this.xAxis);
erase(this.chart.axes, this.xAxis);
}
if (this.yAxis) {
erase(this.chart.yAxis, this.yAxis);
erase(this.chart.axes, this.yAxis);
}
// Destroy series
each(this.series || [], function(s) {
if (s.destroy) {
s.destroy();
}
});
 
// Destroy properties
each([
'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',
'scrollbarRifles', 'scrollbarGroup', 'scrollbar', 'navigatorGroup',
'rendered'
], function(prop) {
if (this[prop] && this[prop].destroy) {
this[prop].destroy();
}
this[prop] = null;
}, this);
 
// Destroy elements in collection
each([this.handles], function(coll) {
destroyObjectProperties(coll);
}, this);
}
};
 
H.Navigator = Navigator;
 
/**
* For Stock charts, override selection zooming with some special features because
* X axis zooming is already allowed by the Navigator and Range selector.
*/
wrap(Axis.prototype, 'zoom', function(proceed, newMin, newMax) {
var chart = this.chart,
chartOptions = chart.options,
zoomType = chartOptions.chart.zoomType,
previousZoom,
navigator = chartOptions.navigator,
rangeSelector = chartOptions.rangeSelector,
ret;
 
if (this.isXAxis && ((navigator && navigator.enabled) ||
(rangeSelector && rangeSelector.enabled))) {
 
// For x only zooming, fool the chart.zoom method not to create the zoom button
// because the property already exists
if (zoomType === 'x') {
chart.resetZoomButton = 'blocked';
 
// For y only zooming, ignore the X axis completely
} else if (zoomType === 'y') {
ret = false;
 
// For xy zooming, record the state of the zoom before zoom selection, then when
// the reset button is pressed, revert to this state
} else if (zoomType === 'xy') {
previousZoom = this.previousZoom;
if (defined(newMin)) {
this.previousZoom = [this.min, this.max];
} else if (previousZoom) {
newMin = previousZoom[0];
newMax = previousZoom[1];
delete this.previousZoom;
}
}
 
}
return ret !== undefined ? ret : proceed.call(this, newMin, newMax);
});
 
// Initialize navigator for stock charts
wrap(Chart.prototype, 'init', function(proceed, options, callback) {
 
addEvent(this, 'beforeRender', function() {
var options = this.options;
if (options.navigator.enabled || options.scrollbar.enabled) {
this.scroller = this.navigator = new Navigator(this);
}
});
 
proceed.call(this, options, callback);
 
});
 
/**
* For stock charts, extend the Chart.setChartSize method so that we can set the final top position
* of the navigator once the height of the chart, including the legend, is determined. #367.
* We can't use Chart.getMargins, because labels offsets are not calculated yet.
*/
wrap(Chart.prototype, 'setChartSize', function(proceed) {
 
var legend = this.legend,
navigator = this.navigator,
scrollbarHeight,
legendOptions,
xAxis,
yAxis;
 
proceed.apply(this, [].slice.call(arguments, 1));
 
if (navigator) {
legendOptions = legend.options;
xAxis = navigator.xAxis;
yAxis = navigator.yAxis;
scrollbarHeight = navigator.scrollbarHeight;
 
// Compute the top position
if (this.inverted) {
navigator.left = navigator.opposite ?
this.chartWidth - scrollbarHeight - navigator.height :
this.spacing[3] + scrollbarHeight;
navigator.top = this.plotTop + scrollbarHeight;
} else {
navigator.left = this.plotLeft + scrollbarHeight;
navigator.top = navigator.navigatorOptions.top ||
this.chartHeight - navigator.height - scrollbarHeight - this.spacing[2] -
(legendOptions.verticalAlign === 'bottom' && legendOptions.enabled && !legendOptions.floating ?
legend.legendHeight + pick(legendOptions.margin, 10) : 0);
}
 
if (xAxis && yAxis) { // false if navigator is disabled (#904)
 
if (this.inverted) {
xAxis.options.left = yAxis.options.left = navigator.left;
} else {
xAxis.options.top = yAxis.options.top = navigator.top;
}
 
xAxis.setAxisSize();
yAxis.setAxisSize();
}
}
});
 
// Pick up badly formatted point options to addPoint
wrap(Series.prototype, 'addPoint', function(proceed, options, redraw, shift, animation) {
var turboThreshold = this.options.turboThreshold;
if (turboThreshold && this.xData.length > turboThreshold && isObject(options, true) && this.chart.navigator) {
error(20, true);
}
proceed.call(this, options, redraw, shift, animation);
});
 
// Handle adding new series
wrap(Chart.prototype, 'addSeries', function(proceed, options, redraw, animation) {
var series = proceed.call(this, options, false, animation);
if (this.navigator) {
this.navigator.setBaseSeries(); // Recompute which series should be shown in navigator, and add them
}
if (pick(redraw, true)) {
this.redraw();
}
return series;
});
 
// Handle updating series
wrap(Series.prototype, 'update', function(proceed, newOptions, redraw) {
proceed.call(this, newOptions, false);
if (this.chart.navigator) {
this.chart.navigator.setBaseSeries();
}
if (pick(redraw, true)) {
this.chart.redraw();
}
});
 
Chart.prototype.callbacks.push(function(chart) {
var extremes,
navigator = chart.navigator;
 
// Initiate the navigator
if (navigator) {
extremes = chart.xAxis[0].getExtremes();
navigator.render(extremes.min, extremes.max);
}
});
 
/* ****************************************************************************
* End Navigator code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
Axis = H.Axis,
Chart = H.Chart,
css = H.css,
createElement = H.createElement,
dateFormat = H.dateFormat,
defaultOptions = H.defaultOptions,
useUTC = defaultOptions.global.useUTC,
defined = H.defined,
destroyObjectProperties = H.destroyObjectProperties,
discardElement = H.discardElement,
each = H.each,
extend = H.extend,
fireEvent = H.fireEvent,
HCDate = H.Date,
isNumber = H.isNumber,
merge = H.merge,
pick = H.pick,
pInt = H.pInt,
splat = H.splat,
wrap = H.wrap;
 
/* ****************************************************************************
* Start Range Selector code *
*****************************************************************************/
extend(defaultOptions, {
rangeSelector: {
// allButtonsEnabled: false,
// enabled: true,
// buttons: {Object}
// buttonSpacing: 0,
buttonTheme: {
'stroke-width': 0,
width: 28,
height: 18,
padding: 2,
zIndex: 7 // #484, #852
},
height: 35, // reserved space for buttons and input
inputPosition: {
align: 'right'
},
// inputDateFormat: '%b %e, %Y',
// inputEditDateFormat: '%Y-%m-%d',
// inputEnabled: true,
// selected: undefined
 
}
});
defaultOptions.lang = merge(defaultOptions.lang, {
rangeSelectorZoom: 'Zoom',
rangeSelectorFrom: 'From',
rangeSelectorTo: 'To'
});
 
/**
* The range selector.
* @class
* @param {Object} chart
*/
function RangeSelector(chart) {
 
// Run RangeSelector
this.init(chart);
}
 
RangeSelector.prototype = {
/**
* The method to run when one of the buttons in the range selectors is clicked
* @param {Number} i The index of the button
* @param {Object} rangeOptions
* @param {Boolean} redraw
*/
clickButton: function(i, redraw) {
var rangeSelector = this,
chart = rangeSelector.chart,
rangeOptions = rangeSelector.buttonOptions[i],
baseAxis = chart.xAxis[0],
unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis || {},
dataMin = unionExtremes.dataMin,
dataMax = unionExtremes.dataMax,
newMin,
newMax = baseAxis && Math.round(Math.min(baseAxis.max, pick(dataMax, baseAxis.max))), // #1568
type = rangeOptions.type,
baseXAxisOptions,
range = rangeOptions._range,
rangeMin,
minSetting,
rangeSetting,
ctx,
ytdExtremes,
dataGrouping = rangeOptions.dataGrouping;
 
if (dataMin === null || dataMax === null) { // chart has no data, base series is removed
return;
}
 
// Set the fixed range before range is altered
chart.fixedRange = range;
 
// Apply dataGrouping associated to button
if (dataGrouping) {
this.forcedDataGrouping = true;
Axis.prototype.setDataGrouping.call(baseAxis || {
chart: this.chart
}, dataGrouping, false);
}
 
// Apply range
if (type === 'month' || type === 'year') {
if (!baseAxis) {
// This is set to the user options and picked up later when the axis is instantiated
// so that we know the min and max.
range = rangeOptions;
} else {
ctx = {
range: rangeOptions,
max: newMax,
dataMin: dataMin,
dataMax: dataMax
};
newMin = baseAxis.minFromRange.call(ctx);
if (isNumber(ctx.newMax)) {
newMax = ctx.newMax;
}
}
 
// Fixed times like minutes, hours, days
} else if (range) {
newMin = Math.max(newMax - range, dataMin);
newMax = Math.min(newMin + range, dataMax);
 
} else if (type === 'ytd') {
 
// On user clicks on the buttons, or a delayed action running from the beforeRender
// event (below), the baseAxis is defined.
if (baseAxis) {
// When "ytd" is the pre-selected button for the initial view, its calculation
// is delayed and rerun in the beforeRender event (below). When the series
// are initialized, but before the chart is rendered, we have access to the xData
// array (#942).
if (dataMax === undefined) {
dataMin = Number.MAX_VALUE;
dataMax = Number.MIN_VALUE;
each(chart.series, function(series) {
var xData = series.xData; // reassign it to the last item
dataMin = Math.min(xData[0], dataMin);
dataMax = Math.max(xData[xData.length - 1], dataMax);
});
redraw = false;
}
ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin, useUTC);
newMin = rangeMin = ytdExtremes.min;
newMax = ytdExtremes.max;
 
// "ytd" is pre-selected. We don't yet have access to processed point and extremes data
// (things like pointStart and pointInterval are missing), so we delay the process (#942)
} else {
addEvent(chart, 'beforeRender', function() {
rangeSelector.clickButton(i);
});
return;
}
} else if (type === 'all' && baseAxis) {
newMin = dataMin;
newMax = dataMax;
}
rangeSelector.setSelected(i);
 
// Update the chart
if (!baseAxis) {
// Axis not yet instanciated. Temporarily set min and range
// options and remove them on chart load (#4317).
baseXAxisOptions = splat(chart.options.xAxis)[0];
rangeSetting = baseXAxisOptions.range;
baseXAxisOptions.range = range;
minSetting = baseXAxisOptions.min;
baseXAxisOptions.min = rangeMin;
addEvent(chart, 'load', function resetMinAndRange() {
baseXAxisOptions.range = rangeSetting;
baseXAxisOptions.min = minSetting;
});
} else {
// Existing axis object. Set extremes after render time.
baseAxis.setExtremes(
newMin,
newMax,
pick(redraw, 1),
null, // auto animation
{
trigger: 'rangeSelectorButton',
rangeSelectorButton: rangeOptions
}
);
}
},
 
/**
* Set the selected option. This method only sets the internal flag, it doesn't
* update the buttons or the actual zoomed range.
*/
setSelected: function(selected) {
this.selected = this.options.selected = selected;
},
 
/**
* The default buttons for pre-selecting time frames
*/
defaultButtons: [{
type: 'month',
count: 1,
text: '1m'
}, {
type: 'month',
count: 3,
text: '3m'
}, {
type: 'month',
count: 6,
text: '6m'
}, {
type: 'ytd',
text: 'YTD'
}, {
type: 'year',
count: 1,
text: '1y'
}, {
type: 'all',
text: 'All'
}],
 
/**
* Initialize the range selector
*/
init: function(chart) {
var rangeSelector = this,
options = chart.options.rangeSelector,
buttonOptions = options.buttons || [].concat(rangeSelector.defaultButtons),
selectedOption = options.selected,
blurInputs = function() {
var minInput = rangeSelector.minInput,
maxInput = rangeSelector.maxInput;
if (minInput && minInput.blur) { //#3274 in some case blur is not defined
fireEvent(minInput, 'blur'); //#3274
}
if (maxInput && maxInput.blur) { //#3274 in some case blur is not defined
fireEvent(maxInput, 'blur'); //#3274
}
};
 
rangeSelector.chart = chart;
rangeSelector.options = options;
rangeSelector.buttons = [];
 
chart.extraTopMargin = options.height;
rangeSelector.buttonOptions = buttonOptions;
 
this.unMouseDown = addEvent(chart.container, 'mousedown', blurInputs);
this.unResize = addEvent(chart, 'resize', blurInputs);
 
// Extend the buttonOptions with actual range
each(buttonOptions, rangeSelector.computeButtonRange);
 
// zoomed range based on a pre-selected button index
if (selectedOption !== undefined && buttonOptions[selectedOption]) {
this.clickButton(selectedOption, false);
}
 
 
addEvent(chart, 'load', function() {
// If a data grouping is applied to the current button, release it when extremes change
addEvent(chart.xAxis[0], 'setExtremes', function(e) {
if (this.max - this.min !== chart.fixedRange && e.trigger !== 'rangeSelectorButton' &&
e.trigger !== 'updatedData' && rangeSelector.forcedDataGrouping) {
this.setDataGrouping(false, false);
}
});
});
},
 
/**
* Dynamically update the range selector buttons after a new range has been set
*/
updateButtonStates: function() {
var rangeSelector = this,
chart = this.chart,
baseAxis = chart.xAxis[0],
actualRange = Math.round(baseAxis.max - baseAxis.min),
hasNoData = !baseAxis.hasVisibleSeries,
day = 24 * 36e5, // A single day in milliseconds
unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis,
dataMin = unionExtremes.dataMin,
dataMax = unionExtremes.dataMax,
ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin, useUTC),
ytdMin = ytdExtremes.min,
ytdMax = ytdExtremes.max,
selected = rangeSelector.selected,
selectedExists = isNumber(selected),
allButtonsEnabled = rangeSelector.options.allButtonsEnabled,
buttons = rangeSelector.buttons;
 
each(rangeSelector.buttonOptions, function(rangeOptions, i) {
var range = rangeOptions._range,
type = rangeOptions.type,
count = rangeOptions.count || 1,
button = buttons[i],
state = 0,
disable,
select,
isSelected = i === selected,
// Disable buttons where the range exceeds what is allowed in the current view
isTooGreatRange = range > dataMax - dataMin,
// Disable buttons where the range is smaller than the minimum range
isTooSmallRange = range < baseAxis.minRange,
// Do not select the YTD button if not explicitly told so
isYTDButNotSelected = false,
// Disable the All button if we're already showing all
isAllButAlreadyShowingAll = false,
isSameRange = range === actualRange;
// Months and years have a variable range so we check the extremes
if (
(type === 'month' || type === 'year') &&
(actualRange >= {
month: 28,
year: 365
}[type] * day * count) &&
(actualRange <= {
month: 31,
year: 366
}[type] * day * count)
) {
isSameRange = true;
} else if (type === 'ytd') {
isSameRange = (ytdMax - ytdMin) === actualRange;
isYTDButNotSelected = !isSelected;
} else if (type === 'all') {
isSameRange = baseAxis.max - baseAxis.min >= dataMax - dataMin;
isAllButAlreadyShowingAll = !isSelected && selectedExists && isSameRange;
}
// The new zoom area happens to match the range for a button - mark it selected.
// This happens when scrolling across an ordinal gap. It can be seen in the intraday
// demos when selecting 1h and scroll across the night gap.
disable = (!allButtonsEnabled &&
(
isTooGreatRange ||
isTooSmallRange ||
isAllButAlreadyShowingAll ||
hasNoData
)
);
select = (
(isSelected && isSameRange) ||
(isSameRange && !selectedExists && !isYTDButNotSelected)
);
 
if (disable) {
state = 3;
} else if (select) {
selectedExists = true; // Only one button can be selected
state = 2;
}
 
// If state has changed, update the button
if (button.state !== state) {
button.setState(state);
}
});
},
 
/**
* Compute and cache the range for an individual button
*/
computeButtonRange: function(rangeOptions) {
var type = rangeOptions.type,
count = rangeOptions.count || 1,
 
// these time intervals have a fixed number of milliseconds, as opposed
// to month, ytd and year
fixedTimes = {
millisecond: 1,
second: 1000,
minute: 60 * 1000,
hour: 3600 * 1000,
day: 24 * 3600 * 1000,
week: 7 * 24 * 3600 * 1000
};
 
// Store the range on the button object
if (fixedTimes[type]) {
rangeOptions._range = fixedTimes[type] * count;
} else if (type === 'month' || type === 'year') {
rangeOptions._range = {
month: 30,
year: 365
}[type] * 24 * 36e5 * count;
}
},
 
/**
* Set the internal and displayed value of a HTML input for the dates
* @param {String} name
* @param {Number} time
*/
setInputValue: function(name, time) {
var options = this.chart.options.rangeSelector,
input = this[name + 'Input'];
 
if (defined(time)) {
input.previousValue = input.HCTime;
input.HCTime = time;
}
 
input.value = dateFormat(
options.inputEditDateFormat || '%Y-%m-%d',
input.HCTime
);
this[name + 'DateBox'].attr({
text: dateFormat(options.inputDateFormat || '%b %e, %Y', input.HCTime)
});
},
 
showInput: function(name) {
var inputGroup = this.inputGroup,
dateBox = this[name + 'DateBox'];
 
css(this[name + 'Input'], {
left: (inputGroup.translateX + dateBox.x) + 'px',
top: inputGroup.translateY + 'px',
width: (dateBox.width - 2) + 'px',
height: (dateBox.height - 2) + 'px',
border: '2px solid silver'
});
},
 
hideInput: function(name) {
css(this[name + 'Input'], {
border: 0,
width: '1px',
height: '1px'
});
this.setInputValue(name);
},
 
/**
* Draw either the 'from' or the 'to' HTML input box of the range selector
* @param {Object} name
*/
drawInput: function(name) {
var rangeSelector = this,
chart = rangeSelector.chart,
chartStyle = chart.renderer.style || {},
renderer = chart.renderer,
options = chart.options.rangeSelector,
lang = defaultOptions.lang,
div = rangeSelector.div,
isMin = name === 'min',
input,
label,
dateBox,
inputGroup = this.inputGroup;
 
function updateExtremes() {
var inputValue = input.value,
value = (options.inputDateParser || Date.parse)(inputValue),
chartAxis = chart.xAxis[0],
dataAxis = chart.scroller && chart.scroller.xAxis ? chart.scroller.xAxis : chartAxis,
dataMin = dataAxis.dataMin,
dataMax = dataAxis.dataMax;
if (value !== input.previousValue) {
input.previousValue = value;
// If the value isn't parsed directly to a value by the browser's Date.parse method,
// like YYYY-MM-DD in IE, try parsing it a different way
if (!isNumber(value)) {
value = inputValue.split('-');
value = Date.UTC(pInt(value[0]), pInt(value[1]) - 1, pInt(value[2]));
}
 
if (isNumber(value)) {
 
// Correct for timezone offset (#433)
if (!useUTC) {
value = value + new Date().getTimezoneOffset() * 60 * 1000;
}
 
// Validate the extremes. If it goes beyound the data min or max, use the
// actual data extreme (#2438).
if (isMin) {
if (value > rangeSelector.maxInput.HCTime) {
value = undefined;
} else if (value < dataMin) {
value = dataMin;
}
} else {
if (value < rangeSelector.minInput.HCTime) {
value = undefined;
} else if (value > dataMax) {
value = dataMax;
}
}
 
// Set the extremes
if (value !== undefined) {
chartAxis.setExtremes(
isMin ? value : chartAxis.min,
isMin ? chartAxis.max : value,
undefined,
undefined, {
trigger: 'rangeSelectorInput'
}
);
}
}
}
}
 
// Create the text label
this[name + 'Label'] = label = renderer.label(lang[isMin ? 'rangeSelectorFrom' : 'rangeSelectorTo'], this.inputGroup.offset)
.addClass('highcharts-range-label')
.attr({
padding: 2
})
.add(inputGroup);
inputGroup.offset += label.width + 5;
 
// Create an SVG label that shows updated date ranges and and records click events that
// bring in the HTML input.
this[name + 'DateBox'] = dateBox = renderer.label('', inputGroup.offset)
.addClass('highcharts-range-input')
.attr({
padding: 2,
width: options.inputBoxWidth || 90,
height: options.inputBoxHeight || 17,
stroke: options.inputBoxBorderColor || '#cccccc',
'stroke-width': 1,
'text-align': 'center'
})
.on('click', function() {
rangeSelector.showInput(name); // If it is already focused, the onfocus event doesn't fire (#3713)
rangeSelector[name + 'Input'].focus();
})
.add(inputGroup);
inputGroup.offset += dateBox.width + (isMin ? 10 : 0);
 
 
// Create the HTML input element. This is rendered as 1x1 pixel then set to the right size
// when focused.
this[name + 'Input'] = input = createElement('input', {
name: name,
className: 'highcharts-range-selector',
type: 'text'
}, {
top: chart.plotTop + 'px' // prevent jump on focus in Firefox
}, div);
 
 
 
// Blow up the input box
input.onfocus = function() {
rangeSelector.showInput(name);
};
// Hide away the input box
input.onblur = function() {
rangeSelector.hideInput(name);
};
 
// handle changes in the input boxes
input.onchange = updateExtremes;
 
input.onkeypress = function(event) {
// IE does not fire onchange on enter
if (event.keyCode === 13) {
updateExtremes();
}
};
},
 
/**
* Get the position of the range selector buttons and inputs. This can be overridden from outside for custom positioning.
*/
getPosition: function() {
var chart = this.chart,
options = chart.options.rangeSelector,
buttonTop = pick((options.buttonPosition || {}).y, chart.plotTop - chart.axisOffset[0] - options.height);
 
return {
buttonTop: buttonTop,
inputTop: buttonTop - 10
};
},
/**
* Get the extremes of YTD.
* Will choose dataMax if its value is lower than the current timestamp.
* Will choose dataMin if its value is higher than the timestamp for
* the start of current year.
* @param {number} dataMax
* @param {number} dataMin
* @return {object} Returns min and max for the YTD
*/
getYTDExtremes: function(dataMax, dataMin, useUTC) {
var min,
now = new HCDate(dataMax),
year = now[HCDate.hcGetFullYear](),
startOfYear = useUTC ? HCDate.UTC(year, 0, 1) : +new HCDate(year, 0, 1); // eslint-disable-line new-cap
min = Math.max(dataMin || 0, startOfYear);
now = now.getTime();
return {
max: Math.min(dataMax || now, now),
min: min
};
},
 
/**
* Render the range selector including the buttons and the inputs. The first time render
* is called, the elements are created and positioned. On subsequent calls, they are
* moved and updated.
* @param {Number} min X axis minimum
* @param {Number} max X axis maximum
*/
render: function(min, max) {
 
var rangeSelector = this,
chart = rangeSelector.chart,
renderer = chart.renderer,
container = chart.container,
chartOptions = chart.options,
navButtonOptions = chartOptions.exporting && chartOptions.exporting.enabled !== false &&
chartOptions.navigation && chartOptions.navigation.buttonOptions,
options = chartOptions.rangeSelector,
buttons = rangeSelector.buttons,
lang = defaultOptions.lang,
div = rangeSelector.div,
inputGroup = rangeSelector.inputGroup,
buttonTheme = options.buttonTheme,
buttonPosition = options.buttonPosition || {},
inputEnabled = options.inputEnabled,
states = buttonTheme && buttonTheme.states,
plotLeft = chart.plotLeft,
buttonLeft,
pos = this.getPosition(),
buttonGroup = rangeSelector.group,
buttonBBox,
rendered = rangeSelector.rendered;
 
if (options.enabled === false) {
return;
}
 
// create the elements
if (!rendered) {
 
rangeSelector.group = buttonGroup = renderer.g('range-selector-buttons').add();
 
rangeSelector.zoomText = renderer.text(lang.rangeSelectorZoom, pick(buttonPosition.x, plotLeft), 15)
.css(options.labelStyle)
.add(buttonGroup);
 
// button starting position
buttonLeft = pick(buttonPosition.x, plotLeft) + rangeSelector.zoomText.getBBox().width + 5;
 
each(rangeSelector.buttonOptions, function(rangeOptions, i) {
buttons[i] = renderer.button(
rangeOptions.text,
buttonLeft,
0,
function() {
rangeSelector.clickButton(i);
rangeSelector.isActive = true;
},
buttonTheme,
states && states.hover,
states && states.select,
states && states.disabled
)
.attr({
'text-align': 'center'
})
.add(buttonGroup);
 
// increase button position for the next button
buttonLeft += buttons[i].width + pick(options.buttonSpacing, 5);
});
 
// first create a wrapper outside the container in order to make
// the inputs work and make export correct
if (inputEnabled !== false) {
rangeSelector.div = div = createElement('div', null, {
position: 'relative',
height: 0,
zIndex: 1 // above container
});
 
container.parentNode.insertBefore(div, container);
 
// Create the group to keep the inputs
rangeSelector.inputGroup = inputGroup = renderer.g('input-group')
.add();
inputGroup.offset = 0;
 
rangeSelector.drawInput('min');
rangeSelector.drawInput('max');
}
}
rangeSelector.updateButtonStates();
 
// Set or update the group position
buttonGroup[rendered ? 'animate' : 'attr']({
translateY: pos.buttonTop
});
 
if (inputEnabled !== false) {
 
// Update the alignment to the updated spacing box
inputGroup.align(extend({
y: pos.inputTop,
width: inputGroup.offset,
// Detect collision with the exporting buttons
x: navButtonOptions && (pos.inputTop < (navButtonOptions.y || 0) + navButtonOptions.height - chart.spacing[0]) ?
-40 : 0
}, options.inputPosition), true, chart.spacingBox);
 
// Hide if overlapping - inputEnabled is null or undefined
if (!defined(inputEnabled)) {
buttonBBox = buttonGroup.getBBox();
inputGroup[inputGroup.alignAttr.translateX < buttonBBox.x + buttonBBox.width + 10 ? 'hide' : 'show']();
}
 
// Set or reset the input values
rangeSelector.setInputValue('min', min);
rangeSelector.setInputValue('max', max);
}
 
rangeSelector.rendered = true;
},
 
/**
* Update the range selector with new options
*/
update: function(options) {
var chart = this.chart;
merge(true, chart.options.rangeSelector, options);
this.destroy();
this.init(chart);
},
 
/**
* Destroys allocated elements.
*/
destroy: function() {
var rSelector = this,
minInput = rSelector.minInput,
maxInput = rSelector.maxInput;
 
rSelector.unMouseDown();
rSelector.unResize();
 
// Destroy elements in collections
destroyObjectProperties(rSelector.buttons);
 
// Clear input element events
if (minInput) {
minInput.onfocus = minInput.onblur = minInput.onchange = null;
}
if (maxInput) {
maxInput.onfocus = maxInput.onblur = maxInput.onchange = null;
}
 
// Destroy HTML and SVG elements
H.objectEach(rSelector, function(val, key) {
if (val && key !== 'chart') {
if (val.destroy) { // SVGElement
val.destroy();
} else if (val.nodeType) { // HTML element
discardElement(this[key]);
}
}
if (val !== RangeSelector.prototype[key]) {
rSelector[key] = null;
}
}, this);
}
};
 
/**
* Add logic to normalize the zoomed range in order to preserve the pressed state of range selector buttons
*/
Axis.prototype.toFixedRange = function(pxMin, pxMax, fixedMin, fixedMax) {
var fixedRange = this.chart && this.chart.fixedRange,
newMin = pick(fixedMin, this.translate(pxMin, true, !this.horiz)),
newMax = pick(fixedMax, this.translate(pxMax, true, !this.horiz)),
changeRatio = fixedRange && (newMax - newMin) / fixedRange;
 
// If the difference between the fixed range and the actual requested range is
// too great, the user is dragging across an ordinal gap, and we need to release
// the range selector button.
if (changeRatio > 0.7 && changeRatio < 1.3) {
if (fixedMax) {
newMin = newMax - fixedRange;
} else {
newMax = newMin + fixedRange;
}
}
if (!isNumber(newMin)) { // #1195
newMin = newMax = undefined;
}
 
return {
min: newMin,
max: newMax
};
};
 
/**
* Get the axis min value based on the range option and the current max. For
* stock charts this is extended via the {@link RangeSelector} so that if the
* selected range is a multiple of months or years, it is compensated for
* various month lengths.
*
* @return {number} The new minimum value.
*/
Axis.prototype.minFromRange = function() {
var rangeOptions = this.range,
type = rangeOptions.type,
timeName = {
month: 'Month',
year: 'FullYear'
}[type],
min,
max = this.max,
dataMin,
range,
// Get the true range from a start date
getTrueRange = function(base, count) {
var date = new Date(base),
basePeriod = date['get' + timeName]();
 
date['set' + timeName](basePeriod + count);
 
if (basePeriod === date['get' + timeName]()) {
date.setDate(0); // #6537
}
 
return date.getTime() - base;
};
 
if (isNumber(rangeOptions)) {
min = max - rangeOptions;
range = rangeOptions;
} else {
min = max + getTrueRange(max, -rangeOptions.count);
 
// Let the fixedRange reflect initial settings (#5930)
if (this.chart) {
this.chart.fixedRange = max - min;
}
}
 
dataMin = pick(this.dataMin, Number.MIN_VALUE);
if (!isNumber(min)) {
min = dataMin;
}
if (min <= dataMin) {
min = dataMin;
if (range === undefined) { // #4501
range = getTrueRange(min, rangeOptions.count);
}
this.newMax = Math.min(min + range, this.dataMax);
}
if (!isNumber(max)) {
min = undefined;
}
return min;
 
};
 
// Initialize scroller for stock charts
wrap(Chart.prototype, 'init', function(proceed, options, callback) {
 
addEvent(this, 'init', function() {
if (this.options.rangeSelector.enabled) {
this.rangeSelector = new RangeSelector(this);
}
});
 
proceed.call(this, options, callback);
 
});
 
Chart.prototype.callbacks.push(function(chart) {
var extremes,
rangeSelector = chart.rangeSelector,
unbindRender,
unbindSetExtremes;
 
function renderRangeSelector() {
extremes = chart.xAxis[0].getExtremes();
if (isNumber(extremes.min)) {
rangeSelector.render(extremes.min, extremes.max);
}
}
 
if (rangeSelector) {
// redraw the scroller on setExtremes
unbindSetExtremes = addEvent(
chart.xAxis[0],
'afterSetExtremes',
function(e) {
rangeSelector.render(e.min, e.max);
}
);
 
// redraw the scroller chart resize
unbindRender = addEvent(chart, 'redraw', renderRangeSelector);
 
// do it now
renderRangeSelector();
}
 
// Remove resize/afterSetExtremes at chart destroy
addEvent(chart, 'destroy', function destroyEvents() {
if (rangeSelector) {
unbindRender();
unbindSetExtremes();
}
});
});
 
 
H.RangeSelector = RangeSelector;
 
/* ****************************************************************************
* End Range Selector code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var arrayMax = H.arrayMax,
arrayMin = H.arrayMin,
Axis = H.Axis,
Chart = H.Chart,
defined = H.defined,
each = H.each,
extend = H.extend,
format = H.format,
grep = H.grep,
inArray = H.inArray,
isNumber = H.isNumber,
isString = H.isString,
map = H.map,
merge = H.merge,
pick = H.pick,
Point = H.Point,
Renderer = H.Renderer,
Series = H.Series,
splat = H.splat,
SVGRenderer = H.SVGRenderer,
VMLRenderer = H.VMLRenderer,
wrap = H.wrap,
 
 
seriesProto = Series.prototype,
seriesInit = seriesProto.init,
seriesProcessData = seriesProto.processData,
pointTooltipFormatter = Point.prototype.tooltipFormatter;
 
/**
* Factory function for creating new stock charts. Creates a new {@link Chart|
* Chart} object with different default options than the basic Chart.
*
* @function #stockChart
* @memberOf Highcharts
*
* @param {String|HTMLDOMElement} renderTo
* The DOM element to render to, or its id.
* @param {Options} options
* The chart options structure as described in the {@link
* https://api.highcharts.com/highstock|options reference}.
* @param {Function} callback
* A function to execute when the chart object is finished loading and
* rendering. In most cases the chart is built in one thread, but in
* Internet Explorer version 8 or less the chart is sometimes initiated
* before the document is ready, and in these cases the chart object
* will not be finished synchronously. As a consequence, code that
* relies on the newly built Chart object should always run in the
* callback. Defining a {@link https://api.highcharts.com/highstock/chart.events.load|
* chart.event.load} handler is equivalent.
*
* @return {Chart}
* The chart object.
*
* @example
* var chart = Highcharts.stockChart('container', {
* series: [{
* data: [1, 2, 3, 4, 5, 6, 7, 8, 9],
* pointInterval: 24 * 60 * 60 * 1000
* }]
* });
*/
H.StockChart = H.stockChart = function(a, b, c) {
var hasRenderToArg = isString(a) || a.nodeName,
options = arguments[hasRenderToArg ? 1 : 0],
seriesOptions = options.series, // to increase performance, don't merge the data
defaultOptions = H.getOptions(),
opposite,
 
// Always disable startOnTick:true on the main axis when the navigator
// is enabled (#1090)
navigatorEnabled = pick(
options.navigator && options.navigator.enabled,
defaultOptions.navigator.enabled,
true
),
disableStartOnTick = navigatorEnabled ? {
startOnTick: false,
endOnTick: false
} : null,
 
lineOptions = {
 
marker: {
enabled: false,
radius: 2
}
// gapSize: 0
},
columnOptions = {
shadow: false,
borderWidth: 0
};
 
// apply X axis options to both single and multi y axes
options.xAxis = map(splat(options.xAxis || {}), function(xAxisOptions) {
return merge({ // defaults
minPadding: 0,
maxPadding: 0,
ordinal: true,
title: {
text: null
},
labels: {
overflow: 'justify'
},
showLastLabel: true
},
defaultOptions.xAxis, // #3802
xAxisOptions, // user options
{ // forced options
type: 'datetime',
categories: null
},
disableStartOnTick
);
});
 
// apply Y axis options to both single and multi y axes
options.yAxis = map(splat(options.yAxis || {}), function(yAxisOptions) {
opposite = pick(yAxisOptions.opposite, true);
return merge({ // defaults
labels: {
y: -2
},
opposite: opposite,
showLastLabel: false,
title: {
text: null
}
},
defaultOptions.yAxis, // #3802
yAxisOptions // user options
);
});
 
options.series = null;
 
options = merge({
chart: {
panning: true,
pinchType: 'x'
},
navigator: {
enabled: navigatorEnabled
},
scrollbar: {
// #4988 - check if setOptions was called
enabled: pick(defaultOptions.scrollbar.enabled, true)
},
rangeSelector: {
// #4988 - check if setOptions was called
enabled: pick(defaultOptions.rangeSelector.enabled, true)
},
title: {
text: null
},
tooltip: {
shared: true,
crosshairs: true
},
legend: {
enabled: false
},
 
plotOptions: {
line: lineOptions,
spline: lineOptions,
area: lineOptions,
areaspline: lineOptions,
arearange: lineOptions,
areasplinerange: lineOptions,
column: columnOptions,
columnrange: columnOptions,
candlestick: columnOptions,
ohlc: columnOptions
}
 
},
 
options, // user's options
 
{ // forced options
isStock: true // internal flag
}
);
 
options.series = seriesOptions;
 
return hasRenderToArg ?
new Chart(a, options, c) :
new Chart(options, b);
};
 
// Override the automatic label alignment so that the first Y axis' labels
// are drawn on top of the grid line, and subsequent axes are drawn outside
wrap(Axis.prototype, 'autoLabelAlign', function(proceed) {
var chart = this.chart,
options = this.options,
panes = chart._labelPanes = chart._labelPanes || {},
key,
labelOptions = this.options.labels;
if (this.chart.options.isStock && this.coll === 'yAxis') {
key = options.top + ',' + options.height;
if (!panes[key] && labelOptions.enabled) { // do it only for the first Y axis of each pane
if (labelOptions.x === 15) { // default
labelOptions.x = 0;
}
if (labelOptions.align === undefined) {
labelOptions.align = 'right';
}
panes[key] = this;
return 'right';
}
}
return proceed.call(this, [].slice.call(arguments, 1));
});
 
// Clear axis from label panes (#6071)
wrap(Axis.prototype, 'destroy', function(proceed) {
var chart = this.chart,
key = this.options && (this.options.top + ',' + this.options.height);
 
if (key && chart._labelPanes && chart._labelPanes[key] === this) {
delete chart._labelPanes[key];
}
 
return proceed.call(this, Array.prototype.slice.call(arguments, 1));
});
 
// Override getPlotLinePath to allow for multipane charts
wrap(Axis.prototype, 'getPlotLinePath', function(proceed, value, lineWidth, old, force, translatedValue) {
var axis = this,
series = (this.isLinked && !this.series ? this.linkedParent.series : this.series),
chart = axis.chart,
renderer = chart.renderer,
axisLeft = axis.left,
axisTop = axis.top,
x1,
y1,
x2,
y2,
result = [],
axes = [], //#3416 need a default array
axes2,
uniqueAxes,
transVal;
 
/**
* Return the other axis based on either the axis option or on related series.
*/
function getAxis(coll) {
var otherColl = coll === 'xAxis' ? 'yAxis' : 'xAxis',
opt = axis.options[otherColl];
 
// Other axis indexed by number
if (isNumber(opt)) {
return [chart[otherColl][opt]];
}
 
// Other axis indexed by id (like navigator)
if (isString(opt)) {
return [chart.get(opt)];
}
 
// Auto detect based on existing series
return map(series, function(s) {
return s[otherColl];
});
}
 
// Ignore in case of colorAxis or zAxis. #3360, #3524, #6720
if (axis.coll !== 'xAxis' && axis.coll !== 'yAxis') {
return proceed.apply(this, [].slice.call(arguments, 1));
}
 
// Get the related axes based on series
axes = getAxis(axis.coll);
 
// Get the related axes based options.*Axis setting #2810
axes2 = (axis.isXAxis ? chart.yAxis : chart.xAxis);
each(axes2, function(A) {
if (defined(A.options.id) ? A.options.id.indexOf('navigator') === -1 : true) {
var a = (A.isXAxis ? 'yAxis' : 'xAxis'),
rax = (defined(A.options[a]) ? chart[a][A.options[a]] : chart[a][0]);
 
if (axis === rax) {
axes.push(A);
}
}
});
 
 
// Remove duplicates in the axes array. If there are no axes in the axes array,
// we are adding an axis without data, so we need to populate this with grid
// lines (#2796).
uniqueAxes = axes.length ? [] : [axis.isXAxis ? chart.yAxis[0] : chart.xAxis[0]]; //#3742
each(axes, function(axis2) {
if (
inArray(axis2, uniqueAxes) === -1 &&
// Do not draw on axis which overlap completely. #5424
!H.find(uniqueAxes, function(unique) {
return unique.pos === axis2.pos && unique.len && axis2.len;
})
) {
uniqueAxes.push(axis2);
}
});
 
transVal = pick(translatedValue, axis.translate(value, null, null, old));
if (isNumber(transVal)) {
if (axis.horiz) {
each(uniqueAxes, function(axis2) {
var skip;
 
y1 = axis2.pos;
y2 = y1 + axis2.len;
x1 = x2 = Math.round(transVal + axis.transB);
 
if (x1 < axisLeft || x1 > axisLeft + axis.width) { // outside plot area
if (force) {
x1 = x2 = Math.min(Math.max(axisLeft, x1), axisLeft + axis.width);
} else {
skip = true;
}
}
if (!skip) {
result.push('M', x1, y1, 'L', x2, y2);
}
});
} else {
each(uniqueAxes, function(axis2) {
var skip;
 
x1 = axis2.pos;
x2 = x1 + axis2.len;
y1 = y2 = Math.round(axisTop + axis.height - transVal);
 
if (y1 < axisTop || y1 > axisTop + axis.height) { // outside plot area
if (force) {
y1 = y2 = Math.min(Math.max(axisTop, y1), axis.top + axis.height);
} else {
skip = true;
}
}
if (!skip) {
result.push('M', x1, y1, 'L', x2, y2);
}
});
}
}
return result.length > 0 ?
renderer.crispPolyLine(result, lineWidth || 1) :
null; //#3557 getPlotLinePath in regular Highcharts also returns null
});
 
// Override getPlotBandPath to allow for multipane charts
Axis.prototype.getPlotBandPath = function(from, to) {
var toPath = this.getPlotLinePath(to, null, null, true),
path = this.getPlotLinePath(from, null, null, true),
result = [],
i;
 
if (path && toPath) {
if (path.toString() === toPath.toString()) {
// #6166
result = path;
result.flat = true;
} else {
// Go over each subpath
for (i = 0; i < path.length; i += 6) {
result.push(
'M', path[i + 1], path[i + 2],
'L', path[i + 4], path[i + 5],
toPath[i + 4], toPath[i + 5],
toPath[i + 1], toPath[i + 2],
'z'
);
}
}
} else { // outside the axis area
result = null;
}
 
return result;
};
 
// Function to crisp a line with multiple segments
SVGRenderer.prototype.crispPolyLine = function(points, width) {
// points format: ['M', 0, 0, 'L', 100, 0]
// normalize to a crisp line
var i;
for (i = 0; i < points.length; i = i + 6) {
if (points[i + 1] === points[i + 4]) {
// Substract due to #1129. Now bottom and left axis gridlines behave the same.
points[i + 1] = points[i + 4] = Math.round(points[i + 1]) - (width % 2 / 2);
}
if (points[i + 2] === points[i + 5]) {
points[i + 2] = points[i + 5] = Math.round(points[i + 2]) + (width % 2 / 2);
}
}
return points;
};
 
 
// Wrapper to hide the label
wrap(Axis.prototype, 'hideCrosshair', function(proceed, i) {
 
proceed.call(this, i);
 
if (this.crossLabel) {
this.crossLabel = this.crossLabel.hide();
}
});
 
// Wrapper to draw the label
wrap(Axis.prototype, 'drawCrosshair', function(proceed, e, point) {
 
// Draw the crosshair
proceed.call(this, e, point);
 
// Check if the label has to be drawn
if (!defined(this.crosshair.label) || !this.crosshair.label.enabled || !this.cross) {
return;
}
 
var chart = this.chart,
options = this.options.crosshair.label, // the label's options
horiz = this.horiz, // axis orientation
opposite = this.opposite, // axis position
left = this.left, // left position
top = this.top, // top position
crossLabel = this.crossLabel, // reference to the svgElement
posx,
posy,
crossBox,
formatOption = options.format,
formatFormat = '',
limit,
align,
tickInside = this.options.tickPosition === 'inside',
snap = this.crosshair.snap !== false,
value,
offset = 0;
 
// Use last available event (#5287)
if (!e) {
e = this.cross && this.cross.e;
}
 
align = (horiz ? 'center' : opposite ?
(this.labelAlign === 'right' ? 'right' : 'left') :
(this.labelAlign === 'left' ? 'left' : 'center'));
 
// If the label does not exist yet, create it.
if (!crossLabel) {
crossLabel = this.crossLabel = chart.renderer.label(null, null, null, options.shape || 'callout')
.addClass('highcharts-crosshair-label' +
(this.series[0] && ' highcharts-color-' + this.series[0].colorIndex))
.attr({
align: options.align || align,
padding: pick(options.padding, 8),
r: pick(options.borderRadius, 3),
zIndex: 2
})
.add(this.labelGroup);
 
 
}
 
if (horiz) {
posx = snap ? point.plotX + left : e.chartX;
posy = top + (opposite ? 0 : this.height);
} else {
posx = opposite ? this.width + left : 0;
posy = snap ? point.plotY + top : e.chartY;
}
 
if (!formatOption && !options.formatter) {
if (this.isDatetimeAxis) {
formatFormat = '%b %d, %Y';
}
formatOption = '{value' + (formatFormat ? ':' + formatFormat : '') + '}';
}
 
// Show the label
value = snap ? point[this.isXAxis ? 'x' : 'y'] : this.toValue(horiz ? e.chartX : e.chartY);
crossLabel.attr({
text: formatOption ? format(formatOption, {
value: value
}) : options.formatter.call(this, value),
x: posx,
y: posy,
visibility: 'visible'
});
 
crossBox = crossLabel.getBBox();
 
// now it is placed we can correct its position
if (horiz) {
if ((tickInside && !opposite) || (!tickInside && opposite)) {
posy = crossLabel.y - crossBox.height;
}
} else {
posy = crossLabel.y - (crossBox.height / 2);
}
 
// check the edges
if (horiz) {
limit = {
left: left - crossBox.x,
right: left + this.width - crossBox.x
};
} else {
limit = {
left: this.labelAlign === 'left' ? left : 0,
right: this.labelAlign === 'right' ? left + this.width : chart.chartWidth
};
}
 
// left edge
if (crossLabel.translateX < limit.left) {
offset = limit.left - crossLabel.translateX;
}
// right edge
if (crossLabel.translateX + crossBox.width >= limit.right) {
offset = -(crossLabel.translateX + crossBox.width - limit.right);
}
 
// show the crosslabel
crossLabel.attr({
x: posx + offset,
y: posy,
// First set x and y, then anchorX and anchorY, when box is actually calculated, #5702
anchorX: horiz ? posx : (this.opposite ? 0 : chart.chartWidth),
anchorY: horiz ? (this.opposite ? chart.chartHeight : 0) : posy + crossBox.height / 2
});
});
 
/* ****************************************************************************
* Start value compare logic *
*****************************************************************************/
 
/**
* Extend series.init by adding a method to modify the y value used for plotting
* on the y axis. This method is called both from the axis when finding dataMin
* and dataMax, and from the series.translate method.
*/
seriesProto.init = function() {
 
// Call base method
seriesInit.apply(this, arguments);
 
// Set comparison mode
this.setCompare(this.options.compare);
};
 
/**
* Highstock only. Set the {@link
* http://api.highcharts.com/highstock/plotOptions.series.compare|
* compare} mode of the series after render time. In most cases it is more
* useful running {@link Axis#setCompare} on the X axis to update all its
* series.
*
* @function setCompare
* @memberOf Series.prototype
*
* @param {String} compare
* Can be one of `null`, `"percent"` or `"value"`.
*/
seriesProto.setCompare = function(compare) {
 
// Set or unset the modifyValue method
this.modifyValue = (compare === 'value' || compare === 'percent') ? function(value, point) {
var compareValue = this.compareValue;
 
if (value !== undefined && compareValue !== undefined) { // #2601, #5814
 
// Get the modified value
if (compare === 'value') {
value -= compareValue;
 
// Compare percent
} else {
value = 100 * (value / compareValue) -
(this.options.compareBase === 100 ? 0 : 100);
}
 
// record for tooltip etc.
if (point) {
point.change = value;
}
 
return value;
}
} : null;
 
// Survive to export, #5485
this.userOptions.compare = compare;
 
// Mark dirty
if (this.chart.hasRendered) {
this.isDirty = true;
}
 
};
 
/**
* Extend series.processData by finding the first y value in the plot area,
* used for comparing the following values
*/
seriesProto.processData = function() {
var series = this,
i,
keyIndex = -1,
processedXData,
processedYData,
length,
compareValue;
 
// call base method
seriesProcessData.apply(this, arguments);
 
if (series.xAxis && series.processedYData) { // not pies
 
// local variables
processedXData = series.processedXData;
processedYData = series.processedYData;
length = processedYData.length;
 
// For series with more than one value (range, OHLC etc), compare against
// close or the pointValKey (#4922, #3112)
if (series.pointArrayMap) {
// Use close if present (#3112)
keyIndex = inArray('close', series.pointArrayMap);
if (keyIndex === -1) {
keyIndex = inArray(series.pointValKey || 'y', series.pointArrayMap);
}
}
 
// find the first value for comparison
for (i = 0; i < length - 1; i++) {
compareValue = processedYData[i] && keyIndex > -1 ?
processedYData[i][keyIndex] :
processedYData[i];
if (isNumber(compareValue) && processedXData[i + 1] >= series.xAxis.min && compareValue !== 0) {
series.compareValue = compareValue;
break;
}
}
}
};
 
/**
* Modify series extremes
*/
wrap(seriesProto, 'getExtremes', function(proceed) {
var extremes;
 
proceed.apply(this, [].slice.call(arguments, 1));
 
if (this.modifyValue) {
extremes = [this.modifyValue(this.dataMin), this.modifyValue(this.dataMax)];
this.dataMin = arrayMin(extremes);
this.dataMax = arrayMax(extremes);
}
});
 
/**
* Highstock only. Set the compare mode on all series belonging to an Y axis
* after render time.
*
* @param {String} compare
* The compare mode. Can be one of `null`, `"value"` or `"percent"`.
* @param {Boolean} [redraw=true]
* Whether to redraw the chart or to wait for a later call to {@link
* Chart#redraw},
*
* @function setCompare
* @memberOf Axis.prototype
*
* @see {@link https://api.highcharts.com/highstock/series.plotOptions.compare|
* series.plotOptions.compare}
*
* @sample stock/members/axis-setcompare/
* Set compoare
*/
Axis.prototype.setCompare = function(compare, redraw) {
if (!this.isXAxis) {
each(this.series, function(series) {
series.setCompare(compare);
});
if (pick(redraw, true)) {
this.chart.redraw();
}
}
};
 
/**
* Extend the tooltip formatter by adding support for the point.change variable
* as well as the changeDecimals option
*/
Point.prototype.tooltipFormatter = function(pointFormat) {
var point = this;
 
pointFormat = pointFormat.replace(
'{point.change}',
(point.change > 0 ? '+' : '') +
H.numberFormat(point.change, pick(point.series.tooltipOptions.changeDecimals, 2))
);
 
return pointTooltipFormatter.apply(this, [pointFormat]);
};
 
/* ****************************************************************************
* End value compare logic *
*****************************************************************************/
 
 
/**
* Extend the Series prototype to create a separate series clip box. This is
* related to using multiple panes, and a future pane logic should incorporate
* this feature (#2754).
*/
wrap(Series.prototype, 'render', function(proceed) {
// Only do this on not 3d (#2939, #5904) nor polar (#6057) charts, and only
// if the series type handles clipping in the animate method (#2975).
if (!(this.chart.is3d && this.chart.is3d()) &&
!this.chart.polar &&
this.xAxis &&
!this.xAxis.isRadial // Gauge, #6192
) {
 
// First render, initial clip box
if (!this.clipBox && this.animate) {
this.clipBox = merge(this.chart.clipBox);
this.clipBox.width = this.xAxis.len;
this.clipBox.height = this.yAxis.len;
 
// On redrawing, resizing etc, update the clip rectangle
} else if (this.chart[this.sharedClipKey]) {
this.chart[this.sharedClipKey].attr({
width: this.xAxis.len,
height: this.yAxis.len
});
// #3111
} else if (this.clipBox) {
this.clipBox.width = this.xAxis.len;
this.clipBox.height = this.yAxis.len;
}
}
proceed.call(this);
});
 
wrap(Chart.prototype, 'getSelectedPoints', function(proceed) {
var points = proceed.call(this);
 
each(this.series, function(serie) {
// series.points - for grouped points (#6445)
if (serie.hasGroupedData) {
points = points.concat(grep(serie.points || [], function(point) {
return point.selected;
}));
}
});
return points;
});
 
wrap(Chart.prototype, 'update', function(proceed, options) {
// Use case: enabling scrollbar from a disabled state.
// Scrollbar needs to be initialized from a controller, Navigator in this
// case (#6615)
if ('scrollbar' in options && this.navigator) {
merge(true, this.options.scrollbar, options.scrollbar);
this.navigator.update({}, false);
delete options.scrollbar;
}
 
return proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/treemap.js
@@ -0,0 +1,29 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
 
(c) 2014 Highsoft AS
Authors: Jon Arild Nygard / Oystein Moseng
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(f){var n=f.seriesType,q=f.seriesTypes,E=f.map,v=f.merge,y=f.extend,z=f.noop,m=f.each,x=f.grep,F=f.isNumber,A=f.isString,k=f.pick,u=f.Series,G=f.stableSort,H=function(a,b,c){c=c||this;f.objectEach(a,function(e,d){b.call(c,e,d,a)})},B=function(a,b,c,e){e=e||this;a=a||[];m(a,function(d,g){c=b.call(e,c,d,g,a)});return c},w=function(a,b,c){c=c||this;a=b.call(c,a);!1!==a&&w(a,b,c)};n("treemap","scatter",
{showInLegend:!1,marker:!1,dataLabels:{enabled:!0,defer:!1,verticalAlign:"middle",formatter:function(){return this.point.name||this.point.id},inside:!0},tooltip:{headerFormat:"",pointFormat:"\x3cb\x3e{point.name}\x3c/b\x3e: {point.value}\x3c/b\x3e\x3cbr/\x3e"},ignoreHiddenPoint:!0,layoutAlgorithm:"sliceAndDice",layoutStartingDirection:"vertical",alternateStartingDirection:!1,levelIsConstant:!0,drillUpButton:{position:{align:"right",x:-10,y:10}}},{pointArrayMap:["value"],axisTypes:q.heatmap?["xAxis",
"yAxis","colorAxis"]:["xAxis","yAxis"],optionalAxis:"colorAxis",getSymbol:z,parallelArrays:["x","y","value","colorValue"],colorKey:"colorValue",translateColors:q.heatmap&&q.heatmap.prototype.translateColors,trackerGroups:["group","dataLabelsGroup"],getListOfParents:function(a,b){a=B(a,function(a,b,d){b=k(b.parent,"");void 0===a[b]&&(a[b]=[]);a[b].push(d);return a},{});H(a,function(a,e,d){""!==e&&-1===f.inArray(e,b)&&(m(a,function(a){d[""].push(a)}),delete d[e])});return a},getTree:function(){var a=
E(this.data,function(a){return a.id}),a=this.getListOfParents(this.data,a);this.nodeMap=[];return this.buildNode("",-1,0,a,null)},init:function(a,b){u.prototype.init.call(this,a,b);this.options.allowDrillToNode&&f.addEvent(this,"click",this.onClickDrillToNode)},buildNode:function(a,b,c,e,d){var g=this,h=[],C=g.points[b],D;m(e[a]||[],function(b){D=g.buildNode(g.points[b].id,b,c+1,e,a);h.push(D)});b={id:a,i:b,children:h,level:c,parent:d,visible:!1};g.nodeMap[b.id]=b;C&&(C.node=b);return b},setTreeValues:function(a){var b=
this,c=b.options,e=0,d=[],g,h=b.points[a.i];w(b.nodeMap[b.rootNode],function(a){var c=!1,d=a.parent;a.visible=!0;if(d||""===d)c=b.nodeMap[d];return c});w(b.nodeMap[b.rootNode].children,function(a){var b=!1;m(a,function(a){a.visible=!0;a.children.length&&(b=(b||[]).concat(a.children))});return b});m(a.children,function(a){a=b.setTreeValues(a);d.push(a);a.ignore?w(a.children,function(a){var b=!1;m(a,function(a){y(a,{ignore:!0,isLeaf:!1,visible:!1});a.children.length&&(b=(b||[]).concat(a.children))});
return b}):e+=a.val});G(d,function(a,b){return a.sortIndex-b.sortIndex});g=k(h&&h.options.value,e);h&&(h.value=g);y(a,{children:d,childrenTotal:e,ignore:!(k(h&&h.visible,!0)&&0<g),isLeaf:a.visible&&!e,levelDynamic:c.levelIsConstant?a.level:a.level-b.nodeMap[b.rootNode].level,name:k(h&&h.name,""),sortIndex:k(h&&h.sortIndex,-g),val:g});return a},calculateChildrenAreas:function(a,b){var c=this,e=c.options,d=this.levelMap[a.levelDynamic+1],g=k(c[d&&d.layoutAlgorithm]&&d.layoutAlgorithm,e.layoutAlgorithm),
h=e.alternateStartingDirection,f=[];a=x(a.children,function(a){return!a.ignore});d&&d.layoutStartingDirection&&(b.direction="vertical"===d.layoutStartingDirection?0:1);f=c[g](b,a);m(a,function(a,d){d=f[d];a.values=v(d,{val:a.childrenTotal,direction:h?1-b.direction:b.direction});a.pointValues=v(d,{x:d.x/c.axisRatio,width:d.width/c.axisRatio});a.children.length&&c.calculateChildrenAreas(a,a.values)})},setPointValues:function(){var a=this.xAxis,b=this.yAxis;m(this.points,function(c){var e=c.node,d=e.pointValues,
g,h;d&&e.visible?(e=Math.round(a.translate(d.x,0,0,0,1))-0,g=Math.round(a.translate(d.x+d.width,0,0,0,1))-0,h=Math.round(b.translate(d.y,0,0,0,1))-0,d=Math.round(b.translate(d.y+d.height,0,0,0,1))-0,c.shapeType="rect",c.shapeArgs={x:Math.min(e,g),y:Math.min(h,d),width:Math.abs(g-e),height:Math.abs(d-h)},c.plotX=c.shapeArgs.x+c.shapeArgs.width/2,c.plotY=c.shapeArgs.y+c.shapeArgs.height/2):(delete c.plotX,delete c.plotY)})},setColorRecursive:function(a,b,c){var e=this,d,g;a&&(d=e.points[a.i],g=e.levelMap[a.levelDynamic],
b=k(d&&d.options.color,g&&g.color,b,e.color),c=k(d&&d.options.colorIndex,g&&g.colorIndex,c,e.colorIndex),d&&(d.color=b,d.colorIndex=c),a.children.length&&m(a.children,function(a){e.setColorRecursive(a,b,c)}))},algorithmGroup:function(a,b,c,e){this.height=a;this.width=b;this.plot=e;this.startDirection=this.direction=c;this.lH=this.nH=this.lW=this.nW=this.total=0;this.elArr=[];this.lP={total:0,lH:0,nH:0,lW:0,nW:0,nR:0,lR:0,aspectRatio:function(a,b){return Math.max(a/b,b/a)}};this.addElement=function(a){this.lP.total=
this.elArr[this.elArr.length-1];this.total+=a;0===this.direction?(this.lW=this.nW,this.lP.lH=this.lP.total/this.lW,this.lP.lR=this.lP.aspectRatio(this.lW,this.lP.lH),this.nW=this.total/this.height,this.lP.nH=this.lP.total/this.nW,this.lP.nR=this.lP.aspectRatio(this.nW,this.lP.nH)):(this.lH=this.nH,this.lP.lW=this.lP.total/this.lH,this.lP.lR=this.lP.aspectRatio(this.lP.lW,this.lH),this.nH=this.total/this.width,this.lP.nW=this.lP.total/this.nH,this.lP.nR=this.lP.aspectRatio(this.lP.nW,this.nH));this.elArr.push(a)};
this.reset=function(){this.lW=this.nW=0;this.elArr=[];this.total=0}},algorithmCalcPoints:function(a,b,c,e){var d,g,h,f,k=c.lW,p=c.lH,l=c.plot,n,r=0,t=c.elArr.length-1;b?(k=c.nW,p=c.nH):n=c.elArr[c.elArr.length-1];m(c.elArr,function(a){if(b||r<t)0===c.direction?(d=l.x,g=l.y,h=k,f=a/h):(d=l.x,g=l.y,f=p,h=a/f),e.push({x:d,y:g,width:h,height:f}),0===c.direction?l.y+=f:l.x+=h;r+=1});c.reset();0===c.direction?c.width-=k:c.height-=p;l.y=l.parent.y+(l.parent.height-c.height);l.x=l.parent.x+(l.parent.width-
c.width);a&&(c.direction=1-c.direction);b||c.addElement(n)},algorithmLowAspectRatio:function(a,b,c){var e=[],d=this,g,h={x:b.x,y:b.y,parent:b},f=0,k=c.length-1,p=new this.algorithmGroup(b.height,b.width,b.direction,h);m(c,function(c){g=c.val/b.val*b.height*b.width;p.addElement(g);p.lP.nR>p.lP.lR&&d.algorithmCalcPoints(a,!1,p,e,h);f===k&&d.algorithmCalcPoints(a,!0,p,e,h);f+=1});return e},algorithmFill:function(a,b,c){var e=[],d,g=b.direction,f=b.x,k=b.y,n=b.width,p=b.height,l,q,r,t;m(c,function(c){d=
c.val/b.val*b.height*b.width;l=f;q=k;0===g?(t=p,r=d/t,n-=r,f+=r):(r=n,t=d/r,p-=t,k+=t);e.push({x:l,y:q,width:r,height:t});a&&(g=1-g)});return e},strip:function(a,b){return this.algorithmLowAspectRatio(!1,a,b)},squarified:function(a,b){return this.algorithmLowAspectRatio(!0,a,b)},sliceAndDice:function(a,b){return this.algorithmFill(!0,a,b)},stripes:function(a,b){return this.algorithmFill(!1,a,b)},translate:function(){var a=this.rootNode=k(this.rootNode,this.options.rootId,""),b,c;u.prototype.translate.call(this);
this.levelMap=B(this.options.levels,function(a,b){a[b.level]=b;return a},{});c=this.tree=this.getTree();b=this.nodeMap[a];""===a||b&&b.children.length||(this.drillToNode("",!1),a=this.rootNode,b=this.nodeMap[a]);this.setTreeValues(c);this.axisRatio=this.xAxis.len/this.yAxis.len;this.nodeMap[""].pointValues=a={x:0,y:0,width:100,height:100};this.nodeMap[""].values=a=v(a,{width:a.width*this.axisRatio,direction:"vertical"===this.options.layoutStartingDirection?0:1,val:c.val});this.calculateChildrenAreas(c,
a);this.colorAxis?this.translateColors():this.options.colorByPoint||this.setColorRecursive(this.tree);this.options.allowDrillToNode&&(b=b.pointValues,this.xAxis.setExtremes(b.x,b.x+b.width,!1),this.yAxis.setExtremes(b.y,b.y+b.height,!1),this.xAxis.setScale(),this.yAxis.setScale());this.setPointValues()},drawDataLabels:function(){var a=this,b=x(a.points,function(a){return a.node.visible}),c,e;m(b,function(b){e=a.levelMap[b.node.levelDynamic];c={style:{}};b.node.isLeaf||(c.enabled=!1);e&&e.dataLabels&&
(c=v(c,e.dataLabels),a._hasPointLabels=!0);b.shapeArgs&&(c.style.width=b.shapeArgs.width,b.dataLabel&&b.dataLabel.css({width:b.shapeArgs.width+"px"}));b.dlOptions=v(c,b.options.dataLabels)});u.prototype.drawDataLabels.call(this)},alignDataLabel:function(a){q.column.prototype.alignDataLabel.apply(this,arguments);a.dataLabel&&a.dataLabel.attr({zIndex:a.node.zIndex+1})},drawPoints:function(){var a=this,b=x(a.points,function(a){return a.node.visible});m(b,function(b){var c="levelGroup-"+b.node.levelDynamic;
a[c]||(a[c]=a.chart.renderer.g(c).attr({zIndex:1E3-b.node.levelDynamic}).add(a.group));b.group=a[c]});q.column.prototype.drawPoints.call(this);a.options.allowDrillToNode&&m(b,function(b){b.graphic&&(b.drillId=a.options.interactByLeaf?a.drillToByLeaf(b):a.drillToByGroup(b))})},onClickDrillToNode:function(a){var b=(a=a.point)&&a.drillId;A(b)&&(a.setState(""),this.drillToNode(b))},drillToByGroup:function(a){var b=!1;1!==a.node.level-this.nodeMap[this.rootNode].level||a.node.isLeaf||(b=a.id);return b},
drillToByLeaf:function(a){var b=!1;if(a.node.parent!==this.rootNode&&a.node.isLeaf)for(a=a.node;!b;)a=this.nodeMap[a.parent],a.parent===this.rootNode&&(b=a.id);return b},drillUp:function(){var a=this.nodeMap[this.rootNode];a&&A(a.parent)&&this.drillToNode(a.parent)},drillToNode:function(a,b){var c=this.nodeMap[a];this.rootNode=a;""===a?this.drillUpButton=this.drillUpButton.destroy():this.showDrillUpButton(c&&c.name||a);this.isDirty=!0;k(b,!0)&&this.chart.redraw()},showDrillUpButton:function(a){var b=
this;a=a||"\x3c Back";var c=b.options.drillUpButton,e,d;c.text&&(a=c.text);this.drillUpButton?this.drillUpButton.attr({text:a}).align():(d=(e=c.theme)&&e.states,this.drillUpButton=this.chart.renderer.button(a,null,null,function(){b.drillUp()},e,d&&d.hover,d&&d.select).attr({align:c.position.align,zIndex:7}).add().align(c.position,!1,c.relativeTo||"plotBox"))},buildKDTree:z,drawLegendSymbol:f.LegendSymbolMixin.drawRectangle,getExtremes:function(){u.prototype.getExtremes.call(this,this.colorValueData);
this.valueMin=this.dataMin;this.valueMax=this.dataMax;u.prototype.getExtremes.call(this)},getExtremesFromAll:!0,bindAxes:function(){var a={endOnTick:!1,gridLineWidth:0,lineWidth:0,min:0,dataMin:0,minPadding:0,max:100,dataMax:100,maxPadding:0,startOnTick:!1,title:null,tickPositions:[]};u.prototype.bindAxes.call(this);f.extend(this.yAxis.options,a);f.extend(this.xAxis.options,a)}},{getClassName:function(){var a=f.Point.prototype.getClassName.call(this),b=this.series,c=b.options;this.node.level<=b.nodeMap[b.rootNode].level?
a+=" highcharts-above-level":this.node.isLeaf||k(c.interactByLeaf,!c.allowDrillToNode)?this.node.isLeaf||(a+=" highcharts-internal-node"):a+=" highcharts-internal-node-interactive";return a},isValid:function(){return F(this.value)},setState:function(a){f.Point.prototype.setState.call(this,a);this.graphic&&this.graphic.attr({zIndex:"hover"===a?1:0})},setVisible:q.pie.prototype.pointClass.prototype.setVisible})})(n)});
/base/000_base/node_modules/highcharts/js/modules/treemap.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":29,
"mappings":"A;;;;;;;;AASC,SAAQ,CAACA,CAAD,CAAU,CACO,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,CACID,MAAAC,QADJ,CACqBF,CADrB,CAGIA,CAAA,CAAQG,UAAR,CAJW,CAAlB,CAAA,CAMC,QAAQ,CAACA,CAAD,CAAa,CAClB,SAAQ,CAACC,CAAD,CAAI,CAAA,IAQLC,EAAaD,CAAAC,WARR,CASLC,EAAcF,CAAAE,YATT,CAULC,EAAMH,CAAAG,IAVD,CAWLC,EAAQJ,CAAAI,MAXH,CAYLC,EAASL,CAAAK,OAZJ,CAaLC,EAAON,CAAAM,KAbF,CAcLC,EAAOP,CAAAO,KAdF,CAeLC,EAAOR,CAAAQ,KAfF,CAgBLC,EAAWT,CAAAS,SAhBN,CAiBLC,EAAWV,CAAAU,SAjBN,CAkBLC,EAAOX,CAAAW,KAlBF,CAmBLC,EAASZ,CAAAY,OAnBJ,CAoBLC,EAAab,CAAAa,WApBR,CAsBLC,EAAaA,QAAQ,CAACC,CAAD,CAAOC,CAAP,CAAaC,CAAb,CAAsB,CACvCA,CAAA,CAAUA,CAAV,EAAqB,IACrBjB,EAAAkB,WAAA,CAAaH,CAAb,CAAmB,QAAQ,CAACI,CAAD,CAAMC,CAAN,CAAW,CAClCJ,CAAAK,KAAA,CAAUJ,CAAV,CAAmBE,CAAnB,CAAwBC,CAAxB,CAA6BL,CAA7B,CADkC,CAAtC,CAFuC,CAtBtC,CA4BLO,EAASA,QAAQ,CAACC,CAAD,CAAMP,CAAN,CAAYQ,CAAZ,CAAsBP,CAAtB,CAA+B,CAC5CA,CAAA,CAAUA,CAAV,EAAqB,IACrBM,EAAA,CAAMA,CAAN,EAAa,EACbhB,EAAA,CAAKgB,CAAL,CAAU,QAAQ,CAACE,CAAD,CAAUC,CAAV,CAAa,CAC3BF,CAAA,CAAWR,CAAAK,KAAA,CAAUJ,CAAV,CAAmBO,CAAnB,CAA6BC,CAA7B,CAAsCC,CAAtC,CAAyCH,CAAzC,CADgB,CAA/B,CAGA,OAAOC,EANqC,CA5B3C,CAsCLG,EAAYA,QAAQ,CAACC,CAAD,CAAOZ,CAAP,CAAaC,CAAb,CAAsB,CAEtCA,CAAA,CAAUA,CAAV,EAAqB,IACrBY,EAAA,CAAOb,CAAAK,KAAA,CAAUJ,CAAV,CAAmBW,CAAnB,CACM,EAAA,CAAb,GAAIC,CAAJ,EACIF,CAAA,CAAUE,CAAV,CAAgBb,CAAhB,CAAsBC,CAAtB,CALkC,CAU9ChB,EAAA,CAAW,SAAX,CAAsB,SAAtB;AAAiC,CAC7B6B,aAAc,CAAA,CADe,CAE7BC,OAAQ,CAAA,CAFqB,CAG7BC,WAAY,CACRC,QAAS,CAAA,CADD,CAERC,MAAO,CAAA,CAFC,CAGRC,cAAe,QAHP,CAIRC,UAAWA,QAAQ,EAAG,CAClB,MAAO,KAAAC,MAAAC,KAAP,EAA0B,IAAAD,MAAAE,GADR,CAJd,CAORC,OAAQ,CAAA,CAPA,CAHiB,CAY7BC,QAAS,CACLC,aAAc,EADT,CAELC,YAAa,qEAFR,CAZoB,CAgB7BC,kBAAmB,CAAA,CAhBU,CAiB7BC,gBAAiB,cAjBY,CAkB7BC,wBAAyB,UAlBI,CAmB7BC,2BAA4B,CAAA,CAnBC,CAoB7BC,gBAAiB,CAAA,CApBY,CAqB7BC,cAAe,CACXC,SAAU,CACNC,MAAO,OADD,CAENC,EAAI,GAFE,CAGNC,EAAG,EAHG,CADC,CArBc,CAAjC,CA+BG,CACCC,cAAe,CAAC,OAAD,CADhB,CAECC,UAAWrD,CAAAsD,QAAA,CAAsB,CAAC,OAAD;AAAU,OAAV,CAAmB,WAAnB,CAAtB,CAAwD,CAAC,OAAD,CAAU,OAAV,CAFpE,CAGCC,aAAc,WAHf,CAICC,UAAWpD,CAJZ,CAKCqD,eAAgB,CAAC,GAAD,CAAM,GAAN,CAAW,OAAX,CAAoB,YAApB,CALjB,CAMCC,SAAU,YANX,CAOCC,gBAAiB3D,CAAAsD,QAAjBK,EAAwC3D,CAAAsD,QAAAM,UAAAD,gBAPzC,CAQCE,cAAe,CAAC,OAAD,CAAU,iBAAV,CARhB,CAgBCC,iBAAkBA,QAAQ,CAACC,CAAD,CAAOC,CAAP,CAAY,CAC9BC,CAAAA,CAAgB7C,CAAA,CAAO2C,CAAP,CAAa,QAAQ,CAACG,CAAD,CAAOC,CAAP,CAAa3C,CAAb,CAAgB,CACjD4C,CAAAA,CAAS3D,CAAA,CAAK0D,CAAAC,OAAL,CAAkB,EAAlB,CACQC,KAAAA,EAArB,GAAIH,CAAA,CAAKE,CAAL,CAAJ,GACIF,CAAA,CAAKE,CAAL,CADJ,CACmB,EADnB,CAGAF,EAAA,CAAKE,CAAL,CAAAE,KAAA,CAAkB9C,CAAlB,CACA,OAAO0C,EAN8C,CAArC,CAOjB,EAPiB,CAUpBtD,EAAA,CAAWqD,CAAX,CAA0B,QAAQ,CAACM,CAAD,CAAWH,CAAX,CAAmBvD,CAAnB,CAAyB,CACvC,EAAhB,GAAKuD,CAAL,EAAoD,EAApD,GAAwBtE,CAAA0E,QAAA,CAAUJ,CAAV,CAAkBJ,CAAlB,CAAxB,GACI3D,CAAA,CAAKkE,CAAL,CAAe,QAAQ,CAACE,CAAD,CAAQ,CAC3B5D,CAAA,CAAK,EAAL,CAAAyD,KAAA,CAAcG,CAAd,CAD2B,CAA/B,CAGA,CAAA,OAAO5D,CAAA,CAAKuD,CAAL,CAJX,CADuD,CAA3D,CAQA,OAAOH,EAnB2B,CAhBvC,CAwCCS,QAASA,QAAQ,EAAG,CAAA,IAEZC;AAAS1E,CAAA,CAAI,IAAA8D,KAAJ,CAAe,QAAQ,CAACa,CAAD,CAAI,CAChC,MAAOA,EAAAvC,GADyB,CAA3B,CAFG,CAKZwC,EAJSC,IAIIhB,iBAAA,CAAwB,IAAAC,KAAxB,CAAmCY,CAAnC,CAJJG,KAMbC,QAAA,CAAiB,EACjB,OAPaD,KAONE,UAAA,CAAiB,EAAjB,CAAsB,EAAtB,CAAyB,CAAzB,CAA4BH,CAA5B,CAAwC,IAAxC,CARS,CAxCrB,CAkDCI,KAAMA,QAAQ,CAACC,CAAD,CAAQC,CAAR,CAAiB,CAE3BzE,CAAAkD,UAAAqB,KAAA9D,KAAA,CADa2D,IACb,CAAmCI,CAAnC,CAA0CC,CAA1C,CADaL,KAETK,QAAAC,iBAAJ,EACItF,CAAAuF,SAAA,CAHSP,IAGT,CAAmB,OAAnB,CAHSA,IAGmBQ,mBAA5B,CAJuB,CAlDhC,CAyDCN,UAAWA,QAAQ,CAAC3C,CAAD,CAAKb,CAAL,CAAQ+D,CAAR,CAAe1E,CAAf,CAAqBuD,CAArB,CAA6B,CAAA,IACxCU,EAAS,IAD+B,CAExCP,EAAW,EAF6B,CAGxCpC,EAAQ2C,CAAAU,OAAA,CAAchE,CAAd,CAHgC,CAKxCiD,CAGJpE,EAAA,CAAMQ,CAAA,CAAKwB,CAAL,CAAN,EAAkB,EAAlB,CAAuB,QAAQ,CAACb,CAAD,CAAI,CAC/BiD,CAAA,CAAQK,CAAAE,UAAA,CAAiBF,CAAAU,OAAA,CAAchE,CAAd,CAAAa,GAAjB,CAAsCb,CAAtC,CAA0C+D,CAA1C,CAAkD,CAAlD,CAAsD1E,CAAtD,CAA4DwB,CAA5D,CACRkC,EAAAD,KAAA,CAAcG,CAAd,CAF+B,CAAnC,CAIAgB,EAAA,CAAO,CACHpD,GAAIA,CADD,CAEHb,EAAGA,CAFA,CAGH+C,SAAUA,CAHP,CAIHgB,MAAOA,CAJJ,CAKHnB,OAAQA,CALL,CAMHsB,QAAS,CAAA,CANN,CAQPZ,EAAAC,QAAA,CAAeU,CAAApD,GAAf,CAAA,CAA0BoD,CACtBtD,EAAJ,GACIA,CAAAsD,KADJ,CACiBA,CADjB,CAGA,OAAOA,EAxBqC,CAzDjD,CAmFCE,cAAeA,QAAQ,CAACC,CAAD,CAAO,CAAA,IACtBd;AAAS,IADa,CAEtBK,EAAUL,CAAAK,QAFY,CAGtBU,EAAgB,CAHM,CAItBtB,EAAW,EAJW,CAKtBtD,CALsB,CAMtBkB,EAAQ2C,CAAAU,OAAA,CAAcI,CAAApE,EAAd,CAEZC,EAAA,CAAUqD,CAAAC,QAAA,CAAeD,CAAAgB,SAAf,CAAV,CAA2C,QAAQ,CAACL,CAAD,CAAO,CAAA,IAClD9D,EAAO,CAAA,CAD2C,CAElDoE,EAAIN,CAAArB,OACRqB,EAAAC,QAAA,CAAe,CAAA,CACf,IAAIK,CAAJ,EAAe,EAAf,GAASA,CAAT,CACIpE,CAAA,CAAOmD,CAAAC,QAAA,CAAegB,CAAf,CAEX,OAAOpE,EAP+C,CAA1D,CAUAF,EAAA,CAAUqD,CAAAC,QAAA,CAAeD,CAAAgB,SAAf,CAAAvB,SAAV,CAAoD,QAAQ,CAACA,CAAD,CAAW,CACnE,IAAI5C,EAAO,CAAA,CACXtB,EAAA,CAAKkE,CAAL,CAAe,QAAQ,CAACE,CAAD,CAAQ,CAC3BA,CAAAiB,QAAA,CAAgB,CAAA,CACZjB,EAAAF,SAAAyB,OAAJ,GACIrE,CADJ,CACWsE,CAACtE,CAADsE,EAAS,EAATA,QAAA,CAAoBxB,CAAAF,SAApB,CADX,CAF2B,CAA/B,CAMA,OAAO5C,EAR4D,CAAvE,CAYAtB,EAAA,CAAKuF,CAAArB,SAAL,CAAoB,QAAQ,CAACE,CAAD,CAAQ,CAChCA,CAAA,CAAQK,CAAAa,cAAA,CAAqBlB,CAArB,CACRF,EAAAD,KAAA,CAAcG,CAAd,CAEKA,EAAAyB,OAAL,CAIIzE,CAAA,CAAUgD,CAAAF,SAAV,CAA0B,QAAQ,CAACA,CAAD,CAAW,CACzC,IAAI5C,EAAO,CAAA,CACXtB,EAAA,CAAKkE,CAAL,CAAe,QAAQ,CAACkB,CAAD,CAAO,CAC1BtF,CAAA,CAAOsF,CAAP,CAAa,CACTS,OAAQ,CAAA,CADC,CAETC,OAAQ,CAAA,CAFC,CAGTT,QAAS,CAAA,CAHA,CAAb,CAKID,EAAAlB,SAAAyB,OAAJ,GACIrE,CADJ,CACWsE,CAACtE,CAADsE,EAAS,EAATA,QAAA,CAAoBR,CAAAlB,SAApB,CADX,CAN0B,CAA9B,CAUA;MAAO5C,EAZkC,CAA7C,CAJJ,CACIkE,CADJ,EACqBpB,CAAAxD,IALW,CAApC,CAyBAN,EAAA,CAAW4D,CAAX,CAAqB,QAAQ,CAAC6B,CAAD,CAAIC,CAAJ,CAAO,CAChC,MAAOD,EAAAE,UAAP,CAAqBD,CAAAC,UADW,CAApC,CAIArF,EAAA,CAAMR,CAAA,CAAK0B,CAAL,EAAcA,CAAAgD,QAAAoB,MAAd,CAAmCV,CAAnC,CACF1D,EAAJ,GACIA,CAAAoE,MADJ,CACkBtF,CADlB,CAGAd,EAAA,CAAOyF,CAAP,CAAa,CACTrB,SAAUA,CADD,CAETsB,cAAeA,CAFN,CAITK,OAAQ,EAAEzF,CAAA,CAAK0B,CAAL,EAAcA,CAAAuD,QAAd,CAA6B,CAAA,CAA7B,CAAF,EAA+C,CAA/C,CAAyCzE,CAAzC,CAJC,CAKTkF,OAAQP,CAAAF,QAARS,EAAwB,CAACN,CALhB,CAMTW,aAAerB,CAAArC,gBAAA,CAA0B8C,CAAAL,MAA1B,CAAwCK,CAAAL,MAAxC,CAAqDT,CAAAC,QAAA,CAAeD,CAAAgB,SAAf,CAAAP,MAN3D,CAOTnD,KAAM3B,CAAA,CAAK0B,CAAL,EAAcA,CAAAC,KAAd,CAA0B,EAA1B,CAPG,CAQTkE,UAAW7F,CAAA,CAAK0B,CAAL,EAAcA,CAAAmE,UAAd,CAA+B,CAACrF,CAAhC,CARF,CASTA,IAAKA,CATI,CAAb,CAWA,OAAO2E,EA1EmB,CAnF/B,CAoKCa,uBAAwBA,QAAQ,CAACrC,CAAD,CAASsC,CAAT,CAAe,CAAA,IACvC5B,EAAS,IAD8B,CAEvCK,EAAUL,CAAAK,QAF6B,CAGvCI,EAAQ,IAAAoB,SAAA,CAAcvC,CAAAoC,aAAd,CAAoC,CAApC,CAH+B,CAIvCI,EAAYnG,CAAA,CAAMqE,CAAA,CAAOS,CAAP,EAAgBA,CAAA5C,gBAAhB,CAAN,EAAgD4C,CAAA5C,gBAAhD,CAAwEwC,CAAAxC,gBAAxE,CAJ2B;AAKvCkE,EAAY1B,CAAAtC,2BAL2B,CAMvCiE,EAAiB,EAIrBvC,EAAA,CAAWjE,CAAA,CAAK8D,CAAAG,SAAL,CAAsB,QAAQ,CAACwC,CAAD,CAAI,CACzC,MAAO,CAACA,CAAAb,OADiC,CAAlC,CAIPX,EAAJ,EAAaA,CAAA3C,wBAAb,GACI8D,CAAAM,UADJ,CACuD,UAAlC,GAAAzB,CAAA3C,wBAAA,CAA+C,CAA/C,CAAmD,CADxE,CAGAkE,EAAA,CAAiBhC,CAAA,CAAO8B,CAAP,CAAA,CAAkBF,CAAlB,CAAwBnC,CAAxB,CACjBlE,EAAA,CAAKkE,CAAL,CAAe,QAAQ,CAACE,CAAD,CAAQwC,CAAR,CAAe,CAC9BC,CAAAA,CAASJ,CAAA,CAAeG,CAAf,CACbxC,EAAAyC,OAAA,CAAehH,CAAA,CAAMgH,CAAN,CAAc,CACzBjG,IAAKwD,CAAAoB,cADoB,CAEzBmB,UAAYH,CAAA,CAAY,CAAZ,CAAgBH,CAAAM,UAAhB,CAAiCN,CAAAM,UAFpB,CAAd,CAIfvC,EAAA0C,YAAA,CAAoBjH,CAAA,CAAMgH,CAAN,CAAc,CAC9BhE,EAAIgE,CAAAhE,EAAJA,CAAe4B,CAAAsC,UADe,CAE9BC,MAAQH,CAAAG,MAARA,CAAuBvC,CAAAsC,UAFO,CAAd,CAKhB3C,EAAAF,SAAAyB,OAAJ,EACIlB,CAAA2B,uBAAA,CAA8BhC,CAA9B,CAAqCA,CAAAyC,OAArC,CAZ8B,CAAtC,CAlB2C,CApKhD,CAsMCI,eAAgBA,QAAQ,EAAG,CAAA,IAEnBC,EADSzC,IACDyC,MAFW,CAGnBC,EAFS1C,IAED0C,MACZnH,EAAA,CAHayE,IAGRU,OAAL,CAAoB,QAAQ,CAACrD,CAAD,CAAQ,CAAA,IAC5BsD,EAAOtD,CAAAsD,KADqB,CAE5ByB,EAASzB,CAAA0B,YAFmB;AAI5BM,CAJ4B,CAK5BC,CAOAR,EAAJ,EAAczB,CAAAC,QAAd,EACIiC,CAaA,CAbKC,IAAAC,MAAA,CAAWN,CAAAO,UAAA,CAAgBZ,CAAAhE,EAAhB,CAA0B,CAA1B,CAA6B,CAA7B,CAAgC,CAAhC,CAAmC,CAAnC,CAAX,CAaL,CAnBY6E,CAmBZ,CAZAN,CAYA,CAZKG,IAAAC,MAAA,CAAWN,CAAAO,UAAA,CAAgBZ,CAAAhE,EAAhB,CAA2BgE,CAAAG,MAA3B,CAAyC,CAAzC,CAA4C,CAA5C,CAA+C,CAA/C,CAAkD,CAAlD,CAAX,CAYL,CAnBYU,CAmBZ,CAXAL,CAWA,CAXKE,IAAAC,MAAA,CAAWL,CAAAM,UAAA,CAAgBZ,CAAA/D,EAAhB,CAA0B,CAA1B,CAA6B,CAA7B,CAAgC,CAAhC,CAAmC,CAAnC,CAAX,CAWL,CAnBY4E,CAmBZ,CAVAC,CAUA,CAVKJ,IAAAC,MAAA,CAAWL,CAAAM,UAAA,CAAgBZ,CAAA/D,EAAhB,CAA2B+D,CAAAe,OAA3B,CAA0C,CAA1C,CAA6C,CAA7C,CAAgD,CAAhD,CAAmD,CAAnD,CAAX,CAUL,CAnBYF,CAmBZ,CARA5F,CAAA+F,UAQA,CARkB,MAQlB,CAPA/F,CAAAgG,UAOA,CAPkB,CACdjF,EAAG0E,IAAAQ,IAAA,CAAST,CAAT,CAAaF,CAAb,CADW,CAEdtE,EAAGyE,IAAAQ,IAAA,CAASV,CAAT,CAAaM,CAAb,CAFW,CAGdX,MAAOO,IAAAS,IAAA,CAASZ,CAAT,CAAcE,CAAd,CAHO,CAIdM,OAAQL,IAAAS,IAAA,CAASL,CAAT,CAAcN,CAAd,CAJM,CAOlB,CADAvF,CAAAmG,MACA,CADcnG,CAAAgG,UAAAjF,EACd,CADmCf,CAAAgG,UAAAd,MACnC,CAD2D,CAC3D,CAAAlF,CAAAoG,MAAA,CAAcpG,CAAAgG,UAAAhF,EAAd,CAAmChB,CAAAgG,UAAAF,OAAnC,CAA4D,CAdhE,GAiBI,OAAO9F,CAAAmG,MACP,CAAA,OAAOnG,CAAAoG,MAlBX,CAZgC,CAApC,CAJuB,CAtM5B,CA4OCC,kBAAmBA,QAAQ,CAAC/C,CAAD,CAAOgD,CAAP,CAAcC,CAAd,CAA0B,CAAA,IAC7C5D,EAAS,IADoC,CAE7C3C,CAF6C,CAG7CoD,CACAE,EAAJ,GACItD,CAsBA,CAtBQ2C,CAAAU,OAAA,CAAcC,CAAAjE,EAAd,CAsBR,CArBA+D,CAqBA,CArBQT,CAAA6B,SAAA,CAAgBlB,CAAAe,aAAhB,CAqBR;AAnBAiC,CAmBA,CAnBQhI,CAAA,CACJ0B,CADI,EACKA,CAAAgD,QAAAsD,MADL,CAEJlD,CAFI,EAEKA,CAAAkD,MAFL,CAGJA,CAHI,CAIJ3D,CAAA2D,MAJI,CAmBR,CAbAC,CAaA,CAbajI,CAAA,CACT0B,CADS,EACAA,CAAAgD,QAAAuD,WADA,CAETnD,CAFS,EAEAA,CAAAmD,WAFA,CAGTA,CAHS,CAIT5D,CAAA4D,WAJS,CAab,CANIvG,CAMJ,GALIA,CAAAsG,MACA,CADcA,CACd,CAAAtG,CAAAuG,WAAA,CAAmBA,CAIvB,EAAIjD,CAAAlB,SAAAyB,OAAJ,EACI3F,CAAA,CAAKoF,CAAAlB,SAAL,CAAoB,QAAQ,CAACE,CAAD,CAAQ,CAChCK,CAAA0D,kBAAA,CAAyB/D,CAAzB,CAAgCgE,CAAhC,CAAuCC,CAAvC,CADgC,CAApC,CAxBR,CAJiD,CA5OtD,CA8QCC,eAAgBA,QAAQ,CAACC,CAAD,CAAIC,CAAJ,CAAOjE,CAAP,CAAUmB,CAAV,CAAa,CACjC,IAAAkC,OAAA,CAAcW,CACd,KAAAvB,MAAA,CAAawB,CACb,KAAAC,KAAA,CAAY/C,CAEZ,KAAAgD,eAAA,CADA,IAAA/B,UACA,CADiBpC,CAMjB,KAAAoE,GAAA,CADA,IAAAC,GACA,CAFA,IAAAC,GAEA,CAHA,IAAAC,GAGA,CAJA,IAAAC,MAIA,CAJa,CAKb,KAAAC,MAAA,CAAa,EACb,KAAAC,GAAA,CAAU,CACNF,MAAO,CADD,CAENJ,GAAI,CAFE,CAGNC,GAAI,CAHE,CAINC,GAAI,CAJE,CAKNC,GAAI,CALE,CAMNI,GAAI,CANE,CAONC,GAAI,CAPE,CAQNC,YAAaA,QAAQ,CAACZ,CAAD,CAAID,CAAJ,CAAO,CACxB,MAAOhB,KAAA8B,IAAA,CAAUb,CAAV,CAAcD,CAAd,CAAmBA,CAAnB,CAAuBC,CAAvB,CADiB,CARtB,CAYV,KAAAc,WAAA,CAAkBC,QAAQ,CAACC,CAAD,CAAK,CAC3B,IAAAP,GAAAF,MAAA;AAAgB,IAAAC,MAAA,CAAW,IAAAA,MAAArD,OAAX,CAA+B,CAA/B,CAChB,KAAAoD,MAAA,EAA0BS,CACH,EAAvB,GAAI,IAAA7C,UAAJ,EAEI,IAAAkC,GAMA,CANU,IAAAC,GAMV,CALA,IAAAG,GAAAN,GAKA,CALa,IAAAM,GAAAF,MAKb,CAL6B,IAAAF,GAK7B,CAJA,IAAAI,GAAAE,GAIA,CAJa,IAAAF,GAAAG,YAAA,CAAoB,IAAAP,GAApB,CAA6B,IAAAI,GAAAN,GAA7B,CAIb,CAFA,IAAAG,GAEA,CAFU,IAAAC,MAEV,CAFuB,IAAAnB,OAEvB,CADA,IAAAqB,GAAAL,GACA,CADa,IAAAK,GAAAF,MACb,CAD6B,IAAAD,GAC7B,CAAA,IAAAG,GAAAC,GAAA,CAAa,IAAAD,GAAAG,YAAA,CAAoB,IAAAN,GAApB,CAA6B,IAAAG,GAAAL,GAA7B,CARjB,GAWI,IAAAD,GAMA,CANU,IAAAC,GAMV,CALA,IAAAK,GAAAJ,GAKA,CALa,IAAAI,GAAAF,MAKb,CAL6B,IAAAJ,GAK7B,CAJA,IAAAM,GAAAE,GAIA,CAJa,IAAAF,GAAAG,YAAA,CAAoB,IAAAH,GAAAJ,GAApB,CAAgC,IAAAF,GAAhC,CAIb,CAFA,IAAAC,GAEA,CAFU,IAAAG,MAEV,CAFuB,IAAA/B,MAEvB,CADA,IAAAiC,GAAAH,GACA,CADa,IAAAG,GAAAF,MACb,CAD6B,IAAAH,GAC7B,CAAA,IAAAK,GAAAC,GAAA,CAAa,IAAAD,GAAAG,YAAA,CAAoB,IAAAH,GAAAH,GAApB,CAAgC,IAAAF,GAAhC,CAjBjB,CAmBA,KAAAI,MAAA/E,KAAA,CAAgBuF,CAAhB,CAtB2B,CAwB/B;IAAAC,MAAA,CAAaC,QAAQ,EAAG,CAEpB,IAAAb,GAAA,CADA,IAAAC,GACA,CADU,CAEV,KAAAE,MAAA,CAAa,EACb,KAAAD,MAAA,CAAa,CAJO,CAhDS,CA9QtC,CAqUCY,oBAAqBA,QAAQ,CAACC,CAAD,CAAkBC,CAAlB,CAAwBC,CAAxB,CAA+BC,CAA/B,CAA6C,CAAA,IAClEC,CADkE,CAElEC,CAFkE,CAGlEC,CAHkE,CAIlEC,CAJkE,CAKlEC,EAAKN,CAAAjB,GAL6D,CAMlEwB,EAAKP,CAAAnB,GAN6D,CAOlEF,EAAOqB,CAAArB,KAP2D,CAQlE6B,CARkE,CASlEnJ,EAAI,CAT8D,CAUlEoJ,EAAMT,CAAAd,MAAArD,OAAN4E,CAA2B,CAC3BV,EAAJ,EACIO,CACA,CADKN,CAAAhB,GACL,CAAAuB,CAAA,CAAKP,CAAAlB,GAFT,EAII0B,CAJJ,CAIWR,CAAAd,MAAA,CAAYc,CAAAd,MAAArD,OAAZ,CAAiC,CAAjC,CAEX3F,EAAA,CAAK8J,CAAAd,MAAL,CAAkB,QAAQ,CAACtD,CAAD,CAAI,CAC1B,GAAImE,CAAJ,EAAa1I,CAAb,CAAiBoJ,CAAjB,CAC4B,CAAxB,GAAIT,CAAAnD,UAAJ,EACIqD,CAGA,CAHKvB,CAAA5F,EAGL,CAFAoH,CAEA,CAFKxB,CAAA3F,EAEL,CADAoH,CACA,CADKE,CACL,CAAAD,CAAA,CAAKzE,CAAL,CAASwE,CAJb,GAMIF,CAGA,CAHKvB,CAAA5F,EAGL,CAFAoH,CAEA,CAFKxB,CAAA3F,EAEL,CADAqH,CACA,CADKE,CACL,CAAAH,CAAA,CAAKxE,CAAL,CAASyE,CATb,CAiBA,CANAJ,CAAA9F,KAAA,CAAkB,CACdpB,EAAGmH,CADW,CAEdlH,EAAGmH,CAFW,CAGdjD,MAAOkD,CAHO,CAIdtC,OAAQuC,CAJM,CAAlB,CAMA,CAAwB,CAAxB,GAAIL,CAAAnD,UAAJ,CACI8B,CAAA3F,EADJ,EACsBqH,CADtB,CAGI1B,CAAA5F,EAHJ,EAGsBqH,CAGtB/I,EAAJ,EAAQ,CAzBkB,CAA9B,CA4BA2I,EAAAL,MAAA,EACwB,EAAxB,GAAIK,CAAAnD,UAAJ,CACImD,CAAA9C,MADJ,EACgCoD,CADhC,CAGIN,CAAAlC,OAHJ,EAGkCyC,CAElC5B,EAAA3F,EAAA,CAAS2F,CAAA1E,OAAAjB,EAAT,EAA0B2F,CAAA1E,OAAA6D,OAA1B,CAA+CkC,CAAAlC,OAA/C,CACAa,EAAA5F,EAAA,CAAS4F,CAAA1E,OAAAlB,EAAT,EAA0B4F,CAAA1E,OAAAiD,MAA1B;AAA8C8C,CAAA9C,MAA9C,CACI4C,EAAJ,GACIE,CAAAnD,UADJ,CACsB,CADtB,CAC0BmD,CAAAnD,UAD1B,CAIKkD,EAAL,EACIC,CAAAR,WAAA,CAAiBgB,CAAjB,CA1DkE,CArU3E,CAkYCE,wBAAyBA,QAAQ,CAACZ,CAAD,CAAkB7F,CAAlB,CAA0BG,CAA1B,CAAoC,CAAA,IAC7D6F,EAAe,EAD8C,CAE7DtF,EAAS,IAFoD,CAG7DgG,CAH6D,CAI7DhC,EAAO,CACH5F,EAAGkB,CAAAlB,EADA,CAEHC,EAAGiB,CAAAjB,EAFA,CAGHiB,OAAQA,CAHL,CAJsD,CAU7D5C,EAAI,CAVyD,CAW7DoJ,EAAMrG,CAAAyB,OAAN4E,CAAwB,CAXqC,CAY7DT,EAAQ,IAAI,IAAAxB,eAAJ,CAAwBvE,CAAA6D,OAAxB,CAAuC7D,CAAAiD,MAAvC,CAHIjD,CAAA4C,UAGJ,CAAgE8B,CAAhE,CAEZzI,EAAA,CAAKkE,CAAL,CAAe,QAAQ,CAACE,CAAD,CAAQ,CAC3BqG,CAAA,CAAyCrG,CAAAxD,IAAzC,CAAqDmD,CAAAnD,IAArD,CAAuBmD,CAAA6D,OAAvB,CAAQ7D,CAAAiD,MACR8C,EAAAR,WAAA,CAAiBmB,CAAjB,CACIX,EAAAb,GAAAC,GAAJ,CAAkBY,CAAAb,GAAAE,GAAlB,EACI1E,CAAAkF,oBAAA,CAA2BC,CAA3B,CAA4C,CAAA,CAA5C,CAAmDE,CAAnD,CAA0DC,CAA1D,CAAwEtB,CAAxE,CAGAtH,EAAJ,GAAUoJ,CAAV,EACI9F,CAAAkF,oBAAA,CAA2BC,CAA3B,CAA4C,CAAA,CAA5C,CAAkDE,CAAlD,CAAyDC,CAAzD,CAAuEtB,CAAvE,CAEAtH,EAAJ,EAAQ,CAVmB,CAA/B,CAYA,OAAO4I,EA1B0D,CAlYtE,CA8ZCW,cAAeA,QAAQ,CAACd,CAAD,CAAkB7F,CAAlB,CAA0BG,CAA1B,CAAoC,CAAA,IACnD6F,EAAe,EADoC,CAEnDU,CAFmD,CAGnD9D,EAAY5C,CAAA4C,UAHuC,CAInD9D,EAAIkB,CAAAlB,EAJ+C,CAKnDC,EAAIiB,CAAAjB,EAL+C,CAMnDkE,EAAQjD,CAAAiD,MAN2C,CAOnDY,EAAS7D,CAAA6D,OAP0C,CAQnDoC,CARmD,CASnDC,CATmD,CAUnDC,CAVmD,CAWnDC,CACJnK,EAAA,CAAKkE,CAAL,CAAe,QAAQ,CAACE,CAAD,CAAQ,CAC3BqG,CAAA;AAAyCrG,CAAAxD,IAAzC,CAAqDmD,CAAAnD,IAArD,CAAuBmD,CAAA6D,OAAvB,CAAQ7D,CAAAiD,MACRgD,EAAA,CAAKnH,CACLoH,EAAA,CAAKnH,CACa,EAAlB,GAAI6D,CAAJ,EACIwD,CAGI,CAHCvC,CAGD,CAFJsC,CAEI,CAFCO,CAED,CAFQN,CAER,CADInD,CACJ,EADYkD,CACZ,CAAArH,CAAA,EAAIqH,CAJZ,GAMIA,CAGI,CAHClD,CAGD,CAFJmD,CAEI,CAFCM,CAED,CAFQP,CAER,CADKtC,CACL,EADcuC,CACd,CAAArH,CAAA,EAAIqH,CATZ,CAWAJ,EAAA9F,KAAA,CAAkB,CACdpB,EAAGmH,CADW,CAEdlH,EAAGmH,CAFW,CAGdjD,MAAOkD,CAHO,CAIdtC,OAAQuC,CAJM,CAAlB,CAMIP,EAAJ,GACIjD,CADJ,CACgB,CADhB,CACoBA,CADpB,CArB2B,CAA/B,CAyBA,OAAOoD,EArCgD,CA9Z5D,CAqcCY,MAAOA,QAAQ,CAAC5G,CAAD,CAASG,CAAT,CAAmB,CAC9B,MAAO,KAAAsG,wBAAA,CAA6B,CAAA,CAA7B,CAAoCzG,CAApC,CAA4CG,CAA5C,CADuB,CArcnC,CAwcC0G,WAAYA,QAAQ,CAAC7G,CAAD,CAASG,CAAT,CAAmB,CACnC,MAAO,KAAAsG,wBAAA,CAA6B,CAAA,CAA7B,CAAmCzG,CAAnC,CAA2CG,CAA3C,CAD4B,CAxcxC,CA2cC2G,aAAcA,QAAQ,CAAC9G,CAAD,CAASG,CAAT,CAAmB,CACrC,MAAO,KAAAwG,cAAA,CAAmB,CAAA,CAAnB,CAAyB3G,CAAzB,CAAiCG,CAAjC,CAD8B,CA3c1C,CA8cC4G,QAASA,QAAQ,CAAC/G,CAAD,CAASG,CAAT,CAAmB,CAChC,MAAO,KAAAwG,cAAA,CAAmB,CAAA,CAAnB,CAA0B3G,CAA1B,CAAkCG,CAAlC,CADyB,CA9crC,CAidCuD,UAAWA,QAAQ,EAAG,CAAA,IAEdsD,EADStG,IACAgB,SAATsF,CAA2B3K,CAAA,CADlBqE,IACuBgB,SAAL,CADlBhB,IACwCK,QAAAiG,OAAtB,CAA6C,EAA7C,CAFb,CAGdtF,CAHc,CAMdF,CAIJlF,EAAAkD,UAAAkE,UAAA3G,KAAA,CATa2D,IASb,CATaA;IAWb6B,SAAA,CAAkBvF,CAAA,CAXL0D,IAWYK,QAAAkG,OAAP,CAA8B,QAAQ,CAAChK,CAAD,CAAMK,CAAN,CAAY,CAChEL,CAAA,CAAIK,CAAA6D,MAAJ,CAAA,CAAkB7D,CAClB,OAAOL,EAFyD,CAAlD,CAGf,EAHe,CAIlBuE,EAAA,CAfad,IAeNc,KAAP,CAfad,IAeQJ,QAAA,EACrBoB,EAAA,CAhBahB,IAgBFC,QAAA,CAAeqG,CAAf,CAEI,GADf,GACIA,CADJ,EAEMtF,CAFN,EAEmBA,CAAAvB,SAAAyB,OAFnB,GAjBalB,IAqBTwG,YAAA,CAAmB,EAAnB,CAAuB,CAAA,CAAvB,CAEA,CADAF,CACA,CAvBStG,IAsBAgB,SACT,CAAAA,CAAA,CAvBShB,IAuBEC,QAAA,CAAeqG,CAAf,CANf,CAjBatG,KAyBba,cAAA,CAAqBC,CAArB,CAzBad,KA4BbsC,UAAA,CA5BatC,IA4BOyC,MAAAgE,IAApB,CA5BazG,IA4B0B0C,MAAA+D,IA5B1BzG,KA6BbC,QAAA,CAAe,EAAf,CAAAoC,YAAA,CAAiCA,CAAjC,CAA+C,CAC3CjE,EAAG,CADwC,CAE3CC,EAAG,CAFwC,CAG3CkE,MAAO,GAHoC,CAI3CY,OAAQ,GAJmC,CA7BlCnD,KAmCbC,QAAA,CAAe,EAAf,CAAAmC,OAAA,CAA4BsE,CAA5B,CAAyCtL,CAAA,CAAMiH,CAAN,CAAmB,CACxDE,MAAQF,CAAAE,MAARA,CApCSvC,IAoCmBsC,UAD4B,CAExDJ,UAAuD,UAA3C,GArCHlC,IAqCGK,QAAAvC,wBAAA,CAAwD,CAAxD,CAA4D,CAFhB,CAGxD3B,IAAK2E,CAAA3E,IAHmD,CAAnB,CAnC5B6D,KAwCb2B,uBAAA,CAA8Bb,CAA9B;AAAoC4F,CAApC,CAxCa1G,KA2CT2G,UAAJ,CA3Ca3G,IA4CTnB,gBAAA,EADJ,CA3CamB,IA6CDK,QAAAuG,aAFZ,EA3Ca5G,IA8CT0D,kBAAA,CA9CS1D,IA8CgBc,KAAzB,CA9CSd,KAkDTK,QAAAC,iBAAJ,GACInE,CAIA,CAJM6E,CAAAqB,YAIN,CAvDSrC,IAoDTyC,MAAAoE,YAAA,CAAyB1K,CAAAiC,EAAzB,CAAgCjC,CAAAiC,EAAhC,CAAwCjC,CAAAoG,MAAxC,CAAmD,CAAA,CAAnD,CAGA,CAvDSvC,IAqDT0C,MAAAmE,YAAA,CAAyB1K,CAAAkC,EAAzB,CAAgClC,CAAAkC,EAAhC,CAAwClC,CAAAgH,OAAxC,CAAoD,CAAA,CAApD,CAEA,CAvDSnD,IAsDTyC,MAAAqE,SAAA,EACA,CAvDS9G,IAuDT0C,MAAAoE,SAAA,EALJ,CAlDa9G,KA2DbwC,eAAA,EA5DkB,CAjdvB,CAqhBCuE,eAAgBA,QAAQ,EAAG,CAAA,IACnB/G,EAAS,IADU,CAEnBU,EAASlF,CAAA,CAAKwE,CAAAU,OAAL,CAAoB,QAAQ,CAACuB,CAAD,CAAI,CACrC,MAAOA,EAAAtB,KAAAC,QAD8B,CAAhC,CAFU,CAKnBP,CALmB,CAMnBI,CACJlF,EAAA,CAAKmF,CAAL,CAAa,QAAQ,CAACrD,CAAD,CAAQ,CACzBoD,CAAA,CAAQT,CAAA6B,SAAA,CAAgBxE,CAAAsD,KAAAe,aAAhB,CAERrB,EAAA,CAAU,CACN2G,MAAO,EADD,CAKL3J,EAAAsD,KAAAU,OAAL,GACIhB,CAAApD,QADJ,CACsB,CAAA,CADtB,CAKIwD,EAAJ,EAAaA,CAAAzD,WAAb;CACIqD,CACA,CADUjF,CAAA,CAAMiF,CAAN,CAAeI,CAAAzD,WAAf,CACV,CAAAgD,CAAAiH,gBAAA,CAAyB,CAAA,CAF7B,CAMI5J,EAAAgG,UAAJ,GACIhD,CAAA2G,MAAAzE,MACA,CADsBlF,CAAAgG,UAAAd,MACtB,CAAIlF,CAAA6J,UAAJ,EACI7J,CAAA6J,UAAAC,IAAA,CAAoB,CAChB5E,MAAOlF,CAAAgG,UAAAd,MAAPA,CAA+B,IADf,CAApB,CAHR,CAUAlF,EAAA+J,UAAA,CAAkBhM,CAAA,CAAMiF,CAAN,CAAehD,CAAAgD,QAAArD,WAAf,CA7BO,CAA7B,CA+BApB,EAAAkD,UAAAiI,eAAA1K,KAAA,CAAqC,IAArC,CAtCuB,CArhB5B,CAikBCgL,eAAgBA,QAAQ,CAAChK,CAAD,CAAQ,CAC5BnC,CAAAoM,OAAAxI,UAAAuI,eAAAE,MAAA,CAAkD,IAAlD,CAAwDC,SAAxD,CACInK,EAAA6J,UAAJ,EACI7J,CAAA6J,UAAAO,KAAA,CAAqB,CACjBC,OAAQrK,CAAAsD,KAAA+G,OAARA,CAA4B,CADX,CAArB,CAHwB,CAjkBjC,CA+kBCC,WAAYA,QAAQ,EAAG,CAAA,IACf3H,EAAS,IADM,CAEfU,EAASlF,CAAA,CAAKwE,CAAAU,OAAL,CAAoB,QAAQ,CAACuB,CAAD,CAAI,CACrC,MAAOA,EAAAtB,KAAAC,QAD8B,CAAhC,CAIbrF,EAAA,CAAKmF,CAAL,CAAa,QAAQ,CAACrD,CAAD,CAAQ,CACzB,IAAIuK,EAAW,aAAXA,CAA2BvK,CAAAsD,KAAAe,aAC1B1B;CAAA,CAAO4H,CAAP,CAAL,GACI5H,CAAA,CAAO4H,CAAP,CADJ,CACuB5H,CAAAI,MAAAyH,SAAAC,EAAA,CAAwBF,CAAxB,CAAAH,KAAA,CACT,CACFC,OAAQ,GAARA,CAAerK,CAAAsD,KAAAe,aADb,CADS,CAAAqG,IAAA,CAIV/H,CAAAqF,MAJU,CADvB,CAOAhI,EAAAgI,MAAA,CAAcrF,CAAA,CAAO4H,CAAP,CATW,CAA7B,CAaA1M,EAAAoM,OAAAxI,UAAA6I,WAAAtL,KAAA,CAA6C,IAA7C,CAGI2D,EAAAK,QAAAC,iBAAJ,EACI/E,CAAA,CAAKmF,CAAL,CAAa,QAAQ,CAACrD,CAAD,CAAQ,CACrBA,CAAA2K,QAAJ,GACI3K,CAAA4K,QADJ,CACoBjI,CAAAK,QAAA6H,eAAA,CAAgClI,CAAAmI,cAAA,CAAqB9K,CAArB,CAAhC,CAA8D2C,CAAAoI,eAAA,CAAsB/K,CAAtB,CADlF,CADyB,CAA7B,CAvBe,CA/kBxB,CAgnBCmD,mBAAoBA,QAAQ,CAAC6H,CAAD,CAAQ,CAChC,IAEIJ,GADA5K,CACA4K,CADQI,CAAAhL,MACR4K,GAAmB5K,CAAA4K,QAEnBvM,EAAA,CAASuM,CAAT,CAAJ,GACI5K,CAAAiL,SAAA,CAAe,EAAf,CACA,CANStI,IAMTwG,YAAA,CAAmByB,CAAnB,CAFJ,CALgC,CAhnBrC,CAgoBCG,eAAgBA,QAAQ,CAAC/K,CAAD,CAAQ,CAC5B,IACI4K,EAAU,CAAA,CACqD,EAAnE,GAAK5K,CAAAsD,KAAAF,MAAL,CAFaT,IAEWC,QAAA,CAFXD,IAE0BgB,SAAf,CAAAP,MAAxB,EAAyEpD,CAAAsD,KAAAU,OAAzE,GACI4G,CADJ,CACc5K,CAAAE,GADd,CAGA,OAAO0K,EANqB,CAhoBjC;AA8oBCE,cAAeA,QAAQ,CAAC9K,CAAD,CAAQ,CAAA,IAEvB4K,EAAU,CAAA,CAEd,IAAK5K,CAAAsD,KAAArB,OAAL,GAHaU,IAGcgB,SAA3B,EAAgD3D,CAAAsD,KAAAU,OAAhD,CAEI,IADAkH,CACA,CADalL,CAAAsD,KACb,CAAQsH,CAAAA,CAAR,CAAA,CACIM,CACA,CAPKvI,IAMQC,QAAA,CAAesI,CAAAjJ,OAAf,CACb,CAAIiJ,CAAAjJ,OAAJ,GAPKU,IAOqBgB,SAA1B,GACIiH,CADJ,CACcM,CAAAhL,GADd,CAKR,OAAO0K,EAboB,CA9oBhC,CA6pBCO,QAASA,QAAQ,EAAG,CAChB,IACI7H,EADSX,IACFC,QAAA,CADED,IACagB,SAAf,CACPL,EAAJ,EAAYjF,CAAA,CAASiF,CAAArB,OAAT,CAAZ,EAFaU,IAGTwG,YAAA,CAAmB7F,CAAArB,OAAnB,CAJY,CA7pBrB,CAoqBCkH,YAAaA,QAAQ,CAACjJ,CAAD,CAAKkL,CAAL,CAAa,CAC9B,IAEI9H,EAFSX,IACCC,QACH,CAAQ1C,CAAR,CAFEyC,KAGbgB,SAAA,CAAkBzD,CACP,GAAX,GAAIA,CAAJ,CAJayC,IAKT/B,cADJ,CAJa+B,IAKc/B,cAAAyK,QAAA,EAD3B,CAJa1I,IAOT2I,kBAAA,CAA0BhI,CAA1B,EAAkCA,CAAArD,KAAlC,EAA+CC,CAA/C,CAEJ,KAAAqL,QAAA,CAAe,CAAA,CACXjN,EAAA,CAAK8M,CAAL,CAAa,CAAA,CAAb,CAAJ,EACI,IAAArI,MAAAqI,OAAA,EAZ0B,CApqBnC,CAmrBCE,kBAAmBA,QAAQ,CAACrL,CAAD,CAAO,CAAA,IAC1B0C;AAAS,IACT6I,EAAAA,CAAYvL,CAAZuL,EAAoB,WAFM,KAG1BC,EAAgB9I,CAAAK,QAAApC,cAHU,CAI1BwJ,CAJ0B,CAK1BsB,CAEAD,EAAAE,KAAJ,GACIH,CADJ,CACeC,CAAAE,KADf,CAGK,KAAA/K,cAAL,CAsBI,IAAAA,cAAAwJ,KAAA,CAAwB,CAChBuB,KAAMH,CADU,CAAxB,CAAA1K,MAAA,EAtBJ,EAEI4K,CAEA,EAHAtB,CAGA,CAHOqB,CAAAG,MAGP,GAFiBxB,CAAAsB,OAEjB,CAAA,IAAA9K,cAAA,CAAqB,IAAAmC,MAAAyH,SAAAqB,OAAA,CACbL,CADa,CAEb,IAFa,CAGb,IAHa,CAIb,QAAQ,EAAG,CACP7I,CAAAwI,QAAA,EADO,CAJE,CAObf,CAPa,CAQbsB,CARa,EAQHA,CAAAI,MARG,CASbJ,CATa,EASHA,CAAAK,OATG,CAAA3B,KAAA,CAWX,CACFtJ,MAAO2K,CAAA5K,SAAAC,MADL,CAEFuJ,OAAQ,CAFN,CAXW,CAAAK,IAAA,EAAA5J,MAAA,CAgBV2K,CAAA5K,SAhBU,CAgBc,CAAA,CAhBd,CAgBqB4K,CAAAO,WAhBrB,EAgBiD,SAhBjD,CAJzB,CAV8B,CAnrBnC,CAytBCC,YAAahO,CAztBd,CA0tBCiO,iBAAkBvO,CAAAwO,kBAAAC,cA1tBnB,CA2tBCC,YAAaA,QAAQ,EAAG,CAEpB9N,CAAAkD,UAAA4K,YAAArN,KAAA,CAAkC,IAAlC,CAAwC,IAAAsN,eAAxC,CACA;IAAAC,SAAA,CAAgB,IAAAC,QAChB,KAAAC,SAAA,CAAgB,IAAAC,QAGhBnO,EAAAkD,UAAA4K,YAAArN,KAAA,CAAkC,IAAlC,CAPoB,CA3tBzB,CAouBC2N,mBAAoB,CAAA,CApuBrB,CAquBCC,SAAUA,QAAQ,EAAG,CACjB,IAAIC,EAAW,CACXC,UAAW,CAAA,CADA,CAEXC,cAAe,CAFJ,CAGXC,UAAW,CAHA,CAIX/G,IAAK,CAJM,CAKXuG,QAAS,CALE,CAMXS,WAAY,CAND,CAOX1F,IAAK,GAPM,CAQXmF,QAAS,GARE,CASXQ,WAAY,CATD,CAUXC,YAAa,CAAA,CAVF,CAWXC,MAAO,IAXI,CAYXC,cAAe,EAZJ,CAcf9O,EAAAkD,UAAAmL,SAAA5N,KAAA,CAA+B,IAA/B,CACArB,EAAAK,OAAA,CAAS,IAAAqH,MAAArC,QAAT,CAA6B6J,CAA7B,CACAlP,EAAAK,OAAA,CAAS,IAAAoH,MAAApC,QAAT,CAA6B6J,CAA7B,CAjBiB,CAruBtB,CA/BH,CAyxBG,CACCS,aAAcA,QAAQ,EAAG,CAAA,IACjBC,EAAY5P,CAAA6P,MAAA/L,UAAA6L,aAAAtO,KAAA,CAAoC,IAApC,CADK,CAEjB2D,EAAS,IAAAA,OAFQ,CAGjBK,EAAUL,CAAAK,QAGV,KAAAM,KAAAF,MAAJ,EAAuBT,CAAAC,QAAA,CAAeD,CAAAgB,SAAf,CAAAP,MAAvB;AACImK,CADJ,EACiB,yBADjB,CAGY,IAAAjK,KAAAU,OAAL,EAA0B1F,CAAA,CAAK0E,CAAA6H,eAAL,CAA6B,CAAC7H,CAAAC,iBAA9B,CAA1B,CAGK,IAAAK,KAAAU,OAHL,GAIHuJ,CAJG,EAIU,2BAJV,EACHA,CADG,EACU,uCAKjB,OAAOA,EAfc,CAD1B,CAkBCE,QAASA,QAAQ,EAAG,CAChB,MAAOrP,EAAA,CAAS,IAAAgG,MAAT,CADS,CAlBrB,CAqBC6G,SAAUA,QAAQ,CAACyC,CAAD,CAAQ,CACtB/P,CAAA6P,MAAA/L,UAAAwJ,SAAAjM,KAAA,CAAgC,IAAhC,CAAsC0O,CAAtC,CAGI,KAAA/C,QAAJ,EACI,IAAAA,QAAAP,KAAA,CAAkB,CACdC,OAAkB,OAAV,GAAAqD,CAAA,CAAoB,CAApB,CAAwB,CADlB,CAAlB,CALkB,CArB3B,CA+BCC,WAAY9P,CAAA+P,IAAAnM,UAAAoM,WAAApM,UAAAkM,WA/Bb,CAzxBH,CAhDS,CAAZ,CAAA,CA22BCjQ,CA32BD,CADkB,CANtB;",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","seriesType","seriesTypes","map","merge","extend","noop","each","grep","isNumber","isString","pick","Series","stableSort","eachObject","list","func","context","objectEach","val","key","call","reduce","arr","previous","current","i","recursive","item","next","showInLegend","marker","dataLabels","enabled","defer","verticalAlign","formatter","point","name","id","inside","tooltip","headerFormat","pointFormat","ignoreHiddenPoint","layoutAlgorithm","layoutStartingDirection","alternateStartingDirection","levelIsConstant","drillUpButton","position","align","x","y","pointArrayMap","axisTypes","heatmap","optionalAxis","getSymbol","parallelArrays","colorKey","translateColors","prototype","trackerGroups","getListOfParents","data","ids","listOfParents","prev","curr","parent","undefined","push","children","inArray","child","getTree","allIds","d","parentList","series","nodeMap","buildNode","init","chart","options","allowDrillToNode","addEvent","onClickDrillToNode","level","points","node","visible","setTreeValues","tree","childrenTotal","rootNode","p","length","concat","ignore","isLeaf","a","b","sortIndex","value","levelDynamic","calculateChildrenAreas","area","levelMap","algorithm","alternate","childrenValues","n","direction","index","values","pointValues","axisRatio","width","setPointValues","xAxis","yAxis","x2","y1","x1","Math","round","translate","crispCorr","y2","height","shapeType","shapeArgs","min","abs","plotX","plotY","setColorRecursive","color","colorIndex","algorithmGroup","h","w","plot","startDirection","lH","nH","lW","nW","total","elArr","lP","nR","lR","aspectRatio","max","addElement","this.addElement","el","reset","this.reset","algorithmCalcPoints","directionChange","last","group","childrenArea","pX","pY","pW","pH","gW","gH","keep","end","algorithmLowAspectRatio","pTot","algorithmFill","strip","squarified","sliceAndDice","stripes","rootId","levels","drillToNode","len","seriesArea","colorAxis","colorByPoint","setExtremes","setScale","drawDataLabels","style","_hasPointLabels","dataLabel","css","dlOptions","alignDataLabel","column","apply","arguments","attr","zIndex","drawPoints","groupKey","renderer","g","add","graphic","drillId","interactByLeaf","drillToByLeaf","drillToByGroup","event","setState","nodeParent","drillUp","redraw","destroy","showDrillUpButton","isDirty","backText","buttonOptions","states","text","theme","button","hover","select","relativeTo","buildKDTree","drawLegendSymbol","LegendSymbolMixin","drawRectangle","getExtremes","colorValueData","valueMin","dataMin","valueMax","dataMax","getExtremesFromAll","bindAxes","treeAxis","endOnTick","gridLineWidth","lineWidth","minPadding","maxPadding","startOnTick","title","tickPositions","getClassName","className","Point","isValid","state","setVisible","pie","pointClass"]
}
/base/000_base/node_modules/highcharts/js/modules/treemap.src.js
@@ -0,0 +1,893 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
*
* (c) 2014 Highsoft AS
* Authors: Jon Arild Nygard / Oystein Moseng
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2014 Highsoft AS
* Authors: Jon Arild Nygard / Oystein Moseng
*
* License: www.highcharts.com/license
*/
 
var seriesType = H.seriesType,
seriesTypes = H.seriesTypes,
map = H.map,
merge = H.merge,
extend = H.extend,
noop = H.noop,
each = H.each,
grep = H.grep,
isNumber = H.isNumber,
isString = H.isString,
pick = H.pick,
Series = H.Series,
stableSort = H.stableSort,
color = H.Color,
eachObject = function(list, func, context) {
context = context || this;
H.objectEach(list, function(val, key) {
func.call(context, val, key, list);
});
},
reduce = function(arr, func, previous, context) {
context = context || this;
arr = arr || []; // @note should each be able to handle empty values automatically?
each(arr, function(current, i) {
previous = func.call(context, previous, current, i, arr);
});
return previous;
},
// @todo find correct name for this function.
// @todo Similar to reduce, this function is likely redundant
recursive = function(item, func, context) {
var next;
context = context || this;
next = func.call(context, item);
if (next !== false) {
recursive(next, func, context);
}
};
 
// The Treemap series type
seriesType('treemap', 'scatter', {
showInLegend: false,
marker: false,
dataLabels: {
enabled: true,
defer: false,
verticalAlign: 'middle',
formatter: function() { // #2945
return this.point.name || this.point.id;
},
inside: true
},
tooltip: {
headerFormat: '',
pointFormat: '<b>{point.name}</b>: {point.value}</b><br/>'
},
ignoreHiddenPoint: true,
layoutAlgorithm: 'sliceAndDice',
layoutStartingDirection: 'vertical',
alternateStartingDirection: false,
levelIsConstant: true,
drillUpButton: {
position: {
align: 'right',
x: -10,
y: 10
}
},
 
 
// Prototype members
}, {
pointArrayMap: ['value'],
axisTypes: seriesTypes.heatmap ? ['xAxis', 'yAxis', 'colorAxis'] : ['xAxis', 'yAxis'],
optionalAxis: 'colorAxis',
getSymbol: noop,
parallelArrays: ['x', 'y', 'value', 'colorValue'],
colorKey: 'colorValue', // Point color option key
translateColors: seriesTypes.heatmap && seriesTypes.heatmap.prototype.translateColors,
trackerGroups: ['group', 'dataLabelsGroup'],
/**
* Creates an object map from parent id to childrens index.
* @param {Array} data List of points set in options.
* @param {string} data[].parent Parent id of point.
* @param {Array} ids List of all point ids.
* @return {Object} Map from parent id to children index in data.
*/
getListOfParents: function(data, ids) {
var listOfParents = reduce(data, function(prev, curr, i) {
var parent = pick(curr.parent, '');
if (prev[parent] === undefined) {
prev[parent] = [];
}
prev[parent].push(i);
return prev;
}, {});
 
// If parent does not exist, hoist parent to root of tree.
eachObject(listOfParents, function(children, parent, list) {
if ((parent !== '') && (H.inArray(parent, ids) === -1)) {
each(children, function(child) {
list[''].push(child);
});
delete list[parent];
}
});
return listOfParents;
},
/**
* Creates a tree structured object from the series points
*/
getTree: function() {
var series = this,
allIds = map(this.data, function(d) {
return d.id;
}),
parentList = series.getListOfParents(this.data, allIds);
 
series.nodeMap = [];
return series.buildNode('', -1, 0, parentList, null);
},
init: function(chart, options) {
var series = this;
Series.prototype.init.call(series, chart, options);
if (series.options.allowDrillToNode) {
H.addEvent(series, 'click', series.onClickDrillToNode);
}
},
buildNode: function(id, i, level, list, parent) {
var series = this,
children = [],
point = series.points[i],
node,
child;
 
// Actions
each((list[id] || []), function(i) {
child = series.buildNode(series.points[i].id, i, (level + 1), list, id);
children.push(child);
});
node = {
id: id,
i: i,
children: children,
level: level,
parent: parent,
visible: false // @todo move this to better location
};
series.nodeMap[node.id] = node;
if (point) {
point.node = node;
}
return node;
},
setTreeValues: function(tree) {
var series = this,
options = series.options,
childrenTotal = 0,
children = [],
val,
point = series.points[tree.i];
// Parents of the root node is by default visible
recursive(series.nodeMap[series.rootNode], function(node) {
var next = false,
p = node.parent;
node.visible = true;
if (p || p === '') {
next = series.nodeMap[p];
}
return next;
});
// Children of the root node is by default visible
recursive(series.nodeMap[series.rootNode].children, function(children) {
var next = false;
each(children, function(child) {
child.visible = true;
if (child.children.length) {
next = (next || []).concat(child.children);
}
});
return next;
});
 
// First give the children some values
each(tree.children, function(child) {
child = series.setTreeValues(child);
children.push(child);
 
if (!child.ignore) {
childrenTotal += child.val;
} else {
// @todo Add predicate to avoid looping already ignored children
recursive(child.children, function(children) {
var next = false;
each(children, function(node) {
extend(node, {
ignore: true,
isLeaf: false,
visible: false
});
if (node.children.length) {
next = (next || []).concat(node.children);
}
});
return next;
});
}
});
// Sort the children
stableSort(children, function(a, b) {
return a.sortIndex - b.sortIndex;
});
// Set the values
val = pick(point && point.options.value, childrenTotal);
if (point) {
point.value = val;
}
extend(tree, {
children: children,
childrenTotal: childrenTotal,
// Ignore this node if point is not visible
ignore: !(pick(point && point.visible, true) && (val > 0)),
isLeaf: tree.visible && !childrenTotal,
levelDynamic: (options.levelIsConstant ? tree.level : (tree.level - series.nodeMap[series.rootNode].level)),
name: pick(point && point.name, ''),
sortIndex: pick(point && point.sortIndex, -val),
val: val
});
return tree;
},
/**
* Recursive function which calculates the area for all children of a node.
* @param {Object} node The node which is parent to the children.
* @param {Object} area The rectangular area of the parent.
*/
calculateChildrenAreas: function(parent, area) {
var series = this,
options = series.options,
level = this.levelMap[parent.levelDynamic + 1],
algorithm = pick((series[level && level.layoutAlgorithm] && level.layoutAlgorithm), options.layoutAlgorithm),
alternate = options.alternateStartingDirection,
childrenValues = [],
children;
 
// Collect all children which should be included
children = grep(parent.children, function(n) {
return !n.ignore;
});
 
if (level && level.layoutStartingDirection) {
area.direction = level.layoutStartingDirection === 'vertical' ? 0 : 1;
}
childrenValues = series[algorithm](area, children);
each(children, function(child, index) {
var values = childrenValues[index];
child.values = merge(values, {
val: child.childrenTotal,
direction: (alternate ? 1 - area.direction : area.direction)
});
child.pointValues = merge(values, {
x: (values.x / series.axisRatio),
width: (values.width / series.axisRatio)
});
// If node has children, then call method recursively
if (child.children.length) {
series.calculateChildrenAreas(child, child.values);
}
});
},
setPointValues: function() {
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis;
each(series.points, function(point) {
var node = point.node,
values = node.pointValues,
x1,
x2,
y1,
y2,
crispCorr = 0;
 
 
 
// Points which is ignored, have no values.
if (values && node.visible) {
x1 = Math.round(xAxis.translate(values.x, 0, 0, 0, 1)) - crispCorr;
x2 = Math.round(xAxis.translate(values.x + values.width, 0, 0, 0, 1)) - crispCorr;
y1 = Math.round(yAxis.translate(values.y, 0, 0, 0, 1)) - crispCorr;
y2 = Math.round(yAxis.translate(values.y + values.height, 0, 0, 0, 1)) - crispCorr;
// Set point values
point.shapeType = 'rect';
point.shapeArgs = {
x: Math.min(x1, x2),
y: Math.min(y1, y2),
width: Math.abs(x2 - x1),
height: Math.abs(y2 - y1)
};
point.plotX = point.shapeArgs.x + (point.shapeArgs.width / 2);
point.plotY = point.shapeArgs.y + (point.shapeArgs.height / 2);
} else {
// Reset visibility
delete point.plotX;
delete point.plotY;
}
});
},
setColorRecursive: function(node, color, colorIndex) {
var series = this,
point,
level;
if (node) {
point = series.points[node.i];
level = series.levelMap[node.levelDynamic];
// Select either point color, level color or inherited color.
color = pick(
point && point.options.color,
level && level.color,
color,
series.color
);
colorIndex = pick(
point && point.options.colorIndex,
level && level.colorIndex,
colorIndex,
series.colorIndex
);
 
if (point) {
point.color = color;
point.colorIndex = colorIndex;
}
 
// Do it all again with the children
if (node.children.length) {
each(node.children, function(child) {
series.setColorRecursive(child, color, colorIndex);
});
}
}
},
algorithmGroup: function(h, w, d, p) {
this.height = h;
this.width = w;
this.plot = p;
this.direction = d;
this.startDirection = d;
this.total = 0;
this.nW = 0;
this.lW = 0;
this.nH = 0;
this.lH = 0;
this.elArr = [];
this.lP = {
total: 0,
lH: 0,
nH: 0,
lW: 0,
nW: 0,
nR: 0,
lR: 0,
aspectRatio: function(w, h) {
return Math.max((w / h), (h / w));
}
};
this.addElement = function(el) {
this.lP.total = this.elArr[this.elArr.length - 1];
this.total = this.total + el;
if (this.direction === 0) {
// Calculate last point old aspect ratio
this.lW = this.nW;
this.lP.lH = this.lP.total / this.lW;
this.lP.lR = this.lP.aspectRatio(this.lW, this.lP.lH);
// Calculate last point new aspect ratio
this.nW = this.total / this.height;
this.lP.nH = this.lP.total / this.nW;
this.lP.nR = this.lP.aspectRatio(this.nW, this.lP.nH);
} else {
// Calculate last point old aspect ratio
this.lH = this.nH;
this.lP.lW = this.lP.total / this.lH;
this.lP.lR = this.lP.aspectRatio(this.lP.lW, this.lH);
// Calculate last point new aspect ratio
this.nH = this.total / this.width;
this.lP.nW = this.lP.total / this.nH;
this.lP.nR = this.lP.aspectRatio(this.lP.nW, this.nH);
}
this.elArr.push(el);
};
this.reset = function() {
this.nW = 0;
this.lW = 0;
this.elArr = [];
this.total = 0;
};
},
algorithmCalcPoints: function(directionChange, last, group, childrenArea) {
var pX,
pY,
pW,
pH,
gW = group.lW,
gH = group.lH,
plot = group.plot,
keep,
i = 0,
end = group.elArr.length - 1;
if (last) {
gW = group.nW;
gH = group.nH;
} else {
keep = group.elArr[group.elArr.length - 1];
}
each(group.elArr, function(p) {
if (last || (i < end)) {
if (group.direction === 0) {
pX = plot.x;
pY = plot.y;
pW = gW;
pH = p / pW;
} else {
pX = plot.x;
pY = plot.y;
pH = gH;
pW = p / pH;
}
childrenArea.push({
x: pX,
y: pY,
width: pW,
height: pH
});
if (group.direction === 0) {
plot.y = plot.y + pH;
} else {
plot.x = plot.x + pW;
}
}
i = i + 1;
});
// Reset variables
group.reset();
if (group.direction === 0) {
group.width = group.width - gW;
} else {
group.height = group.height - gH;
}
plot.y = plot.parent.y + (plot.parent.height - group.height);
plot.x = plot.parent.x + (plot.parent.width - group.width);
if (directionChange) {
group.direction = 1 - group.direction;
}
// If not last, then add uncalculated element
if (!last) {
group.addElement(keep);
}
},
algorithmLowAspectRatio: function(directionChange, parent, children) {
var childrenArea = [],
series = this,
pTot,
plot = {
x: parent.x,
y: parent.y,
parent: parent
},
direction = parent.direction,
i = 0,
end = children.length - 1,
group = new this.algorithmGroup(parent.height, parent.width, direction, plot); // eslint-disable-line new-cap
// Loop through and calculate all areas
each(children, function(child) {
pTot = (parent.width * parent.height) * (child.val / parent.val);
group.addElement(pTot);
if (group.lP.nR > group.lP.lR) {
series.algorithmCalcPoints(directionChange, false, group, childrenArea, plot);
}
// If last child, then calculate all remaining areas
if (i === end) {
series.algorithmCalcPoints(directionChange, true, group, childrenArea, plot);
}
i = i + 1;
});
return childrenArea;
},
algorithmFill: function(directionChange, parent, children) {
var childrenArea = [],
pTot,
direction = parent.direction,
x = parent.x,
y = parent.y,
width = parent.width,
height = parent.height,
pX,
pY,
pW,
pH;
each(children, function(child) {
pTot = (parent.width * parent.height) * (child.val / parent.val);
pX = x;
pY = y;
if (direction === 0) {
pH = height;
pW = pTot / pH;
width = width - pW;
x = x + pW;
} else {
pW = width;
pH = pTot / pW;
height = height - pH;
y = y + pH;
}
childrenArea.push({
x: pX,
y: pY,
width: pW,
height: pH
});
if (directionChange) {
direction = 1 - direction;
}
});
return childrenArea;
},
strip: function(parent, children) {
return this.algorithmLowAspectRatio(false, parent, children);
},
squarified: function(parent, children) {
return this.algorithmLowAspectRatio(true, parent, children);
},
sliceAndDice: function(parent, children) {
return this.algorithmFill(true, parent, children);
},
stripes: function(parent, children) {
return this.algorithmFill(false, parent, children);
},
translate: function() {
var series = this,
rootId = series.rootNode = pick(series.rootNode, series.options.rootId, ''),
rootNode,
pointValues,
seriesArea,
tree,
val;
 
// Call prototype function
Series.prototype.translate.call(series);
// Create a object map from level to options
series.levelMap = reduce(series.options.levels, function(arr, item) {
arr[item.level] = item;
return arr;
}, {});
tree = series.tree = series.getTree(); // @todo Only if series.isDirtyData is true
rootNode = series.nodeMap[rootId];
if (
rootId !== '' &&
(!rootNode || !rootNode.children.length)
) {
series.drillToNode('', false);
rootId = series.rootNode;
rootNode = series.nodeMap[rootId];
}
series.setTreeValues(tree);
 
// Calculate plotting values.
series.axisRatio = (series.xAxis.len / series.yAxis.len);
series.nodeMap[''].pointValues = pointValues = {
x: 0,
y: 0,
width: 100,
height: 100
};
series.nodeMap[''].values = seriesArea = merge(pointValues, {
width: (pointValues.width * series.axisRatio),
direction: (series.options.layoutStartingDirection === 'vertical' ? 0 : 1),
val: tree.val
});
series.calculateChildrenAreas(tree, seriesArea);
 
// Logic for point colors
if (series.colorAxis) {
series.translateColors();
} else if (!series.options.colorByPoint) {
series.setColorRecursive(series.tree);
}
 
// Update axis extremes according to the root node.
if (series.options.allowDrillToNode) {
val = rootNode.pointValues;
series.xAxis.setExtremes(val.x, val.x + val.width, false);
series.yAxis.setExtremes(val.y, val.y + val.height, false);
series.xAxis.setScale();
series.yAxis.setScale();
}
 
// Assign values to points.
series.setPointValues();
},
/**
* Extend drawDataLabels with logic to handle custom options related to the treemap series:
* - Points which is not a leaf node, has dataLabels disabled by default.
* - Options set on series.levels is merged in.
* - Width of the dataLabel is set to match the width of the point shape.
*/
drawDataLabels: function() {
var series = this,
points = grep(series.points, function(n) {
return n.node.visible;
}),
options,
level;
each(points, function(point) {
level = series.levelMap[point.node.levelDynamic];
// Set options to new object to avoid problems with scope
options = {
style: {}
};
 
// If not a leaf, then label should be disabled as default
if (!point.node.isLeaf) {
options.enabled = false;
}
 
// If options for level exists, include them as well
if (level && level.dataLabels) {
options = merge(options, level.dataLabels);
series._hasPointLabels = true;
}
 
// Set dataLabel width to the width of the point shape.
if (point.shapeArgs) {
options.style.width = point.shapeArgs.width;
if (point.dataLabel) {
point.dataLabel.css({
width: point.shapeArgs.width + 'px'
});
}
}
 
// Merge custom options with point options
point.dlOptions = merge(options, point.options.dataLabels);
});
Series.prototype.drawDataLabels.call(this);
},
 
/**
* Over the alignment method by setting z index
*/
alignDataLabel: function(point) {
seriesTypes.column.prototype.alignDataLabel.apply(this, arguments);
if (point.dataLabel) {
point.dataLabel.attr({
zIndex: point.node.zIndex + 1
});
}
},
 
 
 
/**
* Extending ColumnSeries drawPoints
*/
drawPoints: function() {
var series = this,
points = grep(series.points, function(n) {
return n.node.visible;
});
 
each(points, function(point) {
var groupKey = 'levelGroup-' + point.node.levelDynamic;
if (!series[groupKey]) {
series[groupKey] = series.chart.renderer.g(groupKey)
.attr({
zIndex: 1000 - point.node.levelDynamic // @todo Set the zIndex based upon the number of levels, instead of using 1000
})
.add(series.group);
}
point.group = series[groupKey];
 
});
// Call standard drawPoints
seriesTypes.column.prototype.drawPoints.call(this);
 
// If drillToNode is allowed, set a point cursor on clickables & add drillId to point
if (series.options.allowDrillToNode) {
each(points, function(point) {
if (point.graphic) {
point.drillId = series.options.interactByLeaf ? series.drillToByLeaf(point) : series.drillToByGroup(point);
}
});
}
},
/**
* Add drilling on the suitable points
*/
onClickDrillToNode: function(event) {
var series = this,
point = event.point,
drillId = point && point.drillId;
// If a drill id is returned, add click event and cursor.
if (isString(drillId)) {
point.setState(''); // Remove hover
series.drillToNode(drillId);
}
},
/**
* Finds the drill id for a parent node.
* Returns false if point should not have a click event
* @param {Object} point
* @return {string || boolean} Drill to id or false when point should not have a click event
*/
drillToByGroup: function(point) {
var series = this,
drillId = false;
if ((point.node.level - series.nodeMap[series.rootNode].level) === 1 && !point.node.isLeaf) {
drillId = point.id;
}
return drillId;
},
/**
* Finds the drill id for a leaf node.
* Returns false if point should not have a click event
* @param {Object} point
* @return {string || boolean} Drill to id or false when point should not have a click event
*/
drillToByLeaf: function(point) {
var series = this,
drillId = false,
nodeParent;
if ((point.node.parent !== series.rootNode) && (point.node.isLeaf)) {
nodeParent = point.node;
while (!drillId) {
nodeParent = series.nodeMap[nodeParent.parent];
if (nodeParent.parent === series.rootNode) {
drillId = nodeParent.id;
}
}
}
return drillId;
},
drillUp: function() {
var series = this,
node = series.nodeMap[series.rootNode];
if (node && isString(node.parent)) {
series.drillToNode(node.parent);
}
},
drillToNode: function(id, redraw) {
var series = this,
nodeMap = series.nodeMap,
node = nodeMap[id];
series.rootNode = id;
if (id === '') {
series.drillUpButton = series.drillUpButton.destroy();
} else {
series.showDrillUpButton((node && node.name || id));
}
this.isDirty = true; // Force redraw
if (pick(redraw, true)) {
this.chart.redraw();
}
},
showDrillUpButton: function(name) {
var series = this,
backText = (name || '< Back'),
buttonOptions = series.options.drillUpButton,
attr,
states;
 
if (buttonOptions.text) {
backText = buttonOptions.text;
}
if (!this.drillUpButton) {
attr = buttonOptions.theme;
states = attr && attr.states;
 
this.drillUpButton = this.chart.renderer.button(
backText,
null,
null,
function() {
series.drillUp();
},
attr,
states && states.hover,
states && states.select
)
.attr({
align: buttonOptions.position.align,
zIndex: 7
})
.add()
.align(buttonOptions.position, false, buttonOptions.relativeTo || 'plotBox');
} else {
this.drillUpButton.attr({
text: backText
})
.align();
}
},
buildKDTree: noop,
drawLegendSymbol: H.LegendSymbolMixin.drawRectangle,
getExtremes: function() {
// Get the extremes from the value data
Series.prototype.getExtremes.call(this, this.colorValueData);
this.valueMin = this.dataMin;
this.valueMax = this.dataMax;
 
// Get the extremes from the y data
Series.prototype.getExtremes.call(this);
},
getExtremesFromAll: true,
bindAxes: function() {
var treeAxis = {
endOnTick: false,
gridLineWidth: 0,
lineWidth: 0,
min: 0,
dataMin: 0,
minPadding: 0,
max: 100,
dataMax: 100,
maxPadding: 0,
startOnTick: false,
title: null,
tickPositions: []
};
Series.prototype.bindAxes.call(this);
H.extend(this.yAxis.options, treeAxis);
H.extend(this.xAxis.options, treeAxis);
}
 
// Point class
}, {
getClassName: function() {
var className = H.Point.prototype.getClassName.call(this),
series = this.series,
options = series.options;
 
// Above the current level
if (this.node.level <= series.nodeMap[series.rootNode].level) {
className += ' highcharts-above-level';
 
} else if (!this.node.isLeaf && !pick(options.interactByLeaf, !options.allowDrillToNode)) {
className += ' highcharts-internal-node-interactive';
 
} else if (!this.node.isLeaf) {
className += ' highcharts-internal-node';
}
return className;
},
isValid: function() {
return isNumber(this.value);
},
setState: function(state) {
H.Point.prototype.setState.call(this, state);
 
// Graphic does not exist when point is not visible.
if (this.graphic) {
this.graphic.attr({
zIndex: state === 'hover' ? 1 : 0
});
}
},
setVisible: seriesTypes.pie.prototype.pointClass.prototype.setVisible
});
 
}(Highcharts));
}));
/base/000_base/node_modules/highcharts/js/modules/xrange-series.js
@@ -0,0 +1,15 @@
/*
Highcharts JS v5.0.12 (2017-05-24)
X-range series
 
(c) 2010-2017 Torstein Honsi, Lars A. V. Cabrera
 
--- WORK IN PROGRESS ---
 
License: www.highcharts.com/license
*/
(function(g){"object"===typeof module&&module.exports?module.exports=g:g(Highcharts)})(function(g){(function(d){var g=d.getOptions().plotOptions,m=d.seriesTypes.column,k=d.each,p=d.extendClass,q=d.isNumber,v=d.isObject,n=d.merge,r=d.pick,t=d.seriesTypes,w=d.wrap,x=d.Axis,u=d.Point,y=d.Series;g.xrange=n(g.column,{tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.yCategory}\x3c/b\x3e\x3cbr/\x3e'}});t.xrange=p(m,{pointClass:p(u,{getLabelConfig:function(){var f=
u.prototype.getLabelConfig.call(this);f.x2=this.x2;f.yCategory=this.yCategory=this.series.yAxis.categories&&this.series.yAxis.categories[this.y];return f}}),type:"xrange",forceDL:!0,parallelArrays:["x","x2","y"],requireSorting:!1,animate:t.line.prototype.animate,getColumnMetrics:function(){function f(){k(h.series,function(b){var a=b.xAxis;b.xAxis=b.yAxis;b.yAxis=a})}var e,h=this.chart;f();this.yAxis.closestPointRange=1;e=m.prototype.getColumnMetrics.call(this);f();return e},cropData:function(f,e,
h,b){e=y.prototype.cropData.call(this,this.x2Data,e,h,b);e.xData=f.slice(e.start,e.end);return e},translate:function(){m.prototype.translate.apply(this,arguments);var f=this.xAxis,e=this.columnMetrics,h=this.options.minPointLength||0;k(this.points,function(b){var a=b.plotX,c=r(b.x2,b.x+(b.len||0)),c=f.toPixels(c,!0),d=c-a,l;h&&(l=h-d,0>l&&(l=0),a-=l/2,c+=l/2);a=Math.max(a,-10);c=Math.min(Math.max(c,-10),f.len+10);c<a&&(c=a);b.shapeArgs={x:a,y:b.plotY+e.offset,width:c-a,height:e.width};b.tooltipPos[0]+=
d/2;b.tooltipPos[1]-=e.width/2;if(c=b.partialFill)v(c)&&(c=c.amount),q(c)||(c=0),a=b.shapeArgs,b.partShapeArgs={x:a.x,y:a.y+1,width:a.width*c,height:a.height-2}})},drawPoints:function(){var f=this,e=this.chart,d=e.renderer,b=e.pointCount<(f.options.animationLimit||250)?"animate":"attr";k(f.points,function(a){var c=a.graphic,e=a.shapeType,h=a.shapeArgs,g=a.partShapeArgs;if(q(a.plotY)&&null!==a.y)if(c){if(a.graphicOriginal[b](n(h)),g)a.graphicOverlay[b](n(g))}else a.graphic=c=d.g("point").attr({"class":a.getClassName()}).add(a.group||
f.group),a.graphicOriginal=d[e](h).addClass("highcharts-partfill-original").add(c),g&&(a.graphicOverlay=d[e](g).addClass("highcharts-partfill-overlay").add(c));else c&&(a.graphic=c.destroy())})}});w(x.prototype,"getSeriesExtremes",function(d){var e=this.series,f,b;d.call(this);this.isXAxis&&"xrange"===e.type&&(f=r(this.dataMax,Number.MIN_VALUE),k(this.series,function(a){k(a.x2Data||[],function(a){a>f&&(f=a,b=!0)})}),b&&(this.dataMax=f))})})(g)});
/base/000_base/node_modules/highcharts/js/modules/xrange-series.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":15,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","defaultPlotOptions","getOptions","plotOptions","columnType","seriesTypes","column","each","extendClass","isNumber","isObject","merge","pick","wrap","Axis","Point","Series","xrange","tooltip","pointFormat","pointClass","getLabelConfig","cfg","prototype","call","x2","yCategory","series","yAxis","categories","y","type","forceDL","parallelArrays","requireSorting","animate","line","getColumnMetrics","swapAxes","chart","s","xAxis","metrics","closestPointRange","cropData","xData","yData","min","max","crop","x2Data","slice","start","end","translate","apply","arguments","columnMetrics","minPointLength","options","points","point","plotX","posX","x","len","plotX2","toPixels","width","widthDifference","Math","shapeArgs","plotY","offset","height","tooltipPos","partialFill","amount","partShapeArgs","drawPoints","renderer","verb","pointCount","animationLimit","graphic","shapeType","graphicOriginal","graphicOverlay","g","attr","getClassName","add","group","addClass","destroy","proceed","axis","dataMax","modMax","isXAxis","Number","MIN_VALUE","val"]
}
/base/000_base/node_modules/highcharts/js/modules/xrange-series.src.js
@@ -0,0 +1,258 @@
/**
* @license Highcharts JS v5.0.12 (2017-05-24)
* X-range series
*
* (c) 2010-2017 Torstein Honsi, Lars A. V. Cabrera
*
* --- WORK IN PROGRESS ---
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2014-2017 Highsoft AS
* Authors: Torstein Honsi, Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
 
var defaultPlotOptions = H.getOptions().plotOptions,
color = H.Color,
columnType = H.seriesTypes.column,
each = H.each,
extendClass = H.extendClass,
isNumber = H.isNumber,
isObject = H.isObject,
merge = H.merge,
pick = H.pick,
seriesTypes = H.seriesTypes,
wrap = H.wrap,
Axis = H.Axis,
Point = H.Point,
Series = H.Series,
pointFormat = '<span style="color:{point.color}">' +
'\u25CF' +
'</span> {series.name}: <b>{point.yCategory}</b><br/>',
xrange = 'xrange';
 
defaultPlotOptions.xrange = merge(defaultPlotOptions.column, {
tooltip: {
pointFormat: pointFormat
}
});
seriesTypes.xrange = extendClass(columnType, {
pointClass: extendClass(Point, {
// Add x2 and yCategory to the available properties for tooltip formats
getLabelConfig: function() {
var cfg = Point.prototype.getLabelConfig.call(this);
 
cfg.x2 = this.x2;
cfg.yCategory = this.yCategory = this.series.yAxis.categories && this.series.yAxis.categories[this.y];
return cfg;
}
}),
type: xrange,
forceDL: true,
parallelArrays: ['x', 'x2', 'y'],
requireSorting: false,
animate: seriesTypes.line.prototype.animate,
 
/**
* Borrow the column series metrics, but with swapped axes. This gives free access
* to features like groupPadding, grouping, pointWidth etc.
*/
getColumnMetrics: function() {
var metrics,
chart = this.chart;
 
function swapAxes() {
each(chart.series, function(s) {
var xAxis = s.xAxis;
s.xAxis = s.yAxis;
s.yAxis = xAxis;
});
}
 
swapAxes();
 
this.yAxis.closestPointRange = 1;
metrics = columnType.prototype.getColumnMetrics.call(this);
 
swapAxes();
 
return metrics;
},
 
/**
* Override cropData to show a point where x is outside visible range
* but x2 is outside.
*/
cropData: function(xData, yData, min, max) {
 
// Replace xData with x2Data to find the appropriate cropStart
var cropData = Series.prototype.cropData,
crop = cropData.call(this, this.x2Data, yData, min, max);
 
// Re-insert the cropped xData
crop.xData = xData.slice(crop.start, crop.end);
 
return crop;
},
 
translate: function() {
columnType.prototype.translate.apply(this, arguments);
var series = this,
xAxis = series.xAxis,
metrics = series.columnMetrics,
minPointLength = series.options.minPointLength || 0;
 
each(series.points, function(point) {
var plotX = point.plotX,
posX = pick(point.x2, point.x + (point.len || 0)),
plotX2 = xAxis.toPixels(posX, true),
width = plotX2 - plotX,
widthDifference,
shapeArgs,
partialFill;
 
if (minPointLength) {
widthDifference = minPointLength - width;
if (widthDifference < 0) {
widthDifference = 0;
}
plotX -= widthDifference / 2;
plotX2 += widthDifference / 2;
}
 
plotX = Math.max(plotX, -10);
plotX2 = Math.min(Math.max(plotX2, -10), xAxis.len + 10);
 
if (plotX2 < plotX) { // #6107
plotX2 = plotX;
}
 
point.shapeArgs = {
x: plotX,
y: point.plotY + metrics.offset,
width: plotX2 - plotX,
height: metrics.width
};
point.tooltipPos[0] += width / 2;
point.tooltipPos[1] -= metrics.width / 2;
 
// Add a partShapeArgs to the point, based on the shapeArgs property
partialFill = point.partialFill;
if (partialFill) {
// Get the partial fill amount
if (isObject(partialFill)) {
partialFill = partialFill.amount;
}
// If it was not a number, assume 0
if (!isNumber(partialFill)) {
partialFill = 0;
}
shapeArgs = point.shapeArgs;
point.partShapeArgs = {
x: shapeArgs.x,
y: shapeArgs.y + 1,
width: shapeArgs.width * partialFill,
height: shapeArgs.height - 2
};
}
});
},
 
drawPoints: function() {
var series = this,
chart = this.chart,
options = series.options,
renderer = chart.renderer,
animationLimit = options.animationLimit || 250,
verb = chart.pointCount < animationLimit ? 'animate' : 'attr';
 
// draw the columns
each(series.points, function(point) {
var plotY = point.plotY,
graphic = point.graphic,
type = point.shapeType,
shapeArgs = point.shapeArgs,
partShapeArgs = point.partShapeArgs,
seriesOpts = series.options,
pfOptions = point.partialFill,
fill,
state = point.selected && 'select',
cutOff = options.stacking && !options.borderRadius;
 
if (isNumber(plotY) && point.y !== null) {
if (graphic) { // update
point.graphicOriginal[verb](
merge(shapeArgs)
);
if (partShapeArgs) {
point.graphicOverlay[verb](
merge(partShapeArgs)
);
}
 
} else {
point.graphic = graphic = renderer.g('point')
.attr({
'class': point.getClassName()
})
.add(point.group || series.group);
 
point.graphicOriginal = renderer[type](shapeArgs)
.addClass('highcharts-partfill-original')
.add(graphic);
if (partShapeArgs) {
point.graphicOverlay = renderer[type](partShapeArgs)
.addClass('highcharts-partfill-overlay')
.add(graphic);
}
}
 
 
 
} else if (graphic) {
point.graphic = graphic.destroy(); // #1269
}
});
}
});
 
/**
* Max x2 should be considered in xAxis extremes
*/
wrap(Axis.prototype, 'getSeriesExtremes', function(proceed) {
var axis = this,
series = axis.series,
dataMax,
modMax;
 
proceed.call(this);
if (axis.isXAxis && series.type === xrange) {
dataMax = pick(axis.dataMax, Number.MIN_VALUE);
each(this.series, function(series) {
each(series.x2Data || [], function(val) {
if (val > dataMax) {
dataMax = val;
modMax = true;
}
});
});
if (modMax) {
axis.dataMax = dataMax;
}
}
});
 
}(Highcharts));
}));