/* Minification failed. Returning unminified contents.
(549,473-480): run-time error JS1019: Can't have 'break' outside of loop: break a
(550,185-192): run-time error JS1019: Can't have 'break' outside of loop: break a
 */
/*
 FusionCharts JavaScript Library
 Copyright FusionCharts Technologies LLP
 License Information at <http://www.fusioncharts.com/license>
 FusionCharts JavaScript Library
 Copyright FusionCharts Technologies LLP
 License Information at <http://www.fusioncharts.com/license>

 @version 3.9.0

 @attributions (infers respective third-party copyrights)
 Raphael 2.1.0 (modified as 'Red Raphael') <http://raphaeljs.com/license.html>
 JSON v2 <http://www.JSON.org/js.html>
 Firebug Lite 1.3.0 <http://getfirebug.com/firebuglite>
*/
(function(){if(!window.FusionCharts||!window.FusionCharts.version){var f=window,t=f.document,C=f.navigator,q={window:f},d=q.modules={},a=q.interpreters={},m=Object.prototype.toString,F=/msie/i.test(C.userAgent)&&!f.opera,c=/loaded|complete/,l=!1,b=function(){var a=q.ready;q.ready=!0;q.raiseEvent&&(q.readyNotified=!0,q.raiseEvent("ready",{version:q.core.version,now:!a},q.core));q.readyNow=!a},p=function(a,b){var e,h;if(b instanceof Array)for(e=0;e<b.length;e+=1)"object"!==typeof b[e]?a[e]=b[e]:("object"!==
typeof a[e]&&(a[e]=b[e]instanceof Array?[]:{}),p(a[e],b[e]));else for(e in b)"object"===typeof b[e]?(h=m.call(b[e]),"[object Object]"===h?("object"!==typeof a[e]&&(a[e]={}),p(a[e],b[e])):"[object Array]"===h?(a[e]instanceof Array||(a[e]=[]),p(a[e],b[e])):a[e]=b[e]):a[e]=b[e];return a};q.extend=function(a,b,e,h){var k;e&&a.prototype&&(a=a.prototype);if(!0===h)p(a,b);else for(k in b)a[k]=b[k];return a};q.uniqueId=function(){return"chartobject-"+(q.uniqueId.lastId+=1)};q.uniqueId.lastId=0;q.policies=
{options:{chartTypeSourcePath:["typeSourcePath",""],product:["product","v3"],insertMode:["insertMode","replace"],safeMode:["safeMode",!0],overlayButton:["overlayButton",void 0],containerBackgroundColor:["containerBackgroundColor","#ffffff"],containerBackgroundOpacity:["containerBackgroundOpacity",1],containerClassName:["containerClassName","fusioncharts-container"],chartType:["type",void 0],baseChartMessageFont:["baseChartMessageFont","Verdana,sans"],baseChartMessageFontSize:["baseChartMessageFontSize",
"10"],baseChartMessageColor:["baseChartMessageColor","#666666"],baseChartMessageImageHAlign:["baseChartMessageImageHAlign","middle"],baseChartMessageImageVAlign:["baseChartMessageImageVAlign","middle"],baseChartMessageImageAlpha:["baseChartMessageImageAlpha",100],baseChartMessageImageScale:["baseChartMessageImageScale",100],dataLoadStartMessage:["dataLoadStartMessage","Retrieving data. Please wait."],dataLoadErrorMessage:["dataLoadErrorMessage","Error in loading data."],dataInvalidMessage:["dataInvalidMessage",
"Invalid data."],dataEmptyMessage:["dataEmptyMessage","No data to display."],typeNotSupportedMessage:["typeNotSupportedMessage","Chart type not supported."],loadMessage:["loadMessage","Loading chart. Please wait."],renderErrorMessage:["renderErrorMessage","Unable to render chart."]},attributes:{lang:["lang","EN"],id:["id",void 0]},width:["width","400"],height:["height","300"],src:["swfUrl",""]};a.stat="swfUrl id width height debugMode registerWithJS backgroundColor scaleMode lang detectFlashVersion autoInstallRedirect".split(" ");
q.parsePolicies=function(a,b,e){var h,k,c;for(k in b)if(q.policies[k]instanceof Array)c=e[b[k][0]],a[k]=void 0===c?b[k][1]:c;else for(h in"object"!==typeof a[k]&&(a[k]={}),b[k])c=e[b[k][h][0]],a[k][h]=void 0===c?b[k][h][1]:c};q.parseCommands=function(b,c,e){var h,k;"string"===typeof c&&(c=a[c]||[]);h=0;for(k=c.length;h<k;h++)b[c[h]]=e[h];return b};q.registrars={module:function(){return q.core.apply(q.core,arguments)}};q.core=function(b){if(!(this instanceof q.core)){if(1===arguments.length&&b instanceof
Array&&"private"===b[0]){if(d[b[1]])return;d[b[1]]={};b[3]instanceof Array&&(q.core.version[b[1]]=b[3]);return"function"===typeof b[2]?b[2].call(q,d[b[1]]):q}if(1===arguments.length&&"string"===typeof b)return q.core.items[b];q.raiseError&&q.raiseError(this,"25081840","run","",new SyntaxError('Use the "new" keyword while creating a new FusionCharts object'))}var c={};this.__state={};1===arguments.length&&"object"===typeof arguments[0]?c=arguments[0]:q.parseCommands(c,a.stat,arguments);1<arguments.length&&
"object"===typeof arguments[arguments.length-1]&&(delete c[a.stat[arguments.length-1]],q.extend(c,arguments[arguments.length-1]));this.id="undefined"===typeof c.id?this.id=q.uniqueId():c.id;this.args=c;q.core.items[this.id]instanceof q.core&&q.raiseWarning(this,"06091847","param","",Error('A FusionChart oject with the specified id "'+this.id+'" already exists. Renaming it to '+(this.id=q.uniqueId())));q.parsePolicies(this,q.policies,c);this.attributes.id=this.id;this.resizeTo&&this.resizeTo(c.width,
c.height,!0);this.chartType&&this.chartType(c.type||c.swfUrl,!0);q.raiseEvent("beforeInitialize",c,this);q.core.items[this.id]=this;q.core.defaultOptions=q.core.options;q.raiseEvent("initialized",c,this);return this};q.core.prototype={};q.core.prototype.constructor=q.core;q.extend(q.core,{id:"FusionCharts",version:["3","9","0"],items:{},options:{},getObjectReference:function(a){return q.core.items[a].ref},register:function(a){return q.registrars[a=a&&a.toString&&a.toString().toLowerCase()]&&q.registrars[a].apply(q.core,
Array.prototype.slice.call(arguments,1))}});f.FusionCharts=q.core;f.FusionMaps&&f.FusionMaps.legacy&&(q.core(["private","modules.core.geo",f.FusionMaps.legacy,f.FusionMaps.version]),l=!0);c.test(t.readyState)||t.loaded?(q.ready=!0,setTimeout(b,1)):function(){function a(){arguments.callee.done||(arguments.callee.done=!0,e&&clearTimeout(e),l||(f.FusionMaps&&f.FusionMaps.legacy&&q.core(["private","modules.core.geo",f.FusionMaps.legacy,f.FusionMaps.version]),f.FusionMaps=q.core),setTimeout(b,1))}function d(){c.test(t.readyState)?
a():e=setTimeout(d,10)}var e,h;t.addEventListener?t.addEventListener("DOMContentLoaded",a,!1):t.attachEvent&&f.attachEvent("onLoad",a);if(F)try{"https:"===f.location.protocol?t.write('<script id="__ie_onload_fusioncharts" defer="defer" src="//:">\x3c/script>'):t.write('<script id="__ie_onload_fusioncharts" defer="defer" src="javascript:void(0)">\x3c/script>'),h=t.getElementById("__ie_onload_fusioncharts"),h.onreadystatechange=function(){"complete"==this.readyState&&a()}}catch(k){}/WebKit/i.test(C.userAgent)&&
(e=setTimeout(d,10));f.onload=function(b){return function(){a();b&&b.call&&b.call(f)}}(f.onload)}();f.FusionMaps=q.core}})();
FusionCharts.register("module",["private","modules.mantle.errormanager",function(){var f=this,t=f.window,C={type:"TypeException",range:"ValueRangeException",impl:"NotImplementedException",param:"ParameterException",run:"RuntimeException",comp:"DesignTimeError",undefined:"UnspecifiedException"},q=function(a,d,F,c,l,b){var p="#"+d+" "+(a?a.id:"unknown-source")+c+" "+b+" >> ";l instanceof Error?(l.name=C[F],l.module="FusionCharts"+c,l.level=b,l.message=p+l.message,p=l.message,t.setTimeout(function(){throw l;
},0)):p+=l;d={id:d,nature:C[F],source:"FusionCharts"+c,message:p};f.raiseEvent(b,d,a);if("function"===typeof t["FC_"+b])t["FC_"+b](d)},d;f.raiseError=function(a,d,f,c,l){q(a,d,f,c,l,"Error")};f.raiseWarning=function(a,d,f,c,l){q(a,d,f,c,l,"Warning")};d={outputHelpers:{text:function(a,f){d.outputTo("#"+a.eventId+" ["+(a.sender.id||a.sender).toString()+'] fired "'+a.eventType+'" event. '+("error"===a.eventType||"warning"===a.eventType?f.message:""))},event:function(a,d){this.outputTo(a,d)},verbose:function(a,
f){d.outputTo(a.eventId,a.sender.id,a.eventType,f)}},outputHandler:function(a,m){"function"!==typeof d.outputTo?f.core["debugger"].outputFailed=!0:(f.core["debugger"].outputFailed=!1,d.currentOutputHelper(a,m))},currentOutputHelper:void 0,outputTo:void 0,enabled:!1};d.currentOutputHelper=d.outputHelpers.text;f.extend(f.core,{"debugger":{syncStateWithCharts:!0,outputFormat:function(a){return a&&"function"===typeof a.toLowerCase&&"function"===typeof d.outputHelpers[a=a.toLowerCase()]?(d.currentOutputHelper=
d.outputHelpers[a],!0):!1},outputTo:function(a){"function"===typeof a?d.outputTo=a:null===a&&(f.core["debugger"].enable(!1),delete d.outputTo)},enable:function(a,m,F){var c;"object"===typeof a&&1===arguments.length&&(c=a,a=c.state,m=c.outputTo,F=c.outputFormat);"function"===typeof a&&("string"!==typeof m||2!==arguments.length&&!c||(F=m),m=a,a=!0);if("boolean"===typeof a&&a!==d.enabled)f.core[(d.enabled=a)?"addEventListener":"removeEventListener"]("*",d.outputHandler);"function"===typeof m&&(d.outputTo=
m);f.core["debugger"].outputFormat(F);return d.enabled},enableFirebugLite:function(){var a;t.console&&t.console.firebug?f.core["debugger"].enable(t.console.log,"verbose"):((a=t.document.getElementsByTagName("html"))&&a[0].setAttribute("debug","true"),f.loadScript("https://getfirebug.com/firebug-lite.js#overrideConsole=false,startOpened=true",function(){f.core["debugger"].enable(t.console.log,"verbose")},"{ startOpened: true }",!0,!0))}},debugMode:{enabled:function(){t.setTimeout(function(){throw Error("Deprecated! Please use FusionCharts.debugger.enable instead.");
},0);return f.core["debugger"].enable.apply(f.core["debugger"],arguments)}}},!1)}]);
FusionCharts.register("module",["private","modules.mantle.eventmanager",function(){var f=this,t=f.window,C=f.core,q=t.Object.prototype.toString,d=q.call([]),a=function(a,b,c,e){try{a[0].call(b,c,e||{})}catch(h){setTimeout(function(){throw h;},0)}},m=function(b,c,d){if(b instanceof Array)for(var e=0,h;e<b.length;e+=1){if(b[e][1]===c.sender||void 0===b[e][1])h=b[e][1]===c.sender?c.sender:f.core,a(b[e],h,c,d),!0===c.detached&&(b.splice(e,1),--e,c.detached=!1);if(!0===c.cancelled)break}},F={unpropagator:function(){return!1===
(this.cancelled=!0)},detacher:function(){return!1===(this.detached=!0)},undefaulter:function(){return!1===(this.prevented=!0)},listeners:{},lastEventId:0,addListener:function(a,b,c){var e,h;if(q.call(a)===d){e=[];for(h=0;h<a.length;h+=1)e.push(F.addListener(a[h],b,c));return e}if("string"!==typeof a)f.raiseError(c||f.core,"03091549","param","::EventTarget.addListener",Error("Unspecified Event Type"));else if("function"!==typeof b)f.raiseError(c||f.core,"03091550","param","::EventTarget.addListener",
Error("Invalid Event Listener"));else return a=a.toLowerCase(),F.listeners[a]instanceof Array||(F.listeners[a]=[]),F.listeners[a].push([b,c]),b},removeListener:function(a,b,c){var e;if("function"!==typeof b)f.raiseError(c||f.core,"03091560","param","::EventTarget.removeListener",Error("Invalid Event Listener"));else if(a instanceof Array)for(e=0;e<a.length;e+=1)F.removeListener(a[e],b,c);else if("string"!==typeof a)f.raiseError(c||f.core,"03091559","param","::EventTarget.removeListener",Error("Unspecified Event Type"));
else if(a=a.toLowerCase(),a=F.listeners[a],a instanceof Array)for(e=0;e<a.length;e+=1)a[e][0]===b&&a[e][1]===c&&(a.splice(e,1),--e)},triggerEvent:function(a,b,c,e,h,k){if("string"!==typeof a)f.raiseError(b,"03091602","param","::EventTarget.dispatchEvent",Error("Invalid Event Type"));else{a=a.toLowerCase();var d={eventType:a,eventId:F.lastEventId+=1,sender:b||Error("Orphan Event"),cancelled:!1,stopPropagation:this.unpropagator,prevented:!1,preventDefault:this.undefaulter,detached:!1,detachHandler:this.detacher};
m(F.listeners[a],d,c);m(F.listeners["*"],d,c);switch(d.prevented){case !0:if("function"===typeof k)try{k.call(e||b||t,d,c||{})}catch(l){setTimeout(function(){throw l;},0)}break;default:if("function"===typeof h)try{h.call(e||b||t,d,c||{})}catch(J){setTimeout(function(){throw J;},0)}}return!0}}},c=f.raiseEvent=function(a,b,c,e,h,k){return F.triggerEvent(a,c,b,e,h,k)},l=f.legacyEventList={},b={};f.disposeEvents=function(a){var b,c;for(b in F.listeners)for(c=0;c<F.listeners[b].length;c+=1)F.listeners[b][c][1]===
a&&F.listeners[b].splice(c,1)};f.raiseEventWithLegacy=function(a,b,d,e,h,k,v){var f=l[a];c(a,b,d,h,k,v);f&&"function"===typeof t[f]&&setTimeout(function(){t[f].apply(h||t,e)},0)};f.raiseEventGroup=function(a,d,l,e,h,k,v){var f=e.id,m=a+f;b[m]?(clearTimeout(b[m]),delete b[m]):f&&m?b[m]=setTimeout(function(){c(d,l,e,h,k,v);delete b[m]},0):c(d,l,e,h,k,v)};f.addEventListener=function(a,b){return F.addListener(a,b)};f.removeEventListener=function(a,b){return F.removeListener(a,b)};f.extend(C,{addEventListener:function(a,
b){return F.addListener(a,b)},removeEventListener:function(a,b){return F.removeListener(a,b)},ready:function(a,b,c){f.ready?(C.ready=function(a,h){"function"===typeof a&&setTimeout(function(){a.call(h||C,b||C)},0)},C.ready(a,c)):"function"===typeof a&&C.addEventListener("ready",function(){C.ready(a,b,c)});return this}});C.on=C.addEventListener;f.extend(C.prototype,{addEventListener:function(a,b){return F.addListener(a,b,this)},removeEventListener:function(a,b){return F.removeListener(a,b,this)}});
C.prototype.on=C.prototype.addEventListener;f.policies.options.events=["events",{}];f.addEventListener("beforeInitialize",function(a){a=a.sender;var b=a.options.events,c;if(b)for(c in b)"function"===typeof b[c]&&a.addEventListener(c,b[c])});f.ready&&!f.readyNotified&&(f.readyNotified=!0,f.raiseEvent("ready",{version:f.core.version,now:f.readyNow},f.core))}]);
FusionCharts.register("module",["private","modules.mantle.ajax",function(){var f=this,t=f.window,C=parseFloat(t.navigator.appVersion.split("MSIE")[1]),q=5.5<=C&&7>=C?!0:!1,d="file:"===t.location.protocol,a=t.ActiveXObject,m=(!a||!d)&&t.XMLHttpRequest,F={objects:0,xhr:0,requests:0,success:0,failure:0,idle:0},c=function(){var d;if(m)return c=function(){F.xhr++;return new m},c();try{d=new a("Msxml2.XMLHTTP"),c=function(){F.xhr++;return new a("Msxml2.XMLHTTP")}}catch(b){try{d=new a("Microsoft.XMLHTTP"),
c=function(){F.xhr++;return new a("Microsoft.XMLHTTP")}}catch(f){d=!1}}return d};f.core.ajax={stats:function(a){return a?F[a]:f.extend({},F)},headers:{"If-Modified-Since":"Sat, 29 Oct 1994 19:43:31 GMT","X-Requested-With":"XMLHttpRequest","X-Requested-By":"FusionCharts",Accept:"text/plain, */*","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}};C=f.ajax=function(a,b){this.onSuccess=a;this.onError=b;this.open=!1;F.objects++;F.idle++};f.extend(C.prototype,{headers:f.core.ajax.headers,
transact:function(a,b,m,H){var s=this,e=s.xmlhttp,h=s.headers,k=s.onError,v=s.onSuccess;a="POST"===a;var K,J;if(!e||q)e=c(),s.xmlhttp=e;e.onreadystatechange=function(){try{4===e.readyState&&(!e.status&&d||200<=e.status&&300>e.status||304===e.status||1223===e.status||0===e.status?(v&&v(e.responseText,s,H,b),F.success++):k&&(k(Error("XmlHttprequest Error"),s,H,b),F.failure++),F.idle--,s.open=!1)}catch(a){k&&k(a,s,H,b),t.FC_DEV_ENVIRONMENT&&setTimeout(function(){throw a;},0),F.failure++}};try{e.open(a?
"POST":"GET",b,!0);e.overrideMimeType&&e.overrideMimeType("text/plain");if(a)if("string"===typeof m)K=m;else{K=[];for(J in m)K.push(J+"="+(m[J]+"").replace(/\=/g,"%3D").replace(/\&/g,"%26"));K=K.join("&")}else K=null;for(J in h)e.setRequestHeader(J,h[J]);e.send(K);F.requests++;F.idle++;s.open=!0}catch(n){f.raiseError(f.core,"1110111515A","run","XmlHttprequest Error",n.message)}return e},get:function(a,b){return this.transact("GET",a,void 0,b)},post:function(a,b,c){return this.transact("POST",a,b,
c)},abort:function(){var a=this.xmlhttp;this.open=!1;return a&&"function"===typeof a.abort&&a.readyState&&0!==a.readyState&&a.abort()},dispose:function(){this.open&&this.abort();delete this.onError;delete this.onSuccess;delete this.xmlhttp;delete this.open;F.objects--;return null}})}]);
FusionCharts.register("module",["private","modules.mantle.runtime;1.1",function(){var f=this,t=f.window,C=/(^|[\/\\])(fusioncharts\.js)([\?#].*)?$/ig,q=/[\\\"<>;&]/,d=/^[^\S]*?(sf|f|ht)(tp|tps):\/\//i,a={},m={},F={},c={},l=f.purgeDOM=function(a){var b=a.attributes,e,h;if(b)for(e=b.length-1;0<=e;--e)h=b[e].name,"function"===typeof a[h]&&(a[h]=null);if(b=a.childNodes)for(b=b.length,e=0;e<b;e+=1)l(a.childNodes[e])},b=function(a,b,e){var h,k;for(h in a)if(a[h]instanceof Array)b[a[h][0]]=e[h];else for(k in a[h])b[a[h][k][0]]=
e[h][k]},p=/^(FusionCharts|FusionWidgets|FusionMaps)/;f.getScriptBaseUri=function(a){var b=t.document.getElementsByTagName("script"),e=b.length,h,k;for(k=0;k<e;k+=1)if(h=b[k].getAttribute("src"),void 0!==h&&null!==h&&null!==h.match(a))return h.replace(a,"$1")};f.core.options.scriptBaseUri=function(){var a=f.getScriptBaseUri(C);return void 0===a?(f.raiseError(FusionCharts,"1603111624","run",">GenericRuntime~scriptBaseUri","Unable to locate FusionCharts script source location (URL)."),""):a}();f.isXSSSafe=
function(a,b){return b&&null!==d.exec(a)?!1:null===q.exec(a)};f.xssEncode=function(a){return null===a||void 0===a||"function"!==typeof a.toString?"":a=a.toString().replace(/&/g,"&amp;").replace(/\'/g,"&#39;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};f.loadScript=function(b,d,e,h,k){if(!b)return!1;var v=d&&d.success||d,l=d&&d.failure,p,n={type:"script",success:!1},N=function(){c[p]=clearTimeout(c[p]);n.success?v&&v(b,p):l&&l(b,p);f.raiseEvent("externalresourceload",n,f.core)};
k=k?"":f.core.options.scriptBaseUri;p=k+b;f.isXSSSafe(p,!1)||(p="function"===typeof t.encodeURIComponent?t.encodeURIComponent(p):t.escape(p));n.path=k;n.src=p;n.file=b;if(!0===F[p]&&h)return n.success=!0,n.notReloaded=!0,"function"===typeof d&&(d(),f.raiseEvent("externalresourceload",n,f.core)),!0;if(a[p]&&h)return!1;a[p]=!0;m[p]&&m[p].parentNode&&m[p].parentNode.removeChild(m[p]);d=m[p]=t.document.createElement("script");d.type="text/javascript";d.src=p;e&&(d["\v"==="v"?"text":"innerHTML"]=e);"function"===
typeof v&&(F[p]=!1,c[p]=clearTimeout(c[p]),d.onload=function(){F[p]=!0;n.success=!0;N()},d.onerror=function(){F[p]=!1;a[p]=!1;N()},d.onreadystatechange=function(){if("complete"===this.readyState||"loaded"===this.readyState)F[p]=!0,n.success=!0,N()});t.document.getElementsByTagName("head")[0].appendChild(d);"function"===typeof l&&(c[p]=setTimeout(function(){F[p]||N()},f.core.options.html5ResourceLoadTimeout||15E3));return!0};f.capitalizeString=function(a,b){return a?a.replace(b?/(^|\s)([a-z])/g:/(^|\s)([a-z])/,
function(a,b,k){return b+k.toUpperCase()}):a};f.extend(f.core,{clone:function(a,c){var e=typeof a,h,k=f.extend({},this.args,!1,!1);b(f.policies,k,this);b(f.renderer.getRendererPolicy(this.options.renderer),k,this);delete k.id;delete k.animate;delete k.stallLoad;h=k.link;k=f.extend({},k,!1,!1);k.link=h;switch(e){case "object":f.extend(k,a);break;case "boolean":c=a}return c?k:new f.core(k)},isActive:function(){if(!this.ref||t.document.getElementById(this.id)!==this.ref)return!1;try{return p.test(this.ref.signature())}catch(a){return!1}},
chartType:function(a,b){var e=this.src,h=!0===b,k=this.options,c;"string"===typeof a&&(b="object"===typeof b?b:{},e=a.replace(/[\?\#][\s\S]*$/g,""),c=null!==e.match(/\.swf\s*?$/ig),e=e.replace(/\.swf\s*?$/ig,""),k.chartType=e.replace(/^[\s\S]*\//ig,"").replace(/^fcmap_/i,""),k.chartTypeSourcePath=-1===e.indexOf("/")?b.chartTypeSourcePath||this.options.chartTypeSourcePath||f.core.options.chartTypeSourcePath||"":e.replace(/[^\/]*?$/ig,""),this.src=((f.core.options.scriptBaseUri||"")+(k.chartTypeSourcePath||
f.core.options.chartTypeSourcePath||"")).replace(/\/\s*$/g,"")+"/"+k.chartType.replace(/\.swf\s*?$/ig,"")+".swf",c&&(f.raiseWarning(this,"08101320181","comp","FusionCharts#chartType",'Chart type has ".swf" in alias and as such has been deprecated. Please use chart type alias.'),k.chartTypeSourcePath=f.core.options.chartTypeSourcePath||""),void 0!==b.dataSource&&null!==b.dataSource?this.setChartData(b.dataSource,b.dataFormat,b.dataConfiguration):this.isActive()&&!h&&this.render());return(k.chartType||
"").toLowerCase()}},!0);t.getChartFromId=function(a){f.raiseWarning(this,"11133001041","comp","GenericRuntime~getObjectFromId()",'Use of deprecated getChartFromId() or getMapFromId(). Replace with "FusionCharts()" or FusionCharts.items[].');return f.core.items[a]instanceof f.core?f.core.items[a].ref:t.swfobject&&t.swfobject.getObjectById(a)};t.getMapFromId=t.getChartFromId}]);
FusionCharts.register("module",["private","api.printmanager",function(){var f=this;f.extend(f.core,{printManager:{configure:function(){f.raiseWarning(f.core,"28141714","impl",".printManager.configure","PrintManager is deprecated")},isReady:function(){f.raiseWarning(f.core,"28141714","impl",".printManager.isReady","PrintManager is deprecated");return!1},enabled:function(){f.raiseWarning(f.core,"28141714","impl",".printManager.enabled","PrintManager is deprecated");return!1},managedPrint:function(){f.raiseWarning(f.core,
"28141714","impl",".printManager.managedPrint","PrintManager is deprecated")}}},!1)}]);
FusionCharts.register("module",["private","modules.interface.renderer",function(){var f=this,t=f.window,C=t.document,q=function(){f.raiseError(this,"25081845","run","::RendererManager",Error("No active renderer"))},d=f.FusionChartsDOMInsertModes={REPLACE:"replace",APPEND:"append",PREPEND:"prepend"},a={undefined:{render:q,remove:q,update:q,resize:q,config:q,policies:{}}},m={},F=function(a){return function(){var b=this.ref;if(void 0===b||null===b||"function"!==typeof b[a])f.raiseError(this,"25081617",
"run","#"+a+"()","ExternalInterface call failed. Check whether chart has been rendered.");else return b[a].apply(b,arguments)}},c=function(a,b){return"function"===typeof a[b]?function(){return a[b].apply(a,arguments)}:a[b]},l=function(a,b){var k=C.getElementById(a),c=b.id||b.getAttribute("id"),d,f;if(null===k)return!1;if(a===c)return!0;c=b.getElementsByTagName("*");d=0;for(f=c.length;d<f;d++)if(c[d]===k)return!1;return!0},b=/[^\%\d]*$/ig,p=function(){var a=function(b){var c=b.parentNode;if(9===c.nodeType)return!1;
var d="display";t.getComputedStyle?d=t.getComputedStyle(b)[d]:b.currentStyle&&(d=b.currentStyle[d]);return"none"===d?!0:c?a(c):!1};return a}(),H=function(){var a={},b,c=function(){var d=0,l=parseInt(f.core.options.visibilityTrackingInterval,10)||300,m,n,N,B,s;for(m in a)if(d+=1,n=a[m].chart,N=a[m].container,B=a[m].insertMode,s=a[m].callback,n.disposed||!p(N))delete a[m],--d,!n.disposed&&n.renderChart.call(n,N,B,s);b=d?setTimeout(c,l):clearTimeout(b)};return function(d,l,m,n){a[d.id]={chart:d,container:l,
insertMode:m,callback:n};b||(b=setTimeout(c,parseInt(f.core.options.visibilityTrackingInterval,10)||300))}}(),s;f.policies.options.containerElementId=["renderAt",void 0];f.policies.options.renderer=["renderer",void 0];f.policies.options.containerElementType=["containerElementType",void 0];f.policies.options.visibilityTrackingInterval=300;f.normalizeCSSDimension=function(a,b,c){a=void 0===a?c.offsetWidth||parseFloat(c.style.width):a;b=void 0===b?c.offsetHeight||parseFloat(c.style.height):b;var d={},
f=c.style,l;f.width=a=a.toString?a.toString():"0";f.height=b=b.toString?b.toString():"0";if((d.widthIsRelative=a.match(/^\s*\d*\.?\d*\%\s*$/)&&!a.match(/^\s*0\%\s*$/))&&0===c.offsetWidth)for(l=c;l=l.offsetParent;)if(0<l.offsetWidth){a=(l.offsetWidth*parseFloat(a.match(/\d*/)[0])/100).toString();break}if((d.heightIsRelative=b.match(/^\s*\d*\.?\d*\%\s*$/)&&!b.match(/^\s*0\%\s*$/))&&20>=c.offsetHeight)for(l=c;l=l.offsetParent;)if(0<l.offsetHeight){b=(l.offsetHeight*parseFloat(b.match(/\d*/)[0])/100).toString();
break}d.width=a.replace?a.replace(/^\s*(\d*\.?\d*)\s*$/ig,"$1px"):a;d.height=b.replace?b.replace(/^\s*(\d*\.?\d*)\s*$/ig,"$1px"):b;f.width=d.width;f.height=d.height;d.pixelWidth=d.widthIsRelative?c.offsetWidth:parseInt(d.width,10)||0;d.pixelHeight=d.heightIsRelative?c.offsetHeight:parseInt(d.height,10)||0;return d};s=f.renderer={register:function(b,h){if(!b||"function"!==typeof b.toString)throw Error("#03091436 ~renderer.register() Invalid value for renderer name.");b=b.toString().toLowerCase();if(void 0!==
a[b])return f.raiseError(f.core,"03091438","param","::RendererManager>register",'Duplicate renderer name specified in "name"'),!1;a[b]=h;return!0},userSetDefault:!1,setDefault:function(b){if(!b||"function"!==typeof b.toString)return f.raiseError(f.core,"25081731","param","::RendererManager>setDefault",'Invalid renderer name specified in "name"'),!1;if(void 0===a[b=b.toString().toLowerCase()])return f.raiseError(f.core,"25081733","range","::RendererManager>setDefault","The specified renderer does not exist."),
!1;this.userSetDefault=!1;f.policies.options.renderer=["renderer",b];return!0},notifyRender:function(a){var b=f.core.items[a&&a.id];b&&(!1!==a.success||a.silent)||f.raiseError(f.core.items[a.id],"25081850","run","::RendererManager",Error("There was an error rendering the chart. Enable FusionCharts JS debugger for more information."));if(b.ref=a.ref)a.ref.FusionCharts=f.core.items[a.id];f.raiseEvent("internal.DOMElementCreated",{},b)},protectedMethods:{options:!0,attributes:!0,src:!0,ref:!0,constructor:!0,
signature:!0,link:!0,addEventListener:!0,removeEventListener:!0},getRenderer:function(b){return a[b]},getRendererPolicy:function(b){b=a[b].policies;return"object"===typeof b?b:{}},currentRendererName:function(){return f.policies.options.renderer[1]},update:function(a){m[a.id].update.apply(a,Array.prototype.slice.call(arguments,1))},render:function(a){m[a.id].render.apply(a,Array.prototype.slice.call(arguments,1))},remove:function(a){m[a.id].remove.apply(a,Array.prototype.slice.call(arguments,1))},
resize:function(a){m[a.id].resize.apply(a,Array.prototype.slice.call(arguments,1))},config:function(a){m[a.id].config.apply(a,Array.prototype.slice.call(arguments,1))},dispose:function(a){m[a.id].dispose.apply(a,Array.prototype.slice.call(arguments,1))}};f.addEventListener("beforeInitialize",function(b){b=b.sender;var c=b.options.renderer.toLowerCase(),k;"string"===typeof b.options.renderer&&void 0===a[c]&&(b.options.renderer=f.policies.options.renderer[1]);b.options.renderer=c;m[b.id]=a[b.options.renderer];
!0!==m[b.id].initialized&&"function"===typeof m[b.id].init&&(m[b.id].init(),m[b.id].initialized=!0);f.parsePolicies(b,m[b.id].policies||{},b.args);for(k in m[b.id].prototype)b[k]=m[b.id].prototype[k];for(k in m[b.id].events)b.addEventListener(k,m[b.id].events[k])});f.addEventListener(["rendered","dataloaderror","nodatatodisplay","rendercancelled"],function(a,b){var c=a.sender;c instanceof f.core&&c.__state.rendering&&(f.raiseEvent("internal.rendered",b,c),delete c.__state.rendering)});f.addEventListener("loaded",
function(a){var b=a.sender;a=a.sender.ref;var k,d;if(void 0!==a&&null!==a&&"function"===typeof a.getExternalInterfaceMethods){try{k=a.getExternalInterfaceMethods(),k="string"===typeof k?k.split(","):[]}catch(l){k=[],f.raiseError(b,"13111126041","run","RendererManager^Loaded",Error("Error while retrieving data from the chart-object."+(l.message&&0<=l.message.indexOf("NPObject")?" Possible cross-domain security restriction.":"")))}for(a=0;a<k.length;a+=1)d=k[a],void 0===b[d]&&(b[d]=F(d));if(b.ref)for(d in k=
s.protectedMethods,a=s.getRenderer(b.options.renderer).protectedMethods,b)if(a&&!k[d]&&!a[d]&&void 0===b.ref[d])try{b.ref[d]=c(b,d)}catch(m){}}});f.legacyEventList.resized="FC_Resized";f.extend(f.core.prototype,{render:function(a,b,c){c?"function"!==typeof c&&(c=void 0):"function"===typeof b?(c=b,b=void 0):b||"function"!==typeof a||(c=a,a=void 0);void 0===a&&(a=this.options.containerElementId);"string"===typeof a&&(a=C.getElementById(a));if(void 0===a||null===a)return f.raiseError(this,"03091456",
"run",".render()",Error("Unable to find the container DOM element.")),this;p(a)?H(this,a,b,c):this.renderChart.call(this,a,b,c);return this},renderChart:function(a,b,c){var v=this,m,p,n;if((n=t[this.id])&&n.FusionCharts&&n.FusionCharts===this||(n=this.ref)&&n.FusionCharts&&n.FusionCharts===this)f.renderer.dispose(this),n===t[this.id]&&(t[this.id]=void 0);void 0!==t[this.id]&&f.raiseError(this,"25081843","comp",".render",Error("#25081843:IECompatibility() Chart Id is same as a JavaScript variable name. Variable naming error. Please use unique name forchart JS variable, chart-id and container id."));
c?"function"!==typeof c&&(c=void 0):"function"===typeof b?(c=b,b=void 0):b||"function"!==typeof a||(c=a,a=void 0);b=(b||this.options.insertMode).toLowerCase()||d.REPLACE;void 0===a&&(a=this.options.containerElementId);"string"===typeof a&&(a=C.getElementById(a));if(void 0===a||null===a)return f.raiseError(this,"03091456","run",".render()",Error("Unable to find the container DOM element.")),this;if(l(this.id,a))return f.raiseError(this,"05102109","run",".render()",Error("A duplicate object already exists with the specific Id: "+
this.id)),this;m=C.createElement(this.options.containerElementType||"span");m.setAttribute("id",this.id);if("append"!==b&&"prepend"!==b)for(;a.hasChildNodes();)a.removeChild(a.firstChild);"prepend"===b&&a.firstChild?a.insertBefore(m,a.firstChild):a.appendChild(m);this.options.containerElement=a;this.options.containerElementId=a.id;if(b=m.style)b.position="relative",b.textAlign="left",b.lineHeight="normal",b.display="inline-block",b.zoom="1",b.fontWeight="normal",b.fontVariant="normal",b.fontStyle=
"normal",b.textDecoration="none",b["*DISPLAY"]="inline",b.padding="0",b.margin="0",b.border="none",b.direction="ltr";this.options.containerClassName&&(m.className=this.options.containerClassName);b=f.normalizeCSSDimension(this.width,this.height,m);this.__state.renderedWidth=b.pixelWidth;this.__state.renderedHeight=b.pixelHeight;this.__state.rendering=!0;f.raiseEvent("beforeRender",p={container:a,width:this.width,height:this.height,renderer:this.options.renderer},this,void 0,function(a,b){!0!==this.disposed&&
f.renderer.render(v,m,function(){f.renderer.notifyRender.apply(this,arguments);if(c)try{c.call(a.sender,b.container)}catch(h){setTimeout(function(){throw h;})}})},function(){f.raiseEvent("renderCancelled",p,v)});return this},remove:function(){f.renderer.remove(this);return this},resizeTo:function(a,c,k){var d=this,l=d.width,m=d.height,n=d.__state;"object"===typeof a&&(k=c,c=a.h,a=a.w);a=null===a||void 0===a?l:a.toString().replace(b,"");c=null===c||void 0===c?m:c.toString().replace(b,"");!0!==k?f.raiseEvent("beforeresize",
{currentWidth:l,currentHeight:m,newWidth:a,newHeight:c},d,void 0,function(){d.width=a;d.height=c;f.renderer.resize(d,{width:a,height:c});f.raiseEventWithLegacy("resized",{width:d.width,height:d.height,prevWidth:l,prevHeight:m,pixelWidth:d.ref&&d.ref.offsetWidth||0,pixelHeight:d.ref&&d.ref.offsetHeight||0,originalWidth:n.renderedWidth,originalHeight:n.renderedHeight},d,[d.id,d.width,d.height])},function(){f.raiseEvent("resizecancelled",{currentWidth:l,currentHeight:m,cancelledTargetWidth:a,cancelledTargetHeight:c},
d)}):(d.width=a,d.height=c);return this},dispose:function(){var a=this,b={};f.raiseEvent("beforeDispose",b,a,void 0,function(){f.renderer.dispose(a);f.raiseEvent("disposed",b,a);f.disposeEvents(a);delete f.core.items[a.id];for(var c in a)a.hasOwnProperty(c)&&delete a[c];a.disposed=!0},function(){f.raiseEvent("disposeCancelled",b,a)})},configure:function(a,b){var c;a&&("string"===typeof a?(c={},c[a]=b):c=a,f.renderer.config(this,c))}});f.extend(f.core,{setCurrentRenderer:function(){var a=s.setDefault.apply(s,
arguments);s.userSetDefault=!0;return a},getCurrentRenderer:function(){return s.currentRendererName.apply(s,arguments)},render:function(a,b){return a instanceof f.core?(a.render(b),a):(new f.core(a)).render(b)}},!1)}]);
FusionCharts.register("module",["private","modules.interface.transcoder",function(){var f=this,t=f.window,C=f.transcoders={},q={},d={},a=/url$/i,m=f._interactiveCharts={selectscatter:[!0,!1],dragcolumn2d:[!0,!0],dragarea:[!0,!0],dragline:[!0,!0],dragnode:[!0,!0]},F=function(a,c,d,e){var m=d.obj;d=d.args;d.dataSource=a;d.xmlHttpRequestObject=c;d.source="XmlHttpRequest";d.url=e;f.raiseEvent("dataLoadRequestCompleted",d,m,void 0,l,b)},c=function(a,b,c){var d=c.obj;c=c.args;c.error=a;c.httpStatus=b.xhr&&
b.xhr.status?b.xhr.status:-1;c.xmlHttpRequestObject=b;f.raiseEvent("dataLoadError",c,d);"function"===typeof t.FC_DataLoadError&&t.FC_DataLoadError(d.id,c)},l=function(a,b){a.sender.setChartData(b.dataSource,b.dataFormat,b.config,b.successcallback,b.silent)},b=function(a,b){f.raiseEvent("dataLoadCancelled",b,a.sender);b.xmlHttpRequestObject.abort()},p=function(a,b){var d=a.sender,e=d.__state,l=b.url;d.options.dataSource=b.url;e.dhmXhrObj||(e.dhmXhrObj=new f.ajax(F,c));e.dhmXhrObj.get("function"===
typeof t.decodeURIComponent?t.decodeURIComponent(l):t.unescape(l),{obj:d,args:b})},H=function(a,b){var c=a.sender,d=c.__state;f.raiseEvent("dataLoadRequestCancelled",b,c);d&&d.dhmXhrObj&&d.dhmXhrObj.abort()},s=function(a,b){var c=a.sender,e=c.__state,l=c.id;q[l]=b;d[l]&&delete d[l];d[l]={};e.dataReady=void 0;e.dataAvailable=!0;!0!==b.silent&&(!0!==c.options.safeMode||!0!==e.rendering||c.isActive()?(delete e.args,f.renderer.update(c,b)):(e.updatePending=b,f.raiseWarning(c,"23091255","run","::DataHandler~update",
"Renderer update was postponed due to async loading.")));f.raiseEvent("dataUpdated",b,c,void 0,b.successcallback)},e=function(a,b){f.raiseEvent("dataUpdateCancelled",b,a.sender,void 0,b.failurecallback)};f.dataFormats={};f.policies.options.dataSource=["dataSource",void 0];f.policies.options.dataFormat=["dataFormat",void 0];f.policies.options.dataConfiguration=["dataConfiguration",void 0];f.policies.options.showDataLoadingMessage=["showDataLoadingMessage",!1];f.addDataHandler=function(a,b){if("string"!==
typeof a||void 0!==C[a.toLowerCase()])f.raiseError(f.core,"03091606","param","::DataManager.addDataHandler",Error("Invalid Data Handler Name"));else{var c={},d=a.toLowerCase();C[d]=b;b.name=a;c["set"+a+"Data"]=function(b,c,d){return this.setChartData(b,a,c,d)};b.transportable&&(c["set"+a+"Url"]=function(b,c,d){return this.setChartDataUrl(b,a,c,d)},f.dataFormats[a+"URL"]=d+"Url");c["get"+a+"Data"]=function(){return this.getChartData(a)};f.dataFormats[a]=d;f.extend(f.core,c,!0)}};f.extend(f.core.prototype,
{setChartDataUrl:function(b,c,d,e,l){if(void 0===c||null===c||"function"!==typeof c.toString)c=this.options.dataFormat,f.raiseWarning(this,"03091609","param","FusionCharts#setChartDataUrl","Invalid Data Format. Reverting to current data format - "+c);c=c.toString().toLowerCase();c=a.test(c)?c.slice(0,-3):c;f.raiseEvent("dataLoadRequested",{source:"XmlHttpRequest",url:b,dataFormat:c,silent:!!l,config:d,successcallback:e},this,void 0,p,H)},setChartData:function(b,c,d,l,m){var n=this.options,p,B;if(void 0===
c||null===c||"function"!==typeof c.toString)c=n.dataFormat,f.raiseWarning(this,"03091610","param","FusionCharts#setChartData","Invalid Data Format. Reverting to current data format - "+c);c=c.toString().toLowerCase();a.test(c)?this.setChartDataUrl(b,c,d,l,m):(n.dataSource=b,p=c,n.dataFormat=c,B=C[p],"undefined"===typeof B?f.raiseError(f.core,"03091611","param","FusionCharts#setChartData",Error("Data Format not recognized")):(c=(c=f.renderer&&f.renderer.getRenderer(n.renderer||f.renderer.currentRendererName()))&&
c.dataFormat,d=c===p?B.passthrough?B.passthrough(b,d):{data:b}:B.encode(b,this,d||n.dataConfiguration)||{},d["native"]=c===p,d.format=d["native"]?c:"xml",d.dataFormat=p,d.dataSource=b,d.silent=!!m,"function"===typeof l&&(d.successcallback=l),f.raiseEvent("beforeDataUpdate",d,this,void 0,s,e)))},getChartData:function(a,b){var c=this.options,e=this.id,l;if(void 0===a||"function"!==typeof a.toString||void 0===(l=C[a=a.toString().toLowerCase()]))f.raiseError(this,"25081543","param","::transcoder~getChartData()",
Error('Unrecognized data-format specified in "format"'));else return d[e][a]?c=d[e][a]:q[e]?(a===q[e].format?d[e][a]=q[e]:(d[e].xml||(d[e].xml="xml"===q[e].format?q[e]:C[q[e].format].encode(q[e].data,this,c.dataConfiguration)),d[e][a]||(d[e][a]=l.decode(d[e].xml.data,this,c.dataConfiguration))),c=d[e][a]):c={error:Error("Data not defined")},!0===Boolean(b)?c:c.data},dataReady:function(a){return a?this.__state.dataAvailable:this.__state.dataReady}});f.extend(f.core,{transcodeData:function(a,b,c,d,
e){if(b&&"function"===typeof b.toString&&c&&"function"===typeof c.toString&&void 0!==C[c=c.toString().toLowerCase()]&&void 0!==C[b=b.toString().toLowerCase()])return a=C[b].encode(a,this,e),c=C[c].decode(a.data,this,e),c.error instanceof Error||(c.error=a.error),d?c:c.data;f.raiseError(this,"14090217","param",".transcodeData()",Error("Unrecognized data-format specified during transcoding."))}},!1);f.getRenderer&&!f.getRenderer("flash")||f.addEventListener("DataLoadRequested",function(a){var b=a.sender;
b.options&&"flash"===b.options.renderer&&b.options.useLegacyXMLTransport&&a.preventDefault()});f.addEventListener("beforeInitialize",function(b){b=b.sender;var c=b.options,e=c.dataSource,l=f.renderer&&f.renderer.getRenderer(c.renderer);delete q[b.id];d[b.id]={};if(void 0!==e&&null!==e){b.__state.dataSetDuringConstruction=!0;if("string"!==typeof c.dataFormat)switch(typeof e){case "function":e=c.dataSource=e.call(b,c.dataConfiguration);c.dataFormat="JSON";break;case "string":c.dataFormat=/^\s*?\{[\s\S]*\}\s*?$/g.test(b.options.dataFormat)?
"JSON":"XML";break;case "object":c.dataFormat="JSON"}c.dataFormat&&c.dataFormat.toString&&(b.__state.dataFetchDuringConstruction=a.test(c.dataFormat.toString()));b.setChartData(e,c.dataFormat,void 0,void 0,!0)}else l&&(b.__state.dataSetDuringConstruction=!1,f.raiseWarning(b,"1810131922A","param",":dataHandler~event:beforeInitialize","Data source was not defined during construction, hence set to blank renderer default - "+l.dataFormat),b.setChartData("",l.dataFormat,void 0,void 0,!0),b.__state.dataAvailable=
!1)});f.addEventListener("beforeDispose",function(a){var b=a.sender;delete q[a.sender.id];delete d[a.sender.id];b&&b.__state&&b.__state.dhmXhrObj&&b.__state.dhmXhrObj.abort()});f.addEventListener("disposed",function(a){delete d[a.sender.id]});f.addEventListener("loaded",function(a){a=a.sender;var b=a.__state.updatePending;a instanceof f.core&&void 0!==b&&(delete a.__state.updatePending,f.renderer.update(a,b))});f.addEventListener("dataUpdated",function(a,b){var c=a.sender,d=c.__state;d.rendering&&
(d.dataFetchDuringConstruction||d.updatePending)&&(delete d.dataFetchDuringConstruction,delete d.updatePending,f.renderer.update(c,b))});f.addEventListener(["dataLoadError","dataInvalid"],function(a){a.sender.__state.dataAvailable=!1});f.addEventListener("loaded",function(a){a=a.sender;var b=a.__state,c,d,e;e=function(a,b){return function(c){return!1===c?b.apply(this):this.ref.getUpdatedXMLData?f.core.transcodeData(this.ref.getUpdatedXMLData(),"xml",a):this.getData?this.getData(a):b.apply(this)}};
if(a.chartType&&m[a.chartType()]&&m[a.chartType()][0]){for(c in f.transcoders)d=f.transcoders[c].name,d="get"+d+"Data",a[d]=e(c,a.constructor.prototype[d]),a[d]._dynamicdatarouter=!0;b.dynamicDataRoutingEnabled=!0}else if(b.dynamicDataRoutingEnabled){for(c in f.transcoders)d=f.transcoders[c].name,d="get"+d+"Data",a.hasOwnProperty(d)&&a[d]._dynamicdatarouter&&delete a[d];b.dynamicDataRoutingEnabled=!1}})}]);"object"!==typeof JSON&&(JSON={});
(function(){function f(a){return 10>a?"0"+a:a}function t(a){d.lastIndex=0;return d.test(a)?'"'+a.replace(d,function(a){var c=F[a];return"string"===typeof c?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function C(d,b){var f,F,s,e,h=a,k,v=b[d];v&&"object"===typeof v&&"function"===typeof v.toJSON&&(v=v.toJSON(d));"function"===typeof c&&(v=c.call(b,d,v));switch(typeof v){case "string":return t(v);case "number":return isFinite(v)?String(v):"null";case "boolean":case "null":return String(v);
case "object":if(!v)return"null";a+=m;k=[];if("[object Array]"===Object.prototype.toString.apply(v)){e=v.length;for(f=0;f<e;f+=1)k[f]=C(f,v)||"null";s=0===k.length?"[]":a?"[\n"+a+k.join(",\n"+a)+"\n"+h+"]":"["+k.join(",")+"]";a=h;return s}if(c&&"object"===typeof c)for(e=c.length,f=0;f<e;f+=1)"string"===typeof c[f]&&(F=c[f],(s=C(F,v))&&k.push(t(F)+(a?": ":":")+s));else for(F in v)Object.prototype.hasOwnProperty.call(v,F)&&(s=C(F,v))&&k.push(t(F)+(a?": ":":")+s);s=0===k.length?"{}":a?"{\n"+a+k.join(",\n"+
a)+"\n"+h+"}":"{"+k.join(",")+"}";a=h;return s}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var q=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
d=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,a,m,F={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},c;"function"!==typeof JSON.stringify&&(JSON.stringify=function(d,b,f){var F;m=a="";if("number"===typeof f)for(F=0;F<f;F+=1)m+=" ";else"string"===typeof f&&(m=f);if((c=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return C("",{"":d})});
"function"!==typeof JSON.parse&&(JSON.parse=function(a,b){function c(a,d){var h,k,f=a[d];if(f&&"object"===typeof f)for(h in f)Object.prototype.hasOwnProperty.call(f,h)&&(k=c(f,h),void 0!==k?f[h]=k:delete f[h]);return b.call(a,d,f)}var d;a=String(a);q.lastIndex=0;q.test(a)&&(a=a.replace(q,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return d=eval("("+a+")"),"function"===typeof b?c({"":d},""):d;throw new SyntaxError("JSON.parse");})})();
FusionCharts.register("module",["private","modules.data.json",function(){var f=this,t=f.window,C=t.document,q=f.xssEncode,d,a;void 0===t.JSON&&f.raiseError(this,"1113062012","run","JSONDataHandler",Error("Could not find library support for JSON parsing."));f.policies.options.allowIESafeXMLParsing=["_allowIESafeXMLParsing",!0];d=function(){var a={set:!0,trendlines:!0,vtrendlines:!0,line:{trendlines:!0,vtrendlines:!0},data:!0,dataset:!0,lineset:!0,categories:!0,category:!0,linkeddata:!0,application:!0,
definition:!0,axis:!0,connectors:!0,connector:{connectors:!0},trendset:!0,row:{rows:!0},column:{columns:!0},label:{labels:!0},color:{colorrange:!0},dial:{dials:!0},pointer:{pointers:!0},point:{trendpoints:!0},process:{processes:!0},task:{tasks:!0},milestone:{milestones:!0},datacolumn:{datatable:!0},text:{datacolumn:!0},item:{legend:!0},alert:{alerts:!0},groups:{annotations:!0},items:{groups:!0,data:!0},shapes:!0,shape:{shapes:!0},entitydef:!0,entity:{entitydef:!0}},d={chart:"linkedchart",map:"linkedmap",
set:"data",vline:{chart:"data",graph:"data",dataset:"data",categories:"category",linkedchart:"data"},apply:{application:"application"},style:{definition:"definition"},marker:{application:"application",definition:"definition",data:"items"},entity:{entitydef:"entitydef",data:"data"},shape:{shapes:"shapes"},connector:{connectors:{chart:"connector",linkedchart:"connector",map:"connectors",linkedmap:"connectors"}},annotationgroup:{annotations:"groups"},annotation:{groups:"items"}},c={vline:{vline:"true"}},
l={chart:!0,map:!0,graph:!0},b={dataset:"data",categories:"category"},p={target:"target",value:"value"},q={styles:{definition:!0,application:!0},chart:{value:!0,target:!0},graph:{value:!0,target:!0},linkedchart:{value:!0,target:!0},markers:{definition:!0,application:!0,shapes:!0,connectors:!0,data:!0},map:{entitydef:!0,data:!0},linkedmap:{entitydef:!0,data:!0}},s,e;s={append:function(b,c,d,e){!a[d]||!0!==a[d]&&!0!==a[d][e]?c[d]=b:(c[d]instanceof Array||(c[d]=[]),c[d].push(b))},child:function(a,e,
m,K){var t,n,N,B,U,r;for(t=0;t<e.length;t+=1)switch(N=e[t],n=N.nodeName.toLowerCase(),N.nodeType){case 1:B=s.attr(N.attributes);r=l[n];!0===r&&(U=B,B={},B[n]=U);r=c[n];"object"===typeof r&&f.extend(B,r);if(r=d[n])if("object"===typeof r&&"object"===typeof r[m])for(U in U=void 0,r[m]){if(K[U]){n=r[m][U];break}}else"object"===typeof r&&"string"===typeof r[m]?n=r[m]:"string"===typeof r&&(n=r);N.childNodes.length&&((r=q[m])&&r[n]?s.child(a,N.childNodes,n,K):s.child(B,N.childNodes,n,K));(r=q[m])&&r[n]||
s.append(B,a,n,m);break;case 3:if(r=p[m])n=r,B=N.data,s.append(B,a,n,m);r=b[m];"string"===typeof r&&K.chart&&parseInt(K.chart.compactdatamode,10)&&(n=r,B=N.data,a[n]=a[n]?a[n]+B:B)}},attr:function(a){var b,c={};if(!a||!a.length)return c;for(b=0;b<a.length;b+=1)c[a[b].nodeName.toLowerCase()]=a[b].value||a[b].nodeValue;return c}};e=function(a){var b={},c,d,l,n,m,B,p,r,F;if("object"!==typeof a&&a&&"function"!==typeof a.toString)return e.errorObject=new TypeError("xml2json.parse()"),b;a=a.toString().replace(/<\!--[\s\S]*?--\x3e/g,
"").replace(/<\?xml[\s\S]*?\?>/ig,"").replace(/&(?!([^;\n\r]+?;))/g,"&amp;$1");a=a.replace(/^\s\s*/,"");for(var q=/\s/,H=a.length;q.test(a.charAt(--H)););a=a.slice(0,H+1);if(!a)return b;try{t.DOMParser?c=(new t.DOMParser).parseFromString(a,"text/xml"):C.body&&f.core.options.allowIESafeXMLParsing?(d=C.createElement("xml"),d.innerHTML=a,C.body.appendChild(d),c=d.XMLDocument,C.body.removeChild(d)):(c=new t.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(a));if(!(c&&c.childNodes&&1===c.childNodes.length&&
(l=c.childNodes[0])&&l.nodeName&&(n=l.nodeName.toLowerCase()))||"chart"!==n&&"map"!==n&&"graph"!==n)return e.errorObject=new TypeError("xml2json.parse()"),b;if("graph"===n){m=c.createElement("chart");for(F=(p=l.attributes)&&p.length||0;F--;)m.setAttribute(p[F].name,p[F].value),p.removeNamedItem(p[F].name);if(F=(r=l.childNodes)&&r.length||0)--F,B=l.removeChild(r[F]),m.appendChild(B);for(;F--;)B=l.removeChild(r[F]),m.insertBefore(B,m.firstChild);c.replaceChild(m,l);l=m}}catch(W){e.errorObject=W}l?(l.attributes&&
(b[n]=s.attr(l.attributes)),l.childNodes&&s.child(b,l.childNodes,n,b),delete e.errorObject):e.errorObject=new TypeError("xml2json.parse()");return b};return function(a){delete e.errorObject;return{data:e(a),error:e.errorObject}}}();a=function(){var a,d;a={items:{explode:{data:"set",groups:{annotations:"annotationgroup"},items:{groups:"annotation"}},text:{chart:{target:"target",value:"value"},graph:{target:"target",value:"value"}},dsv:{dataset:{data:"dataset"},categories:{category:"categories"}},attr:{chart:{chart:"chart"},
graph:{graph:"graph"},map:{map:"map"},linkedmap:{map:"map"},linkedchart:{chart:"chart"}},group:{styles:{definition:"style",application:"apply"},map:{data:"entity",entitydef:"entity"},markers:{definition:"marker",application:"marker",shapes:"shape",connectors:"connector",items:"marker"}},tag:{markers:{items:"data"}}},qualify:function(a,d,b){return"object"===typeof this.items[a][b]?this.items[a][b][d]:this.items[a][b]}};d=function(c,f,b,p){var t="",s="",e="",h="",k,v,K;f&&"function"===typeof f.toLowerCase&&
(f=f.toLowerCase());if(void 0===b&&c[f])for(k in c[f])v=k.toLowerCase(),"compactdatamode"===v&&(p.applyDSV=1==c[f][k]);if(c instanceof Array)for(k=0;k<c.length;k+=1)e="string"===typeof c[k]?e+q(c[k]):e+d(c[k],f,b,p);else{for(k in c)v=k.toLowerCase(),c[k]instanceof Array&&(K=a.qualify("group",v,f))?(e=a.qualify("tag",v,f)||v,s+="<"+e+">"+d(c[k],K,f,p)+"</"+e+">"):"object"===typeof c[k]?(K=a.qualify("attr",v,f))?(h=d(c[k],K,f,p).replace(/\s*\/\>/ig,""),f=v):s+=d(c[k],v,f,p):p.applyDSV&&(K=a.qualify("dsv",
v,f))?s+=c[k]:(K=a.qualify("text",v,f))?(e=a.qualify("tag",v,f)||K,s+="<"+e+">"+c[k]+"</"+e+">"):"vline"===v&&Boolean(c[k])?f="vline":t+=" "+v+'="'+q(c[k]).toString().replace(/\"/ig,"&quot;")+'"';if(K=a.qualify("explode",b,f))f=K;e=f;e=(""!==h?h:"<"+e)+t+(""!==s?">"+s+"</"+e+">":" />")}return e};return function(a){delete d.errorObject;if(a&&"string"===typeof a)try{a=JSON.parse(a)}catch(f){d.errorObject=f}return{data:d(a,a&&a.graph?"graph":a&&a.map?"map":"chart",void 0,{}),error:d.errorObject}}}();
f.addDataHandler("JSON",{encode:a,decode:d,passthrough:function(a){var d={data:{}};if(!a)return d;if("string"!==typeof a)try{a=JSON.stringify(a)}catch(c){return d.error=c,d}try{d.data=JSON.parse(a.replace(/"([^"]+)":/g,function(a,c){return'"'+c.toLowerCase()+'":'}))}catch(f){d.error=f}return d},transportable:!0})}]);FusionCharts.register("module",["private","modules.data.xml",function(){var f=function(f){return{data:f,error:void 0}};this.addDataHandler("XML",{encode:f,decode:f,transportable:!0})}]);
FusionCharts.register("module",["private","modules.data.csv",function(){var f=this,t=f.window,C=f.core,q=t.parseInt,d=t.parseFloat,a=function(a){return a},m;m=function(a){this.data=[];this.columnCount=this.rowCount=0;this.configure(a)};m.decodeLiterals=function(a,c){return void 0!==a&&null!==a&&a.toString?a.replace("{tab}","\t").replace("{quot}",'"').replace("{apos}","'"):c};m.prototype.set=function(a,c,d){var b;if(this.rowCount<=a){for(b=this.rowCount;b<=a;b+=1)this.data[b]=[];this.rowCount=a+1}this.columnCount<=
c&&(this.columnCount=c+1);this.data[a][c]=d};m.prototype.setRow=function(a,c){var d;if(this.rowCount<=a){for(d=this.rowCount;d<=a;d+=1)this.data[d]=[];this.rowCount=a+1}this.columnCount<c.length&&(this.columnCount=c.length);this.data[a]=c};m.prototype.get=function(a,c){var d=this.data;return d[a]&&d[a][c]};m.prototype.configure=function(a){var c=m.decodeLiterals;this.delimiter=c(a.delimiter,",");this.qualifier=c(a.qualifier,'"');this.eolCharacter=c(a.eolCharacter,"\r\n");this.numberFormatted=!!q(a.numberFormatted,
0)};m.prototype.clear=function(){this.data=[];this.columnCount=this.rowCount=0};m.prototype.toString=function(){var a,c,d="";for(a=0;a<this.rowCount;a+=1)c=this.qualifier+this.data[a].join(this.qualifier+this.delimiter+this.qualifier)+this.qualifier,d+='""'===c?this.eolCharacter:c+this.eolCharacter;0<this.rowCount&&(d=d.slice(0,d.length-2));return d};f.addDataHandler("CSV",{encode:function(a,c){f.raiseError(c,"0604111215","run","::CSVDataHandler.encode()","FusionCharts CSV data-handler only supports encoding of data.");
throw Error("FeatureNotSupportedException()");},decode:function(f,c){var l=C.transcodeData(f,"xml","json")||{},b=c.jsVars,p,q,s,e,h,k,v,K=l.chart||l.map||l.graph||{};v=Boolean(K.exporterrorcolumns||0);var t=l.categories&&l.categories[0]&&l.categories[0].category||[],n=l.map&&!l.chart||b&&b.instanceAPI&&"geo"===b.instanceAPI.defaultSeriesType,N=!1,B=!1,U=!1,r=!1;q=!1;var ga=a,X={},aa,W,ya,va,za,ja,O,na,ma,M,T;h=0;p=new m({separator:K.exportdataseparator,qualifier:K.exportdataqualifier,numberFormatted:K.exportdataformattedval});
C.formatNumber&&p.numberFormatted&&(ga=function(a){return C.formatNumber(a,K)});if(n)for(M in X.geo=!0,t=b.hcObj&&b.hcObj.entities&&b.hcObj.entities.items||[],p.setRow(0,["Id"," Short Name","Long Name","Value","Formatted Value"]),b=0,t)B=t[M],T=B.eJSON,q=B.value,p.setRow(++b,[M,T.shortLabel,T.label,void 0===q?"":q,B.formattedValue]);else if(void 0!==(aa=l.dials&&l.dials.dial||l.pointers&&l.pointers.pointer||l.value))if(X.gauge=!0,"string"===typeof aa)p.set(0,0,ga(aa)),X.singlevalue=!0,"string"===
typeof l.target&&(p.set(0,1,ga(l.target)),X.bullet=!0);else for(p.setRow(0,["Id","Value"]),X.multivalue=!0,b=0,k=1,h=aa.length;b<h;b+=1,k+=1)p.setRow(k,[k,ga(aa[b].value)]);else if(aa=l.dataset||!(l.data instanceof Array)&&[]){X.multiseries=!0;s=1;if(W=l.lineset)aa=aa.concat(W),X.lineset=!0;if(ya=l.axis)aa=aa.concat(ya),X.multiaxis=!0;ja=aa.length;za=t.length;if(!(ja=aa.length)){for(b=0;b<za;b+=1)O=t[b],p.set(b+1,0,O.label||O.name);X.multilevel=!0}for(b=0;b<ja;b+=1)for(na=aa,na[b].dataset?(na=na[b].dataset,
e=0,va=na.length):(na=aa,e=b,va=e+1);e<va&&!N&&!U;e+=1,s+=1){n=na[e];p.set(0,s,n.seriesname);"string"===typeof n.data&&(X.compactdata=!0,n.data=n.data.split(K.dataseparator||"|"));k=h=0;for(ma=n.data&&n.data.length||0;h<ma||h<za;h+=1){O=t[h];q=k+1;M=n.data&&n.data[k]||{};if(void 0!==M.x&&void 0!==M.y){N=X.xy=!0;break}if(void 0!==M.open||void 0!==M.high||void 0!==M.close||void 0!==M.low){r=X.ohlc=!0;break}if(void 0!==M.rowid&&void 0!==M.columnid){U=X.heatmap=!0;break}if(h<za&&!O.vline){p.set(q,0,O.label||
O.name);O=d(M?M.value:"");O=isNaN(O)?"":ga(O);p.set(q,s,O);if(B||v||M.errorvalue)B||p.set(0,s+1,"Error"),T=1,p.set(q,s+1,ga(M.errorvalue));k+=1}}T&&(s+=T,T=0)}W&&(aa=aa.slice(0,-W.length));ya&&(aa=aa.slice(0,-ya.length))}else if(aa=l.data){p.set(0,1,K.yaxisname||"Value");X.singleseries=!0;q="1"==K.showsumatend;b=0;for(za=aa.length;b<za;b+=1)M=aa[b],M.vline||(O=d(M.value?M.value:""),p.setRow(b+1,[M.label||M.name,isNaN(O)?"":(h+=O,ga(O))]));q&&(X.summation=!0,p.setRow(b+1,[K.sumlabel||"Total",ga(h)]))}if(r)for(p.clear(),
p.setRow(0,["Open","Close","High","Low"]),b=0,q=1,aa=l.dataset,va=aa.length;b<va;b+=1)for(h=0,n=aa[b]&&aa[b].data||[],ja=n.length;h<ja;h+=1,q+=1)M=n[h]||{},p.setRow(h+1,[ga(M.open),ga(M.close),ga(M.high),ga(M.low)]);else if(N)for(p.clear(),B=!1,T=0,p.setRow(0,["Series","x","y"]),b=0,q=1,aa=l.dataset,va=aa.length;b<va;b+=1)for(h=0,n=aa[b]&&aa[b].data||[],ja=n.length;h<ja;h+=1,q+=1){M=n[h]||{};O=[aa[b].seriesname,ga(M.x),ga(M.y)];void 0!==M.z&&(O.push(ga(M.z)),T||(p.set(0,3,"z"),T=1));if(B||v||void 0!==
M.errorvalue||void 0!==M.horizontalerrorvalue||void 0!==M.verticalerrorvalue)l=ga(M.errorvalue),O.push(M.errorvalue,void 0===M.horizontalerrorvalue?l:ga(M.horizontalerrorvalue),void 0===M.verticalerrorvalue?l:ga(M.verticalerrorvalue)),B||(p.set(0,T+3,"Error"),p.set(0,T+4,"Horizontal Error"),p.set(0,T+5,"Vertical Error")),B=X.error=!0;p.setRow(q,O)}else if(U){p.clear();N={};U={};b=0;h=1;t=l.rows&&l.rows.row||[];for(v=t.length;b<v;b+=1,h+=1)O=t[b],O.id&&(N[O.id.toLowerCase()]=h,p.set(h,0,O.label||O.id));
b=0;h=1;t=l.columns&&l.columns.column||[];for(v=t.length;b<v;b+=1,h+=1)O=t[b],O.id&&(U[O.id.toLowerCase()]=h,p.set(0,h,O.label||O.id));n=l.dataset&&l.dataset[0]&&l.dataset[0].data||[];b=0;for(v=n.length;b<v;b+=1)M=n[b],q=M.rowid.toLowerCase(),s=M.columnid.toLowerCase(),N[q]||(N[q]=p.rowCount,p.set(p.rowCount,0,M.rowid)),U[s]||(U[s]=p.columnCount,p.set(0,p.columnCount,M.columnid)),p.set(N[q],U[s],ga(M.value))}aa=t=W=ya=null;0<p.rowCount&&void 0===p.get(0,0)&&p.set(0,0,K.xaxisname||"Label");return{data:p.toString(),
error:void 0,predictedFormat:X}},transportable:!1});C.addEventListener("Loaded",function(a){a=a.sender;"javascript"!==a.options.renderer||a.getDataAsCSV||(a.getDataAsCSV=a.ref.getDataAsCSV=a.getCSVData)})}]);
FusionCharts.register("module",["private","modules.renderer.js",function(){var f=this,t=f.window,C=t.document,q=f.core.options,d=/msie/i.test(t.navigator.userAgent)&&!t.opera,a=Boolean(t.SVGAngle||C.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")),m=function(){},F=f.hcLib={cmdQueue:[]},c=F.moduleCmdQueue={base:[],charts:[],powercharts:[],widgets:[],maps:[]},l=F.moduleDependencies={},b=F.moduleMeta={base:"fusioncharts.js",charts:"fusioncharts.charts.js",powercharts:"fusioncharts.powercharts.js",
widgets:"fusioncharts.widgets.js",maps:"fusioncharts.maps.js"},p={},H=F.getMetaSentence=function(){var a={};return function(b){b=b&&b.replace(/(^\s*)|(\s*$)/g,"")||"";return a[b]||(a[b]={key:b,subject:b.replace(/[^\/]*?$/ig,""),predicate:b.replace(/^.*\//ig,"")})}}(),s=F.getDependentModuleName=function(a){var b=[],c,d;a=H(a).predicate;for(c in l)void 0!==(d=l[c][a])&&(b[d]=c);return b},e=F.hasModule=function(a){var b,c;if(a instanceof Array){b=0;for(c=a.length;b<c;b+=1)if(!Boolean(f.modules["modules.renderer.js-"+
H(a[b]).predicate]))return!1;return!0}return Boolean(f.modules["modules.renderer.js-"+H(a).predicate])},h=F.loadModule=function(a,c,d,k){a instanceof Array||(a=[a]);var h=a.length,l=0,m;m=function(){if(l>=h)c&&c();else{var s=a[l],v=s&&s.match(/[^\/]*$/i)[0],q=b[s];l+=1;if(s){if(e(v)){m();return}if(p[v]){f.raiseError(k||f.core,"1112201445A","run","JavaScriptRenderer~loadModule() ","required resources are absent or blocked from loading.");d&&d(v);return}}else d&&d(v);s=f.core.options["html5"+f.capitalizeString(v)+
"Src"];f.loadScript(void 0===s?q:s,{success:function(){e(v)?m():d&&d(v)},failure:d&&function(){d(v)}},void 0,!0)}};m()},k=F.executeWaitingCommands=function(a){for(var b;b=a.shift();)"object"===typeof b&&m[b.cmd].apply(b.obj,b.args)},v=function(a){delete a.sender.jsVars._reflowData;a.sender.jsVars._reflowData={};delete a.sender.jsVars._reflowClean},K=function(){var a=function(){};a.prototype={LoadDataErrorText:"Error in loading data.",XMLLoadingText:"Retrieving data. Please wait",InvalidXMLText:"Invalid data.",
ChartNoDataText:"No data to display.",ReadingDataText:"Reading data. Please wait",ChartNotSupported:"Chart type not supported.",PBarLoadingText:"",LoadingText:"Loading chart. Please wait",RenderChartErrorText:"Unable to render chart."};return a.prototype.constructor=a}(),J=F.getContainerBackgroundColor=function(b){var c=b.options.containerBackgroundColor,e=b.options.containerBackgroundOpacity,k=b.jsVars.transparent;void 0!==k&&null!==k?e=b.jsVars.transparent?0:1:(e=parseFloat(e),0>e?e=0:1<e&&(e=1));
c||(c="#ffffff");if(d&&!a)return e?c:"transparent";c=c.replace(/^#?([a-f0-9]+)/ig,"$1");c=F.graphics.HEXtoRGB(c);c[3]=e.toString();return"rgba("+c.join(",")+")"};F.injectModuleDependency=function(a,b,d){var e=!1,k=H(a).subject;a=H(a).predicate;b=void 0===b?a:H(b).predicate;l[a]||(l[a]={},c[a]||(c[a]=[],F.moduleMeta[a]=k+q.html5ScriptNamePrefix+(b&&b.replace&&b.replace(/^[\s\S]*\//ig,"").replace(/\?/g,"%3F").replace(/\#/g,"%23").replace(/\:/g,"%3A")||"")+q.html5ScriptNameSuffix),e=!0);l[a][b]=d||0;
return e};F.needsModule=function(a,b){a=H(a).predicate;b=H(b).predicate;return void 0!==(F.moduleDependencies[a]&&F.moduleDependencies[a][b])};F.cleanupWaitingCommands=function(a){for(var b=a.chartType(),b=s(b),d,e=[],k;d=b.shift();){for(d=c[d]||[];k=d.shift();)"object"===typeof k&&k.obj!==a&&e.push(k);d.concat(e);e=[]}};f.extend(f.core.options,{html5ScriptNameSuffix:".js",html5ScriptNamePrefix:"fusioncharts."});f.extend(m,{dataFormat:"json",ready:!1,policies:{jsVars:{},options:{showChartLoadingMessage:["showChartLoadingMessage",
!0]}},init:function(){e("base")?m.ready=!0:h("base",function(){m.ready=!0;k(F.cmdQueue)},void 0,f.core)},render:function(a){var b=a,c=this.jsVars.msgStore;b&&this.options.showChartLoadingMessage&&(b.innerHTML='<small style="display: inline-block; *zoom:1; *display:inline; width: 100%; font-family: Verdana,sans; font-size: 10px; color: #666666; text-align: center; padding-top: '+(parseInt(b.style.height,10)/2-5)+'px">'+(c.PBarLoadingText||c.LoadingText)+"</small>",b.style.backgroundColor=J(this));
F.cmdQueue.push({cmd:"render",obj:this,args:arguments})},update:function(){F.cmdQueue.push({cmd:"update",obj:this,args:arguments})},resize:function(){F.cmdQueue.push({cmd:"resize",obj:this,args:arguments})},dispose:function(){var a=F.cmdQueue,b,c;b=0;for(c=a.length;b<c;b+=1)a[b].obj===this&&(a.splice(b,1),--c,--b)},load:function(){F.cmdQueue.push({cmd:"load",obj:this,args:arguments})},config:function(a,b){var c,d=this.jsVars,e=d.msgStore,d=d.cfgStore,k=this.options,h;h={LoadingText:"loadMessage",
ChartNotSupported:"typeNotSupportedMessage",RenderChartErrorText:"renderErrorMessage",XMLLoadingText:"dataLoadStartMessage",ChartNoDataText:"dataEmptyMessage",LoadDataErrorText:"dataLoadErrorMessage",InvalidXMLText:"dataInvalidMessage"};"string"===typeof a&&1<arguments.length&&(c=a,a={},a[c]=b);for(c in a)void 0!==e[c]?e[c]=a[c]:d[c.toLowerCase()]=a[c],h[c]?k[h[c]]=a[c]:k[c]=a[c]},protectedMethods:{},events:{beforeInitialize:function(a){var b=a.sender;a=b.jsVars;var c;a.fcObj=b;a.msgStore=a.msgStore||
new K;a.cfgStore=a.cfgStore||{};a.previousDrawCount=-1;a.drawCount=0;a._reflowData={};b.addEventListener("beforeRender",function(a){a.sender.jsVars.smartLabel=new F.SmartLabelManager(b.id,C.body||C.getElementsByTagName("body")[0]);a.detachHandler()});a.userModules instanceof Array||(c=a.userModules,a.userModules=[],"string"===typeof c&&(a.userModules=a.userModules.concat(c.split(","))));F.chartAPI&&F.chartAPI[void 0]||(a.needsLoaderCall=!0)},initialized:function(a){a=a.sender;var b=a.jsVars;b.needsLoaderCall&&
(delete b.needsLoaderCall,m.load.call(a))},beforeDataUpdate:v,beforeDispose:function(a){var b=a.sender.jsVars;b.smartLabel&&!b.smartLabel.disposed&&b.smartLabel.dispose();v.apply(this,arguments)},beforeRender:function(a){var b=a.sender.jsVars;delete b.drLoadAttempted;delete b.waitingModule;delete b.waitingModuleError;v.apply(this,arguments)},dataLoadRequested:function(a){a=a.sender;var b=a.jsVars;delete b.loadError;a.ref&&a.options.showDataLoadingMessage?b.hcObj&&!b.hasNativeMessage&&b.hcObj.showLoading?
b.hcObj.showMessage(b.msgStore.XMLLoadingText):a.ref.showChartMessage?a.ref.showChartMessage("XMLLoadingText"):b.stallLoad=!0:b.stallLoad=!0},dataLoadRequestCompleted:function(a){delete a.sender.jsVars.stallLoad},dataLoadError:function(a){var b=a.sender,c=b.jsVars;delete c.stallLoad;c.loadError=!0;b.ref&&"function"===typeof b.ref.showChartMessage&&b.ref.showChartMessage("LoadDataErrorText");b.__state.dataFetchDuringConstruction&&delete b.__state.dataFetchDuringConstruction;v.apply(this,arguments)}},
_call:function(a,b,c){a.apply(c||t,b||[])}});f.extend(m.prototype,{getSWFHTML:function(){f.raiseWarning(this,"11090611381","run","JavaScriptRenderer~getSWFHTML()","getSWFHTML() is not supported for JavaScript charts.")},addVariable:function(){f.raiseWarning(this,"11090611381","run","JavaScriptRenderer~addVariable()",'Use of deprecated "addVariable()". Replace with "configure()".');f.core.prototype.configure.apply(this,arguments)},getXML:function(){f.raiseWarning(this,"11171116291","run","JavaScriptRenderer~getXML()",
'Use of deprecated "getXML()". Replace with "getXMLData()".');return this.getXMLData.apply(this,arguments)},setDataXML:function(){f.raiseWarning(this,"11171116292","run","JavaScriptRenderer~setDataXML()",'Use of deprecated "setDataXML()". Replace with "setXMLData()".');return this.setXMLData.apply(this,arguments)},setDataURL:function(){f.raiseWarning(this,"11171116293","run","JavaScriptRenderer~setDataURL()",'Use of deprecated "SetDataURL()". Replace with "setXMLUrl()".');return this.setXMLUrl.apply(this,
arguments)},hasRendered:function(){return!(!this.jsVars.hcObj||!this.jsVars.hcObj.hasRendered)},setTransparent:function(a){var b;if(b=this.jsVars)"boolean"!==typeof a&&null!==a&&(a=!0),b.transparent=null===a?!1:!0===a?!0:!1}});f.extend(f.core,{_fallbackJSChartWhenNoFlash:function(){t.swfobject.hasFlashPlayerVersion(f.core.options.requiredFlashPlayerVersion)||f.renderer.setDefault("javascript")},_enableJSChartsForSelectedBrowsers:function(a){void 0!==a&&null!==a&&f.renderer.setDefault((new RegExp(a)).test(t.navigator.userAgent)?
"javascript":"flash")},_doNotLoadExternalScript:function(a){var c,d;for(c in a)d=c.toLowerCase(),b[d]&&(p[d]=Boolean(a[c]))},_preloadJSChartModule:function(){throw"NotImplemented()";}});f.renderer.register("javascript",m);a||d?f.renderer.setDefault("javascript"):t.swfobject&&t.swfobject.hasFlashPlayerVersion&&!t.swfobject.hasFlashPlayerVersion(f.core.options.requiredFlashPlayerVersion)&&(f.raiseWarning(f.core,"1204111846","run","JSRenderer","Switched to JavaScript as default rendering due to absence of required Flash Player."),
f.renderer.setDefault("javascript"))}]);
FusionCharts.register("module",["private","modules.renderer.js-lib",function(){var f=this,t=f.window,C=t.document,q=t.navigator,d=Boolean(t.SVGAngle||C.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")),a=/msie/i.test(q.userAgent)&&!t.opera,m=t.parseFloat,F=/\s+/g,c=/^#?/,l=/^rgba/i,b=/[#\s]/ig,p=/\{br\}/ig,H=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,s=Math.abs,e=Math.pow,h=Math.round,k=e(2,-24),v=Object.prototype.toString,K="ontouchstart"in C,q=K&&!(q.maxTouchPoints||
q.msMaxTouchPoints),J="http://www.fusioncharts.com?BS=FCHSEvalMark&utm_source=FCS_trial&pver="+t.escape(f.core.version),n=Math,N=n.max,B=n.min,U={pageX:0,pageY:0},r="createTouch"in C,ga=r&&!(t.navigator.maxTouchPoints||t.navigator.msMaxTouchPoints),X=f.hcLib||(f.hcLib={}),aa=function(a){var b=a.data,c=b.chart,d=c.paper,e=a.state,A=T(M(a.originalEvent)),u=A.target||A.originalTarget||A.srcElement||A.relatedTarget||A.fromElement,D=c.elements.resizeBox,k=b.layerX=A.pageX-b.chartPosLeft,h=b.layerY=A.pageY-
b.chartPosTop,f=k-b.ox,n=h-b.oy,l=b.bBox,m=b.ox,L=b.oy,p=b.zoomX,v=b.zoomY,l=b.canvasY,r=b.canvasX,da=b.canvasW,q=b.canvasH,F=b.canvasX2,sa=b.canvasY2,K=b.strokeWidth,f=b.attr;switch(e){case "start":a=ya(this);b.chartPosLeft=a.left;b.chartPosTop=a.top;k=A.pageX-b.chartPosLeft;h=A.pageY-b.chartPosTop;b.oy=h;b.ox=k;b.allowMove=!1;D||(D=c.elements.resizeBox=d.rect(c.layers.tracker).attr(f));k>r&&k<F&&h>l&&h<sa&&(b.allowMove=!0);u&&u.ishot&&(b.allowMove=!1);D.attr({x:0,y:0,width:0,height:0}).show();break;
case "end":l=D.getBBox();c={chart:c,selectionLeft:l.x,selectionTop:l.y,selectionHeight:l.height,selectionWidth:l.width,originalEvent:a.originalEvent};b.isDragged&&(b.selectionEnd&&b.selectionEnd(c),b.isDragged=0);D.hide();delete b.oy;delete b.ox;break;default:if(!b.allowMove)break;f=k-b.ox;n=h-b.oy;m=b.ox;L=b.oy;b.isDragged||(c={chart:c,selectionLeft:(p?B(m,m+f):r)+.5*K,selectionTop:(v?B(L,L+n):l)+.5*K,selectionHeight:0,selectionWidth:0,originalEvent:a.originalEvent},b.selectionStart&&b.selectionStart(c),
b.isDragged=1);f=-(m-B(m-(m-N(m+f,r)),F));n=-(L-B(L-(L-N(L+n,l)),sa));D.attr({x:(p?B(m,m+f):r)+.5*K,y:(v?B(L,L+n):l)+.5*K,width:p?s(f):da,height:v?s(n):q})}},W=function(a){var b=a.data;a=a.originalEvent;var c=a.target||a.originalTarget||a.srcElement||a.relatedTarget||a.fromElement,d=a.type,e=a.layerX,A=a.layerY;void 0===e&&(e=a.pageX-b.chartPosLeft,A=a.pageY-b.chartPosTop);"mousedown"===d&&(c.ishot=e>b.canvasX&&e<b.canvasX2&&A>b.canvasY&&A<b.canvasY2);"mouseup"===d&&setTimeout(function(){c.ishot=
!1},1)},n=function(){var a="innerWidth",b="innerHeight",c=C.documentElement||C.body,d=c;"innerWidth"in t?d=t:(a="clientWidth",b="clientHeight");return function(){return{width:d[a],height:d[b],scrollTop:c.scrollTop,scrollLeft:c.scrollLeft}}}(),ya=function(a,b){var c={left:a.offsetLeft||0,top:a.offsetTop||0};for(a=a.offsetParent;a;)c.left+=a.offsetLeft||0,c.top+=a.offsetTop||0,a===C.body||a===C.documentElement||b||(c.left-=a.scrollLeft,c.top-=a.scrollTop),a=a.offsetParent;return c},va=function(a){return a&&
a.replace(/\$/g,"$$$$")},za=function(a,b){return a||!1===a||0===a?a:b},ja=function(){var a,b,c;b=0;for(c=arguments.length;b<c;b+=1)if((a=arguments[b])||!1===a||0===a)return a;return""},O=function(){var a,b,c;b=0;for(c=arguments.length;b<c;b+=1)if((a=arguments[b])||!1===a||0===a)return a},na=function(a,b,c,d){return X.dem.listen(a,b,c,d)},ma=function(a,b,c){return X.dem.unlisten(a,b,c)},M=function(a){a=a.sourceEvent||a.originalEvent||a;return K&&a&&a.touches&&a.touches[0]||a||U},T=function(){var a;
return function(b){void 0===b.pageX&&(b.pageX=b.clientX+(a||(a=t.document.body||t.document.documentElement)).scrollLeft,b.pageY=b.clientY+a.scrollTop);return b}}(),u=function(a,b){b=T(M(b));var c=b.pageX,d=b.pageY,e=ya(a);return{chartX:c-e.left,chartY:d-e.top,pageX:c,pageY:d}},L=function(a){return a&&a.replace(/^#?([a-f0-9]+)/ig,"#$1")||"none"},da=function(){var a,b,c;b=0;for(c=arguments.length;b<c;b+=1)if(((a=arguments[b])||!1===a||0===a)&&!isNaN(a=Number(a)))return a},sa=function(a,b){a=a||!1===
a||0===a?Number(a):NaN;return isNaN(a)?null:b?s(a):a},ta=function(a){return"string"===typeof a?a.replace(p,"<br />"):""},S=function(a,b){for(var c=b.length,d=-1;c--;)if(a===b[c]){d=c;break}return d},$=function(){if(Array.isArray)return Array.isArray;var a=Object.prototype.toString,b=a.call([]);return function(c){return a.call(c)===b}}(),oa=function(a,b,c,d,e){var A,u,D,k;e?(d.push(a),e.push(b)):(d=[a],e=[b]);if(b instanceof Array)for(A=0;A<b.length;A+=1){try{u=a[A],D=b[A]}catch(h){continue}if("object"!==
typeof D)c&&void 0===D||(a[A]=D);else{if(null===u||"object"!==typeof u)u=a[A]=D instanceof Array?[]:{};k=S(D,e);-1!==k?u=a[A]=d[k]:oa(u,D,c,d,e)}}else for(A in b){try{u=a[A],D=b[A]}catch(f){continue}if(null!==D&&"object"===typeof D)if(k=v.call(D),"[object Object]"===k){if(null===u||"object"!==typeof u)u=a[A]={};k=S(D,e);-1!==k?u=a[A]=d[k]:oa(u,D,c,d,e)}else"[object Array]"===k?(null!==u&&u instanceof Array||(u=a[A]=[]),k=S(D,e),-1!==k?u=a[A]=d[k]:oa(u,D,c,d,e)):a[A]=D;else a[A]=D}return a},ia=function(a,
b,c){if("object"!==typeof a&&"object"!==typeof b)return null;if("object"!==typeof b||null===b)return a;"object"!==typeof a&&(a=b instanceof Array?[]:{});oa(a,b,c);return a},Ea=function(a,b){var c;if(b instanceof Array)for(c=b.length-1;0<=c;--c)"object"!==typeof b[c]?!0===b[c]&&a&&a.splice&&a.splice(c,1):v.call(b[c])===v.call(a[c])&&Ea(a[c],b[c]);else for(c in b)"object"!==typeof b[c]?!0===b[c]&&a&&a.splice&&a.splice(c,1):v.call(b[c])===v.call(a[c])&&Ea(a[c],b[c]);return a},fa=function(){var a=/^@window_/g;
return function(b,c){var d=b.replace(/\[[\'\"]/g,".").replace(/[\'\"]\]/g,"").replace(/\[/g,".@window_").replace(/\]/g,"").split("."),e=t,A,u;u="";var D,k,h;k=d.length;for(h=0;h<k;h+=1){D=d[h];A=e;if(D.match(a))u=t[D.replace(a,"")],e=e[u];else{if(void 0===e||null===e)throw(u||D).replace(a,"")+" is not defined";e=e[D]}u=D}!e||"function"!==typeof e.call&&e!==t.alert?setTimeout(function(){throw D.replace(a,"")+"() is not a function";},0):e===t.alert?e(c):e.call(A,c)}}(),La=function(){var a="FusionChartslinkEval"+
parseInt(+new Date,10);return function(b){try{t[a]=new Function(b),eval('window["'+a+'"]();')}catch(c){setTimeout(function(){throw c;},0)}d?delete t[a]:t[a]=null}}(),Ba=function(a,b){a=Number(a);a=isNaN(a)?100:a;void 0!==b&&(a=a*b/100);return a%101},ha=function(a,b,c){a=a.split(",");var d;void 0!==c&&(c=da(c.split(",")[0]));a[0]=Ba(a[0],c);for(d=1;d<b;d+=1)a[d]=a[0]*Ba(a[d],c)/100;return a.join(",")},Fa=function(a,c,d){var e=0,u=0,A=0;d&&d.match(l)&&(d=d.split(","),e=d[0].slice(d[0].indexOf("(")+
1),u=d[1],A=d[2],c||0===c||(c=parseInt(100*d[3].slice(0,d[3].indexOf(")")),10)));if(a)if(a.match(l))d=a.split(","),e=d[0].slice(d[0].indexOf("(")+1),u=d[1],A=d[2];else{a=a.replace(b,"").split(",")[0];switch(a.length){case 3:a=a.charAt(0)+a.charAt(0)+a.charAt(1)+a.charAt(1)+a.charAt(2)+a.charAt(2);break;case 6:break;default:a=(a+"FFFFFF").slice(0,6)}e=parseInt(a.slice(0,2),16);u=parseInt(a.slice(2,4),16);A=parseInt(a.slice(4,6),16)}c||0===c||(c=100);"string"===typeof c&&(c=c.split(",")[0]);c=parseInt(c,
10)/100;return"rgba("+e+","+u+","+A+","+c+")"},fb=function(){var a={};return function(b){var c=(b=b||this)&&b.FCcolor||b,d=c.color,e=c.ratio,A=c.angle,u=c.alpha,D=c.r,k=c.cx,h=c.cy,f=c.fx,n=c.fy,l=c.gradientUnits,L=c.x1,p=c.y1,v=c.x2,s=c.y2,B=1,r,da,M,q;if("string"===typeof b)return a[q="~"+b]||(a[q]=b.replace(/^#?([a-f0-9]{3,6})/ig,"#$1"));d=d||"";if(!d)return r;q=[d,u,e,A,D,k,h,l,f,n,L,v,p,s].join("_").replace(/[\(\)\s,\xb0#]/g,"_");if(a[q])return a[q];e=e&&(e+"").split(",")||[];u=(u||0===u)&&(u+
"").split(",")||[];if(d=d.split(","))if(r="",1===d.length)M=d[0].replace(/^#?([a-f0-9]{3,6})/ig,"$1"),r=u.length?"rgba("+Ia(M).join(",")+","+.01*m(u[0])+")":M.replace(/^#?([a-f0-9]{3,6})/ig,"#$1");else{b=0;for(da=d.length;b<da;b++)M=d[b].replace(/^#?([a-f0-9]{3,6})/ig,"$1"),isNaN(e[b])||(e[b]=m(e[b]),M+=":"+e[b],isNaN(e[b+1])||(e[b+1]=m(e[b+1])+e[b])),isNaN(u[b])||""===u[b]||(B=.01*u[b]),d[b]="rgba("+Ia(M).join(",")+","+B+")",isNaN(e[b])||(d[b]=d[b]+":"+e[b]);r+=d.join("-");if(void 0!==D||void 0!==
f||void 0!==k||c.radialGradient)r="xr("+[f,n,D,k,h,l].join()+")"+r;else{r="-"+r;if(void 0!==L||void 0!==p||void 0!==v||void 0!==s)r="("+[L,p,v,s,l].join()+")"+r;void 0===A&&(A=0);r=360-m(A)%360+r}}return a[q]=r}}(),Xa=function(){return function(){return""}}(),xa=function(a){return a.replace(b,"").replace(c,"#")},gb=function(a,c){c=(0>c||100<c?100:c)/100;a=a.replace(b,"");var d=parseInt(a,16),e=Math.floor(d/65536),u=Math.floor((d-65536*e)/256);return("000000"+(e*c<<16|u*c<<8|(d-65536*e-256*u)*c).toString(16)).slice(-6)},
Sa=function(a,c){c=(0>c||100<c?100:c)/100;a=a.replace(b,"");var d=parseInt(a,16),e=Math.floor(d/65536),u=Math.floor((d-65536*e)/256);return("000000"+(256-(256-e)*c<<16|256-(256-u)*c<<8|256-(256-(d-65536*e-256*u))*c).toString(16)).slice(-6)},Ia=function(a){a=parseInt(a,16);var b=Math.floor(a/65536),c=Math.floor((a-65536*b)/256);return[b,c,Math.floor(a-65536*b-256*c)]},Ra=function(a,b){if("object"!==typeof a)return"";if(a.fontSize||a["font-size"])!a.fontSize&&a["font-size"]&&(a.fontSize=a["font-size"],
delete a["font-size"]),a.lineHeight=(parseFloat(a.fontSize)||b||10)*X.lineHeightFactor+"px",delete a["line-height"];!a.lineHeight&&a["line-height"]&&(a.lineHeight=a["line-height"],delete a["line-height"]);return a.lineHeight},Da=function(a,b,c,d,e){var A=ja(a.labelbordercolor,b.bordercolor,c.labelbordercolor,""),u=O(a.labelbgcolor,b.bgcolor,c.labelbgcolor),D=da(a.labelborderthickness,b.borderthickness,c.labelborderthickness,1);e=da(c.usedataplotcolorforlabels,0)?e||d.color:d.color;A=A?Fa(A,da(a.labelborderalpha,
b.borderalpha,c.labelborderalpha,a.labelalpha,b.alpha,c.labelalpha,100)):"";a={fontFamily:O(a.labelfont,b.font,c.labelfont,d.fontFamily),fontSize:O(a.labelfontsize,b.fontsize,c.labelfontsize,parseInt(d.fontSize,10))+"px",color:Fa(O(a.labelfontcolor,b.fontcolor,c.labelfontcolor,e),da(a.labelfontalpha,b.fontalpha,c.labelfontalpha,a.labelalpha,b.alpha,c.labelalpha,100)),fontWeight:da(a.labelfontbold,b.fontbold,c.labelfontbold)?"bold":"normal",fontStyle:da(a.labelfontitalic,b.fontitalic,c.labelfontitalic)?
"italic":"normal",border:A||u?D+"px solid":"",borderColor:A,borderThickness:D,borderPadding:da(a.labelborderpadding,b.borderpadding,c.labelborderpadding,2),borderRadius:da(a.labelborderradius,b.borderradius,c.labelborderradius,0),backgroundColor:u?Fa(u,da(a.labelbgalpha,b.bgalpha,c.labelbgalpha,a.labelalpha,b.alpha,c.labelalpha,100)):"",borderDash:da(a.labelborderdashed,b.borderdashed,c.labelborderdashed,0)?Eb(da(a.labelborderdashlen,b.borderdashlen,c.labelborderdashlen,4),da(a.labelborderdashgap,
b.borderdashgap,c.labelborderdashgap,2),D):"none"};a.lineHeight=Ra(a);return a},pb=function(){var a={top:{align:"center",verticalAlign:"top",textAlign:"center"},right:{align:"right",verticalAlign:"middle",textAlign:"left"},bottom:{align:"center",verticalAlign:"bottom",textAlign:"center"},left:{align:"left",verticalAlign:"middle",textAlign:"right"}},b=/([^\,^\s]+)\)$/g,c=function(a,b){var c;/^(bar|bar3d)$/.test(a)&&(this.isBar=!0,this.yPos="bottom",this.yOppPos="top",this.xPos="left",this.xOppPos=
"right");c=parseInt(b.labelstep,10);this.labelStep=1<c?c:1;this.showLabel=da(b.showlabels,b.shownames,1);this.is3D=/3d$/.test(a)};c.prototype={isBar:!1,yPos:"left",yOppPos:"right",xPos:"bottom",xOppPos:"top",addAxisGridLine:function(c,d,A,e,u,k,h,f){var n=""===A?!1:!0,l=0<e||0<k.match(b)[1]?!0:!1,m;if(n||l)l||(k="rgba(0,0,0,0)",e=.1),m={isGrid:!0,width:e,dashStyle:u,color:k,value:d,zIndex:void 0===h?2:h},n&&(d=c.opposite?f?this.xOppPos:this.yOppPos:f?this.xPos:this.yPos,d=a[d],m.label={text:A,style:c.labels.style,
textAlign:d.textAlign,align:d.align,verticalAlign:d.verticalAlign,rotation:0,x:0,y:0}),c.plotLines.push(m);return m},addAxisAltGrid:function(a,b){if(!this.is3D){var c=da(a._lastValue,a.min),d=O(a._altGrid,!1);d&&a.plotBands.push({isGrid:!0,color:a.alternateGridColor,to:b,from:c,zIndex:1});a._lastValue=b;a._altGrid=!d}},addXaxisCat:function(b,c,d,e,u,k,h,f){var n=a[b.opposite?this.xOppPos:this.xPos];c={isGrid:!0,isDataLabel:!0,width:.1,color:"rgba(0,0,0,0)",value:c,label:{text:e,link:O(u.labellink,
k.link,h.labellink),style:Da(u,k,h,b.labels.style,f),textAlign:n.textAlign,align:n.align,verticalAlign:n.verticalAlign,rotation:0,x:0,y:0}};0!==d%this.labelStep&&(c.stepped=!0,c.label.style=b.steppedLabels.style);b.plotLines.push(c)},addVline:function(a,b,c,d){d=d._FCconf;var e=d.isBar,u=d.divlineStyle,k=ta(b.label),h=Boolean(da(b.showlabelborder,d.showVLineLabelBorder,1)),f=Boolean(da(b.showlabelbackground,1)),n=O(b.labelhalign,e?"left":"center"),l=O(b.labelvalign,e?"middle":"bottom").toLowerCase(),
m=da(b.labelposition,0),L=da(b.lineposition,.5),p=da(b.showvlines,d.showVLines,1),v=da(b.alpha,d.vLineAlpha,80),s=O(b.color,d.vLineColor).replace(/^#?/,"#"),r=f?O(b.labelbgcolor,d.vLineLabelBgColor,"333333").replace(/^#?/,"#"):"",B=O(b.labelcolor,d.vLineLabelColor,b.color,d.vLineColor).replace(/^#?/,"#"),M=da(b.thickness,d.vLineThickness,1),q=.5*M,F=Boolean(Number(O(b.dashed,0))),sa=da(b.dashlen,5),K=da(b.dashgap,2),N=d.smartLabel,t=parseInt(u.fontSize,10)+2,T=0,S=da(b.rotatelabel,d.rotateVLineLabels)?
270:0,L=0>L||1<L?.5:L,m=0>m||1<m?0:m;N.setStyle(u);N=N.getOriSize(k);s=Fa(s,p?v:"0");if(e){switch(l){case "top":t-=N.height+q+2;break;case "middle":t-=.5*N.height+1;break;default:t+=q}b.labelhalign||(T-=N.width*m)}else{switch(l){case "top":t=.5*-N.height+1;break;case "middle":t=0;break;default:t=.5*N.height}switch(n){case "left":T+=M;break;case "right":T-=M+1}}a.plotLines.push({isVline:!0,color:s,width:M,value:c-1+L,zIndex:da(b.showontop,d.showVLinesOnTop)?5:3,dashStyle:F?Eb(sa,K,M):"none",label:{text:k,
align:e?"left":"center",offsetScale:m,rotation:S,y:t,x:T,textAlign:n,backgroundColor:r,borderWidth:p&&h?1:0,borderType:p&&h?"solid":"",borderColor:p&&h?B:"",backgroundOpacity:p&&f?O(b.labelbgalpha,d.vLineLabelBgAlpha)/100:0,style:{color:p?B:s,fontSize:u.fontSize,fontFamily:u.fontFamily,lineHeight:u.lineHeight,backgroundColor:r}}})}};return c.prototype.constructor=c}(),Lb=function(){var a=function(a,c,d,e,u){a=Math.abs(c-a);c=a/(d+1);b(a,d,e)||(u&&Number(c)/Number(e)<(1<e?2:.5)&&(e/=10),c=(Math.floor(c/
e)+1)*e,a=c*(d+1));return a},b=function(a,b,d){return c(a/(b+1))>c(d)?!1:!0},c=function(a){a=Math.abs(a);a=String(a);var b=0,c=a.indexOf(".");-1!=c&&(b=a.length-c-1);return b};return function(c,d,e,u,D,h,f,n){var l,m,L,p,v,s,r,B=0;c=!0===isNaN(c)||void 0===c?.1:c;d=!0===isNaN(d)||void 0===d?0:d;c===d&&0===c&&(c=.1);D=void 0===typeof D?!0:D;h=void 0===typeof h?!0:h;l=Math.floor(Math.log(Math.abs(c))/Math.LN10);m=Math.floor(Math.log(Math.abs(d))/Math.LN10);m=Math.max(m,l);l=Math.pow(10,m);2>Math.abs(c)/
l&&2>Math.abs(d)/l&&(m--,l=Math.pow(10,m));m=Math.floor(Math.log(c-d)/Math.LN10);L=Math.pow(10,m);0<c-d&&10<=l/L&&(l=L);m=(Math.floor(c/l)+1)*l;0>d?L=-1*(Math.floor(Math.abs(d/l))+1)*l:h?L=0:(L=Math.floor(Math.abs(d/l)-1)*l,L=0>L?0:L);D&&0>=c&&(m=0);D=e||0===e?!0:!1;h=u||0===u?!0:!1;c=!1===D||!0===D&&Number(e)<c&&c-Number(e)>k?m:Number(e);d=!1===h||!0===h&&Number(u)>d&&Number(u)-d>k?L:Number(u);u=Math.abs(c-d);if(!1===h&&!1===D&&n)if(0<c&&0>d)for(e=!1,D=10<l?l/10:l,n=a(d,c,f,D,!1),h=n-(f+1)*D;!1===
e;){if(h+=(f+1)*D,b(h,f,D))if(n=h-u,m=h/(f+1),p=Math.min(Math.abs(d),c),L=p==Math.abs(d)?-1:1,0===f)e=!0;else for(s=1;s<=Math.floor((f+1)/2);s++)v=m*s,!(v-p>n)&&v>p&&(r=h-v,r/m==Math.floor(r/m)&&v/m==Math.floor(v/m)&&(u=h,c=-1==L?r:v,d=-1==L?-v:-r,e=!0))}else e=a(d,c,f,l,!0),n=e-u,u=e,0<c?c+=n:d-=n;else n&&(e=function(a,c,d){for(var e=0,A=1,u;;){u=a+e*A;u=0===u?1:u;if(b(c,u,d))break;e=-1==A||e>a?++e:e;if(25<e){u=0;break}A=e<=a?-1*A:1}return u},0<f&&(n=e(f,u,l),0===n&&(n=e(f,u+1,l),B=1),f=n));return{Max:c,
Min:d,Range:u,interval:l,divGap:(c-d+B)/(f+1)}}}(),Ub=function(){var a=function(a,b,c){var d=c.jsVars&&c.jsVars.smartLabel,e=a.offsetWidth,u=a.offsetHeight,D=this.chart;a=this.title;var k=c._chartMessageImageStyle,h=!1,f;void 0!==b&&(b=b.replace(/^\s+/,"").replace(/\s+$/,""),/^i\s*[\-]\s*/i.test(b)?(h=!0,f=b.replace(/^i\s*[\-]\s*/i,"")):f=b.replace(/^\\/,""));a.y=u/2;a.x=e/2;D.bgSWF=a.text=void 0;b=f;h?(D.bgSWF=b,D.bgImageHAlign=k.imageHAlign,D.bgImageVAlign=k.imageVAlign,D.bgImageScale=k.imageScale,
D.bgSWFAlpha=k.imageAlpha):void 0!==b&&(d?(Ra(a.style),d.setStyle(a.style),d=d.getSmartText(ta(b),e,u),a.text=d.text):a.text=ta(b),a.verticalAlign="middle");a.style=c._chartMessageStyle;delete c._chartMessageImageStyle;delete c._chartMessageStyle};a.prototype={chart:{events:{},margin:[0,0,0,0],backgroundColor:{FCcolor:{alpha:0}}},credits:{href:J,text:"FusionCharts XT Trial",enabled:!1},legend:{enabled:!1},title:{text:"",style:{fontFamily:"Verdana,sans",fontSize:"10px",color:"#666666"}},plotOptions:{series:{}},
series:[{}],exporting:{enabled:!1},nativeMessage:!0};return a.prototype.constructor=a}(),Mb={"true":{"true":{"true":"center","false":"center"},"false":{"true":"center","false":"center"}},"false":{"true":{"true":"right","false":"left"},"false":{"true":"left","false":"right"}}},vb=function(){return function(a,b,c,d,e,A,u){var D,k=c.trendStyle,h,f,n,l,m,L,p,v,s,r,B,M,q,F=A?"xAxis":"dataLabels";if(A?c.showVLines:c.showTrendlines)for(D=0,f=a.length;D<f;D+=1)if((q=a[D])&&q.line)for(h=0,n=q.line.length;h<
n;h+=1)l=q.line[h],r=c.numberFormatter.getCleanValue(O(l.startvalue,l.value,0)),B=c.numberFormatter.getCleanValue(O(l.endvalue,O(l.startvalue,l.value,0))),A?v=b:d&&l.parentyaxis&&/^s$/i.test(l.parentyaxis)?(v=b[1],M=1):v=b[0],L=v.max,p=v.min,m=!1,L>=r&&L>=B&&p<=r&&p<=B&&(d&&l.parentyaxis&&/^s$/i.test(l.parentyaxis)?m="1"!==O(l.valueonleft,c.trendlineValuesOnOpp):d||(m="1"===O(l.valueonright,c.trendlineValuesOnOpp)),L=Boolean(da(l.istrendzone,A?1:0)),(p=(A?c.showVLineLabels:c.showTrendlineLabels)?
ta(O(l.displayvalue,c.numberFormatter[F](m?B:r,M))):"")?(s=r<B,m={text:p,textAlign:e?"center":m?"left":"right",align:e?Mb[L][!u][s]:m?"right":"left",verticalAlign:e?"bottom":"middle",rotation:0,x:0,y:0,style:k},p=O(l.color,c.trendlineColor),l.alwaysVisible=L,p&&(m.style=ia({},k),m.style.color=Fa(p,da(l.alpha,100)))):m=void 0,p=za(ta(O(l.tooltext,q.tooltext,c.trendLineToolText))),p=tb(p,[7,15,16,17,18,19],{startValue:r,startDataValue:c.numberFormatter[F](r,M),endValue:B,endDataValue:c.numberFormatter[F](B,
M),axisName:v.title&&v.title.text},l),s=da(l.thickness,c.trendlineThickness,1),L?v.plotBands.push({isTrend:!0,color:Fa(O(l.color,c.trendlineColor),O(l.alpha,c.trendlineAlpha,40)),from:r,to:B,label:m,zIndex:c.is3d||"1"!==O(l.showontop,c.showTrendlinesOnTop)?3:5,tooltext:p,alwaysVisible:l.alwaysVisible}):v.plotLines.push({isTrend:!0,color:Fa(O(l.color,c.trendlineColor,c.trendlineColor),O(l.alpha,c.trendlineAlpha,99)),value:r,to:B,width:s,dashStyle:"1"==O(l.dashed,c.trendlinesAreDashed)?Eb(da(l.dashlen,
c.trendlinesDashLen),da(l.dashgap,c.trendlinesDashGap),s):"none",label:m,zIndex:c.is3d||"1"!==O(l.showontop,c.showTrendlinesOnTop)?3:5,tooltext:p}))}}(),Eb=function(a,b,c,d){return d||void 0===d?[a,b]:"none"},rb=function(){},Ib=function(a,b,c){var d,e=Ib[a];e||(e=function(){},e.prototype=c instanceof rb?c:new rb,e.prototype.constructor=e,e=Ib[a]=new e);c&&(e.base=c);e.name=a;for(d in b)switch(typeof b[d]){case "object":if(b[d]instanceof rb){e[d]=b[d][d];break}default:e[d]=b[d];break;case "undefined":delete e[d]}return this instanceof
Ib?(a=function(){},a.prototype=e,a.prototype.constructor=a,new a):e},tb=function(){var a=[{regex:/((^|[^\\])((\\)\\)*\$cleanvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cleanvalue))/ig,argIndex:2,argKey:"cleanvalue"},{regex:/((^|[^\\])((\\)\\)*\$datavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$datavalue))/ig,argIndex:2,argKey:"formattedValue"},{regex:/((^|[^\\])((\\)\\)*\$value)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$value))/ig,argIndex:3,argKey:"value"},{regex:/((^|[^\\])((\\)\\)*\$label)/ig,
escapeRegex:/((^|[^\\])((\\)\\)*\\(\$label))/ig,argIndex:2,argKey:"label"},{regex:/((^|[^\\])((\\)\\)*\$seriesname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$seriesname))/ig,argIndex:5,argKey:"seriesname"},{regex:/((^|[^\\])((\\)\\)*\$yaxisname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$yaxisname))/ig,argIndex:2,argKey:"yaxisName"},{regex:/((^|[^\\])((\\)\\)*\$xaxisname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xaxisname))/ig,argIndex:2,argKey:"xaxisName"},{regex:/((^|[^\\])((\\)\\)*\$displayvalue)/ig,
escapeRegex:/((^|[^\\])((\\)\\)*\\(\$displayvalue))/ig,argIndex:3,argKey:"displayvalue"},{regex:/((^|[^\\])((\\)\\)*\$xdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xdatavalue))/ig,argIndex:2,argKey:"xDataValue"},{regex:/((^|[^\\])((\\)\\)*\$ydatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$ydatavalue))/ig,argIndex:2,argKey:"yDataValue"},{regex:/((^|[^\\])((\\)\\)*\$xvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xvalue))/ig,argIndex:3,argKey:"x"},{regex:/((^|[^\\])((\\)\\)*\$yvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$yvalue))/ig,
argIndex:3,argKey:"y"},{regex:/((^|[^\\])((\\)\\)*\$zvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$zvalue))/ig,argIndex:3,argKey:"z"},{regex:/((^|[^\\])((\\)\\)*\$name)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$name))/ig,argIndex:3,argKey:"name"},{regex:/((^|[^\\])((\\)\\)*\$percentValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentValue))/ig,argIndex:2,argKey:"percentValue"},{regex:/((^|[^\\])((\\)\\)*\$startValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$startValue))/ig,argIndex:2,argKey:"startValue"},
{regex:/((^|[^\\])((\\)\\)*\$startDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$startDataValue))/ig,argIndex:2,argKey:"startDataValue"},{regex:/((^|[^\\])((\\)\\)*\$endValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$endValue))/ig,argIndex:2,argKey:"endValue"},{regex:/((^|[^\\])((\\)\\)*\$endDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$endDataValue))/ig,argIndex:2,argKey:"endDataValue"},{regex:/((^|[^\\])((\\)\\)*\$axisName)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$axisName))/ig,argIndex:2,
argKey:"axisName"},{regex:/((^|[^\\])((\\)\\)*\$cumulativevalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativevalue))/ig,argIndex:2,argKey:"cumulativeValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativedatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativedatavalue))/ig,argIndex:2,argKey:"cumulativeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativePercentValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativePercentValue))/ig,argIndex:2,argKey:"cumulativePercentValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativepercentdatavalue)/ig,
escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativepercentdatavalue))/ig,argIndex:2,argKey:"cumulativePercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$sum)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$sum))/ig,argIndex:2,argKey:"sum"},{regex:/((^|[^\\])((\\)\\)*\$unformattedsum)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedsum))/ig,argIndex:2,argKey:"unformattedSum"},{regex:/((^|[^\\])((\\)\\)*\$targetvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$targetvalue))/ig,argIndex:2,argKey:"targetValue"},{regex:/((^|[^\\])((\\)\\)*\$targetdatavalue)/ig,
escapeRegex:/((^|[^\\])((\\)\\)*\\(\$targetdatavalue))/ig,argIndex:2,argKey:"targetDataValue"},{regex:/((^|[^\\])((\\)\\)*\$processname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$processname))/ig,argIndex:2,argKey:"processName"},{regex:/((^|[^\\])((\\)\\)*\$start)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$start))/ig,argIndex:2,argKey:"start"},{regex:/((^|[^\\])((\\)\\)*\$end)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$end))/ig,argIndex:2,argKey:"end"},{regex:/((^|[^\\])((\\)\\)*\$percentcomplete)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentcomplete))/ig,
argIndex:2,argKey:"percentComplete"},{regex:/((^|[^\\])((\\)\\)*\$taskpercentcomplete)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskpercentcomplete))/ig,argIndex:2,argKey:"taskPercentComplete"},{regex:/((^|[^\\])((\\)\\)*\$taskstartdate)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskstartdate))/ig,argIndex:2,argKey:"taskStartDate"},{regex:/((^|[^\\])((\\)\\)*\$taskenddate)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskenddate))/ig,argIndex:2,argKey:"taskEndDate"},{regex:/((^|[^\\])((\\)\\)*\$tasklabel)/ig,
escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tasklabel))/ig,argIndex:2,argKey:"taskLabel"},{regex:/((^|[^\\])((\\)\\)*\$date)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$date))/ig,argIndex:2,argKey:"date"},{regex:/((^|[^\\])((\\)\\)*\$percentofprevvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentofprevvalue))/ig,argIndex:2,argKey:"percentOfPrevValue"},{regex:/((^|[^\\])((\\)\\)*\$sname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$sname))/ig,argIndex:2,argKey:"sName"},{regex:/((^|[^\\])((\\)\\)*\$lname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lname))/ig,
argIndex:2,argKey:"lName"},{regex:/((^|[^\\])((\\)\\)*\$fromid)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromid))/ig,argIndex:2,argKey:"fromId"},{regex:/((^|[^\\])((\\)\\)*\$fromlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromlabel))/ig,argIndex:2,argKey:"fromLabel"},{regex:/((^|[^\\])((\\)\\)*\$toid)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toid))/ig,argIndex:2,argKey:"toId"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/ig,argIndex:2,argKey:"toLabel"},
{regex:/((^|[^\\])((\\)\\)*\$fromxvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromxvalue))/ig,argIndex:2,argKey:"fromXValue"},{regex:/((^|[^\\])((\\)\\)*\$fromyvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromyvalue))/ig,argIndex:2,argKey:"fromYValue"},{regex:/((^|[^\\])((\\)\\)*\$fromxdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromxdatavalue))/ig,argIndex:2,argKey:"fromXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromydatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromydatavalue))/ig,
argIndex:2,argKey:"fromYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromlabel))/ig,argIndex:2,argKey:"fromLabel"},{regex:/((^|[^\\])((\\)\\)*\$toxvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toxvalue))/ig,argIndex:2,argKey:"toXValue"},{regex:/((^|[^\\])((\\)\\)*\$toyvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toyvalue))/ig,argIndex:2,argKey:"toYValue"},{regex:/((^|[^\\])((\\)\\)*\$toxdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toxdatavalue))/ig,
argIndex:2,argKey:"toXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$toydatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toydatavalue))/ig,argIndex:2,argKey:"toYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/ig,argIndex:2,argKey:"toLabel"},{regex:/((^|[^\\])((\\)\\)*\$openvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$openvalue))/ig,argIndex:2,argKey:"openValue"},{regex:/((^|[^\\])((\\)\\)*\$closevalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$closevalue))/ig,
argIndex:2,argKey:"closeValue"},{regex:/((^|[^\\])((\\)\\)*\$highvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$highvalue))/ig,argIndex:2,argKey:"highValue"},{regex:/((^|[^\\])((\\)\\)*\$lowvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lowvalue))/ig,argIndex:2,argKey:"lowValue"},{regex:/((^|[^\\])((\\)\\)*\$opendatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$opendatavalue))/ig,argIndex:2,argKey:"openDataValue"},{regex:/((^|[^\\])((\\)\\)*\$closedatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$closedatavalue))/ig,
argIndex:2,argKey:"closeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$highdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$highdatavalue))/ig,argIndex:2,argKey:"highDataValue"},{regex:/((^|[^\\])((\\)\\)*\$lowdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lowdatavalue))/ig,argIndex:2,argKey:"lowDataValue"},{regex:/((^|[^\\])((\\)\\)*\$maxvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$maxvalue))/ig,argIndex:2,argKey:"maxValue"},{regex:/((^|[^\\])((\\)\\)*\$maxdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$maxdatavalue))/ig,
argIndex:2,argKey:"maxDataValue"},{regex:/((^|[^\\])((\\)\\)*\$minvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$minvalue))/ig,argIndex:2,argKey:"minValue"},{regex:/((^|[^\\])((\\)\\)*\$mindatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$mindatavalue))/ig,argIndex:2,argKey:"minDataValue"},{regex:/((^|[^\\])((\\)\\)*\$q1)/ig,argIndex:2,argKey:"Q1"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQ1)/ig,argIndex:2,argKey:"unformattedQ1"},{regex:/((^|[^\\])((\\)\\)*\$q3)/ig,argIndex:2,argKey:"Q3"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQ3)/ig,
argIndex:2,argKey:"unformattedQ3"},{regex:/((^|[^\\])((\\)\\)*\$median)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$median))/ig,argIndex:2,argKey:"median"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMedian)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMedian))/ig,argIndex:2,argKey:"unformattedMedian"},{regex:/((^|[^\\])((\\)\\)*\$SD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$SD))/ig,argIndex:2,argKey:"SD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedsd)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedsd))/ig,
argIndex:2,argKey:"unformattedsd"},{regex:/((^|[^\\])((\\)\\)*\$QD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$QD))/ig,argIndex:2,argKey:"QD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedQD))/ig,argIndex:2,argKey:"unformattedQD"},{regex:/((^|[^\\])((\\)\\)*\$MD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$MD))/ig,argIndex:2,argKey:"MD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMD))/ig,argIndex:2,argKey:"unformattedMD"},
{regex:/((^|[^\\])((\\)\\)*\$mean)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$mean))/ig,argIndex:2,argKey:"mean"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMean)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMean))/ig,argIndex:2,argKey:"unformattedMean"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMean)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMean))/ig,argIndex:2,argKey:"unformattedMean"},{regex:/((^|[^\\])((\\)\\)*\$volumeValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$volumeValue))/ig,argIndex:2,
argKey:"volumeValue"},{regex:/((^|[^\\])((\\)\\)*\$volumeDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$volumeDataValue))/ig,argIndex:2,argKey:"volumeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromXValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromXValue))/ig,argIndex:2,argKey:"fromXValue"},{regex:/((^|[^\\])((\\)\\)*\$fromYValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromYValue))/ig,argIndex:2,argKey:"fromYValue"},{regex:/((^|[^\\])((\\)\\)*\$fromXDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromXDataValue))/ig,
argIndex:2,argKey:"fromXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromYDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromYDataValue))/ig,argIndex:2,argKey:"fromYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromLabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromLabel))/ig,argIndex:2,argKey:"fromLabel"},{regex:/((^|[^\\])((\\)\\)*\$toXValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toXValue))/ig,argIndex:2,argKey:"toXValue"},{regex:/((^|[^\\])((\\)\\)*\$toYValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toYValue))/ig,
argIndex:2,argKey:"toYValue"},{regex:/((^|[^\\])((\\)\\)*\$toXDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toXDataValue))/ig,argIndex:2,argKey:"toXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$toYDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toYDataValue))/ig,argIndex:2,argKey:"toYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/ig,argIndex:2,argKey:"toLabel"},{regex:/((^|[^\\])((\\)\\)*\$tlLabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tlLabel))/ig,
argIndex:5,argKey:"tlLabel"},{regex:/((^|[^\\])((\\)\\)*\$trlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$trlabel))/ig,argIndex:5,argKey:"trLabel"},{regex:/((^|[^\\])((\\)\\)*\$bllabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$bllabel))/ig,argIndex:5,argKey:"blLabel"},{regex:/((^|[^\\])((\\)\\)*\$brlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$brlabel))/ig,argIndex:5,argKey:"brLabel"},{regex:/((^|[^\\])((\\)\\)*\$rowlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$rowlabel))/ig,argIndex:5,argKey:"rowLabel"},
{regex:/((^|[^\\])((\\)\\)*\$columnlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$columnlabel))/ig,argIndex:5,argKey:"columnLabel"},{regex:/((^|[^\\])((\\)\\)*\$errorvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorvalue))/ig,argIndex:2,argKey:"errorValue"},{regex:/((^|[^\\])((\\)\\)*\$errordatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errordatavalue))/ig,argIndex:2,argKey:"errorDataValue"},{regex:/((^|[^\\])((\\)\\)*\$errorpercentvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorpercentvalue))/ig,
argIndex:2,argKey:"errorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$errorpercentdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorpercentdatavalue))/ig,argIndex:2,argKey:"errorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorValue))/ig,argIndex:2,argKey:"horizontalErrorValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorDataValue))/ig,argIndex:2,argKey:"horizontalErrorDataValue"},
{regex:/((^|[^\\])((\\)\\)*\$verticalErrorValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorValue))/ig,argIndex:2,argKey:"verticalErrorValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorDataValue))/ig,argIndex:2,argKey:"verticalErrorDataValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorPercent)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorPercentValue))/ig,argIndex:2,argKey:"horizontalErrorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorPercentDataValue)/ig,
escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorPercentDataValue))/ig,argIndex:2,argKey:"horizontalErrorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorPercent)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorPercentValue))/ig,argIndex:2,argKey:"verticalErrorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorPercentDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorPercentDataValue))/ig,argIndex:2,argKey:"verticalErrorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$xaxispercentvalue)/ig,
escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xaxispercentvalue))/ig,argIndex:2,argKey:"xAxisPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$percentdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentdatavalue))/ig,argIndex:2,argKey:"percentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$trType)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$trType))/ig,argIndex:4,argKey:"trtype"},{regex:/((^|[^\\])((\\)\\)*\$tlType)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tlType))/ig,argIndex:4,argKey:"tltype"},{regex:/((^|[^\\])((\\)\\)*\$brType)/ig,
escapeRegex:/((^|[^\\])((\\)\\)*\\(\$brType))/ig,argIndex:4,argKey:"brtype"},{regex:/((^|[^\\])((\\)\\)*\$blType)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$blType))/ig,argIndex:4,argKey:"bltype"},{regex:/((^|[^\\])((\\)\\)*\$colorRangeLabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$colorRangeLabel))/ig,argIndex:5,argKey:"colorRangeLabel"},{regex:/((^|[^\\])((\\)\\)*\$zdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$zdatavalue))/ig,argIndex:2,argKey:"zDataValue"}],b=[],c,d=a.length;for(c=0;c<d;c+=
1)b.push(c);return function(){var c=arguments[0],d=arguments[1],e,u,k,h,f;$(d)||(d=b);if(c)for(f=d.length,h=0;h<f;h+=1)if(k=a[d[h]])e=va(za((u=arguments[k.argIndex])&&u[k.argKey],"")+""),c=c.replace(k.regex,"$2$4"+(k.parsingMethod?k.parsingMethod(e):e)),c=c.replace(k.escapeRegex,"$2$4$5");return c}}();f.core._setLineHeightFactor=function(a){!(a=m(a))||0>a||(X.lineHeightFactor=a)};f.extend(X,{BLANKSTRINGPLACEHOLDER:"#BLANK#",BLANKSTRING:"",COLOR_BLACK:"000000",COLOR_GLASS:"rgba(255, 255, 255, 0.3)",
COLOR_WHITE:"FFFFFF",COLOR_TRANSPARENT:"rgba(0,0,0,0)",HASHSTRING:"#",BREAKSTRING:"<br />",STRINGSTRING:"string",OBJECTSTRING:"object",COMMASTRING:",",ZEROSTRING:"0",SAMPLESTRING:"Ay0",TESTSTR:"Ag",ONESTRING:"1",DECIMALSTRING:".",STRINGUNDEFINED:"undefined",POSITION_TOP:"top",POSITION_RIGHT:"right",POSITION_BOTTOM:"bottom",POSITION_LEFT:"left",POSITION_CENTER:"center",POSITION_MIDDLE:"middle",POSITION_START:"start",POSITION_END:"end",FC_CONFIG_STRING:"_FCconf",SHAPE_RECT:"rect",HUNDREDSTRING:"100",
PXSTRING:"px",COMMASPACE:", ",TEXTANCHOR:"text-anchor",TOUCH_THRESHOLD_PIXELS:15,CLICK_THRESHOLD_PIXELS:5,regex:{stripWhitespace:F,dropHash:c,startsRGBA:l,cleanColorCode:b,breakPlaceholder:p,hexcode:/^#?[0-9a-f]{6}/i},fireEvent:function(a,b,c,d){X.dem.fire(a,b,c,d)},plotEventHandler:function(b,c,d){c=c||{};var e=c.type,k=u(b.container,c),k=ia(k,this.data("eventArgs")),A=b.logic.fireGroupEvent,h=this.data("groupId"),D=function(b,d){c.FusionChartsPreventEvent=!0;a&&d.toolText&&X.toolTip&&X.toolTip.preventTooltip()};
"index"in k&&!("dataIndex"in k)&&(k.dataIndex=k.index);"value"in k&&!("dataValue"in k)&&(k.dataValue=k.value);d=O(d,"dataplotclick").toLowerCase();"dataplotrollover"===d?(c.FusionChartsPreventEvent=!1,A?f.raiseEventGroup(h,d,k,b.fusionCharts,void 0,void 0,D):f.raiseEvent(d,k,b.logic.chartInstance,void 0,void 0,D)):A&&"dataplotclick"!==d?f.raiseEventGroup(h,d,k,b.fusionCharts):f.raiseEvent(d,k,b.logic.chartInstance);if(("click"===e||"mouseup"===e||"touchend"===e)&&/click/i.test(d)){if(r&&!ga){d=(new Date).getTime();
if(this.lastClickTimeStamp&&400>d-this.lastClickTimeStamp){c&&(c.originalEvent||c).preventDefault();return}this.lastClickTimeStamp=d}b.linkClickFN.call({link:k.link},b)}},getEventCoordinate:T,getMouseCoordinate:u,addEvent:na,removeEvent:ma,getTouchEvent:M,extend2:ia,deltend:function(a,b){if("object"!==typeof a||"object"!==typeof b)return null;Ea(a,b);return a},imprint:function(a,b,c){var d;if("object"!==typeof a||null===a)return b;if("object"!==typeof b||null===b)return a;for(d in b)if(void 0===a[d]||
!c&&null===a[d])a[d]=b[d];return a},pluck:O,pluckNumber:da,getFirstDefinedValue:function(){var a,b,c;b=0;for(c=arguments.length;b<c;b+=1)if((a=arguments[b])||!1===a||0===a||""==a)return a},createElement:function(a,b,c){a=C.createElement(a);for(var d in b)a.setAttribute(d,b[d]);c&&c.appendChild&&c.appendChild(a);return a},hashify:L,pluckFontSize:function(){var a,b,c;b=0;for(c=arguments.length;b<c;b+=1)if(((a=arguments[b])||!1===a||0===a)&&!isNaN(a=Number(a)))return 1>a?1:a;return 1},getValidValue:za,
getPosition:ya,getViewPortDimension:n,bindSelectionEvent:function(a,b){b=b||{};var c=a.options.chart,d=a.container,e=c.zoomType,u=ia({},b.attr||{}),k=u["stroke-width"]=da(u.strokeWidth,u["stroke-width"],1),D=ya(d),h=a.eventListeners||(a.eventListeners=[]);b=ia({chart:a,zoomX:/x/.test(e),zoomY:/y/.test(e),canvasY:a.canvasTop,canvasX:a.canvasLeft,canvasW:a.canvasWidth,canvasH:a.canvasHeight,canvasX2:a.canvasLeft+a.canvasWidth,canvasY2:a.canvasTop+a.canvasHeight,strokeWidth:k,chartPosLeft:D.left,chartPosTop:D.top,
attr:u},b);u.stroke=ja(u.stroke,"rgba(51,153,255,0.8)");u.fill=ja(u.fill,"rgba(185,213,241,0.3)");u.ishot=!0;d&&(ma(d,"pointerdrag",aa),h.push(na(d,"pointerdrag",aa,b)));c.link&&(ma(a.container,"mouseup mousedown",W),h.push(na(a.container,"mouseup mousedown",W,b)))},createContextMenu:function(b){var c=b.chart,e=c.smartLabel,u=c.logic.hcJSON&&c.logic.hcJSON.chart.useRoundEdges,k=X.Raphael,A=function(a){var b=a.menufillcolor&&L(a.menufillcolor),c=a.menulabelcolor&&L(a.menulabelcolor),d=a.menufillhovercolor&&
L(a.menufillhovercolor);a=a.menulabelhovercolor&&L(a.menulabelhovercolor);return{attrs:{backgroundColor:b,color:c},hover:{backgroundColor:d,color:a}}}(c.definition.chart),h=function(a,b,c){b=b||{};a=(a=(a=a&&k.tintshade(a.color,.7))&&k.getRGB(a))&&"rgb("+[a.r,a.g,a.b].join()+")";return{backgroundColor:b.backgroundHoverColor||c.backgroundColor||a||"rgb(64, 64, 64)",color:b.hoverColor||c.color||"#FFFFFF"}}(b.basicStyle,b.hover,A.hover),D=function(a,b,c){b=ia({},b||{});b=ia(b,a);return{fontFamily:b.fontFamily||
"Verdana,sans",fontSize:b.fontSize||"10px",color:b.color||c.color||"#000000",backgroundColor:b.backgroundColor||c.backgroundColor||"rgb(255, 255, 255)"}}(b.basicStyle,b.attrs,A.attrs),f={textAlign:"left",align:"left",paddingLeft:"5px",paddingRight:"5px",paddingTop:"5px",cursor:"pointer",borderWidth:"0px"},n=b.items,l=b.position,m=b.verticalPadding||3,p=b.horizontalPadding||6,v={},s,r,B,da,M,q,F,sa,t,K,ta,T,S;if(c)s=ya(c.container);else return!1;da=function(){var b=v.items,c=b.length,A=0,k=0,z=0,w,
E;v.menuItems||(v.menuItems=[]);for(e.setStyle(D);c--;)w=b[c],w=e.getOriSize(w.text),z||(z=w.height+2*m),A+=z,k=N(k,w.width+2*p);v.height=A;v.width=k;v.itemH=z;this.style.width=k+"px";v.menuRect||(A=v.menuRect=C.createElement("div"),A.style.border="1px solid rgb(100, 100, 100)",u&&(A.style.mozBorderRadius="4px",A.style.webkitBorderRadius="4px",A.style.borderRadius="4px",A.style.overflow="hidden"),a&&!d?A.style.filter="progid:DXImageTransform.Microsoft.Shadow(Color=#999999,direction=135,strength=3)":
(A.style.mozBoxShadow="3px 3px 3px #999",A.style.webkitBoxShadow="3px 3px 3px #999",A.style.boxShadow="3px 3px 3px #999"),this.appendChild(A));k=b.length;for(c=0;c<k;c+=1)if(w=b[c],v.menuItems[c])v.menuItems[c].label.innerHTML=w.text;else{v.menuItems[c]={};A=v.menuItems[c].box=C.createElement("div");A.style.height=z+"px";A.style.lineHeight=z+"px";for(E in f)A.style[E]=f[E];for(E in D)A.style[E]=D[E];v.menuRect.appendChild(A);A.innerHTML=w.text;X.dem.listen(A,"click",S);X.dem.listen(A,"pointerhover",
K);v.menuItems[c].box._itemIdx=c}for(;v.menuItems[c];)v.menuItems[c].box.parentNode.removeChild(v.menuItems[c].box),v.menuItems.splice(c,1)};M=function(){B||(B=C.createElement("div"),B.style.position="absolute",B.style.zIndex="50",B.style.display="none",c.container.appendChild&&c.container.appendChild(B));return B};q=function(){r=setTimeout(v.hide,800)};F=function(){r&&clearTimeout(r)};sa=function(a){var b=a.x;a=a.y;var d={x:b,y:a},e=v.width,z=v.height,w=c.chartHeight,E=c.chartWidth;b+e>E&&0<b-e?
d.x-=e:b+e>E&&(d.x=0);a+z>w&&0<a-z&&(d.y-=z);return d};t=function(){v.hide()};K=function(a){a.target&&a.target.parentNode&&("start"===a.state?ta:T).call(a.target)};ta=function(){var a=v.menuItems[this._itemIdx],b;F();for(b in h)a.box.style[b]=h[b]};T=function(){var a=v.menuItems[this._itemIdx],b;for(b in D)a.box.style[b]=D[b];q()};S=function(a){var b=v.items[this._itemIdx];b.onclick&&b.onclick.call(b,a);a.originalEvent.stopPropagation?a.originalEvent.stopPropagation():a.originalEvent.cancelBubble=
!0;v.hide()};v.showItem=function(a){a=this.menuItems[a];var b=this.height,c=this.itemH;a&&a._isHidden&&(a.box.style.display="",this.height=b+c,a._isHidden=!1,a=sa(l),this.left=a.x,this.top=a.y)};v.hideItem=function(a){a=this.menuItems[a];var b=this.height,c=this.itemH;a&&!a._isHidden&&(a.box.style.display="none",this.height=b-c,a._isHidden=!0,a=sa(l),this.left=a.x,this.top=a.y)};v.redraw=function(){var a=this.menuContainer;this.items=n;a?da.call(this.menuContainer):l&&void 0!==l.x&&void 0!==l.y?(this.menuContainer=
M(),da.call(this.menuContainer),a=sa(l),this.left=a.x,this.top=a.y,this.menuContainer.style.left=this.left+"px",this.menuContainer.style.top=this.top+"px"):(this.menuContainer=M(),da.call(this.menuContainer))};v.show=function(a){var b=this;a&&void 0!==a.x&&void 0!==a.y?(a=sa(a),b.menuContainer.style.left=a.x+"px",b.menuContainer.style.top=a.y+"px"):(b.menuContainer.style.left=b.left+"px",b.menuContainer.style.top=b.top+"px");b.menuContainer.style.display="";setTimeout(function(){b.visible=!0;k.click(t)},
400)};v.hide=function(){this.visible&&(this.visible=!1,v.menuContainer.style.display="none",v.menuContainer.style.left=-v.width+"px",v.menuContainer.style.top=-v.height+"px",k.unclick(t))};v.update=function(a){a&&a.length&&(this.items=a,this.redraw())};v.updatePosition=function(a){var b=s.left,d=s.top;s=ya(c.container);a?(l=a,a=sa(a),this.left=a.x,this.top=a.y):(this.left-=b-s.left,this.top-=d-s.top)};v.add=function(a){var b=this.menuItems,c=b.length,d;e.setStyle(D);this.width=N(this.width,e.getOriSize(a.text).width);
b[c]={};b=b[c].box=C.createElement("div");b.style.height=this.itemH+"px";b.style.lineHeight=this.itemH+"px";for(d in f)b.style[d]=f[d];for(d in D)b.style[d]=D[d];v.menuRect.appendChild(b);b.innerHTML=a.text;X.dem.listen(b,"click",S);X.dem.listen(b,"pointerhover",K);v.menuItems[c].box._itemIdx=c;this.height+=this.itemH};v.removeItems=function(){for(var a=this.menuItems,b=a&&a.length,c;b--;)c=a[b],X.dem.unlisten(c.box,"click",S),X.dem.unlisten(c.box,"pointerhover",K),c.box&&c.box.parentNode&&c.box.parentNode.removeChild(c.box);
delete this.menuItems;delete this.items};v.setPosition=function(a){void 0!==a.x&&void 0!==a.y&&(this.menuContainer.style.x=a.x,this.menuContainer.style.y=a.y)};v.destroy=function(){this.removeItems();this.menuContainer.parentNode.removeChild(this.menuContainer)};n&&n.length&&(v.redraw(),v.hide());return v},getDefinedColor:function(a,b){return a||0===a||""===a?a:b},getFirstValue:ja,getFirstColor:function(a){a=a.split(",")[0];a=a.replace(F,"");""==a&&(a="000000");return a.replace(c,"#")},getColorCodeString:function(a,
b){var c="",d,e,u=0,k=b.split(",");for(e=k.length;u<e;u+=1)d=k[u].split("-"),c=2===d.length?"-1"!==d[0].indexOf("dark")?c+(Sa(a,100-parseInt(d[1],10))+","):c+(gb(a,100-parseInt(d[1],10))+","):c+(k[u]+",");return c.substring(0,c.length-1)},pluckColor:function(a){if(za(a))return a=a.split(",")[0],a=a.replace(F,""),""==a&&(a="000000"),a.replace(c,"#")},toRaphaelColor:fb,gradientify:Xa,trimString:function(a){a=a.replace(/^\s\s*/,"");for(var b=/\s/,c=a.length;b.test(a.charAt(--c)););return a.slice(0,c+
1)},getFirstAlpha:function(a){a=parseInt(a,10);if(isNaN(a)||100<a||0>a)a=100;return a},parsePointValue:sa,parseUnsafeString:ta,parseTooltext:tb,toPrecision:function(a,b){var c=e(10,b);return h(a*c)/c},hasTouch:q,CREDIT_HREF:J,CREDIT_STRING:"FusionCharts XT Trial",getSentenceCase:function(a){a=a||"";return a.charAt(0).toUpperCase()+a.substr(1)},getCrispValues:function(a,b,c){var d=c%2/2;c=h(a+d)-d;a=h(a+b+d)-d-c;return{position:c,distance:a}},regescape:function(a){return a&&a.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,
"\\$&")},regReplaceEscape:va,isArray:$,stubFN:function(){},falseFN:function(){return!1},stableSort:function(a,b){var c=a.length,d;for(d=0;d<c;d++)a[d].ssI=d;a.sort(function(a,c){var d=b(a,c);return 0===d?a.ssI-c.ssI:d});for(d=0;d<c;d++)delete a[d].ssI},hasSVG:d,isIE:a,lineHeightFactor:1.2,getLinkAction:function(a,b){var c=function(a){return a};return function(d){d=d||this.series&&this.series.chart;var e=a.chart||a.map||{},u=da(e.unescapelinks,1),e=da(e.clickurloverridesplotlinks,0),k=ja(this.link,
"");d=d&&d.options&&d.options.chart&&d.options.chart.link||"";var D=this.options&&this.options.chart&&this.options.chart.link||"",h=e?O(d,D,k):O(k,D,d),n=h,l,m,v,L,p,s,r,B,M,q;void 0!==h&&(u&&(h=t.decodeURIComponent?t.decodeURIComponent(h):t.unescape(h)),h=h.replace(/^\s+/,"").replace(/\s+$/,""),-1!==h.search(/^[a-z]*\s*[\-\:]\s*/i)&&(p=h.split(/\s*[\-\:]\s*/)[0].toLowerCase(),q=p.length),setTimeout(function(){switch(p){case "j":h=h.replace(/^j\s*\-/i,"j-");l=h.indexOf("-",2);-1===l?fa(h.slice(2)):
fa(h.substr(2,l-2).replace(/\s/g,""),h.slice(l+1));break;case "javascript":La(h.replace(/^javascript\s*\:/i,""));break;case "n":h.replace(/^n\s*\-/i,"n-");t.open(c(h.slice(2),u));break;case "f":h=h.replace(/^f\s*\-/i,"f-");l=h.indexOf("-",2);-1!==l?(m=h.substr(2,l-2))&&t.frames[m]?t.frames[m].location=c(h.slice(l+1),u):t.open(c(h.slice(l+1),u),m):t.open(c(h.slice(2),u));break;case "p":h=h.replace(/p\s*\-/i,"p-");l=h.indexOf("-",2);v=h.indexOf(",",2);-1===l&&(l=1);L=c(h.slice(l+1),u);t.open(L,h.substr(2,
v-2),h.substr(v+1,l-v-1)).focus();break;case "newchart":case "newmap":":"===h.charAt(q)&&(l=h.indexOf("-",q+1),M=h.substring(q+1,l),q=l);l=h.indexOf("-",q+1);s=h.substring(q+1,l).toLowerCase();switch(s){case "xmlurl":case "jsonurl":B=h.substring(l+1,h.length);break;case "xml":case "json":var d=r=h.substring(l+1,h.length),e={chart:{}},k,d=d.toLowerCase();if(a.linkeddata)for(k=0;k<a.linkeddata.length;k+=1)a.linkeddata[k].id.toLowerCase()===d&&(e=a.linkeddata[k].linkedchart||a.linkeddata[k].linkedmap);
B=e;s="json"}f.raiseEvent("linkedChartInvoked",{alias:M,linkType:s.toUpperCase(),data:B},b);break;default:t.location.href=h}f.raiseEvent("linkClicked",{linkProvided:n,linkInvoked:h,linkAction:p&&p.toLowerCase()},b)},0))}},graphics:{parseAlpha:ha,convertColor:Fa,getDarkColor:gb,getLightColor:Sa,mapSymbolName:function(a,b){var c="circle";a=sa(a);3<=a&&(c=(b?"spoke_":"poly_")+a);return c},getColumnColor:function(a,b,c,d,e,u,k,h,f){var n,l;n=a.split(",");l=b.split(",");u=u.split(",");k=k.split(",");a=
a.replace(/\s/g,"").replace(/\,$/,"");f?h={FCcolor:{color:n[0],alpha:l[0]}}:e?(a=n[0],l=l[0],h={FCcolor:{color:gb(a,75)+","+Sa(a,10)+","+gb(a,90)+","+Sa(a,55)+","+gb(a,80),alpha:l+","+l+","+l+","+l+","+l,ratio:"0,11,14,57,18",angle:h?"90":"0"}},u=[gb(a,70)]):(b=ha(b,n.length),h={FCcolor:{color:a,alpha:b,ratio:c,angle:h?-d:d}});return[h,{FCcolor:{color:u[0],alpha:k[0]}}]},getAngle:function(a,b,c){a=180*Math.atan(b/a)/Math.PI;2==c?a=180-a:3==c?a+=180:4==c&&(a=360-a);return a},parseColor:xa,getValidColor:function(a){return H.test(xa(a))&&
a},HSBtoRGB:function(a){var b=a[0],c=0,d=0,e=0,u=[],u=a[1]/100;a=a[2]/100;var k=b/60-Math.floor(b/60),D=a*(1-u),f=a*(1-k*u),u=a*(1-(1-k)*u);switch(Math.floor(b/60)%6){case 0:c=a;d=u;e=D;break;case 1:c=f;d=a;e=D;break;case 2:c=D;d=a;e=u;break;case 3:c=D;d=f;e=a;break;case 4:c=u;d=D;e=a;break;case 5:c=a,d=D,e=f}return u=[h(255*c),h(255*d),h(255*e)]},RGBtoHSB:function(a){var b=a[0],c=a[1];a=a[2];var d=Math.max(Math.max(b,c),a),e=Math.min(Math.min(b,c),a),u=0,k=0;d==e?u=0:d==b?u=(60*(c-a)/(d-e)+360)%
360:d==c?u=60*(a-b)/(d-e)+120:d==a&&(u=60*(b-c)/(d-e)+240);k=0===d?0:(d-e)/d;return[h(u),h(100*k),h(d/255*100)]},RGBtoHex:function(a){return("000000"+(a[0]<<16|a[1]<<8|a[2]).toString(16)).slice(-6)},HEXtoRGB:Ia},setImageDisplayMode:function(a,b,c,d,e,u,k,h){var f=d/100*h.width;d=d/100*h.height;h={};var n,l=u-2*e;n=k-2*e;var m=function(a,b,c,d,u,h){var k={};switch(a){case "top":k.y=e;break;case "bottom":k.y=h-d-e;break;case "middle":k.y=(h-d)/2}switch(b){case "left":k.x=e;break;case "right":k.x=u-
c-e;break;case "middle":k.x=(u-c)/2}return k};switch(a){case "center":h.width=f;h.height=d;h.y=k/2-d/2;h.x=u/2-f/2;break;case "stretch":h.width=u-2*e;h.height=k-2*e;h.y=e;h.x=e;break;case "tile":h.width=f;h.height=d;h.tileInfo={};h.tileInfo.xCount=a=Math.ceil(l/f);h.tileInfo.yCount=n=Math.ceil(n/d);b=m(b,c,f*a,d*n,u,k);h.y=b.y;h.x=b.x;break;case "fit":a=f/d>l/n?l/f:n/d;h.width=f*a;h.height=d*a;b=m(b,c,h.width,h.height,u,k);h.y=b.y;h.x=b.x;break;case "fill":a=f/d>l/n?n/d:l/f;h.width=f*a;h.height=d*
a;b=m(b,c,h.width,h.height,u,k);h.y=b.y;h.x=b.x;break;default:b=m(b,c,f,d,u,k),h.width=f,h.height=d,h.y=b.y,h.x=b.x}return h},setLineHeight:Ra,parsexAxisStyles:Da,supportedStyle:{font:"font",fontFamily:"font-family","font-family":"font-family",fontWeight:"font-weight","font-weight":"font-weight",fontSize:"font-size","font-size":"font-size",lineHeight:"line-height","line-height":"line-height",textDecoration:"text-decoration","text-decoration":"text-decoration",color:"color",whiteSpace:"white-space",
"white-space":"white-space",padding:"padding",margin:"margin",background:"background",backgroundColor:"background-color","background-color":"background-color",backgroundImage:"background-image","background-image":"background-image",backgroundPosition:"background-position","background-position":"background-position",backgroundPositionLeft:"background-position-left","background-position-left":"background-position-left",backgroundPositionTop:"background-position-top","background-position-top":"background-position-top",
backgroundRepeat:"background-repeat","background-repeat":"background-repeat",border:"border",borderColor:"border-color","border-color":"border-color",borderStyle:"border-style","border-style":"border-style",borderThickness:"border-thickness","border-thickness":"border-thickness",borderTop:"border-top","border-top":"border-top",borderTopColor:"border-top-color","border-top-color":"border-top-color",borderTopStyle:"border-top-style","border-top-style":"border-top-style",borderTopThickness:"border-top-thickness",
"border-top-thickness":"border-top-thickness",borderRight:"border-right","border-right":"border-right",borderRightColor:"border-right-color","border-right-color":"border-right-color",borderRightStyle:"border-right-style","border-right-style":"border-right-style",borderRightThickness:"border-right-thickness","border-right-thickness":"border-right-thickness",borderBottom:"border-bottom","border-bottom":"border-bottom",borderBottomColor:"border-bottom-color","border-bottom-color":"border-bottom-color",
borderBottomStyle:"border-bottom-style","border-bottom-style":"border-bottom-style",borderBottomThickness:"border-bottom-thickness","border-bottom-thickness":"border-bottom-thickness",borderLeft:"border-left","border-left":"border-left",borderLeftColor:"border-left-color","border-left-color":"border-left-color",borderLeftStyle:"border-left-style","border-left-Style":"border-left-style",borderLeftThickness:"border-left-thickness","border-left-thickness":"border-left-thickness"},getAxisLimits:Lb,createTrendLine:vb,
getDashStyle:Eb,axisLabelAdder:pb,chartAPI:Ib,createDialog:Ub,isCanvasElemSupported:function(){var a=C.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}})}]);
window.FusionCharts&&window.FusionCharts.register("module",["private","vendor.redraphael",function(){var f=this.hcLib,t=window.Raphael,C;(function(){(function(f,d){var a=/[\.\/]/,m=function(){},F=function(a,b){return a-b},c,l,b={n:{}},p=function(a,b){a=String(a);var d=l,h=Array.prototype.slice.call(arguments,2),k=p.listeners(a),f=0,m,q=[],n={},t=[],B=c;c=a;for(var U=l=0,r=k.length;U<r;U++)"zIndex"in k[U]&&(q.push(k[U].zIndex),0>k[U].zIndex&&(n[k[U].zIndex]=k[U]));for(q.sort(F);0>q[f];)if(m=n[q[f++]],
t.push(m.apply(b,h)),l)return l=d,t;for(U=0;U<r;U++)if(m=k[U],"zIndex"in m)if(m.zIndex==q[f]){t.push(m.apply(b,h));if(l)break;do if(f++,(m=n[q[f]])&&t.push(m.apply(b,h)),l)break;while(m)}else n[m.zIndex]=m;else if(t.push(m.apply(b,h)),l)break;l=d;c=B;return t.length?t:null};p._events=b;p.listeners=function(c){c=c.split(a);var d=b,e,h,k,f,l,m,n,p=[d],B=[];k=0;for(f=c.length;k<f;k++){n=[];l=0;for(m=p.length;l<m;l++)for(d=p[l].n,e=[d[c[k]],d["*"]],h=2;h--;)if(d=e[h])n.push(d),B=B.concat(d.f||[]);p=n}return B};
p.on=function(c,d){c=String(c);if("function"!=typeof d)return function(){};for(var e=c.split(a),h=b,k=0,f=e.length;k<f;k++)h=h.n,h=h.hasOwnProperty(e[k])&&h[e[k]]||(h[e[k]]={n:{}});h.f=h.f||[];k=0;for(f=h.f.length;k<f;k++)if(h.f[k]==d)return m;h.f.push(d);return function(a){+a==+a&&(d.zIndex=+a)}};p.f=function(a){var b=[].slice.call(arguments,1);return function(){p.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}};p.stop=function(){l=1};p.nt=function(a){return a?(new RegExp("(?:\\.|\\/|^)"+
a+"(?:\\.|\\/|$)")).test(c):c};p.nts=function(){return c.split(a)};p.off=p.unbind=function(c,d){if(c){var e=c.split(a),h,k,f,l,m,n,q=[b];l=0;for(m=e.length;l<m;l++)for(n=0;n<q.length;n+=f.length-2){f=[n,1];h=q[n].n;if("*"!=e[l])h[e[l]]&&f.push(h[e[l]]);else for(k in h)h.hasOwnProperty(k)&&f.push(h[k]);q.splice.apply(q,f)}l=0;for(m=q.length;l<m;l++)for(h=q[l];h.n;){if(d){if(h.f){n=0;for(e=h.f.length;n<e;n++)if(h.f[n]==d){h.f.splice(n,1);break}!h.f.length&&delete h.f}for(k in h.n)if(h.n.hasOwnProperty(k)&&
h.n[k].f){f=h.n[k].f;n=0;for(e=f.length;n<e;n++)if(f[n]==d){f.splice(n,1);break}!f.length&&delete h.n[k].f}}else for(k in delete h.f,h.n)h.n.hasOwnProperty(k)&&h.n[k].f&&delete h.n[k].f;h=h.n}}else p._events=b={n:{}}};p.once=function(a,b){var c=function(){p.unbind(a,c);return b.apply(this,arguments)};return p.on(a,c)};p.version="0.4.2";p.toString=function(){return"You are running Eve 0.4.2"};"undefined"!=typeof module&&module.exports?module.exports=p:d||"undefined"==typeof define?f.eve=p:define("eve",
[],function(){return p})})(this,!0);(function(f,d,a){!a&&"function"===typeof define&&define.amd?define(["eve"],function(a){return d(f,a)}):d(f,f.eve)})(this,function(f,d){function a(b){var c,g;void 0===a._url&&(a._url="");if(a.is(b,"function"))return v?b():d.on("raphael.DOMload",b);if(a.is(b,n))return a._engine.create[K](a,b.splice(0,3+a.is(b[0],J))).add(b);c=Array.prototype.slice.call(arguments,0);return a.is(c[c.length-1],"function")?(g=c.pop(),v?g.call(a._engine.create[K](a,c)):d.on("raphael.DOMload",
function(){g.call(a._engine.create[K](a,c))})):a._engine.create[K](a,arguments)}function m(){return this.hex}function F(a,b){for(var c=[],g=0,d=a.length;d-2*!b>g;g+=2){var z=[{x:+a[g-2],y:+a[g-1]},{x:+a[g],y:+a[g+1]},{x:+a[g+2],y:+a[g+3]},{x:+a[g+4],y:+a[g+5]}];b?g?d-4==g?z[3]={x:+a[0],y:+a[1]}:d-2==g&&(z[2]={x:+a[0],y:+a[1]},z[3]={x:+a[2],y:+a[3]}):z[0]={x:+a[d-2],y:+a[d-1]}:d-4==g?z[3]=z[2]:g||(z[0]={x:+a[g],y:+a[g+1]});c.push(["C",(-z[0].x+6*z[1].x+z[2].x)/6,(-z[0].y+6*z[1].y+z[2].y)/6,(z[1].x+
6*z[2].x-z[3].x)/6,(z[1].y+6*z[2].y-z[3].y)/6,z[2].x,z[2].y])}return c}function c(a,b,c,g,d,z,w,E,e){null==e&&(e=1);e=(1<e?1:0>e?0:e)/2;for(var I=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],u=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],h=0,k=0;12>k;k++)var A=e*I[k]+e,f=A*(A*(-3*a+9*c-9*d+3*w)+6*a-12*c+6*d)-3*a+3*c,A=A*(A*(-3*b+9*g-9*z+3*E)+6*b-12*g+6*z)-3*b+3*g,h=h+u[k]*fa(f*f+A*A);return e*h}function l(a,b,g,d,z,w,E,e,I){if(!(0>I||
c(a,b,g,d,z,w,E,e)<I)){var u=.5,h=1-u,k;for(k=c(a,b,g,d,z,w,E,e,h);.01<$(k-I);)u/=2,h+=(k<I?1:-1)*u,k=c(a,b,g,d,z,w,E,e,h);return h}}function b(b,g,d){b=a._path2curve(b);g=a._path2curve(g);for(var z,w,E,e,I,u,h,k,A,f,D=d?0:[],l=0,n=b.length;l<n;l++)if(A=b[l],"M"==A[0])z=I=A[1],w=u=A[2];else{"C"==A[0]?(A=[z,w].concat(A.slice(1)),z=A[6],w=A[7]):(A=[z,w,z,w,I,u,I,u],z=I,w=u);for(var P=0,ib=g.length;P<ib;P++)if(f=g[P],"M"==f[0])E=h=f[1],e=k=f[2];else{"C"==f[0]?(f=[E,e].concat(f.slice(1)),E=f[6],e=f[7]):
(f=[E,e,E,e,h,k,h,k],E=h,e=k);var ka;var m=A,L=f;ka=d;var R=a.bezierBBox(m),v=a.bezierBBox(L);if(a.isBBoxIntersect(R,v)){for(var R=c.apply(0,m),v=c.apply(0,L),R=ta(~~(R/5),1),v=ta(~~(v/5),1),p=[],G=[],r={},B=ka?0:[],s=0;s<R+1;s++){var V=a.findDotsAtSegment.apply(a,m.concat(s/R));p.push({x:V.x,y:V.y,t:s/R})}for(s=0;s<v+1;s++)V=a.findDotsAtSegment.apply(a,L.concat(s/v)),G.push({x:V.x,y:V.y,t:s/v});for(s=0;s<R;s++)for(m=0;m<v;m++){var Ua=p[s],cc=p[s+1],L=G[m],V=G[m+1],Dc=.001>$(cc.x-Ua.x)?"y":"x",da=
.001>$(V.x-L.x)?"y":"x",M;M=Ua.x;var Na=Ua.y,Z=cc.x,q=cc.y,Kb=L.x,F=L.y,sa=V.x,t=V.y;if(ta(M,Z)<S(Kb,sa)||S(M,Z)>ta(Kb,sa)||ta(Na,q)<S(F,t)||S(Na,q)>ta(F,t))M=void 0;else{var wc=(M*q-Na*Z)*(Kb-sa)-(M-Z)*(Kb*t-F*sa),ba=(M*q-Na*Z)*(F-t)-(Na-q)*(Kb*t-F*sa),ea=(M-Z)*(F-t)-(Na-q)*(Kb-sa);if(ea){var wc=wc/ea,ba=ba/ea,ea=+wc.toFixed(2),N=+ba.toFixed(2);M=ea<+S(M,Z).toFixed(2)||ea>+ta(M,Z).toFixed(2)||ea<+S(Kb,sa).toFixed(2)||ea>+ta(Kb,sa).toFixed(2)||N<+S(Na,q).toFixed(2)||N>+ta(Na,q).toFixed(2)||N<+S(F,
t).toFixed(2)||N>+ta(F,t).toFixed(2)?void 0:{x:wc,y:ba}}else M=void 0}M&&r[M.x.toFixed(4)]!=M.y.toFixed(4)&&(r[M.x.toFixed(4)]=M.y.toFixed(4),Ua=Ua.t+$((M[Dc]-Ua[Dc])/(cc[Dc]-Ua[Dc]))*(cc.t-Ua.t),L=L.t+$((M[da]-L[da])/(V[da]-L[da]))*(V.t-L.t),0<=Ua&&1.001>=Ua&&0<=L&&1.001>=L&&(ka?B++:B.push({x:M.x,y:M.y,t1:S(Ua,1),t2:S(L,1)})))}ka=B}else ka=ka?0:[];if(d)D+=ka;else{R=0;for(v=ka.length;R<v;R++)ka[R].segment1=l,ka[R].segment2=P,ka[R].bez1=A,ka[R].bez2=f;D=D.concat(ka)}}}return D}function p(a,b,c,g,d,
z){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+g,this.e=+d,this.f=+z):(this.a=1,this.c=this.b=0,this.d=1,this.f=this.e=0)}function t(){return this.x+" "+this.y+" "+this.width+" × "+this.height}function s(a,b,c,g,d,z){function w(a,b){var c,g,d,Bc;d=a;for(g=0;8>g;g++){Bc=((I*d+e)*d+E)*d-a;if($(Bc)<b)return d;c=(3*I*d+2*e)*d+E;if(1E-6>$(c))break;d-=Bc/c}c=0;g=1;d=a;if(d<c)return c;if(d>g)return g;for(;c<g;){Bc=((I*d+e)*d+E)*d;if($(Bc-a)<b)break;a>Bc?c=d:g=d;d=(g-c)/2+c}return d}var E=3*b,e=3*(g-b)-
E,I=1-E-e,u=3*c,h=3*(d-c)-u,k=1-u-h;return function(a,b){var c=w(a,b);return((k*c+h)*c+u)*c}(a,1/(200*z))}function e(a,b){var c=[],g={};this.ms=b;this.times=1;if(a){for(var d in a)a.hasOwnProperty(d)&&(g[L(d)]=a[d],c.push(L(d)));c.sort(eb)}this.anim=g;this.top=c[c.length-1];this.percents=c}function h(b,c,g,w,E,e){g=L(g);var h,k,A,f,D,l,n=b.ms,P={},ib={},m={};if(w)for(l=0,v=bb.length;l<v;l++){var R=bb[l];if(R.el.id==c.id&&R.anim==b){R.percent!=g?(bb.splice(l,1),A=1):k=R;c.attr(R.totalOrigin);break}}else w=
+ib;l=0;for(var v=b.percents.length;l<v;l++)if(b.percents[l]==g||b.percents[l]>w*b.top){g=b.percents[l];D=b.percents[l-1]||0;n=n/b.top*(g-D);f=b.percents[l+1];h=b.anim[g];break}else w&&c.attr(b.anim[b.percents[l]]);if(h){if(k)k.initstatus=w,k.start=new Date-k.ms*w;else{for(var G in h)if(h.hasOwnProperty(G)&&(Ib.hasOwnProperty(G)||c.ca[G]))switch(P[G]=c.attr(G),null==P[G]&&(P[G]=rb[G]),ib[G]=h[G],Ib[G]){case J:m[G]=(ib[G]-P[G])/n;break;case "colour":P[G]=a.getRGB(P[G]);l=a.getRGB(ib[G]);m[G]={r:(l.r-
P[G].r)/n,g:(l.g-P[G].g)/n,b:(l.b-P[G].b)/n};break;case "path":l=z(P[G],ib[G]);R=l[1];P[G]=l[0];m[G]=[];l=0;for(v=P[G].length;l<v;l++){m[G][l]=[0];for(var r=1,B=P[G][l].length;r<B;r++)m[G][l][r]=(R[l][r]-P[G][l][r])/n}break;case "transform":l=c._;if(v=ka(l[G],ib[G]))for(P[G]=v.from,ib[G]=v.to,m[G]=[],m[G].real=!0,l=0,v=P[G].length;l<v;l++)for(m[G][l]=[P[G][l][0]],r=1,B=P[G][l].length;r<B;r++)m[G][l][r]=(ib[G][l][r]-P[G][l][r])/n;else v=c.matrix||new p,l={_:{transform:l.transform},getBBox:function(){return c.getBBox(1)}},
P[G]=[v.a,v.b,v.c,v.d,v.e,v.f],I(l,ib[G]),ib[G]=l._.transform,m[G]=[(l.matrix.a-v.a)/n,(l.matrix.b-v.b)/n,(l.matrix.c-v.c)/n,(l.matrix.d-v.d)/n,(l.matrix.e-v.e)/n,(l.matrix.f-v.f)/n];break;case "csv":v=u(h[G]).split(gb);R=u(P[G]).split(gb);if("clip-rect"==G)for(P[G]=R,m[G]=[],l=R.length;l--;)m[G][l]=(v[l]-P[G][l])/n;ib[G]=v;break;default:for(v=[].concat(h[G]),R=[].concat(P[G]),m[G]=[],l=c.ca[G].length;l--;)m[G][l]=((v[l]||0)-(R[l]||0))/n}l=h.easing;G=a.easing_formulas[l];if(!G)if((G=u(l).match(Ra))&&
5==G.length){var V=G;G=function(a){return s(a,+V[1],+V[2],+V[3],+V[4],n)}}else G=sb;l=h.start||b.start||+new Date;R={anim:b,percent:g,timestamp:l,start:l+(b.del||0),status:0,initstatus:w||0,stop:!1,ms:n,easing:G,from:P,diff:m,to:ib,el:c,callback:h.callback,prev:D,next:f,repeat:e||b.times,origin:c.attr(),totalOrigin:E};bb.push(R);if(w&&!k&&!A&&(R.stop=!0,R.start=new Date-n*w,1==bb.length))return Tc();A&&(R.start=new Date-R.ms*w);1==bb.length&&Zc(Tc)}d("raphael.anim.start."+c.id,c,b)}}function k(a){for(var b=
0;b<bb.length;b++)bb[b].el.paper==a&&bb.splice(b--,1)}a.upgrade="1.0.0";a.version="2.1.0";a.eve=d;C=a;var v,K="apply",J="number",n="array",N=Array.prototype.slice,B=Array.prototype.splice,U=function(){return function(){}.hasOwnProperty("prototype")}(),r={doc:document,win:f},ga=Object.prototype.hasOwnProperty.call(r.win,"Raphael"),X=r.win.Raphael,aa=r.doc,W=r.win,ya=a.supportsTouch="createTouch"in aa,va=a.supportsOnlyTouch=ya&&!(W.navigator.maxTouchPoints||W.navigator.msMaxTouchPoints),za=function(){};
a.ca=a.customAttributes=za.prototype;var ja=function(){this.ca=this.customAttributes=new za;this._CustomAttributes=function(){};this._CustomAttributes.prototype=this.ca;this._elementsById={};this.id=a._oid++;d("raphael.new",this)},O=a.fn=ja.prototype=a.prototype,na={circle:1,rect:1,path:1,ellipse:1,text:1,image:1,group:1},ma="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel dragstart dragmove dragend".split(" "),M=a._touchMap={mousedown:"touchstart",
mousemove:"touchmove",mouseup:"touchend"},T=a._dragEventMap={dragstart:"mousedown",dragmove:"mousemove",dragend:"mouseup"},u=W.String,L=W.parseFloat,da=W.parseInt,sa=W.Math,ta=sa.max,S=sa.min,$=sa.abs,oa=sa.pow,ia=sa.cos,Ea=sa.sin,fa=sa.sqrt,La=sa.round,Ba=sa.PI,ha=Ba/180,Fa=180/Ba,fb=u.prototype.toLowerCase,Xa=u.prototype.toUpperCase,xa=W.Object.prototype.toString,gb=/[, ]+/,Sa=/\{(\d+)\}/g;a._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i;var Ia=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,
Ra=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,Da=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,pb=/,?([achlmqrstvxz]),?/gi,Lb=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,
Ub=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,Mb=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ig;
a._radial_gradient=/^x?r(?:\(([^\)]*?)\))?/;var vb={NaN:1,Infinity:1,"-Infinity":1},Eb={hs:1,rg:1},rb=a._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9","clip-path":"",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"about:blank","letter-spacing":0,"line-height":12,"vertical-align":"middle",opacity:1,path:"M0,0",r:0,rx:0,ry:0,
src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",visibility:"",title:"",transform:"",rotation:0,width:0,x:0,y:0},Ib=a._availableAnimAttrs={blur:J,"clip-rect":"csv","clip-path":"path",cx:J,cy:J,fill:"colour","fill-opacity":J,"font-size":J,height:J,opacity:J,path:"path",r:J,rx:J,ry:J,stroke:"colour","stroke-opacity":J,"stroke-width":J,transform:"transform",width:J,
x:J,y:J},tb={},eb=function(a,b){return L(a)-L(b)},Tb=function(){},sb=function(a){return a},Qb=a._rectPath=function(a,b,c,g,d){return d?[["M",a+d,b],["l",c-2*d,0],["a",d,d,0,0,1,d,d],["l",0,g-2*d],["a",d,d,0,0,1,-d,d],["l",2*d-c,0],["a",d,d,0,0,1,-d,-d],["l",0,2*d-g],["a",d,d,0,0,1,d,-d],["z"]]:[["M",a,b],["l",c,0],["l",0,g],["l",-c,0],["z"]]},cb=function(a,b,c,d){null==d&&(d=c);return[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},A=a._getPath={group:function(){return!1},
path:function(a){return a.attr("path")},circle:function(a){a=a.attrs;return cb(a.cx,a.cy,a.r)},ellipse:function(a){a=a.attrs;return cb(a.cx,a.cy,a.rx,a.ry)},rect:function(a){a=a.attrs;return Qb(a.x,a.y,a.width,a.height,a.r)},image:function(a){a=a.attrs;return Qb(a.x,a.y,a.width,a.height)},text:function(a){a=a._getBBox();return Qb(a.x,a.y,a.width,a.height)}},G=a.mapPath=function(a,b){if(!b)return a;var c,d,g,w,E,e,I;a=z(a);g=0;for(E=a.length;g<E;g++)for(I=a[g],w=1,e=I.length;w<e;w+=2)c=b.x(I[w],I[w+
1]),d=b.y(I[w],I[w+1]),I[w]=c,I[w+1]=d;return a};a.pick=function(){for(var a,b=0,c=arguments.length;b<c;b+=1)if((a=arguments[b])||!1===a||0===a)return a};var D=a._lastArgIfGroup=function(b,c){var d=b.length-1,g=b[d];if(g&&g.constructor===a.el.constructor&&"group"===g.type)return c&&(b[d]=void 0,delete b[d],B.call(b,d,1)),g},V=a._serializeArgs=function(b){var c=b[0],d,g;if(a.is(c,"object")&&!a.is(c,"array")&&"group"!==c.type)for(d=c,c.path&&(c=c.path)&&!a.is(c,"string")&&a.is(c[0],n),c=1,g=arguments.length;c<
g;c+=2)d[arguments[c]]||(d[arguments[c]]=arguments[c+1]);else for(d={},c=1,g=arguments.length;c<g;c+=2)d[arguments[c]]=b[(c-1)/2]||arguments[c+1];return d},Z=a.merge=function(a,b,c,d,g){var z,w,E,e;g?(d.push(a),g.push(b)):(d=[a],g=[b]);if(b instanceof Array)for(z=0;z<b.length;z+=1){try{w=a[z],E=b[z]}catch(I){continue}if("object"!==typeof E)c&&void 0===E||(a[z]=E);else{if(null===w||"object"!==typeof w)w=a[z]=E instanceof Array?[]:{};e=checkCyclicRef(E,g);-1!==e?w=a[z]=d[e]:Z(w,E,c,d,g)}}else for(z in b){try{w=
a[z],E=b[z]}catch(u){continue}if(null!==E&&"object"===typeof E)if(e=xa.call(E),"[object Object]"===e){if(null===w||"object"!==typeof w)w=a[z]={};e=checkCyclicRef(E,g);-1!==e?w=a[z]=d[e]:Z(w,E,c,d,g)}else"[object Array]"===e?(null!==w&&w instanceof Array||(w=a[z]=[]),e=checkCyclicRef(E,g),-1!==e?w=a[z]=d[e]:Z(w,E,c,d,g)):a[z]=E;else a[z]=E}return a};a.extend=function(a,b,c){if("object"!==typeof a&&"object"!==typeof b)return null;if("object"!==typeof b||null===b)return a;"object"!==typeof a&&(a=b instanceof
Array?[]:{});Z(a,b,c);return a};var ba=a.is=function(a,b){b=fb.call(b);return"finite"==b?!vb.hasOwnProperty(+a):b==n?a instanceof Array:"object"!==b||void 0!==a&&null!==a?"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||xa.call(a).slice(8,-1).toLowerCase()==b:!1};a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=16*sa.random()|0;return("x"==
a?b:b&3|8).toString(16)});var Q=a.clone=U?function(a){if(Object(a)!==a)return a;var b=new a.constructor,c;for(c in a)"prototype"!==c&&a.hasOwnProperty(c)&&(b[c]=Q(a[c]));return b}:function(a){if(Object(a)!==a)return a;var b=new a.constructor,c;for(c in a)a.hasOwnProperty(c)&&(b[c]=Q(a[c]));return b};a._g=r;a.type=W.ENABLE_RED_CANVAS&&(W.CanvasRenderingContext2D||aa.createElement("canvas").getContext)?"CANVAS":W.SVGAngle||aa.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure",
"1.1")?"SVG":"VML";if("VML"==a.type){var pa=aa.createElement("div"),ua;pa.innerHTML='<v:shape adj="1"/>';ua=pa.firstChild;ua.style.behavior="url(#default#VML)";if(!ua||"object"!=typeof ua.adj)return a.type="";pa=null}a.svg=!((a.vml="VML"==a.type)||(a.canvas="CANVAS"==a.type));a._Paper=ja;a._id=0;a._oid=0;a.angle=function(b,c,d,g,z,w){return null==z?(b-=d,c-=g,b||c?(sa.atan2(-c,-b)*Fa+540)%360:0):a.angle(b,c,z,w)-a.angle(d,g,z,w)};a.rad=function(a){return a%360*ha};a.deg=function(a){return a*Fa%360};
a.snapTo=function(a,b,c){var d;ba(c,"finite")||(c=10);if(ba(a,n))for(d=a.length;d--;){if($(a[d]-b)<=c)return a[d]}else{a=+a;d=b%a;if(d<c)return b-d;if(d>a-c)return b-d+a}return b};a.setWindow=function(b){d("raphael.setWindow",a,r.win,b);W=r.win=b;aa=r.doc=r.win.document;a._engine.initWin&&a._engine.initWin(r.win)};var Ta=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var g=new ActiveXObject("htmlfile");g.write("<body>");g.close();d=g.body}catch(z){d=createPopup().document.body}var w=d.createTextRange();
Ta=ca(function(a){try{d.style.color=u(a).replace(c,"");var b=w.queryCommandValue("ForeColor");return"#"+("000000"+((b&255)<<16|b&65280|(b&16711680)>>>16).toString(16)).slice(-6)}catch(g){return"none"}})}else{var E=r.doc.createElement("i");E.title="Raphaël Colour Picker";E.style.display="none";r.doc.body.appendChild(E);Ta=ca(function(a){E.style.color=a;return r.doc.defaultView.getComputedStyle(E,"").getPropertyValue("color")})}return Ta(b)},db=function(){return"hsb("+[this.h,this.s,this.b]+")"},wa=
function(){return"hsl("+[this.h,this.s,this.l]+")"},ab=function(){return this.hex},Aa=function(b,c,d){null==c&&ba(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);null==c&&ba(b,"string")&&(d=a.getRGB(b),b=d.r,c=d.g,d=d.b);if(1<b||1<c||1<d)b/=255,c/=255,d/=255;return[b,c,d]},la=function(b,c,d,g){var z={r:b*=255,g:c*=255,b:d*=255,hex:a.rgb(b,c,d),toString:ab};ba(g,"finite")&&(z.opacity=g);return z};a.color=function(b){var c;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(c=a.hsb2rgb(b),b.r=
c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1));b.toString=ab;return b};a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o);var g,z,w;a=360*a%360/60;w=c*b;b=w*(1-$(a%2-1));c=g=z=
c-w;a=~~a;c+=[w,b,0,0,b,w][a];g+=[b,w,w,b,0,0][a];z+=[0,0,b,w,w,b][a];return la(c,g,z,d)};a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(1<a||1<b||1<c)a/=360,b/=100,c/=100;var g,z,w;a=360*a%360/60;w=2*b*(.5>c?c:1-c);b=w*(1-$(a%2-1));c=g=z=c-w/2;a=~~a;c+=[w,b,0,0,b,w][a];g+=[b,w,w,b,0,0][a];z+=[0,0,b,w,w,b][a];return la(c,g,z,d)};a.rgb2hsb=function(a,b,c){c=Aa(a,b,c);a=c[0];b=c[1];c=c[2];var d,g;d=ta(a,b,c);g=d-S(a,b,c);a=((0==g?null:d==a?(b-c)/g:
d==b?(c-a)/g+2:(a-b)/g+4)+360)%6*60/360;return{h:a,s:0==g?0:g/d,b:d,toString:db}};a.rgb2hsl=function(a,b,c){c=Aa(a,b,c);a=c[0];b=c[1];c=c[2];var d,g,z;d=ta(a,b,c);g=S(a,b,c);z=d-g;a=((0==z?null:d==a?(b-c)/z:d==b?(c-a)/z+2:(a-b)/z+4)+360)%6*60/360;d=(d+g)/2;return{h:a,s:0==z?0:.5>d?z/(2*d):z/(2-2*d),l:d,toString:wa}};a._path2string=function(){return this.join(",").replace(pb,"$1")};var ca=a._cacher=function(a,b,c){function d(){var g=N.call(arguments,0),z=g.join("␀"),w=d.cache=d.cache||{},E=d.count=
d.count||[];if(w.hasOwnProperty(z)){a:for(var g=E,E=z,e=0,I=g.length;e<I;e++)if(g[e]===E){g.push(g.splice(e,1)[0]);break a}return c?c(w[z]):w[z]}1E3<=E.length&&delete w[E.shift()];E.push(z);w[z]=a[K](b,g);return c?c(w[z]):w[z]}return d};a._preload=function(a,b){var c=aa.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em";c.onload=function(){b.call(this);this.onload=null;aa.body.removeChild(this)};c.onerror=function(){aa.body.removeChild(this)};aa.body.appendChild(c);
c.src=a};a.getRGB=ca(function(b){var c,d,g,z,w;b&&ba(b,"object")&&"opacity"in b&&(c=b.opacity);if(!b||(b=u(b)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:m};if("none"==b)return{r:-1,g:-1,b:-1,hex:"none",toString:m};!Eb.hasOwnProperty(b.toLowerCase().substring(0,2))&&"#"!==b.charAt()&&(b=Ta(b));if(b=b.match(Ia)){b[2]&&(z=da(b[2].substring(5),16),g=da(b[2].substring(3,5),16),d=da(b[2].substring(1,3),16));b[3]&&(z=da((w=b[3].charAt(3))+w,16),g=da((w=b[3].charAt(2))+w,16),d=da((w=
b[3].charAt(1))+w,16));b[4]&&(w=b[4].split(Da),d=L(w[0]),"%"==w[0].slice(-1)&&(d*=2.55),g=L(w[1]),"%"==w[1].slice(-1)&&(g*=2.55),z=L(w[2]),"%"==w[2].slice(-1)&&(z*=2.55),"rgba"==b[1].toLowerCase().slice(0,4)&&(c=L(w[3])),w[3]&&"%"==w[3].slice(-1)&&(c/=100));if(b[5])return w=b[5].split(Da),d=L(w[0]),"%"==w[0].slice(-1)&&(d*=2.55),g=L(w[1]),"%"==w[1].slice(-1)&&(g*=2.55),z=L(w[2]),"%"==w[2].slice(-1)&&(z*=2.55),"deg"!=w[0].slice(-3)&&"°"!=w[0].slice(-1)||(d/=360),"hsba"==b[1].toLowerCase().slice(0,
4)&&(c=L(w[3])),w[3]&&"%"==w[3].slice(-1)&&(c/=100),a.hsb2rgb(d,g,z,c);if(b[6])return w=b[6].split(Da),d=L(w[0]),"%"==w[0].slice(-1)&&(d*=2.55),g=L(w[1]),"%"==w[1].slice(-1)&&(g*=2.55),z=L(w[2]),"%"==w[2].slice(-1)&&(z*=2.55),"deg"!=w[0].slice(-3)&&"°"!=w[0].slice(-1)||(d/=360),"hsla"==b[1].toLowerCase().slice(0,4)&&(c=L(w[3])),w[3]&&"%"==w[3].slice(-1)&&(c/=100),a.hsl2rgb(d,g,z,c);b={r:d,g:g,b:z,toString:m};b.hex="#"+(16777216|z|g<<8|d<<16).toString(16).slice(1);a.is(c,"finite")&&(b.opacity=c);return b}return{r:-1,
g:-1,b:-1,hex:"none",error:1,toString:m}},a);a.tintshade=ca(function(b,c){var d=a.getRGB(b),g;g=255;0>c&&(c*=-1,g=0);1<c&&(c=1);g=0===c?d:{r:g-(g-d.r)*c,g:g-(g-d.g)*c,b:g-(g-d.b)*c,toString:m};g.hex=a.rgb(g.r,g.g,g.b);d.error&&(g.error=d.error);"opacity"in d?(g.rgba="rgba("+[g.r,g.g,g.b,d.opacity].join()+")",g.opacity=d.opacity):g.rgba="rgb("+[g.r,g.g,g.b].join()+")";return g},a);a.hsb=ca(function(b,c,d){return a.hsb2rgb(b,c,d).hex});a.hsl=ca(function(b,c,d){return a.hsl2rgb(b,c,d).hex});a.rgb=ca(function(a,
b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)});a.getColor=function(a){a=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75};var b=this.hsb2rgb(a.h,a.s,a.b);a.h+=.075;1<a.h&&(a.h=0,a.s-=.2,0>=a.s&&(this.getColor.start={h:0,s:1,b:a.b}));return b.hex};a.getColor.reset=function(){delete this.start};a.parsePathString=function(b){if(!b)return null;var c=Ha(b);if(c.arr)return Va(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},g=[];a.is(b,n)&&a.is(b[0],n)&&(g=Va(b));g.length||
u(b).replace(Lb,function(a,b,c){var z=[];a=b.toLowerCase();c.replace(Mb,function(a,b){b&&z.push(+b)});"m"==a&&2<z.length&&(g.push([b].concat(z.splice(0,2))),a="l",b="m"==b?"l":"L");if("r"==a)g.push([b].concat(z));else for(;z.length>=d[a]&&(g.push([b].concat(z.splice(0,d[a]))),d[a]););});g.toString=a._path2string;c.arr=Va(g);return g};a.parseTransformString=ca(function(b){if(!b)return null;var c=[];a.is(b,n)&&a.is(b[0],n)&&(c=Va(b));c.length||u(b).replace(Ub,function(a,b,d){var g=[];fb.call(b);d.replace(Mb,
function(a,b){b&&g.push(+b)});c.push([b].concat(g))});c.toString=a._path2string;return c});var Ha=function(a){var b=Ha.ps=Ha.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100};setTimeout(function(){for(var c in b)b.hasOwnProperty(c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])});return b[a]};a.findDotsAtSegment=function(a,b,c,d,g,z,w,E,e){var I=1-e,u=oa(I,3),h=oa(I,2),k=e*e,A=k*e,l=u*a+3*h*e*c+3*I*e*e*g+A*w,u=u*b+3*h*e*d+3*I*e*e*z+A*E,h=a+2*e*(c-a)+k*(g-2*c+a),A=b+2*e*(d-b)+k*(z-2*d+b),f=c+2*e*(g-c)+k*
(w-2*g+c),k=d+2*e*(z-d)+k*(E-2*z+d);a=I*a+e*c;b=I*b+e*d;g=I*g+e*w;z=I*z+e*E;E=90-180*sa.atan2(h-f,A-k)/Ba;(h>f||A<k)&&(E+=180);return{x:l,y:u,m:{x:h,y:A},n:{x:f,y:k},start:{x:a,y:b},end:{x:g,y:z},alpha:E}};a.bezierBBox=function(b,c,d,g,z,w,E,e){a.is(b,"array")||(b=[b,c,d,g,z,w,E,e]);b=Bb.apply(null,b);return{x:b.min.x,y:b.min.y,x2:b.max.x,y2:b.max.y,width:b.max.x-b.min.x,height:b.max.y-b.min.y}};a.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2};a.isBBoxIntersect=function(b,
c){var d=a.isPointInsideBBox;return d(c,b.x,b.y)||d(c,b.x2,b.y)||d(c,b.x,b.y2)||d(c,b.x2,b.y2)||d(b,c.x,c.y)||d(b,c.x2,c.y)||d(b,c.x,c.y2)||d(b,c.x2,c.y2)||(b.x<c.x2&&b.x>c.x||c.x<b.x2&&c.x>b.x)&&(b.y<c.y2&&b.y>c.y||c.y<b.y2&&c.y>b.y)};a.pathIntersection=function(a,c){return b(a,c)};a.pathIntersectionNumber=function(a,c){return b(a,c,1)};a.isPointInsidePath=function(c,d,g){var z=a.pathBBox(c);return a.isPointInsideBBox(z,d,g)&&(1==b(c,[["M",d,g],["H",z.x2+10]],1)%2||1==b(c,[["M",d,g],["V",z.y2+10]],
1)%2)};a._removedFactory=function(a){return function(){d("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var Ga=a.pathBBox=function(a){var b=Ha(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=z(a);for(var c=0,d=0,g=[],w=[],E,e=0,I=a.length;e<I;e++)E=a[e],"M"==E[0]?(c=E[1],d=E[2],g.push(c),w.push(d)):(c=Bb(c,d,E[1],E[2],E[3],E[4],E[5],E[6]),g=g.concat(c.min.x,c.max.x),w=w.concat(c.min.y,c.max.y),c=E[5],d=E[6]);a=S[K](0,g);E=S[K](0,
w);g=ta[K](0,g);w=ta[K](0,w);w={x:a,y:E,x2:g,y2:w,width:g-a,height:w-E};b.bbox=Q(w);return w},Va=function(b){b=Q(b);b.toString=a._path2string;return b},Rb=a._pathToRelative=function(b){var c=Ha(b);if(c.rel)return Va(c.rel);a.is(b,n)&&a.is(b&&b[0],n)||(b=a.parsePathString(b));var d=[],g=0,z=0,w=0,E=0,e=0;"M"==b[0][0]&&(g=b[0][1],z=b[0][2],w=g,E=z,e++,d.push(["M",g,z]));for(var I=b.length;e<I;e++){var u=d[e]=[],h=b[e];if(h[0]!=fb.call(h[0]))switch(u[0]=fb.call(h[0]),u[0]){case "a":u[1]=h[1];u[2]=h[2];
u[3]=h[3];u[4]=h[4];u[5]=h[5];u[6]=+(h[6]-g).toFixed(3);u[7]=+(h[7]-z).toFixed(3);break;case "v":u[1]=+(h[1]-z).toFixed(3);break;case "m":w=h[1],E=h[2];default:for(var k=1,A=h.length;k<A;k++)u[k]=+(h[k]-(k%2?g:z)).toFixed(3)}else for(d[e]=[],"m"==h[0]&&(w=h[1]+g,E=h[2]+z),u=0,k=h.length;u<k;u++)d[e][u]=h[u];h=d[e].length;switch(d[e][0]){case "z":g=w;z=E;break;case "h":g+=+d[e][h-1];break;case "v":z+=+d[e][h-1];break;default:g+=+d[e][h-2],z+=+d[e][h-1]}}d.toString=a._path2string;c.rel=Va(d);return d},
jb=a._pathToAbsolute=function(b){var c=Ha(b),d;if(c.abs)return Va(c.abs);a.is(b,n)&&a.is(b&&b[0],n)||(b=a.parsePathString(b));if(!b||!b.length)return d=["M",0,0],d.toString=a._path2string,d;var g=0,z=0,w=0,E=0,e=0;d=[];"M"==b[0][0]&&(g=+b[0][1],z=+b[0][2],w=g,E=z,e++,d[0]=["M",g,z]);for(var I=3==b.length&&"M"==b[0][0]&&"R"==b[1][0].toUpperCase()&&"Z"==b[2][0].toUpperCase(),u,h=e,k=b.length;h<k;h++){d.push(e=[]);u=b[h];if(u[0]!=Xa.call(u[0]))switch(e[0]=Xa.call(u[0]),e[0]){case "A":e[1]=u[1];e[2]=
u[2];e[3]=u[3];e[4]=u[4];e[5]=u[5];e[6]=+(u[6]+g);e[7]=+(u[7]+z);break;case "V":e[1]=+u[1]+z;break;case "H":e[1]=+u[1]+g;break;case "R":for(var A=[g,z].concat(u.slice(1)),l=2,f=A.length;l<f;l++)A[l]=+A[l]+g,A[++l]=+A[l]+z;d.pop();d=d.concat(F(A,I));break;case "M":w=+u[1]+g,E=+u[2]+z;default:for(l=1,f=u.length;l<f;l++)e[l]=+u[l]+(l%2?g:z)}else if("R"==u[0])A=[g,z].concat(u.slice(1)),d.pop(),d=d.concat(F(A,I)),e=["R"].concat(u.slice(-2));else for(A=0,l=u.length;A<l;A++)e[A]=u[A];switch(e[0]){case "Z":g=
w;z=E;break;case "H":g=e[1];break;case "V":z=e[1];break;case "M":w=e[e.length-2],E=e[e.length-1];default:g=e[e.length-2],z=e[e.length-1]}}d.toString=a._path2string;c.abs=Va(d);return d},pc=function(a,b,c,d){return[a,b,c,d,c,d]},ub=function(a,b,c,d,g,z){var w=1/3,e=2/3;return[w*a+e*c,w*b+e*d,w*g+e*c,w*z+e*d,g,z]},qc=function(a,b,c,d,g,z,w,e,E,I){var u=120*Ba/180,h=ha*(+g||0),k=[],A,l=ca(function(a,b,c){var d=a*ia(c)-b*Ea(c);a=a*Ea(c)+b*ia(c);return{x:d,y:a}});if(I)P=I[0],A=I[1],z=I[2],f=I[3];else{A=
l(a,b,-h);a=A.x;b=A.y;A=l(e,E,-h);e=A.x;E=A.y;ia(ha*g);Ea(ha*g);A=(a-e)/2;P=(b-E)/2;f=A*A/(c*c)+P*P/(d*d);1<f&&(f=fa(f),c*=f,d*=f);var f=c*c,D=d*d,f=(z==w?-1:1)*fa($((f*D-f*P*P-D*A*A)/(f*P*P+D*A*A)));z=f*c*P/d+(a+e)/2;var f=f*-d*A/c+(b+E)/2,P=sa.asin(((b-f)/d).toFixed(9));A=sa.asin(((E-f)/d).toFixed(9));P=a<z?Ba-P:P;A=e<z?Ba-A:A;0>P&&(P=2*Ba+P);0>A&&(A=2*Ba+A);w&&P>A&&(P-=2*Ba);!w&&A>P&&(A-=2*Ba)}if($(A-P)>u){var k=A,D=e,n=E;A=P+u*(w&&A>P?1:-1);e=z+c*ia(A);E=f+d*Ea(A);k=qc(e,E,c,d,g,0,w,D,n,[A,k,
z,f])}z=A-P;g=ia(P);u=Ea(P);w=ia(A);A=Ea(A);z=sa.tan(z/4);c=4/3*c*z;z*=4/3*d;d=[a,b];a=[a+c*u,b-z*g];b=[e+c*A,E-z*w];e=[e,E];a[0]=2*d[0]-a[0];a[1]=2*d[1]-a[1];if(I)return[a,b,e].concat(k);k=[a,b,e].concat(k).join().split(",");I=[];e=0;for(E=k.length;e<E;e++)I[e]=e%2?l(k[e-1],k[e],h).y:l(k[e],k[e+1],h).x;return I},Pa=function(a,b,c,d,g,z,w,e,E){var I=1-E;return{x:oa(I,3)*a+3*oa(I,2)*E*c+3*I*E*E*g+oa(E,3)*w,y:oa(I,3)*b+3*oa(I,2)*E*d+3*I*E*E*z+oa(E,3)*e}},Bb=ca(function(a,b,c,d,g,z,w,e){var E=g-2*c+
a-(w-2*g+c),I=2*(c-a)-2*(g-c),u=a-c,h=(-I+fa(I*I-4*E*u))/2/E,E=(-I-fa(I*I-4*E*u))/2/E,k=[b,e],A=[a,w];"1e12"<$(h)&&(h=.5);"1e12"<$(E)&&(E=.5);0<h&&1>h&&(h=Pa(a,b,c,d,g,z,w,e,h),A.push(h.x),k.push(h.y));0<E&&1>E&&(h=Pa(a,b,c,d,g,z,w,e,E),A.push(h.x),k.push(h.y));E=z-2*d+b-(e-2*z+d);I=2*(d-b)-2*(z-d);u=b-d;h=(-I+fa(I*I-4*E*u))/2/E;E=(-I-fa(I*I-4*E*u))/2/E;"1e12"<$(h)&&(h=.5);"1e12"<$(E)&&(E=.5);0<h&&1>h&&(h=Pa(a,b,c,d,g,z,w,e,h),A.push(h.x),k.push(h.y));0<E&&1>E&&(h=Pa(a,b,c,d,g,z,w,e,E),A.push(h.x),
k.push(h.y));return{min:{x:S[K](0,A),y:S[K](0,k)},max:{x:ta[K](0,A),y:ta[K](0,k)}}}),z=a._path2curve=ca(function(a,b){var c=!b&&Ha(a);if(!b&&c.curve)return Va(c.curve);var d=jb(a),g=b&&jb(b),z={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},w={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},e=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];a[0]in{T:1,Q:1}||(b.qx=b.qy=null);switch(a[0]){case "M":b.X=a[1];b.Y=a[2];break;case "A":a=["C"].concat(qc[K](0,[b.x,b.y].concat(a.slice(1))));break;case "S":c=
b.x+(b.x-(b.bx||b.x));d=b.y+(b.y-(b.by||b.y));a=["C",c,d].concat(a.slice(1));break;case "T":b.qx=b.x+(b.x-(b.qx||b.x));b.qy=b.y+(b.y-(b.qy||b.y));a=["C"].concat(ub(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case "Q":b.qx=a[1];b.qy=a[2];a=["C"].concat(ub(b.x,b.y,a[1],a[2],a[3],a[4]));break;case "L":a=["C"].concat(pc(b.x,b.y,a[1],a[2]));break;case "H":a=["C"].concat(pc(b.x,b.y,a[1],b.y));break;case "V":a=["C"].concat(pc(b.x,b.y,b.x,a[1]));break;case "Z":a=["C"].concat(pc(b.x,b.y,b.X,b.Y))}return a},E=function(a,
b){if(7<a[b].length){a[b].shift();for(var c=a[b];c.length;)a.splice(b++,0,["C"].concat(c.splice(0,6)));a.splice(b,1);h=ta(d.length,g&&g.length||0)}},I=function(a,b,c,z,w){a&&b&&"M"==a[w][0]&&"M"!=b[w][0]&&(b.splice(w,0,["M",z.x,z.y]),c.bx=0,c.by=0,c.x=a[w][1],c.y=a[w][2],h=ta(d.length,g&&g.length||0))},u=0,h=ta(d.length,g&&g.length||0);for(;u<h;u++){d[u]=e(d[u],z);E(d,u);g&&(g[u]=e(g[u],w));g&&E(g,u);I(d,g,z,w,u);I(g,d,w,z,u);var k=d[u],A=g&&g[u],l=k.length,f=g&&A.length;z.x=k[l-2];z.y=k[l-1];z.bx=
L(k[l-4])||z.x;z.by=L(k[l-3])||z.y;w.bx=g&&(L(A[f-4])||w.x);w.by=g&&(L(A[f-3])||w.y);w.x=g&&A[f-2];w.y=g&&A[f-1]}g||(c.curve=Va(d));return g?[d,g]:d},null,Va);a._parseDots=ca(function(b){for(var c=[],d=0,g=b.length;d<g;d++){var z={},w=b[d].match(/^([^:]*):?([\d\.]*)/);z.color=a.getRGB(w[1]);if(z.color.error)return null;z.opacity=z.color.opacity;z.color=z.color.hex;w[2]&&(z.offset=w[2]+"%");c.push(z)}d=1;for(g=c.length-1;d<g;d++)if(!c[d].offset){b=L(c[d-1].offset||0);w=0;for(z=d+1;z<g;z++)if(c[z].offset){w=
c[z].offset;break}w||(w=100,z=g);w=L(w);for(w=(w-b)/(z-d+1);d<z;d++)b+=w,c[d].offset=b+"%"}return c});var w=a._tear=function(a,b){a==b.top&&(b.top=a.prev);a==b.bottom&&(b.bottom=a.next);a.next&&(a.next.prev=a.prev);a.prev&&(a.prev.next=a.next)};a._tofront=function(a,b){if(b.top===a)return!1;w(a,b);a.next=null;a.prev=b.top;b.top.next=a;b.top=a;return!0};a._toback=function(a,b){if(b.bottom===a)return!1;w(a,b);a.next=b.bottom;a.prev=null;b.bottom.prev=a;b.bottom=a;return!0};a._insertafter=function(a,
b,c,d){w(a,c);a.parent=d;b===d.top&&(d.top=a);b.next&&(b.next.prev=a);a.next=b.next;a.prev=b;b.next=a};a._insertbefore=function(a,b,c,d){w(a,c);a.parent=d;b===d.bottom&&(d.bottom=a);b.prev&&(b.prev.next=a);a.prev=b.prev;b.prev=a;a.next=b};var E=a.toMatrix=function(a,b){var c=Ga(a),d={_:{transform:""},getBBox:function(){return c}};I(d,b);return d.matrix};a.transformPath=function(a,b){return G(a,E(a,b))};var I=a._extractTransform=function(b,c){if(null==c)return b._.transform;c=u(c).replace(/\.{3}|\u2026/g,
b._.transform||"");var d=a.parseTransformString(c),g=0,z=0,w=0,e=1,E=1,I=b._,w=new p;I.transform=d||[];if(d)for(var z=0,h=d.length;z<h;z++){var k=d[z],A=k.length,l=u(k[0]).toLowerCase(),f=k[0]!=l,P=f?w.invert():0,D;"t"==l&&3==A?f?(A=P.x(0,0),l=P.y(0,0),f=P.x(k[1],k[2]),P=P.y(k[1],k[2]),w.translate(f-A,P-l)):w.translate(k[1],k[2]):"r"==l?2==A?(D=D||b.getBBox(1),w.rotate(k[1],D.x+D.width/2,D.y+D.height/2),g+=k[1]):4==A&&(f?(f=P.x(k[2],k[3]),P=P.y(k[2],k[3]),w.rotate(k[1],f,P)):w.rotate(k[1],k[2],k[3]),
g+=k[1]):"s"==l?2==A||3==A?(D=D||b.getBBox(1),w.scale(k[1],k[A-1],D.x+D.width/2,D.y+D.height/2),e*=k[1],E*=k[A-1]):5==A&&(f?(f=P.x(k[3],k[4]),P=P.y(k[3],k[4]),w.scale(k[1],k[2],f,P)):w.scale(k[1],k[2],k[3],k[4]),e*=k[1],E*=k[2]):"m"==l&&7==A&&w.add(k[1],k[2],k[3],k[4],k[5],k[6]);I.dirtyT=1;b.matrix=w}b.matrix=w;I.sx=e;I.sy=E;I.deg=g;I.dx=z=w.e;I.dy=w=w.f;1==e&&1==E&&!g&&I.bbox?(I.bbox.x+=+z,I.bbox.y+=+w):I.dirtyT=1},g=function(a){var b=a[0];switch(b.toLowerCase()){case "t":return[b,0,0];case "m":return[b,
1,0,0,1,0,0];case "r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case "s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},ka=a._equaliseTransform=function(b,c){c=u(c).replace(/\.{3}|\u2026/g,b);b=a.parseTransformString(b)||[];c=a.parseTransformString(c)||[];for(var d=ta(b.length,c.length),z=[],w=[],e=0,E,I,h,k;e<d;e++){h=b[e]||g(c[e]);k=c[e]||g(h);if(h[0]!=k[0]||"r"==h[0].toLowerCase()&&(h[2]!=k[2]||h[3]!=k[3])||"s"==h[0].toLowerCase()&&(h[3]!=k[3]||h[4]!=k[4]))return;z[e]=[];w[e]=
[];E=0;for(I=ta(h.length,k.length);E<I;E++)E in h&&(z[e][E]=h[E]),E in k&&(w[e][E]=k[E])}return{from:z,to:w}};a._getContainer=function(b,c,d,g){var z;z=null!=g||a.is(b,"object")?b:r.doc.getElementById(b);if(null!=z)return z.tagName?null==c?{container:z,width:z.style.pixelWidth||z.offsetWidth,height:z.style.pixelHeight||z.offsetHeight}:{container:z,width:c,height:d}:{container:1,x:b,y:c,width:d,height:g}};a.pathToRelative=Rb;a._engine={};a.path2curve=z;a.matrix=function(a,b,c,d,g,z){return new p(a,
b,c,d,g,z)};(function(b){function c(a){return a[0]*a[0]+a[1]*a[1]}function d(a){var b=fa(c(a));a[0]&&(a[0]/=b);a[1]&&(a[1]/=b)}b.add=function(a,b,c,d,g,z){var w=[[],[],[]],e=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]];b=[[a,c,g],[b,d,z],[0,0,1]];a&&a instanceof p&&(b=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]);for(a=0;3>a;a++)for(c=0;3>c;c++){for(d=g=0;3>d;d++)g+=e[a][d]*b[d][c];w[a][c]=g}this.a=w[0][0];this.b=w[1][0];this.c=w[0][1];this.d=w[1][1];this.e=w[0][2];this.f=w[1][2]};b.invert=function(){var a=
this.a*this.d-this.b*this.c;return new p(this.d/a,-this.b/a,-this.c/a,this.a/a,(this.c*this.f-this.d*this.e)/a,(this.b*this.e-this.a*this.f)/a)};b.clone=function(){return new p(this.a,this.b,this.c,this.d,this.e,this.f)};b.translate=function(a,b){this.add(1,0,0,1,a,b)};b.scale=function(a,b,c,d){null==b&&(b=a);(c||d)&&this.add(1,0,0,1,c,d);this.add(a,0,0,b,0,0);(c||d)&&this.add(1,0,0,1,-c,-d)};b.rotate=function(b,c,d){b=a.rad(b);c=c||0;d=d||0;var g=+ia(b).toFixed(9);b=+Ea(b).toFixed(9);this.add(g,
b,-b,g,c,d);this.add(1,0,0,1,-c,-d)};b.x=function(a,b){return a*this.a+b*this.c+this.e};b.y=function(a,b){return a*this.b+b*this.d+this.f};b.get=function(a){return+this[u.fromCharCode(97+a)].toFixed(4)};b.toString=function(){return a.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()};b.toMatrixString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+
")"};b.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"};b.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]};b.split=function(){var b={};b.dx=this.e;b.dy=this.f;var g=[[this.a,this.c],[this.b,this.d]];b.scalex=fa(c(g[0]));d(g[0]);b.shear=g[0][0]*g[1][0]+g[0][1]*g[1][1];g[1]=[g[1][0]-g[0][0]*b.shear,g[1][1]-g[0][1]*
b.shear];b.scaley=fa(c(g[1]));d(g[1]);b.shear/=b.scaley;var z=-g[0][1],g=g[1][1];0>g?(b.rotate=a.deg(sa.acos(g)),0>z&&(b.rotate=360-b.rotate)):b.rotate=a.deg(sa.asin(z));b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate);b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate;b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b};b.toTransformString=function(a){a=a||this.split();return a.isSimple?(a.scalex=+a.scalex.toFixed(4),
a.scaley=+a.scaley.toFixed(4),a.rotate=+a.rotate.toFixed(4),(a.dx||a.dy?"t"+[a.dx,a.dy]:"")+(1!=a.scalex||1!=a.scaley?"s"+[a.scalex,a.scaley,0,0]:"")+(a.rotate?"r"+[a.rotate,0,0]:"")):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}})(p.prototype);var P=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);"Apple Computer, Inc."==navigator.vendor&&(P&&4>P[1]||"iP"==navigator.platform.slice(0,2))||"Google Inc."==navigator.vendor&&P&&
8>P[1]?O.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()});return!0}:O.safari=Tb;for(var ib=function(){this.returnValue=!1},cc=function(){return this.originalEvent.preventDefault()},Dc=function(){this.cancelBubble=!0},Kb=function(){return this.originalEvent.stopPropagation()},wc=a.addEvent=function(){if(r.doc.addEventListener)return function(a,b,c,d){var g=va&&M[b]||b,z;M[T[b]]&&(g=M[T[b]]);z=function(g){var z=r.doc.documentElement.scrollTop||
r.doc.body.scrollTop,w=r.doc.documentElement.scrollLeft||r.doc.body.scrollLeft,e;if(ya&&M.hasOwnProperty(va?b:T[b]))for(var E=0,I=g.targetTouches&&g.targetTouches.length;E<I;E++)if(e=g.targetTouches[E].target,e==a||"tspan"==e.nodeName&&e.parentNode==a){e=g;g=g.targetTouches[E];g.originalEvent=e;g.preventDefault=cc;g.stopPropagation=Kb;break}return c.call(d,g,g.clientX+w,g.clientY+z)};a.addEventListener(g,z,!1);return function(){a.removeEventListener(g,z,!1);return!0}};if(r.doc.attachEvent)return function(a,
b,c,d){var g=function(a){a=a||r.win.event;var b=a.clientX+(r.doc.documentElement.scrollLeft||r.doc.body.scrollLeft),g=a.clientY+(r.doc.documentElement.scrollTop||r.doc.body.scrollTop);a.preventDefault=a.preventDefault||ib;a.stopPropagation=a.stopPropagation||Dc;return c.call(d,a,b,g)};a.attachEvent("on"+b,g);return function(){a.detachEvent("on"+b,g);return!0}}}(),xc=[],R=function(b){for(var c=b.clientX,g=b.clientY,z=r.doc.documentElement.scrollTop||r.doc.body.scrollTop,w=r.doc.documentElement.scrollLeft||
r.doc.body.scrollLeft,e,E=xc.length;E--;){e=xc[E];if(ya&&"touchmove"===b.type)for(var I=b.touches.length,u;I--;){if(u=b.touches[I],u.identifier==e.el._drag.id){c=u.clientX;g=u.clientY;(b.originalEvent?b.originalEvent:b).preventDefault();break}}else b.preventDefault();if(!e.el.removed){var I=a._engine.getNode(e.el),h=I.nextSibling,k=I.parentNode,A=I.style.display;r.win.opera&&k.removeChild(I);I.style.display="none";u=e.el.paper.getElementByPoint(c,g);I.style.display=A;r.win.opera&&(h?k.insertBefore(I,
h):k.appendChild(I));u&&d("raphael.drag.over."+e.el.id,e.el,u);c+=w;g+=z;d("raphael.drag.move."+e.el.id,e.move_scope||e.el,c-e.el._drag.x,g-e.el._drag.y,c,g,b)}}},Na=function(b){a.undragmove(R).undragend(Na);a.unmousemove(R).unmouseup(Na);for(var c=xc.length,g;c--;)g=xc[c],g.el._drag={},d("raphael.drag.end."+g.el.id,g.end_scope||g.start_scope||g.move_scope||g.el,b);xc=[]},ea=a.el={},Oa=ma.length;Oa--;)(function(b){a[b]=ea[b]=function(c,d){a.is(c,"function")&&(this.events=this.events||[],this.events.push({name:b,
f:c,unbind:wc(this.shape||this.node||r.doc,b,c,d||this)}));return this};a["un"+b]=ea["un"+b]=function(a){for(var c=this.events||[],d=c.length;d--;)if(c[d].name==b&&c[d].f==a){c[d].unbind();c.splice(d,1);!c.length&&delete this.events;break}return this}})(ma[Oa]);ea.data=function(b,c){var g=tb[this.id]=tb[this.id]||{};if(1==arguments.length){if(a.is(b,"object")){for(var z in b)b.hasOwnProperty(z)&&this.data(z,b[z]);return this}d("raphael.data.get."+this.id,this,g[b],b);return g[b]}g[b]=c;d("raphael.data.set."+
this.id,this,c,b);return this};ea.removeData=function(a){null==a?delete tb[this.id]:tb[this.id]&&delete tb[this.id][a];return this};ea.getData=function(){return Q(tb[this.id]||{})};var ra=[],dd=function(){this.untrack=wc(r.doc,"mouseup",cd,this)},cd=function(){this.untrack();this.untrack=null;return this.fn&&this.fn.apply(this.scope||this.el,arguments)};ea.mouseup=function(b,c,d){if(!d)return a.mouseup.apply(this,arguments);ra.push(d={el:this,fn:b,scope:c});d.unbind=wc(this.shape||this.node||r.doc,
"mousedown",dd,d);return this};ea.unmouseup=function(b){for(var c=ra.length,d;c--;)ra[c].el===this&&ra[c].fn===b&&(d=ra[c],d.unbind(),d.untrack&&d.untrack(),ra.splice(c,1));return d?this:a.unmouseup.apply(this,arguments)};ea.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)};ea.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var Ec=[];ea.drag=function(b,c,g,z,w,e){function E(I){var u=r.doc.documentElement.scrollTop||r.doc.body.scrollTop,h=r.doc.documentElement.scrollLeft||
r.doc.body.scrollLeft;this._drag.x=I.clientX+h;this._drag.y=I.clientY+u;this._drag.id=I.identifier;ya&&!va&&!xc.length&&a.dragmove(R).dragend(Na);!xc.length&&a.mousemove(R).mouseup(Na);xc.push({el:this,move_scope:z,start_scope:w,end_scope:e});c&&d.on("raphael.drag.start."+this.id,c);b&&d.on("raphael.drag.move."+this.id,b);g&&d.on("raphael.drag.end."+this.id,g);d("raphael.drag.start."+this.id,w||z||this,I.clientX+h,I.clientY+u,I)}this._drag={};Ec.push({el:this,start:E});ya&&!va&&this.dragstart(E);
this.mousedown(E);return this};ea.onDragOver=function(a){a?d.on("raphael.drag.over."+this.id,a):d.unbind("raphael.drag.over."+this.id)};ea.undrag=function(){for(var b=Ec.length;b--;)Ec[b].el==this&&(this.unmousedown(Ec[b].start),Ec.splice(b,1),d.unbind("raphael.drag.*."+this.id));!Ec.length&&a.unmousemove(R).unmouseup(Na);delete this._drag};ea.follow=function(b,c,d){if(b.removed||b.constructor!==a.el.constructor)return this;b.followers.push({el:this,stalk:d={before:"insertBefore",after:"insertAfter"}[d],
cb:c});d&&this[d](b);return this};ea.unfollow=function(b){if(b.removed||b.constructor!==a.el.constructor)return this;for(var c=0,d=b.followers.length;c<d;c++)if(b.followers[c].el===this){b.followers.splice(c,1);break}return this};O.hide=function(){this.canvas.style.visibility="hidden";return this};O.show=function(){this.canvas.style.visibility="";return this};O.group=function(){var b=arguments,c=D(b,!0),b=a._engine.group(this,b[0],c);return this.__set__&&this.__set__.push(b),this._elementsById[b.id]=
b};O.circle=function(){var b=arguments,c=D(b,!0),b=V(b,"cx",0,"cy",0,"r",0,"fill","none","stroke","#000"),c=a._engine.circle(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};O.rect=function(){var b=arguments,c=D(b,!0),b=V(b,"x",0,"y",0,"width",0,"height",0,"r",0,"fill","none","stroke","#000"),c=a._engine.rect(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};O.ellipse=function(){var b=arguments,c=D(b,!0),b=V(b,"x",0,"y",0,"rx",0,"ry",0,
"fill","none","stroke","#000"),c=a._engine.ellipse(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};O.path=function(){var b=arguments,c=D(b,!0),b=V(b,"path","","fill","none","stroke","#000"),c=a._engine.path(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};O.image=function(){var b=arguments,c=D(b,!0),b=V(b,"src","about:blank","x",0,"y",0,"width",0,"height",0);out=a._engine.image(this,b,c);return this.__set__&&this.__set__.push(out),this._elementsById[out.id]=
out};O.text=function(){var b=arguments,c=D(b,!0),b=V(b,"x",0,"y",0,"text","","stroke","none","fill","#000","text-anchor","middle","vertical-align","middle"),c=a._engine.text(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};O.set=function(b){!a.is(b,"array")&&(b=B.call(arguments,0,arguments.length));var c=new yc(b);this.__set__&&this.__set__.push(c);return c};O.setStart=function(a){this.__set__=a||this.set()};O.setFinish=function(a){a=this.__set__;delete this.__set__;
return a};O.setSize=function(b,c){return a._engine.setSize.call(this,b,c)};O.setViewBox=function(b,c,d,g,z){return a._engine.setViewBox.call(this,b,c,d,g,z)};O.top=O.bottom=null;O.raphael=a;O.getElementByPoint=function(a,b){var c,d,g=this.canvas,z=r.doc.elementFromPoint(a,b);if(r.win.opera&&"svg"==z.tagName){d=g.getBoundingClientRect();c=g.ownerDocument;var w=c.body,e=c.documentElement;c=d.top+(r.win.pageYOffset||e.scrollTop||w.scrollTop)-(e.clientTop||w.clientTop||0);d=d.left+(r.win.pageXOffset||
e.scrollLeft||w.scrollLeft)-(e.clientLeft||w.clientLeft||0);w=g.createSVGRect();w.x=a-d;w.y=b-c;w.width=w.height=1;c=g.getIntersectionList(w,null);c.length&&(z=c[c.length-1])}if(!z)return null;for(;z.parentNode&&z!=g.parentNode&&!z.raphael;)z=z.parentNode;z==this.canvas.parentNode&&(z=g);return z=z&&z.raphael?this.getById(z.raphaelid):null};O.getElementsByBBox=function(b){var c=this.set();this.forEach(function(d){a.isBBoxIntersect(d.getBBox(),b)&&c.push(d)});return c};O.getById=function(a){return this._elementsById[a]||
null};O.forEach=function(a,b){for(var c=this.bottom;c&&!1!==a.call(b,c);)c=c.next;return this};O.getElementsByPoint=function(a,b){var c=this.set();this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)});return c};ea.isPointInside=function(b,c){var d=this.realPath=this.realPath||A[this.type](this),g;return a.isPointInsidePath((g=this.attr("transform"))&&g.length&&a.transformPath(d,g)||d,b,c)};ea.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=
A[this.type](this),b.bboxwt=Ga(this.realPath),b.bboxwt.toString=t,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=A[this.type](this);b.bbox=Ga(G(this.realPath,this.matrix));b.bbox.toString=t;b.dirty=b.dirtyT=0}return b.bbox};ea.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());this.__set__&&this.__set__.push(a);return a};ea.glow=function(a){if("text"==this.type)return null;a=a||{};var b=(a.width||
10)+(+this.attr("stroke-width")||1),c=a.fill||!1,d=a.opacity||.5,g=a.offsetx||0,z=a.offsety||0;a=a.color||"#000";for(var w=b/2,e=this.paper,E=e.set(),I=this.realPath||A[this.type](this),I=this.matrix?G(I,this.matrix):I,u=1;u<w+1;u++)E.push(e.path(I).attr({stroke:a,fill:c?a:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b/w*u).toFixed(3),opacity:+(d/w).toFixed(3)}));return E.insertBefore(this).translate(g,z)};var Ja=function(b,d,g,z,w,e,E,I,u){return null==u?c(b,d,g,z,w,
e,E,I):a.findDotsAtSegment(b,d,g,z,w,e,E,I,l(b,d,g,z,w,e,E,I,u))},Y=function(b,c){return function(d,g,w){d=z(d);for(var e,E,I,u,h="",k={},A=0,f=0,l=d.length;f<l;f++){I=d[f];if("M"==I[0])e=+I[1],E=+I[2];else{u=Ja(e,E,I[1],I[2],I[3],I[4],I[5],I[6]);if(A+u>g){if(c&&!k.start){e=Ja(e,E,I[1],I[2],I[3],I[4],I[5],I[6],g-A);h+=["C"+e.start.x,e.start.y,e.m.x,e.m.y,e.x,e.y];if(w)return h;k.start=h;h=["M"+e.x,e.y+"C"+e.n.x,e.n.y,e.end.x,e.end.y,I[5],I[6]].join();A+=u;e=+I[5];E=+I[6];continue}if(!b&&!c)return e=
Ja(e,E,I[1],I[2],I[3],I[4],I[5],I[6],g-A),{x:e.x,y:e.y,alpha:e.alpha}}A+=u;e=+I[5];E=+I[6]}h+=I.shift()+I}k.end=h;e=b?A:c?k:a.findDotsAtSegment(e,E,I[0],I[1],I[2],I[3],I[4],I[5],1);e.alpha&&(e={x:e.x,y:e.y,alpha:e.alpha});return e}},$c=Y(1),ad=Y(),Uc=Y(0,1);a.getTotalLength=$c;a.getPointAtLength=ad;a.getSubpath=function(a,b,c){if(1E-6>this.getTotalLength(a)-c)return Uc(a,b).end;a=Uc(a,c,1);return b?Uc(a,b).end:a};ea.getTotalLength=function(){if("path"==this.type)return this.node.getTotalLength?this.node.getTotalLength():
$c(this.attrs.path)};ea.getPointAtLength=function(a){if("path"==this.type)return ad(this.attrs.path,a)};ea.getSubpath=function(b,c){if("path"==this.type)return a.getSubpath(this.attrs.path,b,c)};var sc=a.easing_formulas={linear:function(a){return a},"<":function(a){return oa(a,1.7)},">":function(a){return oa(a,.48)},"<>":function(a){var b=.48-a/1.04,c=fa(.1734+b*b);a=c-b;a=oa($(a),1/3)*(0>a?-1:1);b=-c-b;b=oa($(b),1/3)*(0>b?-1:1);a=a+b+.5;return 3*(1-a)*a*a+a*a*a},backIn:function(a){return a*a*(2.70158*
a-1.70158)},backOut:function(a){--a;return a*a*(2.70158*a+1.70158)+1},elastic:function(a){return a==!!a?a:oa(2,-10*a)*Ea(2*(a-.075)*Ba/.3)+1},bounce:function(a){a<1/2.75?a*=7.5625*a:a<2/2.75?(a-=1.5/2.75,a=7.5625*a*a+.75):a<2.5/2.75?(a-=2.25/2.75,a=7.5625*a*a+.9375):(a-=2.625/2.75,a=7.5625*a*a+.984375);return a}};sc.easeIn=sc["ease-in"]=sc["<"];sc.easeOut=sc["ease-out"]=sc[">"];sc.easeInOut=sc["ease-in-out"]=sc["<>"];sc["back-in"]=sc.backIn;sc["back-out"]=sc.backOut;var bb=[],Zc=f.requestAnimationFrame||
f.webkitRequestAnimationFrame||f.mozRequestAnimationFrame||f.oRequestAnimationFrame||f.msRequestAnimationFrame||function(a){setTimeout(a,16)},Tc=function(){for(var b=+new Date,c=0;c<bb.length;c++){var g=bb[c];if(!g.el.removed&&!g.paused){var z=b-g.start,w=g.ms,e=g.easing,E=g.from,I=g.diff,u=g.to,k=g.el,A={},f,l={},P;g.initstatus?(z=(g.initstatus*g.anim.top-g.prev)/(g.percent-g.prev)*w,g.status=g.initstatus,delete g.initstatus,g.stop&&bb.splice(c--,1)):g.status=(g.prev+z/w*(g.percent-g.prev))/g.anim.top;
if(!(0>z))if(z<w){var D=e(z/w),n;for(n in E)if(E.hasOwnProperty(n)){switch(Ib[n]){case J:f=+E[n]+D*w*I[n];break;case "colour":f="rgb("+[Vc(La(E[n].r+D*w*I[n].r)),Vc(La(E[n].g+D*w*I[n].g)),Vc(La(E[n].b+D*w*I[n].b))].join()+")";break;case "path":f=[];z=0;for(e=E[n].length;z<e;z++){f[z]=[E[n][z][0]];u=1;for(l=E[n][z].length;u<l;u++)f[z][u]=(+E[n][z][u]+D*w*I[n][z][u]).toFixed(4);f[z]=f[z].join(" ")}f=f.join(" ");break;case "transform":if(I[n].real)for(f=[],z=0,e=E[n].length;z<e;z++)for(f[z]=[E[n][z][0]],
u=1,l=E[n][z].length;u<l;u++)f[z][u]=E[n][z][u]+D*w*I[n][z][u];else f=function(a){return+E[n][a]+D*w*I[n][a]},f=[["m",f(0),f(1),f(2),f(3),f(4),f(5)]];break;case "csv":if("clip-rect"==n)for(f=[],z=4;z--;)f[z]=+E[n][z]+D*w*I[n][z];break;default:for(e=[].concat(E[n]),f=[],z=k.ca[n].length;z--;)f[z]=+e[z]+D*w*I[n][z]}A[n]=f}k.attr(A);(function(a,b,c){setTimeout(function(){d("raphael.anim.frame."+a,b,c)})})(k.id,k,g.anim)}else{(function(b,c,g){setTimeout(function(){d("raphael.anim.frame."+c.id,c,g);d("raphael.anim.finish."+
c.id,c,g);a.is(b,"function")&&b.call(c)})})(g.callback,k,g.anim);k.attr(u);bb.splice(c--,1);if(1<g.repeat&&!g.next){for(P in u)u.hasOwnProperty(P)&&(l[P]=g.totalOrigin[P]);g.el.attr(l);h(g.anim,g.el,g.anim.percents[0],null,g.totalOrigin,g.repeat-1)}g.next&&!g.stop&&h(g.anim,g.el,g.next,null,g.totalOrigin,g.repeat)}}}a.svg&&k&&k.paper&&k.paper.safari();bb.length&&Zc(Tc)},Vc=function(a){return 255<a?255:0>a?0:a};ea.animateWith=function(b,c,g,d,z,w){if(this.removed)return w&&w.call(this),this;g=g instanceof
e?g:a.animation(g,d,z,w);h(g,this,g.percents[0],null,this.attr());g=0;for(d=bb.length;g<d;g++)if(bb[g].anim==c&&bb[g].el==b){bb[d-1].start=bb[g].start;break}return this};ea.onAnimation=function(a){a?d.on("raphael.anim.frame."+this.id,a):d.unbind("raphael.anim.frame."+this.id);return this};e.prototype.delay=function(a){var b=new e(this.anim,this.ms);b.times=this.times;b.del=+a||0;return b};e.prototype.repeat=function(a){var b=new e(this.anim,this.ms);b.del=this.del;b.times=sa.floor(ta(a,0))||1;return b};
a.animation=function(b,c,g,d){if(b instanceof e)return b;if(a.is(g,"function")||!g)d=d||g||null,g=null;b=Object(b);c=+c||0;var z={},w,E;for(E in b)b.hasOwnProperty(E)&&L(E)!=E&&L(E)+"%"!=E&&(w=!0,z[E]=b[E]);return w?(g&&(z.easing=g),d&&(z.callback=d),new e({100:z},c)):new e(b,c)};ea.animate=function(b,c,g,d){if(this.removed)return d&&d.call(this),this;b=b instanceof e?b:a.animation(b,c,g,d);h(b,this,b.percents[0],null,this.attr());return this};ea.setTime=function(a,b){a&&null!=b&&this.status(a,S(b,
a.ms)/a.ms);return this};ea.status=function(a,b){var c=[],g=0,d,z;if(null!=b)return h(a,this,-1,S(b,1)),this;for(d=bb.length;g<d;g++)if(z=bb[g],z.el.id==this.id&&(!a||z.anim==a)){if(a)return z.status;c.push({anim:z.anim,status:z.status})}return a?0:c};ea.pause=function(a){for(var b=0;b<bb.length;b++)bb[b].el.id!=this.id||a&&bb[b].anim!=a||!1===d("raphael.anim.pause."+this.id,this,bb[b].anim)||(bb[b].paused=!0);return this};ea.resume=function(a){for(var b=0;b<bb.length;b++)if(bb[b].el.id==this.id&&
(!a||bb[b].anim==a)){var c=bb[b];!1!==d("raphael.anim.resume."+this.id,this,c.anim)&&(delete c.paused,this.status(c.anim,c.status))}return this};ea.stop=function(a){for(var b=0;b<bb.length;b++)bb[b].el.id!=this.id||a&&bb[b].anim!=a||!1!==d("raphael.anim.stop."+this.id,this,bb[b].anim)&&bb.splice(b--,1);return this};d.on("raphael.remove",k);d.on("raphael.clear",k);ea.toString=function(){return"Raphaël’s object"};ea.toFront=function(){if(this.removed)return this;var b=a._engine.getNode(this),c=this.parent,
g=this.followers,d;a._tofront(this,c)&&c.canvas.appendChild(b);b=0;for(c=g.length;b<c;b++)(d=g[b]).stalk&&d.el[d.stalk](this);return this};ea.toBack=function(){if(this.removed)return this;var b=a._engine.getNode(this),c=this.parent,g=this.followers,d;a._toback(this,c)&&c.canvas.insertBefore(b,c.canvas.firstChild);b=0;for(c=g.length;b<c;b++)(d=g[b]).stalk&&d.el[d.stalk](this);return this};ea.insertAfter=function(b){if(this.removed)return this;var c=a._engine.getNode(this),g=a._engine.getLastNode(b),
d=b.parent.canvas,z=this.followers,w;g.nextSibling?d.insertBefore(c,g.nextSibling):d.appendChild(c);a._insertafter(this,b,this.parent,b.parent);c=0;for(g=z.length;c<g;c++)(w=z[c]).stalk&&w.el[w.stalk](b);return this};ea.insertBefore=function(b){if(this.removed)return this;var c=a._engine.getNode(this),g=a._engine.getNode(b),d=this.followers,z;b.parent.canvas.insertBefore(c,g);a._insertbefore(this,b,this.parent,b.parent);this.parent=b.parent;c=0;for(g=d.length;c<g;c++)(z=d[c]).stalk&&z.el[z.stalk](b);
return this};ea.appendChild=function(b){if(this.removed||"group"!==this.type)return this;var c=this.followers,g,d,z;if(b.parent===this)return b.toFront(),this;d=a._engine.getNode(b);a._tear(b,b.parent);this.canvas.appendChild(d);b.parent=this;!this.bottom&&(this.bottom=b);b.prev=this.top;b.next=null;this.top&&(this.top.next=b);this.top=b;d=0;for(z=c.length;d<z;d++)(g=c[d]).stalk&&g.el[g.stalk](b);return this};ea.removeChild=function(b){if(this.removed||"group"!==this.type||b.parent!==this)return this;
var c=a._engine.getNode(b),g=this.paper;a._tear(b,this);g.canvas.appendChild(c);this.parent=g;!g.bottom&&(g.bottom=this);(this.prev=g.top)&&(g.top.next=this);g.top=this;this.next=null;return this};var yc=function(a){this.items=[];this.length=0;this.type="set";if(a)for(var b=0,c=a.length;b<c;b++)!a[b]||a[b].constructor!=ea.constructor&&a[b].constructor!=yc||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},nc=yc.prototype;nc.push=function(){for(var a,b,c=0,g=arguments.length;c<
g;c++)!(a=arguments[c])||a.constructor!=ea.constructor&&a.constructor!=yc||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this};nc.pop=function(){this.length&&delete this[this.length--];return this.items.pop()};nc.forEach=function(a,b){for(var c=0,g=this.items.length;c<g&&!1!==a.call(b,this.items[c],c);c++);return this};for(var yb in ea)ea.hasOwnProperty(yb)&&(nc[yb]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][K](c,b)})}}(yb));nc.attr=function(b,
c){if(b&&a.is(b,n)&&a.is(b[0],"object"))for(var g=0,d=b.length;g<d;g++)this.items[g].attr(b[g]);else for(g=0,d=this.items.length;g<d;g++)this.items[g].attr(b,c);return this};nc.clear=function(){for(;this.length;)this.pop()};nc.splice=function(a,b,c){a=0>a?ta(this.length+a,0):a;b=ta(0,S(this.length-a,isNaN(b)&&this.length||b));var g=[],d=[],z=[],w;for(w=2;w<arguments.length;w++)z.push(arguments[w]);for(w=0;w<b;w++)d.push(this[a+w]);for(;w<this.length-a;w++)g.push(this[a+w]);var e=z.length;for(w=0;w<
e+g.length;w++)this.items[a+w]=this[a+w]=w<e?z[w]:g[w-e];for(w=this.items.length=this.length-=b-e;this[w];)delete this[w++];return new yc(d)};nc.exclude=function(a){for(var b=0,c=this.length;b<c;b++)if(this[b]==a)return this.splice(b,1),!0};nc.animate=function(b,c,g,d){!a.is(g,"function")&&g||(d=g||null);var z=this.items.length,w=z,e=this,E;if(!z)return this;d&&(E=function(){!--z&&d.call(e)});g=a.is(g,"string")?g:E;c=a.animation(b,c,g,E);for(b=this.items[--w].animate(c);w--;)this.items[w]&&!this.items[w].removed&&
this.items[w].animateWith(b,c,c);return this};nc.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this};nc.getBBox=function(){for(var a=[],b=[],c=[],g=[],d=this.items.length;d--;)if(!this.items[d].removed){var z=this.items[d].getBBox();a.push(z.x);b.push(z.y);c.push(z.x+z.width);g.push(z.y+z.height)}a=S[K](0,a);b=S[K](0,b);c=ta[K](0,c);g=ta[K](0,g);return{x:a,y:b,x2:c,y2:g,width:c-a,height:g-b}};nc.clone=function(a){a=new yc;for(var b=0,c=this.items.length;b<
c;b++)a.push(this.items[b].clone());return a};nc.toString=function(){return"Raphaël‘s set"};nc.glow=function(a){var b=this.paper.set();this.forEach(function(c,g){var d=c.glow(a);null!=d&&d.forEach(function(a,c){b.push(a)})});return b};a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"],g;for(g in a.face)a.face.hasOwnProperty(g)&&(b.face[g]=a.face[g]);this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b];if(!a.svg){b.face["units-per-em"]=
da(a.face["units-per-em"],10);for(var d in a.glyphs)if(a.glyphs.hasOwnProperty(d)&&(c=a.glyphs[d],b.glyphs[d]={w:c.w,k:{},d:c.d&&"M"+c.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},c.k))for(var z in c.k)c.hasOwnProperty(z)&&(b.glyphs[d].k[z]=c.k[z])}return a};O.getFont=function(b,c,g,d){d=d||"normal";g=g||"normal";c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400;if(a.fonts){var z=a.fonts[b];if(!z){b=new RegExp("(^|\\s)"+b.replace(/[^\w\d\s+!~.:_-]/g,
"")+"(\\s|$)","i");for(var w in a.fonts)if(a.fonts.hasOwnProperty(w)&&b.test(w)){z=a.fonts[w];break}}var e;if(z)for(w=0,b=z.length;w<b&&(e=z[w],e.face["font-weight"]!=c||e.face["font-style"]!=g&&e.face["font-style"]||e.face["font-stretch"]!=d);w++);return e}};O.print=function(b,c,g,d,z,w,e){w=w||"middle";e=ta(S(e||0,1),-1);var E=u(g).split(""),I=0,h=0,k="";a.is(d,g)&&(d=this.getFont(d));if(d){g=(z||16)/d.face["units-per-em"];var A=d.face.bbox.split(gb);z=+A[0];var f=A[3]-A[1],l=0;w=+A[1]+("baseline"==
w?f+ +d.face.descent:f/2);for(var A=0,P=E.length;A<P;A++){if("\n"==E[A])h=n=I=0,l+=f;else var D=h&&d.glyphs[E[A-1]]||{},n=d.glyphs[E[A]],I=I+(h?(D.w||d.w)+(D.k&&D.k[E[A]]||0)+d.w*e:0),h=1;n&&n.d&&(k+=a.transformPath(n.d,["t",I*g,l*g,"s",g,g,z,w,"t",(b-z)/g,(c-w)/g]))}}return this.path(k).attr({fill:"#000",stroke:"none"})};O.add=function(b){if(a.is(b,"array"))for(var c=this.set(),g=0,d=b.length,z;g<d;g++)z=b[g]||{},na.hasOwnProperty(z.type)&&c.push(this[z.type]().attr(z));return c};a.format=function(b,
c){var g=a.is(c,n)?[0].concat(c):arguments;b&&a.is(b,"string")&&g.length-1&&(b=b.replace(Sa,function(a,b){return null==g[++b]?"":g[b]}));return b||""};a.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,g){var d=g;c.replace(b,function(a,b,c,g,z){b=b||g;d&&(b in d&&(d=d[b]),"function"==typeof d&&z&&(d=d()))});return d=(null==d||d==g?a:d)+""};return function(b,g){return String(b).replace(a,function(a,b){return c(a,b,g)})}}();a.ninja=
function(){ga?r.win.Raphael=X:delete Raphael;return a};var ed=a.vml&&.5||0;a.crispBound=ca(function(a,b,c,g,d){var z={},w;a=a||0;b=b||0;c=c||0;g=g||0;d=d||0;w=d%2/2+ed;z.x=La(a+w)-w;z.y=La(b+w)-w;z.width=La(a+c+w)-w-z.x;z.height=La(b+g+w)-w-z.y;z["stroke-width"]=d;0===z.width&&0!==c&&(z.width=1);0===z.height&&0!==g&&(z.height=1);return z},a);ea.crisp=function(){var b=this.attrs,c,g=this.attr(["x","y","width","height","stroke-width"]),g=a.crispBound(g.x,g.y,g.width,g.height,g["stroke-width"]);for(c in g)b[c]===
g[c]&&delete g[c];return this.attr(g)};a.st=nc;a.define=function(b,c,g,d,z,w){var e;if(a.is(b,n))for(w=0,e=b.length;w<e;w++)a.define(b[w]);else if(a.is(b,"object"))a.define(b.name,b[b.name],b.ca,b.fn,b.e,b.data);else if(b&&!a.fn[b])return a.fn[b]=function(){var w=arguments,e=c.apply(this,w),E;if(d&&a.is(d,"object"))for(E in d)e[E]=d[E];if(z&&a.is(z,"object"))for(E in z)e[E]&&e[E](z[E]);if(g){if(a.is(g,"function"))e.ca[b]=g;else for(E in g)e.ca[E]=g[E];e.ca[b]&&(a._lastArgIfGroup(w,!0),e.attr(b,N.call(w)))}return e},
g&&(a.fn[b].ca=g),d&&(a.fn[b].fn=d),z&&(a.fn[b].e=z),w&&(a.fn[b].data=w),a.fn[b]};(function(b,c,g){function d(){/in/.test(b.readyState)?setTimeout(d,9):a.eve("raphael.DOMload")}null==b.readyState&&b.addEventListener&&(b.addEventListener(c,g=function(){b.removeEventListener(c,g,!1);b.readyState="complete"},!1),b.readyState="loading");d()})(document,"DOMContentLoaded");d.on("raphael.DOMload",function(){v=!0});(function(){if(a.svg){var b=String,c=parseFloat,g=parseInt,d=Math,z=d.max,w=d.abs,e=d.pow,
E=d.sqrt,I=/[, ]+/,u=!(!/AppleWebKit/.test(a._g.win.navigator.userAgent)||/Chrome/.test(a._g.win.navigator.userAgent)&&!(29>a._g.win.navigator.appVersion.match(/Chrome\/(\d+)\./)[1])),h=a.eve,k={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},A={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};a._url="";var f=function(a,b){var c=
a.gradient;if(c){if(c===b)return;c.refCount--;c.refCount||c.parentNode.removeChild(c);delete a.gradient}b&&(a.gradient=b,b.refCount++)},l=a._createNode=function(c,g){if(g){"string"==typeof c&&(c=l(c));for(var d in g)g.hasOwnProperty(d)&&("xlink:"==d.substring(0,6)?c.setAttributeNS("http://www.w3.org/1999/xlink",d.substring(6),b(g[d])):c.setAttribute(d,b(g[d])))}else c=a._g.doc.createElementNS("http://www.w3.org/2000/svg",c);return c},P={userSpaceOnUse:"userSpaceOnUse",objectBoundingBox:"objectBoundingBox"},
D={pad:"pad",redlect:"reflect",repeat:"repeat"},n=function(g,I){if(!g.paper||!g.paper.defs)return 0;var u="linear",h=g.paper,k=(h.id+"-"+I).replace(/[\(\)\s%:,\xb0#]/g,"_"),A=.5,n=.5,ib,ka,m,G,v,R=g.node,L=R.style,p=a._g.doc.getElementById(k);if(!p){I=b(I).replace(a._radial_gradient,function(a,b){u="radial";b=b&&b.split(",")||[];G=b[5];v=b[6];var g=b[0],d=b[1],z=b[2],w=b[3],I=b[4],h=g&&d,k;z&&(ib=/\%/.test(z)?z:c(z));if(G===P.userSpaceOnUse)return h&&(A=g,n=d),w&&I&&(ka=w,m=I,h||(A=ka,n=m)),"";h&&
(A=c(g),n=c(d),g=2*(.5<n)-1,.25<(k=e(A-.5,2))+e(n-.5,2)&&.25>k&&(n=E(.25-k)*g+.5)&&.5!==n&&(n=n.toFixed(5)-1E-5*g));w&&I&&(ka=c(w),m=c(I),g=2*(.5<m)-1,.25<(k=e(ka-.5,2))+e(m-.5,2)&&.25>k&&(m=E(.25-k)*g+.5)&&.5!==m&&(m=m.toFixed(5)-1E-5*g),h||(A=ka,n=m));return""});I=I.split(/\s*\-\s*/);if("linear"==u){var p=I.shift(),r=p.match(/\((.*)\)/),B,r=r&&r[1]&&r[1].split(/\s*\,\s*/),p=-c(p);if(isNaN(p))return null;r&&r.length?(r[0]in P?(G=r.shift(),r[0]in D&&(v=r.shift())):(r[4]&&(G=r[4]),r[5]&&(v=r[5])),
B=[r[0]||"0%",r[1]||"0%",r[2]||"100%",r[3]||"0%"]):(B=[0,0,d.cos(a.rad(p)),d.sin(a.rad(p))],p=1/(z(w(B[2]),w(B[3]))||1),B[2]*=p,B[3]*=p,0>B[2]&&(B[0]=-B[2],B[2]=0),0>B[3]&&(B[1]=-B[3],B[3]=0))}r=a._parseDots(I);if(!r)return null;p=l(u+"Gradient",{id:k});p.refCount=0;G in P&&p.setAttribute("gradientUnits",b(G));v in D&&p.setAttribute("spreadMethod",b(v));"radial"===u?(void 0!==ib&&p.setAttribute("r",b(ib)),void 0!==ka&&void 0!==m&&(p.setAttribute("cx",b(ka)),p.setAttribute("cy",b(m))),p.setAttribute("fx",
b(A)),p.setAttribute("fy",b(n))):l(p,{x1:B[0],y1:B[1],x2:B[2],y2:B[3]});B=0;for(var s=r.length;B<s;B++)p.appendChild(l("stop",{offset:r[B].offset?r[B].offset:B?"100%":"0%","stop-color":r[B].color||"#fff","stop-opacity":void 0===r[B].opacity?1:r[B].opacity}));h.defs.appendChild(p)}f(g,p);l(R,{fill:"url('"+a._url+"#"+k+"')",opacity:1,"fill-opacity":1});L.fill="";L.opacity=1;return L.fillOpacity=1},ib=function(a){var b=a.getBBox(1);l(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+
b.y+")"})},ka=function(c,g,d){if("path"==c.type){for(var z=b(g).toLowerCase().split("-"),w=c.paper,e=d?"end":"start",E=c.node,I=c.attrs,u=I["stroke-width"],h=z.length,f="classic",P,n,D=3,ib=3,ka=5;h--;)switch(z[h]){case "block":case "classic":case "oval":case "diamond":case "open":case "none":f=z[h];break;case "wide":ib=5;break;case "narrow":ib=2;break;case "long":D=5;break;case "short":D=2}"open"==f?(D+=2,ib+=2,ka+=2,P=1,n=d?4:1,z={fill:"none",stroke:I.stroke}):(n=P=D/2,z={fill:I.stroke,stroke:"none"});
c._.arrows?d?(c._.arrows.endPath&&A[c._.arrows.endPath]--,c._.arrows.endMarker&&A[c._.arrows.endMarker]--):(c._.arrows.startPath&&A[c._.arrows.startPath]--,c._.arrows.startMarker&&A[c._.arrows.startMarker]--):c._.arrows={};if("none"!=f){var h="raphael-marker-"+f,m="raphael-marker-"+e+f+D+ib+"-obj"+c.id;a._g.doc.getElementById(h)?A[h]++:(w.defs.appendChild(l(l("path"),{"stroke-linecap":"round",d:k[f],id:h})),A[h]=1);var G=a._g.doc.getElementById(m);G?(A[m]++,D=G.getElementsByTagName("use")[0]):(G=
l(l("marker"),{id:m,markerHeight:ib,markerWidth:D,orient:"auto",refX:n,refY:ib/2}),D=l(l("use"),{"xlink:href":"#"+h,transform:(d?"rotate(180 "+D/2+" "+ib/2+") ":"")+"scale("+D/ka+","+ib/ka+")","stroke-width":(1/((D/ka+ib/ka)/2)).toFixed(4)}),G.appendChild(D),w.defs.appendChild(G),A[m]=1);l(D,z);w=P*("diamond"!=f&&"oval"!=f);d?(d=c._.arrows.startdx*u||0,u=a.getTotalLength(I.path)-w*u):(d=w*u,u=a.getTotalLength(I.path)-(c._.arrows.enddx*u||0));z={};z["marker-"+e]="url('"+a._url+"#"+m+"')";if(u||d)z.d=
a.getSubpath(I.path,d,u);l(E,z);c._.arrows[e+"Path"]=h;c._.arrows[e+"Marker"]=m;c._.arrows[e+"dx"]=w;c._.arrows[e+"Type"]=f;c._.arrows[e+"String"]=g}else d?(d=c._.arrows.startdx*u||0,u=a.getTotalLength(I.path)-d):(d=0,u=a.getTotalLength(I.path)-(c._.arrows.enddx*u||0)),c._.arrows[e+"Path"]&&l(E,{d:a.getSubpath(I.path,d,u)}),delete c._.arrows[e+"Path"],delete c._.arrows[e+"Marker"],delete c._.arrows[e+"dx"],delete c._.arrows[e+"Type"],delete c._.arrows[e+"String"];for(z in A)A.hasOwnProperty(z)&&!A[z]&&
(c=a._g.doc.getElementById(z))&&c.parentNode.removeChild(c)}},m={"":["none"],none:["none"],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},G=function(c,g,d){var z=m[b(g).toLowerCase()],e,E;if(g=z||void 0!==g&&[].concat(g)){e=c.attrs["stroke-width"]||1;d={round:e,square:e,butt:0}[c.attrs["stroke-linecap"]||d["stroke-linecap"]]||0;E=g.length;e=z?e:1;for(z=[];E--;)z[E]=g[E]*e+(E%2?1:-1)*d||g[E],0>z[E]&&(z[E]=
w(z[E]));a.is(g,"array")&&l(c.node,{"stroke-dasharray":z.join(",")})}},v=function(a,b){for(var c in b)h("raphael.attr."+c+"."+a.id,a,b[c],c),a.ca[c]&&a.attr(c,b[c])},R=a._setFillAndStroke=function(c,d){if(c.paper.canvas){var e=c.node,E=c.attrs,h=c.paper,k=e.style,A=k.visibility;k.visibility="hidden";for(var D in d)if(d.hasOwnProperty(D)&&a._availableAttrs.hasOwnProperty(D)){var P=d[D];E[D]=P;switch(D){case "blur":c.blur(P);break;case "href":case "title":case "target":var m=e.parentNode;if("a"!=m.tagName.toLowerCase()){if(""==
P)break;var v=l("a");v.raphael=!0;v.raphaelid=e.raphaelid;m.insertBefore(v,e);v.appendChild(e);m=v}"target"==D?m.setAttributeNS("http://www.w3.org/1999/xlink","show","blank"==P?"new":P):m.setAttributeNS("http://www.w3.org/1999/xlink",D,P);e.titleNode=m;break;case "cursor":k.cursor=P;break;case "transform":c.transform(P);break;case "rotation":a.is(P,"array")?c.rotate.apply(c,P):c.rotate(P);break;case "arrow-start":ka(c,P);break;case "arrow-end":ka(c,P,1);break;case "clip-path":var R=!0;case "clip-rect":m=
!R&&b(P).split(I);c._.clipispath=!!R;if(R||4==m.length){c.clip&&c.clip.parentNode.parentNode.removeChild(c.clip.parentNode);var v=l("clipPath"),p=l(R?"path":"rect");v.id=a.createUUID();l(p,R?{d:P?E["clip-path"]=a._pathToAbsolute(P):a._availableAttrs.path,fill:"none"}:{x:m[0],y:m[1],width:m[2],height:m[3],transform:c.matrix.invert()});v.appendChild(p);h.defs.appendChild(v);l(e,{"clip-path":"url('"+a._url+"#"+v.id+"')"});c.clip=p}!P&&(P=e.getAttribute("clip-path"))&&((P=a._g.doc.getElementById(P.replace(/(^url\(#|\)$)/g,
"")))&&P.parentNode.removeChild(P),l(e,{"clip-path":""}),delete c.clip);break;case "path":"path"==c.type&&(l(e,{d:P?E.path=a._pathToAbsolute(P):a._availableAttrs.path}),c._.dirty=1,c._.arrows&&("startString"in c._.arrows&&ka(c,c._.arrows.startString),"endString"in c._.arrows&&ka(c,c._.arrows.endString,1)));break;case "width":if(e.setAttribute(D,P),c._.dirty=1,E.fx)D="x",P=E.x;else break;case "x":E.fx&&(P=-E.x-(E.width||0));case "rx":if("rx"==D&&"rect"==c.type)break;case "cx":e.setAttribute(D,P);c.pattern&&
ib(c);c._.dirty=1;break;case "height":if(e.setAttribute(D,P),c._.dirty=1,E.fy)D="y",P=E.y;else break;case "y":E.fy&&(P=-E.y-(E.height||0));case "ry":if("ry"==D&&"rect"==c.type)break;case "cy":e.setAttribute(D,P);c.pattern&&ib(c);c._.dirty=1;break;case "r":"rect"==c.type?l(e,{rx:P,ry:P}):e.setAttribute(D,P);c._.dirty=1;break;case "src":"image"==c.type&&e.setAttributeNS("http://www.w3.org/1999/xlink","href",P);break;case "stroke-width":if(1!=c._.sx||1!=c._.sy)P/=z(w(c._.sx),w(c._.sy))||1;h._vbSize&&
(P*=h._vbSize);u&&0===P&&(P=1E-6);e.setAttribute(D,P);E["stroke-dasharray"]&&G(c,E["stroke-dasharray"],d);c._.arrows&&("startString"in c._.arrows&&ka(c,c._.arrows.startString),"endString"in c._.arrows&&ka(c,c._.arrows.endString,1));break;case "stroke-dasharray":G(c,P,d);break;case "fill":var r=b(P).match(a._ISURL);if(r){var v=l("pattern"),B=l("image");v.id=a.createUUID();l(v,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1});l(B,{x:0,y:0,"xlink:href":r[1]});v.appendChild(B);(function(b){a._preload(r[1],
function(){var a=this.offsetWidth,c=this.offsetHeight;l(b,{width:a,height:c});l(B,{width:a,height:c});h.safari()})})(v);h.defs.appendChild(v);k.fill="url('"+a._url+"#"+v.id+"')";l(e,{fill:k.fill});c.pattern=v;c.pattern&&ib(c);break}m=a.getRGB(P);if(!m.error)delete d.gradient,delete E.gradient,!a.is(E.opacity,"undefined")&&a.is(d.opacity,"undefined")&&l(e,{opacity:E.opacity}),!a.is(E["fill-opacity"],"undefined")&&a.is(d["fill-opacity"],"undefined")&&l(e,{"fill-opacity":E["fill-opacity"]}),c.gradient&&
f(c);else if(("circle"==c.type||"ellipse"==c.type||"r"!=b(P).charAt())&&n(c,P)){if("opacity"in E||"fill-opacity"in E)if(m=a._g.doc.getElementById(e.getAttribute("fill").replace(/^url\(#|\)$/g,"")))m=m.getElementsByTagName("stop"),l(m[m.length-1],{"stop-opacity":("opacity"in E?E.opacity:1)*("fill-opacity"in E?E["fill-opacity"]:1)});E.gradient=P;E.fill="none";k.fill="";break}m.hasOwnProperty("opacity")?(l(e,{"fill-opacity":k.fillOpacity=1<m.opacity?m.opacity/100:m.opacity}),c._.fillOpacityDirty=!0):
c._.fillOpacityDirty&&a.is(E["fill-opacity"],"undefined")&&a.is(d["fill-opacity"],"undefined")&&(e.removeAttribute("fill-opacity"),k.fillOpacity="",delete c._.fillOpacityDirty);case "stroke":m=a.getRGB(P);e.setAttribute(D,m.hex);k[D]=m.hex;"stroke"==D&&(m.hasOwnProperty("opacity")?(l(e,{"stroke-opacity":k.strokeOpacity=1<m.opacity?m.opacity/100:m.opacity}),c._.strokeOpacityDirty=!0):c._.strokeOpacityDirty&&a.is(E["stroke-opacity"],"undefined")&&a.is(d["stroke-opacity"],"undefined")&&(e.removeAttribute("stroke-opacity"),
k.strokeOpacity="",delete c._.strokeOpacityDirty),c._.arrows&&("startString"in c._.arrows&&ka(c,c._.arrows.startString),"endString"in c._.arrows&&ka(c,c._.arrows.endString,1)));break;case "gradient":"circle"!=c.type&&"ellipse"!=c.type&&"r"==b(P).charAt()||n(c,P);break;case "line-height":case "vertical-align":break;case "visibility":"hidden"===P?c.hide():c.show();break;case "opacity":E.gradient&&!E.hasOwnProperty("stroke-opacity")&&l(e,{"stroke-opacity":1<P?P/100:P});case "fill-opacity":if(E.gradient){if(m=
a._g.doc.getElementById(e.getAttribute("fill").replace(/^url\(#|\)$/g,"")))m=m.getElementsByTagName("stop"),l(m[m.length-1],{"stop-opacity":P});break}default:"font-size"==D&&(P=g(P,10)+"px"),m=D.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()}),k[m]=P,c._.dirty=1,e.setAttribute(D,P)}}"text"===c.type&&L(c,d);k.visibility=A}},L=function(g,z){if("text"==g.type&&(z.hasOwnProperty("text")||z.hasOwnProperty("font")||z.hasOwnProperty("font-size")||z.hasOwnProperty("x")||z.hasOwnProperty("y")||
z.hasOwnProperty("line-height")||z.hasOwnProperty("vertical-align"))){var w=g.attrs,e=g.node,E=e.firstChild&&a._g.doc.defaultView.getComputedStyle(e.firstChild,""),I=E?c(a._g.doc.defaultView.getComputedStyle(e.firstChild,"").getPropertyValue("font-size")):10,u=c(z["line-height"]||w["line-height"])||1.2*I,h=w.hasOwnProperty("vertical-align")?w["vertical-align"]:"middle",k=(z.direction||(E?E.getPropertyValue("direction"):"initial")).toLowerCase(),A=!!document.documentMode;isNaN(u)&&(u=1.2*I);a.is(z.text,
"array")&&(z.text=z.text.join("<br>"));h="top"===h?-.5:"bottom"===h?.5:0;if(z.hasOwnProperty("text")&&(z.text!==w.text||g._textdirty)){for(w.text=z.text;e.firstChild;)e.removeChild(e.firstChild);for(var f=b(z.text).split(/\n|<br\s*?\/?>/ig),I=[],P=0,D=f.length;P<D;P++)E=l("tspan"),P?l(E,{dy:u,x:w.x}):l(E,{dy:u*f.length*h,x:w.x}),f[P]||(E.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),f[P]=" "),E.appendChild(a._g.doc.createTextNode(f[P])),e.appendChild(E),I[P]=E,!A&&
"rtl"===k&&P<D-1&&(E=l("tspan"),l(E,{visibility:"hidden","font-size":"0px"}),E.appendChild(a._g.doc.createTextNode("i")),e.appendChild(E));g._textdirty=!1}else for(I=e.getElementsByTagName("tspan"),P=A=0,D=I.length;P<D;P++)if(E=I[P],k=E.attributes[0],!k||"visibility"!==k.name&&"visibility"!==k.nodeName||"hidden"!==k.value&&"hidden"!==k.nodeValue)P?l(E,{dy:u,x:w.x}):(k=I[1]&&I[1].attributes[0],!k||"visibility"!==k.name&&"visibility"!==k.nodeName||"hidden"!==k.value&&"hidden"!==k.nodeValue||(A=d.floor(.5*
I.length)),l(I[0],{dy:u*(I.length-A)*h,x:w.x}));l(e,{x:w.x,y:w.y});g._.dirty=1;e=g._getBBox();u=w.y-(e.y+e.height/2);if(e.isCalculated)switch(w["vertical-align"]){case "top":u=.75*e.height;break;case "bottom":u=-(.25*e.height);break;default:u=w.y-(e.y+.25*e.height)}u&&a.is(u,"finite")&&I[0]&&l(I[0],{dy:u})}},p=function(b,c,g){g=g||c;g.canvas&&g.canvas.appendChild(b);this.node=this[0]=b;b.raphael=!0;b.raphaelid=this.id=a._oid++;this.matrix=a.matrix();this.realPath=null;this.attrs=this.attrs||{};this.followers=
this.followers||[];this.paper=c;this.ca=this.customAttributes=this.customAttributes||new c._CustomAttributes;this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1};this.parent=g;!g.bottom&&(g.bottom=this);(this.prev=g.top)&&(g.top.next=this);g.top=this;this.next=null},r=a.el;p.prototype=r;r.constructor=p;a._engine.getNode=function(a){a=a.node||a[0].node;return a.titleNode||a};a._engine.getLastNode=function(a){a=a.node||a[a.length-1].node;return a.titleNode||a};r.rotate=function(a,g,d){if(this.removed)return this;
a=b(a).split(I);a.length-1&&(g=c(a[1]),d=c(a[2]));a=c(a[0]);null==d&&(g=d);if(null==g||null==d)d=this.getBBox(1),g=d.x+d.width/2,d=d.y+d.height/2;this.transform(this._.transform.concat([["r",a,g,d]]));return this};r.scale=function(a,g,d,z){var w;if(this.removed)return this;a=b(a).split(I);a.length-1&&(g=c(a[1]),d=c(a[2]),z=c(a[3]));a=c(a[0]);null==g&&(g=a);null==z&&(d=z);if(null==d||null==z)w=this.getBBox(1);d=null==d?w.x+w.width/2:d;z=null==z?w.y+w.height/2:z;this.transform(this._.transform.concat([["s",
a,g,d,z]]));return this};r.translate=function(a,g){if(this.removed)return this;a=b(a).split(I);a.length-1&&(g=c(a[1]));a=c(a[0])||0;this.transform(this._.transform.concat([["t",a,+g||0]]));return this};r.transform=function(b){var c=this._;if(null==b)return c.transform;a._extractTransform(this,b);this.clip&&!c.clipispath&&l(this.clip,{transform:this.matrix.invert()});this.pattern&&ib(this);this.node&&l(this.node,{transform:this.matrix});if(1!=c.sx||1!=c.sy)b=this.attrs.hasOwnProperty("stroke-width")?
this.attrs["stroke-width"]:1,this.attr({"stroke-width":b});return this};r.hide=function(){!this.removed&&this.paper.safari(this.node.style.display="none");return this};r.show=function(){!this.removed&&this.paper.safari(this.node.style.display="");return this};r.remove=function(){if(!this.removed&&this.parent.canvas){var b=a._engine.getNode(this),c=this.paper,g=c.defs;c.__set__&&c.__set__.exclude(this);h.unbind("raphael.*.*."+this.id);for(this.gradient&&g&&f(this);g=this.followers.pop();)g.el.remove();
for(;g=this.bottom;)g.remove();this._drag&&this.undrag();if(this.events)for(;g=this.events.pop();)g.unbind();this.parent.canvas.removeChild(b);this.removeData();delete c._elementsById[this.id];a._tear(this,this.parent);for(g in this)this[g]="function"===typeof this[g]?a._removedFactory(g):null;this.removed=!0}};r._getBBox=function(){var a=this.node,b={},c=this.attrs,g,d;"none"===a.style.display&&(this.show(),d=!0);try{b=a.getBBox(),"text"==this.type&&(void 0===b.x&&(b.isCalculated=!0,g=c["text-anchor"],
b.x=(c.x||0)-b.width*("start"===g?0:"middle"===g?.5:1)),void 0===b.y&&(b.isCalculated=!0,g=c["vertical-align"],b.y=(c.y||0)-b.height*("bottom"===g?1:"middle"===g?.5:0)))}catch(z){}finally{b=b||{}}d&&this.hide();return b};r.attr=function(b,c){if(this.removed)return this;if(null==b){var g={},d;for(d in this.attrs)this.attrs.hasOwnProperty(d)&&(g[d]=this.attrs[d]);g.gradient&&"none"==g.fill&&(g.fill=g.gradient)&&delete g.gradient;g.transform=this._.transform;g.visibility="none"===this.node.style.display?
"hidden":"visible";return g}if(null==c&&a.is(b,"string")){if("fill"==b&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==b)return this._.transform;if("visibility"==b)return"none"===this.node.style.display?"hidden":"visible";var g=b.split(I),z={},w=0;for(d=g.length;w<d;w++)b=g[w],b in this.attrs?z[b]=this.attrs[b]:a.is(this.ca[b],"function")?z[b]=this.ca[b].def:z[b]=a._availableAttrs[b];return d-1?z:z[g[0]]}if(null==c&&a.is(b,"array")){z={};w=0;for(d=b.length;w<
d;w++)z[b[w]]=this.attr(b[w]);return z}null!=c?(g={},g[b]=c):null!=b&&a.is(b,"object")&&(g=b);for(w in g)h("raphael.attr."+w+"."+this.id,this,g[w],w);var e={};for(w in this.ca)if(this.ca[w]&&g.hasOwnProperty(w)&&a.is(this.ca[w],"function")&&!this.ca["_invoked"+w]){this.ca["_invoked"+w]=!0;d=this.ca[w].apply(this,[].concat(g[w]));delete this.ca["_invoked"+w];for(z in d)d.hasOwnProperty(z)&&(g[z]=d[z]);this.attrs[w]=g[w];!1===d&&(e[w]=g[w],delete g[w])}R(this,g);var E,w=0;for(d=this.followers.length;w<
d;w++)E=this.followers[w],E.cb&&!E.cb.call(E.el,g,this)||E.el.attr(g);for(z in e)g[z]=e[z];return this};r.blur=function(b){if(0!==+b){var c=l("filter"),g=l("feGaussianBlur");this.attrs.blur=b;c.id=a.createUUID();l(g,{stdDeviation:+b||1.5});c.appendChild(g);this.paper.defs.appendChild(c);this._blur=c;l(this.node,{filter:"url('"+a._url+"#"+c.id+"')"})}else this._blur&&(this._blur.parentNode.removeChild(this._blur),delete this._blur,delete this.attrs.blur),this.node.removeAttribute("filter")};r.on=function(b,
c){if(this.removed)return this;var g=c;a.supportsTouch&&(b=a._touchMap[b]||"click"===b&&"touchstart"||b,g=function(a){a.preventDefault();c()});this.node["on"+b]=g;return this};a._engine.path=function(a,b,c){var g=l("path");a=new p(g,a,c);a.type="path";R(a,b);v(a,b);return a};a._engine.group=function(a,b,c){var g=l("g");a=new p(g,a,c);a.type="group";a.canvas=a.node;a.top=a.bottom=null;a._id=b||"";b&&g.setAttribute("class","raphael-group-"+a.id+"-"+b);return a};a._engine.circle=function(a,b,c){var g=
l("circle");a=new p(g,a,c);a.type="circle";R(a,b);v(a,b);return a};a._engine.rect=function(a,b,c){var g=l("rect");a=new p(g,a,c);a.type="rect";b.rx=b.ry=b.r;R(a,b);v(a,b);return a};a._engine.ellipse=function(a,b,c){var g=l("ellipse");a=new p(g,a,c);a.type="ellipse";R(a,b);v(a,b);return a};a._engine.image=function(a,b,c){var g=l("image");a=new p(g,a,c);a.type="image";g.setAttribute("preserveAspectRatio","none");R(a,b);v(a,b);return a};a._engine.text=function(a,b,c){var g=l("text");a=new p(g,a,c);a.type=
"text";a._textdirty=!0;R(a,b);v(a,b);return a};a._engine.setSize=function(a,b){this.width=a||this.width;this.height=b||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);this._viewBox&&this.setViewBox.apply(this,this._viewBox);return this};a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,g=b.x,d=b.y,z=b.width,b=b.height;if(!c)throw Error("SVG container not found.");var w=l("svg"),e,g=g||0,d=d||0,z=z||512,b=b||
342;l(w,{height:b,version:1.1,width:z,xmlns:"http://www.w3.org/2000/svg"});1==c?(w.style.cssText="overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-ms-user-select:none;user-select:none;-o-user-select:none;cursor:default;position:absolute;left:"+g+"px;top:"+d+"px",a._g.doc.body.appendChild(w),e=1):(w.style.cssText="overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-ms-user-select:none;user-select:none;-o-user-select:none;cursor:default;position:relative",
c.firstChild?c.insertBefore(w,c.firstChild):c.appendChild(w));c=new a._Paper;c.width=z;c.height=b;c.canvas=w;l(w,{id:"raphael-paper-"+c.id});c.clear();c._left=c._top=0;e&&(c.renderfix=function(){});c.renderfix();return c};a._engine.setViewBox=function(a,b,c,g,d){h("raphael.setViewBox",this,this._viewBox,[a,b,c,g,d]);var w=z(c/this.width,g/this.height),e=this.top,E=d?"meet":"xMinYMin",I;null==a?(this._vbSize&&(w=1),delete this._vbSize,I="0 0 "+this.width+" "+this.height):(this._vbSize=w,I=a+" "+b+
" "+c+" "+g);for(l(this.canvas,{viewBox:I,preserveAspectRatio:E});w&&e;)E="stroke-width"in e.attrs?e.attrs["stroke-width"]:1,e.attr({"stroke-width":E}),e._.dirty=1,e._.dirtyT=1,e=e.prev;this._viewBox=[a,b,c,g,!!d];return this};a.prototype.renderfix=function(){var a=this.canvas,b=a.style,c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(g){c=a.createSVGMatrix()}a=-c.e%1;c=-c.f%1;if(a||c)a&&(this._left=(this._left+a)%1,b.left=this._left+"px"),c&&(this._top=(this._top+c)%1,b.top=this._top+"px")};a.prototype._desc=
function(b){var c=this.desc;if(c)for(;c.firstChild;)c.removeChild(c.firstChild);else this.desc=c=l("desc"),this.canvas.appendChild(c);c.appendChild(a._g.doc.createTextNode(a.is(b,"string")?b:"Created with Red Raphaël "+a.version))};a.prototype.clear=function(){var a;for(h("raphael.clear",this);a=this.bottom;)a.remove();for(a=this.canvas;a.firstChild;)a.removeChild(a.firstChild);this.bottom=this.top=null;a.appendChild(this.desc=l("desc"));a.appendChild(this.defs=l("defs"))};a.prototype.remove=function(){var b;
for(h("raphael.remove",this);b=this.bottom;)b.remove();this.defs&&this.defs.parentNode.removeChild(this.defs);this.desc&&this.desc.parentNode.removeChild(this.desc);this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;this.removed=!0};var B=a.st,s;for(s in r)r.hasOwnProperty(s)&&!B.hasOwnProperty(s)&&(B[s]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(s))}})();
(function(){if(a.vml){var b=String,c=parseFloat,g=Math,d=g.round,z=g.max,w=g.min,e=g.sqrt,E=g.abs,I=/[, ]+/,u=a.eve,k={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},h=/([clmz]),?([^clmz]*)/gi,A=/ progid:\S+Blur\([^\)]+\)/g,l=/-?[^,\s-]+/g,f={path:1,rect:1,image:1},P={circle:1,ellipse:1},D=function(c){var g=/[ahqstv]/ig,z=a._pathToAbsolute;b(c).match(g)&&(z=a._path2curve);g=/[clmz]/g;if(z==a._pathToAbsolute&&!b(c).match(g))return(c=b(c).replace(h,function(a,b,c){var g=[],z="m"==b.toLowerCase(),
w=k[b];c.replace(l,function(a){z&&2==g.length&&(w+=g+k["m"==b?"l":"L"],g=[]);g.push(d(21600*a))});return w+g}))||"m0,0";var g=z(c),w;c=[];for(var e=0,E=g.length;e<E;e++){z=g[e];w=g[e][0].toLowerCase();"z"==w&&(w="x");for(var I=1,u=z.length;I<u;I++)w+=d(21600*z[I])+(I!=u-1?",":"");c.push(w)}return c.length?c.join(" "):"m0,0"},n=function(b,c,g){var d=a.matrix();d.rotate(-b,.5,.5);return{dx:d.x(c,g),dy:d.y(c,g)}},m=function(a,b,c,g,d,z){var w=a._,e=a.matrix,I=w.fillpos;a=a.node;var u=a.style,k=1,h="",
A=21600/b,l=21600/c;u.visibility="hidden";if(b&&c){a.coordsize=E(A)+" "+E(l);u.rotation=z*(0>b*c?-1:1);z&&(d=n(z,g,d),g=d.dx,d=d.dy);0>b&&(h+="x");0>c&&(h+=" y")&&(k=-1);u.flip=h;a.coordorigin=g*-A+" "+d*-l;if(I||w.fillsize)if(g=(g=a.getElementsByTagName("fill"))&&g[0])a.removeChild(g),I&&(d=n(z,e.x(I[0],I[1]),e.y(I[0],I[1])),g.position=d.dx*k+" "+d.dy*k),w.fillsize&&(g.size=w.fillsize[0]*E(b)+" "+w.fillsize[1]*E(c)),a.appendChild(g);u.visibility="visible"}};a._url="";a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+
this.version};var ib=function(a,c,g){c=b(c).toLowerCase().split("-");g=g?"end":"start";for(var d=c.length,z="classic",w="medium",e="medium";d--;)switch(c[d]){case "block":case "classic":case "oval":case "diamond":case "open":case "none":z=c[d];break;case "wide":case "narrow":e=c[d];break;case "long":case "short":w=c[d]}a=a.node.getElementsByTagName("stroke")[0];a[g+"arrow"]=z;a[g+"arrowlength"]=w;a[g+"arrowwidth"]=e},ka=function(a,b){for(var c in b)u("raphael.attr."+c+"."+a.id,a,b[c],c),a.ca[c]&&
a.attr(c,b[c])},G=a._setFillAndStroke=function(g,e){if(g.paper.canvas){g.attrs=g.attrs||{};var E=g.node,u=g.attrs,h=E.style,k=f[g.type]&&(e.x!=u.x||e.y!=u.y||e.width!=u.width||e.height!=u.height||e.cx!=u.cx||e.cy!=u.cy||e.rx!=u.rx||e.ry!=u.ry||e.r!=u.r),A=P[g.type]&&(u.cx!=e.cx||u.cy!=e.cy||u.r!=e.r||u.rx!=e.rx||u.ry!=e.ry),l="group"===g.type,n;for(n in e)e.hasOwnProperty(n)&&(u[n]=e[n]);k&&(u.path=a._getPath[g.type](g),g._.dirty=1);e.href&&(E.href=e.href);e.title&&(E.title=e.title);e.target&&(E.target=
e.target);e.cursor&&(h.cursor=e.cursor);"blur"in e&&g.blur(e.blur);if(e.path&&"path"==g.type||k)E.path=D(~b(u.path).toLowerCase().indexOf("r")?a._pathToAbsolute(u.path):u.path),"image"==g.type&&(g._.fillpos=[u.x,u.y],g._.fillsize=[u.width,u.height],m(g,1,1,0,0,0));"transform"in e&&g.transform(e.transform);"rotation"in e&&(h=e.rotation,a.is(h,"array")?g.rotate.apply(g,h):g.rotate(h));"visibility"in e&&("hidden"===e.visibility?g.hide():g.show());A&&(h=+u.cx,A=+u.cy,k=+u.rx||+u.r||0,n=+u.ry||+u.r||0,
E.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",d(21600*(h-k)),d(21600*(A-n)),d(21600*(h+k)),d(21600*(A+n)),d(21600*h)));"clip-rect"in e&&(h=b(e["clip-rect"]).split(I),4==h.length&&(h[0]=+h[0],h[1]=+h[1],h[2]=+h[2]+h[0],h[3]=+h[3]+h[1],k=l?E:E.clipRect||a._g.doc.createElement("div"),A=k.style,l?(g.clip=h.slice(),k=g.matrix.offset(),k=[c(k[0]),c(k[1])],h[0]-=k[0],h[1]-=k[1],h[2]-=k[0],h[3]-=k[1],A.width="1px",A.height="1px"):E.clipRect||(A.top="0",A.left="0",A.width=g.paper.width+"px",A.height=
g.paper.height+"px",E.parentNode.insertBefore(k,E),k.appendChild(E),k.raphael=!0,k.raphaelid=E.raphaelid,E.clipRect=k),A.position="absolute",A.clip=a.format("rect({1}px {2}px {3}px {0}px)",h)),e["clip-rect"]||(l&&g.clip?(E.style.clip="rect(0px 10800px 10800px 0px)",delete g.clip):E.clipRect&&(E.clipRect.style.clip="rect(0px 10800px 10800px 0px)")));g.textpath&&(l=g.textpath.style,e.font&&(l.font=e.font),e["font-family"]&&(l.fontFamily='"'+e["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,"")+
'"'),e["font-size"]&&(l.fontSize=e["font-size"]),e["font-weight"]&&(l.fontWeight=e["font-weight"]),e["font-style"]&&(l.fontStyle=e["font-style"]));"arrow-start"in e&&ib(g,e["arrow-start"]);"arrow-end"in e&&ib(g,e["arrow-end"],1);if(null!=e.opacity||null!=e["stroke-width"]||null!=e.fill||null!=e.src||null!=e.stroke||null!=e["stroke-width"]||null!=e["stroke-opacity"]||null!=e["fill-opacity"]||null!=e["stroke-dasharray"]||null!=e["stroke-miterlimit"]||null!=e["stroke-linejoin"]||null!=e["stroke-linecap"]){l=
E.getElementsByTagName("fill");h=-1;l=l&&l[0];!l&&(l=p("fill"));"image"==g.type&&e.src&&(l.src=e.src);e.fill&&(l.on=!0);if(null==l.on||"none"==e.fill||null===e.fill)l.on=!1;l.on&&e.fill&&((A=b(e.fill).match(a._ISURL))?(l.parentNode==E&&E.removeChild(l),l.rotate=!0,l.src=A[1],l.type="tile",k=g.getBBox(1),l.position=k.x+" "+k.y,g._.fillpos=[k.x,k.y],a._preload(A[1],function(){g._.fillsize=[this.offsetWidth,this.offsetHeight]})):(A=a.getRGB(e.fill),l.color=A.hex,l.src="",l.type="solid",A.error&&(g.type in
{circle:1,ellipse:1}||"r"!=b(e.fill).charAt())&&v(g,e.fill,l)?(u.fill="none",u.gradient=e.fill,l.rotate=!1):"opacity"in A&&!("fill-opacity"in e)&&(h=A.opacity)));if(-1!==h||"fill-opacity"in e||"opacity"in e)A=((+u["fill-opacity"]+1||2)-1)*((+u.opacity+1||2)-1)*((+h+1||2)-1),A=w(z(A,0),1),l.opacity=A,l.src&&(l.color="none");E.appendChild(l);l=E.getElementsByTagName("stroke")&&E.getElementsByTagName("stroke")[0];h=!1;!l&&(h=l=p("stroke"));if(e.stroke&&"none"!=e.stroke||e["stroke-width"]||null!=e["stroke-opacity"]||
e["stroke-dasharray"]||e["stroke-miterlimit"]||e["stroke-linejoin"]||e["stroke-linecap"])l.on=!0;"none"!=e.stroke&&null!==e.stroke&&null!=l.on&&0!=e.stroke&&0!=e["stroke-width"]||(l.on=!1);A=a.getRGB("stroke"in e?e.stroke:u.stroke);l.on&&e.stroke&&(l.color=A.hex);A=((+u["stroke-opacity"]+1||2)-1)*((+u.opacity+1||2)-1)*((+A.opacity+1||2)-1);k=.75*(c(e["stroke-width"])||1);A=w(z(A,0),1);null==e["stroke-width"]&&(k=u["stroke-width"]);e["stroke-width"]&&(l.weight=k);k&&1>k&&(A*=k)&&(l.weight=1);l.opacity=
A;e["stroke-linejoin"]&&(l.joinstyle=e["stroke-linejoin"])||h&&(h.joinstyle="miter");l.miterlimit=e["stroke-miterlimit"]||8;e["stroke-linecap"]&&(l.endcap="butt"==e["stroke-linecap"]?"flat":"square"==e["stroke-linecap"]?"square":"round");e["stroke-dasharray"]&&(A={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"},l.dashstyle=A.hasOwnProperty(e["stroke-dasharray"])?A[e["stroke-dasharray"]]:
e["stroke-dasharray"].join&&e["stroke-dasharray"].join(" ")||"");h&&E.appendChild(l)}if("text"==g.type){g.paper.canvas.style.display="";E=g.paper.span;l=u.font&&u.font.match(/\d+(?:\.\d*)?(?=px)/);A=u["line-height"]&&(u["line-height"]+"").match(/\d+(?:\.\d*)?(?=px)/);h=E.style;u.font&&(h.font=u.font);u["font-family"]&&(h.fontFamily=u["font-family"]);u["font-weight"]&&(h.fontWeight=u["font-weight"]);u["font-style"]&&(h.fontStyle=u["font-style"]);l=c(u["font-size"]||l&&l[0])||10;h.fontSize=100*l+"px";
A=c(u["line-height"]||A&&A[0])||12;u["line-height"]&&(h.lineHeight=100*A+"px");a.is(e.text,"array")&&(e.text=g.textpath.string=e.text.join("\n").replace(/<br\s*?\/?>/ig,"\n"));g.textpath.string&&(E.innerHTML=b(g.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));E=E.getBoundingClientRect();g.W=u.w=(E.right-E.left)/100;g.H=u.h=(E.bottom-E.top)/100;g.X=u.x;g.Y=u.y;switch(u["vertical-align"]){case "top":g.bby=g.H/2;break;case "bottom":g.bby=-g.H/2;break;default:g.bby=
0}("x"in e||"y"in e||void 0!==g.bby)&&(g.path.v=a.format("m{0},{1}l{2},{1}",d(21600*u.x),d(21600*(u.y+(g.bby||0))),d(21600*u.x)+1));E="x y text font font-family font-weight font-style font-size line-height".split(" ");l=0;for(h=E.length;l<h;l++)if(E[l]in e){g._.dirty=1;break}switch(u["text-anchor"]){case "start":g.textpath.style["v-text-align"]="left";g.bbx=g.W/2;break;case "end":g.textpath.style["v-text-align"]="right";g.bbx=-g.W/2;break;default:g.textpath.style["v-text-align"]="center",g.bbx=0}g.textpath.style["v-text-kern"]=
!0}}},v=function(g,d,z){g.attrs=g.attrs||{};var w=Math.pow,E="linear",I=".5 .5";g.attrs.gradient=d;d=b(d).replace(a._radial_gradient,function(a,b){E="radial";b=b&&b.split(",")||[];var g=b[3],d=b[4];g&&d&&(g=c(g),d=c(d),.25<w(g-.5,2)+w(d-.5,2)&&(d=e(.25-w(g-.5,2))*(2*(.5<d)-1)+.5),I=g+" "+d);return""});d=d.split(/\s*\-\s*/);if("linear"==E){var u=d.shift(),u=-c(u);if(isNaN(u))return null}d=a._parseDots(d);if(!d)return null;g=g.shape||g.node;if(d.length){z.parentNode==g&&g.removeChild(z);z.on=!0;z.method=
"none";z.color=d[0].color;z.color2=d[d.length-1].color;for(var h=[],k=1,A=void 0===d[0].opacity?1:d[0].opacity,l=0,f=d.length;l<f;l++)d[l].offset&&h.push(d[l].offset+" "+d[l].color),void 0!==d[l].opacity&&(k=d[l].opacity);z.colors=h.length?h.join():"0% "+z.color;z.opacity=k;z["o:opacity2"]=A;"radial"==E?(z.type="gradientTitle",z.focus="100%",z.focussize="0 0",z.focusposition=I,z.angle=0):(z.type="gradient",z.angle=(270-u)%360);g.appendChild(z)}return 1},R=function(b,c,g){g=g||c;var d;g.canvas&&g.canvas.appendChild(b);
d=p("skew");d.on=!0;b.appendChild(d);this.skew=d;this.node=this[0]=b;b.raphael=!0;b.raphaelid=this.id=a._oid++;this.Y=this.X=0;this.attrs=this.attrs||{};this.followers=this.followers||[];this.paper=c;this.ca=this.customAttributes=this.customAttributes||new c._CustomAttributes;this.matrix=a.matrix();this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1};this.parent=g;!g.bottom&&(g.bottom=this);(this.prev=g.top)&&(g.top.next=this);g.top=this;this.next=null},g=a.el;R.prototype=g;g.constructor=
R;g.transform=function(c){if(null==c)return this._.transform;var g=this.paper._viewBoxShift,d=g?"s"+[g.scale,g.scale]+"-1-1t"+[g.dx,g.dy]:"",z;g&&(z=c=b(c).replace(/\.{3}|\u2026/g,this._.transform||""));a._extractTransform(this,d+c);var g=this.matrix.clone(),w=this.skew;c=this.node;var d=~b(this.attrs.fill).indexOf("-"),e=!b(this.attrs.fill).indexOf("url(");g.translate(-.5,-.5);e||d||"image"==this.type?(w.matrix="1 0 0 1",w.offset="0 0",w=g.split(),d&&w.noRotation||!w.isSimple?(c.style.filter=g.toFilter(),
g=this.getBBox(),d=this.getBBox(1),e=g.x2&&d.x2&&"x2"||"x",w=g.y2&&d.y2&&"y2"||"y",e=g[e]-d[e],g=g[w]-d[w],c.coordorigin=-21600*e+" "+-21600*g,m(this,1,1,e,g,0)):(c.style.filter="",m(this,w.scalex,w.scaley,w.dx,w.dy,w.rotate))):(c.style.filter="",w.matrix=b(g),w.offset=g.offset());z&&(this._.transform=z);return this};g.rotate=function(a,g,d){if(this.removed)return this;if(null!=a){a=b(a).split(I);a.length-1&&(g=c(a[1]),d=c(a[2]));a=c(a[0]);null==d&&(g=d);if(null==g||null==d)d=this.getBBox(1),g=d.x+
d.width/2,d=d.y+d.height/2;this._.dirtyT=1;this.transform(this._.transform.concat([["r",a,g,d]]));return this}};g.translate=function(a,g){if(this.removed)return this;a=b(a).split(I);a.length-1&&(g=c(a[1]));a=c(a[0])||0;g=+g||0;this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=g);this.transform(this._.transform.concat([["t",a,g]]));return this};g.scale=function(a,g,d,z){if(this.removed)return this;a=b(a).split(I);a.length-1&&(g=c(a[1]),d=c(a[2]),z=c(a[3]),isNaN(d)&&(d=null),isNaN(z)&&(z=null));a=c(a[0]);
null==g&&(g=a);null==z&&(d=z);if(null==d||null==z)var w=this.getBBox(1);d=null==d?w.x+w.width/2:d;z=null==z?w.y+w.height/2:z;this.transform(this._.transform.concat([["s",a,g,d,z]]));this._.dirtyT=1;return this};g.hide=function(a){!this.removed&&(this.node.style.display="none");return this};g.show=function(a){!this.removed&&(this.node.style.display="");return this};g._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y+(this.bby||0)-this.H/2,width:this.W,height:this.H}};
g.remove=function(){if(!this.removed&&this.parent.canvas){var b=a._engine.getNode(this),c=this.paper,g=this.shape;c.__set__&&c.__set__.exclude(this);u.unbind("raphael.*.*."+this.id);g&&g.parentNode.removeChild(g);for(b.parentNode&&b.parentNode.removeChild(b);b=this.followers.pop();)b.el.remove();for(;b=this.bottom;)b.remove();this._drag&&this.undrag();if(this.events)for(;b=this.events.pop();)b.unbind();this.removeData();delete c._elementsById[this.id];a._tear(this,this.parent);for(b in this)this[b]=
"function"===typeof this[b]?a._removedFactory(b):null;this.removed=!0}};g.attr=function(b,c){if(this.removed)return this;if(null==b){var g={},d;for(d in this.attrs)this.attrs.hasOwnProperty(d)&&(g[d]=this.attrs[d]);g.gradient&&"none"==g.fill&&(g.fill=g.gradient)&&delete g.gradient;g.transform=this._.transform;g.visibility="none"===this.node.style.display?"hidden":"visible";return g}if(null==c&&a.is(b,"string")){if("fill"==b&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;
if("visibility"==b)return"none"===this.node.style.display?"hidden":"visible";var g=b.split(I),z={},w=0;for(d=g.length;w<d;w++)b=g[w],b in this.attrs?z[b]=this.attrs[b]:a.is(this.ca[b],"function")?z[b]=this.ca[b].def:z[b]=a._availableAttrs[b];return d-1?z:z[g[0]]}if(this.attrs&&null==c&&a.is(b,"array")){z={};w=0;for(d=b.length;w<d;w++)z[b[w]]=this.attr(b[w]);return z}null!=c&&(g={},g[b]=c);null==c&&a.is(b,"object")&&(g=b);for(w in g)u("raphael.attr."+w+"."+this.id,this,g[w],w);if(g){var e={};for(w in this.ca)if(this.ca[w]&&
g.hasOwnProperty(w)&&a.is(this.ca[w],"function")&&!this.ca["_invoked"+w]){this.ca["_invoked"+w]=!0;d=this.ca[w].apply(this,[].concat(g[w]));delete this.ca["_invoked"+w];for(z in d)d.hasOwnProperty(z)&&(g[z]=d[z]);this.attrs[w]=g[w];!1===d&&(e[w]=g[w],delete g[w])}"text"in g&&"text"==this.type&&(a.is(g.text,"array")&&(g.text=g.text.join("\n")),this.textpath.string=g.text.replace(/<br\s*?\/?>/ig,"\n"));G(this,g);var E,w=0;for(d=this.followers.length;w<d;w++)E=this.followers[w],E.cb&&!E.cb.call(E.el,
g,this)||E.el.attr(g);for(z in e)g[z]=e[z]}return this};g.blur=function(b){var c=this.node.runtimeStyle,g=c.filter,g=g.replace(A,"");0!==+b?(this.attrs.blur=b,c.filter=g+"  progid:DXImageTransform.Microsoft.Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",d(+b||1.5))):(c.filter=g,c.margin=0,delete this.attrs.blur);return this};g.on=function(b,c){if(this.removed)return this;this.node["on"+b]=function(){var b=a._g.win.event;b.target=b.srcElement;c(b)};return this};a._engine.getNode=
function(a){a=a.node||a[0].node;return a.clipRect||a};a._engine.getLastNode=function(a){a=a.node||a[a.length-1].node;return a.clipRect||a};a._engine.group=function(b,c,g){var d=a._g.doc.createElement("div"),z=new R(d,b,g);d.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px";z._id=c||"";c&&(d.className="raphael-group-"+z.id+"-"+c);(g||b).canvas.appendChild(d);z.type="group";z.canvas=z.node;z.transform=a._engine.group.transform;z.top=null;z.bottom=null;return z};a._engine.group.transform=
function(g){if(null==g)return this._.transform;var d=this.node.style,z=this.clip,w=this.paper._viewBoxShift,e=w?"s"+[w.scale,w.scale]+"-1-1t"+[w.dx,w.dy]:"";w&&(g=b(g).replace(/\.{3}|\u2026/g,this._.transform||""));a._extractTransform(this,e+g);g=this.matrix;e=g.offset();w=c(e[0])||0;e=c(e[1])||0;d.left=w+"px";d.top=e+"px";d.zoom=(this._.tzoom=g.get(0))+"";z&&(d.clip=a.format("rect({1}px {2}px {3}px {0}px)",[z[0]-w,z[1]-e,z[2]-w,z[3]-e]));return this};a._engine.path=function(a,b,c){var g=p("shape");
g.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px";g.coordsize="21600 21600";g.coordorigin=a.coordorigin;a=new R(g,a,c);a.type=b.type||"path";a.path=[];a.Path="";b.type&&delete b.type;G(a,b);ka(a,b);return a};a._engine.rect=function(b,c,g){var d=a._rectPath(c.x,c.y,c.w,c.h,c.r);c.path=d;c.type="rect";b=b.path(c,g);c=b.attrs;b.X=c.x;b.Y=c.y;b.W=c.width;b.H=c.height;c.path=d;return b};a._engine.ellipse=function(a,b,c){b.type="ellipse";a=a.path(b,c);b=a.attrs;a.X=b.x-b.rx;a.Y=b.y-
b.ry;a.W=2*b.rx;a.H=2*b.ry;return a};a._engine.circle=function(a,b,c){b.type="circle";a=a.path(b,c);b=a.attrs;a.X=b.x-b.r;a.Y=b.y-b.r;a.W=a.H=2*b.r;return a};a._engine.image=function(b,c,g){var d=a._rectPath(c.x,c.y,c.w,c.h);c.path=d;c.type="image";c.stroke="none";b=b.path(c,g);g=b.attrs;var d=b.node,z=d.getElementsByTagName("fill")[0];g.src=c.src;b.X=g.x=c.x;b.Y=g.y=c.y;b.W=g.width=c.w;b.H=g.height=c.h;z.parentNode==d&&d.removeChild(z);z.rotate=!0;z.src=g.src;z.type="tile";b._.fillpos=[g.x,g.y];
b._.fillsize=[g.w,g.h];d.appendChild(z);m(b,1,1,0,0,0);return b};a._engine.text=function(c,g,z){var w=p("shape"),e=p("path"),E=p("textpath");x=g.x||0;y=g.y||0;text=g.text;e.v=a.format("m{0},{1}l{2},{1}",d(21600*g.x),d(21600*g.y),d(21600*g.x)+1);e.textpathok=!0;E.string=b(g.text).replace(/<br\s*?\/?>/ig,"\n");E.on=!0;w.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px";w.coordsize="21600 21600";w.coordorigin="0 0";c=new R(w,c,z);c.shape=w;c.path=e;c.textpath=E;c.type="text";c.attrs.text=
b(g.text||"");c.attrs.x=g.x;c.attrs.y=g.y;c.attrs.w=1;c.attrs.h=1;G(c,g);ka(c,g);w.appendChild(E);w.appendChild(e);return c};a._engine.setSize=function(b,c){var g=this.canvas.style;this.width=b;this.height=c;b==+b&&(b+="px");c==+c&&(c+="px");g.width=b;g.height=c;g.clip="rect(0 "+b+" "+c+" 0)";this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox);return this};a._engine.setViewBox=function(a,b,c,g,d){u("raphael.setViewBox",this,this._viewBox,[a,b,c,g,d]);var w=this.width,e=this.height,E=1/z(c/
w,g/e),I,h;d&&(I=e/g,h=w/c,c*I<w&&(a-=(w-c*I)/2/I),g*h<e&&(b-=(e-g*h)/2/h));this._viewBox=[a,b,c,g,!!d];this._viewBoxShift={dx:-a,dy:-b,scale:E};this.forEach(function(a){a.transform("...")});return this};var p;a._engine.initWin=function(c){var g=c.document;g.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!g.namespaces.rvml&&g.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),p=a._createNode=function(a,c){var d=g.createElement("<rvml:"+a+' class="rvml">'),z;for(z in c)d[z]=
b(c[z]);return d}}catch(d){p=a._createNode=function(a,c){var d=g.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'),z;for(z in c)d[z]=b(c[z]);return d}}};a._engine.initWin(a._g.win);a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,g=b.height,d=b.width,z=b.x,b=b.y;if(!c)throw Error("VML container not found.");var w=new a._Paper,e=w.canvas=a._g.doc.createElement("div"),E=e.style,z=z||0,b=b||0,d=d||512,g=g||342;w.width=d;w.height=g;d==+d&&(d+=
"px");g==+g&&(g+="px");w.coordsize="21600000 21600000";w.coordorigin="0 0";e.id="raphael-paper-"+w.id;w.span=a._g.doc.createElement("span");w.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;";e.appendChild(w.span);E.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;cursor:default;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",d,g);1==c?(a._g.doc.body.appendChild(e),E.left=z+"px",E.top=b+"px",E.position="absolute"):c.firstChild?
c.insertBefore(e,c.firstChild):c.appendChild(e);w.renderfix=function(){};return w};a.prototype.clear=function(){var b;for(u("raphael.clear",this);b=this.bottom;)b.remove();this.canvas.innerHTML="";this.span=a._g.doc.createElement("span");this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";this.canvas.appendChild(this.span);this.bottom=this.top=null};a.prototype.remove=function(){var b;for(u("raphael.remove",this);b=this.bottom;)b.remove();
this.canvas.parentNode.removeChild(this.canvas);for(b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;return!0};var L=a.st,r;for(r in g)g.hasOwnProperty(r)&&!L.hasOwnProperty(r)&&(L[r]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(r))}})();ga?r.win.Raphael=a:Raphael=a;return a},!0)})();f.Raphael=C;f.Raphael.desc="";t&&t!==C?window.Raphael=t:window.Raphael===C&&(window.Raphael=void 0)}]);
FusionCharts.register("module",["private","fusioncharts.redraphael.helper",function(){var f={};this.hcLib.Raphael.fn._elementFromEvent=function(t){if(!t||this.removed)return null;var C=t.srcElement||t.target||(t=t.originalEvent)&&(t.srcElement||t.target)||f;"tspan"===C.nodeName&&(C=C.parentNode);return this.getById(C.raphaelid)}}]);
FusionCharts.register("module",["private","fusioncharts.redraphael.css",function(){var f=this.hcLib.Raphael,t=f.eve,C=f._g,q=f.fn,d=f.el,a=/[, ]+/,m=/\B([A-Z]{1})/g,F,c;F=function(a){this.styleSheet="";this.rules={};this.ns=a||""};c=F.prototype;c.getSheet=function(){var a=this.node;this.styleSheet=c.getStyleSheet("fusioncharts-raphael-stylesheet");this.styleSheet||(a=this.node=C.doc.createElement("style"),a.setAttribute("id",f.format("raphael-stylesheet-{0}",f._oid++)),a.setAttribute("type","text/css"),
a.setAttribute("title","fusioncharts-raphael-stylesheet"),(C.doc.head||C.doc.getElementsByTagName("head")[0]).appendChild(this.node),this.styleSheet=c.getStyleSheet("fusioncharts-raphael-stylesheet"));return this.styleSheet};c.getStyleSheet=function(a){for(var b=C.doc.styleSheets,c=b.length,d;c--;)if(d=b[c],d.title===a)return d};c.applyCSSRule=function(a,b){var c=this.styleSheet,d;if(!c)if(a&&b)c=this.getSheet();else return;d=(c.rules||c.cssRules||{}).length||0;c.insertRule?c.insertRule(a+"{"+b+"}",
d):c.addRule&&c.addRule(a,b,d)};c.removeCSS=function(a){var b=this.styleSheet,c=b.rules||b.cssRules||{},d=c.length||0,f;for(a=a||this.ns;d--;)f=c[d],(new RegExp(a)).test(f.selectorText)&&(b.removeRule?b.removeRule(d):b.deleteRule(d))};c.destroy=function(){this.removeCSS();delete this.node;delete this.styleSheet;delete this.ns;delete this.rules};c.clear=function(){this.removeCSS();this.rules={}};c.add=function(a,b){var c=this.rules[a]||(this.rules[a]={}),d;for(d in b)c[d]=b[d]};c.render=function(){this.setCssText()};
c.setCssText=function(a){var b=a?"":"\t";a=a?":":": ";var c="",d="",f,e;for(f in this.rules){c="";d=f.replace(/(^|\,)/g,"$1"+this.ns+" ");f=this.rules[f];for(e in f)f[e]&&(c+=b+e.replace(m,"-$1").toLowerCase()+a+f[e]+";");this.applyCSSRule(d,c)}};t.on("raphael.new",function(){this._stylesheet=this._stylesheet||new F;this.cssNamespace("")});t.on("raphael.remove",function(){this._stylesheet&&this._stylesheet.destroy();delete this._stylesheet});q.cssNamespace=function(a){arguments.length&&(this._stylesheet.ns=
f.format("{0}#raphael-paper-{1}",a&&a+" "||"",this.id));return this._stylesheet.ns};q.cssAddRule=function(a,b){if(1===arguments.length&&"object"===typeof a){for(var c in a)this.cssAddRule(c,a[c]);return this}return this._stylesheet.add(a,b),this};q.cssRender=function(){return f.svg&&this._stylesheet.render(),this};q.cssClear=function(){return this._stylesheet.clear(),this};f._availableAttrs["class"]="";f.svg&&t.on("raphael.attr.class",function(a){var b=this.node;a=a||"";b.setAttribute("class","group"===
this.type&&this._id?"raphael-group-"+this.id+"-"+this._id+" "+a:a)});f.vml&&t.on("raphael.attr.class",function(a){var b=this.paper,c="."+a,b=b._stylesheet&&b._stylesheet.rules,d=this.parent,f=this.attrs,e={},h;this.node.className="group"===this.type?a&&this._id+" "+a||this._id:"rvml "+a;if(c&&b){a=b[c];for(h in a)"color"===h&&"text"===this.type&&(h="fill"),!f[h]&&(e[h]=a[h]);for(;d&&d.attr;){if(a=d.attr("class"))for(h in c="."+a+" "+c,a=b[c],a)"color"===h&&"text"===this.type&&(h="fill"),f[h]||e[h]||
(e[h]=a[h]);d=d.parent}this.css(e)}});d.css=function(c,b){var d,m,s,e;if(this.removed)return this;this.styles||(this.styles={});if(null==b&&f.is(c,"string")){d=c.split(a);m={};e=0;for(s=d.length;e<s;e++)c=d[e],c in this.styles&&(m[c]=this.styles[c]);return s-1?m:m[d[0]]}if(null==b&&f.is(c,"array")){m={};e=0;for(s=c.length;e<s;e++)m[c[e]]=this.styles(c[e]);return m}null!=b?(d={},d[c]=b):null!=c&&f.is(c,"object")&&(d=c);m={};for(e in d)s=e.replace(/\B([A-Z]{1})/g,"-$1").toLowerCase(),f._availableAttrs.hasOwnProperty(s)||
"color"===s?("color"===s&&"text"===this.type&&(s="fill"),m[s]=d[e],m.dirty=!0):(t("raphael.css."+s+"."+this.id,this,d[e],s),this.node.style[s]=d[e],this.styles[s]=d[e]);e=0;for(s=this.followers.length;e<s;e++)this.followers[e].el.attr(d);m.hasOwnProperty("dirty")&&(delete m.dirty,this.attr(m));return this}}]);
FusionCharts.register("module",["private","modules.renderer.js-raphaelexport",function(){var f=this.hcLib,t=f.Raphael,C=f.pluckNumber,q=f.pluck,d=t._availableAttrs,a=/^matrix\(|\)$/g,m=/\,/g,F=/\n|<br\s*?\/?>/ig,c=/[^\d\.]/ig,l=/[\%\(\)\s,\xb0#]/g,b=/group/ig,p=/&/g,H=/"/g,s=/'/g,e=/</g,h=/>/g,k=0;(function(f){var t=Math,J=parseFloat,n=t.max,N=t.abs,B=t.pow,U=String,r=/[, ]+/,ga=[{reg:/xmlns\=\"http\:\/\/www.w3.org\/2000\/svg\"/ig,repStr:""},{reg:/^.*<svg /,repStr:'<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" '},
{reg:/\/svg>.*$/,repStr:"/svg>"},{reg:/<desc\>[^<]*<\/desc\>/,repStr:""},{reg:/zIndex="[^"]+"/g,repStr:""},{reg:/url\((\\?[\'\"])[^#]+#/g,repStr:"url($1#"},{reg:/ href=/g,repStr:" xlink:href="},{reg:/(id|class|width|height)=([^" >]+)/g,repStr:'$1="$2"'},{reg:/:(path|rect)/g,repStr:"$1"},{reg:/<ima?ge? ([^\>]+?[^\/])\>/gi,repStr:"<image $1 />"},{reg:/<\/ima?ge?\>/g,repStr:""},{reg:/style="([^"]+)"/g,repStr:function(a){return a.toLowerCase()}}],X={blur:function(){},transform:function(){},src:function(a,
b){b.attrSTR+=' xlink:href="'+b.attrs.src+'"'},path:function(a,b){var c=b.attrs.path,c=f._pathToAbsolute(c||"");b.attrSTR+=' d="'+(c.toString&&c.toString()||"").replace(m," ")+'"'},gradient:function(a,b,c){var d=a.attrs.gradient,e="linear",h,k,m,r=.5,u=.5,L=k="",p="",s,q,F,X;h=d.replace(l,"_");if(!c[h]){d=U(d).replace(f._radial_gradient,function(a,b){var c,d,h,k,l,f,n;b=b&&b.split(",")||[];e="radial";c=b[0];d=b[1];h=b[2];k=b[3];l=b[4];X=b[5];n=c&&d;h&&(F=/\%/.test(h)?h:J(h));if("userSpaceOnUse"===
X)return n&&(r=c,u=d),k&&l&&(s=k,q=l,n||(r=s,u=q)),"";n&&(r=J(c),u=J(d),c=2*(.5<u)-1,.25<(f=B(r-.5,2))+B(u-.5,2)&&.25>f&&(u=t.sqrt(.25-f)*c+.5)&&.5!==u&&(u=u.toFixed(5)-1E-5*c));k&&l&&(s=J(k),q=J(l),c=2*(.5<q)-1,.25<(f=B(s-.5,2))+B(q-.5,2)&&.25>f&&(q=t.sqrt(.25-f)*c+.5)&&.5!==q&&(q=q.toFixed(5)-1E-5*c),n||(r=s,u=q));return""});d=d.split(/\s*\-\s*/);if("linear"===e){k=d.shift();k=-J(k);if(isNaN(k))return null;m=[0,0,t.cos(f.rad(k)),t.sin(f.rad(k))];k=1/(n(N(m[2]),N(m[3]))||1);m[2]*=k;m[3]*=k;0>m[2]&&
(m[0]=-m[2],m[2]=0);0>m[3]&&(m[1]=-m[3],m[3]=0)}d=f._parseDots(d);if(!d)return null;"radial"===e?(k='<radialGradient fx = "'+r+'" fy = "'+u+'" cy = "'+q+'" cx = "'+s+'" r = "'+F+'" gradientUnits = "'+X+'" id = "'+h+'">',L="</radialGradient>"):(k='<linearGradient x1 = "'+m[0]+'" y1 = "'+m[1]+'" x2 = "'+m[2]+'" y2 = "'+m[3]+'" gradientTransform ="matrix('+a.matrix.invert()+')" id = "'+h+'">',L="</linearGradient>");a=0;for(m=d.length;a<m;a++)p+='<stop offset="'+(d[a].offset?d[a].offset:a?"100%":"0%")+
'" stop-color="'+(d[a].color||"#fff")+'" stop-opacity="'+(void 0===d[a].opacity?1:d[a].opacity)+'" />';c[h]=!0;c.str+=k+p+L}b.attrSTR+=" fill=\"url('#"+h+"')\""},fill:function(a,b){var c=b.attrs,d=c.fill,e;a.attrs.gradient||(d=f.color(d),e=d.opacity,"text"===a.type?b.styleSTR+="fill:"+d+"; stroke-opacity:0; ":(b.attrSTR+=' fill="'+d+'"',c["fill-opacity"]||!e&&0!==e||(b.attrSTR+=' fill-opacity="'+e+'"')))},stroke:function(a,b){var c=b.attrs,d,e;d=f.color(c.stroke);e=d.opacity;"text"!==a.type&&(b.attrSTR+=
' stroke="'+d+'"',c["stroke-opacity"]||!e&&0!==e||(b.attrSTR+=' stroke-opacity="'+e+'"'))},"clip-rect":function(b,c,d){var e=U(c.attrs["clip-rect"]),h=e.split(r),e=e.replace(l,"_")+"__"+k++;4===h.length&&(d[e]||(d[e]=!0,d.str+='<clipPath id="'+e+'"><rect x="'+h[0]+'" y="'+h[1]+'" width="'+h[2]+'" height="'+h[3]+'" transform="matrix('+b.matrix.invert().toMatrixString().replace(a,"")+')"/></clipPath>'),c.attrSTR+=' clip-path="url(#'+e+')"')},cursor:function(a,b){var c=b.attrs.cursor;c&&(b.styleSTR+=
"cursor:"+c+"; ")},font:function(a,b){b.styleSTR+="font:"+b.attrs.font.replace(/\"/ig," ")+"; "},"font-size":function(a,b){var d=q(b.attrs["font-size"],"10");d&&d.replace&&(d=d.replace(c,""));b.styleSTR+="font-size:"+d+"px; "},"font-weight":function(a,b){b.styleSTR+="font-weight:"+b.attrs["font-weight"]+"; "},"font-family":function(a,b){b.styleSTR+="font-family:"+b.attrs["font-family"]+"; "},"line-height":function(){},"clip-path":function(){},visibility:function(){},"vertical-align":function(){},
"text-anchor":function(a,b){var c=b.attrs["text-anchor"]||"middle";"text"===a.type&&(b.attrSTR+=' text-anchor="'+c+'"')},title:function(){},text:function(a,b){var d=b.attrs,k=d.text,l=q(d["font-size"],d.font,"10"),f=q(d["line-height"]),n,m,v;l&&l.replace&&(l=l.replace(c,""));l=C(l);f&&f.replace&&(f=f.replace(c,""));f=C(f,l&&1.2*l);n=l?.85*l:.75*f;l=d.x;m=q(d["vertical-align"],"middle").toLowerCase();k=U(k).split(F);v=k.length;d=0;for(n="top"===m?n:"bottom"===m?n-f*v:n-f*v*.5;d<v;d++)b.textSTR+="<tspan ",
m=(k[d]||"").replace(p,"&amp;").replace(H,"&quot;").replace(s,"&#39;").replace(e,"&lt;").replace(h,"&gt;"),b.textSTR=d?b.textSTR+('dy="'+f+'" x="'+l+'" '):b.textSTR+('dy="'+n+'"'),b.textSTR+=">"+m+"</tspan>"}},aa=function(c,e){var h="",k={attrSTR:"",styleSTR:"",textSTR:"",attrs:c.attr()},l=c.isShadow,f="",n="",m,v,u=k.attrs;if("none"===c.node.style.display||l)c.next&&(h+=aa(c.next,e));else{for(m in u)if("gradient"!==m&&(void 0!==d[m]||X[m])&&void 0!==u[m])if(X[m])X[m](c,k,e);else k.attrSTR+=" "+m+
'="'+u[m]+'"';c.attrs.gradient&&X.gradient(c,k,e);"rect"===c.type&&u.r&&(k.attrSTR+=' rx="'+u.r+'" ry="'+u.r+'"');for(v in c.styles)k.styleSTR+=v+":"+c.styles[v]+"; ";"image"===c.type&&(k.attrSTR+=' preserveAspectRatio="none"');if("text"===c.type&&!u["text-anchor"])X["text-anchor"](c,k);c.bottom&&(f=aa(c.bottom,e));c.next&&(n=aa(c.next,e));l=c.type;l.match(b)&&(l="g");h+="<"+l+' transform="matrix('+c.matrix.toMatrixString().replace(a,"")+')" style="'+k.styleSTR+'"'+k.attrSTR+">"+k.textSTR+f+"</"+
l+">"+n}return h},W=function(a,b){var c="",d;for(d in a)a.hasOwnProperty(d)&&("init"===b?c+=d+" { "+W(a[d],"attr")+" };":"attr"===b&&"object"!=typeof a[d]&&(c+=d+": "+a[d]+";"));return"init"===b?c.slice(0,-1):c};f.fn.toSVG=function(a){var b="",c={str:""},d=0,e=ga.length,h="";if(f.svg){if(this.canvas&&this.canvas.parentNode){for(b=this.canvas.parentNode.innerHTML;d<e;d+=1)c=ga[d],b=b.replace(c.reg,c.repStr);this._stylesheet&&this._stylesheet.rules&&(b=b.replace(/^(<svg\s[\s\S]*?>)/ig,'$1<style type="text/css">'+
W(this._stylesheet.rules,"init")+"</style>"))}}else b='<svg style="overflow: hidden; position: relative;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+this.width+'" version="1.1" height="'+this.height+'">',this.bottom&&(h=aa(this.bottom,c)),b+="<defs>"+c.str+"</defs>"+h+"</svg>";a||(b=b.replace(/<image [^\>]*\>/gi,""));return b}})(t)}]);
FusionCharts.register("module",["private","modules.renderer.js-raphaelshadow",function(){var f=this.window,t=f.Math.sqrt,C=f.parseFloat,q=f.parseInt,f=f.SVGFilterElement||f.SVGFEColorMatrixElement&&2===f.SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE,d=this.hcLib.Raphael,a={"drop-shadow":"drop-shadow",stroke:"stroke",fill:"fill","stroke-width":"stroke-width","stroke-opacity":"stroke-opacity","stroke-linecap":"stroke-linecap","stroke-linejoin":"stroke-linejoin","shape-rendering":"shape-rendering",
transform:"transform"},m=d._createNode,F;d.svg?(f&&(d.el.dropshadow=function(a,l,b,f){var q=this.node,s=this._.shadowFilter,e=this.paper.cacheShadows||(this.paper.cacheShadows={}),h="drop-shadow"+[a,l,b,f].join(" "),k;if("none"===a){if(s){--s.use;this.node.removeAttribute("filter");if(!s.use){h=s.hash;for(k in s)a=s[k],a.parentNode&&a.parentNode.removeChild(a),delete s[k];delete e[h]}delete this._.shadowFilter}}else s&&e[h]===s||(s=this.paper.defs.appendChild(m("filter",{id:d.createUUID(),width:"200%",
height:"200%"})),f=d.color(f),f.error&&(f=d.color("rgba(0,0,0,1)")),k=d.pick(f.opacity,1),this._.shadowFilter=e[h]={use:1,filter:s,hash:h,offset:s.appendChild(m("feOffset",{result:"offOut","in":"SourceGraphic",dx:C(a),dy:C(l)})),matrix:s.appendChild(m("feColorMatrix",{result:"matrixOut","in":"offOut",type:"matrix",values:"0 0 0 0 "+f.r/255+" 0 0 0 0 "+f.g/255+" 0 0 0 0 "+f.b/255+" 0 0 0 "+k+" 0"})),blur:s.appendChild(m("feGaussianBlur",{result:"blurOut","in":"matrixOut",stdDeviation:t(C(b))})),blend:s.appendChild(m("feComposite",
{"in":"SourceGraphic",in2:"blurOut",operator:"over"}))},q.setAttribute("filter",'url("'+d._url+"#"+s.id+'")'));return this}),F=function(c,d){var b=this.__shadowscale,f={},m,s;for(s in c)switch(a[s]&&(f[s]=c[s],delete c[s]),s){case "transform":m=d.matrix.clone();m.translate(this.__shadowx,this.__shadowy);this.transform(m.toTransformString());break;case "stroke-width":c[s]=((f[s]||1)+6-2*this.__shadowlevel)*b}this.attr(c);for(s in f)c[s]=f[s]},d.ca["drop-shadow"]=function(a,f,b,m,t,s){b=this._.shadows||
(this._.shadows=[]);var e,h,k,v,K;if(!this.__shadowblocked)if("none"===a)for(;h=b.pop();)h.remove();else for(m=d.color(m),m.error&&(m=d.color("rgba(0,0,0,1)")),t instanceof Array?(e=t[0],t=t[1]):e=t,e=1/d.pick(e,1),t=1/d.pick(t,1),a=d.pick(a,1)*e,f=d.pick(f,1)*e,e=.05*d.pick(m.opacity,1),k=q(this.attr("stroke-width")||1,10)+6,v=this.matrix.clone(),v.translate(a,f),K=1;3>=K;K++)h=(b[K-1]||this.clone().follow(this,F,!s&&"before")).attr({stroke:m.hex,"stroke-opacity":e*K,"stroke-width":(k-2*K)*t,transform:v.toTransformString(),
"stroke-linecap":"round","stroke-linejoin":"round",fill:"none"}),h.__shadowlevel=K,h.__shadowscale=t,h.__shadowx=a,h.__shadowy=f,s&&s.appendChild(h),b.push(h);return!1},d.el.shadow=function(a,f,b,m){var q;b&&b.constructor===d.el.constructor&&(m=b,b=void 0);"object"===typeof a&&(f&&f.constructor===d.el.constructor&&(m=f),f=a.opacity,b=a.scalefactor,q=!!a.useFilter,a=void 0===a.apply?!!f:a.apply);void 0===f&&(f=1);if(this.dropshadow){if(q)return a&&this.dropshadow(1,1,3,"rgb(64,64,64)")||this.dropshadow("none"),
this;this._.shadowFilter&&this.dropshadow("none")}return this.attr("drop-shadow",a?[1,1,3,"rgba(64,64,64,"+f+")",b,m]:"none")}):d.vml?(d.ca["drop-shadow"]=function(a,f,b,m,q,s){var e=this._.shadow,h,k;if(this.isShadow)return!1;"none"===a?e&&(this._.shadow=e.remove()):(e||(e=this._.shadow=this.clone(),s&&s.appendChild(e.follow(this))||e.follow(this,void 0,"before"),e.attr({fill:"none","fill-opacity":.5,"stroke-opacity":1}).isShadow=!0,0>=e.attr("stroke-width")&&e.attr("stroke-width",1)),s=e.node.runtimeStyle,
h=s.filter.replace(/ progid:\S+Blur\([^\)]+\)/g,""),m=d.color(m),m.error&&(m=d.color("rgba(0,0,0,1)")),k=d.pick(m.opacity,1)/5,q=1/d.pick(q,1),a=d.pick(a,1)*q,f=d.pick(f,1)*q,e.translate(a,f),s.filter=h+" progid:DXImageTransform.Microsoft.Blur(pixelRadius="+C(.4*b)+" makeShadow=True Color="+m.hex+' shadowOpacity="'+k+'");');return!1},d.el.shadow=function(a,f,b,m){b&&b.constructor===d.el.constructor&&(m=b,b=void 0);"object"===typeof a&&(f&&"group"===f.type&&(m=f),f=a.opacity,b=a.scalefactor,a=void 0===
a.apply?!!f:a.apply);void 0===f&&(f=1);return this.attr("drop-shadow",a||!f?[1,1,5,"rgba(64,64,64,"+f+")",b,m]:"none")}):d.canvas&&(d.el.shadow=function(){return this})}]);
FusionCharts.register("module",["private","modules.renderer.js-raphaelshapes",function(){var f=this.window,t="createTouch"in f.document,C=/msie/i.test(f.navigator.userAgent)&&!f.opera,q=f.Math,d=q.cos,a=q.sin,m=q.abs,F=q.pow,c=q.atan2,l=q.tan,b=q.acos,p=q.min,H=q.round,s=q.PI,e=q.sqrt,h=2*s,k=f.parseInt,v=f.parseFloat,K=String,J=Array.prototype.slice,n=F(2,-24),N="rgba(192,192,192,"+(C?.002:1E-6)+")",B=this.hcLib.Raphael,U=B.eve,r=B._createNode,ga=B._setFillAndStroke,X=B.el.constructor,aa={speed:"optimizeSpeed",
crisp:"crispEdges",precision:"geometricPrecision"},W={enabled:!1,"false":!1,0:!1,disabled:!0,"true":!0,1:!0},ya={Q:"L",Z:"X",q:"l",z:"x",",":" "},va=/,?([achlmqrstvxz]),?/gi,za=/\s*\,\s*/g,ja,O=function(){return this.join(",").replace(va,ja)},na,ma,M=B._cacher(function(a,b,c,d){return e(F(c-a,2)+F(d-b,2))}),T=B._cacher(function(a,b,c,d,e){var h=c-a,k=d-b;c=M(a,b,c,d);return{x:a+h/c*e,y:b+k/c*e}});if(B.svg)U.on("raphael.attr.shape-rendering",function(a,b){var c=this.node;this.attrs[b]=a=aa[a]||a||
"auto";c.setAttribute(b,a);c.style.shapeRendering=a});else if(B.vml)U.on("raphael.attr.shape-rendering",function(a){this.node.style.antialias="crisp"!==a});B.define&&B.define([{name:"polypath",polypath:function(){return this.path(void 0,B._lastArgIfGroup(arguments))},ca:{polypath:function(b,c,e,h,f,l){var n,m,r;n=[];b=k(b,10)||0;c=v(c)||0;e=v(e)||0;h=v(h)||0;f=null===f||isNaN(f)?.5*s:B.rad(f);l=null===l||isNaN(l)?0:v(l);m=f;if(2<b)switch(f=2*s/b,l){case 0:for(l=0;l<b;l++)n.push("L",c+h*d(-m),e+h*
a(-m)),m+=f;n[0]="M";n.push("Z");break;case 1:for(l=0;l<b;l++)n.push("M",c,e,"L",c+h*d(-m),e+h*a(-m)),m+=f;break;default:f*=.5;r=h*d(f)*(1-l);for(l=0;l<b;l++)n.push("L",c+h*d(-m),e+h*a(-m)),m+=f,n.push("L",c+r*d(-m),e+r*a(-m)),m+=f;n[0]="M";n.push("Z")}else 0===h?n.push("M",c,e,"L",c,e,"Z"):n.push("M",c-h,e,"A",h,h,0,0,0,c+h,e,"A",h,h,0,0,0,c-h,e,"Z");return{path:n}},r:function(a){var b=this.attrs.polypath;b[3]=a;this.attr("polypath",b);return!1}}},{name:"ringpath",ringpath:function(){return this.path(void 0,
B._lastArgIfGroup(arguments))},ca:function(b,c,e,k,f,l){var v=l%h-f%h,r=l-f,B,p,q,M,t;this._.ringangle=.5*(f+l);m(r)<n?(r=d(f),f=a(f),e=["M",b+e*r,c+e*f,"L",b+k*r,c+k*f,"Z"]):(m(r)>n&&m(r)%h<n?(e=["M",b-e,c,"A",e,e,0,0,0,b+e,c,"A",e,e,0,0,0,b-e,c],0!==k&&(e=e.concat(["M",b-k,c,"A",k,k,0,0,1,b+k,c,"A",k,k,0,0,1,b-k,c]))):(r=d(f),f=a(f),B=d(l),l=a(l),v%=h,0>v&&(v+=h),v=v<s?0:1,p=b+e*r,M=c+e*f,q=b+e*B,t=c+e*l,B=b+k*B,l=c+k*l,.01>m(p-q)&&.01>m(M-t)&&(M=t+.01),e=["M",p,M,"A",e,e,0,v,1,q,t,"L",B,l],0!==
k&&(b+=k*r,c+=k*f,.01>m(B-b)&&.01>m(l-c)&&(c=l+.01),e.push("A",k,k,0,v,0,b,c))),e.push("Z"));return{path:e}}},{name:"cubepath",cubepath:function(){var a={"stroke-linejoin":"round","shape-rendering":"precision",stroke:"none"},b=arguments,c=b.length-1,d=b[c],e,h;d&&d.constructor===B.el.constructor?b[c]=void 0:d=void 0;c=this.path(a,d);e=this.path(a,d);a=this.path(a,d);a._.cubetop=c.follow(a,void 0,"before");a._.cubeside=e.follow(a,void 0,"before");for(h in B.fn.cubepath.ca)a.ca[h]=B.fn.cubepath.ca[h];
return a.attr("cubepath",[b[0],b[1],b[2],b[3],b[4],b[5]])},fn:{_getBBox2:function(){var a=this._.cubeside.getBBox(),b=this._.cubetop.getBBox(),c=this.getBBox();return{x:c.x+b.height,y:c.y-a.width,width:c.width,height:c.height}}},ca:{cubepath:function(a,b,c,d,e,h){var k=this._.cubetop,f=this._.cubeside;a=a||0;b=b||0;c=c||0;d=d||0;e=e||0;h=h||0;this.attr("path",["M",a+c,b,"l",0,d,-c,0,0,-d,"z"]);k.attr("path",["M",a,b,"l",1,1,c-1,0,0,-1,e,-h,-c,0,"z"]);f.attr("path",["M",a+c-1,b+1,"l",0,d-1,1,0,e,-h,
0,-d,-e,h]);return!1},"stroke-linejoin":function(){return{"stroke-linejoin":"round"}},"drop-shadow":function(a,b,c,d){var e=this._.cubetop,h=this._.cubeside;this.dropshadow&&(e.dropshadow(a,-b,c,d),h.dropshadow(a,-b,c,d));return!1},fill:function(a,b){var d=this._.cubetop,e=this._.cubeside,h=this.attr("cubepath")||[0,0,0,0,0,0],k=h[2],f=h[4],h=h[5],l;a=B.color(a);b?(this.attr("fill",a),d.attr("fill",B.tintshade(a,-.78).rgba),e.attr("fill",B.tintshade(a,-.65).rgba)):(l="opacity"in a?"rgba("+[a.r,a.g,
a.b,a.opacity]+")":"rgb("+[a.r,a.g,a.b]+")",this.attr("fill",[270,B.tintshade(l,.55).rgba,B.tintshade(l,-.65).rgba].join("-")),e.attr("fill",[270,B.tintshade(l,-.75).rgba,B.tintshade(l,-.35).rgba].join("-")),d.attr("fill",[45+B.deg(c(h,f+k)),B.tintshade(l,-.78).rgba,B.tintshade(l,.22).rgba].join("-")));return!1}}},{name:"scroller",scroller:function(a,b,c,d,e,h,k){var f=this.group("scroller",k),l=f.attrs,n=f._.scroller={};e=e&&"horizontal"||"vertical";var r,p={},s,q,M;n.track=this.rect(f).mousedown(function(a){var b=
l["scroll-position"];a="horizontal"===l["scroll-orientation"]?a.layerX||a.x:a.layerY||a.y;a=(a-n.anchorOffset)/n.trackLength;r=B.animation({"scroll-position":a},2E3*m(b-a),"easeIn");f.animate(r);U("raphael.scroll.start."+f.id,f,b)}).mouseup(n._mouseupTrack=function(){this.stop(r);U("raphael.scroll.end."+this.id,this,l["scroll-position"])},f,!0);n.anchor=this.rect(f).drag(function(){p["scroll-position"]=s+arguments[q]/n.trackLength;f.animate(p,0)},function(a,b,c){q="horizontal"===l["scroll-orientation"]?
0:1;U("raphael.scroll.start."+f.id,f,s=l["scroll-position"]);c.stopPropagation()},function(){U("raphael.scroll.end."+f.id,f,s=l["scroll-position"])});for(M in B.fn.scroller.fn)f[M]=B.fn.scroller.fn[M];for(M in B.fn.scroller.ca)f.ca[M]=B.fn.scroller.ca[M];l["scroll-orientation"]=e;l["stroke-width"]=1;f.ca["scroll-repaint"]=f.ca["scroll-repaint-"+e];!B.is(h,"object")&&(h={});return f.attr({ishot:!0,"scroll-display-buttons":h.showButtons&&"arrow"||"none","scroll-display-style":h.displayStyleFlat&&"flat"||
"3d","scroll-ratio":v(h.scrollRatio)||1,"scroll-position":v(h.scrollPosition)||0,"scroll-repaint":[a,b,c,d]})},fn:{scroll:function(a,b){var c=this._.scroller;b=b||this;c.callback=function(){return a.apply(b,arguments)};return this},remove:function(){var a=this._.scroller,b;this.attr("scroll-display-buttons","none");a.track.unmouseup(a._mouseupTrack);for(b in a)a[b]&&a[b].remove&&a[b].remove(),a[b]=null;delete this._.scroller;B.el.remove.apply(this,arguments)}},ca:{"stroke-width":function(){return!1},
"drop-shadow":function(a,b,c,d,e,h){this._.scroller.track.attr("drop-shadow",[a,b,c,d,e,h]);return!1},"scroll-display-style":function(a){var b=this.attrs,c=b["scroll-display-style"],d=b.fill;a={flat:"flat","3d":"3d",transparent:"transparent"}[a]||c;d&&a!==c&&(b["scroll-display-style"]=a,this.attr("fill",d));return{"scroll-display-style":a}},"scroll-display-buttons":function(a){var b=this,c=b.paper,d=b._.scroller,e=b.attrs,h=e["scroll-display-buttons"],k=e["scroll-repaint"],f,l;void 0===h&&(h="none");
a={none:"none",arrow:"arrow"}[a]||h;a!==h&&(e["scroll-display-buttons"]=a,"none"===a&&d.start?(d.arrowstart.remove(),delete d.arrowstart,d.arrowend.remove(),delete d.arrowend,d.start.unmouseup(d._mouseupStart),d.start.remove(),delete d.start,d.end.unmouseup(d._mouseupEnd),d.end.remove(),delete d.end):(d.arrowstart=c.polypath(b),d.arrowend=c.polypath(b),d.start=c.rect(b).mousedown(function(){var a;0!==(a=e["scroll-position"])&&(b.animate({"scroll-position":a-.1},100).animate(f=B.animation({"scroll-position":0},
4500*a,"easeIn")),U("raphael.scroll.start."+b.id,b,a))}).mouseup(d._mouseupStart=function(){b.stop(f);U("raphael.scroll.end."+b.id,b,e["scroll-position"])},b,!0),d.end=c.rect(b).mousedown(function(){var a;1!==(a=e["scroll-position"])&&(b.animate({"scroll-position":a+.1},100).animate(l=B.animation({"scroll-position":1},4500*(1-a),"easeIn")),U("raphael.scroll.start."+b.id,b,a))}).mouseup(d._mouseupEnd=function(){b.stop(l);U("raphael.scroll.end."+b.id,b,e["scroll-position"])},b,!0),e.fill&&b.attr("fill",
e.fill)),k&&b.attr("scroll-repaint",k));return{"scroll-display-buttons":a}},"scroll-orientation":function(a){var b=this.attrs,c=b["scroll-repaint"],d=b["scroll-orientation"];a={horizontal:"horizontal",vertical:"vertical"}[a]||d;d!==a&&(this.ca["scroll-repaint"]=this.ca["scroll-repaint-"+a],c&&(c[2]+=c[3],c[3]=c[2]-c[3],c[2]-=c[3],this.attr("scroll-repaint",c)),b.fill&&this.attr("fill",b.fill));return{"scroll-orientation":a}},"scroll-ratio":function(a){var b=this.attrs,c=b["scroll-ratio"],d=b["scroll-repaint"];
a=1<a?1:.01>a?.01:v(a);d&&a!==c&&(b["scroll-ratio"]=a,this.attr("scroll-repaint",d));return{"scroll-ratio":a}},"scroll-position":function(a,b){var c=this.attrs,d="horizontal"===c["scroll-orientation"],e=c["scroll-repaint"],h=c["scroll-position"],k=this._.scroller,f=k.anchor;a=1<a?1:0>a?0:v(a);isNaN(a)&&(a=h);e&&(h!==a||b)&&(h=k.start&&k.start.attr(d&&"width"||"height")||0,d&&f.attr("x",e[0]+h+(e[2]-2*h-f.attr("width"))*a+.5)||f.attr("y",e[1]+h+(e[3]-2*h-f.attr("height"))*a+.5),!b&&1>c["scroll-ratio"]&&
(U("raphael.scroll.change."+this.id,this,a),k.callback&&k.callback(a)));return{"scroll-position":a}},r:function(a){var b=this._.scroller;b.track.attr("r",a);b.anchor.attr("r","none"===this.attrs["scroll-display-buttons"]&&a||0);return!1},"scroll-repaint-horizontal":function(a,b,c,d){var e=this.attrs,h=this._.scroller,k=e["scroll-ratio"],f=e["scroll-position"],l=0,n=c*k,e="none"===e["scroll-display-buttons"];c&&--c;a&&(a+=.5);d&&--d;b&&(b+=.5);h.track.attr({width:c,height:d,y:b,x:a}).crisp();e||(l=
p(d,.5*c),n-=2*l*k,h.start.attr({width:l,height:d,x:a,y:b}),h.arrowstart.attr("polypath",[3,a+.5*l,b+.5*d,.25*l,180]),h.end.attr({width:l,height:d,x:a+c-l,y:b}),h.arrowend.attr("polypath",[3,a+c-.5*l,b+.5*l,.25*l,0]));h.trackLength=c-2*l-n;h.trackOffset=a+l+.5;h.anchorOffset=h.trackOffset+.5*(n-1);h.anchor.attr({height:d,width:n-1,y:b,x:h.trackOffset+h.trackLength*f}).crisp()},"scroll-repaint-vertical":function(a,b,c,d){var e=this.attrs,h=this._.scroller,k=e["scroll-ratio"],f=e["scroll-position"],
l=0,n=d*k,e="none"===e["scroll-display-buttons"];c&&--c;a&&(a+=.5);d&&--d;b&&(b+=.5);h.track.attr({width:c,height:d,y:b,x:a}).crisp();e||(l=p(c,.5*d),n-=2*l*k,h.start.attr({width:c,height:l,x:a,y:b}),h.arrowstart.attr("polypath",[3,a+.5*c,b+.5*l,.25*l,90]),h.end.attr({width:c,height:l,x:a,y:b+d-l}),h.arrowend.attr("polypath",[3,a+.5*c,b+d-.5*l,.25*l,-90]));h.trackLength=d-2*l-n;h.trackOffset=b+l+.5;h.anchorOffset=h.trackOffset+.5*(n-1);h.anchor.attr({height:n-1,width:c,y:h.trackOffset+h.trackLength*
f,x:a}).crisp()},fill:function(a){var b=this.attrs,c=this._.scroller,d=b["scroll-repaint"],e="flat"===b["scroll-display-style"],h="horizontal"===b["scroll-orientation"],k={stroke:"none"},f;t&&d&&3<(f=16-d[h&&3||2])&&(k.stroke=N,k["stroke-width"]=f);a=B.color(a);a.error&&(a=B.color("#000000"));a="opacity"in a?"rgba("+[a.r,a.g,a.b,a.opacity]+")":"rgb("+[a.r,a.g,a.b]+")";k.fill=e&&a||[90*h,B.tintshade(a,.15).rgba,a].join("-");k.stroke=B.tintshade(a,-.75).rgba;c.track.attr(k);k.fill=e&&B.tintshade(a,
-.6).rgba||[270*h,B.tintshade(a,.3).rgba+":40",B.tintshade(a,-.7).rgba].join("-");k.stroke=B.tintshade(a,-.6).rgba;c.anchor.attr(k);k.stroke="none";"none"!==b["scroll-display-buttons"]&&(k.fill=N,c.start.attr(k),c.end.attr(k),k.fill=B.tintshade(a,-.4).rgba,c.arrowstart.attr(k),c.arrowend.attr(k));return!1}}},{name:"button",button:function(a,b,c,d,e,h){h=this.group("button",h);var k;h._.button={bound:this.rect(h),tracker:this.rect(h).attr({fill:N,stroke:N,cursor:"pointer"}).data("compositeButton",
h)};!B.is(e,"object")&&(e={});for(k in B.fn.button.fn)h[k]=B.fn.button.fn[k];for(k in B.fn.button.ca)h.ca[k]=B.fn.button.ca[k];return h.attr({ishot:!0,"button-padding":[e.horizontalPadding,e.verticalPadding],"button-label":c,"button-symbol":d,"button-disabled":e.disabled||"false","button-symbol-position":e.symbolPosition,"button-symbol-padding":e.symbolPadding}).attr("button-repaint",[a,b,e.width,e.height,e.r])},data:{hoverin:function(){var a=this._.button.hoverbackIn;a&&!1===a()||(this.attr("fill",
"hover").hovered=!0)},hoverout:function(){var a=this._.button.hoverbackOut;a&&!1===a()||(this.attr("fill",(this.pressed||this.active)&&"active"||"normal").hovered=!1)},mousedown:function(){this.attr("fill","active").pressed=!0},mouseup:function(){var a=this._.button.callback;this.attr("fill",this.hovered&&"hover"||this.active&&"active"||"normal").pressed=!1;a()}},fn:{tooltip:function(){B.el.tooltip&&B.el.tooltip.apply(this._.button.tracker,arguments);return this},buttonclick:function(a,b){var c=this._.button;
b=b||this;c.callback=function(){return a.apply(b,arguments)};return this},labelcss:function(){var a=this._.button,b=a.label;a.cssArg=arguments;b&&b.css.apply(b,arguments);return this.attr("button-repaint",this.attrs["button-repaint"])},buttonhover:function(a,b,c,d){var e=this._.button;c=c||this;d=d||this;e.hoverbackIn=function(){return a.apply(c,arguments)};e.hoverbackOut=function(){return b.apply(d,arguments)};return this},remove:function(){var a=this._.button,b;this.attr("button-disabled","true");
for(b in a)a[b]&&a[b].remove&&a[b].remove(),a[b]=null;delete this._.button;B.el.remove.apply(this,arguments)}},ca:{"button-active":function(a){this.attr("fill",(this.active=!!a)?"active":this.hovered&&"hover"||"normal")},"button-disabled":function(a){var b=this._.button.tracker,c=this.attrs["button-disabled"],d=this.paper.button.data;a=W[a];c=W[c];if(void 0!==a&&a!==c)switch(a){case !0:b.attr("fill","rgba(204,204,205,.5)").unmousedown(d.mousedown).unmouseup(d.mouseup).unhover(d.hoverin,d.hoverout);
break;case !1:b.attr("fill",N).mousedown(d.mousedown,this).mouseup(d.mouseup,this,!0).hover(d.hoverin,d.hoverout,this,this)}},"button-label":function(a){var b=this._.button,c=this.attrs,d=b.label,e=b.cssArg,h=this.attrs["button-repaint"];a=K(a||"");"none"===a?d&&(b.label=d.remove()):a&&(!d&&(d=b.label=this.paper.text(this).insertBefore(b.tracker)),d.attr({text:a,"text-anchor":"middle","vertical-align":"middle"}),e&&e.length&&d.css.apply(d,e));h&&c["button-label"]!==a&&this.attr("button-repaint",h)},
"button-symbol":function(a){var b=this.attrs,c=this._.button,d=c.symbol,e=this.attrs["button-repaint"];a=K(a||"");"none"===a?d&&(c.symbol=d.remove()):a&&!d&&(c.symbol=this.paper.symbol(this).insertAfter(c.bound));e&&b["button-symbol"]!==a&&this.attr("button-repaint",e)},"button-symbol-position":function(a){return{"button-symbol-position":{top:"top",right:"right",bottom:"bottom",left:"left",none:"none"}[K(a).toLowerCase()]||"none"}},"button-symbol-padding":function(a){return{"button-symbol-padding":v(a)}},
"button-padding":function(a,b){return{"button-padding":[null==a&&(a=5)||v(a),null==b&&a||v(b)]}},"button-repaint":function(a,b,c,d,e){var h=this._.button,k=h.bound,f=h.label,l=h.symbol,n=this.attrs,m=n["button-padding"],v=m[0],r=m[1],s,q;void 0===a&&(a=0);void 0===b&&(b=0);if(void 0===c||void 0===d)s=f&&f.getBBox()||{width:0,height:0},void 0===c&&(c=2*v+s.width),void 0===d&&(d=2*r+s.height);k=B.crispBound(a,b,c,d,k.attr("stroke-width"));k.r=B.pick(e,H(.1*p(d,c)));a=k.x;b=k.y;c=k.width;d=k.height;
f&&f.attr({x:a+c/2,y:b+d/2});if(l){!B.is(q=n["button-symbol-padding"],"finite")&&(q=.2*d);e=d-r;s=.5*e;switch(n["button-symbol-position"]+(f&&"+"||"-")){case "right+":a=a+(c+(2*s+r))-s-v;b+=.5*d;f.attr("transform",["t",-(e+q),0]);break;case "left+":a=a+v+s;b+=.5*d;f.attr("transform",["t",e+q,0]);break;case "top+":a+=.5*c;b=b+m[1]+s;f.attr("transform",["t",0,e+q]);break;case "bottom+":a+=.5*c;b=b+(d+(2*s+q))-r-s;f.attr("transform",["t",0,-(e+q)]);break;default:a+=.5*c,b+=.5*d}l.attr("symbol",[n["button-symbol"],
a,b,s])}h.bound.attr(k);h.tracker.attr(k)},fill:function(a,b,c,d){var e=this._.button,h=e.bound,k=e.symbol,f=e.label,l={normal:e.gradient,active:e.gradientActive,hover:e.gradientHover}[a];l||(a=B.getRGB(a),a.error&&(a=B.color("#cccccc")),a="opacity"in a?"rgba("+[a.r,a.g,a.b,a.opacity]+")":"rgb("+[a.r,a.g,a.b]+")",e.gradient=[90,B.tintshade(a,-.8).rgba+":0",B.tintshade(a,.8).rgba+":100"].join("-"),e.gradientActive=[270,B.tintshade(a,-.8).rgba+":0",B.tintshade(a,.8).rgba+":100"].join("-"),d=B.getRGB(d),
d.error&&(d=a)||(d="opacity"in d?"rgba("+[d.r,d.g,d.b,d.opacity]+")":"rgb("+[d.r,d.g,d.b]+")"),e.gradientHover=[90,B.tintshade(d,-.9).rgba+":0",B.tintshade(d,.7).rgba+":100"].join("-"),c=c||B.tintshade(a,.2).rgba,b=b||B.tintshade(a,-.2).rgba,e.symbolFill=c,e.labelFill=b,l=(this.pressed||this.active)&&e.gradientActive||this.hovered&&e.gradienthover||e.gradient);h.attr("fill",l);k&&k.attr("fill",e.symbolFill);f&&f.attr("fill",e.labelFill);return!1},stroke:function(a,b){var c=this._.button,d=c.symbol;
a=B.color(a);a.error&&(a=B.color("#999999"));c.bound.attr("stroke",a);d&&d.attr("stroke",b||a);return!1},"stroke-width":function(a,b){var c=this._.button,d=c.symbol;c.bound.attr("stroke-width",a);c.tracker.attr("stroke-width",a);d&&d.attr("stroke-width",b);return!1}}},{name:"trianglepath",trianglepath:function(){var a=arguments,b=B._lastArgIfGroup(a);return this.path(b).attr("trianglepath",[a[0],a[1],a[2],a[3],a[4],a[5],a[6]||0,a[7]||0,a[8]||0])},fn:{sides:function(){var a=this._args;return[M(a[0],
a[1],a[2],a[3]),M(a[2],a[3],a[4],a[5]),M(a[4],a[5],a[0],a[1])]},enclosedAngles:function(){var a=this._sides;return[b((F(a[0],2)+F(a[2],2)-F(a[1],2))/(2*a[0]*a[2])),b((F(a[0],2)+F(a[1],2)-F(a[2],2))/(2*a[0]*a[1])),b((F(a[2],2)+F(a[1],2)-F(a[0],2))/(2*a[2]*a[1]))]},semiperimeter:function(){var a=this._sides||this.sides();return(a[0]+a[1]+a[2])/2}},ca:{trianglepath:function(a,b,c,d,h,k,f,n,m){if(f||n||m){this._args=arguments;this._sides=this.sides();var v=this.enclosedAngles(),r;r=this.semiperimeter();
r=e(r*(r-this._sides[0])*(r-this._sides[1])*(r-this._sides[2]))/r;v=[p(f,r)/l(v[0]/2),p(n,r)/l(v[1]/2),p(m,r)/l(v[2]/2)];v=[T(a,b,h,k,v[0]),T(a,b,c,d,v[0]),T(c,d,a,b,v[1]),T(c,d,h,k,v[1]),T(h,k,c,d,v[2]),T(h,k,a,b,v[2])];this.attr({path:["M",v[0].x,v[0].y,"Q",a,b,v[1].x,v[1].y,"L",v[2].x,v[2].y,"Q",c,d,v[3].x,v[3].y,"L",v[4].x,v[4].y,"Q",h,k,v[5].x,v[5].y,"L",v[0].x,v[0].y]})}else this.attr({path:["M",a,b,"L",c,d,h,k,"Z"]})}}}]);B.ca["text-bound"]=function(a,b,c,d,e,h){d=this.paper;var k=this._.textbound;
if("text"===this.type){if(!(b&&"none"!==b||a&&"none"!==a))return this._.textbound=k&&k.unfollow(this).remove(),!1;c&&B.is(c,"finite")||(c=0);e&&B.is(e,"finite")||(e=0);!k&&(k=this._.textbound=d.rect(0,0,0,0,this.group).follow(this,B.ca["text-bound"].reposition,"before"));k.attr({stroke:b,"stroke-width":c,fill:a,"shape-rendering":1===c&&"crisp"||"",r:e});h&&k.attr("stroke-dasharray",h);B.ca["text-bound"].reposition.call(k,this.attr(),this);return!1}};B.ca["text-bound"].reposition=function(a,b){var c=
{},d,e,h,k,f;a.hasOwnProperty("visibility")&&this.attr("visibility",a.visibility);if(a.hasOwnProperty("text-bound")||a.hasOwnProperty("x")||a.hasOwnProperty("y")||a.hasOwnProperty("text")||a.hasOwnProperty("text-anchor")||a.hasOwnProperty("text-align")||a.hasOwnProperty("font-size")||a.hasOwnProperty("line-height")||a.hasOwnProperty("vertical-align")||a.hasOwnProperty("transform")||a.hasOwnProperty("rotation"))d=b.attrs["text-bound"],e=K(d&&d[3]||"0").split(za),d=v(e[0])||0,e=B.pick(v(e[1]),d),h=
b.getBBox(),k=h.width,f=h.height,isNaN(k)||(c.x=h.x-d,c.y=h.y-e,c.width=k+2*d,c.height=f+2*e),this.attr(c)};B.fn.symbol=function(){var a=arguments,b=a.length-1,c=a[b];c&&c.constructor===B.el.constructor?a[b]=void 0:c=void 0;b=this.path(void 0,c);b.ca.symbol=B.fn.symbol.ca.symbol;return a.length===!!c+0?b:b.attr("symbol",a)};B.fn.symbol.cache={"":B._cacher(function(a,b,c,d){return 3<arguments.length?["M",a,b,"h",c,"v",d,"h",-c,"v",-d,"z"]:["M",a-c,b-c,"h",c*=2,"v",c,"h",-c,"v",-c,"z"]})};B.fn.symbol.ca=
{symbol:function(a){var b=B.is(a,"object")&&1===arguments.length&&!B.is(a,"function")?a:arguments,c;b===a&&(a=b[0]);b=(c=B.is(a,"function")&&a||B.fn.symbol.cache[a]||B.fn.symbol.cache[""])&&c.apply(B,J.call(b,1));B.is(b,"array")||B.is(b,"string")?this.attr("path",b):b&&this.attr(b)}};B.addSymbol=function(a,b){var c=B.is(b,"function")&&(c={},c[a]=b,c)||a,d=B.fn.symbol.cache,e=[],h;for(h in c)b=c[h],d[h]=B.is(b,"function")&&B._cacher(b,B)||(e.push(h),b);for(;h=e.pop();)d[h]=d[d[h]]};B.svg?(ja="$1",
na=function(a){a?"string"===typeof a?a=a.replace(va,ja):a.toString=O:a="M0,0";this.node.setAttribute("d",a.toString());return this},B._engine.litepath=function(a,b,c,d){a=r("path");(d||b).canvas.appendChild(a);b=new X(a,b,d);b.type="litepath";b.id=a.raphaelid=B._oid++;a.raphael=!0;ga(b,{fill:"none",stroke:"#000"});return b},B._getPath.litepath=function(a){return B.parsePathString(a.node.getAttribute("d"))}):B.vml&&(ja=function(a,b){return ya[b]||b},ma=function(){this._transform.apply(this,arguments);
this._.bcoord&&(this.node.coordsize=this._.bcoord);return this},na=function(a){a?"string"===typeof a?a=a.replace(va,ja):a.toString=O:a="M0,0";this.node.path=a;return this},B._engine.litepath=function(a,b,c,d){a=r("shape");var e=a.style,h=new X(a,b,d);e.cssText="position:absolute;left:0;top:0;width:21600px;height:21600px;";c=v(c);isNaN(c)?a.coordsize="21600 21600":(h._.bzoom=c,e.width="1px",e.height="1px",a.coordsize=h._.bcoord=c+" "+c);a.coordorigin=b.coordorigin;h.type="litepath";h.id=a.raphaelid=
B._oid++;a.raphael=!0;h._transform=h.transform;h.transform=ma;B._setFillAndStroke(h,{fill:"none",stroke:"#000"});(d||b).canvas.appendChild(a);b=r("skew");b.on=!0;a.appendChild(b);h.skew=b;return h},B._getPath.litepath=function(a){return B.parsePathString(a.node.path||"")});B.fn.litepath=function(a,b,c){b&&b.constructor===X&&(c=b,b=void 0);a&&a.constructor===X&&(c=a,a="");b=B._engine.litepath(a,this,b,c);b.ca.litepath=na;a&&b.attr("litepath",B.is(a,"array")?[a]:a);return this.__set__&&this.__set__.push(b),
this._elementsById[b.id]=b}}]);
FusionCharts.register("module",["private","modules.renderer.js-htmlrenderer",function(){var f=this.hcLib,t=f.Raphael,C=f.dem,q=this.window,d=q.document,a=/msie/i.test(q.navigator.userAgent)&&!q.opera,m="VML"===t.type,F=f.hasTouch,c={cursor:"cursor"},l={x:"left",y:"top",strokeWidth:"borderThickness","stroke-width":"borderThickness",width:"width",height:"height"},b={fill:"backgroundColor",stroke:"borderColor",color:"color"},p={left:0,top:0,padding:0,border:"none",margin:0,outline:"none","-webkit-apperance":"none",
position:"absolute",zIndex:20},H,s=function(a,b,c,e){a=d.createElement(a);for(var f in b)l[f]?a.style[f]=b[f]:a.setAttribute(f,b[f]);for(f in c)a.style[f]=c[f];e&&e.appendChild&&e.appendChild(a);return a},e;e=function(a,b,c){b&&b instanceof e&&(b=b.element);(this.element=s(a,c,p,b)).ishot="true";this.nodeName=a.toLowerCase();this.added=Boolean(b)};e.prototype={attr:function(e){var k=this.element,f={},p,s,n,q,B,t,r;if("object"!==typeof e){if(!(f=this[e])){if("string"===typeof e)k&&k.getAttribute&&
(q=k.getAttribute(e));else if(void 0!==e&&null!==e&&"object"===typeof e)for(n in e)k.setAttribute(n,e[n]);f=q}return f}for(p in e){n=e[p];if(c[p]){switch(p){case "cursor":"pointer"===n&&m&&(n="hand")}k.style[c[p]]=n;s=!0}else if(l[p])k.style[l[p]]=n+"px",s=!0;else if(b[p])k.style[b[p]]=n&&n.replace(/^#?([a-f0-9]+)/ig,"#$1")||"none",s=!0;else if(/^visibility$/i.test(p))s="hidden"===n,k.style.display=s?"none":"",this.hidden=s,s=!0;else if(/^opacity$/i.test(p))k.style.opacity=n,a&&(s=100*Number(n),k.style.filter=
"progid:DXImageTransform.Microsoft.Alpha(Opacity="+s+")"),s=!0;else if(/^innerhtml$/i.test(p)){if(m&&"select"==k.nodeName.toLowerCase()){for(s=n.match(/<option\s?[\s\S]*?(\/>|><\/option>|>[\s\S]*?<\/option>)/ig);k.firstChild;)k.removeChild(k.firstChild);B=0;for(t=s.length;B<t;B+=1)q=s[B],r=d.createElement("option"),/<option\s([\s\S]*[\'\"])\s*?(\/>|>[\s\S]*<\/option>)/ig.test(q)&&(r.value=q.replace(/<option\s([\s\S]*[\'\"])\s*?(\/>|>[\s\S]*<\/option>)/ig,"$1").replace(/[\s\S]*value\s*\=\s*[\'\"]([\s\S]*)[\'\"]/,
"$1")),r.text=q.replace(/<option\s*[\s\S]*[\'\"]?\s*?[\/>|\>]([\s\S]*)<\/option>/ig,"$1 "),k.options.add(r)}else"input"!==k.nodeName.toLowerCase()&&void 0!==n&&(k.innerHTML=n||"");s=!0}else/^text$/i.test(p)?("input"!==k.nodeName.toLowerCase()&&(k.innerHTML="",void 0!==n&&k.appendChild(d.createTextNode(n))),s=!0):/^type$/i.test(p)&&a&&this.added&&(s=!0);s&&(f[p]=n,delete e[p],s=!1)}for(p in e)k.setAttribute(p,e[p]);for(p in f)this[p]=e[p]=f[p],delete f[p];return this},val:function(a){var b=this.element,
c=void 0===a;return"input"===this.nodeName&&"checkbox"===b.getAttribute("type")?c?this.checked()?1:0:this.checked(a):c?b.value:(b.value=a,this)},checked:function(a){var b=this.element;return void 0===a?b.checked:(a?b.setAttribute("checked","checked"):b.removeAttribute("checked"),this)},css:function(a,b){var c=this.element.style,d;if("object"===typeof a)for(d in a)c[d]=a[d];else d&&void 0!==b&&(c[d]=b);return this},translate:function(a,b){var c=this.element;void 0!==a&&(c.style.left=a+"px");void 0!==
b&&(c.style.top=b+"px");return this},add:function(a,b){var c=this.element,d=a.element;b?d.insertBefore(c,d.firstChild):d.appendChild(c);this.added=!0;return this},hide:function(){this.element.style.display="none";return this},show:function(){this.element.style.display="";return this},focus:function(){"function"===typeof this.element.focus?this.element.focus():f.dem.fire(this.element,"focus")},destroy:function(){var a=this.element||{};a.onclick=a.onmouseout=a.onmouseover=a.onmousemove=a.onblur=a.onfocus=
null;H||(H=s("div"));a&&H.appendChild(a);H.innerHTML="";delete this.element;return null},on:m?function(a,b){this.element["on"+a]=function(){var a=q.event;a.target=a.srcElement;b(a)};return this}:function(a,b){var c=b;F&&"click"===a&&(a="touchstart",c=function(a){a.preventDefault();b()});this.element["on"+a]=c;return this},bind:function(a,b,c){C.listen(this.element,a,b,c);return this},unbind:function(a,b){C.unlisten(this.element,a,b);return this},trigger:function(a,b){C.fire(this.element,a,b);return this},
fadeIn:function(a,b){var c="fast"===a?400:1E3;this.show();this.attr({opacity:0});f.danimate.animate(this.element,{opacity:1},c,"linear",b)}};e.prototype.constructor=e;t.fn.html=function(a,b,c,d){var f={},l;b&&"type"in b&&(f.type=b.type,delete b.type);a=(new e(a,d,f)).css(c).attr(b);for(l in f)b[l]=f[l];return a}}]);
FusionCharts.register("module",["private","modules.renderer.js-raphaeltooltip",function(){var f=this,t=f.window,C=t.document,q=C.body||C.getElementsByTagName("body")[0],d=f.hcLib,a=d.Raphael,m=a.eve,F=d.createElement,c=d.addEvent,l=d.removeEvent,b=d.getPosition,p=d.hasTouch,H=d.getTouchEvent,s=t.Math,e=s.ceil,h=s.floor,k={},v=t.screen.availHeight,K=t.screen.availWidth,J={"":1,moz:1,webkit:1,o:1,ms:1},n={borderRadius:"borderRadius",boxShadow:"boxShadow"},N=/\-([a-z])/ig,B=function(a,b){return b.toUpperCase()},
U=function(b){var c=r.forbiddenStyle,d,e,h;for(d in b)e=N.test(d)?d.replace(N,B):d,void 0!==b[d]&&!c[e]&&(this[e]=b[d]),a.vml&&/color/ig.test(e)&&(this[e]=a.getRGB(this[e]).toString());for(d in n)if(this[d])for(h in J)this[h+d]=this[d]},r=d.toolTip={elementId:"fusioncharts-tooltip-element",element:null,lastTarget:null,currentTarget:null,currentPaper:null,pointeroffset:12,prevented:!1,defaultStyle:d.extend2(U.prototype,{backgroundColor:"#ffffee",borderColor:"#000000",borderWidth:"1px",color:"#000000",
fontSize:"10px",lineHeight:"12px",padding:"3px",borderStyle:"solid"}),defaultContainerStyle:{position:"absolute",textAlign:"left",margin:"0",zIndex:"99999",pointer:"default",display:"block"},forbiddenStyle:{}},ga=function(a){!0===r._oobready?r._oobready=!1:(l(q,"touchstart",ga),!r.hidden&&r.currentTarget&&(a=a.srcElement||a.target||k,a.raphael&&r.currentTarget.paper.getById(a.raphaelid)===r.currentTarget||r.hide()))};a.svg&&(r.defaultContainerStyle.pointerEvents="none",r.defaultStyle.borderRadius=
"0",r.defaultStyle.boxShadow="none");a.vml&&(r.forbiddenStyle.borderRadius=!0,r.forbiddenStyle.boxShadow=!0,r.defaultStyle.filter="");r.setup=function(){var b=r.container,c=r.textElement,d=r.style,e=r.defaultContainerStyle,h=r.forbiddenStyle,k;b||(b=r.element=F("span"),(C.body||C.getElementsByTagName("body")[0]).appendChild(b),b.setAttribute("id",r.elementId),d=r.containerStyle=b.style,c=r.textElement=F("span"),b.appendChild(c),r.style=a.vml?c.runtimeStyle:c.style,r.style.overflow="hidden",r.style.display=
"block",r.hidden=!1,r.hide());for(k in e)!h[k]&&(d[k]=e[k]);r.scatted=!0;m.on("raphael.drag.start.*",function(){r.scatted&&(r.waitingScat=!0)});m.on("raphael.drag.move.*",function(){r.waitingScat&&(r.block(),r.waitingScat=!1)});m.on("raphael.drag.end.*",function(){r.waitingScat=!1;r.scatted&&r.unblock(!0)});m.on("raphael.remove",function(){if(r.currentPaper===this||r.currentTarget&&r.currentTarget.paper===this)r.hide(),r.currentTarget=r.currentPaper=null});f.addEventListener("LinkedChartInvoked",
function(a){r.currentPaper===a.sender.jsVars.hcObj.paper&&r.hide()});f.addEventListener("realTimeUpdateComplete",function(a){r.currentPaper===a.sender.jsVars.hcObj.paper&&r.hide()})};r.restyle=function(a){var b=r.style,c;for(c in a)b[c]=a[c]};r.onelement=function(a){if(!a.__tipProcessed){var d=this.paper,e="group"===this.type?d&&d._elementFromEvent(a):this,h=d.__tipStyle;e&&h&&e.__tipNeeded&&((a.originalEvent||a).FusionChartsPreventEvent&&r.preventTooltip(),r.hiding&&(r.hiding=clearTimeout(r.hiding)),
r.currentPaper!==d&&(d.__tipCp=d.canvas&&b(d.canvas.parentNode,!0)||{},r.restyle(d.__tipStyle),r.currentPaper=d),r.lastTarget=r.currentTarget,r.currentTarget=e,(r.scatted=e.__tipScatted)&&r.unblock(!0),r.onredraw.call(this,a),a.__tipProcessed=!0,p&&(r._oobready=!0,c(q||(q=C.body||C.getElementsByTagName("body")[0]),"touchstart",ga)))}};r.onredraw=function(a){a.__tipProcessed||(a.__tipProcessed=!0,(this.paper&&this.paper._elementFromEvent(a))===r.currentTarget&&(a=H(a),r.x=h(a.pageX||a.clientX+C.body.scrollLeft+
C.documentElement.scrollLeft||0),r.y=h(a.pageY||a.clientY+C.body.scrollTop+C.documentElement.scrollTop||0),r.redraw()))};r.onhide=function(a){a.__tipProcessed||(a.__tipProcessed=!0,(this.paper&&this.paper._elementFromEvent(a))===r.currentTarget&&(r.hiding=setTimeout(r.hide,200)))};r.redraw=function(){if(!r.prevented&&!r.blocked&&r.currentTarget&&r.currentTarget.__tipNeeded){var a=r.currentTarget,b=a.paper,c=r.textElement,d=r.containerStyle,h=r.style,k=a.__tipText,a=r.pointeroffset,f=b.__tipCp,l=C.documentElement||
C.body,n=l.scrollLeft,l=l.scrollTop,m=r.x,B=r.y,p,u=b.width,s=b.height,b=b.__tipConstrain;if(100>u||100>s)b=!1;r.hidden&&(r.containerStyle.top="-999em",r.show());k!==r.text&&(r.text=k,d.width=d.height="",c.innerHTML=k,h.whiteSpace="nowrap",k=e(h.pixelWidth||c.offsetWidth||0),p=e(h.pixelHeight||c.offsetHeight||0),(r.textWidthOverflow=m+k>f.left+u)?(d.width=(u>k?k+2*a:u-2*a||0)+"px",h.whiteSpace="normal"):d.width="",(r.textHeightOverflow=p>s)?(d.height=(s||0)-2*a+"px",h.whiteSpace="normal"):d.height=
"");k=e(h.pixelWidth||c.offsetWidth||0);p=e(h.pixelHeight||c.offsetHeight||0);b?(r.textWidthOverflow?m=(m-k<f.left?f.left:m-k)-n:m+a+k>f.left-n+u-a&&(m=m-k-a),r.textHeightOverflow?B=f.top-l:B+a+p>f.top-l+s-a&&(B=B-p-1.5*a)):(n+K<m+a+k&&(m=m-k-a),l+v<B+a+p&&(B=B-p-1.5*a));d.left=(m+a||0)+"px";d.top=(B+a||0)+"px";r.hidden&&r.show()}};r.hide=function(){r.hiding&&(r.hiding=clearTimeout(r.hiding));r.containerStyle.display="none";r.hidden=!0;r.prevented=!1};r.show=function(){r.blocked||(r.hiding&&(r.hiding=
clearTimeout(r.hiding)),r.containerStyle.display="inline",r.hidden=!1)};r.preventTooltip=function(){r.prevented=!0};r.block=function(){r.blocked=!0;r.containerStyle.display="none"};r.unblock=function(a){r.blocked=!1;a&&(r.containerStyle.display=r.hidden&&"none"||"inline")};a.fn.tooltip=function(c,d,e){d&&(d=.4*(void 0===d.opacity?1:d.opacity),a.svg?c.boxShadow="1px 1px 3px rgba(64,64,64,"+d+")":c.filter='progid:DXImageTransform.Microsoft.Shadow(Strength=2, Direction=135, Color="#404040", shadowOpacity="'+
d/2+'")');this.__tipStyle=new U(c);this.__tipCp=this.canvas&&b(this.canvas.parentNode,!0)||{};this.__tipConstrain=Boolean(e);return this};a.el.trackTooltip=function(a){var b=!!this.__tiptracking;if(void 0===a||(a=!!a)===b)return this;a?p?this.touchstart(r.onelement):(this.mouseover(r.onelement),this.mousemove(r.onredraw),this.mouseout(r.onhide)):p?this.untouchstart(r.onelement):(this.unmouseover(r.onelement),this.unmousemove(r.onredraw),this.unmouseout(r.onhide));this.__tiptracking=a;return this};
a.el.tooltip=function(b,c,d,e,h){r.setup();a.el.tooltip=function(a,b,c,d,e){b=!1===a||void 0===a||""===a;this.__tipScatted=void 0===d?this.__tipScatted:!d;void 0===this.__tipScatted&&(this.__tipScatted=!0);null!==e&&(this.__tip_blocked=e);b^!this.__tipText&&(this.__tipNeeded=!b);this.__tipText=a;if(r.currentTarget===this&&a!==r.text&&!r.hidden)r[b?"hide":"redraw"]();return this};return a.el.tooltip.call(this,b,c,d,e,h)};f.core._setTooltipZIndex=function(a){a=parseInt(a,10);r&&!isNaN(a)&&(r.defaultContainerStyle.zIndex=
a,r.containerStyle&&(r.containerStyle.zIndex=a))}}]);
FusionCharts.register("module",["private","modules.renderer.js-smartlabel",function(){var f=this.hcLib,t=f.isIE,C=f.hasSVG,q=Math.max,d=this.window,a=/ HtmlUnit/.test(d.navigator.userAgent),m=d.document,F=/ AppleWebKit\//.test(d.navigator.userAgent),c=!!m.createElement("canvas").getContext,l=!(!c||!m.createElement("canvas").getContext("2d").measureText),d=function(){function b(a,b,c){if(!a||!a.length)return 0;var d=c.getWidthFunction(),e=0,h=0,h=d(a),k=h/a.length;c=b;e=Math.ceil(b/k);if(h<b)return a.length-
1;e>a.length&&(c=b-h,e=a.length);for(;0<c;)if(c=b-d(a.substr(0,e)),h=Math.floor(c/k))e+=h;else return e;for(;0>c;)if(c=b-d(a.substr(0,e)),h=Math.floor(c/k))e+=h;else break;return e}function d(a,b){b=5<b?b:5;this.maxContainers=20>b?b:20;this.last=this.first=null;this.containers={};this.length=0;this.rootNode=a;if(U){var c=m.createElementNS("http://www.w3.org/2000/svg","svg");c.setAttributeNS("http://www.w3.org/2000/svg","xlink","http://www.w3.org/1999/xlink");c.setAttributeNS("http://www.w3.org/2000/svg",
"height","0");c.setAttributeNS("http://www.w3.org/2000/svg","width","0");this.svgRoot=c;this.rootNode.appendChild(c)}}function H(b,c,e){if("undefined"!==typeof b&&"object"!==typeof b){this.id=b;var k;"string"===typeof c&&(c=m.getElementById(c));a:{if(c&&(c.offsetWidth||c.offsetHeight)){if(c.appendChild){c.appendChild(c=m.createElement("div"));c.className="fusioncharts-smartlabel-container";c.setAttribute("aria-hidden","true");c.setAttribute("role","presentation");b=c;break a}}else if((b=m.getElementsByTagName("body")[0])&&
b.appendChild){c=m.createElement("div");c.className="fusioncharts-smartlabel-container";c.setAttribute("aria-hidden","true");c.setAttribute("role","presentation");b.appendChild(c);b=c;break a}b=void 0}b=this.parentContainer=b;b.innerHTML="WgI";if(a||!b.offsetHeight&&!b.offsetWidth)U=!0;b.innerHTML="";for(k in h)b.style[k]=h[k];this.containerManager=new d(b,10);this.showNoEllipses=!e;this.init=!0;this.style={};this.setStyle()}}var s=f.supportedStyle,e={fontWeight:1,"font-weight":1,fontStyle:1,"font-style":1,
fontSize:1,"font-size":1,fontFamily:1,"font-family":1},h={position:"absolute",top:"-9999em",left:"-9999em",whiteSpace:"nowrap",padding:"0px",width:"1px",height:"1px",overflow:"hidden"},k=F?0:4.5,v=0,K=/\b_SmartLabel\b/,J=/\b_SmartLabelBR\b/,n=/(<[^<\>]+?\>)|(&(?:[a-z]+|#[0-9]+);|.)/ig,N=RegExp("\\<span[^\\>]+?_SmartLabel[^\\>]{0,}\\>(.*?)\\<\\/span\\>","ig"),B=/<[^>][^<]*[^>]+>/i,U=!1,r=0,ga=0,X,aa,W;m.getElementsByClassName?(X="getElementsByClassName",aa="_SmartLabel",W=!0):(X="getElementsByTagName",
aa="span",W=!1);d.prototype={get:function(a){var b=this.containers,c=this.length,d=this.maxContainers,e,h="",k="",k=this.getCanvasFont(a);for(e in s)void 0!==a[e]&&(h+=s[e]+":"+a[e]+";");if(!h)return!1;if(b[h])h=b[h],this.first!==h&&(h.prev&&(h.prev.next=h.next),h.next&&(h.next.prev=h.prev),h.next=this.first,h.next.prev=h,this.last===h&&(this.last=h.prev),h.prev=null,this.first=h);else{if(c>=d)for(a=c-d+1;a--;)this.removeContainer(this.last);h=this.addContainer(h,k)}return h},getCanvasFont:function(a){var b,
d=[];if(!c||!l)return!1;for(b in e)void 0!==a[b]&&d.push(a[b]);return d.join(" ")},setMax:function(a){var b=this.length;a=5<a?a:5;a=20>a?a:20;if(a<b){for(b-=a;b--;)this.removeContainer(this.last);this.length=a}this.maxContainers=a},addContainer:function(a,b){var c,d;this.containers[a]=d={next:null,prev:null,node:null,ellipsesWidth:0,lineHeight:0,dotWidth:0,avgCharWidth:4,keyStr:a,canvasStr:b,charCache:{}};d.next=this.first;d.next&&(d.next.prev=d);this.first=d;this.last||(this.last=d);this.length+=
1;c=d.node=m.createElement("div");this.rootNode.appendChild(c);t&&!C?c.style.setAttribute("cssText",a):c.setAttribute("style",a);c.setAttribute("aria-hidden","true");c.setAttribute("role","presentation");c.style.display="inline-block";c.innerHTML="WgI";d.lineHeight=c.offsetHeight;d.avgCharWidth=c.offsetWidth/3;U?(c=d.svgText=m.createElementNS("http://www.w3.org/2000/svg","text"),c.setAttribute("style",a),this.svgRoot.appendChild(c),c.textContent="WgI",d.lineHeight=c.getBBox().height,d.avgCharWidth=
(c.getBBox().width-k)/3,c.textContent="...",d.ellipsesWidth=c.getBBox().width-k,c.textContent=".",d.dotWidth=c.getBBox().width-k):b?(c=d.canvas=m.createElement("canvas"),c.style.height=c.style.width="0px",this.rootNode.appendChild(c),d.context=c=c.getContext("2d"),c.font=b,d.ellipsesWidth=c.measureText("...").width,d.dotWidth=c.measureText(".").width):(c.innerHTML="...",d.ellipsesWidth=c.offsetWidth,c.innerHTML=".",d.dotWidth=c.offsetWidth,c.innerHTML="");return d},removeContainer:function(a){var b=
a.keyStr;b&&this.length&&a&&(--this.length,a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),this.first===a&&(this.first=a.next),this.last===a&&(this.last=a.prev),a.node.parentNode.removeChild(a.node),a.canvas&&a.canvas.parentNode.removeChild(a.canvas),delete this.containers[b])},dispose:function(){var a,b=this.containers;this.maxContainers=null;for(a in b)this.removeContainer(b[a]);this.rootNode.parentNode.removeChild(this.rootNode);this.last=this.first=this.rootNode=null}};d.prototype.constructor=
d;H.prototype={dispose:function(){this.init&&(this.containerManager.dispose(),delete this.container,delete this.context,delete this.cache,delete this.containerManager,delete this.containerObj,delete this.id,delete this.style,delete this.parentContainer,delete this.showNoEllipses)},useEllipsesOnOverflow:function(a){this.init&&(this.showNoEllipses=!a)},getWidthFunction:function(){var a=this.context,b=this.container,c=this.containerObj.svgText;return c?function(a){var b;c.textContent=a;a=c.getBBox();
b=a.width-k;1>b&&(b=a.width);return b}:a?function(b){return a.measureText(b).width}:function(a){b.innerHTML=a;return b.offsetWidth}},getSmartText:function(a,c,d,e){if(!this.init)return!1;if(void 0===a||null===a)a="";var h={text:a,maxWidth:c,maxHeight:d,width:null,height:null,oriTextWidth:null,oriTextHeight:null,oriText:a,isTruncated:!1},k=!1,f,l,p=0,u,s,t,F=-1,C=k=-1;l=this.container;var H=this.context,$=0;t=0;var oa,ia,Ea;Ea=[];var fa=0,La=this.showNoEllipses?"":"...";s=this.lineHeight;var Ba,$=
[],F=f=-1;Ba=function(a){a=a.replace(/^\s\s*/,"");for(var b=/\s/,c=a.length;b.test(a.charAt(--c)););return a.slice(0,c+1)};k=-1;ia=this.getWidthFunction();if(l){if(!U){l.innerHTML=a;h.oriTextWidth=k=l.offsetWidth;h.oriTextHeight=t=l.offsetHeight;if(t<=d&&k<=c)return h.width=h.oriTextWidth=k,h.height=h.oriTextHeight=t,h;if(s>d)return h.text="",h.width=h.oriTextWidth=0,h.height=h.oriTextHeight=0,h}a=Ba(a).replace(/(\s+)/g," ");k=B.test(a);s=this.showNoEllipses?c:c-v;if(k){p=a.replace(n,"$2");a=a.replace(n,
'$1<span class="_SmartLabel">$2</span>');a=a.replace(/(<br\s*\/*\>)/g,'<span class="_SmartLabel _SmartLabelBR">$1</span>');l.innerHTML=a;fa=l[X](aa);H=0;for(ia=fa.length;H<ia;H+=1)if(a=fa[H],W||K.test(a.className))Ba=a.innerHTML,""!==Ba&&(" "===Ba?F=$.length:"-"===Ba&&(f=$.length),$.push({spaceIdx:F,dashIdx:f,elem:a}),Ea.push(Ba));fa=0;f=$.length;r=$[0].elem.offsetWidth;if(r>c)return h.text="",h.width=h.oriTextWidth=h.height=h.oriTextHeight=0,h;r>s&&!this.showNoEllipses&&(s=c-2*ga,s>r?La="..":(s=
c-ga,s>r?La=".":(s=0,La="")));Ea=$[0].elem.offsetLeft;H=$[0].elem.offsetTop;if(e)for(;fa<f;fa+=1)a=$[fa].elem,ia=a.offsetLeft-Ea+a.offsetWidth,ia>s&&(oa||(oa=fa),l.offsetWidth>c&&(u=fa,fa=f));else for(;fa<f;fa+=1)a=$[fa].elem,Ba=a.offsetHeight+(a.offsetTop-H),ia=a.offsetLeft-Ea+a.offsetWidth,e=null,ia>s?(oa||(oa=fa),ia>c&&(k=$[fa].spaceIdx,F=$[fa].dashIdx,k>C?($[k].elem.innerHTML="<br/>",C=k):F>C?($[F].elem.innerHTML=F===fa?"<br/>-":"-<br/>",C=F):a.parentNode.insertBefore(e=m.createElement("br"),
a),a.offsetHeight+a.offsetTop>d?(e?e.parentNode.removeChild(e):C===F?$[F].elem.innerHTML="-":$[k].elem.innerHTML=" ",u=fa,fa=f):oa=null)):Ba>d&&(u=fa,fa=f);if(u<f){h.isTruncated=!0;oa=oa?oa:u;for(fa=f-1;fa>=oa;--fa)a=$[fa].elem,a.parentNode.removeChild(a);for(;0<=fa;--fa)a=$[fa].elem,J.test(a.className)?a.parentNode.removeChild(a):fa=0}h.text=l.innerHTML.replace(N,"$1");h.isTruncated&&(h.text+=La,h.tooltext=p)}else{Ea=a.split("");f=Ea.length;l="";u=[];oa=Ea[0];this.cache[oa]?r=this.cache[oa].width:
(r=ia(oa),this.cache[oa]={width:r});if(s>r)u=a.substr(0,b(a,s,this)).split(""),fa=u.length;else{if(r>c)return h.text="",h.width=h.oriTextWidth=h.height=h.oriTextHeight=0,h;La&&(s=c-2*ga,s>r?La="..":(s=c-ga,s>r?La=".":(s=0,La="")))}$=ia(u.join(""));t=this.lineHeight;if(e){for(;fa<f;fa+=1)if(oa=u[fa]=Ea[fa],this.cache[oa]?r=this.cache[oa].width:(r=ia(oa),this.cache[oa]={width:r}),$+=r,$>s&&(l||(l=u.slice(0,-1).join("")),$>c))return h.text=Ba(l)+La,h.tooltext=h.oriText,h.width=ia(h.text),h.height=this.lineHeight,
h;h.text=u.join("");h.width=$;h.height=this.lineHeight}else{for(;fa<f;fa+=1)if(oa=u[fa]=Ea[fa]," "!==oa||H||(oa="&nbsp;"),this.cache[oa]?r=this.cache[oa].width:(r=ia(oa),this.cache[oa]={width:r}),$+=r,$>s&&(l||(l=u.slice(0,-1).join("")),$>c)){k=a.substr(0,u.length).lastIndexOf(" ");F=a.substr(0,u.length).lastIndexOf("-");k>C?($=ia(u.slice(C+1,k).join("")),u.splice(k,1,"<br/>"),C=k,e=k+1):F>C?(F===u.length-1?($=ia(u.slice(C+1,k).join("")),u.splice(F,1,"<br/>-")):($=ia(u.slice(C+1,k).join("")),u.splice(F,
1,"-<br/>")),C=F,e=F+1):(u.splice(u.length-1,1,"<br/>"+Ea[fa]),k=u.length-2,$=ia(u.slice(C+1,k+1).join("")),C=k,e=fa);t+=this.lineHeight;if(t>d)return h.text=Ba(l)+La,h.tooltext=h.oriText,h.width=c,h.height=t-this.lineHeight,h;p=q(p,$);l=null;oa=b(a.substr(e),s,this);$=ia(a.substr(e,oa||1));u.length<e+oa&&(u=u.concat(a.substr(u.length,e+oa-u.length).split("")),fa=u.length-1)}p=q(p,$);h.text=u.join("");h.width=p;h.height=t}return h}h.height=l.offsetHeight;h.width=l.offsetWidth}else h.error=Error("Body Tag Missing!");
return h},setStyle:function(a){if(!this.init)return!1;if(a!==this.style||this.styleNotSet){a||(a=this.style);var b=a,c=b.fontSize=b.fontSize||"12px";b.lineHeight=b.lineHeight||b["line-height"]||1.2*parseInt(c,10)+"px";this.style=a;(this.containerObj=a=this.containerManager.get(a))?(this.container=a.node,this.context=a.context,this.cache=a.charCache,this.lineHeight=a.lineHeight,v=a.ellipsesWidth,ga=a.dotWidth,this.styleNotSet=!1):this.styleNotSet=!0}},getTextSize:function(a,b,c){if(!this.init)return!1;
var d={text:a,width:null,height:null,oriTextWidth:null,oriTextHeight:null,isTruncated:!1},e=this.container;e&&(e.innerHTML=a,d.oriTextWidth=e.offsetWidth,d.oriTextHeight=e.offsetHeight,d.width=Math.min(d.oriTextWidth,b),d.height=Math.min(d.oriTextHeight,c),d.width<d.oriTextWidth||d.height<d.oriTextHeight)&&(d.isTruncated=!0);return d},getOriSize:function(a){if(!this.init)return!1;var b={text:a,width:null,height:null},c=this.container,d=this.getWidthFunction(),e=0;if(U){a=a.split(/(<br\s*\/*\>)/g);
c=a.length;for(b.height=this.lineHeight*c;c--;)e=q(e,d(a[c]));b.width=e}else c&&(c.innerHTML=a,b.width=c.offsetWidth,b.height=c.offsetHeight);return b}};return H.prototype.constructor=H}();f.SmartLabelManager=d}]);
FusionCharts.register("module",["private","modules.renderer.js-numberformatter",function(){var f=this,t=f.hcLib,C=t.pluckNumber,q=t.extend2,d=t.getValidValue,a=t.pluck,m=t.getFirstValue,F=Math.abs,c=Math.pow,l=Math.round,b=function(a){return a&&a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},p={},H=function(a){var b=[],c;for(c in a)b.push(c+"_"+a[c]);b.sort();return b.join(",")},s=function(a){var b={},c;for(c in a)b[c.toLowerCase()]=a[c];return b};t.NumberFormatter=function(){function e(a,b,d){var e;
if(0>=b)return l(a)+"";if(isNaN(b))return a+="",12<a.length&&-1!=a.indexOf(".")&&(b=12-a.split(".")[0].length,e=c(10,b),a=l(a*e)/e+""),a;e=c(10,b);a=l(a*e)/e+"";if(1==d)for(-1==a.indexOf(".")&&(a+=".0"),d=a.split("."),b-=d[1].length,d=1;d<=b;d++)a+="0";return a}function h(a,b,c,d,e){var h=Number(a),k="",f=!1,l="",m="",v=l=0;if(isNaN(h))return"";if(1E15<h)return h.toExponential(e?1:14);l=0;v=a.length;-1!=a.indexOf(".")&&(k=a.substring(a.indexOf(".")+1,a.length),v=a.indexOf("."));0>h&&(f=!0,l=1);l=
a.substring(l,v);a=l.length;e=d.length-1;h=d[e];if(a<h)m=l;else for(;a>=h;)m=(a-h?c:"")+l.substr(a-h,h)+m,a-=h,h=0>=--e?d[0]:d[e],a<h&&(m=l.substring(a,0)+m);""!=k&&(m=m+b+k);!0===f&&(m="-"+m);return m}var k,f={formatnumber:"1",formatnumberscale:"1",forcenumberscale:"0",defaultnumberscale:"",numberscaleunit:["K","M"],numberscalevalue:[1E3,1E3],numberprefix:"",numbersuffix:"",decimals:"",forcedecimals:"0",yaxisvaluedecimals:"2",decimalseparator:".",thousandseparator:",",thousandseparatorposition:[3],
indecimalseparator:"",inthousandseparator:"",sformatnumber:"1",sformatnumberscale:"0",sforcenumberscale:"0",sdefaultnumberscale:"",snumberscaleunit:["K","M"],snumberscalevalue:[1E3,1E3],snumberprefix:"",snumbersuffix:"",sdecimals:"2",sforcedecimals:"0",syaxisvaluedecimals:"2",xFormatNumber:"0",xFormatNumberScale:"0",xforcenumberscale:"0",xDefaultNumberScale:"",xNumberScaleUnit:["K","M"],xNumberScaleValue:[1E3,1E3],xNumberPrefix:"",xNumberSuffix:""},s={mscombidy2d:{formatnumberscale:"1"}},p=function(c,
e,h){var k,l,p,t,F,J,H,va,za,ja=e.name,O=q({},f),na,ma,M,T,u,L,da,sa,ta,S,$;(p=s[ja])&&(O=q(O,p));this.csConf=O;this.chartAPI=e;d(c.numberscaleunit)&&(k=c.numberscaleunit.split(","));if(l=d(c.snumberscaleunit,c.numberscaleunit))l=l.split(",");if(p=d(c.xnumberscaleunit,c.numberscaleunit))p=p.split(",");if(t=d(c.ticknumberscaleunit,c.numberscaleunit))t=t.split(",");if(F=d(c.ynumberscaleunit,c.numberscaleunit))F=F.split(",");d(c.numberscalevalue)&&(J=c.numberscalevalue.split(","));if(ma=d(c.snumberscalevalue,
c.numberscalevalue))ma=ma.split(",");if(H=d(c.xnumberscalevalue,c.numberscalevalue))H=H.split(",");if(va=d(c.ticknumberscalevalue,c.numberscalevalue))va=va.split(",");if(za=d(c.ynumberscalevalue,c.numberscalevalue))za=za.split(",");if(d(c.thousandseparatorposition))for(na=c.thousandseparatorposition.split(","),M=na.length,u=f.thousandseparatorposition[0];M--;)T=parseInt(na[M],10),0>=T&&(T=u),u=na[M]=T;e||(e={});M=C(c.scalerecursively,0);T=C(c.sscalerecursively,M);u=C(c.xscalerecursively,M);L=C(c.maxscalerecursion,
-1);da=C(c.smaxscalerecursion,L);sa=C(c.xmaxscalerecursion,L);ta=d(c.scaleseparator," ");S=d(c.sscaleseparator,ta);$=d(c.xscaleseparator,ta);L||(L=-1);this.baseConf=k={cacheStore:[],formatnumber:a(c.formatnumber,e.formatnumber,O.formatnumber),formatnumberscale:a(c.formatnumberscale,e.formatnumberscale,O.formatnumberscale),forcenumberscale:a(c.forcenumberscale,e.forcenumberscale,O.forcenumberscale),defaultnumberscale:m(c.defaultnumberscale,e.defaultnumberscale,O.defaultnumberscale),numberscaleunit:a(k,
e.numberscaleunit,O.numberscaleunit).concat(),numberscalevalue:a(J,e.numberscalevalue,O.numberscalevalue).concat(),numberprefix:m(c.numberprefix,e.numberprefix,O.numberprefix),numbersuffix:m(c.numbersuffix,e.numbersuffix,O.numbersuffix),decimalprecision:parseInt("auto"===c.decimals?O.decimalprecision:a(c.decimals,c.decimalprecision,e.decimals,O.decimals,e.decimalprecision,O.decimalprecision),10),forcedecimals:a(c.forcedecimals,e.forcedecimals,O.forcedecimals),decimalseparator:a(c.decimalseparator,
e.decimalseparator,O.decimalseparator),thousandseparator:a(c.thousandseparator,e.thousandseparator,O.thousandseparator),thousandseparatorposition:a(na,e.thousandseparatorposition,O.thousandseparatorposition),indecimalseparator:m(c.indecimalseparator,e.indecimalseparator,O.indecimalseparator),inthousandseparator:m(c.inthousandseparator,e.inthousandseparator,O.inthousandseparator),scalerecursively:M,maxscalerecursion:L,scaleseparator:ta};d(k.inthousandseparator)&&(this.baseConf._REGinthousandseparator=
new RegExp(b(k.inthousandseparator),"g"));d(k.indecimalseparator)&&(this.baseConf._REGindecimalseparator=new RegExp(b(k.indecimalseparator)));this.Y=[];h||(h={cacheStore:[],formatnumber:k.formatnumber,formatnumberscale:k.formatnumberscale,forcenumberscale:k.forcenumberscale,defaultnumberscale:k.defaultnumberscale,numberscaleunit:k.numberscaleunit.concat(),numberscalevalue:k.numberscalevalue.concat(),numberprefix:k.numberprefix,numbersuffix:k.numbersuffix,decimalprecision:k.decimalprecision,forcedecimals:k.forcedecimals,
decimalseparator:k.decimalseparator,thousandseparator:k.thousandseparator,thousandseparatorposition:k.thousandseparatorposition,indecimalseparator:k.indecimalseparator,inthousandseparator:k.inthousandseparator,scalerecursively:M,maxscalerecursion:L,scaleseparator:ta},e.useScaleRecursively&&(h.numberscalevalue&&h.numberscalevalue.length)==(h.numberscaleunit&&h.numberscaleunit.length)||(h.scalerecursively=M=0),J={cacheStore:[],formatnumber:h.formatnumber,formatnumberscale:h.formatnumberscale,forcenumberscale:h.forcenumberscale,
defaultnumberscale:h.defaultnumberscale,numberscaleunit:h.numberscaleunit.concat(),numberscalevalue:h.numberscalevalue.concat(),numberprefix:h.numberprefix,numbersuffix:h.numbersuffix,decimalprecision:parseInt(a(c.yaxisvaluedecimals,h.decimalprecision,2),10),forcedecimals:a(c.forceyaxisvaluedecimals,h.forcedecimals),decimalseparator:h.decimalseparator,thousandseparator:h.thousandseparator,thousandseparatorposition:h.thousandseparatorposition.concat(),indecimalseparator:h.indecimalseparator,inthousandseparator:h.inthousandseparator,
scalerecursively:M,maxscalerecursion:L,scaleseparator:ta},ma={cacheStore:[],formatnumber:a(c.sformatnumber,e.sformatnumber,f.sformatnumber),formatnumberscale:a(c.sformatnumberscale,e.sformatnumberscale,f.sformatnumberscale),forcenumberscale:a(c.sforcenumberscale,e.sforcenumberscale,f.sforcenumberscale),defaultnumberscale:m(c.sdefaultnumberscale,e.sdefaultnumberscale,h.defaultnumberscale),numberscaleunit:a(l,e.snumberscaleunit,f.snumberscaleunit).concat(),numberscalevalue:a(ma,e.snumberscalevalue,
f.snumberscalevalue).concat(),numberprefix:m(c.snumberprefix,e.snumberprefix,f.snumberprefix),numbersuffix:m(c.snumbersuffix,e.snumbersuffix,f.snumbersuffix),decimalprecision:parseInt(a(c.syaxisvaluedecimals,c.sdecimals,c.decimals,e.sdecimals,f.sdecimals),10),forcedecimals:a(c.forcesyaxisvaluedecimals,c.sforcedecimals,c.forcedecimals,e.sforcedecimals,f.sforcedecimals),decimalseparator:a(c.decimalseparator,e.decimalseparator,f.decimalseparator),thousandseparator:a(c.thousandseparator,e.thousandseparator,
f.thousandseparator),thousandseparatorposition:h.thousandseparatorposition.concat(),indecimalseparator:a(c.indecimalseparator,e.indecimalseparator,f.indecimalseparator),inthousandseparator:a(c.inthousandseparator,e.inthousandseparator,f.inthousandseparator),scalerecursively:T,maxscalerecursion:da,scaleseparator:S},l=q({},ma),l.decimalprecision=parseInt(a(c.sdecimals,c.decimals,c.syaxisvaluedecimals,e.sdecimals,f.sdecimals),10),l.forcedecimals=a(c.sforcedecimals,c.forcedecimals,c.forcesyaxisvaluedecimals,
e.sforcedecimals,f.sforcedecimals),l.cacheStore=[],e.useScaleRecursively&&(ma.numberscalevalue&&ma.numberscalevalue.length)==(ma.numberscaleunit&&ma.numberscaleunit.length)||(ma.scalerecursively=T=0),/^(bubble|scatter|selectscatter)$/.test(ja)&&(J.formatnumber=a(c.yformatnumber,J.formatnumber),J.formatnumberscale=a(c.yformatnumberscale,J.formatnumberscale),J.forcenumberscale=a(c.yforcenumberscale,J.forcenumberscale),J.defaultnumberscale=m(c.ydefaultnumberscale,J.defaultnumberscale),J.numberscaleunit=
a(F,J.numberscaleunit),J.numberscalevalue=a(za,J.numberscalevalue),J.numberprefix=a(c.ynumberprefix,J.numberprefix),J.numbersuffix=a(c.ynumbersuffix,J.numbersuffix),h.formatnumber=a(c.yformatnumber,h.formatnumber),h.formatnumberscale=a(c.yformatnumberscale,h.formatnumberscale),h.forcenumberscale=a(c.yforcenumberscale,h.forcenumberscale),h.defaultnumberscale=m(c.ydefaultnumberscale,h.defaultnumberscale),h.numberscaleunit=a(c.ynumberscaleunit,h.numberscaleunit.concat()),h.numberscalevalue=a(c.ynumberscalevalue,
h.numberscalevalue.concat()),h.numberprefix=a(c.ynumberprefix,h.numberprefix),h.numbersuffix=a(c.ynumbersuffix,h.numbersuffix)),/^(pie2d|pie3d|doughnut2d|doughnut3d|marimekko|pareto2d|pareto3d)$/.test(ja)&&(h.decimalprecision=a(c.decimals,"2")),M&&(h.numberscalevalue.push(1),h.numberscaleunit.unshift(h.defaultnumberscale),J.numberscalevalue.push(1),J.numberscaleunit.unshift(J.defaultnumberscale)),T&&(ma.numberscalevalue.push(1),ma.numberscaleunit.unshift(ma.defaultnumberscale),l.numberscalevalue.push(1),
l.numberscaleunit.unshift(l.defaultnumberscale)),this.Y[0]={yAxisLabelConf:J,dataLabelConf:h},this.Y[1]={yAxisLabelConf:ma,dataLabelConf:l},this.paramLabels=h,this.param1=J,this.param2=ma,this.paramLabels2=l);this.paramX={cacheStore:[],formatnumber:a(c.xformatnumber,k.formatnumber),formatnumberscale:a(c.xformatnumberscale,k.formatnumberscale),forcenumberscale:a(c.xforcenumberscale,k.forcenumberscale),defaultnumberscale:m(c.xdefaultnumberscale,k.defaultnumberscale),numberscaleunit:a(p,k.numberscaleunit.concat()),
numberscalevalue:a(H,k.numberscalevalue.concat()),numberprefix:a(c.xnumberprefix,k.numberprefix),numbersuffix:a(c.xnumbersuffix,k.numbersuffix),decimalprecision:parseInt(a(c.xaxisvaluedecimals,c.xaxisvaluesdecimals,k.decimalprecision,2),10),forcedecimals:a(c.forcexaxisvaluedecimals,0),decimalseparator:k.decimalseparator,thousandseparator:k.thousandseparator,thousandseparatorposition:k.thousandseparatorposition.concat(),indecimalseparator:k.indecimalseparator,inthousandseparator:k.inthousandseparator,
scalerecursively:u,maxscalerecursion:sa,scaleseparator:$};this.paramLegend=q(q({},k),{cacheStore:[],decimalprecision:parseInt(C(c.legendvaluedecimals,k.decimalprecision,2),10),forcedecimals:C(c.legendvalueforcedecimals,k.forcedecimals,0),formatnumberscale:a(c.legendvalueformatnumberscale,k.formatnumberscale),forcenumberscale:a(c.legendvalueforcenumberscale,k.forcenumberscale),formatnumber:a(c.legendvalueformatnumber,k.formatnumber)});e.useScaleRecursively&&(this.paramX.numberscalevalue&&this.paramX.numberscalevalue.length)==
(this.paramX.numberscaleunit&&this.paramX.numberscaleunit.length)||(this.paramX.scalerecursively=u=0);u&&(this.paramX.numberscalevalue.push(1),this.paramX.numberscaleunit.unshift(this.paramX.defaultnumberscale));this.paramScale={cacheStore:[],formatnumber:a(c.tickformatnumber,k.formatnumber),formatnumberscale:a(c.tickformatnumberscale,k.formatnumberscale),forcenumberscale:a(c.tickforcenumberscale,k.forcenumberscale),defaultnumberscale:m(c.tickdefaultnumberscale,k.defaultnumberscale),numberscaleunit:a(t,
k.numberscaleunit.concat()),numberscalevalue:a(va,k.numberscalevalue.concat()),numberprefix:a(c.ticknumberprefix,k.numberprefix),numbersuffix:a(c.ticknumbersuffix,k.numbersuffix),decimalprecision:parseInt(a(c.tickvaluedecimals,k.decimalprecision,"2"),10),forcedecimals:a(c.forcetickvaluedecimals,k.forcedecimals,0),decimalseparator:k.decimalseparator,thousandseparator:k.thousandseparator,thousandseparatorposition:k.thousandseparatorposition.concat(),indecimalseparator:k.indecimalseparator,inthousandseparator:k.inthousandseparator,
scalerecursively:M,maxscalerecursion:L,scaleseparator:ta};M&&(this.paramScale.numberscalevalue.push(1),this.paramScale.numberscaleunit.unshift(this.paramScale.defaultnumberscale));this.timeConf={inputDateFormat:a(c.inputdateformat,c.dateformat,"mm/dd/yyyy"),outputDateFormat:a(c.outputdateformat,c.inputdateformat,c.dateformat,"mm/dd/yyyy"),days:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),months:"January February March April May June July August September October November December".split(" "),
daySuffix:" st nd rd th th th th th th th th th th th th th th th th th st nd rd th th th th th th th st".split(" ")};this.cleaneValueCacheStore={};this.percentStrCacheStore={}};p.prototype={cleaneValueCacheStore:{},percentStrCacheStore:{},dispose:function(){this.Y&&delete this.Y;this.cleaneValueCacheStore&&delete this.cleaneValueCacheStore;this.percentStrCacheStore&&delete this.percentStrCacheStore;this.paramLabels&&delete this.paramLabels;this.param1&&delete this.param1;this.param2&&delete this.param2;
this.paramLabels2&&delete this.paramLabels2;this.csConf&&delete this.csConf;this.chartAPI&&delete this.chartAPI;this.baseConf&&delete this.baseConf;this.timeConf&&delete this.timeConf;this.paramX&&delete this.paramX;this.paramScale&&delete this.paramScale},parseMLAxisConf:function(b,c){var e=this.baseConf,h=this.csConf,k=this.chartAPI,l=C(b.scalerecursively,e.scalerecursively),p=C(b.maxscalerecursion,e.maxscalerecursion),s=d(b.scaleseparator,e.scaleseparator),q,t,K,J,H,O;c=C(c,this.Y.length);d(b.numberscaleunit)&&
(q=b.numberscaleunit.split(","));d(b.numberscalevalue)&&(t=b.numberscalevalue.split(","));p||(p=-1);if(d(b.thousandseparatorposition))for(K=b.thousandseparatorposition.split(","),J=K.length,O=f.thousandseparatorposition[0];J--;)(H=C(F(K[J])))?O=H:H=O,K[J]=H;e={cacheStore:[],formatnumber:a(b.formatnumber,e.formatnumber),formatnumberscale:a(b.formatnumberscale,e.formatnumberscale),forcenumberscale:a(b.forcenumberscale,e.forcenumberscale),defaultnumberscale:m(b.defaultnumberscale,e.defaultnumberscale),
numberscaleunit:a(q,e.numberscaleunit).concat(),numberscalevalue:a(t,e.numberscalevalue).concat(),numberprefix:m(b.numberprefix,e.numberprefix),numbersuffix:m(b.numbersuffix,e.numbersuffix),forcedecimals:a(b.forcedecimals,e.forcedecimals),decimalprecision:parseInt("auto"===b.decimals?h.decimalprecision:a(b.decimals,e.decimalprecision),10),decimalseparator:a(b.decimalseparator,e.decimalseparator),thousandseparator:a(b.thousandseparator,e.thousandseparator),thousandseparatorposition:a(K,e.thousandseparatorposition),
indecimalseparator:m(b.indecimalseparator,e.indecimalseparator),inthousandseparator:m(b.inthousandseparator,e.inthousandseparator),scalerecursively:l,maxscalerecursion:p,scaleseparator:s};k.useScaleRecursively&&(e.numberscalevalue&&e.numberscalevalue.length)==(e.numberscaleunit&&e.numberscaleunit.length)||(e.scalerecursively=l=0);k={cacheStore:[],formatnumber:e.formatnumber,formatnumberscale:e.formatnumberscale,forcenumberscale:e.forcenumberscale,defaultnumberscale:e.defaultnumberscale,numberscaleunit:e.numberscaleunit.concat(),
numberscalevalue:e.numberscalevalue.concat(),numberprefix:e.numberprefix,numbersuffix:e.numbersuffix,decimalprecision:parseInt(a(b.yaxisvaluedecimals,e.decimalprecision,2),10),forcedecimals:a(b.forceyaxisvaluedecimals,e.forcedecimals),decimalseparator:e.decimalseparator,thousandseparator:e.thousandseparator,thousandseparatorposition:e.thousandseparatorposition.concat(),indecimalseparator:e.indecimalseparator,inthousandseparator:e.inthousandseparator,scalerecursively:l,maxscalerecursion:p,scaleseparator:s};
l&&(e.numberscalevalue.push(1),e.numberscaleunit.unshift(e.defaultnumberscale),k.numberscalevalue.push(1),k.numberscaleunit.unshift(k.defaultnumberscale));this.Y[c]={dataLabelConf:e,yAxisLabelConf:k}},percentValue:function(a){var b=this.percentStrCacheStore[a];void 0===b&&(b=isNaN(this.paramLabels.decimalprecision)?"2":this.paramLabels.decimalprecision,b=this.percentStrCacheStore[a]=h(e(a,b,this.paramLabels.forcedecimals),this.paramLabels.decimalseparator,this.paramLabels.thousandseparator,this.paramLabels.thousandseparatorposition)+
"%");return b},getCleanValue:function(a,b){var c=this.cleaneValueCacheStore[a];if(void 0===c){var d=this.baseConf,c=a+"";d._REGinthousandseparator&&(c=c.replace(d._REGinthousandseparator,""));d._REGindecimalseparator&&(c=c.replace(d._REGindecimalseparator,"."));c=parseFloat(c);c=isFinite(c)?c:NaN;this.cleaneValueCacheStore[a]=c=isNaN(c)?null:b?F(c):c}return c},dataLabels:function(a,b){var c=this.Y[b]||(b?this.Y[1]:this.Y[0]),d,c=c&&c.dataLabelConf||this.baseConf;d=c.cacheStore[a];void 0===d&&(d=c.cacheStore[a]=
k(a,c));return d},yAxis:function(a,b){var c=this.Y[b]||(b?this.Y[1]:this.Y[0]),d,c=c&&c.yAxisLabelConf||this.baseConf;d=c.cacheStore[a];void 0===d&&(d=c.cacheStore[a]=k(a,c,!0));return d},xAxis:function(a){var b=this.paramX.cacheStore[a];void 0===b&&(b=this.paramX.cacheStore[a]=k(a,this.paramX,!0));return b},sYAxis:function(a){var b=this.Y[1],c,b=b&&b.yAxisLabelConf||this.baseConf;c=b.cacheStore[a];void 0===c&&(c=b.cacheStore[a]=k(a,b));return c},scale:function(a){var b=this.paramScale.cacheStore[a];
void 0===b&&(b=this.paramScale.cacheStore[a]=k(a,this.paramScale));return b},getCleanTime:function(a){var b;this.timeConf.inputDateFormat&&Date.parseExact&&(b=Date.parseExact(a,this.timeConf.inputDateFormat));return b&&b.getTime()},legendValue:function(a){var b=this.paramLegend.cacheStore[a];void 0===b&&(b=this.paramLegend.cacheStore[a]=k(a,this.paramLegend));return b},legendPercentValue:function(a){var b=this.percentStrCacheStore[a],c=this.paramLegend;void 0===b&&(b=isNaN(c.decimalprecision)?"2":
c.decimalprecision,b=this.percentStrCacheStore[a]=h(e(a,b,c.forcedecimals),c.decimalseparator,c.thousandseparator,c.thousandseparatorposition)+"%");return b},getDateValue:function(a){var b,c,d;a&&!/\//.test(this.timeConf.inputDateFormat)&&(a=a.replace(new RegExp(this.timeConf.inputDateFormat.replace(/[a-z]/ig,"").slice(0,1),"g"),"/"));a=/^dd/.test(this.timeConf.inputDateFormat)&&a&&a.replace(/(\d{1,2})\/(\d{1,2})\/(\d{2,4})/,"$2/$1/$3")||a;b=new Date(a);c=b.getTime();!c&&a&&/\:/.test(a)&&(a=a.split(":"),
c=C(a[0],0),d=C(a[1],0),a=C(a[2],0),c=23<c?24===c&&0===d&&0===a?c:23:c,d=59<d?59:d,a=59<a?59:a,b=new Date,b.setHours(c),b.setMinutes(d),b.setSeconds(a),c=b.getTime());return{ms:c,date:b}},getFormattedDate:function(b,c){var d="object"===typeof b&&b||new Date(b),e=this.timeConf,h=a(c,e.outputDateFormat),k=d.getFullYear(),f=d.getMonth(),l=d.getDate(),m=d.getDay(),v=d.getMinutes(),p=d.getSeconds(),d=d.getHours(),v=9<v?""+v:"0"+v,p=9<p?""+p:"0"+p,d=9<d?""+d:"0"+d;h.match(/dnl/)&&(h=h.replace(/dnl/ig,e.days[m]));
h.match(/dns/)&&(h=h.replace(/dns/ig,e.days[m]&&e.days[m].substr(0,3)));h.match(/dd/)&&(h=h.replace(/dd/ig,l));h.match(/mnl/)&&(h=h.replace(/mnl/ig,e.months[f]));h.match(/mns/)&&(h=h.replace(/mns/ig,e.months[f]&&e.months[f].substr(0,3)));h.match(/mm/)&&(h=h.replace(/mm/ig,f+1));h.match(/yyyy/)&&(h=h.replace(/yyyy/ig,k));h.match(/yy/)&&(h=h.replace(/yy/ig,(k%1E3%100+"").replace(/^(\d)$/,"0$1")));h.match(/hh12/)&&(h=h.replace(/hh12/ig,d%12||12));h.match(/hh/)&&(h=h.replace(/hh/ig,d));h.match(/mn/)&&
(h=h.replace(/mn/ig,v));h.match(/ss/)&&(h=h.replace(/ss/ig,p));h.match(/ampm/)&&(h=h.replace(/ampm/ig,12>d?"AM":"PM"));h.match(/ds/)&&(h=h.replace(/ds/ig,e.daySuffix[l]));return h}};p.prototype.constructor=p;k=function(b,c,d){if(null!==b){b=Number(b);var k=b+"",f,l,m,v,p;f=1==c.formatnumberscale?c.defaultnumberscale:"";p=(p=k.split(".")[1])?p.length:c.forcedecimals?"2":"";if(1==c.formatnumberscale){k=b;l=c.defaultnumberscale;b=c.numberscalevalue;f=c.numberscaleunit;var s=c.scalerecursively;m=c.forcenumberscale;
v={};var q=l,t=0,F=[],K=[],J;m=C(m)||0;if(s){q=C(b[0])||1E3;for(t=0;t<b.length;t++)if(s=C(b[t])||1E3,Math.abs(Number(k))>=s&&t<b.length-1)J=k%s,k=(k-J)/s,0===t&&0!==J&&""===f[t]&&m?(F.push(J/q),K.push(f[1]||"")):0!==J&&(1===t&&""===l&&m?(s=J+(F.length?F.pop():0),K.pop(),F.push(s)):F.push(J),K.push(f[t]));else{0===t&&""===l&&m?(k=Number(k)/q,F.push(k),K.push(f[1]||"")):(1===t&&""===l&&m?(s=k+(F.length?F.pop():0),K.pop(),F.push(s)):F.push(k),K.push(f[t]));break}F.reverse();K.reverse();v.value=F;v.scale=
K}else{if(b.length===f.length)for(t=0;t<b.length;t++)if(s=C(b[t])||1E3,Math.abs(Number(k))>=s)q=f[t]||"",k=Number(k)/s;else{0===t&&""===l&&m&&(q=f[0]||"",k=Number(k)/s);break}v.value=k;v.scale=q}l=v;b=k=l.value;f=l.scale}if(c.scalerecursively&&0!==c.formatnumberscale&&"0"!==c.formatnumberscale){d=l.value;l=l.scale;b=-1==c.maxscalerecursion?d.length:Math.min(d.length,c.maxscalerecursion);if(1==c.formatnumber)for(k="",v=0;v<b;v++)f=0===v?d[v]:Math.abs(d[v]),m=f+"",v==b-1&&(m=e(f,a(c.decimalprecision,
p),c.forcedecimals)),k=k+h(m,c.decimalseparator,c.thousandseparator,c.thousandseparatorposition)+l[v]+(v<b-1?c.scaleseparator:"");else for(k="",v=0;v<b;v++)k=k+(0===v?d[v]:Math.abs(d[v])+"")+l[v]+(v<b-1?c.scaleseparator:"");k=(c.numberprefix||"")+k+(c.numbersuffix||"")}else 1==c.formatnumber&&(k=e(b,a(c.decimalprecision,p),c.forcedecimals),k=h(k,c.decimalseparator,c.thousandseparator,c.thousandseparatorposition,d)),k=(c.numberprefix||"")+k+f+(c.numbersuffix||"");return k}};return p}();f.extend(f.core,
{formatNumber:function(a,b){b=b&&s(b)||{};var c=H(b),d;p[c]?d=p[c]:p[c]=d=new t.NumberFormatter(b,{useScaleRecursively:!0});return d.dataLabels(a)}},!1);f.extend(f.core,{formatNumber:function(a,b,c,d){c=c&&s(c)||{};var l=this.jsVars.instanceAPI||{},m=l.numberFormatter,n;""===H(c)?m?n=m:(m=this.getChartData(f.dataFormats.JSON,!0),m=m.data||{},m=m.chart||{},c=H(m),p[c]?n=p[c]:p[c]=n=new t.NumberFormatter(m,l)):(m=this.getChartData(f.dataFormats.JSON,!0),m=m.data||{},m=m.chart||{},m=q(q({},m),c),c=H(m),
p[c]?n=p[c]:p[c]=n=new t.NumberFormatter(m,l));switch((b&&b.toLowerCase?b:"").toLowerCase()){case "yaxisvalues":a=n.yAxis(a,d);break;case "xaxisvalues":a=n.xAxis(a);break;case "scale":a=n.scale(a);break;default:a=n.dataLabels(a,d)}return a}},!0)}]);
FusionCharts.register("module",["private","modules.renderer.js-dom",function(){var f=this.hcLib,t=this.window,C=t.document,q=f.extend2,d="ontouchstart"in t;(function(a){var f=function(){var a={},f;a.pointerdrag={start:["mousedown"],end:["mouseup"],onStart:["mousemove"],postHandlers:{},preHandlers:{}};a.pointerhover={start:["mouseover"],end:["mouseout"]};a.click={start:["click"]};a.escape={start:["keydown"],preHandlers:{start:function(a){a=a||t.event;return a.keyCode&&27===a.keyCode?!0:!1}}};d&&(f=
a.pointerdrag,f.start.push("touchstart"),f.end.push("touchend"),f.onStart.push("touchmove"),f.postHandlers.onStart=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1});return a}(),F;F=q({},f);a.dem=new function(){var a={},d={},b=C.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)},f=C.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent("on"+b,c)},m=function(a,b,c){var d=[],e,f,l;l=F[b];c.start=
function(b){b=b||t.event;for(var d=l.onStart,e=l.end,k=[],f=[],m=d&&d.length||0;m--;)k.push(s(a,d[m],c,"onStart"));for(m=e&&e.length||0;m--;)f.push(s(a,e[m],c,"end"));c.startUn=c.startUn?c.startUn.concat(k):k;c.endUn=c.endUn?c.endUn.concat(f):f;c.state="start";c.closure(b)};c.onStart=function(a){a=a||t.event;c.state="on";if(c.gDef&&c.gDef.preHandlers&&"function"===typeof c.gDef.preHandlers.onStart)c.gDef.preHandlers.onStart(a);c.closure(a);if(c.gDef&&c.gDef.postHandlers&&"function"===typeof c.gDef.postHandlers.onStart)c.gDef.postHandlers.onStart(a)};
c.end=function(a){a=a||t.event;for(var b=c.startUn,d=c.endUn,e=b&&b.length||0;e--;)b[e]();delete c.startUn;c.startUn=[];for(e=d&&d.length||0;e--;)d[e]();delete c.endUn;c.endUn=[];c.state="end";c.closure(a)};if(l)for(b=l.start,f=b.length;f--;)(e=b[f])&&d.push(s(a,e,c,"start"));return d},s=function(a,c,d,e){e=e||"closure";b(a,c,d[e]);return function(){f(a,c,d[e])}},e=function(a){return function(b){b=b||t.event;a.handler.call(a.context||a.elem,{data:a.data,type:a.type,state:a.state,isGesture:a.isGesture,
target:b.target||b.srcElement,originalEvent:b})}};return{listen:function(b,k,f,p,q){var n=this;k="string"===typeof k?k.split(" "):k;var t=k.length,B=[],U=function(a,b,c){B.push(function(){n.unlisten(a,b,c)})},r,ga,X,aa,W;if(b.ownerDocument&&b.ownerDocument===C)for(;t--;)ga=k[t],aa=Boolean(F[ga]),W="function"===typeof f?f:f[t],X={handler:W,elem:b,type:ga,isGesture:aa,gDef:aa?F[ga]:null,data:p,context:q,start:[],end:[],links:{prev:null,next:null}},X.closure=e(X),aa?((r=d[ga])||(r=d[ga]=[]),r.push(X),
m(b,ga,X)):((r=a[ga])||(r=a[ga]=[]),r.push(X),s(b,ga,X)),U(b,ga,W);else for(;t--;)ga=k[t],W="function"===typeof f?f:f[t],X={handler:W,elem:b,type:ga,isGesture:aa,data:p,context:q,start:[],end:[],links:{prev:null,next:null}},X.closure=e(X),(r=a[ga])||(r=a[ga]=[]),r.push(X),s(b,ga,X),U(b,ga,W);return{unlisten:function(){for(var a=B.length;a--;)B[a]();B.length=0;B=null}}},unlisten:function(b,e,m){var s,q=!1,n,t;if(Boolean(F[e]))for(n=(s=d[e])&&s.length||0;n--;){if(t=s[n],t.handler===m&&t.elem===b){var q=
b,B=void 0,C=void 0,r=void 0,B=void 0;if(B=F[e])for(B=B.start,r=B.length;r--;)(C=B[r])&&f(q,C,t.start);s.splice(n,1);q=!0}}else for(n=(s=a[e])&&s.length||0;n--;)t=s[n],t.handler===m&&t.elem===b&&(f(b,e,t.closure),s.splice(n,1),q=!0);return q},fire:function(b,d,e,f){var l;if(b.ownerDocument&&b.ownerDocument===C)C.createEvent?(l=C.createEvent("HTMLEvents"),l.initEvent(d,!0,!0),e&&(e.originalEvent?e.originalEvent=l:q(l,e)),"function"===typeof b[d]&&b[d].call(b),b.dispatchEvent(l)):(l=C.createEventObject(),
l.eventType=d,e&&(e.originalEvent?e.originalEvent=l:q(l,e)),"function"===typeof b[d]&&b[d].call(b),b.fireEvent("on"+d,l)),f&&!l.returnValue&&f(l);else for(f=(d=a[d])&&d.length||0;f--;)l=d[f],l.elem===b&&l.closure(e)}}}})(f||t);(function(a){function d(a,b){var c="";C.defaultView&&C.defaultView.getComputedStyle?c=C.defaultView.getComputedStyle(a,"").getPropertyValue(b):a.currentStyle&&(b=b.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),c=a.currentStyle[b]);c=parseInt(c,10);return isNaN(c)?
0:c}function f(a,c,d,e,h,k,m,q){var t=c/40,n=l[k||"linear"](e-d,t),F=0,B=function(){var c;F<t?(c=n[F],a.style[h]=d+c+q,b&&"opacity"===h&&(c=100*Number(c),a.style.filter="progid:DXImageTransform.Microsoft.Alpha(Opacity="+c+")"),F+=1,setTimeout(B,40)):m&&m()};q=q||"";setTimeout(B,40)}var c={width:{suffix:"px"},height:{suffix:"px"},opacity:!0,top:{suffix:"px"},left:{suffix:"px"}},l={linear:function(a,b){for(var c=[],d=a/b,h=0;h<b;h+=1)c[h]=d*(h+1);return c}},b=/msie/i.test(t.navigator.userAgent)&&!t.opera;
a.danimate=q({animate:function(a,b,l,e,h){e={};var k={},v=function(){t+=1;t===q&&"function"===typeof h&&h()},q=0,t=0,n,C;if(40>l){for(C in b)a.style[C]=b[C];h&&h()}else for(C in b)c[C]&&(q+=1,e[C]=b[C],k[C]=d(a,C),n="object"===typeof c[C]&&c[C].suffix,f(a,l,k[C],e[C],C,"linear",v,n))}},{})})(f||t)}]);
FusionCharts.register("module",["private","modules.renderer.js-colormanager",function(){var f=this.hcLib,t=f.pluckNumber,C=f.graphics.getDarkColor,q=f.graphics.getLightColor,d="AFD8F8 F6BD0F 8BBA00 FF8E46 008E8E D64646 8E468E 588526 B3AA00 008ED6 9D080D A186BE CC6600 FDC689 ABA000 F26D7D FFF200 0054A6 F7941C CC3300 006600 663300 6DCFF6".split(" "),a="8BBA00 F6BD0F FF654F AFD8F8 FDB398 CDC309 B1D0D2 FAD1B9 B8A79E D7CEA5 C4B3CE E9D3BE EFE9AD CEA7A2 B2D9BA".split(" "),m=f.defaultPaletteOptions={paletteColors:[d,
d,d,d,d],bgColor:["CBCBCB,E9E9E9","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:["0,100","0,100","0,100","0,100","0,100"],bgAlpha:["50,50","60,50","40,20","20,10","30,30"],canvasBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],canvasBgAngle:[0,0,0,0,0],canvasBgAlpha:["100","100","100","100","100"],canvasBgRatio:["","","","",""],canvasBorderColor:["545454","545454","415D6F","845001","68001B"],canvasBorderAlpha:[100,100,100,90,100],showShadow:[0,
1,1,1,1],divLineColor:["717170","7B7D6D","92CDD6","965B01","68001B"],divLineAlpha:[40,45,65,40,30],altHGridColor:["EEEEEE","D8DCC5","99C4CD","DEC49C","FEC1D0"],altHGridAlpha:[50,35,10,20,15],altVGridColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],altVGridAlpha:[10,20,10,15,10],anchorBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["555555","60634E",
"025B6A","A15E01","68001B"],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50],legendBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],legendBorderColor:["545454","545454","415D6F","845001","D55979"],plotGradientColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],plotBorderColor:["333333","8A8A8A","FFFFFF","FFFFFF","FFFFFF"],plotFillColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],bgColor3D:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],bgAlpha3D:["100",
"100","100","100","100"],bgAngle3D:[90,90,90,90,90],bgRatio3D:["","","","",""],canvasBgColor3D:["DDE3D5","D8D8D7","EEDFCA","CFD2D8","FEE8E0"],canvasBaseColor3D:["ACBB99","BCBCBD","C8A06C","96A4AF","FAC7BC"],divLineColor3D:["ACBB99","A4A4A4","BE9B6B","7C8995","D49B8B"],divLineAlpha3D:[100,100,100,100,100],legendBgColor3D:["F0F3ED","F3F3F3","F7F0E8","EEF0F2","FEF8F5"],legendBorderColor3D:["C6CFB8","C8C8C8","DFC29C","CFD5DA","FAD1C7"],toolTipbgColor3D:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor3D:["49563A",
"666666","49351D","576373","681C09"],baseFontColor3D:["49563A","4A4A4A","49351D","48505A","681C09"],anchorBgColor3D:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"]},d=f.colorManager=function(a,c){var d=a.chart,b=f.extend2({},m),p=c.defaultPaletteOptions||{},H;b||(b={});for(H in p)b[H]=p[H];b=this.paletteOptions=b;p=this.themeEnabled=d.palettethemecolor;this.paletteIndex=(0<d.palette&&6>d.palette?d.palette:t(c.paletteIndex,1))-1;this.iterator=0;this.paletteColors=b.paletteColors[this.themeEnabled?0:
this.paletteIndex];H=d.palettecolors;void 0!==H&&null!==H&&""!==d.palettecolors&&(this.paletteColors=d.palettecolors.split(/\s*\,\s*/));this.paletteLen=this.paletteColors.length;this.useFlatColors=t(d.useflatdataplotcolor,c.useFlatColor,0);p&&(this.paletteIndex=5,b.bgColor.push(q(p,35)+","+q(p,10)),b.bgAngle.push(270),b.bgRatio.push("0,100"),b.bgAlpha.push("50,50"),b.canvasBgColor.push("FFFFFF"),b.canvasBgAngle.push(0),b.canvasBgAlpha.push("100"),b.canvasBgRatio.push(""),b.canvasBorderColor.push(C(p,
80)),b.canvasBorderAlpha.push(100),b.showShadow.push(1),b.divLineColor.push(C(p,20)),b.divLineAlpha.push(40),b.altHGridColor.push(q(p,20)),b.altHGridAlpha.push(15),b.altVGridColor.push(q(p,80)),b.altVGridAlpha.push(10),b.anchorBgColor.push("FFFFFF"),b.toolTipBgColor.push("FFFFFF"),b.toolTipBorderColor.push(C(p,80)),b.baseFontColor.push(p.split&&p.split(",")[0]),b.borderColor.push(C(p,60)),b.borderAlpha.push(50),b.legendBgColor.push("FFFFFF"),b.legendBorderColor.push(C(p,80)),b.plotGradientColor.push("FFFFFF"),
b.plotBorderColor.push(C(p,85)),b.plotFillColor.push(C(p,85)),b.bgColor3D.push("FFFFFF"),b.bgAlpha3D.push("100"),b.bgAngle3D.push(90),b.bgRatio3D.push(""),b.canvasBgColor3D.push(q(p,20)),b.canvasBaseColor3D.push(q(p,40)),b.divLineColor3D.push(C(p,20)),b.divLineAlpha3D.push(40),b.legendBgColor3D.push("FFFFFF"),b.legendBorderColor3D.push(C(p,80)),b.toolTipbgColor3D.push("FFFFFF"),b.toolTipBorderColor3D.push(C(p,80)),b.baseFontColor3D.push(p.split&&p.split(",")[0]),b.anchorBgColor3D.push("FFFFFF"),b.tickColor&&
b.tickColor.push(C(p,90)),b.trendDarkColor&&b.trendDarkColor.push(C(p,90)),b.trendLightColor&&b.trendLightColor.push(q(p,b.TrendLightShadeOffset)),b.msgLogColor&&b.msgLogColor.push(q(p,80)),b.dialColor&&b.dialColor.push(C(p,95)+",FFFFFF,"+C(p,95)),b.dialBorderColor&&b.dialBorderColor.push(C(p,95)+",FFFFFF,"+C(p,95)),b.pivotColor&&b.pivotColor.push(q(p,95)+",FFFFFF,"+q(p,95)),b.pivotBorderColor&&b.pivotBorderColor.push(C(p,95)+",FFFFFF,"+C(p,95)),b.pointerBorderColor&&b.pointerBorderColor.push(C(p,
75)),b.pointerBgColor&&b.pointerBgColor.push(C(p,75)),b.thmBorderColor&&b.thmBorderColor.push(C(p,90)),b.thmFillColor&&b.thmFillColor.push(q(p,55)),b.cylFillColor&&b.cylFillColor.push(q(p,55)),b.periodColor&&b.periodColor.push(q(p,10)),b.winColor&&b.winColor.push("666666"),b.lossColor&&b.lossColor.push("CC0000"),b.drawColor&&b.drawColor.push("666666"),b.scorelessColor&&b.scorelessColor.push("FF0000"),b.gridColor&&b.gridColor.push(q(p,30)),b.categoryBgColor&&b.categoryBgColor.push(q(p,10)),b.dataTableBgColor&&
b.dataTableBgColor.push(q(p,10)),b.gridResizeBarColor&&b.gridResizeBarColor.push(C(p,90)),b.scrollBarColor&&b.scrollBarColor.push(q(p,50)))};d.prototype={getColor:function(a){return this.paletteOptions[a][this.paletteIndex]},getPlotColor:function(a){var c=this.paletteColors;a=this.useFlatColors?this.getColor("plotFillColor"):c[a%this.paletteLen];a||(this.iterator===this.paletteLen&&(this.iterator=0),a=c[this.iterator],this.iterator+=1);return a},parseColorMix:function(a,c){var d=[],b,f,m,s,e,h,k,
v,t,J;c=c.replace(/\s/g,"");c=c.toLowerCase();if(""===c||null===c||void 0===c)d=[a];else for(f=c.split(","),m=a.split(","),s=Math.max(f.length,m.length,1),e=f[0],h=m[0],t=/[\{\}]/ig,J=0;J<s;J++)k=(f[J]||e).replace(t,""),v=m[J]||h,"color"==k?d.push(v):"light"==k.substr(0,5)?(b=k.indexOf("-"),b=-1==b?1:k.substr(b+1,k.length-b),b=100-b,d.push(q(v,b))):"dark"==k.substr(0,4)?(b=k.indexOf("-"),b=-1==b?1:k.substr(b+1,k.length-b),b=100-b,d.push(C(v,b))):d.push(k);return d},parseAlphaList:function(a,c){var d=
a.split(","),b=[],f,m=100,s;for(s=0;s<c;s++)f=t(d[s]),void 0!==f&&null!==f&&(m=f),b[s]=m;return b.join()},parseRatioList:function(a,c){var d=a.split(","),b=[],f=0,m,s;for(s=0;s<c;s++)m=d[s],m=isNaN(m)||void 0===m?0:Math.abs(Number(m)),m=100<m?100:m,b[s]=m,f+=m;f=100<f?100:f;if(d.length<c)for(s=d.length;s<c;s++)b[s]=(100-f)/(c-d.length);b[-1]=0;return b.join()}};d.prototype.constructor=d;f.defaultGaugePaletteOptions={paletteColors:[a,a,a,a,a],bgColor:["CBCBCB,E9E9E9","CFD4BE,F3F5DD","C5DADD,EDFBFE",
"A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:["0,100","0,100","0,100","0,100","0,100"],bgAlpha:["50,50","60,50","40,20","20,10","30,30"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["555555","60634E","025B6A","A15E01","68001B"],tickColor:["333333","60634E","025B6A","A15E01","68001B"],trendDarkColor:["333333","60634E","025B6A","A15E01","68001B"],trendLightColor:["f1f1f1","F3F5DD",
"EDFBFE","FFF5E8","FFD1DD"],pointerBorderColor:["545454","60634E","415D6F","845001","68001B"],pointerBgColor:["545454","60634E","415D6F","845001","68001B"],canvasBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],canvasBgAngle:[0,0,0,0,0],canvasBgAlpha:["100","100","100","100","100"],canvasBgRatio:["","","","",""],canvasBorderColor:["545454","545454","415D6F","845001","68001B"],canvasBorderAlpha:[100,100,100,90,100],altHGridColor:["EEEEEE","D8DCC5","99C4CD","DEC49C","FEC1D0"],altHGridAlpha:[50,
35,10,20,15],altVGridColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],altVGridAlpha:[10,20,10,15,10],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50],legendBgColor:["ffffff","ffffff","ffffff","ffffff","ffffff"],legendBorderColor:["545454","545454","415D6F","845001","D55979"],plotFillColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],plotBorderColor:["999999","8A8A8A","6BA9B6","C1934D","FC819F"],msgLogColor:["717170","7B7D6D","92CDD6","965B01","68001B"],
TrendLightShadeOffset:30}}]);
FusionCharts.register("module",["private","modules.renderer.js-annotations",function(){var f=this,t=f.core,C=f.hcLib,q=f.window,d=/msie/i.test(q.navigator.userAgent)&&!q.opera,a=C.addEvent,m=C.removeEvent,F=C.hasTouch,c=q.Number,l=F?6:5,b="rgba(192,192,192,"+(d?.002:1E-6)+")",d=q.Math,p=d.min,H=d.max,s=d.sin,e=d.cos,h=d.PI,k=h/180,v=d.abs,K=f.extend,J=C.pluck,n=C.pluckNumber,N=C.graphics.convertColor,B=C.getValidValue,U=C.parseUnsafeString,r=C.setImageDisplayMode,ga=C.graphics.parseColor,X=C.setLineHeight,
aa=C.getMouseCoordinate,W={style:{}},ya=C.toRaphaelColor,va=function(a,b){return{start:-a,end:-b,angle:a-b}},za=function(a,b,d,e,h){var k,f,l=0,m=0;f=void 0===b||null===b?1:b;var s;if(!a||!a.toString)return{value:d,hasDynamicMacros:!1};a=a.toString();a=a.toLowerCase().replace(/\s/g,"");if(d=a.match(/^[\+\-]?\d+(\.\d+)?|[\+\-]\d+(\.\d+)?/g)){for(b=0;b<d.length;b+=1)l+=Number(d[b])||0;l*=f}if(d=a.match(/^[\+\-]?(\$[a-z0-9\.]+)|[\+\-](\$[a-z0-9\.]+)/g))for(b=0;b<d.length;b+=1){k=d[b];var n=e,v=h,p=k.split("."),
q=void 0,r=void 0,t=0;for(f=void 0;q=p.shift();)switch(typeof(r=n[q])){case "object":n=r[q];break;case "function":r=r(p,v),"-"===k.charAt()&&(r*=-1),f=!0;default:t+=c(r)||0,p.length=0}k=t;f&&(s=!0);m+=k}if(d=a.match(/^[\+\-]?\$\d+(\.\d+)?|[\+\-]\$\d+(\.\d+)?/g))for(b=0;b<d.length;b+=1)m=m+Number(d[b].replace("$",""))||0;return{value:l+m,hasDynamicMacros:s}},ja=function(a,b,c){if(!b.removed){b=b.data("annotation");var d=b.getRenderer(),e=aa(d.container,c),h=e.annotationOptions=b.options,k=e.groupOptions=
b.group.options;e._shape=b;"id"in h&&(e.annotationId=h.id);"id"in k&&(e.groupId=k.id);f.raiseEvent(a,e,d.fusionCharts,c)}},O,na,ma;na=function(a,b,c,d,e){this.options=a;this.attrs={};this.css={};this.bounds={};this.shared=b;this.snaps=c||{};this.annotations=e;this.items=b=[];this._idstore=d;a.id&&(this._id=a.id,d[a.id]=this);if(a=a.items)for(d=0,c=a.length;d<c;d+=1)b.push(new ma(a[d],this))};K(na.prototype,{scaleImageX:1,scaleImageY:1,scaleText:1,scaleValue:1,scaleValueComplement:1,scaleX:1,scaleY:1});
na.prototype.setup=function(){var a=this.options,b=this.shared,c=this.getRenderer();c&&(this.isBelow=0!==n(a.showbelow,a.showbelowchart,b.showbelow),this.useTracker=!this.isBelow&&c.layers.tracker&&this.shared.useTracker,this.raiseOwnEvents=b.interactionevents)};na.prototype.scale=function(){var a=this.options,b=this.shared,c=this.bounds,d=this.snaps,e=this.getRenderer(),h=b.rootxscale,k=b.rootyscale,f=c.xs=n(a.xscale,b.xscale,100)/100,l=c.ys=n(a.yscale,b.yscale,100)/100,m,s,v;e&&(this.scaleText*=
l,this.scaleImageX*=f,this.scaleImageY*=l,0!==n(a.autoscale,b.autoscale)&&(f=n(a.origw,b.origw),l=n(a.origh,b.origh),f=e.chartWidth/f,l=e.chartHeight/l,e=0!==n(a.constrainedscale,b.constrainedscale),m=f<l?f:l,s=e?m:f,v=e?m:l,this.scaleValue=na.prototype.scaleValue*m,this.scaleValueComplement=na.prototype.scaleValueComplement*(e?m:f<l?l:f),this.scaleX=na.prototype.scaleX*s,this.scaleY=na.prototype.scaleX*v,c.xs*=s,c.ys*=v,h*=s,k*=v,"1"==J(a.scaletext,b.scaletext)&&(this.scaleText=na.prototype.scaleText*
v),"1"==J(a.scaleimages,b.scaleimages)&&(this.scaleImageX=na.prototype.scaleImageX*s,this.scaleImageY=na.prototype.scaleImageY*v)),c.x=za(J(a.x,a.xpos),h,0,d,this.isBelow).value+n(a.grpxshift,b.grpxshift,0),c.y=za(J(a.y,a.ypos),k,0,d,this.isBelow).value+n(a.grpyshift,b.grpyshift,0),this.xshift=n(a.xshift,b.xshift,0),this.yshift=n(a.yshift,b.yshift,0))};na.prototype.draw=function(){var a=this.getRenderer(),b=this.options,c=this.bounds,d=this.items,e=a&&a.layers.dataset,h=this.wrapper;if(a){h||(this.wrapper=
h=a.paper.group("annotations"),e&&(this.isBelow?h.insertBefore(e):h.insertAfter(a.layers.datalabels||e)));this.wrapper.attr({x:0,y:0,visibility:n(b.visible,1)?"":"hidden"}).translate(c.x,c.y);b=0;for(c=d.length;b<c;b+=1)a=d[b],a.scale(!0),a.queueDraw?a.queue():(a.setup(),a.draw());return this}};na.prototype.destroy=function(){for(var a=this.wrapper,b=this.items,c;c=b.shift();)c.destroy();a&&(this.wrapper=a.remove());this._idstore[this._id]===this&&delete this._idstore[this._id]};na.prototype.addItem=
function(a,b){var c;this.items.push(c=new ma(a,this,this._idstore));b&&null!==this.getRenderer()&&(c.scale(),c.setup(),c.draw());return c};na.prototype.removeItem=function(a){for(var b=this.items,c=b.length;c--;)if(a===b[c]._id)return b.splice(c,1)};na.prototype.getRenderer=function(){return this.annotations&&this.annotations.getRenderer()||null};ma=function(a,b){var c=!1,d;this.options=a;this.group=b;this.args=[];this.attrs={};this.attrsTracker={};this.style={};this.bounds={};this._idstore=b._idstore;
a.id&&(this._id=a.id,b._idstore[a.id]=this);this.type=a.type&&a.type.toLowerCase&&a.type.toLowerCase();for(d in ma.eventNames)"function"===typeof a[d]&&(this[d]=a[d],c=!0);this.hasEvents=c;"function"===typeof a.onload&&(this.onload=a.onload)};f.extend(ma.prototype,{getAbsoluteBounds:function(){var a=this.bounds,b=a.x1,c=a.y1,d=a.x2,e=a.y2,h=p(b,d),k=p(c,e),b=H(b,d)-h,c=H(c,e)-k;return{x:h,width:b,y:k,height:c,r:a.r,unscaled:{width:b/a.xs,height:c/a.ys}}},queue:function(){this.group.annotations.shapesToDraw.push(this)},
scale:function(a){var b=this,c=b.group,d=c.bounds,e=b.bounds,h=b.options,k=c.snaps,f=J(h.x,h.xpos),l=J(h.y,h.ypos),m=J(h.tox,h.toxpos),s=J(h.toy,h.toypos),v=e.xs=d.xs,d=e.ys=d.ys,p=n(h.xshift,c.xshift,0),q=n(h.yshift,c.yshift,0),r;r=function(d,e,h,k){d=za(d,e,h,k,c.isBelow);d.hasDynamicMacros&&a&&(b.queueDraw=!0);return d.value};b.hasDimension=!0;b.hasDimensionX=!0;b.hasDimensionY=!0;e.x1=r(f,v,0,k)+p;void 0===m?(b.hasDimension=!1,b.hasDimensionX=!1,e.x2=e.x1):e.x2=r(m,v,0,k)+p;e.y1=r(l,d,0,k)+q;
void 0===s?(b.hasDimension=!1,b.hasDimensionY=!1,e.y2=e.y1):e.y2=r(s,d,0,k)+q;ma.angularShapeTypes[b.type]&&(e.angles=va(r(h.startangle,1,0,k),r(h.endangle,1,360,k)));e.r=r(h.radius,c.scaleValue,0,k)},setup:function(){var a=this.options,c=this.group,d=c.options,e=this.attrs,h=this.style,k=c.scaleValue,f=n(d.fillalpha,d.alpha,100),l=this.fillAlpha=J(a.fillalpha,a.alpha,f),m=this.fillColor=J(a.fillcolor,a.color,d.color),s=this.fillPattern=J(a.fillpattern&&a.fillpattern.toLowerCase&&a.fillpattern.toLowerCase(),
d.fillpattern&&d.fillpattern.toLowerCase&&d.fillpattern.toLowerCase()),v=this.bordered=n(a.showborder,ma.borderedShapeTypes[this.type],!!B(a.bordercolor)),p=this.borderColor=J(a.bordercolor,d.bordercolor,m),f=this.borderAlpha=n(a.borderalpha,a.alpha,d.borderalpha,f),q=this.dashed=!!n(a.dashed,0),r=n(a.borderthickness,a.thickness,2)*k;this.link=J(a.link,d.link);this.shadow="1"==J(a.showshadow,d.showshadow);void 0===m&&(m=ma.borderedShapeTypes[this.type]&&"none"||"#ff0000",void 0===p&&(p="#ff0000"));
v&&r?(e.stroke=N(p,f),e["stroke-linecap"]="round",e["stroke-width"]=r,q&&(e["stroke-dasharray"]=[n(a.dashlen,5)*k,n(a.dashgap,3)*k])):e.stroke="none";this.fillOptions={gradientUnits:"objectBoundingBox",color:m,alpha:l,ratio:J(a.fillratio,d.fillratio),angle:360-n(a.fillangle,0),radialGradient:"radial"===s};this.link&&(h.cursor="pointer",h._cursor="hand");e.visibility=n(a.visible,1)?"":"hidden";this.useTracker=c.useTracker;this.toolText=U(J(a.tooltext,d.tooltext));if(this.useTracker||this.link||this.toolText)K(this.attrsTracker,
{stroke:b,fill:b}),this.link&&(this.attrsTracker.ishot=+new Date);this.raiseOwnEvents=c.raiseOwnEvents},draw:function(){var b=this.getRenderer(),c=this.type,d=this.attrs,e=this.style,h=b&&b.paper,k=ma.types[c]&&ma.types[c].call&&ma.types[c].call(this,b),f=ma.imageShapeTypes[k],l=ma.textShapeTypes[k],s=f||l||ma.trackerShapeTypes[k],v=this.link||this.toolText,n=this.wrapper,c=this.tracker,p=b&&b.layers.tracker||this.group.wrapper,q=!1,r=c||n,t=ma.eventNames,F=ma.ownEvents,B,C;if(b){if(k){if(n)if(n.elemType!==
k){if(this.ownEventsAttached){for(C in F)r["un"+C].apply(n,F[C]);this.ownEventsAttached=!1}n=n.remove()}else if(this.hasEvents)for(B in t)(C=this[B])&&C.eventAttached&&(m(r.node,t[B],C),C.eventAttached=!1);f||(d.fill=ya(this.fillOptions));n?n.attr(d).css(e):(this.args.push(this.group.wrapper),n=this.wrapper=h[k].apply(h,this.args).attr(d).css(e),n.elemType=k,n.data("annotation",this),q=!0,this.args.pop());!this.shadow||this.shadowAdded||f||l?n.shadow(this.shadowAdded=!1):n.shadow(this.shadowAdded=
!0,H(this.borderAlpha,this.fillOptions.alpha)/100);v?this.useTracker&&(c||(this.args.push(p),c=this.tracker=s?h.rect(0,0,0,0,0,p):h[k].apply(h,this.args),this.args.pop()),c.attr(d).attr(this.attrsTracker)):c&&(c=c.remove());r=c||n;if(this.raiseOwnEvents&&!this.ownEventsAttached){for(C in F)r[C].apply(n,F[C]);this.ownEventsAttached=!0}this.link&&r.click(b.linkClickFN,this);this.toolText&&(r.tooltip(this.toolText||""),this.group.wrapper.trackTooltip(!0));if(this.hasEvents)for(B in t)(C=this[B])&&!C.eventAttached&&
(a(r.node,t[B],C,this),C.eventAttached=!0);f||(c&&s&&(b=n.getBBox(),c.attr({x:b.x,y:b.y,width:b.width,height:b.height})),q&&this.onload&&this.onload(d))}return this}},destroy:function(){var a=this.wrapper,b=this.tracker,c=b||a,d=ma.eventNames,e=ma.ownEvents,h,k;if(a){if(this.ownEventsAttached){for(k in e)c["un"+k].apply(a,e[k]);this.ownEventsAttached=!1}if(this.hasEvents)for(h in d)(k=this[h])&&k.eventAttached&&(m(c.node,d[h],k),k.eventAttached=!1);b&&(this.tracker=b.remove());this.wrapper=a.remove()}this._idstore[this._id]===
this&&delete this._idstore[this._id]},getRenderer:function(){return this.group&&this.group.getRenderer()||null}});f.extend(ma,{imageShapeTypes:{image:!0},angularShapeTypes:{circle:!0,arc:!0},textShapeTypes:{text:!0},trackerShapeTypes:{image:!0,text:!0},borderedShapeTypes:{path:!0,line:!0},eventNames:{onmouseover:F?"touchstart":"mouseover",onmouseout:"mouseout",onmousemove:F?"touchmove":"mousemove",onclick:"click"},ownEvents:{click:[function(a){ja("annotationClick",this,a)}],hover:[function(a){ja("annotationRollOver",
this,a)},function(a){ja("annotationRollOut",this,a)}]},textAlignOptions:{left:"start",right:"end",center:"middle"},textVerticalAlignOptions:{top:"bottom",middle:"middle",bottom:"top"},textRotationOptions:{0:"0",1:"270",right:"90",cw:"90",left:"270",ccw:"270"},types:{rectangle:function(){var a=this.args,b=this.attrs,c=this.getAbsoluteBounds(),d=.5*c.width;c.r>d&&(c.r=d);a[0]=b.x=c.x;a[1]=b.y=c.y;a[2]=b.width=c.width;a[3]=b.height=c.height;a[4]=b.r=c.r;return"rect"},line:function(){var a=this.attrs,
b=this.bounds;this.args[0]=a.path=["M",b.x1,b.y1,"L",b.x2,b.y2];1===a["stroke-width"]&&(a["shape-rendering"]="crisp");a["stroke-width"]<l&&(this.attrsTracker["stroke-width"]=l);this.bordered&&this.dashed&&(this.attrsTracker["stroke-dasharray"]="solid");return"path"},path:function(){var a=this.attrs,b=this.bounds;this.args[0]=a.path=this.options.path;a.transform=["T",b.x1,b.y1,"S",b.xs,b.ys,b.x1,b.y1];1===a["stroke-width"]&&(a["shape-rendering"]="crisp");return"path"},polygon:function(){var a=this.args,
b=this.attrs,c=this.options,d=this.bounds,e=this.group,h=e.snaps;a[0]=za(c.sides,1,5,h,e.isBelow).value;a[1]=d.x1;a[2]=d.y1;a[3]=d.r;a[4]=za(c.startangle,1,0,h,e.isBelow).value;a[5]=0;b.polypath=a.slice(0);return"polypath"},circle:function(a){var b=this.args,c=this.attrs,d=this.options,f=this.bounds,l=a.chartWidth,m=a.chartHeight,n=this.group.scaleValueComplement,p=this.group.snaps,r=f.angles,q=this.group;a=f.r;J(d.radius)||(f.r=l<m?l*f.xs:m*f.ys,f.r=a=.3*f.r);d=za(d.yradius,n,a,p,q.isBelow).value;
this.fillPattern||(this.fillOptions.radialGradient=!0,this.fillPattern="radial");"radial"===this.fillPattern&&(this.fillOptions.cx=this.fillOptions.cy=.5);m=r.angle%360;if(!m&&a===d)return b[0]=c.cx=f.x1,b[1]=c.cy=f.y1,b[2]=c.r=f.r,"circle";m||(r.angle=0<r.angle?r.angle-.001:r.angle+.001,r.start=r.end-r.angle);m||m==r.angle||(m=360);l=r.start*k;r=r.end*k;m*=k;p=f.x1;q=f.y1;f=p+e(l)*a;n=q+s(l)*d;p+=e(r)*a;q+=s(r)*d;a=["M",f,n,"A",a,d,0,v(m)>=h?1:0,l<r?1:0,p,q,"Z"];b[0]=c.path=a;return"path"},arc:function(a){var b=
this.options,c=this.args,d=this.attrs,e=this.bounds,h=a.chartWidth;a=a.chartHeight;var f=this.group,l=f.scaleValue,m=e.angles;J(b.radius)||(e.r=h<a?h*e.xs:a*e.ys,e.r*=.3);e.innerR=za(b.innerradius,l,.8*e.r,this.group.snaps,f.isBelow).value;e.innerR>e.r&&(e.innerR+=e.r,e.r=e.innerR-e.r,e.innerR-=e.r);this.fillPattern||(this.fillOptions.radialGradient=!0,this.fillPattern="radial");"radial"===this.fillPattern&&(this.fillOptions.cx=this.fillOptions.cy=.5);c[0]=e.x1;c[1]=e.y1;c[2]=e.r;c[3]=e.innerR;c[4]=
m.end*k;c[5]=m.start*k;d.ringpath=c.slice(0);return"ringpath"},text:function(a){var b=this.args,c=this.style,d=this.attrs,e=this.group,h=this.bounds,k=this.options,f=this.getAbsoluteBounds(),l=J(k.align,e.options.textalign,"center").toLowerCase(),m=J(k.valign,e.options.textvalign,"middle").toLowerCase(),s=U(J(k.text,k.label)),p=a.logic.smartLabel,v=n(k.wrap,e.options.wraptext,1),r,q,t=J(k.rotatetext,e.options.rotatetext,"0").toLowerCase(),t=ma.textRotationOptions[t],F="0"!==t?"y":"x",B=a.options.orphanStyles;
a=K({},B.defaultStyle.style||{});B=e.id&&B[e.id.toLowerCase()]||W;a=K(a,B.style);var B=parseFloat(a.fontSize),C=J(k.font,e.options.font,a.fontFamily),e=n(k.fontsize,e.options.fontsize,B)*e.scaleText;v&&(r=n(k.wrapwidth,this.hasDimensionX?f.width/h.xs:void 0),q=n(k.wrapheight,this.hasDimensionY?f.height/h.ys:void 0),r&&(r*=h.xs),q&&(q*=h.ys));c.fontFamily=C;c.fontWeight=n(k.bold,k.isbold,0)?"bold":"normal";n(k.italic,k.isitalic,0)&&(c.fontStyle="italic");k.bgcolor&&(!d["text-bound"]&&(d["text-bound"]=
[]),d["text-bound"][0]=ga(k.bgcolor));k.bordercolor&&(!d["text-bound"]&&(d["text-bound"]=[]),d["text-bound"][1]=ga(k.bordercolor),d["text-bound"][2]=n(k.borderthickness,1),d["text-bound"][3]=n(k.padding,1));k.fontcolor&&(d.fill=ga(k.fontcolor),this.fillOptions&&(this.fillOptions.color=d.fill));c.fontSize=e+"px";e===B?c.lineHeight=a.lineHeight:X(c);d["text-anchor"]=ma.textAlignOptions[l]||ma.textAlignOptions.center;p.setStyle(c);c=p.getSmartText(s,r,q,!1);d["vertical-align"]=ma.textVerticalAlignOptions[m]||
ma.textVerticalAlignOptions.middle;d["text-anchor"]===ma.textAlignOptions.left?f[F]+=n(k.leftmargin,0):d["text-anchor"]===ma.textAlignOptions.center&&(f[F]+=.5*n(k.leftmargin,0));"0"!==t&&(d.rotation=[parseFloat(t),f.x,f.y]);b[0]=d.x=f.x;b[1]=d.y=f.y;b[2]=d.text=c.text;c.tooltext&&(d.title=c.tooltext);delete d.stroke;delete d["stroke-weight"];return"text"},image:function(a){var b=this,c=b.style,d=a.chartWidth,e=a.chartHeight;a=b.options;var h=b.attrs,k=b.args,f=B(a.url),l=b.group.scaleImageX*J(Number(a.xscale),
100)/100,m=b.group.scaleImageY*J(Number(a.yscale),100)/100,s=b.getAbsoluteBounds(),p={width:1,height:1},v;if(!f)return k[0]=h.x=s.x,k[1]=h.y=s.y,k[2]=h.width=s.width,k[3]=h.height=s.height,k[4]=h.r=s.r,"rect";v=new q.Image;v.onload=function(){p=r("none","top","left",100,0,d,e,v);delete p.x;delete p.y;p=K(p,{width:(b.hasDimensionX?s.unscaled.width:p.width)*l,height:(b.hasDimensionY?s.unscaled.height:p.height)*m});setTimeout(function(){var a,d,e;if(a=b.wrapper){a.attr(p);if(d=b.tracker)e=a.getBBox(),
d.attr({x:e.x,y:e.y,width:e.width,height:e.height});a.css({opacity:c.opacity=H(n(b.fillAlpha,b.borderAlpha),b.borderAlpha)/100})}b.onload&&b.onload(p)},0)};v.src=f;k[0]=h.src=f;k[1]=h.x=s.x;k[2]=h.y=s.y;k[3]=h.width=(b.hasDimensionX?s.unscaled.width:p.width)*l;k[4]=h.height=(b.hasDimensionY?s.unscaled.height:p.height)*m;c.opacity=H(n(b.fillAlpha,b.borderAlpha),b.borderAlpha)/100;delete h.stroke;delete h.fill;delete h["stroke-linecap"];return"image"}}});O=function(){this.groups=[];this._idstore={};
this._options={}};C.Annotations=O;f.extend(O.prototype,{reset:function(a,b,c){var d=this.groups,e;this.clear();if(c){e={};for(var h in c)switch(typeof c[h]){case "object":case "function":e["-$"+h]=e["$"+h]=e["+$"+h]=c[h];break;default:e["$"+h]=e["+$"+h]=c[h],e["-$"+h]=-1*c[h]}e=this._literals=e}b&&(this._options=b);if(a&&a.groups&&d)for(c=0;c<a.groups.length;c+=1)d.push(new na(a.groups[c],b,e,this._idstore,this))},getRenderer:function(){return this._renderer},addGroup:function(a){var b=this.getRenderer();
this.groups.push(a=new na(a,this._options,this._literals,this._idstore,this));b&&(a.setup(),a.scale(),a.draw());return a},addItem:function(a,b,c){var d,e=this.getRenderer();"string"===typeof a?d=this._idstore[a]:(c=b,b=a);if(d&&d.addItem){if(!e&&c){f.raiseWarning(this,"04031411430","run","Annotations~addItem()","Cannot draw the shapeif the group has not been drawn. Use Annotations~draw() to draw the group and pass the renderer to it.");return}a=d.addItem(b,c)}else a=this.addGroup({}).addItem(b,c);
return a},draw:function(a){var b=this.groups,c,d;if(b&&(this._renderer=a||this._renderer))for(c=0,d=b.length;c<d;c++)a=b[c],a.setup(),a.scale(),a.draw()},clear:function(){var a=this.groups,b;if(a){for(;b=a.shift();)b.destroy();this.shapesToDraw=[]}},dispose:function(){var a;this.disposing=!0;this.clear();for(a in this)delete this[a];this.disposed=!0},hide:function(a){if(a=this._idstore[a])return a.attrs.visibility="hidden",a.wrapper&&a.wrapper.hide(),a},show:function(a){if(a=this._idstore[a])return a.attrs.visibility=
"",a.wrapper&&a.wrapper.show(),a},update:function(a,b,c){a=this._idstore[a];var d;if(a&&b){if("object"===typeof b)for(d in b.id&&delete b.id,b.type&&delete b.type,b)a.options[(d+"").toLowerCase()]=b[d]+"";else a.options[(b+"").toLowerCase()]=c+"";a.wrapper&&(a.scale(),a.setup(),a.draw());return a}},destroy:function(a){var b=this._idstore[a],c=b.group;b&&"function"===typeof b.destroy&&(c&&c.removeItem(a),b.destroy())},shapesToDraw:[]});f.core.addEventListener("beforeinitialize",function(a){"javascript"===
a.sender.options.renderer&&(a.sender.annotations=new O)});f.core.addEventListener("disposed",function(a){a.sender.annotations&&a.sender.annotations.dispose()});f.addEventListener("internal.animationComplete",function(a){var b=(a=a.sender.annotations)&&a.shapesToDraw,c=b&&b.length,d,e;if(c){for(e=0;e<c;e++)d=b[e],d.queueDraw=!1,d.scale(),d.setup(),d.draw();a.shapesToDraw=[]}});t.addEventListener("rendered",function(a,b){if("javascript"===b.renderer){var c=a.sender,d=c.jsVars||{},e=d.instanceAPI;d.hcObj&&
e&&e.drawAnnotations?(c.showAnnotation||(c.showAnnotation=function(){c.annotations.show.apply(c.annotations,arguments)}),c.hideAnnotation||(c.hideAnnotation=function(){c.annotations.hide.apply(c.annotations,arguments)})):(delete c.showAnnotation,delete c.hideAnnotation)}})}]);
FusionCharts.register("module",["private","modules.renderer.js-base",function(){var f=this,t=f.hcLib,C=t.Raphael,q=f.window,d=q.document,a=t.BLANKSTRING,m=t.createTrendLine,F="https:"===q.location.protocol?"https://export.api3.fusioncharts.com/":"http://export.api3.fusioncharts.com/",c=t.pluck,l=t.getValidValue,b=t.pluckNumber,p=t.getFirstValue,H=t.getDefinedColor,s=t.parseUnsafeString,e=t.FC_CONFIG_STRING,h=t.extend2,k=t.getDashStyle,v=t.parseTooltext,K=t.toPrecision,J=t.regex.dropHash,n=t.HASHSTRING,
N=t.getSentenceCase,B=t.addEvent,U=function(a){return void 0!==a&&null!==a},r=q.Math,ga=t.TOUCH_THRESHOLD_PIXELS,X=t.CLICK_THRESHOLD_PIXELS,aa=r.min,W=r.max,ya=r.abs,va=r.ceil,za=r.floor,ja=r.log,O=r.pow,na=r.sqrt,ma=r.round,M=t.graphics.getColumnColor,T=t.getFirstColor,u=t.setLineHeight,L=t.pluckFontSize,da=t.getFirstAlpha,sa=t.graphics.getDarkColor,ta=t.graphics.getLightColor,S=t.graphics.convertColor,$=t.COLOR_TRANSPARENT,oa=t.POSITION_CENTER,ia=t.POSITION_TOP,Ea=t.POSITION_BOTTOM,fa=t.POSITION_RIGHT,
La=t.POSITION_LEFT,Ba=t.parsexAxisStyles,ha=t.chartAPI,Fa=t.graphics.mapSymbolName,fb=ha.singleseries,Xa=ha.multiseries,xa=t.COMMASTRING,gb=t.STRINGUNDEFINED,Sa=t.ZEROSTRING,Ia=t.ONESTRING,Ra=t.HUNDREDSTRING,Da=t.PXSTRING,pb=t.COMMASPACE,Lb=q.navigator.userAgent.match(/(iPad|iPhone|iPod)/g),Ub={left:"start",right:"end",center:"middle"},Mb=t.BLANKSTRINGPLACEHOLDER,vb=t.BGRATIOSTRING,Eb=t.COLOR_WHITE,rb=t.TESTSTR,Ib=t.graphics.getAngle,tb=t.axisLabelAdder,eb=t.falseFN,Tb=t.NumberFormatter,sb=t.getLinkAction,
Qb=t.getAxisLimits,cb=t.createDialog,A=function(a,b){return 0<a?ja(a)/ja(b||10):null},G=t.hasTouch=void 0!==d.documentElement.ontouchstart,D=t.fireEvent=function(a,b,c,d){t.dem.fire(a,b,c,d)},V={1:"bold",0:"normal"},Z={1:"italic",0:"normal"},ba={1:"underline",0:"none"},Q={font:function(a,b){b.style.fontFamily=a},size:function(a,b){a&&(b.style.fontSize=L(a)+Da)},color:function(b,c,d){c.style.color=b&&b.replace&&b.replace(J,n)||a;d&&(c.color=c.style.color)},bgcolor:function(b,c){c.style.backgroundColor=
b&&b.replace&&b.replace(J,n)||a},bordercolor:function(b,c){c.style.border="1px solid";c.style.borderColor=b&&b.replace&&b.replace(J,n)||a},ishtml:a,leftmargin:function(a,c){c.style.marginLeft=b(a,0)+Da},letterspacing:function(a,c){c.style.letterSpacing=b(a,0)+Da},bold:function(a,b){b.style.fontWeight=V[a]||""},italic:function(a,b){b.style.fontStyle=Z[a]||""},underline:function(a,b){b.style.textDecoration=ba[a]||""}},pa=t.chartPaletteStr={chart2D:{bgColor:"bgColor",bgAlpha:"bgAlpha",bgAngle:"bgAngle",
bgRatio:"bgRatio",canvasBgColor:"canvasBgColor",canvasBaseColor:"canvasBaseColor",divLineColor:"divLineColor",legendBgColor:"legendBgColor",legendBorderColor:"legendBorderColor",toolTipbgColor:"toolTipbgColor",toolTipBorderColor:"toolTipBorderColor",baseFontColor:"baseFontColor",anchorBgColor:"anchorBgColor"},chart3D:{bgColor:"bgColor3D",bgAlpha:"bgAlpha3D",bgAngle:"bgAngle3D",bgRatio:"bgRatio3D",canvasBgColor:"canvasBgColor3D",canvasBaseColor:"canvasBaseColor3D",divLineColor:"divLineColor3D",divLineAlpha:"divLineAlpha3D",
legendBgColor:"legendBgColor3D",legendBorderColor:"legendBorderColor3D",toolTipbgColor:"toolTipbgColor3D",toolTipBorderColor:"toolTipBorderColor3D",baseFontColor:"baseFontColor3D",anchorBgColor:"anchorBgColor3D"}},ua=function(){var a={},b,c=function(){var d,g,e,h,k=0,l,A,m=parseInt(f.core.options.resizeTrackingInterval,10)||300,D;for(d in a)k+=1,g=a[d],e=g.jsVars,l=g.ref,!g.disposed&&(h=l&&l.parentNode)&&(A=l.style)&&(/\%/g.test(A.width)||/\%/g.test(A.height))?(l=h.offsetWidth,D=h.offsetHeight,!e.resizeLocked&&
(l&&e._containerOffsetW!==l||D&&e._containerOffsetH!==D)&&(g.resizeTo&&g.resizeTo(),e._containerOffsetW=l,e._containerOffsetH=D)):(delete a[d],--k);b=k?setTimeout(c,m):clearTimeout(b)};return function(d,g){var e=d.jsVars,h=g||d.ref&&d.ref.parentNode||{};e._containerOffsetW=h.parentNode.offsetWidth;e._containerOffsetH=h.parentNode.offsetHeight;a[d.id]=d;b||(b=setTimeout(c,parseInt(f.core.options.resizeTrackingInterval,10)||300))}}(),Ta={getExternalInterfaceMethods:function(){var a=ha[this.jsVars.type],
a=a&&a.eiMethods,b="saveAsImage,print,exportChart,getXML,hasRendered,signature,cancelExport,getSVGString,lockResize,showChartMessage,",c;if("string"===typeof a)b+=a+xa;else if(void 0!==a||null!==a)for(c in a)b+=c+xa;return b.substr(0,b.length-1)},drawOverlayButton:function(a){var b=this.jsVars,c=b.overlayButton,e,g;if(a&&a.show){c||(c=b.overlayButton=d.createElement("span"),t.dem.listen(c,"click",function(){f.raiseEvent("OverlayButtonClick",a,b.fcObj)}));for(e=a.message?a.message:"Back";c.firstChild;)c.removeChild(c.firstChild);
c.appendChild(d.createTextNode(e));b.overlayButtonMessage=e;e={border:"1px solid "+(a.borderColor?a.borderColor.replace(J,n):"#7f8975"),backgroundColor:a.bgColor?a.bgColor.replace(J,n):"#edefec",fontFamily:a.font?a.font:"Verdana,sans",color:"#"+a.fontColor?a.fontColor:"49563a",fontSize:(a.fontSize?a.fontSize:"10")+Da,padding:(a.padding?a.padding:"3")+Da,fontWeight:0===parseInt(a.bold,10)?"normal":"bold",position:"absolute",top:"0",right:"0",_cursor:"hand",cursor:"pointer"};for(g in e)c.style[g]=e[g];
b.hcObj.container.appendChild(c);b.overlayButtonActive=!0}else c&&(b.overlayButton=c.parentNode.removeChild(c),b.overlayButtonActive=!1,delete b.overlayButtonMessage)},print:function(a){return this.jsVars.hcObj&&this.jsVars.hcObj.hasRendered&&this.jsVars.hcObj.print(a)},exportChart:function(a){var b=this.jsVars.hcObj;return b&&b.options&&b.options.exporting&&b.options.exporting.enabled?b.exportChart(a):!1},getSVGString:function(){return this.jsVars&&this.jsVars.hcObj&&this.jsVars.hcObj.paper&&this.jsVars.hcObj.paper.toSVG()},
resize:function(){var a=this.jsVars,b=a.container,c=a.hcObj;c&&(c&&c.destroy&&c.destroy(),t.createChart(a.fcObj,b,a.type,void 0,void 0,!1,!0),delete a.isResizing)},lockResize:function(a){return"boolean"!==typeof a?!!this.jsVars.resizeLocked:this.jsVars.resizeLocked=a},showChartMessage:function(a,b,c){var d=this.jsVars,g=d.hcObj,e=d.fcObj,h=e.options;d.msgStore[a]&&(a=d.msgStore[a]);b&&g&&g.hasRendered?a?g.showMessage(a,c):g.hideLoading():(g&&g.destroy&&g.destroy(),e._chartMessageImageStyle={imageHAlign:h.baseChartMessageImageHAlign,
imageVAlign:h.baseChartMessageImageVAlign,imageAlpha:h.baseChartMessageImageAlpha,imageScale:h.baseChartMessageImageScale},e._chartMessageStyle={color:h.baseChartMessageColor,fontFamily:h.baseChartMessageFont,fontSize:h.baseChartMessageFontSize},t.createChart(d.fcObj,d.container,d.type,void 0,a));return a},signature:function(){return"FusionCharts/3.4.0 (XT)"}},db=t.HCstub=function(c,d,e,h){c=c.chart;var g=b(c.showborder,1)?b(c.borderthickness,1):0,k=b(c.charttopmargin,h.charttopmargin,15)+g,f=b(c.chartrightmargin,
h.chartrightmargin,15)+g,l=b(c.chartbottommargin,h.chartbottommargin,15)+g,g=b(c.chartleftmargin,h.chartleftmargin,15)+g,A=k+l,m=g+f;e*=.7;d*=.7;A>e&&(k-=(A-e)*k/A,l-=(A-e)*l/A);m>d&&(g-=(m-d)*g/m,f-=(m-d)*f/m);d={_FCconf:{0:{stack:{}},1:{stack:{}},x:{stack:{}},oriCatTmp:[],isSpline:-1!==h.chartInstance.options.chartType.search(/spline/i),noWrap:!1,marginLeftExtraSpace:0,marginRightExtraSpace:0,marginBottomExtraSpace:0,marginTopExtraSpace:0,marimekkoTotal:0},chart:{alignTicks:!1,ignoreHiddenSeries:!1,
events:{},reflow:!1,spacingTop:k,spacingRight:f,spacingBottom:l,spacingLeft:g,marginTop:k,marginRight:f,marginBottom:l,marginLeft:g,borderRadius:0,plotBackgroundColor:"#FFFFFF",textDirection:"1"===c.hasrtltext?"rtl":"",style:{},animation:b(c.defaultanimation,c.animation,1)?{duration:500*b(c.animationduration,1)}:!1},colors:"AFD8F8 F6BD0F 8BBA00 FF8E46 008E8E D64646 8E468E 588526 B3AA00 008ED6 9D080D A186BE CC6600 FDC689 ABA000 F26D7D FFF200 0054A6 F7941C CC3300 006600 663300 6DCFF6".split(" "),credits:{href:t.CREDIT_HREF,
text:t.CREDIT_STRING,enabled:!1},global:{},labels:{items:[]},lang:{},legend:{enabled:!0,symbolWidth:12,borderRadius:1,backgroundColor:"#FFFFFF",initialItemX:0,title:{text:a,x:0,y:0,padding:2},scroll:{},itemStyle:{}},loading:{},plotOptions:{series:{pointPadding:0,borderColor:"#333333",events:{},animation:b(c.animation,c.defaultanimation,1)?{duration:1E3*b(c.animationduration,1)}:!1,states:{hover:{enabled:!1},select:{enabled:!1}},dataLabels:{enabled:!0,color:"#555555",style:{},formatter:function(){return this.point.showPercentValues?
h.numberFormatter.percentValue(this.percentage):this.point.displayValue}},point:{events:{}}},area:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},radar:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},areaspline:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},line:{shadow:!0,states:{hover:{enabled:!1}},marker:{lineWidth:1,
radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},scatter:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},bubble:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},spline:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},pie:{size:"80%",allowPointSelect:!0,cursor:"pointer",point:{events:{legendItemClick:c.interactivelegend===
Sa?eb:function(){this.slice()}}}},pie3d:{size:"80%",allowPointSelect:!0,cursor:"pointer",point:{events:{legendItemClick:c.interactivelegend===Sa?eb:function(){this.slice()}}}},column:{},floatedcolumn:{},column3d:{},bar:{},bar3d:{}},point:{},series:[],subtitle:{text:a,style:{}},symbols:[],title:{text:a,style:{}},toolbar:{},tooltip:{style:{}},xAxis:{steppedLabels:{style:{}},labels:{x:0,style:{},enabled:!1},lineWidth:0,plotLines:[],plotBands:[],title:{style:{},text:a},tickWidth:0,scroll:{enabled:!1}},
yAxis:[{startOnTick:!1,endOnTick:!1,title:{style:{},text:a},tickLength:0,labels:{x:0,style:{}},plotBands:[],plotLines:[]},{tickLength:0,gridLineWidth:0,startOnTick:!1,endOnTick:!1,title:{style:{},text:a},labels:{x:0,style:{},enabled:!1,formatter:function(){return this.value!==Mb?this.value:a}},opposite:!0,plotBands:[],plotLines:[]}],exporting:{buttons:{exportButton:{},printButton:{enabled:!1}}}};c.palettecolors&&"string"===typeof c.palettecolors&&(d.colors=c.palettecolors.split(/\s*\,\s*/));return h.hcJSON=
d},wa=function(a,b,c,d,g){var e=[],h=!1;d=d||0;for(g=g||{max:Number.MIN_VALUE,min:Number.MAX_VALUE};d<a.length;++d)if(h)if(isNaN(a[d].y)||null===a[d].y){if(!c)break}else e.push({index:d,y:a[d].y});else isNaN(a[d].y)||null===a[d].y||(h=!0,e.push({index:d,y:a[d].y}));if(2<e.length){var h=g,k={},f,l,A;for(l=0;l<e.length;++l)f=e[l].index,k["D"+f]=0;for(f=0;10>f;++f)for(l=0;l<e.length;++l)A=0===l?(3*(e[l+1].y-e[l].y)-k["D"+e[l+1].index])/2:l===e.length-1?(3*(e[l].y-e[l-1].y)-k["D"+e[l-1].index])/2:(3*
(e[l+1].y-e[l-1].y)-k["D"+e[l+1].index]-k["D"+e[l-1].index])/4,k["D"+e[l].index]=A;f=ma(b/(e.length-1));for(l=1;l<e.length;++l){A=h;for(var m=void 0,D=void 0,G=void 0,s=void 0,p=D=void 0,n=void 0,v=void 0,r=void 0,r=void 0,m=k["D"+e[0].index],D=k["D"+e[l].index],G=e[0].y,s=3*(e[l].y-e[0].y)-2*m-D,D=2*(e[0].y-e[l].y)+m+D,p=A.max,n=A.min,v=0;v<=f;v++)r=v/f,r=G+m*r+s*r*r+D*r*r*r,r<n&&(n=r),r>p&&(p=r);A.max=p;A.min=n}}d<a.length&&!c&&wa(a,b,c,d,g);return g},ab=t.placeVerticalAxis=function(c,d,h,k,g,f,
A,m,D,G){var s=h[e],p=s.smartLabel,n,R,v,r,q=0,u=s.marginRightExtraSpace,t=s.marginLeftExtraSpace,V={},Z={},F={},ba=c.plotLines,B=c.plotBands,s=d.verticalAxisValuesPadding,Q=isNaN(d.fixedValuesPadding)?0:d.fixedValuesPadding,C=s-Q,ua=d.verticalAxisValuesPadding,pa=d.verticalAxisNamePadding,K=d.verticalAxisNameWidth,Ta=d.rotateVerticalAxisName&&String(d.rotateVerticalAxisName).toLowerCase(),wa="none"!==Ta,db=c.offset?c.offset:0,J=0,ab=0,H=0,Ha=0,Ga=0,Aa=0,jb=0,ca,O,N,la,s=2,jb=A?u+5:t+4,X=W(b(h.chart.plotBorderWidth,
1),0),M=c.showLine?c.lineThickness:X,ub=function(a,b){var c,g;a&&a.label&&void 0!==l(a.label.text)&&(N=a.label,N.style&&N.style!==O&&(O=N.style,p.setStyle(O)),n=p.getOriSize(a.label.text),g=(c=n.width)?c+2:0,a.isGrid?(V[b]={width:c,height:n.height,label:N},Ha<=g&&(Ha=g,d.lYLblIdx=b)):a.isTrend&&(A&&N.textAlign===La||N.textAlign===fa?(Z[b]={width:c,height:n.height,label:N},Ga=W(Ga,g)):(F[b]={width:c,height:n.height,label:N},Aa=W(Aa,g))))},L=function(b,d){var e,w=d?q:q+b;e=c.title.style;R=R||{};if(0<
w)return wa?(w<R.height&&(p.setStyle(e),R=p.getSmartText(c.title.text,g,w)),e=R.height):(w<R.width&&(p.setStyle(e),R=p.getSmartText(c.title.text,w,g)),e=R.width),c.title._actualWidth=e,c.title.text=R.text,R.tooltext&&(c.title.originalText=R.tooltext),d?w-e+b:w-e;c.title.text=a;return 0},Va=function(a,b,c){for(var d in a)a[d].label.x=b,a[d].label.y=c},H=0;for(ca=B.length;H<ca;H+=1)ub(B[H],H);H=0;for(ca=ba.length;H<ca;H+=1)ub(ba[H],H);c.title&&c.title.text!=a&&(O=c.title.style,p.setStyle(O),v=p.getOriSize(rb).height,
c.title._originalText=c.title.text,wa?(c.title.rotation="cw"===Ta?90:270,R=p.getSmartText(c.title.text,g,f),q=R.height,r=v):(c.title.rotation=0,R=p.getSmartText(c.title.text,void 0!==K?K:f,g),q=R.width,r=20));0<Aa&&(ab=Aa+ua);D&&(k=b(k.chart.maxlabelwidthpercent,0),1<=k&&100>=k&&(D=k*D/100,Ha>D&&(Ha=D)));J=W(Ga,Ha);J+=J?C+Q:0;0<q&&(J+=q+pa+jb);(function(){if(ab+J>f){la=ab+J-f;if(ab){if(ua>=la){ua-=la;return}la-=ua;ua=0}if(C+pa>=la)pa>=la?pa-=la:(C-=la-pa,pa=0);else{la-=C+pa;pa=C=0;if(20<Aa)if(Ga>
Ha){if(Aa-Ga>=la){Aa-=la;return}if(Ga-Aa>=la){Ga-=la;return}Ga>Aa?(la-=Ga-Aa,Ga=Aa):(la-=Aa-Ga,Aa=Ga);if(2*(Ga-Ha)>=la){Aa-=la/2;Ga-=la/2;return}la-=2*(Ga-Ha);Aa=Ga=Ha}else{if(Aa-20>=la){Aa-=la;return}la-=Aa-20;Aa=20}if(Ga>Ha){if(Ga-Ha>=la){Ga-=la;return}la-=Ga-Ha;Ga=Ha}q-r>=la?q-=la:(la-=q-r,q=r,Aa>=la?Aa=0:(la-=Aa,Aa=0,q>=la?q=0:(la-=q,q=0,Ha>=la&&(Ga=Ha-=la))))}}})();H=function(b,c){var d,e=0,z=c?Aa-2:Aa+b-2,w;if(0<Aa){for(w in F)N=F[w].label,F[w].width>z?(N.style&&N.style!==O&&(O=N.style,p.setStyle(O)),
d=p.getSmartText(N.text,z,g,!0),N.text=d.text,d.tooltext&&(N.originalText=d.tooltext),F[w].height=d.height,e=W(e,d.width)):e=W(e,F[w].width);return c?z-e+b:z-e}for(w in F)F[w].label.text=a;return 0}(0,!0);H=L(H,!0);H=function(b){var c=0,d=W(Ha,Ga)+b-2,e;if(0<d){for(e in V)N=V[e].label,V[e].width>d?(N.style&&N.style!==O&&(O=N.style,p.setStyle(O)),b=p.getSmartText(N.text,d,g,!0),N.text=b.text,b.tooltext&&(N.originalText=b.tooltext),V[e].height=b.height,c=W(c,b.width)):c=W(c,V[e].width);for(e in Z)N=
Z[e].label,Z[e].width>d?(N.style&&N.style!==O&&(O=N.style,p.setStyle(O)),b=p.getSmartText(N.text,d,g,!0),N.text=b.text,b.tooltext&&(N.originalText=b.tooltext),Z[e].height=b.height,c=W(c,b.width)):c=W(c,Z[e].width);return d-c}for(e in V)V[e].label.text=a;for(e in Z)Z[e].label.text=a;return 0}(H);H=L(H);D=d.verticalAxisNamePadding-pa;H&&D&&(H>D?(pa+=D,H-=D):(pa+=H,H=0));D=d.verticalAxisValuesPadding-(C+Q);H&&D&&(H>D?(C+=D,H-=D):(C+=H,H=0));D=d.verticalAxisValuesPadding-ua;H&&D&&(H>D?(ua+=D,H-=D):(ua+=
H,H=0));0<Aa&&(ab=Aa+ua);J=W(Ga,Ha);J+=J?C+Q:0;0<q&&(J+=q+pa+jb);D=W(Ga,Ha);D+=0<D?C+Q:0;0<q?(wa?q<R.height&&(R=p.getSmartText(c.title.text,g,q)):(q<R.width&&(R=p.getSmartText(c.title.text,q,g)),c.title.y=-((R.height-v)/2)),c.title.text=R.text,R.tooltext&&(c.title.originalText=R.tooltext),c.title.margin=D+pa+jb+(wa?q-v:q/2)):c.title.text=a;v=-(C+Q+db+t+2);u=u+ua+db+2;jb=W(Ga,Ha);c.labels.style&&(s=.35*parseInt(c.labels.style.fontSize,10));A?(0<Aa&&Va(F,v,s),0<jb&&(Va(V,u,s),Va(Z,u,s))):(0<Aa&&Va(F,
u,s),0<jb&&(Va(V,v,s),Va(Z,v,s)));c.labels._textY=s;c.labels._righttX=u;c.labels._leftX=v;J=J||M;ab=ab||(m?0:X);G?(h.chart.marginLeft+=A?ab:J-G,h.chart.marginRight+=A?J-G:ab):(h.chart.marginLeft+=A?ab:J,h.chart.marginRight+=A?J:ab);return ab+J},Aa=t.titleSpaceManager=function(c,d,h,k){var g=this.snapLiterals||(this.snapLiterals={}),f=d.chart,l=s(f.caption);d=s(f.subcaption);var A=f=b(f.captionpadding,10),m=c[e],D=this.smartLabel||m.smartLabel,G=!1,p=0,n,R,v=0,r=0,q=0,u=0,t=c.title,V=c.subtitle,Z=
W(b(c.chart.plotBorderWidth,1),0),F=0,ba=0;if(3<k){f<Z&&(f=Z+2);l!==a&&(n=t.style,q=va(b(parseFloat(n.fontHeight,10),parseFloat(n.lineHeight,10),12)));d!==a&&(R=V.style,u=b(parseInt(R.fontHeight,10),parseInt(R.lineHeight,10),12));if(0<q||0<u)k=W(k,0),p=q+u+f,p>k?(v=k-p,G=!0,v<f?f=W(v,5):(v-=f,f=0,u>v?(r=u-v+10,u=0,V._originalText=V.text,V.text=""):(v-=u,u=0,q>v&&(r=q-v)))):r=k-p,0<q&&(D.setStyle(n),q+=r,k=D.getSmartText(l,h,q),r=q-k.height,t.height=q=k.height,t.text=k.text,k.tooltext&&(t.originalText=
k.tooltext),F=k.width),0<u&&(D.setStyle(R),u+=r,h=D.getSmartText(d,h,u),r=u-h.height,u=h.height,V.text=h.text,V.height=h.height,h.tooltext&&(V.originalText=h.tooltext),ba=h.width),G&&0<r&&(f+=aa(A-f,r)),p=q+u+f;p=p||Z;t.isOnTop?(g.captionstarty=c.chart.marginTop,c.chart.marginTop+=p):(c.chart.marginBottom+=p,g.captionstarty=t.y=m.height-c.chart.marginBottom+f,c.chart.marginTop+=5,p+=5);t._captionWidth=F;V._subCaptionWidth=ba;t._lineHeight=q;V._lineHeight=u}else V&&(V.text=""),t&&(t.text="");return p},
la=t.stepYAxisValues=function(b,c,d,h,g,k){var f=0,l=h.plotLines,A=[],m=0,D=h.plotLines.length,G="W";c=c[e].smartLabel;for(var p=parseFloat(L(d.basefontsize,10)),s,v,n=0;f<D;f+=1)d=l[f],d.isGrid&&d.label&&d.label.text&&(k&&(v=d.label.text.match(/<br \/>/gi))&&(n=W(n,v.length),v=null),A.push(d),0===d.value&&(m=A.length-1));k&&0<n&&(G+=Array(n+1).join("<br />W"));if(D=A.length)if(h.labels.style?c.setStyle(h.labels.style):A[0].label&&A[0].label.style&&c.setStyle(h.labels.style),f=c.getOriSize(G).height,
k||(f+=.4*p),b/=D-1,b<f){k=W(1,va(f/b));for(f=b=m;f<D;f+=1)d=A[f],f===g&&((f-b)%k&&s&&(s.label.text=""),b=g),d&&d.label&&((f-b)%k?d.label.text=a:s=d);for(f=b=m;0<=f;--f)d=A[f],f===g&&((b-f)%k&&s&&(s.label.text=""),b=g),d&&d.label&&((b-f)%k?d.label.text=a:s=d)}},ca=t.placeHorizontalAxis=function(c,d,h,k,g,f,A){var m=h[e],D=k&&k.chart||{},G,s,p,v,n,r,q,u,t,V,Z,F,ba=0,B=0,Q=10,C=1,ua=0,pa=0,K=0,Ta=0,wa=!1,J=!1,H=!1,db=b(D.labelstep,0),Ga=b(D.xaxisminlabelwidth,0),ab=b(D.maxlabelheight,f),Aa=d.labelDisplay,
Ha=d.rotateLabels,la=d.horizontalLabelPadding,N=m.marginBottomExtraSpace,jb=h.chart.marginLeft,O=h.chart.marginRight,ca=m.smartLabel,X=m.plotBorderThickness,M=d.catCount,ub=d.slantLabels,L=g/(c.max-c.min),Va=0,Pa=0,U=0,Rb=0,ga=k&&k.chart||{},S=1E3*b(ga.updateinterval,ga.refreshinterval),pc=ga.datastreamurl,qc=Boolean(this.realtimeEnabled&&S&&void 0!==pc),Bb,T,$,da,ma,Da,ja,ta,ha,sa,Ua,Ia,Za,Wa,Ca,ia,Qa,Ba,xa,Ra,ya,Fa,Sa,ob,$a,Nb=null,Wb=null,Ma,Xa,fb,Vb,dc,ec,hc,fc,Ob,qa,Xb,gc,Ka=[],Ab=[],kb,Fb=0,
Gb=0,ic,pb,wb,oc,cb,vb,lb,tb=d.horizontalAxisNamePadding,Db=0,Ya=d.staggerLines,Pb=Va,Lb=!1,rb=!1,Ib=0,tc,Hb,Sb,ac,Eb,sb,Qb,Ub,Mb,eb,Tb,Qc,uc,Gc,Lc,Ac,Rc,Hc,Mc,vc;Xb=c.plotLines;Q=qa=0;for(lb=Xb.length;qa<lb;qa+=1)(s=Xb[qa])&&s.label&&!s.isTrend&&Q<parseFloat(s.label.style.lineHeight,10)&&(Q=parseInt(s.label.style.lineHeight,10),r=s.label.style);if(r||c.labels.style)r=r||c.labels.style,ca.setStyle(r),u=ca.getOriSize("W"),Q=ca.lineHeight,q=u.width+4,F=ca.getOriSize("WWW").width+4;c.title&&c.title.text!=
a&&(r=c.title.style,ca.setStyle(r),pa=ca.getOriSize("W").height,c.title.rotation=0,v=ca.getSmartText(c.title.text,g,f),B=v.height);jb!=parseInt(D.chartleftmargin,10)&&(hc=!0);O!=parseInt(D.chartrightmargin,10)&&(fc=!0);void 0!==D.canvaspadding&&""!==D.canvaspadding&&(rb=!0);Ob=g-A;switch(Aa){case "none":wa=H=!0;Ha&&(ba=ub?300:270,u=Q,Q=q,q=u);break;case "rotate":ba=ub?300:270;u=Q;Q=q;q=u;wa=!0;break;case "stagger":J=wa=!0;t=za((f-pa)/Q);t<Ya&&(Ya=t);break;default:Ha&&(ba=ub?300:270,u=Q,Q=q,q=u)}m.isBar&&
(wa=!0);qa=0;Xb=c.plotLines;if(typeof h._FCconf.isXYPlot!==gb||m.isBar){Bb={};Da=ma=0;sa=ha=null;Ba={};Lb=!0;L=g/(c.max-c.min);ac=function(b,d,g){var e,w,k,f,l,I;I=b.plotObj;l=b.labelTextWidth;l||(n=I.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),l=ca.getOriSize(n.text).width+4,b.oriWidth=l,l>T&&(l=T),b.labelTextWidth=l,b.leftEdge=I.value*L-l/2,b.rightEdge=I.value*L+l/2,g&&(l=aa(l,2*(s.value-c.min)*L+h.chart.marginLeft),b.labelTextWidth=l));if(typeof d!==gb){if(g=d.plotObj,n=g.label,n.style&&
n.style!==r&&(r=n.style,ca.setStyle(r)),d.oriWidth?k=d.oriWidth:(k=ca.getOriSize(n.text).width+4,d.oriWidth=k),k>T&&(k=T),d.labelTextWidth=k,d.leftEdge=g.value*L-k/2,d.rightEdge=g.value*L+k/2,e=I.value*L,w=e+l/2,f=g.value*L,k=f-k/2,k<w)if(e+q<f-q)w-=k,e=f-e,b.labelTextWidth=w>e?aa(l,e):W(q,l-w/2),d.labelTextWidth=2*(e-b.labelTextWidth/2),b.leftEdge=I.value*L-b.labelTextWidth/2,b.rightEdge=I.value*L+b.labelTextWidth/2,d.leftEdge=g.value*L-d.labelTextWidth/2,d.rightEdge=g.value*L+d.labelTextWidth/2;
else return d.labelTextWidth=0,g.label.text=a,!1}else g&&(l=aa(l,2*(c.max-s.value)*L+h.chart.marginRight),b.labelTextWidth=l,b.leftEdge=I.value*L-l/2,b.rightEdge=I.value*L+l/2);b.nextCat=d;return!0};J?Ya>pb?Ya=pb:2>Ya&&(Ya=2):Ya=1;for(lb=Xb.length;qa<lb;qa+=1)(s=Xb[qa])&&s.label&&typeof s.label.text!==gb&&(s.isGrid?(da={plotObj:s},s.isCat&&(ta=qa%Ya,Bb[ta]||(Bb[ta]=[]),ha?(sa=da,Bb[ta].push(sa)):(sa=ha=da,Bb[ta].push(ha))),Ka.push(da)):s.isTrend&&Ab.push({plotObj:s}));gc=c.plotBands;qa=0;for(lb=gc.length;qa<
lb;qa+=1)(s=gc[qa])&&s.isTrend&&s.label&&typeof s.label.text!==gb&&Ab.push({plotObj:s});if(Ka.length)if(!H&&!ba)if(m.distributedColumns)for(qa=0,lb=Ka.length;qa<lb;qa+=1)ia=Ka[qa],Qa=qa%Ya,s=ia.plotObj,s.label&&s.isCat&&(0<=qa-Ya?(Ia=Ka[qa-Ya],Sa=Ia.plotObj.value*L+Ia.plotObj._weight*L/2):(Ia=null,Sa=c.min*L-jb),qa+Ya<lb?(Ua=Ka[qa+Ya],ob=Ua.plotObj.value*L-Ua.plotObj._weight*L/2):(Ua=null,ob=c.max*L+O),n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),Za=s.value*L,Mb=Za-s._weight*L/2,Ub=
Za+s._weight*L/2,1<Ya?(Ra=Mb-Sa,ya=Ub+ob,$a=Ub-Mb+aa(Ra,ya)):$a=Ub-Mb,n=s.label,n.style&&n.style!==r&&ca.setStyle(n.style),$a<q&&q<ca.getOriSize(n.text).width?(s.label.text=a,ia.labelTextWidth=0):(ia.labelTextWidth=$a,G=ca.getSmartText(n.text,$a-4,f,wa),$a=G.width+4,ia.labelTextWidth=$a,Rb=W(Rb,G.height)));else{pb=Ka.length;ic=Ka.length-1;(kb=(Ka[ic].plotObj.value-Ka[0].plotObj.value)*L)?(T=.1*kb,$=W(.2*kb,kb/pb)):$=T=g;for(p in Bb)for(qa=0,Wa=Bb[p].length;qa<Wa;){for(ja=qa+1;!ac(Bb[p][qa],Bb[p][ja]);)ja+=
1;qa=ja}ha&&(Da=(ha.plotObj.value-c.min)*L+jb-ha.labelTextWidth/2);s=Ka[0].plotObj;ha&&s===ha.plotObj||(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),Z=ca.getOriSize(n.text).width+4,Za=(s.value-c.min)*L+jb,ha&&(Ma=Da-Za,Z=Ma<Z&&Ma>q/2?2*Ma:0),Ka[0].labelTextWidth=Z,0<Z&&(u=Za-Z/2),u<Da&&(Da=u));sa&&(Z=sa.labelTextWidth,ma=(c.max-sa.plotObj.value)*L+O-Z/2);s=Ka[ic].plotObj;sa&&s===sa.plotObj||(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),Z=ca.getOriSize(n.text).width+4,Za=
(c.max-s.value)*L+O,sa&&(Ma=Za-ma,Z=Ma<Z&&Ma>q/2?2*Ma:0),Ka[ic].labelTextWidth=Z,0<Z&&(u=Za-Z/2),u<ma&&(ma=u));Fb=0>Da?-Da:0;Gb=0>ma?-ma:0;vb=Fb+Gb;if(0<vb)for(p in Ob>vb?(Ca=(Ca=Gb*g/(Gb+g))?Ca+4:0,h.chart.marginRight+=Ca,g-=Ca,Ca=(Ca=Fb*g/(Fb+g))?Ca+4:0,h.chart.marginLeft+=Ca,g-=Ca,L=g/(c.max-c.min)):Fb<Gb?Ob>=Gb&&fc?(Ca=(Ca=Gb*g/(Gb+g))?Ca+4:0,h.chart.marginRight+=Ca,g-=Ca,L=g/(c.max-c.min)):hc&&(Ca=(Ca=Fb*g/(Fb+g))?Ca+4:0,h.chart.marginLeft+=Ca,g-=Ca,L=g/(c.max-c.min)):Ob>=Fb&&hc?(Ca=(Ca=Fb*g/
(Fb+g))?Ca+4:0,h.chart.marginLeft+=Ca,g-=Ca,L=g/(c.max-c.min)):fc&&(Ca=(Ca=Gb*g/(Gb+g))?Ca+4:0,h.chart.marginRight+=Ca,g-=Ca,L=g/(c.max-c.min)),O=h.chart.marginRight,jb=h.chart.marginLeft,kb=(Ka[ic].plotObj.value-Ka[0].plotObj.value)*L,T=.1*kb,$=W(.2*kb,kb/pb),Bb){qa=0;for(Wa=Bb[p].length;qa<Wa;){for(ja=qa+1;!ac(Bb[p][qa],Bb[p][ja],!0);)ja+=1;qa=ja}p+=1}qa=0;for(lb=Ka.length;qa<lb;qa+=1)if(ia=Ka[qa],Qa=qa%Ya,s=ia.plotObj,s.label)if(s.isCat)ia.labelTextWidth&&(Ba[Qa]=ia);else{Ua=(Ia=Ba[Qa])?Ia.nextCat:
Bb[Qa]?Bb[Qa][0]:null;xa=null;if(qa>=Ya)for(Wb=qa-Ya,xa=Ka[Wb];!xa.labelTextWidth;)if(Wb>=Ya)Wb-=Ya,xa=Ka[Wb];else{xa=null;break}Sa=xa?xa.rightEdge:c.min*L-jb;ob=Ua?Ua.leftEdge:c.max*L+O;n=s.label;n.style&&n.style!==r&&(r=n.style,ca.setStyle(r));Z=ca.getOriSize(n.text).width+4;ec=s.value*L-Z/2;if(m.isBar&&qa==lb-1&&xa)Sa>ec&&(xa.plotObj.label.text=a,xa.labelTextWidth=0,Sa=xa.leftEdge);else if(Sa>ec||ob<ec+Z){s.label.text=a;ia.labelTextWidth=0;continue}Sa=W(Sa,ec);Za=s.value*L;$a=2*aa(Za-Sa,ob-Za);
$a.toFixed&&($a=$a.toFixed(2));n=s.label;n.style&&n.style!==r&&ca.setStyle(n.style);$a<q&&q<ca.getOriSize(n.text).width?(s.label.text=a,ia.labelTextWidth=0):(ia.labelTextWidth=$a,G=ca.getSmartText(n.text,$a-4,f,wa),$a=G.width+4,ia.labelTextWidth=$a,ia.leftEdge=Za-$a/2,ia.rightEdge=Za+$a/2,Rb=W(Rb,G.height))}xa=Fa=null;qa=0;for(lb=Ka.length;qa<lb;qa+=1)if(ia=Ka[qa],s=ia.plotObj,Qa=qa%Ya,s.isCat&&ia.labelTextWidth){xa=Fa=null;Za=s.value*L;if(qa>=Ya)for(Wb=qa-Ya,xa=Ka[Wb];!xa.labelTextWidth;)if(Wb>Ya)Wb-=
Ya,xa=Ka[Wb];else{xa=null;break}Ra=xa?Za-xa.rightEdge:Za-c.min*L+h.chart.marginLeft;if(qa+Ya<lb)for(Nb=qa+Ya,Fa=Ka[Nb];!Fa.labelTextWidth;)if(Nb+Ya<lb-1)Nb+=Ya,Fa=Ka[Nb];else{Fa=null;break}ya=Fa?Fa.leftEdge-Za:c.max*L+h.chart.marginRight-Za;$a=2*aa(Ra,ya);$a>$&&($a=$);$a>ia.oriWidth&&($a=ia.oriWidth);ia.labelTextWidth=$a;n=s.label;n.style&&n.style!==r&&ca.setStyle(n.style);G=ca.getSmartText(n.text,$a-4,f,wa);ia.labelTextWidth=G.width+4;Rb=W(Rb,G.height);ia.rightEdge=Za+ia.labelTextWidth/2}}else if(ba)for(qa=
0,lb=Ka.length;qa<lb;qa+=1)if((s=Ka[qa].plotObj)&&s.label&&s.label.text){n=s.label;n.style&&n.style!==r&&(r=n.style,ca.setStyle(r));p=1;if(qa+p<lb)for(eb=Ka[p+qa].plotObj;eb&&(eb.value-s.value)*L<q;)if(s.isCat){if(eb.label){eb.label.text=a;p+=1;if(p+qa>=lb-1)break;eb=Xb[p+qa].plotObj}}else if(eb.isCat){s.label.text=a;s=eb;qa+=p-1;n=s.label;n.style&&n.style!==r&&(r=n.style,ca.setStyle(r));break}U=W(U,ca.getOriSize(n.text).width+4)}p=0;for(lb=Ab.length;p<lb;p+=1)(s=Ab[p].plotObj)&&s.label&&void 0!==
l(s.label.text)&&(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),G=ca.getOriSize(n.text),n.verticalAlign===Ea?Va=W(Va,G.height):Pa=W(Pa,G.height))}else{for(lb=Xb.length;qa<lb;qa+=1)(s=Xb[qa])&&(s.isGrid?Ka.push(s):s.isTrend&&Ab.push(s));gc=c.plotBands;qa=0;for(lb=gc.length;qa<lb;qa+=1)(s=gc[qa])&&Ab.push(s);ic=Ka.length-1;pb=Ka.length;J&&(Ya>pb?Ya=pb:2>Ya&&(Ya=2));if(pb)for(c.scroll&&c.scroll.viewPortMin&&c.scroll.viewPortMax?(Vb=c.scroll.viewPortMin,dc=c.scroll.viewPortMax,fc=hc=!1):
(Vb=c.min,dc=c.max),kb=(Ka[ic].value-Ka[0].value)*L,wb=Eb=kb/(M-1),oc=(Ka[0].value-Vb)*L,cb=(dc-Ka[ic].value)*L,"auto"===Aa?wb<F&&(ba=ub?300:270,u=Q,Q=q,q=u,wa=!0):"stagger"===Aa&&(wb*=Ya),"line"!==this.defaultSeriesType&&("area"===this.defaultSeriesType?m.drawFullAreaBorder&&(X>oc&&(Vb=c.min-=X/(2*L),oc+=(Ka[0].value-Vb)*L),X>cb&&(dc=c.max+=X/(2*L),cb+=(dc-Ka[ic].value)*L)):(X>oc&&(Vb=c.min-=X/(2*L),oc+=(Ka[0].value-Vb)*L),X>cb&&(dc=c.max+=X/(2*L),cb+=(dc-Ka[ic].value)*L))),q<Ga&&(q=Ga),C=J||H?W(1,
db):W(1,db,va(q/wb)),m.x&&(m.x.stepValue=C),wb*=C,V=2*(oc+jb),(n=Xb[0].label)&&n.text&&(n.style&&ca.setStyle(n.style),Z=270===ba?aa(wb,ca.getOriSize(n.text).height+4):aa(wb,ca.getOriSize(n.text).width+4),Z>V&&(H||(Fb=(Z-V)/2),hc||(rb&&(Fb=0),wb-=Fb/(M-1),Sb=wb*(M-1),L=wb,tc=(kb-Sb)/L,dc=c.max+=tc,Vb=c.min-=tc,Fb=0,kb=Sb,oc=(Ka[0].value-Vb)*L,cb=(dc-Ka[ic].value)*L))),V=2*(cb+O),(n=Xb[ic].label)&&n.text&&(n.style&&ca.setStyle(n.style),Z=270===ba?aa(wb,ca.getOriSize(n.text).height+4):aa(wb,ca.getOriSize(n.text).width+
4),Z>V&&(H||(Gb=(Z-V)/2),fc||(rb&&(Gb=0),wb-=Gb/(M-1),Sb=wb*(M-1),L=wb,tc=(kb-Sb)/L,Gb=0,kb=Sb,oc=(Ka[0].value-Vb)*L,cb=(dc-Ka[ic].value)*L))),vb=Fb+Gb,0<vb&&(Ob>vb?(Ca=(Ca=Gb*g/(Gb+g))?Ca+4:0,h.chart.marginRight+=Ca,g-=Ca,Ca=(Ca=Fb*g/(Fb+g))?Ca+4:0,h.chart.marginLeft+=Ca,g-=Ca,L=g/(c.max-c.min)):Fb<Gb?Ob>=Gb&&fc?(Ca=(Ca=Gb*g/(Gb+g))?Ca+4:0,h.chart.marginRight+=Ca,g-=Ca,L=g/(c.max-c.min)):hc&&(Ca=(Ca=Fb*g/(Fb+g))?Ca+4:0,h.chart.marginLeft+=Ca,g-=Ca,L=g/(c.max-c.min)):Ob>=Fb&&hc?(Ca=(Ca=Fb*g/(Fb+g))?
Ca+4:0,h.chart.marginLeft+=Ca,g-=Ca,L=g/(c.max-c.min)):fc&&(Ca=(Ca=Gb*g/(Gb+g))?Ca+4:0,h.chart.marginRight+=Ca,g-=Ca,L=g/(c.max-c.min)),kb=(Ka[ic].value-Ka[0].value)*L,wb=kb/(M-1),J&&(wb*=Ya),C=J||H?W(1,db):ba?W(1,db,va(Q/wb)):W(1,db,va(q/wb)),m.x&&(m.x.stepValue=C),wb*=C),p=0;p<pb;p+=1){s=Ka[p];if(p%C&&s.label){if(s.stepped=!0,s.label.style=c.steppedLabels.style,!qc)continue}else s.stepped=!1;s&&s.label&&void 0!==l(s.label.text)&&(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),ba&&H?
(G=ca.getOriSize(n.text),U=W(U,G.width+4),Rb=W(Rb,G.height)):H||(G=ba||J?ca.getOriSize(n.text):ca.getSmartText(n.text,wb-4,f,wa),U=W(U,G.width+4),Rb=W(Rb,G.height)))}p=0;for(lb=Ab.length;p<lb;p+=1)(s=Ab[p])&&s.label&&void 0!==l(s.label.text)&&(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),G=ca.getOriSize(n.text),n.verticalAlign===Ea?Va=W(Va,G.height):Pa=W(Pa,G.height));c.scroll&&c.scroll.enabled&&!ba&&!H&&(tc=U/2,h.chart.marginLeft<tc&&(Hb=tc-h.chart.marginLeft,Ob>Hb&&(g-=Hb,Ob-=Hb,h.chart.marginLeft+=
Hb)),h.chart.marginRight<tc&&(Hb=tc-h.chart.marginRight,Ob>Hb&&(g-=Hb,Ob-=Hb,h.chart.marginRight+=Hb)))}H?(Db=Q,ba&&(Db=U)):Db=ba?U:J?Ya*Rb:Rb;0<Db&&(Db+la>ab&&(Db=ab-la,Ya=Math.floor(Db/Rb)),Pb+=la+Db);0<B&&(Pb+=B+tb);Xa=la-4;fb=Pa+Pb+2;u=0;fb>f&&(Ma=fb-f,tb>Ma?(tb-=Ma,Ma=0):(Ma-=tb,tb=0,Xa>Ma?(Xa-=Ma,Ma=0):(Ma-=Xa,Xa=0),la=Xa+4),Pa>Ma?(Pa-=Ma,Ma=0):(0<Pa&&(Ma-=Pa,Pa=0),0<Ma&&(Va>Ma?(Va-=Ma,Ma=0):(0<Va&&(Ma-=Va,Va=0),0<Ma&&((u=B-pa)>Ma?(B-=Ma,Ma=0):(Ma-=u,B=pa,0<Ma&&((u=Db-Q)>Ma?(Db-=Ma,Ma=0):(Ma-=
u,Db=Q,0<Ma&&(Ma-=B+tb,B=0,0<Ma&&(Ma-=Db,Db=0,0<Ma&&(la-=Ma)))))))))));la+=N;Tb=m.is3d?-h.chart.xDepth:0;Qc=Db+la;Ac=Tb;Rc=.5*Q;ua=Q+la;lb=Ka.length;K=0;if(Lb)if(ba)for(vc=fa,uc=ub?la+8:la+4,lb=Ka.length,p=0;p<lb;p+=1)(s=Ka[p].plotObj)&&s.label&&void 0!==l(s.label.text)&&(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),qa=1,G=ca.getSmartText(n.text,Db-4,q,wa),n.text=G.text,G.tooltext&&(n.originalText=G.tooltext),Ac=Tb+Rc/2,n.y=uc,n.x=Ac,n.rotation=ba,n.textAlign=vc,K+=1);else for(Gc=Db,
vc=oa,uc=ua,p=0;p<lb;p+=C)s=Ka[p].plotObj,Q=parseInt(s.label.style.lineHeight,10),s&&s.label&&void 0!==l(s.label.text)&&(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),H||(G=ca.getSmartText(n.text,Ka[p].labelTextWidth-4,Gc,wa),n.text=G.text,G.tooltext&&(n.originalText=G.tooltext),J&&(uc=ua+K%Ya*Q)),n.y=uc,n.x=Ac,n.rotation=ba,n.textAlign=vc,K+=1);else{ba?(Gc=wb,Lc=Db-4,vc=fa,uc=ub?la+8:la+4):J?(Lc=wb-4,vc=oa):(Gc=Db,Lc=wb-4,vc=oa,uc=ua);for(p=0;p<lb;p+=C)s=Ka[p],Q=va(parseFloat(s.label.style.lineHeight)),
Rc=.5*Q,ua=Q+la,s&&s.label&&void 0!==l(s.label.text)&&(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),H||(J&&(Gc=Q),sb=jb+(p-Vb)*Eb-h.chart.spacingLeft,Qb=300===ba?aa(na(2.999*sb*sb+sb*sb)-la,Lc):Lc,G=ca.getSmartText(n.text,Qb,Gc,wa),Ib=W(Ib,ba?G.width:G.height),n.text=G.text,G.tooltext&&(n.originalText=G.tooltext),J&&(uc=ua+K%Ya*Q)),ba?Ac=Tb+.5*Q:J||(uc=Q+la),n.y=uc,n.x=Ac,n.rotation=ba,n.textAlign=vc,K+=1);300===ba&&(Db=Ib,Qc=Db+la);d._labelY=ua;d._labelX=Tb;d._yShipment=uc;d._isStagger=
J;d._rotation=ba;d._textAlign=vc;d._adjustedPx=Rc;d._staggerLines=Ya;d._labelHeight=Q;d._canvasWidth=g;d._minCanvasWidth=A;d._availableHeight=f}lb=Ab.length;for(p=Mc=Hc=0;p<lb;p+=1)(s=Ab[p].plotObj?Ab[p].plotObj:Ab[p])&&s.label&&void 0!==l(s.label.text)&&(n=s.label,n.style&&n.style!==r&&(r=n.style,ca.setStyle(r)),n.verticalAlign===Ea?(G=ca.getSmartText(n.text,g,Va,!0),Mc=W(Mc,G.height),n.text=G.text,G.tooltext&&(n.originalText=G.tooltext),n.y=Qc+ca.getOriSize(n.text).height,n.x=Ac):(G=ca.getSmartText(n.text,
g,Pa,!0),Hc=W(Hc,G.height),n.text=G.text,G.tooltext&&(n.originalText=G.tooltext),n.y=-(Pa-ca.getOriSize("W").height+la+2)));0<B&&(ca.setStyle(c.title.style),v=ca.getSmartText(c.title.text,g,B),c.title.text=v.text,v.tooltext&&(c.title.originalText=v.tooltext),c.title.margin=Qc+Mc+tb);Pb=Mc;0<Db&&(m.horizontalAxisHeight=la+Db-N,Pb+=m.horizontalAxisHeight);0<B&&(Pb+=Ta=B+tb);Pb=Pb||la-N;h.chart.marginBottom+=Pb;0<Hc&&(h.chart.marginTop+=Hc,Pb+=Hc);if(c.opposite)for(c.title.margin-=Db-(v&&v.height||0)+
la,Pb-=Ta,h.chart.marginTop+=Pb,h.chart.marginBottom-=Pb,h.xAxis.opposite=1,lb=Xb.length,qa=0;qa<lb;qa+=1)(s=Xb[qa])&&s.isGrid&&(n=s.label)&&void 0!==n.text&&(n.textAlign=La,n.y-=uc+la+4);return Pb},Ha=t.configureLegendOptions=function(d,e,h,k,g){k=d.legend;var f=d.chart,l=f.is3D?pa.chart3D:pa.chart2D,A=f.useRoundEdges,m=b(e.legendiconscale,1),D=(parseInt(k.itemStyle.fontSize,10)||10)+1,n=this.colorManager,G;if(0>=m||5<m)m=1;k.padding=4;0>=D&&(D=1);G=3*m;D=aa(D*m,g-8);0>=D&&(G=D=0);k.symbolWidth=
D;k.symbolPadding=G;k.textPadding=4;k.legendHeight=g=D+2*G;k.rowHeight=W(parseInt(k.itemStyle.lineHeight,10)||12,g);h?(k.align=fa,k.verticalAlign="middle",k.layout="vertical"):k.x=(f.marginLeft-f.spacingLeft-f.marginRight+f.spacingRight)/2;h=c(e.legendbordercolor,n.getColor(l.legendBorderColor));g=b(e.legendborderalpha,100);f=b(e.legendbgalpha,100);k.backgroundColor=S(c(e.legendbgcolor,n.getColor(l.legendBgColor)),f);k.borderColor=S(h,g);k.borderWidth=b(e.legendborderthickness,!A||e.legendbordercolor?
1:0);k.shadow=Boolean(b(e.legendshadow,1));k.symbol3DLighting=Boolean(b(e.use3dlighting,e.useplotgradientcolor,1));k.shadow&&(k.shadow={enabled:k.shadow,opacity:W(g,f)/100});k.reversed=Boolean(b(e.reverselegend,0)-b(this.reverseLegend,0));k.style={padding:4};Boolean(b(e.interactivelegend,1))?k.symbolStyle={_cursor:"hand",cursor:"pointer"}:(d.legend.interactiveLegend=!1,k.itemStyle.cursor="default",k.itemHoverStyle={cursor:"inherit"});k.borderRadius=b(e.legendborderradius,A?3:0);k.legendAllowDrag=
Boolean(b(e.legendallowdrag,0));k.title.text=s(p(e.legendcaption,a));k.legendScrollBgColor=T(c(e.legendscrollbgcolor,e.scrollcolor,n.getColor("altHGridColor")));k.legendScrollBarColor=c(e.legendscrollbarcolor,h);k.legendScrollBtnColor=c(e.legendscrollbtncolor,h)},Ga=t.placeLegendBlockRight=function(c,d,h,k,g){this.configureLegendOptions(c,d.chart,!0,g,h);var f=this.snapLiterals||(this.snapLiterals={}),l=0,A=c.series,m,D=c[e],n=this.smartLabel||D.smartLabel,s=c.chart.spacingRight,G=c.legend,p,r=G.textPadding,
q=G.title.padding,v=G.symbolWidth,u=G.symbolPadding,V=v+2*u,t=2*k,Z=0,F=b(d.chart.legendpadding,7);d=F+G.borderWidth/2+b(d.chart.canvasborderthickness,1);var ba=2*G.padding,B=ba,Q=!1,C=[];h-=ba+F;g&&(A=A&&A[0]&&A[0].data);if(typeof A===gb||typeof A.length===gb)return 0;g=A.length;for(l=0;l<g;l+=1)(m=A[l])&&!1!==m.showInLegend&&(m.__i=l,C.push(m));C.sort(function(a,b){return a.legendIndex-b.legendIndex||a.__i-b.__i});g=C.length;p=h-V-F-r;0>p&&(p=0);n.setStyle(G.itemStyle);G.reversed&&C.reverse();for(l=
0;l<g;l+=1)m=C[l],Q=!0,m._legendX=0,m._legendY=B,0===p?(B+=m._legendH=V,m.name=a,m._totalWidth=v+u):(A=n.getSmartText(m.name,p,t),m.name=A.text,A.tooltext&&(m.originalText=A.tooltext),A.height<V&&(m._legendTestY=(V-A.height)/2),m._totalWidth=v+u+r+A.width+F,B+=m._legendH=W(A.height,V),Z=W(A.width,Z));if(Q)return G.itemWidth=Z+V+F+r,G.width=G.itemWidth+ba,G.title.text!==a&&(n.setStyle(G.title.style),A=n.getSmartText(G.title.text,h,t),G.title.text=A.text,A.tooltext&&(G.title.originalText=A.tooltext),
l=A.width+ba,G.width<l&&(G.initialItemX=(l-G.width)/2,G.width=l),G.initialItemY=A.height+q,B+=G.initialItemY),G.height=G.totalHeight=B,G.height>k&&(G.height=k,G.scroll.enabled=!0,G.scroll.flatScrollBars=D.flatScrollBars,G.scroll.scrollBar3DLighting=D.scrollBar3DLighting,G.width+=(G.scroll.scrollBarWidth=10)+(G.scroll.scrollBarPadding=2)),f.legendstartx=D.width-s-G.width,f.legendwidth=G.width,f.legendendx=f.legendstartx+f.legendwidth,f.legendheight=G.height,d=aa(G.width+d,h),c.chart.marginRight+=d+
F,d;G.enabled=!1;return 0},Va=t.placeLegendBlockBottom=function(c,d,h,k,g){this.configureLegendOptions(c,d.chart,!1,g,h);var f=this.snapLiterals||(this.snapLiterals={}),l=0,A=c.series,m=c[e],D=m.smartLabel||this.smartLabel,n=c.chart,G=n.spacingBottom,p=n.spacingLeft,n=n.spacingRight,r=c.legend,v,q=r.textPadding,u=r.title.padding,V,t=r.symbolWidth,Z=r.symbolPadding,F=r.legendHeight,ba=d.chart;V=0;var B=2*k,Q=r.rowHeight,C=.05*Q,ua=[];v=b(ba.minimisewrappinginlegend,0);var ba=b(parseInt(ba.legendnumcolumns,
10),0),pa=0,K=0,wa=0,J=l=0,Ta=0,H=0,db=r.padding,ca=2*db,db=q+Z+db;d=b(d.chart.legendpadding,7)+r.borderWidth/2+1;var la=ca,L=!1,Ga,Aa=[],ab=!1,Ha=0,N=0;0>ba&&(ba=0);h-=ca;D.setStyle(r.itemStyle);l=D.getOriSize(rb).height;d=aa(d,k-l-8);k-=d;g&&(A=A&&A[0]&&A[0].data);if(typeof A===gb||typeof A.length===gb)return 0;g=A.length;for(l=0;l<g;l+=1)(Ga=A[l])&&!1!==Ga.showInLegend&&(Ga.__i=l,Aa.push(Ga));Aa.sort(function(a,b){return a.legendIndex-b.legendIndex||a.__i-b.__i});g=Aa.length;D.setStyle(r.itemStyle);
for(l=0;l<g;l+=1)L=!0,Aa[l].name=s(Aa[l].name),A=D.getOriSize(Aa[l].name),pa=W(pa,A.width),Ta=W(Ta,aa(A.height,B)),K+=A.width,wa+=1;l=K/wa;F=F+C+q+Z+ca;K+=F*wa;if(L){l+=F;pa+=F;0<ba&&wa<ba&&(ba=wa);K<=h&&(0>=ba||ba===wa)?(ba=wa,J=l=K/wa,ab=!0,Ta>Q&&(H=(Ta-Q)/2,Q=Ta)):0<ba&&(J=h/ba)>l?J>pa&&(J=pa):h>pa&&(v||1.5*l>pa)?(ba=za(h/pa),wa<ba&&(ba=wa),J=pa):h>=2*l?(ba=za(h/l),wa<ba&&(ba=wa),J=za(h/ba),J>pa&&(J=pa)):(ba=1,J=h);r.itemWidth=J;v=va(J-F);0>v&&(Z=v=q=0);r.symbolPadding=Z;r.textPadding=q;r.width=
J*ba-C;r.title.text!==a&&(D.setStyle(r.title.style),A=D.getSmartText(r.title.text,h,B),r.title.text=A.text,A.tooltext&&(r.title.originalText=A.tooltext),V=A.width+ca,r.width<V&&(r.initialItemX=(V-r.width)/2,r.width=V),r.initialItemY=V=A.height+u);D.setStyle(r.itemStyle);r.reversed&&Aa.reverse();for(l=0;l<g;l+=1){h=Aa[l];0===v&&(ua[Ha]=!0,h.name=a,u=1,q=parseInt(Ha/ba,10),C=Ha%ba,h._legendX=C*J,h._legendY=q*Q+ca,h._legendH=u*Q,h._totalWidth=t+Z);if(ab)A=D.getOriSize(h.name),A.height<Q&&(h._legendTestY=
(Q-A.height)/2),h._markerYGutter=H,h._legendX=N,h._legendY=ca,h._legendH=Q,h._totalWidth=t+db+A.width,N+=A.width+F;else{A=D.getSmartText(h.name,v,B);h.name=A.text;for(A.tooltext&&(h.originalText=A.tooltext);!0===ua[Ha];)Ha+=1;q=A.height/Q;C=Ha;for(u=0;u<q;u+=1,C+=ba)ua[C]=!0;A.height<Q&&(h._legendTestY=(Q-A.height)/2);q=parseInt(Ha/ba,10);C=Ha%ba;h._legendX=C*J;h._legendY=q*Q+ca;h._legendH=u*Q;h._totalWidth=t+db+A.width}Ha+=1}D=ab?1:va(ua.length/ba);r.height=r.totalHeight=la+(D*Q+V);r.rowHeight=Q;
r.legendNumColumns=ba;r.height>k&&(r.height=k,r.scroll.enabled=!0,r.scroll.flatScrollBars=m.flatScrollBars,r.scroll.scrollBar3DLighting=m.scrollBar3DLighting,r.width+=(r.scroll.scrollBarWidth=10)+(r.scroll.scrollBarPadding=2));f.legendstartx=p+.5*(m.width-p-n-r.width)+(r.x||0);f.legendwidth=r.width;f.legendendx=f.legendstartx+f.legendwidth;f.legendstarty=m.height-G-r.height;f.legendheight=r.height;f.legendendy=f.legendstarty+f.legendheight;d+=r.height;c.chart.marginBottom+=d;return d}r.enabled=!1;
return 0},Rb=function(a,b){return a.value-b.value},jb=function(a,b,c){var d=b._originalText;a=a[e].smartLabel;b.text=b.rotation?a.getSmartText(d,c,b._actualWidth).text:a.getSmartText(d,b._actualWidth,c).text;b.centerYAxisName=!0},pc=t.adjustVerticalAxisTitle=function(a,b,c){if(b&&b.text){var d=b.text,g=a[e].smartLabel,h=2*aa(a.chart.marginTop,a.chart.marginBottom)+c,k=c+a.chart.marginTop+a.chart.marginBottom;b.style&&g.setStyle(b.style);d=g.getOriSize(d);void 0===b.centerYAxisName&&(b.centerYAxisName=
!0);b.rotation?d.width>h&&(b.y=k/2-(c/2+a.chart.marginTop),b.centerYAxisName=!1):d.height>h&&(b.y=(k/2-(c/2+a.chart.marginTop))/2,b.centerYAxisName=!1)}},ub=t.adjustVerticalCanvasMargin=function(a,c,d,e){var g=c.chart,h=c=0,k=0,f=b(g.canvastopmargin,0),g=b(g.canvasbottommargin,0),l=f/(f+g),A=a.chart.marginTop,m=a.chart.marginBottom;g>m&&(c+=g-m);f>A&&(c+=f-A);c>d?f>A&&g>m?(h=d*l,k=d*(1-l)):f>A?h=d:k=d:0<c&&(g>m&&(k=g-m),f>A&&(h=f-A));h&&(a.chart.marginTop+=h);k&&(a.chart.marginBottom+=k,e&&e.title&&
(e.title.margin+=k));return h+k},qc=t.adjustHorizontalCanvasMargin=function(a,c,d,e,g){var h=c.chart;c=b(h.canvasleftmargin,0);var h=b(h.canvasrightmargin,0),k=c/(c+h),f=0,l=a.chart.marginLeft,A=a.chart.marginRight,m=0,D=0;c>l&&(f+=c-l);h>A&&(f+=h-A);f>d?c>l&&h>A?(m=d*k,D=d*(1-k)):h>A?D=d:m=d:0<f&&(c>l&&(m=c-l),h>A&&(D=h-A));m&&(a.chart.marginLeft+=m,e&&e.title&&(e.title.margin+=m));D&&(a.chart.marginRight+=D,g&&g.title&&(g.title.margin+=D));return D+m},Pa=function(a,b){return a-b},Bb=t.getDataParser=
{column:function(a,d,h){var f=a[e],g=d.borderWidth;return function(e,l,A){var m=d.plotgradientcolor,D=d.is3d,n=d.isRoundEdges,s=d.plotBorderColor,G=c(e.color,d.color),r=c(e.ratio,d.ratio),p=da(d.plotBorderAlpha),q=b(e.dashed,d.dashed),v=c(e.dashlen,d.dashLen),u=c(e.dashgap,d.dashGap),V=d.use3DLighting,t=da(c(e.alpha,d.alpha)).toString(),Z={opacity:t/100},F=d.isBar,ba=d.fillAangle,B=0>A?F?180-ba:360-ba:ba,ba=M(G+xa+m,t,r,B,n,s,c(e.alpha,p).toString(),F,D),Q=q?k(v,u,g):"none";l=h.getPointStub(e,A,f.oriCatTmp[l],
a,d,d.showValues,d.yAxis);e=h.pointHoverOptions(e,d,{plotType:"column",is3d:D,isBar:F,use3DLighting:V,isRoundEdged:n,color:G,gradientColor:m,alpha:t,ratio:r,angle:B,borderWidth:g,borderColor:s,borderAlpha:p,borderDashed:q,borderDashGap:u,borderDashLen:v,shadow:Z});l.y=A;l.shadow=Z;l.color=ba[0];l.borderColor=ba[1];l.borderWidth=g;l.use3DLighting=V;l.dashStyle=Q;l.tooltipConstraint=h.tooltipConstraint;l.hoverEffects=e.enabled&&e.options;l.rolloverProperties=e.enabled&&e.rolloverOptions;return l}},
line:function(a,d,h){var f=a[e];return function(g,e,l){var A=b(g.alpha,d.lineAlpha),m={opacity:A/100},D=b(g.anchorsides,d.anchorSides,0),n=b(g.anchorborderthickness,d.anchorBorderThickness,1),s=T(c(g.anchorbordercolor,d.anchorBorderColor)),G=T(c(g.anchorbgcolor,d.anchorBgColor)),r=b(g.anchorstartangle,d.anchorStartAngle,90),p=c(g.anchoralpha,d.anchorAlpha),q=c(g.anchorbgalpha,p),v=b(g.anchorradius,d.anchorRadius),u=Boolean(b(g.anchorshadow,d.anchorShadow,0));e=h.getPointStub(g,l,f.oriCatTmp[e],a,
d,d.showValues,d.yAxis);var V=c(g.anchorimageurl,d.imageUrl),t=c(g.anchorimagescale,d.imageScale),Z=c(g.anchorimagealpha,d.imageAlpha);e.y=l;e.shadow=m;e.anchorShadow=d.anchorShadow;e.dashStyle=b(g.dashed,d.lineDashed)?k(d.lineDashLen,d.lineDashGap,d.lineThickness):"none";e.color={FCcolor:{color:T(c(g.color,d.lineColor)),alpha:A}};e.valuePosition=c(g.valueposition,d.valuePosition);l=h.pointHoverOptions(g,d,{plotType:"anchor",anchorBgColor:G,anchorAlpha:p,anchorBgAlpha:q,anchorAngle:r,anchorBorderThickness:n,
anchorBorderColor:s,anchorBorderAlpha:p,anchorSides:D,anchorRadius:v,imageUrl:V,imageScale:t,imageAlpha:Z,shadow:m});e.marker={enabled:void 0===d.drawAnchors?0!==A:!!d.drawAnchors,shadow:u&&{opacity:p/100},fillColor:{FCcolor:{color:T(c(g.anchorbgcolor,d.anchorBgColor)),alpha:(c(g.anchorbgalpha,d.anchorBgAlpha)*p/100).toString()}},lineColor:{FCcolor:{color:T(c(g.anchorbordercolor,d.anchorBorderColor)),alpha:p}},imageUrl:V,imageScale:t,imageAlpha:Z,lineWidth:b(g.anchorborderthickness,d.anchorBorderThickness),
radius:b(g.anchorradius,d.anchorRadius),symbol:Fa(b(g.anchorsides,d.anchorSides)),startAngle:c(g.anchorstartangle,d.anchorAngle)};e.hoverEffects=l.enabled&&l.options;e.rolloverProperties=l.enabled&&l.rolloverOptions;return e}},area:function(a,d,h){var k=a[e];return function(g,e,f){var l=c(g.alpha,d.fillAlpha),A={opacity:W(l,d.lineAlpha)/100,inverted:!0},m=b(g.anchorsides,d.anchorSides,0),D=b(g.anchorborderthickness,d.anchorBorderThickness,1),n=T(c(g.anchorbordercolor,d.anchorBorderColor)),s=T(c(g.anchorbgcolor,
d.anchorBgColor)),G=b(g.anchorstartangle,d.anchorStartAngle,90),r=c(g.anchoralpha,d.anchorAlpha),p=c(g.anchorbgalpha,r),q=b(g.anchorradius,d.anchorRadius),v=Boolean(b(g.anchorshadow,d.anchorShadow,0));e=h.getPointStub(g,f,k.oriCatTmp[e],a,d,d.showValues,d.yAxis);var u=c(g.anchorimageurl,d.imageUrl),V=c(g.anchorimagescale,d.imageScale),t=c(g.anchorimagealpha,d.imageAlpha);e.y=f;e.shadow=A;e.anchorShadow=d.anchorShadow;e.color={FCcolor:{color:T(c(g.color,d.fillColor)),alpha:l}};e.valuePosition=c(g.valueposition,
d.valuePosition);f=h.pointHoverOptions(g,d,{plotType:"anchor",anchorBgColor:s,anchorAlpha:r,anchorBgAlpha:p,anchorAngle:G,anchorBorderThickness:D,anchorBorderColor:n,anchorBorderAlpha:r,anchorSides:m,anchorRadius:q,imageUrl:u,imageScale:V,imageAlpha:t,shadow:A});e.marker={enabled:d.drawAnchors,shadow:v&&{opacity:r/100},fillColor:{FCcolor:{color:T(c(g.anchorbgcolor,d.anchorBgColor)),alpha:(c(g.anchorbgalpha,d.anchorBgAlpha)*r/100).toString()}},lineColor:{FCcolor:{color:T(c(g.anchorbordercolor,d.anchorBorderColor)),
alpha:r}},imageUrl:u,imageScale:V,imageAlpha:t,lineWidth:b(g.anchorborderthickness,d.anchorBorderThickness),radius:q,symbol:Fa(b(g.anchorsides,d.anchorSides)),startAngle:c(g.anchorstartangle,d.anchorAngle)};e.hoverEffects=f.enabled&&f.options;e.rolloverProperties=f.enabled&&f.rolloverOptions;e.events={click:d.getLink};return e}}};f.core.options.resizeTrackingInterval=300;f.core.options.preventTrackResize=!1;f.core.options.SVGDefinitionURL="relative";t.createChart=function(a,e,h,k,g,l,A){var m=a.jsVars,
D,n,s=ha[h||(h=a.chartType())],G,r=m.hasNativeMessage,p=a.options,q=a.args,v;v=function(b){var c={renderer:"javascript"},g=m.fcObj,l=g.width,D=g.height,n=s&&s.eiMethods,p=m.overlayButton,q;e.jsVars=a.jsVars;m.container=e;m.hcObj=b;m.type=h;m.width=e.offsetWidth;m.height=e.offsetHeight;m.instanceAPI=G;if(b.hasRendered){f.extend(e,Ta);if(n&&"string"!==typeof n)for(q in n)e[q]=n[q];m.overlayButtonActive&&p&&(p.innerHTML="",p.appendChild(d.createTextNode(m.overlayButtonMessage)),b.container.appendChild(p))}(/\%/g.test(l)||
/\%/g.test(D))&&e&&e.parentNode&&!f.core.options.preventTrackResize&&ua(g,e);if(k&&(k({success:b.hasRendered,ref:e,id:a.id}),b.hasRendered)){t.raiseEvent("loaded",{type:h,renderer:"javascript"},a,[a.id]);if(!0===a.disposed)return;r||(g.__state.firstRenderNotified=!0,setTimeout(function(){t.raiseEvent("rendered",{renderer:"javascript"},g,[g.id])},0))}b.hasRendered&&m.previousDrawCount<m.drawCount&&(c.width=m.width,c.height=m.height,c.drawCount=m.drawCount,c.displayingMessage=r,c.renderer=g.options.renderer,
t.raiseEvent("drawcomplete",c,g,[g.id]),r||A||setTimeout(function(){g.__state&&!g.__state.firstRenderNotified&&t.raiseEvent("rendered",{renderer:"javascript"},g,[g.id]);f.raiseEvent("renderComplete",c,g)},0))};m.instanceAPI&&m.instanceAPI.dispose&&m.instanceAPI.dispose();G=s?new ha(h):new ha("stub");G.chartInstance=a;G.origRenderWidth=a.__state.renderedWidth;G.origRenderHeight=a.__state.renderedHeight;if(void 0!==g)"string"===typeof g&&(g=new cb(e,g,a),r=m.hasNativeMessage=!0);else if(!s||!s.init||
s&&"stub"===s.name)a._chartMessageImageStyle={imageHAlign:c(q.typeNotSupportedMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(q.typeNotSupportedMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(q.typeNotSupportedMessageImageAlpha,p.baseChartMessageImageAlpha),imageScale:b(q.typeNotSupportedMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={color:q.typeNotSupportedMessageColor||p.baseChartMessageColor,fontFamily:q.typeNotSupportedMessageFont||
p.baseChartMessageFont,fontSize:q.typeNotSupportedMessageFontSize||p.baseChartMessageFontSize},g=new cb(e,p.typeNotSupportedMessage,a),r=m.hasNativeMessage=!0;else if(m.message)g=new cb(e,m.message,a),r=m.hasNativeMessage=!0;else if(m.loadError)a._chartMessageImageStyle={imageHAlign:c(q.dataLoadErrorMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(q.dataLoadErrorMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(q.dataLoadErrorMessageImageAlpha,
p.baseChartMessageImageAlpha),imageScale:b(q.dataLoadErrorMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={color:q.dataLoadErrorMessageColor||p.baseChartMessageColor,fontFamily:q.dataLoadErrorMessageFont||p.baseChartMessageFont,fontSize:q.dataLoadErrorMessageFontSize||p.baseChartMessageFontSize},g=new cb(e,p.dataLoadErrorMessage,a),r=m.hasNativeMessage=!0;else if(m.stallLoad)a._chartMessageImageStyle={imageHAlign:c(q.dataLoadStartMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),
imageVAlign:c(q.dataLoadStartMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(q.dataLoadStartMessageImageAlpha,p.baseChartMessageImageAlpha),imageScale:b(q.dataLoadStartMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={fontFamily:q.dataLoadStartMessageFont||p.baseChartMessageFont,fontSize:q.dataLoadStartMessageFontSize||p.baseChartMessageFontSize,color:q.dataLoadStartMessageColor||p.baseChartMessageColor},g=new cb(e,p.dataLoadStartMessage,a),r=m.hasNativeMessage=
!0;else if(f.raiseEvent("internal.drawStart",{chartType:h,logicName:G.name,logicBase:G.base&&G.base.name,defaultSeriesType:G.defaultSeriesType},a),D=a.jsVars&&a.jsVars.themeObject&&a.jsVars.themeObject.getThemedJSONData()||a.getChartData(f.dataFormats.JSON,!0),n=D.data,D.error instanceof Error)a._chartMessageImageStyle={imageHAlign:c(q.dataInvalidMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(q.dataInvalidMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),
imageAlpha:b(q.dataInvalidMessageImageAlpha,p.baseChartMessageImageAlpha),imageScale:b(q.dataInvalidMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={fontFamily:q.dataInvalidMessageFont||p.baseChartMessageFont,fontSize:q.dataInvalidMessageFontSize||p.baseChartMessageFontSize,color:q.dataInvalidMessageColor||p.baseChartMessageColor},g=new cb(e,p.dataInvalidMessage,a),r=m.hasNativeMessage=!0,a.__state.dataReady=!1,A||f.raiseEvent("dataInvalid",{error:D.error},m.fcObj,void 0,function(){t.raiseEvent("dataxmlinvalid",
{},a,[a.id])});else{A||t.raiseEvent("dataloaded",{},a,[a.id]);if(!0===G.chartInstance.disposed)return;g=G.init(e,n,a,v);G.inited=!0;m.previousDrawCount=m.drawCount;m.drawCount+=1;0===g.series.length?(a._chartMessageImageStyle={imageHAlign:c(q.dataEmptyMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(q.dataEmptyMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(q.dataEmptyMessageImageAlpha,p.baseChartMessageImageAlpha),imageScale:b(q.dataEmptyMessageImageScale,
p.baseChartMessageImageScale)},a._chartMessageStyle={fontFamily:q.dataEmptyMessageFont||p.baseChartMessageFont,fontSize:q.dataEmptyMessageFontSize||p.baseChartMessageFontSize,color:q.dataEmptyMessageColor||p.baseChartMessageColor},g=new cb(e,p.dataEmptyMessage,a),r=m.hasNativeMessage=!0,a.__state.dataReady=!1,A||t.raiseEvent("nodatatodisplay",{},a,[a.id])):(a.__state.dataReady=!0,r=m.hasNativeMessage=!1,delete m.message)}g||(a._chartMessageImageStyle={imageHAlign:p.baseChartMessageImageHAlign,imageVAlign:p.baseChartMessageImageVAlign,
imageAlpha:p.baseChartMessageImageAlpha,imageScale:p.baseChartMessageImageScale},a._chartMessageStyle={fontFamily:p.baseChartMessageFont,fontSize:p.baseChartMessageFontSize,color:p.baseChartMessageColor},g=new cb(e,"Error rendering chart {0x01}",a),r=m.hasNativeMessage=!0);r&&!G.inited&&G.init(e,n,a,v);g.chart=g.chart||{};g.credits=g.credits||{};g.credits.enabled=s&&!0===s.creditLabel?!0:!1;!1===l&&(g.chart.animation=!1,g.plotOptions||(g.plotOptions={}),g.plotOptions.series||(g.plotOptions.series=
{}),g.plotOptions.series.animation=!1);e.style&&(g.chart.containerBackgroundColor=t.getContainerBackgroundColor(a));return G.draw(g,v)};ha("base",{useScaleRecursively:!0,tooltipConstraint:"chart",rendererId:"root",canvasPaddingModifiers:["anchor","anchorlabel"],drawAnnotations:!0,draw:function(a,b){var c=this.renderer;c||(c=this.renderer=new ha("renderer."+this.rendererId));this.updateDefaultAnnotations();return c.init(this,a,b)},init:function(d,e,k){var l=this.chartInstance||k,g=l.jsVars;k=g._reflowData||
(g._reflowData={});var A=g._reflowClean,m=l.options,D=m.args,n,p;/^\s*absolute\s*$/i.test(f.core.options.SVGDefinitionURL)&&(C._url=(C._g&&C._g.win||q).location.href.replace(/#.*?$/,a));this.dataObj=e=h({},e);p=e.chart=e.chart||e.graph||e.map||{};delete e.graph;delete e.map;k&&!this.stateless&&(n=k.hcJSON,delete k.hcJSON,h(this,k,!0),this.preReflowAdjustments&&this.preReflowAdjustments.call(this),k.hcJSON=n);this.containerElement=d;this.config={};this.smartLabel=g.smartLabel;this.smartLabel.useEllipsesOnOverflow(b(p.useellipseswhenoverflow,
p.useellipsewhenoverflow,1));this.colorManager=new t.colorManager(e,this);this.linkClickFN=sb(e,l);this.numberFormatter=new Tb(e.chart,this);if(!this.standaloneInit)return l._chartMessageImageStyle={imageHAlign:c(D.typeNotSupportedMessageImageHAlign,m.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(D.typeNotSupportedMessageImageVAlign,m.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(D.typeNotSupportedMessageImageAlpha,m.baseChartMessageImageAlpha),imageScale:b(D.typeNotSupportedMessageImageScale,
m.baseChartMessageImageScale)},l._chartMessageStyle={fontFamily:D.typeNotSupportedMessageFont||m.baseChartMessageFont,fontSize:D.typeNotSupportedMessageFontSize||m.baseChartMessageFontSize,color:D.typeNotSupportedMessageColor||m.baseChartMessageColor},new t.createDialog(d,m.typeNotSupportedMessage,l);d=this.chart(d.offsetWidth||parseFloat(d.style.width),d.offsetHeight||parseFloat(d.style.height),l);k&&!this.stateless&&(k.hcJSON&&h(d,k.hcJSON,!0),this.postReflowAdjustments&&this.postReflowAdjustments.call(this),
A&&this.cleanedData&&(this.cleanedData(this,A),this.cleanedData(k,A)));return d},postSpaceManager:function(){var a=this.hcJSON,c=a._FCconf,d=a.chart,e=d.marginLeft,g=d.spacingLeft,h=d.spacingRight,k=c.width-e-d.marginRight,f=a.title,a=a.subtitle,l=c.width,A=f.align,c=f.x,m=f.horizontalPadding,D=f.alignWithCanvas,n=(ma(e)||0)+b(k,l)/2,e=this.snapLiterals||(this.snapLiterals={}),k=f._captionWidth,p=a._subCaptionWidth,s=f._lineHeight,G=a._lineHeight,r=f.text;if(void 0===c){switch(A){case fa:c=D?l-d.marginRight-
m:l-m;break;case La:c=D?d.marginLeft+m:m;break;default:c=D?n:g+.5*(l-g-h)||l/2}f.align===La?(h=g=0,f.align="start"):f.align===fa?(g=k,h=p,f.align="end"):(g=k/2,h=p/2,f.align="middle");f.x=c;f.y=f.y||d.spacingTop||0;a.y=r?f.y+s+2:f.y||d.spacingTop||0;e.captionstartx=c-g-2;e.captionwidth=k+4;e.captionendx=e.captionstartx+e.captionwidth;e.captionstarty=f.y||0;e.captionheight=s+2;e.captionendy=e.captionstarty+e.captionheight;e.subcaptionstartx=c-h-2;e.subcaptionwidth=p+4;e.subcaptionendx=e.subcaptionstartx+
e.subcaptionwidth;e.subcaptionstarty=a.y||0;e.subcaptionheight=G+2;e.subcaptionendy=e.subcaptionstarty+e.subcaptionheight}},chart:function(d,w){var A=this.name,m=this.dataObj,g=m.chart,D=this.colorManager,n,r,v,t,Z,F,ba,B=this.defaultSeriesType,Q,C,ua,wa,K,J,Ta,Ja,Y,H,ca,la,Ha,Aa,Ga,ab,N,jb,O,M,Va,ub,Pa,U,Rb,Bb,pc,qc,aa,$,da,ma,ja,ha,va,na,za,Ba,Fa,Xa,cb,gb,fb,Jb,Yb,xb,nb,Zb,zb,bc,Ua,eb,Za,Wa,Ca,rb,Qa,Cb,sb,$b,jc,kc,Lb,ob,$a,Nb,Wb,Ma,Eb,Mb,Vb,dc,ec,hc,fc,Ob,qa,Xb,gc,Ka,Ab,kb,Fb,Gb,ic,Tb,wb,oc,Qb,
bd,lb,Wc,Db,Ya,Pb,Jc,Pc,Xc,tc,Hb,Sb,ac,Kc;n=db(m,d,w,this);Y=n.chart;Ja=n.xAxis;Q=n[e];this.snapLiterals||(this.snapLiterals={});ca=this.snapLiterals;ca.chartstartx=0;ca.chartstarty=0;ca.chartwidth=d;ca.chartheight=w;ca.chartendx=d;ca.chartendy=w;ca.chartcenterx=d/2;ca.chartcentery=w/2;ca.chartbottommargin=Y.spacingBottom;ca.chartleftmargin=Y.spacingLeft;ca.chartrightmargin=Y.spacingRight;ca.charttopmargin=Y.spacingTop;this.updateSnapPoints&&this.updateSnapPoints();this.postHCJSONCreation&&this.postHCJSONCreation.call(this,
n);f.raiseEvent("internal.postlogic",this,this.chartInstance);n.labels.smartLabel=F=Q.smartLabel=this.smartLabel;Q.width=d;Q.height=w;ua=n.plotOptions;Q.isDual=this.isDual;Q.numberFormatter=this.numberFormatter;Q.axisGridManager=new tb(B,g);Q.tooltext=g.plottooltext;Q.trendLineToolText=g.trendlinetooltext;Y.is3D=r=Q.is3d=/3d$/.test(B);Y.isBar=C=Q.isBar=this.isBar;ba=/^pie/.test(B);Ta=1==g.useroundedges;J=r?pa.chart3D:pa.chart2D;Y.events.click=n.plotOptions.series.point.events.click=this.linkClickFN;
Y.defaultSeriesType=B;ab=0<g.palette&&6>g.palette?g.palette:b(this.paletteIndex,1);--ab;Y.paletteIndex=ab;Y.usePerPointLabelColor=g.colorlabelsfromplot==Ia;Y.syncLabelWithAnchor=b(g.synclabelwithanchoronhover,1);Y.minimizeTendency=b(g.minimizetendency,g.minimisetendency,0);Y.useRoundEdges=Ta&&!r&&!this.distributedColumns&&"pie"!==this.defaultSeriesType;void 0!==c(g.clickurl)&&(Y.link=g.clickurl,Y.style.cursor="pointer",n.plotOptions.series.point.events.click=function(){Y.events.click.call({link:g.clickurl})});
N=c(g.basefont,"Verdana,sans");jb=L(g.basefontsize,10);O=c(g.basefontcolor,D.getColor(J.baseFontColor));M=c(g.outcnvbasefont,N);Va=L(g.outcnvbasefontsize,jb);ub=Va+Da;Pa=c(g.outcnvbasefontcolor,O).replace(/^#?([a-f0-9]+)/ig,"#$1");Bb=jb;jb+=Da;O=O.replace(/^#?([a-f0-9]+)/ig,"#$1");Kc=(Kc=p(g.trendvaluebordercolor,a))?S(Kc,b(g.trendvalueborderalpha,g.trendvaluealpha,100)):a;Q.trendStyle=Q.outCanvasStyle={fontFamily:c(g.trendvaluefont,M),color:c(g.trendvaluefontcolor,Pa),fontSize:L(g.trendvaluefontsize,
Va)+Da,fontWeight:b(g.trendvaluefontbold)?"bold":"normal",fontStyle:b(g.trendvaluefontitalic)?"italic":"normal",border:Kc||g.trendvaluebgcolor?b(g.trendvalueborderthickness,1)+"px solid":"",borderColor:Kc,borderThickness:b(g.trendvalueborderthickness,1),borderPadding:b(g.trendvalueborderpadding,2),borderRadius:b(g.trendvalueborderradius,0),backgroundColor:g.trendvaluebgcolor?S(g.trendvaluebgcolor,b(g.trendvaluebgalpha,g.trendvaluealpha,100)):a,borderDash:b(g.trendvalueborderdashed,0)?k(b(g.trendvalueborderdashlen,
4),b(g.trendvalueborderdashgap,2),b(g.trendvalueborderthickness,1)):"none"};U=u(Q.trendStyle);Q.inCanvasStyle={fontFamily:N,fontSize:jb,color:O};Rb=u(Q.inCanvasStyle);Q.divlineStyle={fontFamily:N,fontSize:jb,color:O,lineHeight:Rb};Ja.labels.style={fontFamily:c(g.labelfont,M),fontSize:b(g.labelfontsize,Va)+Da,color:c(g.labelfontcolor,Pa)};Ja.labels.style.lineHeight=u(Ja.labels.style);Ja.steppedLabels.style={fontFamily:M,fontSize:ub,lineHeight:U,color:Pa,visibility:"hidden"};n.yAxis[0].labels.style=
{fontFamily:M,fontSize:ub,lineHeight:U,color:Pa};n.yAxis[1].labels.style={fontFamily:M,fontSize:ub,lineHeight:U,color:Pa};qc=c(g.legenditemfont,M);aa=L(g.legenditemfontsize,Va);$=c(g.legenditemfontcolor,Pa).replace(/^#?([a-f0-9]+)/ig,"#$1");da=V[b(g.legenditemfontbold,0)]||"";pc=L(g.legendcaptionfontsize,Va)+Da;aa+=Da;n.legend.itemStyle={fontFamily:qc,fontSize:aa,color:$,fontWeight:da};u(n.legend.itemStyle);n.legend.itemHiddenStyle={fontFamily:qc,fontSize:aa,color:c(g.legenditemhiddencolor,"cccccc").replace(/^#?([a-f0-9]+)/ig,
"#$1"),fontWeight:da};u(n.legend.itemHiddenStyle);n.legend.itemHoverStyle={color:c(g.legenditemhoverfontcolor,$).replace(/^#?([a-f0-9]+)/ig,"#$1")};n.legend.title.style={fontFamily:c(g.legendcaptionfont,qc),fontSize:pc,color:c(g.legendcaptionfontcolor,Pa).replace(/^#?([a-f0-9]+)/ig,"#$1"),fontWeight:V[b(g.legendcaptionfontbold,1)]||""};u(n.legend.title.style);n.legend.title.align=Ub[g.legendcaptionalignment&&g.legendcaptionalignment.toLowerCase()||oa]||Ub.center;H=(H=p(g.valuebordercolor,a))?S(H,
b(g.valueborderalpha,g.valuealpha,100)):a;n.plotOptions.series.dataLabels.style={fontFamily:c(g.valuefont,N),fontSize:c(g.valuefontsize,parseInt(jb,10))+Da,lineHeight:Rb,color:S(c(g.valuefontcolor,O),b(g.valuefontalpha,g.valuealpha,100)),fontWeight:b(g.valuefontbold)?"bold":"normal",fontStyle:b(g.valuefontitalic)?"italic":"normal",border:H||g.valuebgcolor?b(g.valueborderthickness,1)+"px solid":"",borderColor:H,borderThickness:b(g.valueborderthickness,1),borderPadding:b(g.valueborderpadding,2),borderRadius:b(g.valueborderradius,
0),backgroundColor:g.valuebgcolor?S(g.valuebgcolor,b(g.valuebgalpha,g.valuealpha,100)):a,borderDash:b(g.valueborderdashed,0)?k(b(g.valueborderdashlen,4),b(g.valueborderdashgap,2),b(g.valueborderthickness,1)):"none"};u(n.plotOptions.series.dataLabels.style);n.plotOptions.series.dataLabels.color=n.plotOptions.series.dataLabels.style.color;n.tooltip.style={fontFamily:N,fontSize:jb,lineHeight:Rb,color:O};n.title.style={fontFamily:c(g.captionfont,M),color:c(g.captionfontcolor,Pa).replace(/^#?([a-f0-9]+)/ig,
"#$1"),fontSize:b(g.captionfontsize,Va+3)+Da,fontWeight:0===b(g.captionfontbold)?"normal":"bold"};n.title.align=c(g.captionalignment,oa);n.title.isOnTop=b(g.captionontop,1);n.title.alignWithCanvas=b(g.aligncaptionwithcanvas,this.alignCaptionWithCanvas,1);n.title.horizontalPadding=b(g.captionhorizontalpadding,n.title.alignWithCanvas?0:15);u(n.title.style);n.subtitle.style={fontFamily:c(g.subcaptionfont,g.captionfont,M),color:c(g.subcaptionfontcolor,g.captionfontcolor,Pa).replace(/^#?([a-f0-9]+)/ig,
"#$1"),fontSize:b(g.subcaptionfontsize,b(W(b(g.captionfontsize)-3,-1),Va)+b(this.subTitleFontSizeExtender,1))+Da,fontWeight:0===b(g.subcaptionfontbold,this.subTitleFontWeight,g.captionfontbold)?"normal":"bold"};n.subtitle.align=n.title.align;n.subtitle.isOnTop=n.title.isOnTop;n.subtitle.alignWithCanvas=n.title.alignWithCanvas;n.subtitle.horizontalPadding=n.title.horizontalPadding;u(n.subtitle.style);H=(H=p(g.xaxisnamebordercolor,a))?S(H,b(g.xaxisnameborderalpha,g.xaxisnamealpha,100)):a;Ja.title.style=
{fontFamily:c(g.xaxisnamefont,M),fontSize:c(g.xaxisnamefontsize,parseInt(ub,10))+Da,color:S(c(g.xaxisnamefontcolor,Pa),b(g.xaxisnamefontalpha,g.xaxisnamealpha,100)),fontWeight:b(g.xaxisnamefontbold,1)?"bold":"normal",fontStyle:b(g.xaxisnamefontitalic)?"italic":"normal",border:H||g.xaxisnamebgcolor?b(g.xaxisnameborderthickness,1)+"px solid":void 0,borderColor:H,borderThickness:b(g.xaxisnameborderthickness,1),borderPadding:b(g.xaxisnameborderpadding,2),borderRadius:b(g.xaxisnameborderradius,0),backgroundColor:g.xaxisnamebgcolor?
S(g.xaxisnamebgcolor,b(g.xaxisnamebgalpha,g.xaxisnamealpha,100)):a,borderDash:b(g.xaxisnameborderdashed,0)?k(b(g.xaxisnameborderdashlen,4),b(g.xaxisnameborderdashgap,2),b(g.xaxisnameborderthickness,1)):"none"};u(Ja.title.style);H=(H=c(g.pyaxisnamebordercolor,g.yaxisnamebordercolor,a))?S(H,b(g.pyaxisnameborderalpha,g.yaxisnameborderalpha,g.pyaxisnamealpha,g.yaxisnamealpha,100)):a;n.yAxis[0].title.style={fontFamily:c(g.pyaxisnamefont,g.yaxisnamefont,M),fontSize:c(g.pyaxisnamefontsize,g.yaxisnamefontsize,
parseInt(ub,10))+Da,color:S(c(g.pyaxisnamefontcolor,g.yaxisnamefontcolor,Pa),b(g.pyaxisnamefontalpha,g.yaxisnamefontalpha,g.pyaxisnamealpha,g.yaxisnamealpha,100)),fontWeight:b(g.pyaxisnamefontbold,g.yaxisnamefontbold,1)?"bold":"normal",fontStyle:b(g.pyaxisnamefontitalic,g.yaxisnamefontitalic)?"italic":"normal",border:H||g.pyaxisnamebgcolor||g.yaxisnamebgcolor?b(g.pyaxisnameborderthickness,g.yaxisnameborderthickness,1)+"px solid":void 0,borderColor:H,borderThickness:b(g.pyaxisnameborderthickness,g.yaxisnameborderthickness,
1),borderPadding:b(g.pyaxisnameborderpadding,g.yaxisnameborderpadding,2),borderRadius:b(g.pyaxisnameborderradius,g.yaxisnameborderradius,0),backgroundColor:g.pyaxisnamebgcolor||g.yaxisnamebgcolor?S(c(g.pyaxisnamebgcolor,g.yaxisnamebgcolor),b(g.pyaxisnamebgalpha,g.yaxisnamebgalpha,g.pyaxisnamealpha,g.yaxisnamealpha,100)):a,borderDash:b(g.pyaxisnameborderdashed,g.yaxisnameborderdashed,0)?k(b(g.pyaxisnameborderdashlen,g.yaxisnameborderdashlen,4),b(g.pyaxisnameborderdashgap,g.yaxisnameborderdashgap,2),
b(g.pyaxisnameborderthickness,g.yaxisnameborderthickness,1)):"none"};u(n.yAxis[0].title.style);n.yAxis[1].title.style={fontFamily:M,color:Pa,fontSize:ub,lineHeight:void 0,fontWeight:"bold"};H=(H=c(g.syaxisnamebordercolor,g.yaxisnamebordercolor,a))?S(H,b(g.syaxisnameborderalpha,g.yaxisnameborderalpha,g.syaxisnamealpha,g.yaxisnamealpha,100)):a;n.yAxis[1].title.style={fontFamily:c(g.syaxisnamefont,g.yaxisnamefont,M),fontSize:c(g.syaxisnamefontsize,g.yaxisnamefontsize,parseInt(ub,10))+Da,color:S(c(g.syaxisnamefontcolor,
g.yaxisnamefontcolor,Pa),b(g.syaxisnamefontalpha,g.yaxisnamefontalpha,g.syaxisnamealpha,g.yaxisnamealpha,100)),fontWeight:b(g.syaxisnamefontbold,g.yaxisnamefontbold,1)?"bold":"normal",fontStyle:b(g.syaxisnamefontitalic,g.yaxisnamefontitalic)?"italic":"normal",border:H||g.syaxisnamebgcolor||g.yaxisnamebgcolor?b(g.syaxisnameborderthickness,g.yaxisnameborderthickness,1)+"px solid":void 0,borderColor:H,borderThickness:b(g.syaxisnameborderthickness,g.yaxisnameborderthickness,1),borderPadding:b(g.syaxisnameborderpadding,
g.yaxisnameborderpadding,2),borderRadius:b(g.syaxisnameborderradius,g.yaxisnameborderradius,0),backgroundColor:g.syaxisnamebgcolor||g.yaxisnamebgcolor?S(c(g.syaxisnamebgcolor,g.yaxisnamebgcolor),b(g.syaxisnamebgalpha,g.yaxisnamebgalpha,g.syaxisnamealpha,g.yaxisnamealpha,100)):a,borderDash:b(g.syaxisnameborderdashed,g.yaxisnameborderdashed,0)?k(b(g.syaxisnameborderdashlen,g.yaxisnameborderdashlen,4),b(g.syaxisnameborderdashgap,g.yaxisnameborderdashgap,2),b(g.syaxisnameborderthickness,g.yaxisnameborderthickness,
1)):"none"};u(n.yAxis[1].title.style);Y.overlapColumns=b(g[C&&"overlapbars"||"overlapcolumns"],r?0:1);n.orphanStyles={defaultStyle:{style:h({},Q.inCanvasStyle)},connectorlabels:{style:h({},n.plotOptions.series.dataLabels)},vyaxisname:{style:h({},n.yAxis[0].title.style)}};n.plotOptions.series.dataLabels.tlLabelStyle={fontFamily:l(g.tlfont,N),color:T(l(g.tlfontcolor,O)),fontSize:L(g.tlfontsize,Bb)+"px"};u(n.plotOptions.series.dataLabels.tlLabelStyle);n.plotOptions.series.dataLabels.trLabelStyle={fontFamily:l(g.trfont,
N),color:T(l(g.trfontcolor,O)),fontSize:L(g.trfontsize,Bb)+"px"};u(n.plotOptions.series.dataLabels.trLabelStyle);n.plotOptions.series.dataLabels.blLabelStyle={fontFamily:l(g.blfont,N),color:T(l(g.blfontcolor,O)),fontSize:L(g.blfontsize,Bb)+"px"};u(n.plotOptions.series.dataLabels.blLabelStyle);n.plotOptions.series.dataLabels.brLabelStyle={fontFamily:l(g.brfont,N),color:T(l(g.brfontcolor,O)),fontSize:L(g.brfontsize,Bb)+"px"};u(n.plotOptions.series.dataLabels.brLabelStyle);this.parseStyles(n);delete n.xAxis.labels.style.backgroundColor;
delete n.xAxis.labels.style.borderColor;delete n.yAxis[0].labels.style.backgroundColor;delete n.yAxis[0].labels.style.borderColor;delete n.yAxis[1].labels.style.backgroundColor;delete n.yAxis[1].labels.style.borderColor;Q.showTooltip=b(g.showtooltip,this.showtooltip,1);Q.tooltipSepChar=c(g.tooltipsepchar,this.tooltipsepchar,pb);Q.showValues=b(g.showvalues,this.showValues,1);Q.seriesNameInToolTip=b(g.seriesnameintooltip,1);Q.showVLines=b(g.showvlines,1);Q.showVLinesOnTop=b(g.showvlinesontop,0);Q.showVLineLabels=
b(g.showvlinelabels,this.showVLineLabels,1);Q.showVLineLabelBorder=b(g.showvlinelabelborder,1);Q.rotateVLineLabels=b(g.rotatevlinelabels,0);Q.vLineColor=c(g.vlinecolor,"333333");Q.vLineLabelColor=c(g.vlinelabelcolor);Q.vLineThickness=c(g.vlinethickness,1);Q.vLineAlpha=b(g.vlinealpha,80);Q.vLineLabelBgColor=c(g.vlinelabelbgcolor,"ffffff");Q.vLineLabelBgAlpha=b(g.vlinelabelbgalpha,r?50:100);Q.trendlineColor=c(g.trendlinecolor,"333333");Q.trendlineThickness=c(g.trendlinethickness,1);Q.trendlineAlpha=
b(g.trendlinealpha);Q.showTrendlinesOnTop=c(g.showtrendlinesontop,0);Q.trendlineValuesOnOpp=c(g.trendlinevaluesonopp,g.trendlinevaluesonright,0);Q.trendlinesAreDashed=b(g.trendlinesaredashed,0);Q.trendlinesDashLen=b(g.trendlinedashlen,5);Q.trendlinesDashGap=b(g.trendlinedashgap,2);Q.showTrendlines=b(g.showtrendlines,1);Q.showTrendlineLabels=b(g.showtrendlinelabels,this.showTrendlineLabels,1);Q.flatScrollBars=b(g.flatscrollbars,0);Q.scrollBar3DLighting=b(g.scrollbar3dlighting,1);Y.anchorTrackingRadius=
b(g.anchortrackingradius,G?ga:X);n.plotOptions.series.connectNullData=b(g.connectnulldata,0);Y.backgroundColor={FCcolor:{color:c(g.bgcolor,D.getColor(J.bgColor)),alpha:c(g.bgalpha,D.getColor(J.bgAlpha)),angle:c(g.bgangle,D.getColor(J.bgAngle)),ratio:c(g.bgratio,D.getColor(J.bgRatio))}};Y.rotateValues=b(g.rotatevalues,0);Y.placeValuesInside=b(g.placevaluesinside,0);Y.valuePosition=c(g.valueposition,"auto");Y.valuePadding=b(g.valuepadding,2);Y.managePlotOverflow=b(g.manageplotoverflow,1);Y.borderColor=
S(c(g.bordercolor,r?"#666666":D.getColor("borderColor")),c(g.borderalpha,r?"100":D.getColor("borderAlpha")));wa=b(g.showborder,r?0:1);Y.borderWidth=wa?b(g.borderthickness,1):0;Y.borderRadius=b(g.borderradius,0);Y.borderDashStyle=b(g.borderdashed,0)?k(b(g.borderdashlen,4),b(g.borderdashgap,2),Y.borderWidth):"none";Y.plotBorderColor=S(c(g.canvasbordercolor,D.getColor("canvasBorderColor")),c(g.canvasborderalpha,D.getColor("canvasBorderAlpha")));"0"!==g.showcanvasborder&&(K=Boolean(c(g.canvasborderthickness,
Ta?0:1)),"1"!==g.showaxislines&&"1"!==g.showxaxisline&&"1"!==g.showyaxisline&&"1"!==g.showsyaxisline||"1"===g.showcanvasborder||(K=0));Y.plotBorderWidth=r||!K?0:b(g.canvasborderthickness,this.canvasborderthickness,Y.useRoundEdges?1:2);Y.bgSWF=c(g.bgimage,g.bgswf);Y.bgSWFAlpha=b(g.bgimagealpha,g.bgswfalpha,100);ma=c(g.bgimagedisplaymode,"none").toLowerCase();ja=l(g.bgimagevalign,a).toLowerCase();ha=l(g.bgimagehalign,a).toLowerCase();"tile"==ma||"fill"==ma||"fit"==ma?(ja!=ia&&"middle"!=ja&&ja!=Ea&&
(ja="middle"),ha!=La&&"middle"!=ha&&ha!=fa&&(ha="middle")):(ja!=ia&&"middle"!=ja&&ja!=Ea&&(ja=ia),ha!=La&&"middle"!=ha&&ha!=fa&&(ha=La));Y.bgImageDisplayMode=ma;Y.bgImageVAlign=ja;Y.bgImageHAlign=ha;Y.bgImageScale=b(g.bgimagescale,100);Y.logoURL=l(g.logourl);Y.logoPosition=c(g.logoposition,"tl").toLowerCase();Y.logoAlpha=b(g.logoalpha,100);Y.logoLink=l(g.logolink);Y.logoScale=b(g.logoscale,100);Y.logoLeftMargin=b(g.logoleftmargin,0);Y.logoTopMargin=b(g.logotopmargin,0);va=Y.toolbar={button:{}};na=
va.button;na.scale=b(g.toolbarbuttonscale,1.15);na.width=b(g.toolbarbuttonwidth,15);na.height=b(g.toolbarbuttonheight,15);na.radius=b(g.toolbarbuttonradius,2);na.spacing=b(g.toolbarbuttonspacing,5);na.fill=S(c(g.toolbarbuttoncolor,"ffffff"));na.labelFill=S(c(g.toolbarlabelcolor,"cccccc"));na.symbolFill=S(c(g.toolbarsymbolcolor,"ffffff"));na.hoverFill=S(c(g.toolbarbuttonhovercolor,"ffffff"));na.stroke=S(c(g.toolbarbuttonbordercolor,"bbbbbb"));na.symbolStroke=S(c(g.toolbarsymbolbordercolor,"9a9a9a"));
na.strokeWidth=b(g.toolbarbuttonborderthickness,1);na.symbolStrokeWidth=b(g.toolbarsymbolborderthickness,1);za=na.symbolPadding=b(g.toolbarsymbolpadding,5);na.symbolHPadding=b(g.toolbarsymbolhpadding,za);na.symbolVPadding=b(g.toolbarsymbolvpadding,za);Ba=va.position=c(g.toolbarposition,"tr").toLowerCase();switch(Ba){case "tr":case "rt":case "top right":case "right top":Ba="tr";break;case "br":case "rb":case "bottom right":case "right bottom":Ba="br";break;case "tl":case "lt":case "top left":case "left top":Ba=
"tl";break;case "bl":case "lb":case "bottom left":case "left bottom":Ba="bl";break;default:Ba="tr"}Fa=va.hAlign="left"===(a+g.toolbarhalign).toLowerCase()?"l":Ba.charAt(1);Xa=va.vAlign="bottom"===(a+g.toolbarvalign).toLowerCase()?"b":Ba.charAt(0);va.hDirection=b(g.toolbarhdirection,"r"===Fa?-1:1);va.vDirection=b(g.toolbarvdirection,"b"===Xa?-1:1);va.vMargin=b(g.toolbarvmargin,6);va.hMargin=b(g.toolbarhmargin,10);va.x=b(g.toolbarx,"l"===Fa?0:d);va.y=b(g.toolbary,"t"===Xa?0:w);cb=c(g.divlinecolor,D.getColor(J.divLineColor));
gb=c(g.divlinealpha,r?D.getColor("divLineAlpha3D"):D.getColor("divLineAlpha"));fb=b(g.divlinethickness,1);Jb=Boolean(b(g.divlinedashed,g.divlineisdashed,this.divLineIsDashed,0));Yb=b(g.divlinedashlen,4);xb=b(g.divlinedashgap,2);n.yAxis[0].gridLineColor=S(cb,gb);n.yAxis[0].gridLineWidth=fb;n.yAxis[0].gridLineDashStyle=Jb?k(Yb,xb,fb):"none";n.yAxis[0].alternateGridColor=C?S(c(g.alternatevgridcolor,D.getColor("altVGridColor")),1===b(g.showalternatevgridcolor,1)?c(g.alternatevgridalpha,D.getColor("altVGridAlpha")):
Sa):S(c(g.alternatehgridcolor,D.getColor("altHGridColor")),"0"===g.showalternatehgridcolor?0:c(g.alternatehgridalpha,D.getColor("altHGridAlpha")));$b=b(g.vdivlinethickness,1);jc=Boolean(b(g.vdivlinedashed,g.vdivlineisdashed,0));kc=b(g.vdivlinedashlen,4);Lb=b(g.vdivlinedashgap,2);Ja.gridLineColor=S(c(g.vdivlinecolor,D.getColor(J.divLineColor)),c(g.vdivlinealpha,D.getColor("divLineAlpha")));Ja.gridLineWidth=$b;Ja.gridLineDashStyle=jc?k(kc,Lb,$b):"none";Ja.alternateGridColor=S(c(g.alternatevgridcolor,
D.getColor("altVGridColor")),"1"===g.showalternatehgridcolor?c(g.alternatevgridalpha,D.getColor("altVGridAlpha")):0);Zb=c(g.canvasbgcolor,D.getColor(J.canvasBgColor));bc=c(g.canvasbgalpha,D.getColor("canvasBgAlpha"));c(g.showcanvasbg,Ia)==Sa&&(bc="0");n.plotOptions.series.shadow=b(g.showshadow,g.showcolumnshadow,this.defaultPlotShadow,D.getColor("showShadow"));this.inversed&&(n.yAxis[0].reversed=!0,n.yAxis[1].reversed=!0);this.isStacked&&(this.distributedColumns?(Q.showStackTotal=Boolean(b(g.showsum,
1)),Z=b(g.usepercentdistribution,1),nb=b(g.showpercentvalues,0),zb=b(g.showpercentintooltip,Z,0),Q.showXAxisPercentValues=b(g.showxaxispercentvalues,1)):(Q.showStackTotal=Boolean(b(this.showSum,g.showsum,0)),Z=b(this.stack100percent,g.stack100percent,0),nb=b(g.showpercentvalues,Z,0),zb=b(g.showpercentintooltip,nb)),Q.showPercentValues=nb,Q.showPercentInToolTip=zb,Z?(Q.isValueAbs=!0,ua[B].stacking="percent",Q[0].stacking100Percent=!0):ua[B].stacking="normal");this.isDual&&("0"===g.primaryaxisonleft&&
(n.yAxis[0].opposite=!0,n.yAxis[1].opposite=!1),n.yAxis[0].showAlways=!0,n.yAxis[1].showAlways=!0);Y.useRoundEdges&&(n.plotOptions.series.shadow=b(g.showshadow,g.showcolumnshadow,1),n.plotOptions.series.borderRadius=1,n.tooltip.style.borderRadius="2px",Y.plotBorderRadius=3,K||(Y.plotBorderWidth=0),Y.plotShadow=n.plotOptions.series.shadow?{enabled:!0,opacity:bc/100}:0);1===b(g.use3dlighting,1)&&(n.legend.lighting3d=!0);n.plotOptions.series.userMaxColWidth=C?g.maxbarheight:b(g.maxcolwidth,this.maxColWidth);
n.plotOptions.series.maxColWidth=ya(b(n.plotOptions.series.userMaxColWidth,50))||1;n.title.text=s(g.caption);n.subtitle.text=s(g.subcaption);0===b(g.showtooltip,this.showtooltip)&&(n.tooltip.enabled=!1);Ua=n.tooltip.style;Ua.backgroundColor=S(c(Ua.backgroundColor,g.tooltipbgcolor,D.getColor("toolTipBgColor")),c(g.tooltipbgalpha,100));Ua.borderColor=S(c(Ua.borderColor,g.tooltipbordercolor,D.getColor("toolTipBorderColor")),c(g.tooltipborderalpha,100));n.tooltip.shadow=b(g.showtooltipshadow,g.showshadow,
1)?{enabled:!0,opacity:W(b(g.tooltipbgalpha,100),b(g.tooltipborderalpha,100))/100}:!1;n.tooltip.constrain=b(g.constraintooltip,1);Ua.borderWidth=b(g.tooltipborderthickness,1)+"px";g.tooltipborderradius&&(Ua.borderRadius=b(g.tooltipborderradius,1)+"px");Ua.padding=b(g.tooltippadding,this.tooltippadding,3)+"px";g.tooltipcolor&&(Ua.color=T(g.tooltipcolor));Q.userPlotSpacePercent=n.plotOptions.series.userPlotSpacePercent=g.plotspacepercent;eb=b(g.plotspacepercent,20)%100;Q.plotSpacePercent=n.plotOptions.series.groupPadding=
eb/200;r&&!ba?(Y.series2D3Dshift="mscombi3d"===A?!0:Boolean(b(g.use3dlineshift,0)),Y.canvasBaseColor3D=c(g.canvasbasecolor,D.getColor("canvasBaseColor3D")),Y.canvasBaseDepth=b(g.canvasbasedepth,10),Y.canvasBgDepth=b(g.canvasbgdepth,3),Y.showCanvasBg=Boolean(b(g.showcanvasbg,1)),Y.showCanvasBase=Boolean(b(g.showcanvasbase,1)),C?(Y.xDepth=5,Y.yDepth=5,Y.showCanvasBg&&(Q.marginTopExtraSpace+=Y.canvasBgDepth),Q.marginLeftExtraSpace+=Y.yDepth+(Y.showCanvasBase?Y.canvasBaseDepth:0),Q.marginBottomExtraSpace+=
5):(Y.xDepth=10,Y.yDepth=10,Y.showCanvasBg&&(Q.marginRightExtraSpace+=Y.canvasBgDepth),Q.marginBottomExtraSpace+=Y.yDepth+(Y.showCanvasBase?Y.canvasBaseDepth:0)),Zb=Zb.split(xa)[0],bc=bc.split(xa)[0],Y.use3DLighting=Boolean(b(g.use3dlighting,1)),Y.plotBackgroundColor=Y.use3DLighting?{FCcolor:{color:sa(Zb,85)+xa+ta(Zb,55),alpha:bc+xa+bc,ratio:vb,angle:Ib(d-(Y.marginLeft+Y.marginRight),w-(Y.marginTop+Y.marginBottom),1)}}:S(Zb,bc),Y.canvasBgColor=S(sa(Zb,80),bc),v=c(g.zeroplanecolor,g.divlinecolor,D.getColor(J.divLineColor)),
t=c(g.zeroplanealpha,g.divlinealpha,D.getColor("divLineAlpha")),Y.zeroPlaneColor=S(v,t),Y.zeroPlaneBorderColor=S(c(g.zeroplanebordercolor,v),b(g.zeroplaneshowborder,1)?t:0),Y.zeroPlaneShowBorder=b(g.zeroplaneshowborder,1)):(Y.is3D=!1,Y.plotBackgroundColor={FCcolor:{color:Zb,alpha:bc,angle:c(g.canvasbgangle,D.getColor("canvasBgAngle")),ratio:c(g.canvasbgratio,D.getColor("canvasBgRatio"))}});this.parseExportOptions(n);this.parseHoverEffectOptions(Y);this.preSeriesAddition&&this.preSeriesAddition(n,
m,d,w);this.series&&this.series(m,n,A,d,w);this.postSeriesAddition(n,m,d,w);this.spaceManager(n,m,d,w);this.postSpaceManager&&this.postSpaceManager(n,m,d,w);Za=b(g.drawquadrant,0);Q.isXYPlot&&Za&&(Wa=Ja.min,Ca=Ja.max,rb=n.yAxis[0].min,Qa=n.yAxis[0].max,Cb=b(g.quadrantxval,(Wa+Ca)/2),sb=b(g.quadrantyval,(rb+Qa)/2),sb>=rb&&sb<=Qa&&Cb>=Wa&&Cb<=Ca&&(ob=S(c(g.quadrantlinecolor,Y.plotBorderColor),c(g.quadrantlinealpha,Ra)),$a=b(g.quadrantlinethickness,Y.plotBorderWidth),Nb=b(g.quadrantlinedashed,g.quadrantlineisdashed,
0),Wb=b(g.quadrantlinedashLen,4),Ma=b(g.quadrantlinedashgap,2),Eb=l(g.quadrantlabeltl,a),Mb=l(g.quadrantlabeltr,a),Vb=l(g.quadrantlabelbl,a),dc=l(g.quadrantlabelbr,a),ec=b(g.quadrantlabelpadding,3),hc=Nb?k(Wb,Ma,$a):"none",Ja.plotLines.push({color:ob,value:Cb,width:$a,dashStyle:hc,zIndex:3}),n.yAxis[0].plotLines.push({color:ob,value:sb,width:$a,dashStyle:hc,zIndex:3}),fc=d-Y.marginRight-Y.marginLeft,Ob=w-Y.marginTop-Y.marginBottom,kb=Q.inCanvasStyle,qa=fc/(Ca-Wa)*(Cb-Wa),Xb=fc-qa,Ka=Ob/(Qa-rb)*(sb-
rb),gc=Ob-Ka,qa-=ec,Xb-=ec,gc-=ec,Ka-=ec,Fb=ec+Da,Gb=Ob-ec+Da,ic=ec+Da,Tb=fc-ec+Da,F.setStyle(kb),0<gc&&(Eb!==a&&0<qa&&(H=p(g.quadrantlabeltlbordercolor,g.quadrantlabelbordercolor,a),Hb=c(g.quadrantlabeltlbgcolor,g.quadrantlabelbgcolor),Sb=b(g.quadrantlabeltlborderthickness,g.quadrantlabelborderthickness,1),H=H?S(H,b(g.quadrantlabeltlborderalpha,g.quadrantlabelborderalpha,g.quadrantlabeltlalpha,g.quadrantlabelalpha,100)):a,ac={left:ic,top:Fb,fontSize:c(b(g.quadrantlabeltlfontsize,g.quadrantlabelfontsize),
parseInt(kb.fontSize,10))+Da,lineHeight:kb.lineHeight,fontFamily:c(g.quadrantlabeltlfont,g.quadrantlabelfont,kb.fontFamily),color:S(c(g.quadrantlabeltlfontcolor,g.quadrantlabelfontcolor,kb.color),b(g.quadrantlabeltlfontalpha,g.quadrantlabelfontalpha,100)),fontWeight:b(g.quadrantlabeltlfontbold,g.quadrantlabelfontbold)?"bold":"normal",fontStyle:b(g.quadrantlabeltlfontitalic,g.quadrantlabelfontitalic)?"italic":"normal",border:H||Hb?Sb+"px solid":a,borderColor:H,borderThickness:Sb,borderPadding:b(g.quadrantlabeltlborderpadding,
g.quadrantlabelborderpadding,2),borderRadius:b(g.quadrantlabeltlborderradius,g.quadrantlabelborderradius,0),backgroundColor:Hb?S(Hb,b(g.quadrantlabeltlbgalpha,g.quadrantlabelbgalpha,g.quadrantlabeltlalpha,g.quadrantlabelalpha,100)):a,borderDash:b(g.quadrantlabeltlborderdashed,g.quadrantlabelborderdashed,0)?k(b(g.quadrantlabeltlborderdashlen,g.quadrantlabelborderdashlen,4),b(g.quadrantlabeltlborderdashgap,g.quadrantlabelborderdashgap,2),Sb):"none"},u(ac),F.setStyle(ac),Ab=F.getSmartText(Eb,qa,gc),
n.labels.items.push({html:Ab.text,title:Ab.title,zIndex:3,vAlign:ia,style:ac})),Mb!==a&&0<Xb&&(H=p(g.quadrantlabeltrbordercolor,g.quadrantlabelbordercolor,a),Hb=c(g.quadrantlabeltrbgcolor,g.quadrantlabelbgcolor),Sb=b(g.quadrantlabeltrborderthickness,g.quadrantlabelborderthickness,1),H=H?S(H,b(g.quadrantlabeltrborderalpha,g.quadrantlabelborderalpha,g.quadrantlabeltralpha,g.quadrantlabelalpha,100)):a,ac={left:Tb,top:Fb,fontSize:c(b(g.quadrantlabeltrfontsize,g.quadrantlabelfontsize),parseInt(kb.fontSize,
10))+Da,lineHeight:kb.lineHeight,fontFamily:c(g.quadrantlabeltrfont,g.quadrantlabelfont,kb.fontFamily),color:S(c(g.quadrantlabeltrfontcolor,g.quadrantlabelfontcolor,kb.color),b(g.quadrantlabeltrfontalpha,g.quadrantlabelfontalpha,100)),fontWeight:b(g.quadrantlabeltrfontbold,g.quadrantlabelfontbold)?"bold":"normal",fontStyle:b(g.quadrantlabeltrfontitalic,g.quadrantlabelfontitalic)?"italic":"normal",border:H||Hb?Sb+"px solid":a,borderColor:H,borderThickness:Sb,borderPadding:b(g.quadrantlabeltrborderpadding,
g.quadrantlabelborderpadding,2),borderRadius:b(g.quadrantlabeltrborderradius,g.quadrantlabelborderradius,0),backgroundColor:Hb?S(Hb,b(g.quadrantlabeltrbgalpha,g.quadrantlabelbgalpha,g.quadrantlabeltralpha,g.quadrantlabelalpha,100)):a,borderDash:b(g.quadrantlabeltrborderdashed,g.quadrantlabelborderdashed,0)?k(b(g.quadrantlabeltrborderdashlen,g.quadrantlabelborderdashlen,4),b(g.quadrantlabeltrborderdashgap,g.quadrantlabelborderdashgap,2),Sb):"none"},u(ac),F.setStyle(ac),Ab=F.getSmartText(Mb,qa,gc),
n.labels.items.push({html:Ab.text,textAlign:fa,title:Ab.title,zIndex:3,vAlign:ia,style:ac}))),0<Ka&&(Vb!==a&&0<qa&&(H=p(g.quadrantlabelblbordercolor,g.quadrantlabelbordercolor,a),Hb=c(g.quadrantlabelblbgcolor,g.quadrantlabelbgcolor),Sb=b(g.quadrantlabelblborderthickness,g.quadrantlabelborderthickness,1),H=H?S(H,b(g.quadrantlabelblborderalpha,g.quadrantlabelborderalpha,g.quadrantlabelblalpha,g.quadrantlabelalpha,100)):a,ac={left:ic,top:Gb,fontSize:c(b(g.quadrantlabelblfontsize,g.quadrantlabelfontsize),
parseInt(kb.fontSize,10))+Da,lineHeight:kb.lineHeight,fontFamily:c(g.quadrantlabelblfont,g.quadrantlabelfont,kb.fontFamily),color:S(c(g.quadrantlabelblfontcolor,g.quadrantlabelfontcolor,kb.color),b(g.quadrantlabelblfontalpha,g.quadrantlabelfontalpha,100)),fontWeight:b(g.quadrantlabelblfontbold,g.quadrantlabelfontbold)?"bold":"normal",fontStyle:b(g.quadrantlabelblfontitalic,g.quadrantlabelfontitalic)?"italic":"normal",border:H||Hb?Sb+"px solid":a,borderColor:H,borderThickness:Sb,borderPadding:b(g.quadrantlabelblborderpadding,
g.quadrantlabelborderpadding,2),borderRadius:b(g.quadrantlabelblborderradius,g.quadrantlabelborderradius,0),backgroundColor:Hb?S(Hb,b(g.quadrantlabelblbgalpha,g.quadrantlabelbgalpha,g.quadrantlabelblalpha,g.quadrantlabelalpha,100)):a,borderDash:b(g.quadrantlabelblborderdashed,g.quadrantlabelborderdashed,0)?k(b(g.quadrantlabelblborderdashlen,g.quadrantlabelborderdashlen,4),b(g.quadrantlabelblborderdashgap,g.quadrantlabelborderdashgap,2),Sb):"none"},u(ac),F.setStyle(ac),Ab=F.getSmartText(Vb,qa,gc),
n.labels.items.push({html:Ab.text,textAlign:La,title:Ab.title,zIndex:3,vAlign:Ea,style:ac})),dc!==a&&0<Xb&&(H=p(g.quadrantlabelbrbordercolor,g.quadrantlabelbordercolor,a),Hb=c(g.quadrantlabelbrbgcolor,g.quadrantlabelbgcolor),Sb=b(g.quadrantlabelbrborderthickness,g.quadrantlabelborderthickness,1),H=H?S(H,b(g.quadrantlabelbrborderalpha,g.quadrantlabelborderalpha,g.quadrantlabelbralpha,g.quadrantlabelalpha,100)):a,ac={left:Tb,top:Gb,fontSize:c(b(g.quadrantlabelbrfontsize,g.quadrantlabelfontsize),parseInt(kb.fontSize,
10))+Da,lineHeight:kb.lineHeight,fontFamily:c(g.quadrantlabelbrfont,g.quadrantlabelfont,kb.fontFamily),color:S(c(g.quadrantlabelbrfontcolor,g.quadrantlabelfontcolor,kb.color),b(g.quadrantlabelbrfontalpha,g.quadrantlabelfontalpha,100)),fontWeight:b(g.quadrantlabelbrfontbold,g.quadrantlabelfontbold)?"bold":"normal",fontStyle:b(g.quadrantlabelbrfontitalic,g.quadrantlabelfontitalic)?"italic":"normal",border:H||Hb?Sb+"px solid":a,borderColor:H,borderThickness:Sb,borderPadding:b(g.quadrantlabelbrborderpadding,
g.quadrantlabelborderpadding,2),borderRadius:b(g.quadrantlabelbrborderradius,g.quadrantlabelborderradius,0),backgroundColor:Hb?S(Hb,b(g.quadrantlabelbrbgalpha,g.quadrantlabelbgalpha,g.quadrantlabelbralpha,g.quadrantlabelalpha,100)):a,borderDash:b(g.quadrantlabelbrborderdashed,g.quadrantlabelborderdashed,0)?k(b(g.quadrantlabelbrborderdashlen,g.quadrantlabelborderdashlen,4),b(g.quadrantlabelbrborderdashgap,g.quadrantlabelborderdashgap,2),Sb):"none"},u(ac),F.setStyle(ac),Ab=F.getSmartText(dc,qa,gc),
n.labels.items.push({html:Ab.text,textAlign:fa,vAlign:Ea,title:Ab.title,zIndex:3,style:ac})))));if(this.hasVDivLine&&(wb=b(g.showvdivlines,0),oc=b(g.numvdivlines,0)+1,wb&&(oc=Q.x.catCount-1),1<oc)){lb=Ja.min;Wc=Q.x.catCount-1;Db=Ja.max;Pb=Wc/oc;Jc=!0;Pc=lb;Ja.scroll&&!isNaN(Ja.scroll.viewPortMax)&&(Db=Ja.scroll.viewPortMax);Qb=c(g.vdivlinecolor,cb);bd=b(g.vdivlinealpha,gb);$b=b(g.vdivlinethickness,fb);jc=b(g.vdivlinedashed,g.vdivlineisdashed,Jb);kc=b(g.vdivlinedashlen,Yb);Lb=b(g.vdivlinedashgap,xb);
(tc=b(g.showalternatevgridcolor,0))&&(Xc=S(c(g.alternatevgridcolor,D.getColor("altVGridColor")),c(g.alternatevgridalpha,D.getColor("altVGridAlpha"))));for(Ya=Pb;Ya<Wc;Ya+=Pb,Jc=!Jc)Jc&&tc&&Ja.plotBands.push({isNumVDIV:!0,color:Xc,from:Pc,to:Ya,zIndex:1}),Ja.plotLines.push({isNumVDIV:!0,width:$b,color:S(Qb,bd),dashStyle:jc?k(kc,Lb,$b):"none",value:Ya,zIndex:1}),Pc=Ya;Jc&&tc&&Ja.plotBands.push({isNumVDIV:!0,color:Xc,from:Pc,to:Db,zIndex:1})}la=Y.marginTop;Ha=Y.marginBottom;Aa=Y.marginLeft;Ga=Y.marginRight;
ca.canvasstartx=Aa;ca.canvasstarty=la;ca.canvasendx=d-Ga;ca.canvasendy=w-Ha;ca.canvaswidth=ca.canvasendx-ca.canvasstartx;ca.canvasheight=ca.canvasendy-ca.canvasstarty;n.legend&&n.legend.enabled&&"vertical"===n.legend.layout&&(ca.legendstarty=la+.5*(Q.height-Ha-la-ca.legendheight)+(n.legend.y||0),ca.legendendy=ca.legendstarty+ca.legendheight);r&&Y.xDepth>Y.marginLeft&&(Y.marginLeft=Y.xDepth);q.console&&q.console.log&&q.FC_DEV_ENVIRONMENT&&console.log(n);return n},parseHoverEffectOptions:function(a){var d=
this.dataObj.chart,e;a.showHoverEffect=d.showhovereffect;a.plotHoverEffect=b(d.plothovereffect,d.anchorhovereffect,a.showHoverEffect);e=a.plotHoverEffects={enabled:a.plotHoverEffect};e.highlight=b(d.highlightonhover,d.highlightplotonhover,a.plotHoverEffect);e.columnHighlight=b(e.highlight,d.highlightcolumnonhover,d.highlightbaronhover);e.anchorHighlight=b(e.highlight,d.highlightanchoronhover);e.imageHighlight=b(e.highlight,d.highlightanchorimageonhover);e.anchorImageHoverAlpha=c(d.anchorimagehoveralpha);
e.anchorImageHoverScale=c(d.anchorimagehoverscale);e.bubbleHighlight=b(e.highlight,d.highlightbubbleonhover);e.color=c(d.plotfillhovercolor,d.columnhovercolor,d.barhovercolor,d.bubblehovercolor);e.alpha=c(d.plotfillhoveralpha,d.columnhoveralpha,d.barhoveralpha,d.bubblehoveralpha);e.scale=c(d.plothoverscale,d.columnhoverscale,d.barhoverscale,d.bubblehoverscale);e.gradientColor=d.plothovergradientcolor;e.ratio=d.plothoverratio;e.angle=d.plothoverangle;e.borderColor=d.plotborderhovercolor;e.borderAlpha=
d.plotborderhoveralpha;e.borderThickness=d.plotborderhoverthickness;e.borderDashed=d.plotborderhoverdashed;e.borderDashGap=d.plotborderhoverdashgap;e.borderDashLen=d.plotborderhoverdashlen;e.shadow=d.plothovershadow;e.anchorScale=d.anchorhoverscale;e.anchorSides=d.anchorhoversides;e.anchorRadius=d.anchorhoverradius;e.anchorAlpha=d.anchorhoveralpha;e.anchorBgColor=c(d.anchorbghovercolor,d.anchorhovercolor);e.anchorBgAlpha=d.anchorbghoveralpha;e.anchorBorderColor=d.anchorborderhovercolor;e.anchorBorderAlpha=
d.anchorborderhoveralpha;e.anchorBorderThickness=d.anchorborderhoverthickness;e.anchorStartAngle=d.anchorhoverstartangle;e.anchorDip=b(d.anchorhoverdip);e.anchorAnimation=b(d.anchorhoveranimation,1);e.negativeColor=c(d.negativehovercolor,d.negativecolor);e.is3DBubble=b(d.is3donhover)},parseExportOptions:function(d){var e=this.chartInstance,k=this.dataObj.chart;h(d.exporting,{enabled:b(k.exportenabled,0),bgcolor:e.jsVars.transparent||0===b(e.options.containerBackgroundOpacity,1)?a:e.options.containerBackgroundColor||
"#ffffff",bgalpha:(e.jsVars.transparent?0:b(e.options.containerBackgroundOpacity,1))+a,exporttargetwindow:c(k.exporttargetwindow,Lb?"_blank":"_self"),exportaction:k.exportaction&&"save"===k.exportaction.toString().toLowerCase()&&"save"||"download",exportfilename:c(k.exportfilename,"FusionCharts"),exporthandler:c(k.html5exporthandler,k.exporthandler,F),exportparameters:c(k.exportparameters,a),exportformat:c(k.exportformat,"PNG"),exportcallback:c(k.exportcallback,a),exportwithimages:b(k.exportwithimages,
0),exportatclientside:b(k.exportatclientside,0),buttons:{printButton:{enabled:!!b(k.printshowbutton,k.showprintmenuitem,0)},exportButton:{enabled:!(!b(k.exportenabled,0)||!b(k.exportshowbutton,k.exportshowmenuitem,1))}}});var e=d.exporting,f;k=k.exportformats;d=N(d.exporting.exportaction);d={JPG:d+" as JPEG image",PNG:d+" as PNG image",PDF:d+" as PDF document",SVG:d+" as SVG vector image"};var g,l,A;if(k){k=k.split(/\s*?\|\s*?/);for(A=0;A<k.length;A++)l=(g=k[A].split(/\s*?=\s*?/))&&g[0].toUpperCase()||
a,g=g&&g[1]||a,d[l]&&(f||(f={}))&&(f[l]=g||d[l]);f=f||d}else f=d;e.exportformats=f},defaultSeriesType:a,paletteIndex:1,creditLabel:!1,titleSpaceManager:Aa,placeLegendBlockBottom:Va,configureLegendOptions:Ha,placeLegendBlockRight:Ga,placeHorizontalAxis:ca,placeVerticalAxis:ab,placeHorizontalCanvasMarginAdjustment:qc,placeVerticalCanvasMarginAdjustment:ub,placeHorizontalXYSpaceManager:function(a,d,h,k){var g=a[e],f,l,A,m,D=d.chart,n,p,s,G,r,q,v,u=a.chart,V=g.marginLeftExtraSpace,t=g.marginTopExtraSpace,
Z=g.marginBottomExtraSpace,F=g.marginRightExtraSpace;m=h-(V+F+u.marginRight+u.marginLeft);var Q=k-(Z+u.marginBottom+u.marginTop),ba=.3*m;h=.3*Q;var B=a.xAxis.showLine?a.xAxis.lineThickness:0;A=a.yAxis[0].showLine?a.yAxis[0].lineThickness:0;f=m-ba;k=Q-h;n=c(D.legendposition,Ea).toLowerCase();a.legend.enabled&&n===fa&&(f-=this.placeLegendBlockRight(a,d,f/2,Q));r=b(D.xaxisnamepadding,5);q=b(D.labelpadding,4);v=c(D.rotatexaxisname,"ccw");v=v===Sa?"none":v;p=c(D.showplotborder,g.is3d?Sa:Ia)===Ia;p=g.plotBorderThickness=
p?g.is3d?1:b(D.plotborderthickness,1):0;s=W(b(u.plotBorderWidth,1),0);!g.isDual&&u.marginRight<s&&void 0===D.chartrightmargin&&(l=s-u.marginRight,m>ba+l&&(u.marginRight=s,m-=l,ba=.3*m,f=m-ba));l=g.x;G=W(s,p/2);q<G&&(q=G);l.verticalAxisNamePadding=r;l.verticalAxisValuesPadding=q+B;l.rotateVerticalAxisName=v;l.verticalAxisNameWidth=b(D.xaxisnamewidth);f-=ab(a.xAxis,l,a,d,Q,f,!1,!1,m);a.xAxis.lineEndExtension=A;f-=qc(a,d,f,a.xAxis);m=f+ba;a.legend.enabled&&n!==fa&&(k-=this.placeLegendBlockBottom(a,d,
m,k/2));k-=this.titleSpaceManager(a,d,m,k/2);l=g[0];l.horizontalAxisNamePadding=b(D.yaxisnamepadding,5);l.horizontalLabelPadding=W(b(D.yaxisvaluespadding,4))+A;l.labelDisplay="auto";l.staggerLines=b(D.staggerlines,2);l.slantLabels=b(D.slantlabels,0);l.horizontalLabelPadding=l.horizontalLabelPadding<s?s:l.horizontalLabelPadding;this.xAxisMinMaxSetter(a,d,m);A=a.xAxis;r=A.plotLines;f=k/(A.max-A.min);r&&r.length&&(s=(r[0].value-A.min)*f,r=(A.max-r[r.length-1].value)*f,g.isBar&&(p>s&&(A.min-=(p-s)/(2*
f)),p>r&&(A.max+=(p-r)/(2*f))));k-=this.placeHorizontalAxis(a.yAxis[0],l,a,d,m,k,ba);k-=ub(a,d,k,a.yAxis[0]);la(h+k,a,D,a.xAxis,g.x.lYLblIdx,!0);pc(a,a.xAxis.title,k);a.legend.enabled&&n===fa&&(a=a.legend,d=h+k,a.height>d&&(a.height=d,a.scroll.enabled=!0,d=(a.scroll.scrollBarWidth=10)+(a.scroll.scrollBarPadding=2),a.width+=d,u.marginRight+=d),a.y=20);u.marginLeft+=V;u.marginTop+=t;u.marginBottom+=Z;u.marginRight+=F},placeVerticalXYSpaceManager:function(a,d,h,k){var g=a[e],f,l,A=!0;f=0;var m=d.chart,
D=!1,n,p,s,G,r=a.chart,q,v,u,V=g.marginLeftExtraSpace,t=g.marginTopExtraSpace,Z=g.marginBottomExtraSpace,F=g.marginRightExtraSpace;G=h-(V+F+r.marginRight+r.marginLeft);var Q=k-(Z+r.marginBottom+r.marginTop),ba=.3*G;k=.3*Q;var B=G-ba;h=Q-k;f=g.drawFullAreaBorder=b(m.drawfullareaborder,1);var C=c(m.legendposition,Ea).toLowerCase();q=a.xAxis.showLine?a.xAxis.lineThickness:0;v=a.yAxis[0].showLine?a.yAxis[0].lineThickness:0;u=g.isDual&&a.yAxis[1].showLine?a.yAxis[1].lineThickness:0;n=b(m.yaxisnamepadding,
5);p=b(m.yaxisvaluespadding,m.labelypadding,4);l=c(m.showplotborder,g.is3d?Sa:Ia)===Ia;l=g.plotBorderThickness=l?g.is3d?1:b(m.plotborderthickness,1):0;s=W(b(r.plotBorderWidth,1),0);l=W(s,l/2);"area"!==this.defaultSeriesType||f||(l=s);p<s&&(p=s);!g.isDual&&r.marginRight<s&&void 0===m.chartrightmargin&&(f=s-a.chart.marginRight,G>ba+f&&(G-=f,ba=.3*G,B=G-ba));a.legend.enabled&&C===fa&&(B-=this.placeLegendBlockRight(a,d,B/2,Q));g.isDual&&(D=!0,f=g[1],A=a.yAxis[1].opposite,s=c(m.rotateyaxisname,A?"cw":
"ccw"),s=s===Sa?"none":s,f.verticalAxisNamePadding=n,f.verticalAxisValuesPadding=p+u,f.rotateVerticalAxisName=s,f.verticalAxisNameWidth=b(m.syaxisnamewidth),B-=ab(a.yAxis[1],f,a,d,Q,B/2,A,D));f=g[0];A=!A;s=c(m.rotateyaxisname,A?"cw":"ccw");s=s===Sa?"none":s;f.verticalAxisNamePadding=n;f.verticalAxisValuesPadding=p+v;f.rotateVerticalAxisName=s;f.verticalAxisNameWidth=b(D?m.pyaxisnamewidth:m.yaxisnamewidth);B-=ab(a.yAxis[0],f,a,d,Q,B,A,D,G);B-=qc(a,d,B,a.yAxis[0],a.yAxis[1]);A=B+ba;a.legend.enabled&&
C!==fa&&(h-=this.placeLegendBlockBottom(a,d,A,h/2));h-=this.titleSpaceManager(a,d,A,h/2);f=g.x;f.horizontalAxisNamePadding=b(m.xaxisnamepadding,5);f.horizontalLabelPadding=b(m.labelpadding,m.labelxpadding,4)+q;f.labelDisplay=c(m.labeldisplay,"auto").toLowerCase();f.rotateLabels=b(m.rotatelabels,m.rotatexaxislabels,0);f.staggerLines=b(m.staggerlines,2);f.slantLabels=b(m.slantlabels,m.slantlabel,0);a.yAxis[0].opposite?(a.xAxis.lineEndExtension=v,a.xAxis.lineStartExtension=u):(a.xAxis.lineEndExtension=
u,a.xAxis.lineStartExtension=v);f.horizontalLabelPadding<l&&(f.horizontalLabelPadding=l);G={left:0,right:0};G=r.managePlotOverflow&&this.canvasPaddingModifiers&&this.calculateCanvasOverflow(a,!0)||G;q=G.left+G.right;v=.6*A;q>v&&(u=G.left/q,G.left-=u*(q-v),G.right-=(1-u)*(q-v));this.xAxisMinMaxSetter(a,d,A,G.left,G.right);h-=this.placeHorizontalAxis(a.xAxis,f,a,d,A,h,ba);h-=ub(a,d,h,a.xAxis);a.title.alignWithCanvas||("left"===a.title.align&&a.yAxis[0].title.text&&jb(a,a.yAxis[0].title,k+h),"right"===
a.title.align&&D&&a.yAxis[1].title.text&&jb(a,a.yAxis[1].title,k+h));D&&(la(k+h,a,m,a.yAxis[1],g[1].lYLblIdx),pc(a,a.yAxis[1].title,k+h));la(k+h,a,m,a.yAxis[0],g[0].lYLblIdx);pc(a,a.yAxis[0].title,k+h);a.legend.enabled&&C===fa&&(a=a.legend,d=k+h,a.height>d&&"gradient"!==a.type&&(a.height=d,a.scroll.enabled=!0,d=(a.scroll.scrollBarWidth=10)+(a.scroll.scrollBarPadding=2),a.width+=d,r.marginRight+=d));r.marginLeft+=V;r.marginTop+=t;r.marginBottom+=Z;r.marginRight+=F},placeVerticalAxisTitle:pc,calculateCanvasOverflow:function(b,
c){for(var d=this.canvasPaddingModifiers,e=b.chart,g=this.smartLabel,h=0,k=0,f=0,l=0,A=h=!1,m=!1,D=d&&d.length||0,n,s,p,G,r;D--;)switch(k=d[D],k){case "anchor":A=s=h=!0;break;case "anchorlabel":p=s=h=!0;break;case "errorbar":m=h=!0}if(h&&(D=(d=b.series)&&d.length||0,c))for(;D--;)n=d[D],s&&(h=n&&n.data||[],1<h.length&&(G=h[0],r=h[h.length-1],A&&(h=G&&G.marker&&G.marker.enabled&&(G.marker.radius||0)+(G.marker.lineWidth||0)||0,k=r&&r.marker&&r.marker.enabled&&(r.marker.radius||0)+(r.marker.lineWidth||
0)||0,f=W(h+2,f),l=W(k+2,l)),p&&(g.setStyle(b.plotOptions.series.dataLabels.style),e.rotateValues?(k=g.getOriSize(G&&G.displayValue||a),h=k.height/2,k=g.getOriSize(r&&r.displayValue||a),k=k.height/2):(k=g.getOriSize(G&&G.displayValue||a),h=k.width/2,k=g.getOriSize(r&&r.displayValue||a),k=k.width/2),f=W(h+2,f),l=W(k+2,l)))),m&&(k=h=n.errorBarWidth/2+n.errorBarThickness||0,f=W(h+2,f),l=W(k+2,l));return{left:f,right:l}},spaceManager:function(){return this.placeVerticalXYSpaceManager.apply(this,arguments)},
axisMinMaxSetter:function(a,c,d,e,g,h,k,f){d=c.stacking100Percent?Qb(99,1,100,0,g,h,k,f):Qb(b(c.max,d),b(c.min,e),d,e,g,h,k,f);a.min=Number(K(d.Min,10));a.max=Number(K(d.Max,10));a.tickInterval=Number(K(d.divGap,10));c.numdivlines=r.round((a.max-a.min)/a.tickInterval)-1;2>=d.Range/d.divGap&&(a.alternateGridColor=$);this.highValue=c.max;this.lowValue=c.min;delete c.max;delete c.min},configurePlotLines:function(d,h,k,f,g,l,A,m,D,n,s){var G=k.min,r=k.max,p=k.tickInterval,q=n?"xAxis":f.stacking100Percent?
"percentValue":"yAxis",v=G,u=1,V=k.gridLineColor,t=k.gridLineWidth,Z=k.gridLineDashStyle,F=0>G&&0<r?!0:!1,Q=0===G,ba=0===r,B=0===b(f.showzeroplanevalue,d.showzeroplanevalue),C=!0,ua,H=1,pa=0<b(d.numdivlines,0),J=h[e].axisGridManager,wa=this.colorManager,ca=this.is3D,Ta=b(d.showaxislimitgridlines,this.showAxisLimitGridLines),ca=b(Ta,ca||h.chart.plotBorderWidth?0:1),db=this.inversed;h=h.xAxis;s=b(s,D?1:0);delete k._altGrid;delete k._lastValue;n&&!f.catOccupied&&(f.catOccupied={});!F||n&&f.catOccupied[0]||
(n?(C=b(d.showvzeroplane,1),ua=b(d.showvzeroplanevalue,l),pa=b(d.vzeroplanethickness,1),wa=c(d.vzeroplanealpha,d.vdivlinealpha,wa.getColor("divLineAlpha")),d=0<pa?S(c(d.vzeroplanecolor,V),wa):$):(wa=b(d.divlinealpha,wa.getColor("divLineAlpha")),ua=b(f.showzeroplanevalue,d.showzeroplanevalue,l),!1===this.defaultZeroPlaneHighlighted?(C=b(f.showzeroplane,d.showzeroplane,!(this.defaultZeroPlaneHidden&&!pa)),pa=t):(pa=1===t?2:t,H=5,wa=aa(2*wa,100)),pa=b(f.zeroplanethickness,d.zeroplanethickness,pa),wa=
c(f.zeroplanealpha,d.zeroplanealpha,wa),d=0<pa?S(c(f.zeroplanecolor,d.zeroplanecolor,V),wa):$),C&&(ua=ua?m[q](0,s):a,(H=J.addAxisGridLine(k,0,ua,pa,Z,d,H,n))&&(H.isZeroPlane=!0)),k.effectiveZeroPlaneThickness=C&&parseInt(wa,10)&&pa);n&&f.catOccupied[G]||(ua=!g||Q&&B?a:m[q](G,s),(H=Ta||ca&&(db||!h.showLine)?J.addAxisGridLine(k,G,ua,t,Z,V||$,2,n):J.addAxisGridLine(k,G,ua,.1,void 0,$,2,n))&&(H.isMinLabel=!0));0>=t&&(t=.1,V=$);for(G=Number(K(v+p,10));G<r;G=Number(K(G+p,10)),u+=1)F&&0>v&&0<G&&!D&&(J.addAxisAltGrid(k,
0),u+=1),0===G||n&&f.catOccupied[G]||(ua=1===l&&0===u%A?m[q](G,s):a,J.addAxisGridLine(k,G,ua,t,Z,V,2,n)),v=G,D||J.addAxisAltGrid(k,G);D||J.addAxisAltGrid(k,r);0!==u%A||n&&f.catOccupied[r]||(ua=!g||ba&&B?a:m[q](r,s),(H=Ta||ca&&(!db||!h.showLine)?J.addAxisGridLine(k,r,ua,t,Z,V||$,2,n):J.addAxisGridLine(k,r,ua,.1,Z,$,2,n))&&(H.isMaxLabel=!0));this.realtimeEnabled&&(k.labels._enabled=k.labels.enabled,k._gridLineWidth=k.gridLineWidth,k._alternateGridColor=k.alternateGridColor);k.labels.enabled=!1;k.gridLineWidth=
0;k.alternateGridColor=$;k.plotLines.sort(Rb)},xAxisMinMaxSetter:function(a,c,d,h,g){var k=a[e],f=k.x,l=c.chart,A=f.min=b(f.min,0),D=f.max=b(f.max,f.catCount-1),n=0,G=0,s=a.chart.defaultSeriesType,r=/^(column|column3d|bar|bar3d|floatedcolumn|sparkwinloss|boxandwhisker2d|dragcolumn)$/.test(s),p=/^(line|area|spline|areaspline)$/.test(s),s=/^(scatter|bubble|candlestick|dragnode)$/.test(s),q=a.xAxis,v=q.scroll,u=v&&v.enabled,V=b(l.canvaspadding),t=U(V),Z=va(aa(b(V,h,0),d/2-10)),V=va(aa(b(V,g,0),d/2-10)),
F,Q,ba,B;f.adjustMinMax&&(F=b(l.setadaptivexmin,1),D=A=!F,Q=b(this.numVDivLines,l.numvdivlines,4),ba=l.adjustvdiv!==Sa,B=b(l.showxaxisvalues,l.showxaxisvalue,1),F=b(l.showvlimits,B),B=b(l.showvdivlinevalue,l.showvdivlinevalues,B),this.axisMinMaxSetter(q,f,l.xaxismaxvalue,l.xaxisminvalue,A,D,Q,ba),A=q.min,D=q.max,f.requiredAutoNumericLabels&&(Q=b(parseInt(l.xaxisvaluesstep,10),1),this.configurePlotLines(l,a,q,f,F,B,1>Q?1:Q,k.numberFormatter,!1,!0)),q.plotLines.sort(Rb));q.labels.enabled=!1;q.gridLineWidth=
0;q.alternateGridColor=$;(r||k.isScroll)&&!k.hasNoColumn&&!t&&U(h)&&U(g)&&(G=d/(D-A+1)*.5,Z=0<G-h?0:Z,V=0<G-g?0:V,n=0<G-h?.5:0,G=0<G-g?.5:0);r&&!k.hasNoColumn&&(G=n=.5);k.is3d&&(Z+=b(a.chart.xDepth,0));a=(d-(Z+V))/((u?v.vxLength:D)-A+(n+G));q.min=A-(n+Z/a);q.max=D+(G+V/a);u&&(n=v.vxLength,a=q.max-q.min,v.viewPortMin=q.min,v.viewPortMax=q.max,v.scrollRatio=n/a,v.flatScrollBars=k.flatScrollBars,v.scrollBar3DLighting=k.scrollBar3DLighting,q.max=q.min+n);p&&q.min===q.max&&(q.min-=.65,q.max+=.65);s&&c.vtrendlines&&
m(c.vtrendlines,q,k,!1,!0,!0)},postSeriesAddition:function(a){var d=a[e],k=d.isBar,f=d.is3d,g=a.chart.rotateValues&&!k?270:0,l=d[0],A=l&&l.stacking100Percent,m,D,n,G,s,r,p,q,u,V,t,Z,F,Q,ba,B,C,ua,H,pa,J,wa,K;if(this.isStacked)for(n in m=d.plotSpacePercent,D=a.chart.defaultSeriesType,m=1-2*m,B=a.series,C=this.numberFormatter,J=h({},a.plotOptions.series.dataLabels.style),wa=parseFloat(J.fontSize),K=!l.stacking100Percent,J.color=a.plotOptions.series.dataLabels.color,G=l.stack,G){l=G[n].length;s=m/l;
p=-(m-s)/2;Q=[];Z=0;for(q=B.length;Z<q;Z+=1)u=B[Z],u.yAxis||c(u.type,D)!==n||Q.push(u);for(r=0;r<l;r+=1,p+=s){t=G[n][r];ba=[];Z=0;for(q=Q.length;Z<q;Z+=1)u=Q[Z],b(u.columnPosition,0)===r&&ba.push(u.data);if(t&&t.length)for(V=0,u=t.length;V<u;V+=1)if(Z=t[V])for(F=(Z.n||0)+(Z.p||0),d.showStackTotal&&(q=V,q+=p,Z=0>F?Z.n:Z.p,a.xAxis.plotLines.push({value:q,width:0,isVline:K,isTrend:!K,zIndex:4,_isStackSum:1,_catPosition:V,_stackIndex:r,label:{align:oa,textAlign:f||270!==g?k?0>F?fa:La:oa:0>F?fa:La,offsetScale:K?
Z:void 0,offsetScaleIndex:0,rotation:g,style:J,verticalAlign:ia,y:k?0:0>F?270===g?4:wa:-4,x:0,text:d.numberFormatter.yAxis(F)}})),Z=0,q=ba.length;Z<q;Z+=1)if(H=ba[Z][V])if(pa=F&&(H.y||0)/F*100,ua=C.percentValue(pa),H.toolText=v(H.toolText,[14,24,25,112],{percentValue:ua,sum:C.dataLabels(F),unformattedSum:F}),H.y||0===H.y)A&&(H.y=pa,H.previousY||0===H.previousY)&&(H.previousY=H.previousY/F*100),H.showPercentValues&&(H.displayValue=ua)}}},styleMapForFont:Q,styleApplicationDefinition_font:function(a,
b,c){var d,g,h=!1,k,f,l=this.styleMapForFont;switch(b){case "caption":d=a.title;break;case "datalabels":d=a.xAxis.labels;break;case "datavalues":d=a.plotOptions.series.dataLabels;h=!0;break;case "tldatavalues":d={style:a.plotOptions.series.dataLabels.tlLabelStyle};break;case "trdatavalues":d={style:a.plotOptions.series.dataLabels.trLabelStyle};break;case "bldatavalues":d={style:a.plotOptions.series.dataLabels.blLabelStyle};break;case "brdatavalues":d={style:a.plotOptions.series.dataLabels.brLabelStyle};
break;case "subcaption":d=a.subtitle;break;case "tooltip":d=a.tooltip;break;case "trendvalues":d={style:a[e].trendStyle};break;case "xaxisname":d=a.xAxis.title;break;case "yaxisname":case "pyaxisname":case "axistitle":d=[];b=0;for(k=a.yAxis.length;b<k;b+=1)d.push(a.yAxis[b].title);break;case "yaxisvalues":d=[];b=0;for(k=a.yAxis.length;b<k;b+=1)d.push(a.yAxis[b].labels);break;case "vlinelabels":d={style:a[e].divlineStyle};break;case "legend":d={style:a.legend.itemStyle};break;default:(d=a.orphanStyles[b])||
(a.orphanStyles[b]=d={text:"",style:{}})}if("object"===typeof d)if(d instanceof Array)for(b=0,k=d.length;b<k;b+=1){f=d[b];for(g in c)if(a=g.toLowerCase(),"function"===typeof l[a])l[a](c[g],f,h);u(f.style)}else{for(g in c)if(a=g.toLowerCase(),"function"===typeof l[a])l[a](c[g],d,h);u(d.style)}},parseStyles:function(a){var b,c,d,g={},e,h=this.dataObj;if(h.styles&&h.styles.definition instanceof Array&&h.styles.application instanceof Array){for(b=0;b<h.styles.definition.length;b+=1)c=h.styles.definition[b],
c.type&&c.name&&this["styleApplicationDefinition_"+c.type.toLowerCase()]&&(g[c.name.toLowerCase()]=c);for(b=0;b<h.styles.application.length;b+=1)for(c=h.styles.application[b].styles&&h.styles.application[b].styles.split(xa)||[],e=0;e<c.length;e+=1)if(d=c[e].toLowerCase(),g[d]&&h.styles.application[b].toobject)this["styleApplicationDefinition_"+g[d].type.toLowerCase()](a,h.styles.application[b].toobject.toLowerCase(),g[d])}},updateDefaultAnnotations:function(){var a=this.renderer,d=this.dataObj,e=
this.chartInstance,h=d&&d.annotations||{},g={},k;if(this.drawAnnotations&&e.dataReady()&&d&&d.chart&&b(d.chart.showannotations,1)){k=b(h.scaleonresize,d.chart.scaleonresize,1);var a={interactionevents:c(this.annotationInteractionEvents,!0),showbelow:c(h.showbelow,h.showbelowchart),autoscale:h.autoscale,scaletext:h.scaletext,scaleimages:h.scaleimages,constrainedscale:h.constrainedscale,scaleonresize:k,origw:c(h.origw,d.chart.origw,k?this.origRenderWidth:a.chartWidth),origh:c(h.origh,d.chart.origh,
k?this.origRenderHeight:a.chartHeight),xshift:h.xshift,yshift:h.yshift,grpxshift:h.grpxshift,grpyshift:h.grpyshift,xscale:h.xscale,yscale:h.yscale,rootxscale:b(h.xscale,100)/100,rootyscale:b(h.yscale,100)/100},f;a||(a={});for(f in g)a[f]=g[f];e.annotations.reset(h,a,this.snapLiterals)}else e.annotations.clear()},dispose:function(){var a;this.disposing=!0;this.renderer&&this.renderer.dispose();this.numberFormatter&&this.numberFormatter.dispose();this.hcJSON&&this.hcJSON.chart&&this.hcJSON.chart.renderTo&&
delete this.hcJSON.chart.renderTo;for(a in this)delete this[a];delete this.disposing;this.disposed=!0}});ha("stub",{init:function(a,b,c){this.containerElement=a;this.smartLabel=c.jsVars.smartLabel},standaloneInit:!0},ha.base);ha("barbase",{spaceManager:function(){return this.placeHorizontalXYSpaceManager.apply(this,arguments)}},ha.base);ha("singleseries",{series:function(a,b,c){var d=a.data||a.dataset&&a.dataset[0]&&a.dataset[0].data,g;d&&0<d.length&&d instanceof Array&&(g={data:[],hoverEffects:this.parseSeriesHoverOptions(a,
b,{},c),colorByPoint:!0},b.legend.enabled=!1,c=this.point(c,g,d,a.chart,b),c instanceof Array?b.series=b.series.concat(c):b.series.push(c),this.configureAxis(b,a),a.trendlines&&m(a.trendlines,b.yAxis,b[e],!1,this.isBar))},defaultSeriesType:a,configureAxis:function(a,d){var h=a[e],k=a.xAxis,g=d.chart,f=a.chart.is3D,l,A,m,D,n,G,r,p,q,v,u,V,t=0,Z,F,Q,ba,B,C,ua,H=this.numberFormatter,pa=b(g.syncaxislimits,0),J;k.title.text=s(g.xaxisname);J=b(parseInt(g.yaxisvaluesstep,10),parseInt(g.yaxisvaluestep,10),
1);J=1>J?1:J;l=a.yAxis[0];A=h[0];if(h.isDual)m=H.getCleanValue(g.pyaxismaxvalue),D=H.getCleanValue(g.pyaxisminvalue),l.title.text=s(g.pyaxisname),pa&&!A.stacking100Percent?(V=h[1],u=b(V.max),V=b(V.min),void 0!==u&&void 0!==V&&(A.min=aa(A.min,V),A.max=W(A.max,u)),u=H.getCleanValue(g.syaxismaxvalue),V=H.getCleanValue(g.syaxisminvalue),null!==V&&(D=null!==D?aa(D,V):V),null!==u&&(m=null!==m?W(m,u):u)):pa=0;else{m=H.getCleanValue(g.yaxismaxvalue);D=H.getCleanValue(g.yaxisminvalue);if(h.isSpline)for(V=
0;V<a.series.length;V++)u=wa(a.series[V].data,h.width,a.plotOptions.series.connectNullData),A.min=aa(A.min,u.min),A.max=W(A.max,u.max);l.title.text=s(g.yaxisname)}r=b(this.isStacked?0:this.setAdaptiveYMin,g.setadaptiveymin,this.defSetAdaptiveYMin,0);G=n=!r;p=b(h.numdivlines,g.numdivlines,this.numdivlines,4);q=g.adjustdiv!==Sa;v=b(this.showYAxisValues,g.showyaxisvalues,g.showyaxisvalue,1);u=b(g.showyaxislimits,g.showlimits,v);V=b(g.showdivlinevalue,g.showdivlinevalues,v);f||(t=b(g.showaxislines,g.drawAxisLines,
0),Q=b(g.axislinethickness,1),B=b(g.axislinealpha,100),100<B&&(B=100),F=S(c(g.axislinecolor,"#000000"),B),l.showLine=b(g.showyaxisline,t),Z=k.showLine=b(g.showxaxisline,t),ba=k.lineThickness=b(g.xaxislinethickness,Q),l.lineThickness=b(g.yaxislinethickness,Q),C=k.lineAlpha=b(g.xaxislinealpha,B),100<C&&(C=k.lineAlpha=100),ua=l.lineAlpha=b(g.yaxislinealpha,B),100<ua&&(ua=l.lineAlpha=100),k.lineColor=S(c(g.xaxislinecolor,F),C),l.lineColor=S(c(g.yaxislinecolor,F),ua),a.chart.xAxisLineVisible=Z&&!!ba&&
0<C);this.axisMinMaxSetter(l,A,m,D,n,G,p,q);this.configurePlotLines(g,a,l,A,u,V,J,h.numberFormatter,!1);l.reversed&&0<=l.min&&(a.plotOptions.series.threshold=l.max);h.isDual&&(l=a.yAxis[1],A=h[1],u=b(g.showsecondarylimits,u),V=b(g.showdivlinesecondaryvalue,v),pa?(k=a.yAxis[0],l.min=k.min,l.max=k.max,l.tickInterval=k.tickInterval,delete A.max,delete A.min):(m=H.getCleanValue(g.syaxismaxvalue),D=H.getCleanValue(g.syaxisminvalue),r=b(g.setadaptivesymin,r),G=n=!r,this.axisMinMaxSetter(l,A,m,D,n,G,p,q)),
f||(l.showLine=b(g.showsyaxisline,t),l.lineThickness=b(g.syaxislinethickness,Q),f=l.lineAlpha=b(g.syaxislinealpha,B),100<f&&(f=100),l.lineColor=S(c(g.syaxislinecolor,F),f)),this.configurePlotLines(g,a,l,A,u,V,J,h.numberFormatter,!0),l.title.text=s(g.syaxisname))},pointValueWatcher:function(a,d,h,k,g,f,l){a=a[e];var A;if(null!==d)return h=b(h,0),a[h]||(a[h]={}),h=a[h],k&&(this.distributedColumns&&(a.marimekkoTotal+=d),k=h.stack,g=b(g,0),f=b(f,0),l=c(l,gb),k[l]||(k[l]=[]),l=k[l],l[f]||(l[f]=[]),f=l[f],
f[g]||(f[g]={}),g=f[g],0<=d?void 0!==g.p?(A=g.p,d=g.p+=d):g.p=d:g.n?(A=g.n,d=g.n+=d):g.n=d),h.max=h.max>d?h.max:d,h.min=h.min<d?h.min:d,A},parseSeriesHoverOptions:function(a,d,e){a=d.chart.plotHoverEffects;d={enabled:c(e.showhovereffect,e.hovereffect,a.enabled)};d.highlight=b(e.highlightonhover,e.highlightplotonhover,a.highlight);d.columnHighlight=b(d.highlight,e.highlightcolumnonhover,e.highlightbaronhover,a.columnHighlight);d.anchorHighlight=b(d.highlight,e.highlightanchoronhover,a.anchorHighlight);
d.anchorHighlight=b(d.highlight,e.highlightimageonhover,a.imageHighlight);d.bubbleHighlight=b(d.highlight,e.highlightbubbleonhover,e.highlightbaronhover,a.bubbleHighlight);d.imageHoverAlpha=c(e.anchorimagehoveralpha,a.anchorImageHoverAlpha);d.imageHoverScale=c(e.anchorimagehoverscale,a.anchorImageHoverScale);d.color=c(e.hovercolor,e.bubblehovercolor,a.color);d.alpha=c(e.hoveralpha,a.alpha);d.scale=c(e.hoverscale,e.bubblehoverscale,a.scale);d.gradientColor=void 0!==e.hovergradientcolor?e.hovergradientcolor:
a.gradientColor;d.ratio=c(e.hoverratio,a.ratio);d.angle=c(e.hoverangle,a.angle);d.borderColor=c(e.borderhovercolor,a.borderColor);d.borderAlpha=c(e.borderhoveralpha,a.borderAlpha);d.borderThickness=b(e.borderhoverthickness,a.borderThickness);d.borderDashed=b(e.borderhoverdashed,a.borderDashed);d.borderDashGap=b(e.borderhoverdashgap,a.borderDashGap);d.borderDashLen=b(e.borderhoverdashlen,a.borderDashLen);d.shadow=c(e.hovershadow,a.shadow);d.anchorSides=c(e.anchorhoversides,a.anchorSides);d.anchorRadius=
c(e.anchorhoverradius,a.anchorRadius);d.anchorScale=c(e.anchorhoverscale,a.anchorScale);d.anchorAlpha=c(e.anchorhoveralpha,e.hoveralpha,a.anchorAlpha);d.anchorBgColor=c(e.anchorbghovercolor,e.anchorhovercolor,a.anchorBgColor);d.anchorBgAlpha=c(e.anchorbghoveralpha,a.anchorBgAlpha);d.anchorBorderColor=c(e.anchorborderhovercolor,a.anchorBorderColor);d.anchorBorderAlpha=c(e.anchorborderhoveralpha,a.anchorBorderAlpha);d.anchorBorderThickness=b(e.anchorborderhoverthickness,a.anchorBorderThickness);d.anchorStartAngle=
c(e.anchorhoverstartangle,a.anchorStartAngle);d.anchorDip=c(e.anchorhoverdip,a.anchorDip);d.anchorAnimation=b(e.anchorhoveranimation,a.anchorAnimation,1);d.negativeColor=c(e.negativehovercolor,a.negativeColor);d.is3DBubble=b(e.is3donhover,a.is3DBubble);return d},parseLegendOptions:function(a,d){var e={borderColor:c(d.legendiconbordercolor,a.legendiconbordercolor),bgColor:c(d.legendiconbgcolor,a.legendiconbgcolor),alpha:c(d.legendiconalpha,a.legendiconalpha),bgAlpha:c(d.legendiconbgalpha,a.legendiconbgalpha),
sides:b(d.legendiconsides,a.legendiconsides),borderThickness:b(d.legendiconborderthickness,a.legendiconborderthickness),startAngle:b(d.legendiconstartangle,a.legendiconstartangle)};if(e.customLegendIcon=b(a.drawcustomlegendicon,d.drawcustomlegendicon))e.startAngle=b(e.startAngle,45),e.symbol=Fa(e.sides||4);return e},pointHoverOptions:function(d,e,h){var f,g,l,A={};f=e.hoverEffects;e=b(d.hovereffect,f&&f.enabled);g=!1;var m={enabled:e},D=h&&a+h.plotType.toLowerCase();if(void 0===e)if(this.forceHoverEnable)g=
e=m.enabled=!0;else{"anchor"==D&&(g=h.imageUrl?e=m.enabled=void 0!==c(d.anchorimagehoveralpha,f.imageHoverAlpha,d.anchorimagehoverscale,f.imageHoverScale,void 0):e=m.enabled=void 0!==c(d.hovercolor,d.anchorhovercolor,d.anchorbghovercolor,f.anchorBgColor,f.color,d.hoveralpha,d.anchorhoveralpha,f.anchorAlpha,d.bghoveralpha,d.anchorbghoveralpha,f.anchorBgAlpha,d.anchorborderhovercolor,d.borderhovercolor,f.anchorBorderColor,d.anchorborderhoverthickness,d.borderhoverthickness,f.anchorBorderThickness,d.anchorborderhoveralpha,
d.borderhoveralpha,f.anchorBorderAlpha,d.hoverdip,d.anchorhoverdip,f.anchorDip,d.anchorhoverstartangle,f.anchorStartAngle,d.hoversides,d.anchorhoversides,f.anchorSides,d.hoverradius,d.anchorhoverradius,f.anchorRadius,void 0));if("column"==D||"bubble"==D)g=e=m.enabled=void 0!==c(d.hoveralpha,f.alpha,d.hovergradientcolor,f.gradientColor,d.borderhovercolor,f.borderColor,d.borderhoverthickness,f.borderThickness,d.hoverratio,f.ratio,d.hoverangle,f.angle,d.borderhoveralpha,f.borderAlpha,d.borderhoverdashed,
f.borderDashed,d.borderhoverdashgap,f.borderDashGap,d.borderhoverdashlen,f.borderDashLen,d.hovercolor,f.color,void 0);g||"bubble"!=D||(g=e=m.enabled=void 0!==c(d.negativehovercolor,f.negativeColor,d.is3donhover,f.is3DBubble,d.hoverscale,f.scale,void 0));"pie"==D&&(g=e=m.enabled=void 0!==c(d.hovercolor,f.color,d.hoveralpha,f.alpha,d.borderhovercolor,f.borderColor,d.borderhoverthickness,f.borderThickness,d.borderhoveralpha,f.borderAlpha,void 0))}if(e){m.highlight=b(d.highlightonhover,f.highlight);m.columnHighlight=
b(m.highlight,d.highlightcolumnonhover,d.highlightbaronhover);m.anchorHighlight=b(m.highlight,d.highlightanchoronhover);m.bubbleHighlight=b(m.highlight,d.highlightbubbleonhover);m.alpha=c(d.hoveralpha,f.alpha,h.alpha);m.scale=c(d.hoverscale,f.scale,1);m.gradientColor=void 0===d.hovergradientcolor?f.gradientColor:d.hovergradientcolor;m.borderColor=c(d.borderhovercolor,f.borderColor,h.borderColor);m.borderThickness=b(d.borderhoverthickness,f.borderThickness,h.borderWidth);m.ratio=c(d.hoverratio,f.ratio,
h.ratio);m.angle=c(d.hoverangle,f.angle,h.angle);m.borderAlpha=c(d.borderhoveralpha,f.borderAlpha,h.borderAlpha);m.borderDashed=b(d.borderhoverdashed,f.borderDashed,h.borderDashed,0);m.borderDashGap=b(d.borderhoverdashgap,f.borderDashGap,h.borderDashGap);m.borderDashLen=b(d.borderhoverdashlen,f.borderDashLen,h.borderDashLen);m.shadow=c(d.hovershadow,f.shadow,0);m.color=c(d.hovercolor,f.color);"anchor"==D&&(h.imageUrl?(m.imageHoverAlpha=b(d.anchorimagehoveralpha,f.imageHoverAlpha,100),m.imageHoverScale=
h.imageScale*ya(b(d.anchorimagehoverscale,f.imageHoverScale,110))*.01,m.anchorAnimation=b(d.anchorhoveranimation,f.anchorAnimation,1)):(m.anchorColor=T(c(d.hovercolor,d.anchorhovercolor,d.anchorbghovercolor,f.anchorBgColor,f.color,h.anchorBgColor)),m.anchorAlpha=c(d.hoveralpha,d.anchorhoveralpha,f.anchorAlpha,h.anchorAlpha),m.anchorBgAlpha=c(d.bghoveralpha,d.anchorbghoveralpha,f.anchorBgAlpha,m.anchorAlpha,h.anchorBgAlpha),m.anchorBorderColor=c(d.anchorborderhovercolor,d.borderhovercolor,f.anchorBorderColor,
h.anchorBorderColor),m.anchorBorderThickness=c(d.anchorborderhoverthickness,d.borderhoverthickness,f.anchorBorderThickness,h.anchorBorderThickness),m.anchorBorderAlpha=b(d.anchorborderhoveralpha,d.borderhoveralpha,f.anchorBorderAlpha,m.anchorAlpha,h.anchorBorderAlpha),m.anchorDip=b(d.hoverdip,d.anchorhoverdip,f.anchorDip),m.startAngle=c(d.anchorhoverstartangle,f.anchorStartAngle,h.anchorAngle),m.anchorSides=b(d.hoversides,d.anchorhoversides,f.anchorSides,h.anchorSides),m.anchorRadius=b(d.hoverradius,
d.anchorhoverradius,f.anchorRadius),m.anchorScale=b(d.hoverscale,d.anchorhoverscale,f.anchorScale),m.anchorAnimation=b(d.anchorhoveranimation,f.anchorAnimation,1),void 0===m.anchorRadius&&(m.anchorRadius=!g||m.anchorHighlight?h.anchorRadius&&h.anchorRadius+1:h.anchorRadius)));if(g||(m.columnHighlight||m.bubbleHighlight)&&m.color&&1==m.highlight)m.highlight=0;"column"==D&&(m.color=(c(m.color,h.color)+xa+(void 0===m.gradientColor?h.gradientColor:m.gradientColor)).replace(/,+?$/,""));"pie"===D&&(m.color=
c(m.color,h.color).replace(/,+?$/,""));"bubble"==D&&(m.negativeColor=c(d.negativehovercolor,f.negativeColor,h.negativeColor),m.is3d=b(d.is3donhover,f.is3DBubble,h.is3d),m.color=m.negativeColor&&0>d.z?m.negativeColor:m.color||h.color,l="string"==typeof m.color,m.color=T(l?m.color:m.color.FCcolor.color),m.color=m.is3d?ha.bubble.getPointColor(m.color,m.alpha):{FCcolor:{color:m.color,alpha:m.alpha}});if(1==m.highlight&&"anchor"!==D){d=(l="string"==typeof m.color)?m.color.split(/\s{0,},\s{0,}/):m.color.FCcolor.color.split(/\s{0,},\s{0,}/);
f=d.length;for(g=0;g<f;g++)d[g]=ta(d[g],70);l?m.color=d.join(","):m.color.FCcolor.color=d.join(",")}"pie"===D&&(A={color:this.getPointColor(m.color,m.alpha,h.radius3D),alpha:m.alpha,borderColor:S(m.borderColor,m.borderAlpha),borderWidth:m.borderThickness});"column"==D&&(m.colorArr=M(m.color,m.alpha,m.ratio,m.angle,h.isRoundEdged,m.borderColor,aa(m.alpha,m.borderAlpha).toString(),h.isBar,h.is3d),m.dashStyle=m.borderDashed?k(m.borderDashLen,m.borderDashGap,m.borderThickness):"none",A={shadow:m.shadow,
color:m.colorArr[0],borderColor:m.colorArr[1],borderWidth:m.borderThickness,use3DLighting:h.use3DLighting,dashStyle:m.dashStyle});"anchor"==D&&(A=h.imageUrl?{animation:m.anchorAnimation,imageHoverAlpha:m.imageHoverAlpha,imageHoverScale:m.imageHoverScale}:{animation:m.anchorAnimation,shadow:m.shadow,fillColor:{FCcolor:{color:m.anchorColor,alpha:m.anchorBgAlpha*m.anchorAlpha/100+a}},lineColor:{FCcolor:{color:m.anchorBorderColor,alpha:m.anchorBorderAlpha}},lineWidth:m.anchorBorderThickness,radius:m.anchorRadius,
symbol:Fa(m.anchorSides),startAngle:m.startAngle,sides:m.anchorSides,scale:m.anchorScale,dip:m.anchorDip});"bubble"==D&&(A={symbol:m.seriesAnchorSymbol,shadow:m.shadow,scale:m.scale,fillColor:m.color,lineColor:{FCcolor:{color:m.borderColor,alpha:m.alpha}},lineWidth:m.borderThickness})}return{enabled:e,options:m,rolloverOptions:A}},getPointStub:function(d,h,k,f){var g=this.dataObj.chart;f=f[e];h=null===h?h:f.numberFormatter.dataLabels(h);var m=l(s(c(d.tooltext,f.tooltext))),A=l(s(d.displayvalue)),
g=f.showTooltip?void 0!==m?v(m,[1,2,3,5,6,7],{formattedValue:h,label:k,yaxisName:s(g.yaxisname),xaxisName:s(g.xaxisname)},d,g):null===h?!1:k!==a?k+f.tooltipSepChar+h:h:a;f=b(d.showvalue,f.showValues)?void 0!==A?A:h:a;d=c(d.link);return{displayValue:f,categoryLabel:k,toolText:g,link:d}},updateSnapPoints:function(){var a=this,b=a.snapLiterals,c=function(a,b){var c=0;switch(a){case "startx":c=b.x;break;case "starty":c=b.y;break;case "x":case "middlex":case "centerx":c=b.x+b.width/2;break;case "y":case "middley":case "centery":c=
b.y+b.height/2;break;case "endx":c=b.x+b.width;break;case "endy":c=b.y+b.height;break;default:c=0}return c};b.dataset=function(b,d){var e=a.renderer&&a.renderer.plots,h,k,f,l;f=a.is3D;if(!e||!e.length)return 0;isNaN(b[0])?h=0:(h=Number(b[0]),b=b.slice(1));k=b[0];if("set"===k){isNaN(b[1])?(l=0,b=b.slice(1)):(l=Number(b[1]),b=b.slice(2));k=b[0];e=(e=e[h]&&e[h].items[l])&&e.graphic;if(!e)return 0;f=d&&f?e._getBBox2():e.getBBox();l=c(k,f)}return l};b.xaxis=function(b){var d=a.renderer&&a.renderer.xAxis&&
a.renderer.xAxis[0]&&a.renderer.xAxis[0].labels,e,h;if(!d||!d.length)return 0;h=b[0];if("label"===h){isNaN(b[1])?(e=0,b=b.slice(1)):(e=Number(b[1]),b=b.slice(2));h=b[0];b=d[e];if(!b)return 0;b=b.getBBox();e=c(h,b)}return e};b.yaxis=function(b){var d=a.renderer&&a.renderer.yAxis,e,h;if(!d||!d.length)return 0;isNaN(b[0])?e=0:(e=Number(b[0]),b=b.slice(1));e=d[e];if(!e)return 0;d=b[0];if("label"===d){h=e.labels;isNaN(b[1])?(e=0,b=b.slice(1)):(e=Number(b[1]),b=b.slice(2));d=b[0];b=h[e];if(!b)return 0;
b=b.getBBox();h=c(d,b)}return h}}},ha.base);ha("multiseries",{series:function(a,c,d){var h,g,k=c[e],f,l;c.legend.enabled=Boolean(b(a.chart.showlegend,1));if(a.dataset&&0<a.dataset.length){this.categoryAdder(a,c);h=0;for(g=a.dataset.length;h<g;h+=1)f=a.dataset[h],l={hoverEffects:this.parseSeriesHoverOptions(a,c,f,d),visible:!b(f.initiallyhidden,0),legendCosmetics:this.parseLegendOptions(a.chart,f),data:[]},this.isStacked||(l.numColumns=g),f=this.point(d,l,f,a.chart,c,k.oriCatTmp.length,h),f instanceof
Array?c.series=c.series.concat(f):c.series.push(f);this.configureAxis(c,a);a.trendlines&&!this.isLog&&m(a.trendlines,c.yAxis,k,!1,this.isBar,void 0,this.inversed)}},categoryAdder:function(c,d){var h,k=0,g=d[e],f=g.axisGridManager,l=c.chart,m=d.xAxis,A,g=g.x,D,n,G,r;if(c.categories&&c.categories[0]&&c.categories[0].category)for(c.categories[0].font&&(d.xAxis.labels.style.fontFamily=c.categories[0].font),void 0!==(h=b(c.categories[0].fontsize))&&(1>h&&(h=1),d.xAxis.labels.style.fontSize=h+Da,u(d.xAxis.labels.style)),
c.categories[0].fontcolor&&(d.xAxis.labels.style.color=c.categories[0].fontcolor.split(xa)[0].replace(/^\#?/,"#")),n=d[e].oriCatTmp,G=c.categories[0].category,h=0;h<G.length;h+=1)G[h].vline?f.addVline(m,G[h],k,d):(D=b(G[h].showlabel,l.showlabels,1),r=c.categories[0].category[h],A=s(p(r.label,r.name)),f.addXaxisCat(m,k,k,D?A:a,{},r,l),n[k]=p(s(r.tooltext),A),k+=1);g.catCount=k},getPointStub:function(d,h,k,f,g,m,A,D,n,G){var r=this.dataObj.chart,q=this.isDual,u=this.isXY,V=this.isMLAxis,t=this.isStacked,
Z=this.isErrorChart,F;f=f[e];var Q,ba,B=null===h?h:this.numberFormatter.dataLabels(h,A),C,H=l(s(c(d.tooltext,g.plottooltext,f.tooltext))),ua=f.tooltipSepChar,pa,J={},wa,K,ca,Ta,db,la,Ha,Aa,Ga;Z&&(K=null===D?D:this.numberFormatter.dataLabels(D,A),la=null===h?a:this.numberFormatter.percentValue(D/h*100),pa=[1,2,3,4,5,6,7,99,100,101,102],h={yaxisName:Ta=s(q?A?r.syaxisname:r.pyaxisname:r.yaxisname),xaxisName:db=s(r.xaxisname),formattedValue:B,label:k,errorDataValue:K,errorPercentValue:la},u?(ca=null===
n?n:this.numberFormatter.xAxis(n),Ha=null===G?a:this.numberFormatter.percentValue(n/G*100),pa.push(103,104,105,106,107,108,109,110),Ga=c(d.horizontalerrorvalue,d.errorvalue),h.errorValue=Aa=c(d.verticalerrorvalue,d.errorvalue),G=l(s(c(d.verticalerrorplottooltext,d.errorplottooltext,g.verticalerrorplottooltext,g.errorplottooltext,r.verticalerrorplottooltext,r.errorplottooltext))),null!==D&&(h.verticalErrorDataValue=K,h.verticalErrorPercentValue=la,h.verticalErrorValue=Aa),null!==n&&(h.horizontalErrorDataValue=
ca,h.horizontalErrorPercentValue=Ha,h.horizontalErrorValue=Ga),wa=l(s(c(d.horizontalerrorplottooltext,d.errorplottooltext,g.horizontalerrorplottooltext,g.errorplottooltext,r.horizontalerrorplottooltext,r.errorplottooltext))),J._hErrortoolText=f.showTooltip?void 0!==wa?v(wa,pa,{yaxisName:Ta=s(q?A?r.syaxisname:r.pyaxisname:r.yaxisname),xaxisName:db=s(r.xaxisname),formattedValue:B,label:k,errorDataValue:ca,errorPercentValue:Ha,errorValue:Ga,verticalErrorDataValue:K,verticalErrorPercentValue:la,verticalErrorValue:Aa,
horizontalErrorDataValue:ca,horizontalErrorPercentValue:Ha,horizontalErrorValue:Ga},d,r,g):null===D?!1:ca:!1):(G=l(s(c(d.errorplottooltext,g.errorplottooltext,r.errorplottooltext))),h.errorValue=Aa=c(d.errorvalue)),J._errortoolText=f.showTooltip?void 0!==G?v(G,pa,h,d,r,g):null===D?!1:K:!1);f.showTooltip?void 0!==H?(t=[4,5,6,7],A={yaxisName:Ta||s(q?A?r.syaxisname:r.pyaxisname:V?g._yAxisName:r.yaxisname),xaxisName:db||s(r.xaxisname)},u?(t.push(8,9,10,11),A.yDataValue=B,A.xDataValue=k,Z&&(t.push(103,
104,105,106,107,108,109,110),null!==D&&(A.verticalErrorDataValue=K,A.verticalErrorPercentValue=la,A.verticalErrorValue=Aa),null!==n&&(A.horizontalErrorDataValue=ca,A.horizontalErrorPercentValue=Ha,A.horizontalErrorValue=Ga))):(t.push(1,2,3),A.formattedValue=B,A.label=k,Z&&(t.push(99,100,101,102),A.errorValue=Aa,null!==D&&(A.errorDataValue=K,A.errorPercentValue=la))),g=v(H,t,A,d,r,g)):null===B?g=!1:(f.seriesNameInToolTip&&(C=p(g&&g.seriesname)),g=C?C+ua:a,g+=k?k+ua:a,f.showPercentInToolTip&&t?(ba=
!0,g+="$percentValue"):g+=B):g=!1;b(d.showvalue,m)?void 0!==l(d.displayvalue)?F=s(d.displayvalue):f.showPercentValues?Q=!0:F=B:F=a;J.link=c(d.link);J.displayValue=F;J.categoryLabel=k;J.toolText=g;J.showPercentValues=Q;J.showPercentInToolTip=ba;return J}},ha.singleseries);ha("xybase",{hideRLine:function(){var a=this.chart.series[this.index+1];a&&a.hide&&a.hide()},showRLine:function(){var a=this.chart.series[this.index+1];a&&a.show&&a.show()},getRegressionLineSeries:function(a,b,c){var d,e,h,k;k=a.sumXY;
var f=a.sumX,l=a.sumY;e=a.xValues;h=a.sumXsqure;d=a.yValues;a=a.sumYsqure;b?(e.sort(Pa),d=e[0],e=e[e.length-1],k=(c*k-f*l)/(c*h-O(f,2)),h=!isNaN(k)&&isFinite(k)?k*(d-f/c)+l/c:l/c,c=!isNaN(k)&&isFinite(k)?k*(e-f/c)+l/c:l/c,c=[{x:d,y:h},{x:e,y:c}]):(d.sort(Pa),h=d[0],d=d[d.length-1],k=(c*k-f*l)/(c*a-O(l,2)),e=isNaN(k)?f/c:k*(h-l/c)+f/c,c=isNaN(k)?f/c:k*(d-l/c)+f/c,c=[{x:e,y:h},{x:c,y:d}]);return c},pointValueWatcher:function(a,b,c,d){var g=a[e];null!==b&&(a=g[0],a.max=a.max>b?a.max:b,a.min=a.min<b?
a.min:b);null!==c&&(a=g.x,a.max=a.max>c?a.max:c,a.min=a.min<c?a.min:c);d&&(c=c||0,b=b||0,d.sumX+=c,d.sumY+=b,d.sumXY+=c*b,d.sumXsqure+=O(c,2),d.xValues.push(c),d.sumYsqure+=O(b,2),d.yValues.push(b))}},ha.multiseries);ha("scrollbase",{postSeriesAddition:function(){var a=this.hcJSON,d=a.xAxis.scroll,h=a[e],k=h.width,g=h.x.catCount,f=this.dataObj.chart,l=this.colorManager,m,A,D,n,r,s;h.isScroll=!0;a.chart.hasScroll=!0;if(this.isStacked)m=1;else{A=m=0;n=a.series;s=a.chart.defaultSeriesType;for(D=n.length;A<
D;A++)r=c(n[A].type,s),"column"===r&&(m+=1);1>m&&(m=1)}g*=m;k=b(f.numvisibleplot,za(k/this.avgScrollPointWidth));d&&2<=k&&k<g&&(d.enabled=!0,d.vxLength=k/m,d.startPercent=aa(1,W(0,parseFloat(f.scrolltoend)||0)),d.padding=b(f.scrollpadding,0),d.height=b(f.scrollheight,16),d.showButtons=!!b(f.scrollshowbuttons,1),d.buttonPadding=b(f.scrollbtnpadding,0),d.color=T(c(f.scrollcolor,l.getColor("altHGridColor"))),h.marginBottomExtraSpace+=d.padding+d.height);if(G||b(f.enabletouchscroll,0))a.chart.zoomType=
"x",a.chart.nativeZoom=!1,a.chart.selectionMarkerFill="rgba(255,255,255,0)",(a.callbacks||(a.callbacks=[])).push(function(a){B(a.containerElement,"selectionstart selectiondrag",ha.scrollbase.performTouchScroll,{})})},performTouchScroll:function(a){var b=this.xAxis[0].scroller,c=b.config,c=c.trackLength/(c.width/c.scrollRatio)*(a.chartX||1);!0!==a.isOutsidePlot&&D(b.elements.anchor.element,"selectionstart"===a.type?"dragstart":"drag",{pageX:-c,pageY:-a.chartY})}},ha.multiseries);ha("logbase",{isLog:!0,
isValueAbs:!0,configureAxis:function(d,k){var f=d[e],l=f.axisGridManager,g=this.numberFormatter,D=d.series,n=d.xAxis,G=d.yAxis[0],r=f[0],p=k.chart,q=!b(p.showyaxislimits,p.showlimits,p.showyaxisvalues,1),v=!b(p.showdivlinevalues,p.showyaxisvalues,1),u=b(p.base,p.logbase,10),V=b(p.yaxismaxvalue),t=b(p.yaxisminvalue),Z=this.colorManager,F=1===b(p.showminordivlinevalues),Q=c(p.minordivlinecolor,G.gridLineColor,Z.getColor("divLineColor")),ba=b(p.minordivlinealpha,p.divlinealpha,Z.getColor("divLineAlpha")),
Z=[G,void 0,void 0,b(p.divlinethickness,2),G.gridLineDashStyle,G.gridLineColor,2],Q=[G,void 0,void 0,b(p.minordivlinethickness,1),G.gridLineDashStyle,S(c(p.minordivlinecolor,Q),b(p.minordivlinealpha,ba/2)),2],ba=F||ba&&Q[3],B=b(p.showaxislimitgridlines,this.showAxisLimitGridLines),C=b(B,this.is3D||d.chart.plotBorderWidth?0:1),H,ua;0>=u&&(u=10);0>=V&&(V=void 0);0>=t&&(t=void 0);V=this.getLogAxisLimits(r.max||u,r.min||1,V,t,u,ba?p.numminordivlines:0);n.title.text=s(p.xaxisname);n.showLine=b(p.showxaxisline,
p.showaxislines,0);n.lineThickness=b(p.xaxislinethickness,p.axislinethickness,1);n.lineAlpha=b(p.xaxislinealpha,p.axislinealpha,100);n.lineColor=S(c(p.xaxislinecolor,p.axislinecolor,"000"));h(G,{title:{text:s(p.yaxisname)},labels:{enabled:!1},gridLineWidth:0,alternateGridColor:$,reversed:"1"===p.invertyaxis,max:A(V.Max,u),min:A(V.Min,u),showLine:b(p.showyaxisline,p.showaxislines,0),lineThickness:b(p.yaxislinethickness,p.axislinethickness,1),lineAlpha:b(p.yaxislinealpha,p.axislinealpha,100),lineColor:S(c(p.yaxislinecolor,
p.axislinecolor,"000"))});for(p=D.length;p--;)if(t=D[p])for(t.threshold=G.min,ua=(t=t.data)&&t.length||0;ua--;)H=t[ua],H.y=A(H.y,u);delete r.max;delete r.min;r.isLog=!0;G.reversed&&0<=G.min&&(d.plotOptions.series.threshold=G.max);k.trendlines&&m(k.trendlines,[{max:V.Max,min:V.Min,plotLines:G.plotLines,plotBands:G.plotBands,title:G.title}],f);for(p=G.plotLines.length;p--;)H=G.plotLines[p],H.value&&(H.value=A(H.value,u)),H.from&&(H.from=A(H.from,u)),H.to&&(H.to=A(H.to,u));for(p=G.plotBands.length;p--;)H=
G.plotBands[p],H.from&&(H.from=A(H.from,u)),H.to&&(H.to=A(H.to,u));for(p=V.divArr.length;p--;){H=V.divArr[p];if(H.ismajor)Z[1]=A(H.value,u),Z[2]=g.yAxis(H.value),l.addAxisGridLine.apply(l,Z);else if(ba||H.isextreme)Q[1]=A(H.value,u),Q[2]=F||H.isextreme?g.yAxis(H.value):a,l.addAxisGridLine.apply(l,Q);t=G.plotLines[G.plotLines.length-1];H.isextreme?(t.width=B||C&&(!H.isMin||!n.showLine)?t.width:.1,q&&(t.label.text=a)):v&&t.label&&(t.label.text=a)}},getLogAxisLimits:function(a,b,c,d,e,h){var k=function(a){return null===
a||void 0===a||""===a||isNaN(a)?!1:!0},f=0,l=[],m,A,D,n,G,p,r,s;a==b&&(b=10>=b?1:parseInt(b/10,10));k(c)&&Number(c)>=a?a=Number(c):(c=1<e?va(ja(a)/ja(e)):za(ja(a)/ja(e)),a=O(e,c),A=c);A||(A=1<e?va(ja(a)/ja(e)):za(ja(a)/ja(e)));k(d)&&Number(d)<=b?b=Number(d):(c=1<e?za(ja(b)/ja(e)):va(ja(b)/ja(e)),b=O(e,c),m=c);m||(m=1<e?za(ja(b)/ja(e)):va(ja(b)/ja(e)));d=Number(String(ja(e)/ja(10)));h=Number(h)||(za(d)==d?8:4);1<e?(D=A,n=m):0<e&&1>e&&(D=m,n=A);d=A;for(m=D;m>=n;--m)if(D=O(e,d),b<=D&&a>=D&&(l[f++]={value:D,
ismajor:!0}),m!=n){A=1<e?-1:1;D=O(e,d)-O(e,d+A);c=D/(h+1);for(k=1;k<=h;++k)D=O(e,d+A)+c*k,b<=D&&a>=D&&(l[f++]={value:D,ismajor:!1});1<e?d--:d++}for(r in l)for(s in l[r])"value"==s&&(G||(G=l[r][s]==b&&(l[r].isextreme=l[r].isMin=!0)),p||(p=l[r][s]==a&&(l[r].isextreme=l[r].isMax=!0)));G||(l[f++]={value:b,ismajor:!0,isMin:!0,isextreme:!0});p||(l[f]={value:a,ismajor:!0,isMax:!0,isextreme:!0});return{Max:a,Min:b,divArr:l}},pointValueWatcher:function(a,c,d){a=a[e];d=b(d,0);0<c&&(a[d]||(a[d]={}),d=a[d],d.max=
d.max>c?d.max:c,d.min=d.min<c?d.min:c)}},ha.mslinebase);fb=ha.singleseries;Xa=ha.multiseries;ha("column2dbase",{point:function(d,f,l,m,g){var A=l.length,D=g[e],n=D.axisGridManager,G=g.xAxis,D=D.x,r=this.colorManager,q=/3d$/.test(g.chart.defaultSeriesType),u=this.isBar,v=/^spark/i.test(d);d=c(m.showplotborder,v||q?Sa:Ia)===Ia?q?1:b(m.plotborderthickness,1):0;var V=g.chart.useRoundEdges,t=b(m.plotborderalpha,m.plotfillalpha,100),Z=c(m.plotbordercolor,r.getColor("plotBorderColor")).split(xa)[0],v=v?
"":b(m.useplotgradientcolor,1)?H(m.plotgradientcolor,r.getColor("plotGradientColor")):a,F=0,Q=Boolean(b(m.use3dlighting,1)),ba=g[e].numberFormatter,B,C=b(m.plotborderdashed,0),ua=b(m.plotborderdashlen,5),J=b(m.plotborderdashgap,4),pa,wa,K,ca,Ta,db,la,Ha,Aa,Ga,ab,L,N,jb;for(K=0;K<A;K+=1)N=l[K],N.vline?n.addVline(G,N,F,g):(wa=ba.getCleanValue(N.value),B=b(N.showlabel,m.showlabels,1),ca=s(p(N.label,N.name)),pa=c(N.color,r.getPlotColor()),Ta=c(N.alpha,m.plotfillalpha,Ra),db=c(N.ratio,m.plotfillratio),
la=c(360-m.plotfillangle,u?180:90),Ha=c(N.alpha,t),Aa=b(N.dashed,C),Ga=c(N.dashgap,J),ab=c(N.dashlen,ua),n.addXaxisCat(G,F,F,B?ca:a,N,{},m,pa),F+=1,0>wa&&(la=u?180-la:360-la),jb={opacity:Ta/100},L=M(pa+xa+v.replace(/,+?$/,""),Ta,db,la,V,Z,Ha+a,u,q),B=Aa?k(ab,Ga,d):"none",pa=this.pointHoverOptions(N,f,{plotType:"column",is3d:q,isBar:u,use3DLighting:Q,isRoundEdged:V,color:pa,gradientColor:v,alpha:Ta,ratio:db,angle:la,borderWidth:d,borderColor:Z,borderAlpha:Ha,borderDashed:Aa,borderDashGap:Ga,borderDashLen:ab,
shadow:jb}),f.data.push(h(this.getPointStub(N,wa,ca,g),{y:wa,shadow:jb,color:L[0],borderColor:L[1],borderWidth:d,use3DLighting:Q,dashStyle:B,tooltipConstraint:this.tooltipConstraint,hoverEffects:pa.enabled&&pa.options,rolloverProperties:pa.enabled&&pa.rolloverOptions})),this.pointValueWatcher(g,wa));D.catCount=F;return f},defaultSeriesType:"column"},fb);ha("linebase",{defaultSeriesType:"line",hasVDivLine:!0,defaultPlotShadow:1,point:function(d,f,l,m,g){var A,D,n,G,r,q,u,v,V,t,Z,F,Q,ba,B,C,H,ua,pa,
J,wa,K,ca,Ta,db,la;d=g.chart;var Ha=l.length,Aa=g.xAxis;A=g[e];var Ga=this.colorManager,N,ab=A.axisGridManager,L=0,jb=A.x,O=g[e].numberFormatter,M,Va,ub;ba=T(c(m.linecolor,m.palettecolors,Ga.getColor("plotFillColor")));B=c(m.linealpha,Ra);Z=b(m.linethickness,this.lineThickness,4);F=Boolean(b(m.linedashed,0));u=b(m.linedashlen,5);v=b(m.linedashgap,4);db=b(m.anchorshadow,0);f.color={FCcolor:{color:ba,alpha:B}};f.lineWidth=Z;f.anchorShadow=db;f.step=c(this.stepLine,f.step);f.drawVerticalJoins=Boolean(b(f.drawVerticalJoins,
m.drawverticaljoins,1));f.useForwardSteps=Boolean(b(f.useForwardSteps,m.useforwardsteps,1));Q=b(m.drawanchors,m.showanchors);for(D=0;D<Ha;D+=1)G=l[D],G.vline?ab.addVline(Aa,G,L,g):(A=O.getCleanValue(G.value),r=b(G.showlabel,m.showlabels,1),n=s(p(G.label,G.name)),ab.addXaxisCat(Aa,L,L,r?n:a,G,{},m),L+=1,V=T(c(G.color,ba)),t=b(G.alpha,B),r=b(G.dashed,F)?k(u,v,Z):"none",q={opacity:t/100},H=b(G.anchorsides,m.anchorsides,0),Ta=b(G.anchorstartangle,m.anchorstartangle,90),J=b(G.anchorradius,m.anchorradius,
this.anchorRadius,3),pa=T(c(G.anchorbordercolor,m.anchorbordercolor,ba)),ua=b(G.anchorborderthickness,m.anchorborderthickness,this.anchorBorderThickness,1),wa=T(c(G.anchorbgcolor,m.anchorbgcolor,Ga.getColor("anchorBgColor"))),K=c(G.anchoralpha,m.anchoralpha,Ra),ca=c(G.anchorbgalpha,m.anchorbgalpha,K),M=c(G.anchorimageurl,m.anchorimageurl),Va=c(G.anchorimagescale,m.anchorimagescale,100),ub=c(G.anchorimagealpha,m.anchorimagealpha,100),C=void 0===Q?0!==t:!!Q,la=Boolean(b(G.anchorshadow,db,0)),N=this.pointHoverOptions(G,
f,{plotType:"anchor",anchorBgColor:wa,anchorAlpha:K,anchorBgAlpha:ca,anchorAngle:Ta,anchorBorderThickness:ua,anchorBorderColor:pa,anchorBorderAlpha:K,anchorSides:H,anchorRadius:J,imageUrl:M,imageScale:Va,imageAlpha:ub,shadow:q}),f.data.push(h(this.getPointStub(G,A,n,g),{y:A,color:{FCcolor:{color:V,alpha:t}},shadow:q,dashStyle:r,valuePosition:c(G.valueposition,d.valuePosition),marker:{enabled:!!C,shadow:la&&{opacity:K/100},fillColor:{FCcolor:{color:wa,alpha:ca*K/100+a}},lineColor:{FCcolor:{color:pa,
alpha:K}},lineWidth:ua,radius:J,startAngle:Ta,symbol:Fa(H),imageUrl:M,imageScale:Va,imageAlpha:ub},tooltipConstraint:this.tooltipConstraint,hoverEffects:N.enabled&&N.options,rolloverProperties:N.enabled&&N.rolloverOptions})),this.pointValueWatcher(g,A));jb.catCount=L;return f},defaultZeroPlaneHighlighted:!1},fb);ha("area2dbase",{defaultSeriesType:"area",hasVDivLine:!0,parseAnchorVisibility:function(a,d,e){var h=b(a.drawanchors,d.drawanchors,d.showanchors);return U(h)?h:U(c(a.anchorsides,d.anchorsides,
a.anchorstartangle,d.anchorstartangle,a.anchorradius,d.anchorradius,a.anchorbordercolor,d.anchorbordercolor,a.anchorborderthickness,d.anchorborderthickness,a.anchorbgcolor,d.anchorbgcolor,a.anchoralpha,d.anchoralpha,a.anchorbgalpha,d.anchorbgalpha,a.anchorshadow,d.anchorshadow))||e},point:function(d,f,m,A,g){d=g.chart;var D=m.length,n=g.xAxis,G=g[e],r=G.axisGridManager,G=G.x,q=g[e].numberFormatter,u=this.colorManager,v=0,V,t,Z,F,Q,ba,B,C,ua,pa,J,wa,K,ca,Ta,db,la,Ha,Aa,Ga,N,L,ab,jb,O,M,Va,ub,Pa;Q=
c(A.plotfillcolor,A.areabgcolor,l(A.palettecolors)?u.getPlotColor(0):u.getColor("plotFillColor")).split(/\s*\,\s*/)[0];N=xa+(b(A.useplotgradientcolor,1)?H(A.plotgradientcolor,u.getColor("plotGradientColor")):a);ba=c(A.plotfillalpha,A.areaalpha,this.isStacked?Ra:"90");B=b(A.plotfillangle,270);C=c(A.plotbordercolor,A.areabordercolor,l(A.palettecolors)?u.getPlotColor(0):u.getColor("plotBorderColor")).split(/\s*\,\s*/)[0];ua=A.showplotborder==Sa?Sa:c(A.plotborderalpha,A.plotfillalpha,A.areaalpha,Ra);
V=b(A.plotborderangle,270);t=Boolean(b(A.plotborderdashed,0));Z=b(A.plotborderdashlen,5);K=b(A.plotborderdashgap,4);la=b(A.plotborderthickness,A.areaborderthickness,1);L=f.fillColor={FCcolor:{color:Q+N.replace(/,+?$/,""),alpha:ba,ratio:vb,angle:B}};f.lineWidth=la;f.dashStyle=t?k(Z,K,la):"none";f.lineColor={FCcolor:{color:C,alpha:ua,ratio:Ra,angle:V}};f.step=c(this.stepLine,f.step);f.drawVerticalJoins=Boolean(b(f.drawVerticalJoins,A.drawverticaljoins,1));f.useForwardSteps=Boolean(b(f.useForwardSteps,
A.useforwardsteps,1));la=Boolean(b(A.drawanchors,A.showanchors,1));O=Boolean(this.parseAnchorVisibility({},A,0));f.anchorShadow=ab=b(A.anchorshadow,0);for(t=0;t<D;t+=1)K=m[t],K.vline?r.addVline(n,K,v,g):(V=q.getCleanValue(K.value),F=b(K.showlabel,A.showlabels,1),Z=s(p(K.label,K.name)),r.addXaxisCat(n,v,v,F?Z:a,K,{},A),v+=1,F=b(K.anchorsides,A.anchorsides,0),wa=b(K.anchorstartangle,A.anchorstartangle,90),pa=b(K.anchorradius,A.anchorradius,3),J=T(c(K.anchorbordercolor,A.anchorbordercolor,C)),Ha=b(K.anchorborderthickness,
A.anchorborderthickness,1),ca=T(c(K.anchorbgcolor,A.anchorbgcolor,u.getColor("anchorBgColor"))),Ta=c(K.anchoralpha,A.anchoralpha,this.anchorAlpha,O?Ra:0),db=c(K.anchorbgalpha,A.anchorbgalpha,Ta),jb=Boolean(b(K.anchorshadow,ab,0)),Aa=l(K.color),Ga=b(K.alpha),Aa=void 0!==Aa||void 0!==Ga?{FCcolor:{color:Aa?T(Aa)+N:Q,alpha:void 0===Ga?da(Ga)+a:ba,ratio:vb,angle:B}}:L,M=c(K.anchorimageurl,A.anchorimageurl),Va=c(K.anchorimagescale,A.anchorimagescale,100),ub=c(K.anchorimagealpha,A.anchorimagealpha,100),
Ga={opacity:W(Ga,ua)/100,inverted:!0},Pa=this.pointHoverOptions(K,f,{plotType:"anchor",anchorBgColor:ca,anchorAlpha:Ta,anchorBgAlpha:db,anchorAngle:wa,anchorBorderThickness:Ha,anchorBorderColor:J,anchorBorderAlpha:Ta,anchorSides:F,anchorRadius:pa,imageUrl:M,imageScale:Va,imageAlpha:ub,shadow:Ga}),f.data.push(h(this.getPointStub(K,V,Z,g),{y:V,shadow:Ga,color:Aa,valuePosition:c(K.valueposition,d.valuePosition),marker:{enabled:la,shadow:jb&&{opacity:Ta/100},fillColor:{FCcolor:{color:ca,alpha:db*Ta/100+
a}},lineColor:{FCcolor:{color:J,alpha:Ta}},lineWidth:Ha,radius:pa,symbol:Fa(F),startAngle:wa,imageUrl:M,imageScale:Va,imageAlpha:ub},tooltipConstraint:this.tooltipConstraint,previousY:this.pointValueWatcher(g,V),hoverEffects:Pa.enabled&&Pa.options,rolloverProperties:Pa.enabled&&Pa.rolloverOptions})));G.catCount=v;return f}},fb);ha("mscolumn2dbase",{point:function(d,h,k,f,g,m,A,D,n){d=b(f.ignoreemptydatasets,0);var G=!1,r=k.data||[],p=g[e],s=c(h.type,this.defaultSeriesType),q=c(h.isStacked,g.plotOptions[s]&&
g.plotOptions[s].stacking),u=c(this.isValueAbs,p.isValueAbs,!1),v=b(h.yAxis,0),V=g[e].numberFormatter,t=this.colorManager,Z=t.getPlotColor(),F,Q=g._FCconf.isBar,ba=h.hoverEffects;q||(h.columnPosition=b(n,D,A));h.name=l(k.seriesname);if(0===b(k.includeinlegend)||void 0===h.name)h.showInLegend=!1;h.color=c(k.color,Z).split(xa)[0].replace(/^#?/g,"#");A=/3d$/.test(g.chart.defaultSeriesType);n=c(360-f.plotfillangle,Q?180:90);0>F&&(n=360-n);k=h._dataParser=Bb.column(g,{seriesname:h.name,plottooltext:k.plottooltext,
color:c(k.color,Z),alpha:c(k.alpha,f.plotfillalpha,Ra),plotgradientcolor:b(f.useplotgradientcolor,1)?H(f.plotgradientcolor,t.getColor("plotGradientColor")):a,ratio:c(k.ratio,f.plotfillratio),fillAangle:n,isRoundEdges:g.chart.useRoundEdges,plotBorderColor:c(f.plotbordercolor,A?Eb:t.getColor("plotBorderColor")).split(xa)[0],plotBorderAlpha:f.showplotborder==Sa||A&&f.showplotborder!=Ia?Sa:c(f.plotborderalpha,k.alpha,f.plotfillalpha,Ra),isBar:this.isBar,is3d:A,dashed:b(k.dashed,f.plotborderdashed,0),
dashLen:b(k.dashlen,f.plotborderdashlen,5),dashGap:b(k.dashgap,f.plotborderdashgap,4),borderWidth:b(f.plotborderthickness,Ia),showValues:b(k.showvalues,p.showValues),yAxis:v,use3DLighting:b(f.use3dlighting,1),_sourceDataset:k,hoverEffects:ba},this);for(f=0;f<m;f+=1)(p=r[f])?(F=V.getCleanValue(p.value,u),null===F?h.data.push({y:null}):(G=!0,p=k(p,f,F),h.data.push(p),p.previousY=this.pointValueWatcher(g,F,v,q,f,D,s))):h.data.push({y:null});!d||G||this.realtimeEnabled||(h.showInLegend=!1);return h},
defaultSeriesType:"column"},Xa);ha("mslinebase",{hasVDivLine:!0,point:function(d,h,k,f,g,m){d=b(f.ignoreemptydatasets,0);var A=!1,D=this.colorManager,n,G;n=g.chart;var r=k.data||[];G=g[e];var p=c(h.type,this.defaultSeriesType),s=c(h.isStacked,g.plotOptions[p]&&g.plotOptions[p].stacking),q=c(this.isValueAbs,G.isValueAbs,!1),u=b(h.yAxis,0),v=this.numberFormatter,V=T(c(k.color,f.linecolor,D.getPlotColor())),t=b(k.alpha,f.linealpha,Ra),Z=b(f.showshadow,this.defaultPlotShadow,1),F=b(k.drawanchors,k.showanchors,
f.drawanchors,f.showanchors),Q=b(k.anchorsides,f.anchorsides,0),ba=b(k.anchorstartangle,f.anchorstartangle,90),B=b(k.anchorradius,f.anchorradius,3),C=T(c(k.anchorbordercolor,f.anchorbordercolor,V)),H=b(k.anchorborderthickness,f.anchorborderthickness,1),D=T(c(k.anchorbgcolor,f.anchorbgcolor,D.getColor("anchorBgColor"))),ua=c(k.anchoralpha,f.anchoralpha,Ra),K=c(k.anchorbgalpha,f.anchorbgalpha,ua),pa=ua&&c(k.anchorshadow,f.anchorshadow,0),J=h.hoverEffects;h.name=l(k.seriesname);if(0===b(k.includeinlegend)||
void 0===h.name||0===t&&1!==F)h.showInLegend=!1;h.marker={enabled:Boolean(b(F,1)),fillColor:{FCcolor:{color:D,alpha:K*ua/100+a}},lineColor:{FCcolor:{color:C,alpha:ua+a}},lineWidth:H,radius:B,symbol:Fa(Q),startAngle:ba};h.color={FCcolor:{color:V,alpha:t}};h.shadow=Z?{opacity:Z?t/100:0}:!1;h.anchorShadow=pa;h.step=c(this.stepLine,h.step);h.drawVerticalJoins=Boolean(b(h.drawVerticalJoins,f.drawverticaljoins,1));h.useForwardSteps=Boolean(b(h.useForwardSteps,f.useforwardsteps,1));h.lineWidth=b(k.linethickness,
f.linethickness,2);n=h._dataParser=Bb.line(g,{seriesname:h.name,plottooltext:k.plottooltext,lineAlpha:t,anchorAlpha:ua,showValues:b(k.showvalues,G.showValues),yAxis:u,lineDashed:Boolean(b(k.dashed,f.linedashed,0)),lineDashLen:b(k.linedashlen,f.linedashlen,5),lineDashGap:b(k.linedashgap,f.linedashgap,4),lineThickness:h.lineWidth,lineColor:V,valuePosition:c(k.valueposition,n.valuePosition),drawAnchors:F,anchorBgColor:D,anchorBgAlpha:K,anchorBorderColor:C,anchorBorderThickness:H,anchorRadius:B,anchorSides:Q,
anchorAngle:ba,anchorShadow:h.anchorShadow,anchorStartAngle:b(k.anchorstartangle,f.anchorstartangle),_sourceDataset:k,hoverEffects:J,imageUrl:c(k.anchorimageurl,f.anchorimageurl),imageScale:c(k.anchorimagescale,f.anchorimagescale,100),imageAlpha:c(k.anchorimagealpha,f.anchorimagealpha,100)},this);for(f=0;f<m;f+=1)(G=r[f])?(k=v.getCleanValue(G.value,q),null===k?h.data.push({y:null}):(A=!0,G=n(G,f,k),h.data.push(G),G.previousY=this.pointValueWatcher(g,k,u,s,f,0,p))):h.data.push({y:null});!d||A||this.realtimeEnabled||
(h.showInLegend=!1);return h},defaultSeriesType:"line",defaultPlotShadow:1,defaultZeroPlaneHighlighted:!1},Xa);ha("msareabase",{hasVDivLine:!0,point:function(d,h,f,l,g,m){d=b(l.ignoreemptydatasets,0);var A=!1,D=g.chart,n=f.data||[],G=g[e],r=c(h.type,this.defaultSeriesType),p=c(h.isStacked,g.plotOptions[r]&&g.plotOptions[r].stacking),s=c(this.isValueAbs,G.isValueAbs,!1),q=b(h.yAxis,0),u=g[e].numberFormatter,v=this.colorManager,V=v.getPlotColor(),t=c(f.color,l.plotfillcolor,V).split(xa)[0].replace(/^#?/g,
"#").split(xa)[0],Z=c(f.alpha,l.plotfillalpha,l.areaalpha,this.areaAlpha,70),F=b(l.plotfillangle,270),V=c(f.plotbordercolor,l.plotbordercolor,l.areabordercolor,this.isRadar?V:"666666").split(xa)[0],Q=c(f.showplotborder,l.showplotborder)==Sa?Sa:c(f.plotborderalpha,l.plotborderalpha,f.alpha,l.plotfillalpha,l.areaalpha,"95"),ba=b(l.plotborderangle,270),B=b(f.anchorsides,l.anchorsides,0),C=b(f.anchorstartangle,l.anchorstartangle,90),ua=b(f.anchorradius,l.anchorradius,3),K=T(c(f.anchorbordercolor,l.anchorbordercolor,
t)),pa=b(f.anchorborderthickness,l.anchorborderthickness,1),J=T(c(f.anchorbgcolor,l.anchorbgcolor,v.getColor("anchorBgColor"))),wa=Boolean(ha.area2dbase.parseAnchorVisibility(f,l,0)),wa=b(f.anchoralpha,l.anchoralpha,this.anchorAlpha,wa?Ra:0),ca=b(f.anchorbgalpha,l.anchorbgalpha,wa),Ta=wa&&c(f.anchorshadow,l.anchorshadow,0),db=h.hoverEffects;this.isRadar||(t+=xa+(b(l.useplotgradientcolor,1)?H(l.plotgradientcolor,v.getColor("plotGradientColor")):a),t=t.replace(/,+?$/,""));h.step=c(this.stepLine,h.step);
h.drawVerticalJoins=Boolean(b(h.drawVerticalJoins,l.drawverticaljoins,1));h.useForwardSteps=Boolean(b(h.useForwardSteps,l.useforwardsteps,1));h.name=c(f.seriesname);if(0===b(f.includeinlegend)||void 0===h.name)h.showInLegend=!1;h.fillColor={FCcolor:{color:t,alpha:Z,ratio:vb,angle:F}};h.color=t;h.shadow={opacity:b(l.showshadow,1)?Q/100:0};h.anchorShadow=Ta;h.lineColor={FCcolor:{color:V,alpha:Q,ratio:Ra,angle:ba}};h.lineWidth=c(f.plotborderthickness,l.plotborderthickness,1);h.dashStyle=Boolean(b(f.dashed,
l.plotborderdashed,0))?k(b(f.dashlen,l.plotborderdashlen,5),b(f.dashgap,l.plotborderdashgap,4),h.lineWidth):"none";h.marker={fillColor:{FCcolor:{color:J,alpha:ca*wa/100+a}},lineColor:{FCcolor:{color:K,alpha:wa+a}},lineWidth:pa,radius:ua,symbol:Fa(B),startAngle:C};f=h._dataParser=Bb.area(g,{seriesname:h.name,plottooltext:f.plottooltext,lineAlpha:Q,anchorAlpha:wa,showValues:b(f.showvalues,G.showValues),yAxis:q,fillColor:t,fillAlpha:Z,valuePosition:c(f.valueposition,D.valuePosition),drawAnchors:Boolean(b(f.drawanchors,
l.drawanchors,l.showanchors,1)),anchorBgColor:J,anchorBgAlpha:ca,anchorBorderColor:K,anchorBorderThickness:pa,anchorRadius:ua,anchorSides:B,anchorAngle:C,anchorShadow:h.anchorShadow,getLink:this.linkClickFN,anchorStartAngle:b(f.anchorstartangle,l.anchorstartangle),_sourceDataset:f,hoverEffects:db,imageUrl:c(f.anchorimageurl,l.anchorimageurl),imageScale:c(f.anchorimagescale,l.anchorimagescale,100),imageAlpha:c(f.anchorimagealpha,l.anchorimagealpha,100)},this);for(D=0;D<m;D+=1)(G=n[D])?(l=G?u.getCleanValue(G.value,
s):null,null===l?h.data.push({y:null}):(A=!0,G=f(G,D,l),h.data.push(G),G.previousY=this.pointValueWatcher(g,l,q,p,D,0,r))):h.data.push({y:null});!d||A||this.realtimeEnabled||(h.showInLegend=!1);return h},defaultSeriesType:"area",defaultPlotShadow:0},Xa);ha("scatterbase",{showValues:0,defaultPlotShadow:0,rendererId:"cartesian",defaultSeriesType:"scatter",canvasPaddingModifiers:["anchorlabel"],point:function(d,h,f,m,g,A,D){d=b(m.ignoreemptydatasets,0);var n=this.colorManager,G=n.getPlotColor(),r,p,
s,q,u,v,V,t,Z,F,Q,ba,B,C,H,ua,K,pa,J;A=!1;var wa,ca;u=b(f.drawline,m.drawlines,0);v=b(f.drawprogressioncurve,0);q=f.data||[];var Ta,db,la,Aa,Ha,Ga=b(f.showvalues,g[e].showValues),N=this.numberFormatter,L,ab=h._showRegression=b(f.showregressionline,m.showregressionline,0);h.zIndex=1;h.name=l(f.seriesname);if(0===b(f.includeinlegend)||void 0===h.name)h.showInLegend=!1;if(u||v)s=T(c(f.color,G)),q=c(f.alpha,Ra),u=b(f.linethickness,m.linethickness,2),v=Boolean(b(f.linedashed,f.dashed,m.linedashed,0)),
V=b(f.linedashlen,m.linedashlen,5),t=b(f.linedashgap,m.linedashgap,4),h.color=S(c(f.linecolor,m.linecolor,s),b(f.linealpha,m.linealpha,q)),h.lineWidth=u,h.dashStyle=v?k(V,t,u):"none";u=Boolean(b(f.drawanchors,f.showanchors,m.drawanchors,m.showanchors,1));D=b(f.anchorsides,m.anchorsides,D+3);v=b(f.anchorradius,m.anchorradius,3);s=T(c(f.anchorbordercolor,f.color,m.anchorbordercolor,s,G));G=b(f.anchorborderthickness,m.anchorborderthickness,1);V=T(c(f.anchorbgcolor,m.anchorbgcolor,n.getColor("anchorBgColor")));
t=c(f.anchoralpha,f.alpha,m.anchoralpha,Ra);Q=c(f.anchorbgalpha,f.alpha,m.anchorbgalpha,t);wa=c(f.anchorstartangle,m.anchorstartangle,90);h.anchorShadow=n=b(m.anchorshadow,0);h.marker={fillColor:this.getPointColor(V,Ra),lineColor:{FCcolor:{color:s,alpha:t+a}},lineWidth:G,radius:v,symbol:Fa(D)};q=f.data||[];Ha=q.length;ab&&(h.events={hide:this.hideRLine,show:this.showRLine},Ta={sumX:0,sumY:0,sumXY:0,sumXsqure:0,sumYsqure:0,xValues:[],yValues:[]},Aa=b(f.showyonx,m.showyonx,1),db=T(c(f.regressionlinecolor,
m.regressionlinecolor,s)),la=b(f.regressionlinethickness,m.regressionlinethickness,G),r=da(b(f.regressionlinealpha,m.regressionlinealpha,t)),db=S(db,r));for(p=0;p<Ha;p+=1)(Z=q[p])?(r=N.getCleanValue(Z.y),J=N.getCleanValue(Z.x),null===r?h.data.push({y:null,x:J}):(A=!0,ca=this.getPointStub(Z,r,N.xAxis(J),g,f,Ga),ba=b(Z.anchorsides,D),B=b(Z.anchorradius,v),C=T(c(Z.anchorbordercolor,s)),H=b(Z.anchorborderthickness,G),ua=T(c(Z.anchorbgcolor,V)),K=c(Z.anchoralpha,Z.alpha,t),pa=c(Z.anchorbgalpha,Q),F=Boolean(b(Z.anchorshadow,
n,0)),L=this.pointHoverOptions(Z,h,{plotType:"anchor",anchorBgColor:ua,anchorAlpha:K,anchorBgAlpha:pa,anchorAngle:wa,anchorBorderThickness:H,anchorBorderColor:C,anchorBorderAlpha:K,anchorSides:ba,anchorRadius:B,shadow:void 0}),h.data.push({y:r,x:J,displayValue:ca.displayValue,toolText:ca.toolText,link:ca.link,marker:{enabled:u,shadow:F&&{opacity:K/100},fillColor:{FCcolor:{color:ua,alpha:pa*K/100+a}},lineColor:{FCcolor:{color:C,alpha:K}},lineWidth:H,radius:B,symbol:Fa(ba),startAngle:c(Z.anchorstartangle,
f.anchorstartangle,m.anchorstartangle,90)},hoverEffects:L.enabled&&L.options,rolloverProperties:L.enabled&&L.rolloverOptions}),this.pointValueWatcher(g,r,J,ab&&Ta))):h.data.push({y:null});ab&&(f=this.getRegressionLineSeries(Ta,Aa,Ha),this.pointValueWatcher(g,f[0].y,f[0].x),this.pointValueWatcher(g,f[1].y,f[1].x),g={type:"line",color:db,showInLegend:!1,lineWidth:la,enableMouseTracking:!1,marker:{enabled:!1},data:f,zIndex:0},h=[h,g]);d&&!A&&(h.showInLegend=!1);return h},postSeriesAddition:function(a,
c){for(var d=a.chart,e=c.chart,g=a.series,h=0,f=g.length;h<f;h+=1)g[h]._showRegression&&(g[h].relatedSeries=[h+1]);d.clipBubbles=b(e.clipbubbles,1)},categoryAdder:function(d,h){var f,l=0,g,m=h[e].x,A,D=h.xAxis,n,G,r=d.chart,q=parseInt(r.labelstep,10),v=b(r.showlabels,1),V=c(r.xaxislabelmode,"categories").toLowerCase(),t=this.colorManager,Z=h[e].numberFormatter,F,Q,ba,B,C,H;h._FCconf.isXYPlot=!0;q=1<q?q:1;m.catOccupied={};if("auto"!==V&&d.categories&&d.categories[0]&&d.categories[0].category){G=d.categories[0];
G.font&&(h.xAxis.labels.style.fontFamily=G.font);void 0!==(g=b(G.fontsize))&&(1>g&&(g=1),h.xAxis.labels.style.fontSize=g+Da,u(h.xAxis.labels.style));G.fontcolor&&(h.xAxis.labels.style.color=G.fontcolor.split(xa)[0].replace(/^\#?/,"#"));f=c(G.verticallinecolor,t.getColor("divLineColor"));g=b(G.verticallinethickness,1);A=b(G.verticallinealpha,t.getColor("divLineAlpha"));t=b(G.verticallinedashed,0);F=b(G.verticallinedashlen,4);Q=b(G.verticallinedashgap,2);ba=S(f,A);for(f=0;f<G.category.length;f+=1)B=
G.category[f],A=Z.getCleanValue(B.x),null===A||B.vline||(m.catOccupied[A]=!0,n=b(B.showlabel,B.showname,v),C=b(B.showverticalline,B.showline,B.sl,0),H=b(B.linedashed,t),n=0===n||0!==l%q?a:s(p(B.label,B.name)),D.plotLines.push({isGrid:!0,isCat:!0,isDataLabel:!0,width:C?g:0,color:ba,dashStyle:k(F,Q,g,H),value:A,label:{text:n,link:c(B.link,r.labellink),style:Ba({},B,r,D.labels.style),align:oa,verticalAlign:Ea,textAlign:oa,rotation:0,x:0,y:0}}),this.pointValueWatcher(h,null,A),l+=1);"mixed"===V&&(m.requiredAutoNumericLabels=
b(this.requiredAutoNumericLabels,1))}else m.requiredAutoNumericLabels=b(this.requiredAutoNumericLabels,1);m.adjustMinMax=!0},getPointColor:function(a,b){var c,d;a=T(a);b=da(b);c=ta(a,70);d=sa(a,50);return{FCcolor:{gradientUnits:"objectBoundingBox",cx:.4,cy:.4,r:"100%",color:c+xa+d,alpha:b+xa+b,ratio:vb,radialGradient:!0}}}},ha.xybase);ha("mscombibase",{canvasPaddingModifiers:["anchor","anchorlabel"],series:function(a,d,h){var f,g,k,l,A=a.chart,D,n=[],G=[],r=[],s,q,v=d[e],u=this.isDual,V=0,t;d.legend.enabled=
Boolean(b(a.chart.showlegend,1));if(a.dataset&&0<a.dataset.length){this.categoryAdder(a,d);l=v.oriCatTmp.length;f=0;for(g=a.dataset.length;f<g;f+=1)switch(k=a.dataset[f],s=u&&"s"===c(k.parentyaxis,"p").toLowerCase()?!0:!1,D={hoverEffects:this.parseSeriesHoverOptions(a,d,k,h),visible:!b(k.initiallyhidden,0),legendIndex:f,data:[]},s?(D.yAxis=1,q=p(k.renderas,this.secondarySeriesType),this.secondarySeriesFilter&&(t=this.secondarySeriesFilter[q])):(q=p(k.renderas,this.defaultSeriesType),this.defaultSeriesFilter&&
(t=this.defaultSeriesFilter[q])),q=q.toLowerCase(),q){case "line":case "spline":D.type=!0===t?q:"line";n.push(ha.mslinebase.point.call(this,h,D,k,A,d,l,f));break;case "area":case "splinearea":D.type=!0===t?q:"area";d.chart.series2D3Dshift=!0;r.push(ha.msareabase.point.call(this,h,D,k,A,d,l,f));break;case "column":case "column3d":G.push(ha.mscolumn2dbase.point.call(this,h,D,a.dataset[f],A,d,l,f,void 0,V));V+=1;break;default:s?(D.type="line",n.push(ha.mslinebase.point.call(this,h,D,k,A,d,l,f))):(G.push(ha.mscolumn2dbase.point.call(this,
h,D,a.dataset[f],A,d,l,f,void 0,V)),V+=1)}"0"!==A.areaovercolumns?(d.chart.areaOverColumns=!0,d.series=d.series.concat(G,r,n)):(d.chart.areaOverColumns=!1,d.series=d.series.concat(r,G,n));if(0===G.length&&1!==l)v.hasNoColumn=!0;else if(!this.isStacked)for(h=0,f=G.length;h<f;h+=1)G[h].numColumns=f;this.configureAxis(d,a);a.trendlines&&m(a.trendlines,d.yAxis,d[e],u,this.isBar)}}},ha.mscolumn2dbase)}]);
FusionCharts.register("module",["private","modules.renderer.jpegtopdf",function(){var f=this.window,t=f.btoa,C=f.atob;this.hcLib.JpegToPdf=function(f,d){var a=[],m=0,F=f||500,c=d||500,l,b,p;l=function(b){m+=b.length+1;a.push(b)};this.addImage=function(a){a=/base64,(.+?)$/g.exec(a);p=C(a[1])};b=function(){var b=[],d,e;l("%PDF-1.7");b[1]=m;l("1 0 obj");l("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]");l("endobj");b[4]=m;l("4 0 obj");l("<< /Length 36>>");l("stream");l("q "+c+" 0 0 "+F+" 0 0 cm /Im3 Do Q");
l("endstream");l("endobj");b[5]=m;l("5 0 obj");l("<</Type /Page /Parent 2 0 R /MediaBox [0 0 "+c+" "+F+"] /Contents [4 0 R ] /Resources <</ProcSet 1 0 R /Font <<>> /XObject <</Im3 3 0 R >> >> >>");l("endobj");b[3]=m;l("3 0 obj");l("<</Type /XObject /Subtype /Image /Width "+c+" /Height "+F+" /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length "+p.length+">>");l("stream");l(p);l("endstream");l("endobj");b[2]=m;l("2 0 obj");l("<</Type /Pages /Kids [5 0 R ] /Count 1>>");l("endobj");
b[6]=m;l("6 0 obj");l("<</Type /Catalog /Pages 2 0 R >>");l("endobj");d=m;l("xref");l("0 7");l("0000000000 65535 f ");for(e=1;6>=e;e++)l(("0000000000"+b[e]).slice(-10)+" 00000 n ");l("trailer");l("<</Size 7 /Root 6 0 R >>");l("startxref");l(d);l("%%EOF");return a.join("\n")};this.getDataUrl=function(){return"data:application/pdf;base64,"+t(b())}}}]);
(function(){var f=window,t=f.document,C={},q={};f.SvgDeCanvo=function(d,a,f){var q={svg:"",context:"",callBack:"",imageArr:[]};if(!(this instanceof SvgDeCanvo))throw"This function should be used as class";this._getStore=function(a){return"undefined"!=typeof q[a]?q[a]:!1};this._setStore=function(a,d){"undefined"!=typeof q[a]&&(q[a]=d)};d&&this.setSVG(d);a&&this.setContext(a);f&&this.setCallback(f);this.drawOnCanvas()};SvgDeCanvo.prototype.setContext=function(d){var a;if(d.getContext&&d.getContext("2d"))a=
d.getContext("2d"),a.save(),a.fillStyle="#ffffff",a.fillRect(0,0,d.width,d.height),a.restore(),this._setStore("context",a);else throw"Please provide valid canvas";};SvgDeCanvo.prototype.getContext=function(){return this._getStore("context")};SvgDeCanvo.prototype.setSVG=function(d){if("undefined"!=typeof d.documentElement)this._setStore("svg",d);else if("<"==d.substr(0,1))d=q.StrToDom(d),this._setStore("svg",d);else throw"Please provide valid SVG";};SvgDeCanvo.prototype.getSVG=function(){return this._getStore("svg")};
SvgDeCanvo.prototype.setCallback=function(d){"function"===typeof d&&this._setStore("callBack",d)};SvgDeCanvo.prototype.getCallback=function(){return this._getStore("callBack")};SvgDeCanvo.prototype.drawOnCanvas=function(d,a,f){d&&this.setSVG(d);a&&this.setContext(a);f&&this.setCallback(f);f=this.getCallback();d=this.getContext();(a=this.getSVG())&&d&&(q.storeImagesInArr(this),q.drawNodes([a],[],this,d,f))};C.common=function(d,a,f,t,c){var l=d.childNodes,b=function(){d.attributes&&t.restore();c&&c()};
for(i in a)a.hasOwnProperty(i)&&"class"!=a[i].name&&"id"!=a[i].name&&"transform"!=a[i].name&&"clip-path"!=a[i].name&&"object"==typeof a[i]&&d.attributes&&!d.attributes[a[i].name]&&d.setAttribute([a[i].name],a[i].value);if(d.attributes&&d.attributes.style)for(i in styleArr=d.attributes.style.value.replace(/;$/,"").split(";"),styleArr)if(styleArr.hasOwnProperty(i)&&(styleName=styleArr[i].split(":")[0].trim(),!d.attributes[styleName]||"undefined"==d.attributes[styleName].value))try{d.setAttribute(styleName,
styleArr[i].split(":")[1].trim())}catch(p){}d.attributes&&(t.save(),d.attributes.transform&&q.startTransform(d.attributes.transform.value,t),d.attributes["clip-path"]&&q.applyClip(d.attributes["clip-path"].value,t,f));if(0==l.length||1==l.length&&!l[0].tagName)if("undefined"!==typeof d.tagName)if(a="draw"+d.tagName,C[a])if(d.attributes.display&&"none"==d.attributes.display.value)b();else C[a](d,t,f,"draw",b);else b();else b();else q.drawNodes(l,"svg"==d.tagName?[]:d.attributes,f,t,b)};C.drawtext=
function(d,a,f,q,c){this.drawtspan(d,a,f,q,c)};C.drawtspan=function(d,a,m,F,c){var l=d.innerHTML||d.textContent,b=d.attributes.x?d.attributes.x.value:0,p=d.attributes.y?d.attributes.y.value:0,C=d.attributes.dx?d.attributes.dx.value:0,s=d.attributes.dy?d.attributes.dy.value:0,e="serief",h="normal",k="16px",v=[],K;t.getElementsByTagName("body")[0]&&(K=f.getComputedStyle(t.getElementsByTagName("body")[0],null),K.getPropertyValue("font-family")&&(e=K.getPropertyValue("font-family")),K.getPropertyValue("font-weight")&&
(h=K.getPropertyValue("font-weight")),K.getPropertyValue("font-size")&&(k=K.getPropertyValue("font-size")));e=d.attributes["font-family"]?d.attributes["font-family"].value:e;h=d.attributes["font-weight"]?d.attributes["font-weight"].value:h;K=d.attributes["text-anchor"]?d.attributes["text-anchor"].value:"start";k=d.attributes["font-size"]?d.attributes["font-size"].value:k;b=Number(b)+Number(C);p=Number(p)+Number(s);l=l.trim();K="middle"==K?"center":K;a.save();a.font=h+" "+k+" "+e;a.textAlign=K;if("draw"===
F){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)q.applyFillEffect(d,a,m,v),a.fillText(l,b,p),q.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)q.applyStrokeEffect(d,a,m,v),a.strokeText(l,b,p),q.endStrokeEffect(d,a)}a.restore();"function"===typeof c&&c()};C.drawcircle=function(d,a,f,t,c){var l=Number(d.attributes.cx.value),b=Number(d.attributes.cy.value),p=Number(d.attributes.r.value),C=[];a.beginPath();a.arc(l,b,p,0,2*
Math.PI);q.bBoxFromPoint([l,1*l+1*p,1*l-1*p],[b,1*b+1*p,1*b-1*p],C);if("draw"===t){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)q.applyFillEffect(d,a,f,C),a.fill(),q.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)q.applyStrokeEffect(d,a,f,C),a.stroke(),q.endStrokeEffect(d,a)}a.closePath();"function"===typeof c&&c()};C.drawrect=function(d,a,f,t,c){var l=Number(d.attributes.x.value),b=Number(d.attributes.y.value),p=d.attributes.rx?
Number(d.attributes.rx.value):0,C=d.attributes.ry?Number(d.attributes.ry.value):0,s=Number(d.attributes.height.value),e=Number(d.attributes.width.value),h=[];q.bBoxFromPoint([l,l+e],[b,b+s],h);a.beginPath();a.moveTo(l+p,b);a.lineTo(l+e-p,b);a.quadraticCurveTo(l+e,b,l+e,b+C);a.lineTo(l+e,b+s-C);a.quadraticCurveTo(l+e,b+s,l+e-p,b+s);a.lineTo(l+p,b+s);a.quadraticCurveTo(l,b+s,l,b+s-C);a.lineTo(l,b+C);a.quadraticCurveTo(l,b,l+p,b);if("draw"===t){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)q.applyFillEffect(d,
a,f,h),a.fill(),q.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)q.applyStrokeEffect(d,a,f,h),a.stroke(),q.endStrokeEffect(d,a)}a.closePath();"function"===typeof c&&c()};C.drawellipse=function(d,a,f,t,c){var l=Number(d.attributes.cx.value),b=Number(d.attributes.cy.value),p=Number(d.attributes.rx.value),C=Number(d.attributes.ry.value),s=.5522848*p,e=.5522848*C,h=l+p,k=b+C,v=[];a.beginPath();a.moveTo(l-p,b);a.bezierCurveTo(l-p,b-e,l-s,b-C,l,b-C);a.bezierCurveTo(l+
s,b-C,h,b-e,h,b);a.bezierCurveTo(h,b+e,l+s,k,l,k);a.bezierCurveTo(l-s,k,l-p,b+e,l-p,b);q.bBoxFromPoint([l+p,l-p],[b+C,b-C],v);if("draw"===t){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)q.applyFillEffect(d,a,f,v),a.fill(),q.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)q.applyStrokeEffect(d,a,f,v),a.stroke(),q.endStrokeEffect(d,a)}a.closePath();"function"===typeof c&&c()};C.drawimage=function(d,a,f,q,c){var l=d.attributes.x?
Number(d.attributes.x.value):0,b=d.attributes.y?Number(d.attributes.y.value):0,p=d.attributes.height?Number(d.attributes.height.value):0,t=d.attributes.width?Number(d.attributes.width.value):0,s,e=f._getStore("imageArr");a.save();d.attributes.opacity&&(a.globalAlpha=d.attributes.opacity.value);d.attributes["xlink:href"]?(s=d.attributes["xlink:href"].value,"complete"===e[s].status?(a.drawImage(e[s].obj,l,b,t,p),a.globalAlpha=1,a.restore(),"function"===typeof c&&c()):"error"===e[s].status?(a.globalAlpha=
1,a.restore(),"function"===typeof c&&c()):"progress"===e[s].status?(e[s].callback=function(){a.drawImage(e[s].obj,l,b,t,p);a.globalAlpha=1;a.restore();"function"===typeof c&&c()},e[s].errCallback=function(){a.globalAlpha=1;a.restore();"function"===typeof c&&c()}):(a.globalAlpha=1,a.restore(),"function"===typeof c&&c())):(a.globalAlpha=1,a.restore(),"function"===typeof c&&c())};C.drawpath=function(d,a,f,t,c){var l=d.attributes.d.value.match(/[a-z][^a-z"]*/ig),b=[],p,C,s,e=0,h=0,k;a.beginPath();for(p in l)if(l.hasOwnProperty(p))switch(C=
l[p].substring(0,1),s=q.getArgsAsArray(l[p].substring(1,l[p].length)),C){case "M":e=Number(s[0]);h=Number(s[1]);a.moveTo(e,h);break;case "m":e+=Number(s[0]);h+=Number(s[1]);a.moveTo(e,h);break;case "L":for(k=0;s[k];k+=2)q.bBoxFromPoint([e,s[k]],[h,s[k+1]],b),e=Number(s[k]),h=Number(s[k+1]),a.lineTo(e,h);break;case "l":for(k=0;s[k];k+=2)q.bBoxFromPoint([e,1*e+1*s[k]],[h,1*h+1*s[k+1]],b),e+=Number(s[k]),h+=Number(s[k+1]),a.lineTo(e,h);break;case "V":for(k=0;s[k];k+=1)q.bBoxFromPoint([e],[h,s[k]],b),
h=Number(s[k]),a.lineTo(e,h);break;case "v":for(k=0;s[k];k+=1)q.bBoxFromPoint([e],[h,1*h+1*s[k]],b),h+=Number(s[k]),a.lineTo(e,h);break;case "H":for(k=0;s[k];k+=1)q.bBoxFromPoint([e,s[k]],[h],b),e=Number(s[k]),a.lineTo(e,h);break;case "h":for(k=0;s[k];k+=1)q.bBoxFromPoint([e,1*e+1*s[k]],[h],b),e+=Number(s[k]),a.lineTo(e,h);break;case "Q":for(k=0;s[k];k+=4)q.qBezierBBox(e,h,s[k],s[k+1],s[k+2],s[k+3],b),a.quadraticCurveTo(Number(s[k]),Number(s[k+1]),Number(s[k+2]),Number(s[k+3])),e=Number(s[k+2]),h=
Number(s[k+3]);break;case "q":for(k=0;s[k];k+=4)q.qBezierBBox(e,h,e+1*s[k],h+1*s[k+1],1*e+1*s[k+2],1*h+1*s[k+3],b),a.quadraticCurveTo(e+1*s[k],h+1*s[k+1],e+=Number(s[k+2]),h+=Number(s[k+3]));break;case "C":for(k=0;s[k];k+=6)q.cBezierBBox(e,h,s[k],s[k+1],s[k+2],s[k+3],s[k+4],s[k+5],b),a.bezierCurveTo(s[k],s[k+1],s[k+2],s[k+3],s[k+4],s[k+5]),e=Number(s[k+4]),h=Number(s[k+5]);break;case "c":for(k=0;s[k];k+=6)q.cBezierBBox(e,h,e+1*s[k],1*h+1*s[k+1],e+1*s[k+2],1*h+1*s[k+3],e+1*s[k+4],1*h+1*s[k+5],b),a.bezierCurveTo(e+
Number(s[k]),h+Number(s[k+1]),e+Number(s[k+2]),h+Number(s[k+3]),e+=Number(s[k+4]),h+=Number(s[k+5]));break;case "a":case "A":for(k=0;s[k];k+=7){var v=Number(s[k]),K=Number(s[k+1]),J,n,N,B,U,r,ga,X,aa,W,ya,va,za,ja;J=Math.PI/180*Number(s[k+2]);n=Number(s[k+3]);N=Number(s[k+4]);B=Number(s[k+5]);U=Number(s[k+6]);r=Math.cos(J)*(e-B)/2+Math.sin(J)*(h-U)/2;ga=-Math.sin(J)*(e-B)/2+Math.cos(J)*(h-U)/2;v=0>v?-v:v;K=0>K?-K:K;va=Math.pow(r,2)/Math.pow(v,2)+Math.pow(ga,2)/Math.pow(K,2);1<va&&(v*=Math.sqrt(va),
K*=Math.sqrt(va));va=v>K?v:K;za=v>K?1:v/K;ja=v>K?K/v:1;n=(n==N?-1:1)*Math.sqrt((Math.pow(v,2)*Math.pow(K,2)-Math.pow(v,2)*Math.pow(ga,2)-Math.pow(K,2)*Math.pow(r,2))/(Math.pow(v,2)*Math.pow(ga,2)+Math.pow(K,2)*Math.pow(r,2)));isNaN(n)&&(n=0);X=n*v*ga/K;aa=-n*K*r/v;W=X*Math.cos(J)-aa*Math.sin(J)+(e+B)/2;ya=X*Math.sin(J)+aa*Math.cos(J)+(h+U)/2;n=q.angleBetweenVectors(1,0,(r-X)/v,(ga-aa)/K);r=q.angleBetweenVectors((r-X)/v,(ga-aa)/K,(-r-X)/v,(-ga-aa)/K);0==N&&0<r&&(r-=Math.PI/180*360);1==N&&0>r&&(r+=
Math.PI/180*360);if(0==v&&0==K){a.lineTo(B,U);break}a.save();v=q.combineTransformMatrix([[1,0,W,0,1,ya],[Math.cos(J),Math.sin(J),0,Math.sin(J),Math.cos(J),0],[za,0,0,0,ja,0]]);a.transform(v[0],v[3],v[1],v[4],v[2],v[5]);a.arc(0,0,va,n,n+r,1-N);a.restore();q.arcBBox(0,0,va,n,n+r,1-N,[v[0],v[3],v[1],v[4],v[2],v[5]],b);"A"==C?(e=Number(s[k+5]),h=Number(s[k+6])):(e+=Number(s[k+5]),h+=Number(s[k+6]))}break;case "Z":case "z":a.closePath()}if("draw"===t){if(!d.attributes.fill||d.attributes.fill&&"none"!=
d.attributes.fill.value)q.applyFillEffect(d,a,f,b),a.fill(),q.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)q.applyStrokeEffect(d,a,f,b),a.stroke(),q.endStrokeEffect(d,a);c()}};q.drawNodes=function(d,a,f,q,c){var l=d.length,b=-1,p=0,t=0,s=function(){var e;b+=1;b<l?(e=d[b],e.tagName&&"defs"===e.tagName&&(b+=1,e=d[b]),e.attributes&&(e.attributes.dy&&(t=e.attributes.dy.value=1*e.attributes.dy.value+1*t),e.attributes.dx&&(p=e.attributes.dx.value=1*
e.attributes.dx.value+1*p)),C.common(e,a,f,q,s)):c&&c()};s()};q.storeImagesInArr=function(d){var a=d.getSVG(),f,q;f=d._getStore("imageArr");d=a.getElementsByTagName("image");for(q in d)d.hasOwnProperty(q)&&d[q].attributes&&d[q].attributes["xlink:href"]&&(a=d[q].attributes["xlink:href"].value,f[a]||(f[a]=[],f[a].status="progress",f[a].callback=null,f[a].obj=new Image,f[a].obj.onload=function(a){return function(){var d=f[a].callback;d?(f[a].status="complete",d()):f[a].status="complete"}}(a),f[a].obj.onerror=
function(a){return function(){var d=f[a].errCallback;d?(f[a].status="error",d()):f[a].status="error"}}(a),f[a].obj.src=a))};q.startTransform=function(d,a){var f=d.match(/[^\s][a-z,0-9.\-(\s]+\)/gi),t,c;for(c in f)f.hasOwnProperty(c)&&(-1<f[c].indexOf("matrix")&&(t=q.stringToArgs(f[c]),a.transform(t[0],t[1],t[2],t[3],t[4],t[5])),-1<f[c].indexOf("translate")&&(t=q.stringToArgs(f[c]),a.translate(t[0]||0,t[1]||0)),-1<f[c].indexOf("rotate")&&(t=q.stringToArgs(f[c]),3==t.length?(a.translate(t[1],t[2]),
a.rotate(Math.PI/180*t[0]),a.translate(-t[1],-t[2])):a.rotate(Math.PI/180*t[0])),-1<f[c].indexOf("scale")&&(t=q.stringToArgs(f[c]),1==t.length?a.scale(t[0]||1,t[0]||1):a.scale(t[0]||1,t[1]||1)),-1<f[c].indexOf("skewX")&&(t=q.stringToArgs(f[c]),a.transform(1,0,Math.tan(Math.PI/180*t[0]),1,0,0)),-1<f[c].indexOf("skewY")&&(t=q.stringToArgs(f[c]),a.transform(1,Math.tan(Math.PI/180*t[0]),0,1,0,0)))};q.resetTransform=function(d){d.setTransform(1,0,0,1,0,0)};q.stringToArgs=function(d){d=/\(([^\)]+)/.exec(d)[1];
return q.getArgsAsArray(d)};q.getArgsAsArray=function(d){var a;d=d.trim().split(/[\s,]+/);for(a=0;a<d.length;a++)d[a].trim(),0==d[a].length&&d.splice(a,1);return d};q.applyFillEffect=function(d,a,f,t){a.globalAlpha=d.attributes["fill-opacity"]&&"none"!=d.attributes["fill-opacity"].value?d.attributes["fill-opacity"].value:1;d.attributes.fill&&-1<d.attributes.fill.value.indexOf("url(")?(d=q.getFillStyleById(/url\(.*#([^\)'"]+)/.exec(d.attributes.fill.value)[1],a,f,t),a.fillStyle=d):a.fillStyle=d.attributes.fill?
d.attributes.fill.value:"#000000"};q.endFillEffect=function(d,a){a.globalAlpha=1};q.applyStrokeEffect=function(d,a,f,t){d.attributes["stroke-opacity"]&&"none"!=d.attributes["stroke-opacity"].value&&(a.globalAlpha=d.attributes["stroke-opacity"].value);d.attributes["stroke-width"]&&(a.lineWidth=d.attributes["stroke-width"].value,0==d.attributes["stroke-width"].value&&(a.globalAlpha=0));d.attributes["stroke-linecap"]&&"none"!=d.attributes["stroke-linecap"].value&&(a.lineCap=d.attributes["stroke-linecap"].value);
d.attributes["stroke-linejoin"]&&"none"!=d.attributes["stroke-linejoin"].value&&(a.lineJoin=d.attributes["stroke-linejoin"].value);d.attributes["stroke-dasharray"]&&"none"!=d.attributes["stroke-dasharray"].value&&a.setLineDash&&a.setLineDash(q.getArgsAsArray(d.attributes["stroke-dasharray"].value));a.strokeStyle=d.attributes.stroke?d.attributes.stroke.value:"#000000"};q.endStrokeEffect=function(d,a){d.attributes["stroke-opacity"]&&"none"!=d.attributes["stroke-opacity"].value&&(a.globalAlpha=1,a.setLineDash&&
a.setLineDash([]),a.lineWidth=1);a.globalAlpha=1};q.applyClip=function(d,a,f){var q=f.getSVG(),c;if(-1!==d.indexOf("url(")){d=/url\(.*#([^\)'"]+)/.exec(d)[1];q=q.getElementById(d);q=q.childNodes;for(c in q)q.hasOwnProperty(c)&&q[c].tagName&&q[c].constructor!==Array&&(d="draw"+q[c].tagName,C[d]&&(C[d](q[c],a,f,"clip"),a.closePath()));a.clip()}};q.getFillStyleById=function(d,a,f,t){d=f.getSVG().getElementById(d);return"linearGradient"==d.tagName?q.getLinearGradient(d,a,t):"radialGradient"==d.tagName?
q.getRadialGradient(d,a,t):"#FFFFFF"};q.getLinearGradient=function(d,a,f){var t=d.attributes.x1?q.getPercentValue(d.attributes.x1.value,f.xMax-f.xMin,f.xMin):0,c=d.attributes.y1?q.getPercentValue(d.attributes.y1.value,f.yMax-f.yMin,f.yMin):0,l=d.attributes.x2?q.getPercentValue(d.attributes.x2.value,f.xMax-f.xMin,f.xMin):0;f=d.attributes.y2?q.getPercentValue(d.attributes.y2.value,f.yMax-f.yMin,f.yMin):0;var b;linGrad=a.createLinearGradient(t,c,l,f);d=d.childNodes;for(b in d)d.hasOwnProperty(b)&&d[b].attributes&&
d[b].attributes["stop-color"]&&(a=q.toRGB(d[b].attributes["stop-color"].value),t=d[b].attributes["stop-opacity"]?d[b].attributes["stop-opacity"].value:1,a.status?linGrad.addColorStop(q.getPercentValue(d[b].attributes.offset.value,1,0),"rgba("+a.r+","+a.g+","+a.b+","+Number(t)+")"):linGrad.addColorStop(q.getPercentValue(d[b].attributes.offset.value,1,0),d[b].attributes["stop-color"].value));return linGrad};q.getRadialGradient=function(d,a,f){var t=d.attributes.cx?q.getPercentValue(d.attributes.cx.value,
f.xMax-f.xMin,f.xMin):f.xMin+.5*(f.xMax-f.xMin),c=d.attributes.cy?q.getPercentValue(d.attributes.cy.value,f.yMax-f.yMin,f.yMin):f.yMin+.5*(f.yMax-f.yMin),l=d.attributes.fx?q.getPercentValue(d.attributes.fx.value,f.xMax-f.xMin,f.xMin):f.xMin+.5*(f.xMax-f.xMin),b=d.attributes.fy?q.getPercentValue(d.attributes.fy.value,f.yMax-f.yMin,f.yMin):f.yMin+.5*(f.yMax-f.yMin);f=d.attributes.r?q.getPercentValue(d.attributes.r.value,(f.yMax-f.yMin+f.xMax-f.xMin)/2,0):q.getPercentValue("50%",(f.yMax-f.yMin+f.xMax-
f.xMin)/2,0);var p;a=a.createRadialGradient(l,b,0,t,c,f);d=d.childNodes;for(p in d)d.hasOwnProperty(p)&&d[p].attributes&&d[p].attributes["stop-color"]&&(t=q.toRGB(d[p].attributes["stop-color"].value),c=d[p].attributes["stop-opacity"]?d[p].attributes["stop-opacity"].value:1,t.status?a.addColorStop(q.getPercentValue(d[p].attributes.offset.value,1,0),"rgba("+t.r+","+t.g+","+t.b+","+Number(c)+")"):a.addColorStop(q.getPercentValue(d[p].attributes.offset.value,1,0),d[p].attributes["stop-color"].value));
return a};q.getPercentValue=function(d,a,f){return-1!=d.indexOf("%")?(d=/(\d.*)%/.exec(d)[1],100<d&&(d=100),d*a/100+1*f):1<d?d:d*a+1*f};q.bBoxFromPoint=function(d,a,f){"undefined"!==typeof f.xMin&&(d.push(f.xMin,f.xMax),a.push(f.yMin,f.yMax));f.xMin=Math.min.apply(this,d);f.xMax=Math.max.apply(this,d);f.yMin=Math.min.apply(this,a);f.yMax=Math.max.apply(this,a)};q.arcBBox=function(d,a,f,q,c,l,b,p){var t,s,e;b instanceof Array&&(d=d*b[0]+d*b[2]+b[4],a=a*b[1]+a*b[3]+b[5]);e=function(a,b,c){a=(a+2*Math.PI)%
(2*Math.PI);b=(b+2*Math.PI)%(2*Math.PI);if(a<=b)return a<=c&&c<=b?!0:!1;if(a>=b)return a>=c&&c>=b?!1:!0};b=q%(2*Math.PI);t=c%(2*Math.PI);l&&(b=c%(2*Math.PI),t=q%(2*Math.PI));l=d+f*Math.cos(b);q=a+f*Math.sin(b);s=d+f*Math.cos(t);c=a+f*Math.sin(t);l=[l,s];q=[q,c];e(b,t,0)&&(l.push(1*d+1*f),q.push(a));e(b,t,.5*Math.PI)&&(l.push(d),q.push(1*a+1*f));e(b,t,Math.PI)&&(l.push(d-1*f),q.push(a));e(b,t,1.5*Math.PI)&&(l.push(d),q.push(a-1*f));d=Math.max.apply(this,l);a=Math.min.apply(this,l);f=Math.max.apply(this,
q);b=Math.min.apply(this,q);"undefined"!==typeof p.xMin?(p.xMin=Math.min(a,p.xMin),p.xMax=Math.max(d,p.xMax),p.yMin=Math.min(b,p.yMin),p.yMax=Math.max(f,p.yMax)):(p.xMin=a,p.xMax=d,p.yMin=b,p.yMax=f)};q.qBezierBBox=function(d,a,f,q,c,l,b){var p=1*d-2*f+1*c,t=1*a-2*q+1*l;0==p||0==t?(q=Math.max(d,c),d=Math.min(d,c),l=Math.max(a,l),a=Math.min(a,c)):(p=(d-f)/p,t=(a-q)/t,f=d*Math.pow(1-p,2)+2*f*(1-p)*p+c*Math.pow(p,2),t=a*Math.pow(1-t,2)+2*q*(1-t)*t+l*Math.pow(t,2),q=Math.max(d,c,f),d=Math.min(d,c,f),
l=Math.max(a,l,t),a=Math.min(a,c,t));"undefined"!==typeof b.xMin?(b.xMin=Math.min(d,b.xMin),b.xMax=Math.max(q,b.xMax),b.yMin=Math.min(a,b.yMin),b.yMax=Math.max(l,b.yMax)):(b.xMin=d,b.xMax=q,b.yMin=a,b.yMax=l)};q.cBezierBBox=function(d,a,f,q,c,l,b,p,t){var s,e,h,k,v,C,J;null==c&&null==l&&(f=d+2/3*(f-d),c=a+2/3*(q-a),q=f+1/3*(b-d),l=c+1/3*(p-a));J=function(a,b,c,d,e){return a*Math.pow(1-e,3)+3*b*e*Math.pow(1-e,2)+3*c*e*e*(1-e)+d*e*e*e};h=3*b-9*c+9*f-3*d;k=6*d-12*f+6*c;v=3*f-3*d;v=Math.pow(k,2)-4*h*
v;e=s=d;b<s&&(s=b);b>e&&(e=b);0<=v&&(C=(-k+Math.sqrt(v))/(2*h),0<C&&1>C&&(C=J(d,f,c,b,C),C<s&&(s=C),C>e&&(e=C)),h=(-k-Math.sqrt(v))/(2*h),0<h&&1>h&&(C=J(d,f,c,b,h),C<s&&(s=C),C>e&&(e=C)));h=3*p-9*l+9*q-3*a;k=6*a-12*q+6*l;v=3*q-3*a;v=Math.pow(k,2)-4*h*v;f=d=a;p<d&&(d=p);p>f&&(f=p);0<=v&&(C=(-k+Math.sqrt(v))/(2*h),0<C&&1>C&&(c=J(a,q,l,p,C),c<d&&(d=c),c>f&&(f=c)),h=(-k-Math.sqrt(v))/(2*h),0<h&&1>h&&(c=J(a,q,l,p,h),c<d&&(d=c),c>f&&(f=c)));"undefined"!==typeof t.xMin?(t.xMin=Math.min(s,t.xMin),t.xMax=
Math.max(e,t.xMax),t.yMin=Math.min(d,t.yMin),t.yMax=Math.max(f,t.yMax)):(t.xMin=s,t.xMax=e,t.yMin=d,t.yMax=f)};q.combineTransformMatrix=function(d){var a=d.length-1,f;if(0>=a)return d[0];f=d[0];for(i=1;i<=a;i++)f[0]=f[0]*d[i][0]+f[1]*d[i][3],f[1]=f[0]*d[i][1]+f[1]*d[i][4],f[2]=f[0]*d[i][2]+f[1]*d[i][5]+1*f[2],f[3]=f[3]*d[i][0]+f[4]*d[i][3],f[4]=f[3]*d[i][1]+f[4]*d[i][4],f[5]=f[3]*d[i][2]+f[4]*d[i][5]+1*f[5];return f};q.angleBetweenVectors=function(d,a,f,q){var c=d*q<a*f?-1:1,l=d*f+a*q;d=Math.sqrt(Math.pow(d,
2)+Math.pow(a,2));f=Math.sqrt(Math.pow(f,2)+Math.pow(q,2));return c*Math.acos(l/(d*f))};q.toRGB=function(d){var a={r:0,g:0,b:0,status:0},f,q;f=function(c){for(q in c)c.hasOwnProperty(q)&&(0>c[q]||isNaN(c[q])?c[q]=0:255<c[q]&&(c[q]=255));return a={r:c[0],g:c[1],b:c[2],status:1}};d=d.trim();d.match(/^rgb\(|^rgba\(/i)?(d=/\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})/.exec(d),f([parseInt(d[1]),parseInt(d[2]),parseInt(d[3])])):d.match(/^#/)&&(d=/(\w{2})(\w{2})(\w{2})/.exec(d),f([parseInt(d[1],16),parseInt(d[2],
16),parseInt(d[3],16)]));return a};q.StrToDom=function(d){var a;f.DOMParser?(a=new DOMParser,a=a.parseFromString(d,"text/xml")):(a=new ActiveXObject("Microsoft.XMLDOM"),a.async=!1,a.loadXML(d));return a}})();
FusionCharts.register("module",["private","modules.renderer.js-renderer",function(){function f(a,b,c,d){var e=b.paper,f=b.layers,h=c?"y-axis":"x-axis",k=this.layerAboveDataset=f.layerAboveDataset,l=this.layerBelowDataset=f.layerBelowDataset,f=k.bands||(k.bands=[]),m=f.length,n=l.bands||(l.bands=[]),r=n.length,p=k.lines||(k.lines=[]),q=p.length,s=l.lines||(l.lines=[]),t=s.length,k=k.labels||(k.labels=[]),u=k.length,l=l.labels||(l.labels=[]),v=l.length;this.renderer=b;this.axisData=a||{};this.globalOptions=
b.options;this.isVertical=c;this.topBandGroup=this.topBandGroup||e.group(h+"-bands",this.layerAboveDataset);this.belowBandGroup=this.belowBandGroup||e.group(h+"-bands",this.layerBelowDataset);f.push(this.topBandGroup);m&&f[m].insertAfter(f[m-1]);n.push(this.belowBandGroup);r&&n[r].insertAfter(n[r-1]);this.topLineGroup=this.topLineGroup||e.group(h+"-lines",this.layerAboveDataset);this.belowLineGroup=this.belowLineGroup||e.group(h+"-lines",this.layerBelowDataset);this.topLabelGroup=this.topLabelGroup||
e.group(h+"-labels",this.layerAboveDataset);this.belowLabelGroup=this.belowLabelGroup||e.group(h+"-labels",this.layerBelowDataset);p.push(this.topLineGroup);q&&p[q].insertAfter(p[q-1]);s.push(this.belowLineGroup);t&&s[t].insertAfter(s[t-1]);k.push(this.topLabelGroup);u&&k[u].insertAfter(k[u-1]);l.push(this.belowLabelGroup);v&&l[v].insertAfter(l[v-1]);this.isReverse=d;this.configure()}function t(a,b,c,d){return Sa(b-c[1]-d.top,a-c[0]-d.left)}function C(a,b){var c=b?360:rb;a=(a||0)%c;return 0>a?c+a:
a}var q=this,d=q.window,a=q.hcLib,m=a.Raphael,F=a.chartAPI,c=/msie/i.test(d.navigator.userAgent)&&!d.opera,l=d.document,b=d.Image,p="VML"===m.type,H=a.BLANKSTRING,s=a.getPosition,e="rgba(192,192,192,"+(c?.002:1E-6)+")",c=a.TOUCH_THRESHOLD_PIXELS,h=a.CLICK_THRESHOLD_PIXELS,k=a.stubFN,v={pageX:0,pageY:0},K=parseFloat,J=parseInt,n=a.extend2,N=a.addEvent,B=a.getMouseCoordinate,U=a.removeEvent,r=a.pluck,ga=a.pluckNumber,X=a.toRaphaelColor,aa=a.graphics.convertColor,W=a.HUNDREDSTRING,ya=a.setImageDisplayMode,
va=a.FC_CONFIG_STRING,za=/\s\bx\b=['"][^'"]+?['"]/ig,ja=/\s\by\b=['"][^'"]+?['"]/ig,O=a.plotEventHandler,na=a.isArray,ma=a.JpegToPdf,M=d.SvgDeCanvo,T="createTouch"in l,u=T&&!(d.navigator.maxTouchPoints||d.navigator.msMaxTouchPoints),L=a.each=function(a,b,c,d){var e;c||(c=a);d||(d={});if(na(a))for(e=0;e<a.length;e+=1){if(!1===b.call(c,a[e],e,a,d))return e}else if(null!==a&&void 0!==a)for(e in a)if(!1===b.call(c,a[e],e,a,d))return e},da=a.createElement,sa=a.createContextMenu,ta=a.hasTouch,S=ta?c:h,
$=a.getSentenceCase,oa=a.getCrispValues,ia=a.getValidValue,Ea=a.getFirstValue,fa=a.regex.dropHash,La=a.HASHSTRING,Ba=function(a){return a!==Fa&&null!==a},ha=function(a,b){a[1]===a[4]&&(a[1]=a[4]=Ia(a[1])+b%2/2);a[2]===a[5]&&(a[2]=a[5]=Ia(a[2])+b%2/2);return a},Fa,fb=8===l.documentMode?"visible":"",Xa=d.Math,xa=Xa.sin,gb=Xa.cos,Sa=Xa.atan2,Ia=Xa.round,Ra=Xa.min,Da=Xa.max,pb=Xa.abs,Lb=Xa.ceil,Ub=Xa.floor,Mb=180/Xa.PI,vb=Xa.PI,Eb=vb/2,rb=2*vb,Ib=vb+Eb,tb=a.getFirstColor,eb=a.graphics.getLightColor,Tb=
a.POSITION_TOP,sb=a.POSITION_BOTTOM,Qb=a.POSITION_RIGHT,cb=a.POSITION_LEFT;m.ca.ishot=function(a){if(this.removed)return!1;var b=this.node;a=a||"";b.ishot=a;switch(this.type){case "group":for(b=this.bottom;b;)b.attr("ishot",a),b=b.next;break;case "text":if(m.svg)for(b=b.getElementsByTagName("tspan")[0];b;)b.ishot=a,b=b.nextSibling}return!1};m.addSymbol({printIcon:function(a,b,c){var d=.75*c,e=.5*c,f=.33*c,h=Ia(a-c)+.5,k=Ia(b-c)+.5,l=Ia(a+c)+.5;c=Ia(b+c)+.5;var m=Ia(a-d)+.5,n=Ia(b-d)+.5,d=Ia(a+d)+
.5,r=Ia(b+e)+.5,p=Ia(a+e)+.5,q=Ia(b+f)+.5;a=Ia(a-e)+.5;f=Ia(b+f+f)+.5;return["M",m,k,"L",d,k,d,n,m,n,"Z","M",h,n,"L",h,r,m,r,m,b,d,b,d,r,l,r,l,n,"Z","M",m,b,"L",m,c,d,c,d,b,"Z","M",p,q,"L",a,q,"M",p,f,"L",a,f]},exportIcon:function(a,b,c){var d=.66*c,e=.5*d,f=Ia(a-c)+.5,h=Ia(b-c)+.5,k=Ia(a+c)+.5;c=Ia(b+c)-.5;var l=Ia(a-e)+.5,m=b<c-3?c-3:Ia(b)+.5,e=Ia(a+e)-.5,n=Ia(a+d)-.5,d=Ia(a-d)+.5;return["M",f,m,"L",f,c,k,c,k,m,k,c,f,c,"Z","M",a,c-1,"L",d,b,l,b,l,h,e,h,e,b,n,b,"Z"]}});a.rendererRoot=F("renderer.root",
{standaloneInit:!1,isRenderer:!0,inited:!1,callbacks:[],init:function(a,b,c){var d=this,e=d.container=a&&a.containerElement||b.chart.renderTo,f=b.tooltip,h=d.layer,k,l;d.options=b;d.logic=a;d.definition=a.dataObj;d.smartLabel=a.smartLabel;d.numberFormatter=a.numberFormatter;d.fusionCharts=a.chartInstance;d.linkClickFN=a.linkClickFN;l=(k=b.chart)&&k.animation&&k.animation.duration;d.animationCompleteQueue=[];e.innerHTML=H;e=d.paper=d.fusionCharts.jsVars.paper=new m(e,e.offsetWidth||a.width,e.offsetHeight||
a.height);!1!==q.core.options._useSVGDescTag&&e._desc&&(k=a.friendlyName||"Vector image",d.definition&&d.definition.chart&&d.definition.chart.caption&&(k+=' with caption "'+d.definition.chart.caption+'"'),e._desc(k));d.chartWidth=e.width;d.chartHeight=e.height;d.elements||(d.elements={});h||(h=d.layers={},h.background=h.background||e.group("background"),h.dataset=h.dataset||e.group("dataset").insertAfter(h.background),h.tracker=h.tracker||e.group("hot").insertAfter(h.dataset));f&&!1!==f.enabled&&
(e.tooltip(f.style,f.shadow,f.constrain),h.tracker.trackTooltip(!0),h.dataset.trackTooltip(!0));d.disposeChartStyleSheet();d.setMargins();d.drawBackground();d.drawButtons();d.drawGraph();b.legend&&b.legend.enabled&&d.drawLegend();d.drawCaption();d.drawLogo();d.setChartEvents();d.drawLabels&&d.drawLabels();L(b.callbacks,function(a){a.apply(d,this)},[a]);L(d.callbacks,function(a){a.apply(d,this)},[a]);d.fusionCharts.annotations&&d.fusionCharts.annotations.draw(d);d.createChartStyleSheet();d.options.nativeMessage||
l||q.raiseEvent("internal.animationComplete",{},d.fusionCharts);d.hasRendered=!0;c&&c(d)},disposeChartStyleSheet:function(){this.paper.cssClear()},createChartStyleSheet:function(){this.paper.cssRender()},addCSSDefinition:function(a,b){var c=this.paper;b.color&&(b.fill=b.color);c.cssAddRule(a,b)},animationCompleteQueue:[],animationComplete:function(){var a,b,c,d;this.animatedElements=this.animatedElements?++this.animatedElements:1;if(this.animatedElements===this.animatingElementsCount){c=this.animationCompleteQueue;
a=0;for(b=c.length;a<b;a++)d=c[a],d.fn&&d.fn.call(d.scope);this.animationCompleteQueue=[];q.raiseEvent("internal.animationComplete",{},this.fusionCharts)}},getAnimationCompleteFn:function(){var a=this;a.animatingElementsCount=a.animatingElementsCount?++a.animatingElementsCount:1;return function(){a.animationComplete()}},reinit:function(a,b,c){this.hasRendered||this.init(b,c)},dispose:function(){var a=this.eventListeners,b=a&&a.length;this.disposing=!0;if(b)for(;b--;)a[b].unlisten();if(this.toolbar&&
this.toolbar.length){for(;this.toolbar.length;)a=this.toolbar.pop(),a.remove();this.toolbar.add=null}if(this.menus&&this.menus.length)for(;this.menus.length;)a=this.menus.pop(),a.destroy();this.paper&&(this.paper.clear(),this.paper.remove(),delete this.paper);this.exportIframe&&(this.exportIframe.parentNode.removeChild(this.exportIframe),delete this.exportIframe);delete this.disposing;this.container=null;this.disposed=!0},onContainerClick:function(b){var c=b.target||b.originalTarget||b.srcElement||
b.relatedTarget||b.fromElement,d=c&&c.parentElement,e=c&&c.nodeName.toLowerCase(),f=b.data,h=f.fusionCharts;b=a.getMouseCoordinate(f.container,b.originalEvent);h.ref&&(h=n({height:h.args.height,width:h.args.width,pixelHeight:h.ref.offsetHeight,pixelWidth:h.ref.offsetWidth,id:h.args.id,renderer:h.args.renderer,container:h.options.containerElement},b),q.raiseEvent("chartclick",h,f.logic.chartInstance),c&&c.ishot&&f||"tspan"===e&&d&&d.ishot&&f||f.options.chart.link&&f.linkClickFN.call(f,f))},onContainerMouseMove:function(b){var c=
b.data,d=c.fusionCharts;b=a.getMouseCoordinate(c.container,b.originalEvent);d.ref&&(d=n({height:d.args.height,width:d.args.width,pixelHeight:d.ref.offsetHeight,pixelWidth:d.ref.offsetWidth,id:d.args.id,renderer:d.args.renderer,container:d.options.containerElement},b),q.raiseEvent("chartMouseMove",d,c.logic.chartInstance))},onContainerRollOver:function(b){var c=b.data,d=c.fusionCharts;b=a.getMouseCoordinate(c.container,b.originalEvent);d.ref&&(d=n({height:d.args.height,width:d.args.width,pixelHeight:d.ref.offsetHeight,
pixelWidth:d.ref.offsetWidth,id:d.args.id,renderer:d.args.renderer,container:d.options.containerElement},b),q.raiseEvent("chartRollOver",d,c.logic.chartInstance))},onContainerRollOut:function(b){var c=b.chart,d=c.fusionCharts;b=a.getMouseCoordinate(c.container,b.event);d.ref&&(d=n({height:d.args.height,width:d.args.width,pixelHeight:d.ref.offsetHeight,pixelWidth:d.ref.offsetWidth,id:d.args.id,renderer:d.args.renderer,container:d.options.containerElement},b),q.raiseEvent("chartRollOut",d,c.logic.chartInstance))},
mouseStateIn:!1,winMouseHover:function(a){var b=a.originalEvent,b=b.target||b.originalTarget||b.srcElement||b.relatedTarget||b.fromElement,c=a.data,e=c.paper;a={chart:c,event:a.originalEvent};p?e.getById(b.parentNode.raphaelid)||(c.onContainerRollOut(a),c.mouseStateIn=!1,U(l,"mouseover",c.winMouseHover)):b.viewportElement||(c.mouseStateIn=!1,c.onContainerRollOut(a),U(d,"mouseover",c.winMouseHover))},chartHoverManager:function(){return function(a){var b=a.type,c=a.data,e=c.eventListeners||(c.eventListeners=
[]);"mouseover"!==b&&"touchstart"!==b||!1!==c.mouseStateIn||(c.mouseStateIn=!0,c.onContainerRollOver(a),e.push(N(p?l:d,"mouseover",c.winMouseHover,c)))}}(),setChartEvents:function(){var a=this.options,b=this.eventListeners||(this.eventListeners=[]),a=this.link=a.chart.link,c=this.container,d=ga(this.definition&&this.definition.chart.enablechartmousemoveevent,0);U(c,"click",this.onContainerClick);b.push(N(c,"click",this.onContainerClick,this));U(this.paper.canvas,"mouseover",this.chartHoverManager,
this);U(this.paper.canvas,"touchstart",this.chartHoverManager,this);U(this.paper.canvas,"mouseout",this.chartHoverManager,this);U(this.paper.canvas,"touchend",this.chartHoverManager,this);b.push(N(this.paper.canvas,"mouseover touchstart mouseout touchend",this.chartHoverManager,this));U(c,"mousemove",this.onContainerMouseMove,this);U(c,"touchmove",this.onContainerMouseMove,this);d&&b.push(N(c,"mousemove touchmove",this.onContainerMouseMove,this));this.paper.canvas.style.cursor=m.svg?a&&"pointer"||
"default":a&&"hand"||"default"},onOverlayMessageClick:function(){var a=this.elements;m.animation({opacity:0},1E3);a.messageText&&a.messageText.hide();a.messageVeil&&a.messageVeil.hide()},showMessage:function(a,b){var c=this.paper,d=this.options.chart,e=this.elements,f=e.messageText,h=e.messageVeil,k=c.width,l=c.height;h||(h=e.messageVeil=c.rect(0,0,k,l).attr({fill:"rgba(0,0,0,0.2)",stroke:"none"}));h.show().toFront().attr("cursor",b?"pointer":"default")[b?"click":"unclick"](this.onOverlayMessageClick,
this);f||(f=e.messageText=c.text(k/2,l/2,H).attr({fill:"rgba(255,255,255,1)","font-family":"Verdana,sans","font-size":10,"line-height":14,direction:d.textDirection,ishot:!0}));a=a||H;this.smartLabel.setStyle({"line-height":"14px","font-family":"Verdana,sans","font-size":"10px"});c=this.smartLabel.getSmartText(a,k-(d.spacingRight||0)-(d.spacingLeft||0),l-(d.spacingTop||0)-(d.spacingBotton||0));f.attr({text:c.text,ishot:!0,cursor:b?"pointer":"default"})[b?"click":"unclick"](this.onOverlayMessageClick,
this).show().toFront()},drawButtons:function(){var a=this,b=a.logic,c="zoomline"===b.rendererId,d=a.paper,e=a.elements,f=a.toolbar||(a.toolbar=[]),h=a.menus||(a.menus=[]),k=a.layers,l=a.options,m=l[va],b=m&&m.outCanvasStyle||b.outCanvasStyle||{},m=l.chart.toolbar||{},n=m.hDirection,r=c?1:m.vDirection,p=m.button||{},q=p.scale,s=p.width*p.scale,t=p.height*p.scale,u=n*(p.spacing*p.scale+s),v=p.radius,B=(l=l.exporting)&&l.buttons||{},C=B.exportButton&&!1!==B.exportButton.enabled,B=B.printButton&&!1!==
B.printButton.enabled,F,J=k.buttons||(k.buttons=d.group("buttons").trackTooltip(!0));f.y||(f.y=(c?0:m.y)+m.vMargin*r+Ra(0,t*r));f.x||(f.x=m.x+m.hMargin*n-Da(0,s*n));f.count=0;f.add=function(a,b,c){c="string"===typeof c?{tooltip:c}:c||{};var e=0===f.count?u-n*p.spacing*p.scale:u,e=c.x||(f.x+=e),h=c.tooltip||"";f.push(a=d.button(e,c.y||f.y,Fa,a,{width:s,height:t,r:v,id:f.count++,verticalPadding:p.symbolHPadding*q,horizontalPadding:p.symbolHPadding},J).attr({ishot:!0,fill:[p.fill,p.labelFill,p.symbolFill,
p.hoverFill],stroke:[p.stroke,p.symbolStroke],"stroke-width":[p.strokeWidth,p.symbolStrokeWidth]}).tooltip(h).buttonclick(b));return a};C&&(h.push(F=e.exportMenu=sa({chart:a,basicStyle:b,items:function(b){var c=[],d=function(b){return function(){a.logic.chartInstance.exportChart({exportFormat:b})}},e;for(e in b)c.push({text:b[e],onclick:d(e)});return c}(l.exportformats)})),e.exportButton=f.add("exportIcon",function(a,b){return function(){F.visible?F.hide():F.show({x:a,y:b+1})}}(f.x+s,f.y+t),{tooltip:"Export chart"}));
B&&(e.printButton=f.add("printIcon",function(){a.print()},{tooltip:"Print chart"}))},setMargins:function(){var a=this.paper,b=this.options.chart||{},c=Ia;this.canvasBorderWidth=b.plotBorderWidth||0;this.canvasTop=c(b.marginTop)||0;this.canvasLeft=c(b.marginLeft)||0;this.canvasWidth=c(a.width-(b.marginLeft||0)-(b.marginRight||0));this.canvasHeight=c(a.height-(b.marginTop||0)-(b.marginBottom||0));this.canvasRight=this.canvasLeft+this.canvasWidth;this.canvasBottom=this.canvasTop+this.canvasHeight},drawBackground:function(){var a=
this,c=a.paper,d=a.layers,e=a.elements,f=d.background,h=e.background,k=e.chartborder,l=a.options.chart||{},m=K(l.borderWidth)||0,n=.5*m,p=2*m,r=l.borderWidth||0,s=a.chartHeight,t=a.chartWidth,u=e.backgroundImage,v=l.bgSWF,B=l.bgSWFAlpha/100,C=l.bgImageDisplayMode,F=l.bgImageVAlign,J=l.bgImageHAlign,H=l.bgImageScale,L=r+","+r+","+(t-2*r)+","+(s-2*r),N,O,M,U,z,w,E;c.canvas.style.backgroundColor=l.containerBackgroundColor;!f&&(f=d.background=c.group("background"));d={x:m,y:m,width:c.width-p,height:c.height-
p,stroke:"none",fill:X(l.backgroundColor)};h?h.attr(d):h=e.background=c.rect(d,f);d={x:n,y:n,width:c.width-m,height:c.height-m,stroke:l.borderColor,"stroke-width":m,"stroke-dasharray":l.borderDashStyle,fill:"none",r:l.borderRadius||0};k?k.attr(d):k=e.chartborder=c.rect(d,f);v&&(N=new b,z=M=1,u=[],N.onload=function(){O=ya(C,F,J,H,r,t,s,N);O["clip-rect"]=L;if(O.tileInfo)for(M=O.tileInfo.xCount,z=w=O.tileInfo.yCount,E=O.y,delete O.tileInfo;M&&O.width&&O.height;)--w,U?(u[void 0]=U.clone().attr({x:O.x,
y:O.y}),f.appendChild(u[void 0])):u[void 0]=U=c.image(v,f).attr(O).css({opacity:B}),O.y+=O.height,0===w&&(w=z,--M,O.x+=O.width,O.y=E);else{if(a.disposed||c.disposed)return;u[0]=c.image(v,f);u[0].attr(O).css({opacity:B}).attr({visibility:fb,"clip-rect":L})}q.raiseEvent("BackgroundLoaded",{url:v,bgImageAlpha:100*B,bgImageDisplayMode:C,bgImageVAlign:F,bgImageHAlign:J,bgImageScale:H,imageWidth:N.width,imageHeight:N.height},a.logic.chartInstance)},N.onerror=function(b){q.raiseEvent("BackgroundLoadError",
{url:v,bgImageAlpha:100*B,error:b,bgImageDisplayMode:C,bgImageVAlign:F,bgImageHAlign:J,bgImageScale:H},a.logic.chartInstance)},N.src=v,e.backgroundImage=u)},drawGraph:function(){var a=this,b=a.paper,c=a.plots=a.elements.plots,d=a.logic,e=a.layers,f=a.options,h=a.elements,k=f.chart,f=a.datasets=f.series,l=Ea(k.rendererId,k.defaultSeriesType),m=e.background,p=e.dataset=e.dataset||b.group("dataset").insertAfter(m),q,s,m=function(a,b){return function(e){var f=c[a],h,k={hcJSON:{series:[]}},l=k.hcJSON.series[a]||
(k.hcJSON.series[a]={}),m=d.chartInstance.jsVars._reflowData;h=(e=Ea(e,!f.visible))?"visible":"hidden";L(f.graphics,function(a){!0!==a.data("alwaysInvisible")&&a.attr("visibility",h)});f.visible=e;b.visible=e;l.visible=e;n(m,k,!0)}},t=function(b){return function(d,e){a["legendClick"+l]&&a["legendClick"+l](c[b],d,e)||a.legendClick&&a.legendClick(c[b],d,e)}},u=function(b){return function(){return a.getEventArgs&&a.getEventArgs(c[b])}},v=function(b,d,e){return function(f,h){d.call(a,c[b],e,{numUpdate:f,
hasAxisChanged:h})}};e.tracker=e.tracker||b.group("hot").insertAfter(p);a.drawCanvas();a.drawAxes();c||(c=a.plots=a.plots||[],h.plots=c);e=0;for(h=f.length;e<h;e++)b=f[e]||{},p=b.updatePlot="updatePlot"+$(r(b.type,b.plotType,l)),p=a[p],q=b.drawPlot="drawPlot"+$(r(b.type,b.plotType,l)),q=a[q]||a.drawPlot,(s=c[e])||(c.push(s={index:e,items:[],data:b.data||[],name:b.name,userID:b.userID,setVisible:m(e,b),legendClick:t(e),getEventArgs:u(e),realtimeUpdate:v(e,p||q,b)}),b.plot=s,b.legendClick=s.legendClick,
b.getEventArgs=s.getEventArgs,b.setVisible=s.setVisible),e&&f[e-1]&&(b.previousData=f[e-1].data),q.call(a,s,b);k.hasScroll&&(a.drawScroller(),a.finalizeScrollPlots())},drawPlot:k,drawCanvas:k,drawAxes:k,drawScroller:function(){},drawLegend:function(){var a=this,b=a.options,c=a.paper,d=b.chart||{},e=b.legend,f=e.scroll,b={elements:{}},h=b.elements,k=a.layers.legend,l=h.box,p=h.caption,r=h.elementGroup,q="vertical"===e.layout,s=d.marginBottom,t=d.spacingBottom,u=d.spacingLeft,v=d.spacingRight,B=c.width,
C=c.height,F=a.canvasTop,J=e.width,K=e.height,N=e.borderRadius,L=e.backgroundColor,O=e.borderColor,M=e.borderWidth||0,X=.5*M,z=.5*M+2,w=ga(e.padding,4),E=.5*w,I,g,ka,P,U,W,S,aa;aa=f&&f.enabled;q?(q=B-v-J,s=F+.5*(C-s-F-K)+(e.y||0)):(q=u+.5*(B-u-v-J)+(e.x||0),s=C-t-K);t=m.crispBound(q,s,J,K,M);q=t.x;s=t.y;J=t.width;K=t.height;k||(k=a.layers.legend=c.group("legend").insertBefore(a.layers.tracker).translate(q,s).attr("class","fusioncharts-legend"));a.addCSSDefinition(".fusioncharts-legend .fusioncharts-caption",
n({"text-anchor":e.title.align},e.title.style));e.legendAllowDrag&&(a.addCSSDefinition(".fusioncharts-legend",{cursor:"move"}),g=q,ka=s,k.drag(function(a,b){P=W+a;U=S+b;P+J+z>B&&(P=B-J-z);U+K+z>C&&(U=C-K-z);P<z&&(P=z);U<z&&(U=z);k.translate(P-g,U-ka);g=P;ka=U},function(){W=g;S=ka}));N={x:0,y:0,width:J,height:K,r:N,stroke:O,"stroke-width":M,fill:L||"none",ishot:e.legendAllowDrag};l?l.attr(N):l=h.box=c.rect(N,k);l.shadow(e&&e.shadow);aa?(I=K-w,l=","+J+","+I,r=h.elementGroup=c.group("legenditems",k).attr({"clip-rect":"0,"+
E+l}),f=h.scroller||(h.scroller=c.scroller(J-10+E-M,X,10,K-M,!1,{scrollPosition:f.scrollPosition||0,scrollRatio:(I+w)/e.totalHeight,showButtons:!1,displayStyleFlat:f.flatScrollBars},k)),f.attr("fill",e.legendScrollBgColor).scroll(function(b){r.transform(["T",0,(I-e.totalHeight)*b]);n(a.fusionCharts.jsVars._reflowData,{hcJSON:{legend:{scroll:{position:b}}}},!0)})):r=h.elementGroup=k;if(e.title&&e.title.text!==H){switch(e.title.align){case "start":aa=w;break;case "end":aa=J-w-(aa?10:0);break;default:aa=
.5*J}N={"class":"fusioncharts-caption","text-anchor":e.title.align,text:e.title.text,title:e.title.originalText||"",x:aa,y:w,fill:e.title.style.color,"vertical-align":"top",direction:d.textDirection,"line-height":e.title.style.lineHeight};p?p.attr(N):p=h.caption=c.text(N,r).attr("class","fusioncharts-caption")}this["draw"+$(e.type||"point")+"LegendItem"](b)},drawPointLegendItem:function(a){var b=this,c=b.paper,d=b.options,f=d.series,h=d.chart,k=h.defaultSeriesType,d=d.legend,l=d.legendHeight,m=d.symbolPadding,
p=d.textPadding||2,s=ga(d.padding,4),h=h.textDirection,t=d.itemHoverStyle,u=d.itemHiddenStyle,v=d.itemStyle,C=v.color,u=u&&u.color||"#CCCCCC",F=t&&t.color||C,t=d.symbol3DLighting,J=d.symbolWidth,K=!1!==d.interactiveLegend,H=a.elements,N=H.elementGroup;a=a.item=[];var H=H.item=[],L=[],O={line:!0,spline:!0,scatter:!0,bubble:!0,dragnode:!0,zoomline:!0},M,U,Pa,S,z,w,E,I,g,ka,P,ib,cc,T,Kb,$,da,R,Na,ea,Oa,ra;cc=0;for(T=f.length;cc<T;cc+=1)if(M=f[cc],I=M.legendCosmetics||{},M&&!1!==M.showInLegend)if(g=M.type||
k,"point"===M.legendType)for(I=M.data||[],Pa=0,z=I.length;Pa<z;Pa+=1)M=I[Pa]||{},!1!==M.showInLegend&&(M._legendType=g,L.push(M));else switch(M._legendType=g,g){case "pie":case "pie3d":case "funnel":case "pyramid":L=M.data;break;default:L.push(M)}L.sort(function(a,b){return(a.legendIndex||0)-(b.legendIndex||0)||a.__i-b.__i});d.reversed&&L.reverse();f=d.initialItemX||0;k=d.initialItemY||0;z=function(a){var c=this.data("legendItem"),d=c.getEventArgs?c.getEventArgs():{},e;a=B(b.logic.chartInstance.ref,
a);d.chartX=a.chartX;d.chartY=a.chartY;d.pageX=a.pageX;d.pageY=a.pageY;d.preventDefaults=function(){e=!0};q.raiseEvent("LegendItemClicked",d,b.logic.chartInstance);K&&!e&&c.legendClick()};w=function(a){var c=this.data("legendItem"),d=c.getEventArgs?c.getEventArgs():{};a=B(b.logic.chartInstance.ref,a);var e=!1!==c.visible,c=c.plot.legend.elements.legendItemText;d.chartX=a.chartX;d.chartY=a.chartY;d.pageX=a.pageX;d.pageY=a.pageY;e&&c&&c.attr({fill:F});q.raiseEvent("LegendItemRollover",d,b.logic.chartInstance)};
E=function(a){var c=this.data("legendItem"),d=c.getEventArgs?c.getEventArgs():{};a=B(b.logic.chartInstance.ref,a);var e=!1!==c.visible,c=c.plot.legend.elements.legendItemText;d.chartX=a.chartX;d.chartY=a.chartY;d.pageX=a.pageX;d.pageY=a.pageY;e&&c&&c.attr({fill:C});q.raiseEvent("LegendItemRollout",d,b.logic.chartInstance)};b.addCSSDefinition(".fusioncharts-legend .fusioncharts-legenditem",d.itemStyle);cc=0;for(T=L.length;cc<T;cc+=1)!1!==L[cc].showInLegend&&(ra={elements:{},hiddenColor:u,itemTextColor:C,
hoverColor:F},a.push(ra),H.push(ra.elements),M=L[cc],I=M.legendCosmetics||{},ka=f+M._legendX+s,P=k+M._legendY-s,ib=M._legendH,U=M._legendType||g,Pa=!1!==M.visible,S=ra.itemLineColor=X(M.color||{}),M.plot.legend=ra,ra.elements.legendItemText=c.text({"class":"fusioncharts-legenditem",x:ka+l+p-2,y:P+(M._legendTestY||0),text:M.name,fill:Pa?C:u,"vertical-align":"top",direction:h,"text-anchor":"start",cursor:v.cursor||"pointer",ishot:K,"line-height":v.lineHeight,"font-size":v.fontSize},N).data("legendItem",
M),I.customLegendIcon?(M&&(R=M.marker)&&!1!==R.enabled?(Na=R.lineColor,Na=aa(r(I.borderColor,Na.FCcolor&&Na.FCcolor.color.split(",")[0]||Na,S),r(I.alpha,W)),ea=R.fillColor,ea=aa(r(I.bgColor,ea&&ea.FCcolor&&ea.FCcolor.color.split(",")[0],ea,S),r(I.bgAlpha,I.alpha,W))):(ea=r(I.bgColor,M.color&&M.color.FCcolor&&M.color.FCcolor.color||M.color),Na=eb(ea,60).replace(fa,La),Na=aa(r(I.borderColor,Na),r(I.alpha,W)),ea=aa(ea,r(I.bgAlpha,I.alpha,W))),ra.symbolColor=X(ea),ra.symbolStroke=X(Na),Kb=.5*J,S=ka+m+
Kb,U=P+(M._markerYGutter||0)+m+Kb,Oa&&(Kb*=.6),$=I.symbol.split("_"),da="spoke"===$[0]?1:0,U=$[1]?ra.elements.legendItemSymbol=c.polypath($[1],S,U,Kb,I.startAngle,da,N):ra.elements.legendItemSymbol=c.circle(S,U,Kb,N),U.data("legendItem",M).attr({cursor:v.cursor||"pointer",stroke:Pa?ra.symbolStroke:u,fill:Pa?ra.symbolColor:u,"stroke-width":ga(I.borderThickness,1),ishot:K})):O[U]?(U=P+(M._markerYGutter||0)+m+.5*J,M.lineWidth&&(Oa=ra.elements.legendItemLine=c.path({"stroke-width":M.lineWidth,stroke:Pa?
S:u,cursor:v.cursor||"pointer",ishot:K,path:["M",ka+m,U,"L",ka+m+J,U]},N).data("legendItem",M)),M&&(R=M.marker)&&!1!==R.enabled&&(ra.symbolStroke=X(r((Na=R.lineColor)&&(Na.FCcolor&&Na.FCcolor.color.split(",")[0]||Na),S)),t?R.fillColor&&R.fillColor.FCcolor?(I=n({},R.fillColor),I.FCcolor.alpha="100"):I=r(R.fillColor,S):I={FCcolor:{color:r((ea=R.fillColor)&&(ea.FCcolor&&ea.FCcolor.color.split(",")[0]||ea),S),angle:0,ratio:"0",alpha:"100"}},ra.symbolColor=X(I),Kb=.5*J,S=ka+m+Kb,U=P+(M._markerYGutter||
0)+m+Kb,Oa&&(Kb*=.6),$=R.symbol.split("_"),da="spoke"===$[0]?1:0,U=$[1]?ra.elements.legendItemSymbol=c.polypath($[1],S,U,Kb,R.startAngle,da,N):ra.elements.legendItemSymbol=c.circle(S,U,Kb,N),U.data("legendItem",M).attr({cursor:v.cursor||"pointer",stroke:Pa?ra.symbolStroke:u,fill:Pa?ra.symbolColor:u,"stroke-width":1,ishot:K}))):(I=b.getSymbolPath(ka+m,P+(M._markerYGutter||0)+m,J,J,U,M,!t),ra.symbolColor=X(I.color),ra.symbolStroke=X(I.strokeColor),U=ra.elements.legendItemSymbol=c.path({path:I.path,
"stroke-width":I.strokeWidth,stroke:Pa?ra.symbolStroke:u,fill:Pa?ra.symbolColor:u,cursor:v.cursor||"pointer",ishot:K},N).data("legendItem",M)),ra.elements.legendItemBackground=c.rect({x:ka,y:P,width:M._totalWidth,height:ib,r:0,fill:X(M.legendFillColor||e),"stroke-width":1,stroke:X(M.legendBorderColor||"none"),cursor:v.cursor||"pointer",ishot:K},N).click(z).mouseover(w).mouseout(E).data("legendItem",M));d.reversed&&L.reverse()},drawCaption:function(){var a=this.options.chart,b=this.options.title,c=
this.options.subtitle,d=this.paper,e=this.smartLabel,f=this.elements,h=this.layers,k=h.caption,l=f.caption,m=f.subcaption,n=b.text,p=c&&c.text,r=b.x,q;!n&&!p||k||(k=h.caption=d.group("caption"),h.tracker?k.insertBefore(h.tracker):k.insertAfter(h.dataset));n?(this.addCSSDefinition(".fusioncharts-caption",b.style),q={"class":"fusioncharts-caption",text:b.text,fill:b.style.color,x:r,y:b.y||a.spacingTop||0,"text-anchor":b.align||"middle","vertical-align":b.verticalAlign||"top",visibility:"visible",direction:a.textDirection,
title:b.originalText||""},l?l.attr(q):l=f.caption=d.text(q,k).attr("class","fusioncharts-caption"),l.css(b.style),e?(e.setStyle(b.style),q=e.getOriSize(b.text).height):q=10):l&&(l=f.caption=l.remove());p?(this.addCSSDefinition(".fusioncharts-subcaption",c.style),q={"class":"fusioncharts-subcaption",text:c.text,title:c.originalText||"",fill:c.style.color,x:r,y:n?l.attrs.y+q+2:b.y||a.spacingTop||0,"text-anchor":b.align||"middle","vertical-align":"top",direction:a.textDirection,visibility:"visible"},
m?m.attr(q):m=f.subcaption=d.text(q,k).attr("class","fusioncharts-subcaption"),m.css(c.style)):m&&(f.subcaption=m.remove());n||p||!k||(h.caption=k.remove())},drawLogo:function(){var a=this,c=a.paper,e=a.elements,f=a.options,h=f.credits,k=f.chart||{},l=k.borderWidth||0,m=a.chartHeight,n=a.chartWidth,r=e.logoImage,s=k.logoURL,t=k.logoAlpha/100,u=k.logoPosition,v=k.logoLink,C=k.logoScale,F=k.logoLeftMargin,J=k.logoTopMargin,f={tr:{vAlign:Tb,hAlign:Qb},bl:{vAlign:sb,hAlign:cb},br:{vAlign:sb,hAlign:Qb},
cc:{vAlign:"middle",hAlign:"middle"}},K,H,N;a.logic&&h.enabled&&c.text().attr({text:h.text,x:6,y:m-4,"vertical-align":sb,direction:k.textDirection,"text-anchor":"start",fill:"rgba(0,0,0,0.5)",title:h.title||""}).css({fontSize:9,fontFamily:"Verdana,sans",cursor:"pointer",_cursor:"hand"}).click(function(){try{d.open(h.href)}catch(a){(d.top||d).location.href=h.href}});s&&(K=new b,(N=f[u])||(N={vAlign:Tb,hAlign:cb}),K.onload=function(){a.disposed||c.disposed||(H=ya("none",N.vAlign,N.hAlign,C,l,n,m,K),
p&&(H.w=H.width||0,H.h=H.height||0),H.src=s,r=a.paper.image(H).translate(F,J).css("opacity",t),v&&r.css({cursor:"pointer",_cursor:"hand"}),r.mouseover(function(b){b=B(a.logic.chartInstance.ref,b);q.raiseEvent("LogoRollover",{logoURL:s,logoAlpha:100*t,logoPosition:u||"tl",logoScale:C,logoLink:v,chartX:b.chartX,chartY:b.chartY,pageX:b.pageX,pageY:b.pageY},a.logic.chartInstance)}),r.mouseout(function(b){b=B(a.logic.chartInstance.ref,b);q.raiseEvent("LogoRollout",{logoURL:s,logoAlpha:100*t,logoPosition:u||
"tl",logoScale:C,logoLink:v,chartX:b.chartX,chartY:b.chartY,pageX:b.pageX,pageY:b.pageY},a.logic.chartInstance)}),r.click(function(b){b=B(a.logic.chartInstance.ref,b);q.raiseEvent("LogoClick",{logoURL:s,logoAlpha:100*t,logoPosition:u||"tl",logoScale:C,logoLink:v,chartX:b.chartX,chartY:b.chartY,pageX:b.pageX,pageY:b.pageY},a.logic.chartInstance,void 0,function(){v&&k.events.click.call({link:v})})}),q.raiseEvent("LogoLoaded",{logoURL:s,logoAlpha:100*t,logoPosition:u||"tl",logoScale:C,logoLink:v},a.logic.chartInstance))},
K.onerror=function(b){q.raiseEvent("LogoLoadError",{logoURL:s,logoAlpha:100*t,logoPosition:u||"tl",logoScale:C,logoLink:v,error:b},a.logic.chartInstance)},K.src=s,e.logoImage=r)},getEventArgs:function(a){a=a||{};return{datasetName:a.name,datasetIndex:a.index,id:a.userID,visible:a.visible}},legendClick:function(a,b){var c=a.legend,d=c&&c.elements,e=d&&d.legendItemText,f=d&&d.legendItemSymbol,d=d&&d.legendItemLine,h=c&&c.hiddenColor,k=c&&c.itemLineColor,l=c&&c.itemTextColor,m=c&&c.symbolColor,n=c&&
c.symbolStroke,c=r(b,!a.visible);a.setVisible(b);c?(f&&f.attr({fill:m||k,stroke:n}),e&&e.attr({fill:l}),d&&d.attr({stroke:k})):(f&&f.attr({fill:h,stroke:h}),e&&e.attr({fill:h}),d&&d.attr({stroke:h}));if((e=this.datasets&&this.datasets[a.index]&&this.datasets[a.index].relatedSeries)&&e instanceof Array&&0<e.length)for(f=e.length;f--;)d=parseFloat(e[f]),d=this.plots[d],d.legendClick.call(d,c,!1)},exportChart:function(c){var e=this,f=e.fusionCharts,h=e.options;c="object"===typeof c&&function(a){var b=
{},c;for(c in a)b[c.toLowerCase()]=a[c];return b}(c)||{};var k=n(n({},h.exporting),c),m=(k.exportformat||"png").toLowerCase(),p=k.exporthandler,r=(k.exportaction||H).toLowerCase(),s=k.exporttargetwindow||H,t=k.exportfilename,u=k.exportparameters,v=k.exportcallback,B=k.exportwithimages,C=k.exportatclientside;if(!h.exporting||!h.exporting.enabled||!p)return!1;q.raiseEvent("beforeExport",k,f,void 0,function(){function c(){var b;if("download"===r){/webkit/ig.test(d.navigator.userAgent)&&"_self"===s&&
(s=g=z+"export_iframe",e.exportIframe||(e.exportIframe=ka=da("IFRAME",{name:g,width:"1px",height:"1px"},l.body),ka.style.cssText="position:absolute;left:-10px;top:-10px;"));P=da("form",{method:"POST",action:p,target:s,style:"display:none;"},l.body);for(b in I)da("input",{type:"hidden",name:b,value:I[b]},P);P.submit();l.body.removeChild(P);P=void 0;return!0}X=new q.ajax(function(b){var c={};b.replace(RegExp("([^?=&]+)(=([^&]*))?","g"),function(a,b,d,e){c[b]=e});v&&d[v]&&"function"===typeof d[v]&&d[v].call(d,
c);a.raiseEvent("exported",c,f)},function(b){b={statusCode:0,statusMessage:"failure",error:b,DOMId:z,width:w.width,height:w.height};v&&d[v]&&"function"===typeof d[v]&&d[v].call(d,b);a.raiseEvent("exported",b,f,[b])});for(b in I)I.hasOwnProperty(b)&&(I[b]=encodeURIComponent(I[b]));X.post(p,I)}function h(){-1!==S.indexOf("<image ")?ga?(T=(aa=S.match(/<image [^\>]*\>/gi))&&aa.length,ea=function(a){a=a&&a.split("/");a=a[a.length-1].split(".");return{name:a[0],type:a[1]||"png"}},$=function(a,c,d,e,g){var f=
new b;f.onload=function(){var b="image/"+d,h=l.createElement("canvas"),k=h.getContext("2d"),m="";h.width=f.width;h.height=f.height;k.drawImage(f,0,0);m=h.toDataURL(b);ha[a]=m;fa(m,c,d,e,g)};f.onerror=function(){ra()};f.src=a},fa=function(a,b,c,d,e){Na["image_"+R]={name:b,type:c,encodedData:a,width:d,height:e};ra()},ra=function(){var a={},b,d,e,g,f,h=!1;R<T?(b=aa[R].replace(/\"/g,""),b.split(" ").forEach(function(b){b=b.split("=");a[b[0]]=b[1]}),a["xlink:href"]&&(b=(d=ea(a["xlink:href"]))&&d.name||
"temp_image_"+R,e=d&&d.type||"png",g=parseInt(a.width,10),f=parseInt(a.height,10),d=b+"."+e,ha[a["xlink:href"]]?h=!0:$(a["xlink:href"],b,e,g,f)),b='xlink:href="'+a["xlink:href"],S=S.replace(b,'xlink:href="temp/'+d),R+=1,h&&ra()):(I.encodedImgData=JSON.stringify(Na),I.stream=S,c())},ra()):c():c()}function A(){var a=t+"."+m;"svg"===m?K(function(b){F("url",b,a)}):J(m,V)}function n(){var a=d.navigator.userAgent,b;return-1!==(b=a.indexOf("Edge"))?{name:"Edge",version:a.substring(b+5,b+11)}:-1!==(b=a.indexOf("Chrome"))?
{name:"Chrome",version:a.substring(b+7,b+11)}:-1!==(b=a.indexOf("MSIE"))||-1!==(b=a.indexOf("rv"))&&-1!==a.indexOf("Trident")?{name:"ie",version:a.substring(b+5,b+9)}:-1!==(b=a.indexOf("Firefox"))?{name:"Firefox",version:a.substring(b+8,b+12)}:-1!==(b=a.indexOf("Safari"))?{name:"Safari",version:a.substring(b+7,b+11)}:{name:"default",version:"Not Known"}}function V(a,b){var c=t+"."+m,d;switch(a){case "pdf":d=new ma(w.height,w.width);d.addImage(b);d=d.getDataUrl();F("url",d,c);break;default:F("url",
b,c)}}function F(a,b,c){var e=n(),g;"Chrome"===e.name||"Firefox"===e.name?("blob"===a&&(b=d.URL.createObjectURL(b)),g=l.createElement("a"),g.download=c,g.href=b,l.body.appendChild(g),g.onclick=function(){g.parentNode.removeChild(g)},g.click()):"ie"!==e.name&&"Edge"!==e.name||!d.navigator.msSaveBlob||(a="url"===a?O(b):b,d.navigator.msSaveBlob(a,c))}function J(a,c){var d=n(),e;e=l.createElement("canvas");e.width=w.width;e.height=w.height;"ie"==d.name?(d=N(W),new M(d,e,function(){switch(a){case "png":c(a,
e.toDataURL("image/png"));break;case "jpeg":c(a,e.toDataURL("image/jpeg"));break;default:c(a,e.toDataURL("image/jpeg"))}})):"Chrome"!==d.name&&"Firefox"!==d.name&&"Edge"!==d.name||K(function(d){var e,g,f;e=l.createElement("canvas");g=e.getContext("2d");f=new b;f.src=d;f.onload=function(){e.width=f.width;e.height=f.height;g.drawImage(f,0,0);switch(a){case "png":c(a,e.toDataURL("image/png"));break;case "jpeg":c(a,e.toDataURL("image/jpeg"));break;default:c(a,e.toDataURL("image/jpeg"))}}})}function K(a){L(W,
function(b){a("data:image/svg+xml;base64,"+d.btoa(d.unescape(encodeURIComponent('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+b))))})}function N(a){return a.replace(/<image [^\>]*\>/gi,function(a){return a.match(/href="http:\/\/|href="https:\/\//)&&/(href="http:\/\/|href="https:\/\/)([^\/]*)/.exec(a)[2]&&d.location.hostname!==/(href="http:\/\/|href="https:\/\/)([^\/]*)/.exec(a)[2]?"":a})}function L(a,c){if(-1===
a.indexOf("<image "))c(a);else{var e=0,g,f=0,h;g=a.match(/<image [^\>]*\>/gi).length;a=a.replace(/NS\d+:/gi,"xlink:");a=a.replace(/<image [^\>]*\>/gi,function(k){if(k.match(/href="http:\/\/|href="https:\/\//)&&/(href="http:\/\/|href="https:\/\/)([^\/]*)/.exec(k)[2]&&d.location.hostname!==/(href="http:\/\/|href="https:\/\/)([^\/]*)/.exec(k)[2])return f++,e++,g===f&&c(a),"";k=k.replace(/(:href=")([^"]*)(")/gi,function(a,b,c,d){h=c;return b+"{{{"+e+"}}}"+d});var m=l.createElement("canvas"),A,n;A=m.getContext("2d");
n=new b;n.src=h;n.ind=e;n.onload=function(){m.width=this.width;m.height=this.height;A.drawImage(this,0,0);var d=m.toDataURL("image/png");(new b).src=d;a=a.replace(new RegExp("\\{\\{\\{"+n.ind+"\\}\\}\\}","g"),d);f++;g===f&&c(a)};e++;return k})}}function O(a){var b,c,e;b=0<=a.split(",")[0].indexOf("base64")?d.atob(a.split(",")[1]):d.unescape(a.split(",")[1]);a=a.split(",")[0].split(":")[1].split(";")[0];c=new Uint8Array(b.length);for(e=0;e<b.length;e++)c[e]=b.charCodeAt(e);return new d.Blob([c],{type:a})}
var U=e.layers.buttons,z=f.id,w=e.paper,E=q&&q.hcLib,I,g,ka,P,X,S,W,ga=E&&E.isCanvasElemSupported(),aa,T,R=0,Na={},ea,$,ra,fa,ha={};U&&U.attr("visibility","hidden");S=w.toSVG(B&&ga&&"svg"!==m);W=w.toSVG(B&&ga);U&&U.attr("visibility","visible");S=S.replace(/(\sd\s*=\s*["'])[M\s\d\.]*(["'])/ig,"$1M 0 0 L 0 0$2");S=S.replace(/NS\d+:/gi,"xlink:");W=W.replace(/(\sd\s*=\s*["'])[M\s\d\.]*(["'])/ig,"$1M 0 0 L 0 0$2");S=S.replace(/[\w\-]+\=\"undefined\"/ig,"");S=S.replace(/rgba\(([^\)]+)\)/ig,function(a,b){return"#"+
E.graphics.RGBtoHex(b.split(","))});S=S.replace(/(([\w]+\-)?opacity\s*=\s*)['"][\d\.]+e[\-\+][\d]+["']/ig,'$1"0.001"');S=S.replace(/(([\w]+\-)?opacity\s*:\s*)[\d\.]+e[\-\+][\d]+/ig,"$10.001");S=S.replace(/<text[^\>]+/ig,function(a){a=a.replace(/stroke\=[\"\']([a-z0-9\#]+)?[\"\']/ig,"");a=a.replace(/stroke\s*\:\s*([a-z0-9\#]+)?;?/ig,"");a=a.replace(/stroke-opacity\=[\"\']([a-z0-9\#]+)?[\"\']/ig,"");a=a.replace(/stroke-opacity\s*\:\s*([a-z0-9\#]+)?;?/ig,"");a=a.replace(/(<text[^\>]+fill\=)([\"\'][^\"\']+[\"\'])([^\>]+)/ig,
'$1$2 stroke=$2 stroke-width="0.2"$3');return a=a.replace(/(<text[^\>]+fill-opacity\=)([\"\'][^\"\']+[\"\'])([^\>]+)/ig,"$1$2 stroke-opacity=$2 $3")});S=S.replace(/<(\b[^<>s\s]+\b)[^\>]+?opacity\s*=\s*['"][^1][^\>]+?(\/>|>[\s\r\n]*?<\/\1>)/ig,function(a,b){var c=za.exec(a)||H,d=ja.exec(a)||H;return a+"<"+b+c+d+' opacity="1" stroke-opacity="1" fill="#cccccc" stroke-width="0" r="0" height="0.5" width="0.5" d="M 0 0 L 1 1" />'});I={charttype:f.chartType(),stream:S,stream_type:"svg",meta_bgColor:k.bgcolor||
"",meta_bgAlpha:k.bgalpha||"1",meta_DOMId:f.id,meta_width:w.width,meta_height:w.height,parameters:["exportfilename="+t,"exportformat="+m,"exportaction="+r,"exportparameters="+u].join("|")};C&&"download"===r?(U=n(),"undefined"===typeof d.btoa||"Chrome"!==U.name&&"Firefox"!==U.name&&"Edge"!==U.name&&"ie"!==U.name?(q.raiseWarning(this,"14038823867","run","Export Feature","Client side export requirement not fulfiled so exporting through server side"),h()):A()):h();q.raiseEvent("exportDataReady",I,f)},
function(){q.raiseEvent("exportCancelled",k,f)})},print:function(a){var b=this,c=n({},a);if(b.isPrinting)return!1;q.raiseEvent("BeforePrint",c,b.logic.chartInstance,void 0,function(){var a=b.container,e=b.elements,f=e.printButton,h=e.exportButton,k=[],m=a.parentNode,e=l.body||l.getElementsByTagName("body")[0],A=e.childNodes;b.isPrinting=!0;L(A,function(a,b){1==a.nodeType&&(k[b]=a.style.display,a.style.display="none")});!1!==c.hideButtons&&(f&&"hidden"!=f.attrs.visibility&&f.attr({visibility:"hidden"}),
h&&"hidden"!=h.attrs.visibility&&h.attr({visibility:"hidden"}));e.appendChild(a);d.print();setTimeout(function(){f&&f.attr({visibility:"visible"});h&&h.attr({visibility:"visible"});m.appendChild(a);L(A,function(a,b){1==a.nodeType&&(a.style.display=k[b])});b.isPrinting=!1;q.raiseEvent("PrintComplete",c,b.logic.chartInstance)},1E3)},function(){q.raiseEvent("PrintCancelled",c,b.logic.chartInstance)})},getSymbolPath:function(a,b,c,d,e,f,h){var k=["M"],l,m,n;l=(f.color&&tb("string"===typeof f.color?f.color:
f.color.FCcolor.color)||H).replace(fa,"");n=eb(l,60).replace(fa,La);h?l={FCcolor:{color:l,angle:0,ratio:"0",alpha:"100"}}:(h=eb(l,40),l={FCcolor:{color:l+","+l+","+h+","+l+","+l,ratio:"0,30,30,30,10",angle:0,alpha:"100,100,100,100,100"}});switch(e){case "column":case "dragcolumn":case "column3d":f=.25*c;e=.5*f;h=.7*d;m=.4*d;k=k.concat([a,b+d,"l",0,-h,f,0,0,h,"z","m",f+e,0,"l",0,-d,f,0,0,d,"z","m",f+e,0,"l",0,-m,f,0,0,m,"z"]);l.FCcolor.angle=270;break;case "bar":case "bar3d":f=.3*c;e=.6*c;h=d/4;m=
h/2;k=k.concat([a,b,"L",a+e,b,a+e,b+h,a,b+h,"Z","M",a,b+h+m,"L",a+c,b+h+m,a+c,b+h+m+h,a,b+2*h+m,"Z","M",a,b+2*(h+m),"L",a+f,b+2*(h+m),a+f,b+d,a,b+d,"Z"]);break;case "area":case "area3d":case "areaspline":case "dragarea":h=.6*d;m=.2*d;d*=.8;k=k.concat([a,b+d,"L",a,b+h,a+.3*c,b+m,a+.6*c,b+h,a+c,b+m,a+c,b+d,"Z"]);l.FCcolor.angle=270;break;case "pie":case "pie3d":f=.5*c;e=.9*f;c=a+f+1;d=b+f-1;a=a+f-1;b=b+f+1;k=k.concat(["M",c,d,"L",c,d-e+1,"A",e-1,e-1,0,0,1,c+e-1,d,"Z","M",a,b,"L",a,b-e,"A",e,e,0,1,0,
a+e,b,"Z"]);l.FCcolor.radialGradient="1";l.FCcolor.ratio="0,0,0,100,0";break;case "boxandwhisker2d":k=k.concat([a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]);l=f.color;n="#000000";break;default:k=k.concat([a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]),l.FCcolor.angle=270,l.FCcolor.ratio="0,70,30"}return{path:k,color:l,strokeWidth:.5,strokeColor:n}}});f.prototype={configure:function(){var a=this.axisData,b=this.renderer,c=this.isVertical,d=this.isReverse,e=b.options,f=e.chart,h=f.marginBottom,f=f.marginRight,k=b.canvasTop,
l=b.canvasLeft,m=this.min=a.min,m=this.span=(this.max=a.max)-m,l=this.startX=ga(a.startX,l),k=this.startY=ga(a.startY,k),n=this.endX=ga(a.endX,b.canvasRight),a=this.endY=ga(a.endY,b.canvasBottom),m=this.pixelRatio=c?(a-k)/m:(n-l)/m,p=this.relatedObj={};p.marginObj={top:k,right:f,bottom:h,left:l};p.canvasObj={x:l,y:k,w:n-l,h:a-k,toX:n,toY:a};this.startPixel=d?c?a:n:c?k:l;this.pixelValueRatio=d?-m:m;this.primaryOffset=this.secondaryOffset=0;this.cache={lowestVal:0,highestVal:0,indexArr:[],hashTable:{}};
this.elements=this.elements||{};this.belowBandGroup&&(b.elements.axes=b.elements.axes||{},b.elements.axes.belowBandGroup=this.belowBandGroup,e&&e.chart&&e.chart.hasScroll&&this.belowBandGroup.attr({"clip-rect":b.elements["clip-canvas"]}));this.poi={}},draw:function(){var a=this.axisData,b=a&&a.plotLines||[],c=a&&a.plotBands||[],d=a&&a.showLine,e=a&&a.tickLength,f=a&&a.tickWidth;a&&a.title&&this.drawAxisName();a&&a.labels&&(this.renderer.addCSSDefinition("."+a.labels.className+" .fusioncharts-label",
a.labels.style),this.belowLabelGroup&&this.belowLabelGroup.attr("class",a.labels.className),this.topLabelGroup&&this.topLabelGroup.attr("class",a.labels.className));b&&0<b.length&&this.drawPlotLine();c&&0<c.length&&this.drawPlotBands();isNaN(e)||0===e||isNaN(f)||0===f||this.drawTicks();d&&this.drawLine()},scroll:function(){},setOffset:function(a,b){var c=this.primaryOffset=a,d=this.secondaryOffset=b||this.secondaryOffset,e=this.isVertical,f,h,k,l=[this.topLabelGroup,this.belowLabelGroup,this.topLineGroup,
this.belowLineGroup,this.topBandGroup,this.belowBandGroup],m,n;m=0;for(n=l.length;m<n;m+=1)if(k=l[m])f=e?d:c,h=e?c:d,k.attr({transform:"t"+f+","+h});e||this.drawPlotLine&&this.drawPlotLine()},update:function(){},drawTicks:function(){var a=this.axisData,b=this.renderer.paper,c=this.min,d=this.max,e=this.isVertical,f=this.layerBelowDataset,f=this.tickGroup=this.tickGroup||b.group("axis-ticks",f),h=this.relatedObj.canvasObj,k=a.offset,l=a.opposite,m=a.showAxis,n=a.tickInterval,p=a.tickLength,r=a.tickWidth,
a=a.tickColor,q=c;if(e&&m)for(c=this.getAxisPosition(c),e=this.getAxisPosition(d),h=l?h.toX+k:h.x-k,b.path(["M",h,c,"L",h,e],f).attr({stroke:a,"stroke-width":r});Ub(q)<=d;)k=this.getAxisPosition(q),c=l?h+p:h-p,b.path(["M",h,k,"L",c,k],f).attr({stroke:a,"stroke-width":r}),q+=n},getAxisPosition:function(a,b){var c;b?c=(a-this.startPixel)/this.pixelValueRatio+this.min:(a=this.axisData.reversed?this.min+(this.max-a):a,c=this.startPixel+(a-this.min)*this.pixelValueRatio);return c},drawPlotLine:function(){var a=
this.renderer,b=a.paper,c=this.isVertical,d=+!c,f=this.lines=this.lines||[],h=this.labels=this.labels||[],k=this.relatedObj.canvasObj,l=this.globalOptions||{},m=this.elements||{},n=this.axisData.plotLines||[],p=this.primaryOffset,r=c?this.startY:this.startX,q=c?this.endY:this.endX,s=parseFloat(a.canvasBorderWidth)||0,t=Da(n.length,Da(f.length,h.length)),u=a.layers.datalabels,v=this.belowLineGroup,B=this.topLineGroup,C=this.belowLabelGroup,F=this.topLabelGroup,J=!1!==(a.tooltip||{}).enabled,K=function(b){return function(c){O.call(this,
a,c,b)}},N=l.chart.xDepth||0,l=l.chart.textDirection,L=[],M=0,U,z,w,E,I,g,ka,P,W,aa,T,$,fa,da,R,Na,ea,Oa,ra,ja,ma,va,Ja,Y,ia,na,sa,oa,bb,ta,Ia,xa,Ba,za,yb,Fa,Ra,Ea,mb,Sa,ya,La,qb;for(qb=0;qb<t;qb+=1){w=E=I=null;w=f[qb];E=h[qb];if(ka=n[qb])if(P=ka.width,W=ka.isVline,aa=ka.isTrend,T=ka.isGrid,$=ka.tooltext,fa=ka.value,da=ka.color,R=ka.dashStyle,Na=aa?ka.to:null,ea=ka._isStackSum,U=3<ka.zIndex?B:v,Oa=ka.label){ra=Oa.style;ja=Oa.text;ma=ra&&ra.color;va=Oa.offsetScaleIndex||0;Ja=Oa.offsetScale;if(Y=ra&&
ra.fontSize)ia=Y,-1!==ia.indexOf("px")&&(ia=ia.replace("px",""),ia=parseFloat(ia));z=ra&&ra.lineHeight;Y=ra?{fontFamily:ra.fontFamily,fontSize:ra.fontSize,lineHeight:ra.lineHeight,fontWeight:ra.fontWeight,fontStyle:ra.fontStyle}:null;z&&(na=z,-1!==na.indexOf("px")&&(na=na.replace("px",""),na=parseFloat(na)));sa=Oa.rotation;oa=Oa.x||0;bb=Oa.y||0;ta=Oa.align;Ia=Oa.verticalAlign;xa=Oa.textAlign;Ba=ga(parseInt(Oa.borderWidth,10),1);z=ea?u:3<=ka.zIndex?F:C;Oa.backgroundColor&&(Oa.labelBgClr=X({color:Oa.backgroundColor,
alpha:100*Oa.backgroundOpacity}));Oa.borderColor&&(Oa.labelBorderClr=X({color:Oa.borderColor,alpha:"100"}));za=ia?.2*ia:2;xa="left"===xa?"start":"right"===xa?"end":"middle"}g=ya="visible";La=0>ga(Ja,fa,0);c?(Fa=this.getAxisPosition(fa),Ea=aa?this.getAxisPosition(Na)||Fa:Fa,mb=Fa!==Ea?!0:!1,Sa=["M",k.x,Fa,"L",k.toX,Ea],W?a.logic.isBar&&(yb=a.yAxis[va],!ea&&!isNaN(Ja)&&0<=Ja&&1>=Ja&&(Ja=yb.min+(yb.max-yb.min)*Ja),Ra=yb.getAxisPosition(ga(Ja,fa))+oa+za*(La?-1:1)):Ra=Oa?yb=this.axisData.isOpposite||"right"===
ta?k.toX+oa:k.x+oa:yb=this.axisData.isOpposite?k.toX:k.x):(yb=this.getAxisPosition(fa)||0,Ra=aa?this.getAxisPosition(Na)||yb:yb,!aa&&!W&&0<N&&!a.logic.isBar&&(yb+=N,Ra+=N,q+=N),mb=yb!==Ra?!0:!1,Sa=["M"+yb,k.y,"L",Ra,k.toY],ya=yb+p<r||yb+p>q?"hidden":ya,W?(yb=a.yAxis[va],!ea&&!isNaN(Ja)&&0<=Ja&&1>=Ja&&(Ja=yb.min+(yb.max-yb.min)*(1-Ja)),Fa=yb.getAxisPosition(ga(Ja,fa))+bb,Fa-=(s+parseFloat(Ba))*(bb&&(0<bb?-1:1))):this.axisData.opposite||"top"===Ia&&!T?(Fa=k.y+bb,Ea="bottom"):Fa=k.toY+bb,Ea=Fa);g=c?
g:Ra+p<r||Ra+p>q?"hidden":g;if(ka&&"visible"===ya&&.1<P)mb={path:ha(Sa,P),stroke:da,"stroke-width":P,"shape-rendering":!mb&&1<=P?"crisp":void 0,"stroke-dasharray":R?R:void 0,visibility:ya},w?w.attr(mb):(w=f[qb]=b.path(mb,U).css(ka.style),m.lines=m.lines||[],m.lines[qb]=w),J&&$&&P<S&&ya&&(I=b.path({stroke:e,"stroke-width":S,ishot:!0,path:Sa,fill:e},a.layers.tracker)),I=I||w,J&&$&&I.tooltip($);else if(w||E)w&&w.remove(),w=null,f&&(f[qb]=null),m&&m.lines&&(m.lines[qb]=null);Oa&&ka&&!ka.stepped&&"visible"===
g&&Oa.text!=H&&" "!=Oa.text?(Fa=aa?"left"===ta?Fa:Ea:Ea,I=Ra-+!W*d*N+d*(oa||0),ea?(Ea=c||sa?"middle":"bottom",Fa+=c?0:ia*(La?-.4:.4),sa&&(Fa+=La?4:-2,xa=La?"end":"start")):d&&this.axisData.opposite?(Ea=sb,xa=sa?"start":"middle"):Ea=Ia,/\n|<br\s*?\/?>/ig.test(ja)&&T&&(sa?(Ea="middle",I-=d*(oa||0)):(Ea=d&&this.axisData.opposite&&!sa?"middle":Tb,Fa-=na)),mb={"class":"fusioncharts-label",text:ja,fill:Y?ma||da:null,ishot:!0,title:Oa&&(Oa.originalText||H),cursor:Oa.link?"pointer":H,x:I,y:Fa,"text-anchor":xa,
"vertical-align":Ea,direction:l,transform:" ","text-bound":[ra.backgroundColor||Oa.labelBgClr,ra.borderColor||Oa.labelBorderClr,ra.borderThickness||Ba,ra.borderPadding||za,ra.borderRadius,ra.borderDash],visibility:g,"line-height":ra.lineHeight},E?E.attr(mb):(E=h[qb]=b.text(mb,z).attr("class","fusioncharts-label"),w&&(w.label=E),m.labels=m.labels||[],m.labels[qb]=E,ka.isDataLabel&&E.click(K("dataLabelClick")).hover(K("dataLabelRollOver"),K("dataLabelRollOut"))),Y&&E.css(Y),ka.isDataLabel&&(g={text:ja,
index:M,link:Oa.link},M+=1,E.data("eventArgs",g)),sa&&E.attr("transform",["r",sa,I,Fa]),ea&&E&&L.push(E)):E&&(E.isRotationSet=!1,E.remove(),h&&(h[qb]=null),m&&m.labels&&(m.labels[qb]=null));!w&&!E||ka&&null===ka.value||(ka&&ka.isMinLabel?this.poi.min={label:E,index:qb,line:w}:ka&&ka.isMaxLabel?this.poi.max={label:E,index:qb,line:w}:ka&&ka.isZeroPlane&&(this.poi.zero={label:E,index:qb,line:w}));w=E=null}ga(a.options.plotOptions.series.animation.duration,0)},drawPlotBands:function(){var a=this.renderer,
b=a.paper,c=this.isVertical,d=this.axisData.plotBands||[],e=this.bands=this.bands||[],f=this.bandLabels=this.bandLabels||[],h=this.relatedObj.canvasObj,k=this.primaryOffset,l=c?this.startY:this.startX,m=c?this.endY:this.endX,n=a.options.chart.hasScroll,p=this.belowBandGroup,r=this.topBandGroup,q=this.belowLabelGroup,s=this.topLabelGroup,t=this.elements||{},u=a.options.chart.textDirection,a=!1!==(a.tooltip||{}).enabled,v,B,C,F,J,K,H,N,L,z,w,E,I,g,M,P,O,U,S,W,aa,T,R,$,ea,fa,ra,da,ja,ma,Ja,Y=Da(d.length,
e.length);for(Ja=0;Ja<Y;Ja+=1){ma="visible";da=e[Ja];ja=f[Ja];if(v=d[Ja])if(B=v.tooltext,C=v.to,F=v.from,J=v.value,K=v.width,H=v.color,fa=3<v.zIndex?r:p,N=v.label){if(L=N.style)(I=L.fontSize)&&-1!==I.indexOf("px")&&(I=I.replace("px",""),parseFloat(I)),(I=L.lineHeight)&&-1!==I.indexOf("px")&&(I=I.replace("px",""),parseFloat(I)),I=L.color;U=(z=N.borderWidth)?-1!==z.indexOf("px")?z.replace("px",""):1:1;z=N.align;w=N.x;E=N.y;P=N.text;O=N.originalText;g=N.backgroundColor;M=N.backgroundOpacity;g&&(N.labelBgClr=
X({color:g,alpha:100*M}));if(g=N.borderColor)N.labelBorderClr=X({color:g,alpha:"100"});g=N.textAlign;g="left"===g?"start":"right"===g?"end":"middle";M=N.verticalAlign;ra=3<v.zIndex?s:q}S=this.getAxisPosition(ga(C,J));W=this.getAxisPosition(ga(F,J));aa=c?h.x:W;T=c?S:h.y;R=c?h.w:(this.axisData.reversed?W-S:S-W)||K||1;W=c?W-S||1:h.h;S=aa+R;R=pb(R);0>W&&(W=pb(W),T-=W);c||(ma=n?"hidden":aa+k>m||S+k<l?"hidden":ma);N&&($=c?"right"===z?h.toX+w:h.x+w:aa+R/2,ea=c?T+W/2:h.toY+E);if(!da&&v&&"visible"===ma)v=
{x:aa,y:T,width:R,height:W,fill:X(H),"stroke-width":0},da?da.attr(v):(da=e[Ja]=b.rect(v,fa),t.bands=t.bands||[],t.bands[Ja]=da),a&&B&&da.tooltip(B);else if(da&&(!v||"hidden"===ma)){t.bandLabels&&(f[Ja]=t.bandLabels[Ja]=null);da.label&&da.label.remove();e[Ja]=t.bands[Ja]=null;da.remove();continue}da&&N&&N.text&&(v={"class":"fusioncharts-label",text:P,title:O||"",fill:I,"text-bound":[L.backgroundColor||N.labelBgClr,L.borderColor||N.labelBorderClr,L.borderThickness||U,L.borderPadding||2,L.borderRadius,
L.borderDash],x:$,y:ea,"text-anchor":g,direction:u,"vertical-align":M,"line-height":L.lineHeight},ja?ja.attr(v):(ja=f[Ja]=da.label=b.text(v,ra).attr("class","fusioncharts-label"),L&&ja.css(L),t.bandLabels=t.bandLabels||[],t.bandLabels[Ja]=ja))}},drawAxisName:function(){var a=this.axisData,b=a.title||{},c=b&&b.style,d=b&&b.className,e=b.align,f=b.centerYAxisName||!1,h=this.renderer.paper,k=this.isVertical,l=this.relatedObj.canvasObj,m=ga(a.offset,0)+ga(b.margin,0),n=b.text||"",p=this.name||void 0,
a=a.opposite,r=this.layerBelowDataset,r=r.nameGroup=r.nameGroup||h.group("axis-name",r),q=ga(b.rotation,a?90:270),s=k?a?l.toX+m:l.x-m:(l.x+l.toX)/2,t={fontFamily:c.fontFamily,fontSize:c.fontSize,lineHeight:c.lineHeight,fontWeight:c.fontWeight,fontStyle:c.fontStyle},v,f=k?"low"===e?l.toY:f?(l.y+l.toY)/2:this.renderer.chartHeight/2:l.toY+m;n?(!isNaN(q)&&q&&k&&(v=c.fontSize,v=-1!=v.indexOf("px")?v.replace("px",""):v,a?(s+=parseFloat(v),v=270===q?"bottom":"top"):(s-=parseFloat(v),v=270===q?"top":"bottom")),
this.renderer.addCSSDefinition("."+d,t),d={"class":d,x:0,y:0,text:n,fill:c.color,direction:this.renderer.options.chart.textDirection,"text-anchor":"low"===e?90==q?"end":"start":"middle","vertical-align":k?q?v:"middle":a?sb:"top",transform:k?"t"+s+","+f+"r"+q:"t"+s+","+f,"font-size":c.fontSize},b.originalText&&(d.title=b.originalText),p?p.attr(d):p=this.name=h.text(d,r),setTimeout(function(){p.attr({"line-height":c.lineHeight,"text-bound":[c.backgroundColor,c.borderColor,c.borderThickness,c.borderPadding,
c.borderRadius,c.borderDash]})},0)):p&&p.remove();this.elements.name=p},drawLine:function(){var a=this.axisData,b=this.renderer.paper,c=this.min,d=this.max,e=this.isVertical,f=a.opposite,h=this.layerBelowDataset,h=this.lineGroup=this.lineGroup||b.group("axis-lines",h),k=a.lineColor,l=a.lineThickness,m=a.lineEndExtension||0,n=a.lineStartExtension||0,a=this.relatedObj.canvasObj;e?(c=this.getAxisPosition(c)-n,m=this.getAxisPosition(d)+m,d=e=f?a.toX+l/2:a.x-l/2):(d=a.x-n,e=a.toX+m,c=m=f?a.y-l/2:a.toY+
l/2);b=b.path({path:["M",d,c,"L",e,m],stroke:k,"stroke-width":l},h);this.elements.axisLine=b},realtimeUpdateX:function(a){if(0<a){for(var b=this.axisData.plotBands,c=this.min+a,d,e=b.length;e--;)(d=b[e])&&!d.isNumVDIV&&(d.value<c||d.from<c||d.to<c?b.splice(e,1):(void 0!==d.value&&(d.value-=a),void 0!==d.from&&(d.from-=a),void 0!==d.to&&(d.to-=a)));this.drawPlotLine();this.drawPlotBands()}},realtimeUpdateY:function(a,b){var c=this.axisData,d=this.min=c.min=a,c=this.span=(this.max=c.max=b)-d,c=this.pixelRatio=
this.isVertical?this.relatedObj.canvasObj.h/c:this.relatedObj.canvasObj.w/c;this.pixelValueRatio=this.isReverse?-c:c;this.drawPlotLine();this.drawPlotBands()}};f.prototype.constructor=f;F("renderer.cartesian",{drawCanvas:function(){var a=this.options,b=a.chart||{},c=b.plotBackgroundColor,d=this.paper,e=this.elements,f=e.canvas,h=e.canvas3DBase,k=e.canvas3dbaseline,h=e.canvasBorder,l=e.canvasBg,n=this.canvasTop,r=this.canvasLeft,q=this.canvasWidth,s=this.canvasHeight,t=ga(b.plotBorderRadius,0),l=b.plotBorderWidth,
v=.5*l,u=b.plotBorderColor,B=b.isBar,C=b.is3D,F=b.use3DLighting,J=b.showCanvasBg,K=b.canvasBgDepth,H=b.showCanvasBase,N=b.canvasBaseColor3D,L=b.canvasBaseDepth,M=b.plotShadow,O=p&&0===l&&M&&M.enabled,z=b.xDepth||0,a=b.yDepth||(a[va]&&a[va].isScroll?n:0),b=this.layers,w=b.background,E=b.dataset;b.tracker=b.tracker||d.group("hot").insertAfter(E);b.datalabels=b.datalabels||d.group("datalabels").insertAfter(E);b=b.canvas=b.canvas||d.group("canvas").insertAfter(w);h||(e.canvasBorder=d.rect({x:r-v,y:n-
v,width:q+l,height:s+l,r:t,"stroke-width":l,stroke:u,"stroke-linejoin":2<l?"round":"miter"},b).shadow(M));e["clip-canvas"]=[Da(0,r-z),Da(0,n-a),Da(1,q+2*z),Da(1,s+a)];e["clip-canvas-init"]=[Da(0,r-z),Da(0,n-a),1,Da(1,s+2*a)];C&&(J&&(l=B?e.canvasBg=d.path(["M",r,",",n,"L",r+1.2*K,",",n-K,",",r+q-K,",",n-K,",",r+q,",",n,"Z"],b):e.canvasBg=d.path(["M",r+q,",",n,"L",r+q+K,",",n+1.2*K,",",r+q+K,",",n+s-K,",",r+q,",",n+s,"Z"],b),l.attr({"stroke-width":0,stroke:"none",fill:X(c)})),H&&(h=B?e.canvas3DBase=
d.cubepath(r-z-L-1,n+a+1,L,s,z+1,a+1,b):e.canvas3DBase=d.cubepath(r-z-1,n+s+a+1,q,L,z+1,a+1,b),h.attr({stroke:"none","stroke-width":0,fill:[N.replace(fa,La),!F]}),k||(k=e.canvas3dbaseline=d.path(void 0,b)),k.attr({path:B?["M",r,n,"V",s+n]:["M",r,n+s,"H",q+r],stroke:m.tintshade(N.replace(fa,La),.05).rgba})));!f&&c&&(e.canvas=d.rect({x:r,y:n,width:q,height:s,r:t,"stroke-width":0,stroke:"none",fill:X(c)},b).shadow(O))},drawAxes:function(){var a=this.logic,b=this.options,c=this.paper,d=this.layers,e=
d.dataset,h=d.layerBelowDataset=d.layerBelowDataset||c.group("axisbottom").trackTooltip(!0),k=d.layerAboveDataset=d.layerAboveDataset||c.group("axistop").trackTooltip(!0),c=this.xAxis=[],d=this.yAxis=[];h.insertBefore(e);k.insertAfter(e);if(b.xAxis&&b.xAxis.length)for(e=0,h=b.xAxis.length;e<h;e+=1)c[e]=this.xAxis[e]=new f(b.xAxis[e],this,a.isBar);else c[0]=this.xAxis[0]=new f(b.xAxis,this,a.isBar);if(b.yAxis)for(e=0,h=b.yAxis.length;e<h;e+=1)d[e]=this.yAxis[e]=new f(b.yAxis[e],this,!a.isBar,!a.isBar);
e=0;for(h=d.length;e<h;e+=1)d[e].axisData&&(d[e].axisData.title&&(d[e].axisData.title.className="fusioncharts-yaxis-"+e+"-title"),d[e].axisData.labels&&(d[e].axisData.labels.className="fusioncharts-yaxis-"+e+"-gridlabels")),d[e].draw();e=0;for(h=c.length;e<h;e+=1)c[e].axisData&&(c[e].axisData.title&&(c[e].axisData.title.className="fusioncharts-xaxis-"+e+"-title"),c[e].axisData.labels&&(c[e].axisData.labels.className="fusioncharts-xaxis-"+e+"-gridlabels")),c[e].draw()},drawScroller:function(){var a=
this,b=a.options,c=a.paper,d=a.layers,e=a.xAxis["0"]||{},f=e.axisData||{},h=f.scroll||{},k=a.canvasTop,l=a.canvasLeft,r=a.canvasWidth,p=a.canvasHeight,s=a.canvasBorderWidth,t=s||(f.showLine?f.lineThickness:0),v=s||f.lineStartExtension,f=s||f.lineEndExtension,s=b.chart.useRoundEdges,u,B,C,F,J,K,H,N,L,M,O,U,z,w,E,I=d.dataset,g=d.datalabels,S=d.tracker;F=d.layerAboveDataset;var P,X;h.enabled&&(P=d.scroll=d.scroll||c.group("scroll").insertAfter(F),F=h.scrollRatio,b=ga(b[va].xAxisScrollPos,h.startPercent),
J=h.viewPortMax,K=h.viewPortMin,B=h.vxLength,H=Lb(B),N=h.showButtons,L=h.height,M=h.padding,O=h.color,U=h.flatScrollBars,B=h.windowedCanvasWidth=e.getAxisPosition(B),u=h.fullCanvasWidth=e.getAxisPosition(J-K)-B,C=Ia(b*u),z=a.fusionCharts.jsVars._reflowData,w={hcJSON:{_FCconf:{xAxisScrollPos:0}}},E=w.hcJSON._FCconf,d.scroller=c.scroller(l-v,k+p+t+M-!!t,r+v+f,L,!0,{showButtons:N,displayStyleFlat:U,scrollRatio:F,scrollPosition:b},P).data("fullCanvasWidth",u).data("windowedCanvasWidth",B).attr({"scroll-display-style":U,
fill:O,r:s&&2||0}).scroll(function(b){var c;C=-Ia(b*u);I&&I.transform(["T",C,0]);g&&g.transform(["T",C,0]);S&&S.transform(["T",C,0]);e.setOffset&&e.setOffset(C);c={position:b,direction:b-h.lastPos||0,vxLength:H};E.xAxisScrollPos=h.lastPos=b;n(z,w,!0);if(0!==c.direction)for(X=0;X<a.datasets.length;X++)a[a.datasets[X].drawPlot+"Scroll"]&&a[a.datasets[X].drawPlot+"Scroll"].call(a,a.plots[X],a.datasets[X],c)}),function(){var b;m.eve.on("raphael.scroll.start."+d.scroller.id,function(c){b=c;q.raiseEvent("scrollstart",
{scrollPosition:c},a.logic.chartInstance)});m.eve.on("raphael.scroll.end."+d.scroller.id,function(c){q.raiseEvent("scrollend",{prevScrollPosition:b,scrollPosition:c},a.logic.chartInstance)})}());return h.enabled},finalizeScrollPlots:function(){var b=this,c=b.container,d=b.elements,e=b.layers,f=e.scroller,h=e.dataset,k=e.datalabels,e=e.tracker,l,m={},n,r=b.xAxis["0"]||{},p=(r.axisData||{}).scroll||{},t=ga(b.options[va].xAxisScrollPos,p.startPercent),u=p.fullCanvasWidth,B,C=b.logic.hcJSON.chart.animation,
F=b.logic.hcJSON.xAxis.scroll.startPercent;p.enabled&&(h.attr({"clip-rect":d["clip-canvas"]}),k.attr({"clip-rect":d["clip-canvas"]}),e.attr({"clip-rect":d["clip-canvas"]}),d=function(c){var d=b.elements.canvas,e=l.left,h=l.top,k=c.state,r=ta&&a.getTouchEvent(c)||v;c=c.originalEvent;e=(c.clientX||c.pageX||r.pageX)-e;h=(c.clientY||c.pageY||r.pageY)-h;switch(k){case "start":n=d.isPointInside(e,h);m.ox=n&&e||null;if(!n)return!1;m.prevScrollPosition=f.attrs["scroll-position"];q.raiseEvent("scrollstart",
{scrollPosition:m.prevScrollPosition},b.logic.chartInstance);break;case "end":q.raiseEvent("scrollend",{prevScrollPosition:m.prevScrollPosition,scrollPosition:m.scrollPosition},b.logic.chartInstance);n=!1;m={};break;default:if(!n)break;d=e-m.ox;m.ox=e;m.scrollPosition=f.attrs["scroll-position"]-d/u;f.attr({"scroll-position":m.scrollPosition})}},ta&&(l=s(c),c&&(U(c,"pointerdrag",d),N(c,"pointerdrag",d))),0<t&&(B=-Ia(t*u),h&&h.transform(["T",B,0]),e&&e.transform(["T",B,0]),r.setOffset&&r.setOffset(B),
C&&F?b.animationCompleteQueue.push({fn:function(){k&&k.transform(["T",B,0])},scope:b}):k&&k.transform(["T",B,0])))},drawPlotColumn:function(a,b,c){var d=this,f=a.data,h=f.length,k=a.items,l=a.graphics||(a.graphics=[]),n=d.paper,p=d.smartLabel,q=d.logic,s=d.layers,t=d.options,v=d.elements,u=t.chart,B=!1!==(t.tooltip||{}).enabled,C,F=d.definition.chart,H=t.plotOptions.series,N=H.dataLabels.style,L=d.xAxis[b.xAxis||0],M=d.yAxis[b.yAxis||0],U=d.chartWidth,W=d.chartHeight,aa=M.axisData.reversed,T=q.isLog,
z=q.is3D,w=q.isStacked,E=q.isWaterfall,I=q.isCandleStick,g=r(L.axisData.scroll,{}),ka=c||{},P=g.enabled,$=ga(ka.position,t[va].xAxisScrollPos,g.startPercent),da=ka.vxLength||Lb(g.vxLength),fa=ka.scrollStart||Da(0,Ia((h-da)*$)-1)||0,ja=ka.scrollEnd||Ra(h,fa+da+2)||h,ma=u.canvasBorderOpacity=m.color(u.plotBorderColor).opacity,ia=d.canvasBorderWidth,R=u.isCanvasBorder=0!==ma&&0<ia,Na,ea=c!==Fa?0:isNaN(+H.animation)&&H.animation.duration||1E3*H.animation,Oa=b.numColumns||1,ra=b.columnPosition||0,ha=u.use3DLighting,
na=!1===b.visible?"hidden":"visible",sa=u.overlapColumns,Ja=L.getAxisPosition(0),Y=L.getAxisPosition(1)-Ja,oa=F&&F.plotspacepercent,ta=ga(F&&F.plotpaddingpercent),xa=H.groupPadding,za=H.maxColWidth,bb=(1-.01*oa)*Y||Ra(Y*(1-2*xa),za*Oa),Ea=bb/2,ya=bb/Oa,Sa=Ra(ya-1,1<Oa?sa||ta!==Fa?0<ta?ya*ta/100:0:4:0),yc=ra*ya-Ea+Sa/2,La=M.max,yb=M.min,Xa=0<La&&0<=yb,cb=0>=La&&0>yb,gb=0<La&&0>yb,mb=cb||aa&&Xa?La:T||Xa?yb:0,fb=M.yBasePos=M.getAxisPosition(mb),tb,rb=ga(u.useRoundEdges,0),qb=s.dataset=s.dataset||n.group("dataset-orphan"),
hb=s.datalabels=s.datalabels||n.group("datalabels").insertAfter(qb),sb=s.tracker,vb=s.rectHot=s.rectHot||n.group("col-hot",sb),eb=d.canvasTop,Eb=d.canvasLeft,Mb=d.canvasWidth,Sc=d.canvasBottom,Tb=d.canvasRight,Ib,Qb,Ub,Yc,lc,mc,Ic,Jb,Yb,xb,nb,Zb,zb,bc,Ua,rc,Za,Wa,Ca,Cc,Qa,Cb,zc={fontFamily:N.fontFamily,fontSize:N.fontSize,lineHeight:N.lineHeight,fontWeight:N.fontWeight,fontStyle:N.fontStyle,color:N.color},$b,jc,kc,Nc,ob,$a,Nb,Wb,Ma,Oc,Fc,Vb,dc,ec,hc,fc,Ob,qa=ga(F.variableindex,1),Xb=0,gc=0,Ka=function(a){O.call(this,
d,a)},Ab=function(a,b){return function(c){a.attr(b);O.call(this,d,c,"DataPlotRollOver")}},kb=function(a,b){return function(c){a.attr(b);O.call(this,d,c,"DataPlotRollOut")}};d.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",zc);hb.attr("class","fusioncharts-datalabels");ea&&(!c&&hb.attr({transform:"...t"+U+","+W}),d.animationCompleteQueue.push({fn:function(){hb.attr({transform:"...t"+-U+","+-W})},scope:d}));ya-=Sa;P&&fa>ja-da-2&&(fa=Da(0,ja-da-2));w&&(ec=qb.shadows||(qb.shadows=n.group("shadows",
qb).toBack()));Nb=qb.column||(qb.column=n.group("columns",qb));I||z||P||Nb.attrs["clip-rect"]||Nb.attr({"clip-rect":v["clip-canvas"]});E&&Nb.toBack();if(z)for(lc=u.xDepth||0,mc=u.yDepth||0,Wb=Nb.negative=Nb.negative||n.group("negative-values",Nb),Fc=Nb.column=Nb.column||n.group("positive-values",Nb),Oc=Nb.zeroPlane,!Oc&&0>yb&&0<=La&&(Oc=Nb.zeroPlane=n.group("zero-plane",Nb).insertBefore(Fc),Qb=u.zeroPlaneColor,Ub=u.zeroPlaneBorderColor,Yc=u.zeroPlaneShowBorder,v.zeroplane=n.cubepath(Eb-lc,fb+mc,Mb,
1,lc,mc,Oc).attr({fill:[Qb,!ha],stroke:Ub||"none","stroke-width":Yc?1:0})),(Ma=Wb.data("categoryplots"))||(Wb.data("categoryplots",Array(h)),Ma=Wb.data("categoryplots")),(Vb=Fc.data("categoryplots"))||(Fc.data("categoryplots",Array(h)),Vb=Fc.data("categoryplots")),xb=0;xb<h;xb+=1)Ma[xb]=Ma[xb]||n.group(Wb),Vb[xb]=Vb[xb]||n.group(Fc);else dc=Nb;p.setStyle({fontFamily:N.fontFamily,fontSize:N.fontSize,lineHeight:N.lineHeight,fontWeight:N.fontWeight,fontStyle:N.fontStyle});for(xb=fa;xb<ja;xb+=1){nb=f[xb];
Ua=nb.y;C=nb.toolText;Ib=a.index+"_"+xb;ob=$a=null;if(null===Ua){if(Yb=k[xb])ob=Yb.graphic,z||ob.attr({height:0})}else{Ic=!1;bc=ga(nb.x,xb);Zb=nb.link;zb=K(nb.borderWidth)||0;Nc=nb._FCW*Y;Za=L.getAxisPosition(nb._FCX)||L.getAxisPosition(bc)+yc;rc=nb.previousY;Ca=M.getAxisPosition(rc||mb);Wa=M.getAxisPosition(Ua+(rc||0));Qa=pb(Wa-Ca);Cb=Nc||ya;gc=parseInt(qa)?Xb++:xb;Ob={index:gc,link:Zb,value:nb.y,displayValue:nb.displayValue,categoryLabel:nb.categoryLabel,toolText:nb.toolText,id:a.userID,datasetIndex:a.index,
datasetName:a.name,visible:a.visible};if(z){0>Ua&&(Wa=Ca,Ic=!0);dc=0>Ua?Ma:Vb;(Yb=k[xb])||(Yb=k[xb]={index:xb,value:Ua,graphic:n.cubepath(dc[xb]),dataLabel:null,tracker:null,hot:null});ob=Yb.graphic;jc=kc={};nb.hoverEffects&&(jc={fill:[X(nb.color),!ha],stroke:zb&&X(nb.borderColor)||"NONE","stroke-width":zb},$b=nb.rolloverProperties,kc={fill:[X($b.color),!ha],stroke:$b.borderWidth&&X($b.borderColor)||"NONE","stroke-width":$b.borderWidth});ob.attr({cubepath:[Za-lc,ea?fb+mc:Wa+mc,Cb,ea?0:Qa,lc,mc],fill:[X(nb.color),
!ha],ishot:!B,stroke:zb&&X(nb.borderColor)||"NONE","stroke-width":zb,visibility:na}).shadow(H.shadow&&nb.shadow,ec).data("BBox",{height:Qa,width:Cb,x:Za,y:Wa});ea&&ob.animate({cubepath:[Za-lc,Wa+mc,Cb,Qa,lc,mc]},ea,"normal",d.getAnimationCompleteFn());if(Zb||B)!w&&Qa<S&&(Wa-=(S-Qa)/2,Qa=S),Yb.tracker||(Yb.tracker=n.cubepath(vb)),$a=Yb.tracker,$a.attr({cubepath:[Za-lc,Wa+mc,Cb,Qa,lc,mc],cursor:Zb?"pointer":"",stroke:zb&&e||"NONE","stroke-width":zb,fill:e,ishot:!0,visibility:na});($a||ob).data("eventArgs",
Ob).data("groupId",Ib).click(Ka).hover(Ab(ob,kc),kb(ob,jc)).tooltip(C);($a||ob)._.cubetop.data("eventArgs",Ob).data("groupId",Ib).click(Ka).hover(Ab(ob,kc),kb(ob,jc)).tooltip(C);($a||ob)._.cubeside.data("eventArgs",Ob).data("groupId",Ib).click(Ka).hover(Ab(ob,kc),kb(ob,jc)).tooltip(C);w&&Ic&&(ob.toBack(),$a&&$a.toBack())}else{Jb=!1;if(!T&&!aa&&0>Ua||!T&&aa&&0<Ua)Wa=Ca,Jb=!0;aa&&!gb&&0<Ua&&(Wa=Ca-Qa,Jb=!1);E&&0>Ua&&Ba(rc)&&(Wa-=Qa,Jb=!0);I||P||(J(Wa)<=eb&&(Qa-=eb-Wa-+R,Wa=eb-+R),Ia(Wa+Qa)>=Sc&&(Qa-=
Ia(Wa+Qa)-Sc+ +!!zb+ +R,u.xAxisLineVisible&&!R&&(Qa+=1)),1>=zb&&(Ia(Za)<=Eb&&(Cb+=Za,Za=Eb-zb/2+ +!!zb-+R,Cb-=Za),Ia(Za+Cb)>=Tb&&(Cb=Tb-Za+zb/2-+!!zb+ +R)));hc=m.crispBound(Za,Wa,Cb,Qa,zb);Za=hc.x;Wa=hc.y;Cb=hc.width;Qa=hc.height;if(!I&&R&&(!Ba(rc)||E&&rc===Ua&&Ua===nb._FCY))if(cb&&!aa)Na=Wa-(eb-zb/2),Qa+=Na,fb=Wa-=Na;else if(T||Xa||aa&&cb)Qa=Sc-Wa+zb/2,fb=Wa+Qa;E&&rc&&0<zb&&0!==H.connectorOpacity&&1===H.connectorWidth&&H.connectorDashStyle&&(--Qa,0>Ua&&(Wa+=1));1>Qa&&(Wa+=0>Ua?1:0===Ua?0:-(1-Qa),
Qa=1);b._columnWidth=Cb;if(!(Yb=k[xb])){Yb=k[xb]={index:gc,value:Ua,width:Cb,graphic:null,valueBelowPlot:Jb,dataLabel:null,tracker:null};tb=0;ea||(fb=Wa,tb=Qa||1);jc=kc={};nb.hoverEffects&&(jc={fill:X(nb.color),stroke:X(nb.borderColor),"stroke-width":zb,"stroke-dasharray":nb.dashStyle},$b=nb.rolloverProperties,kc={fill:X($b.color),stroke:X($b.borderColor),"stroke-width":$b.borderWidth,"stroke-dasharray":$b.dashStyle});fc={x:Za,y:fb,width:Cb,height:tb,r:rb,ishot:!B,fill:X(nb.color),stroke:X(nb.borderColor),
"stroke-width":zb,"stroke-dasharray":nb.dashStyle,"stroke-linejoin":"miter",visibility:na};ob?ob.attr(fc):ob=Yb.graphic=n.rect(fc,dc);ob.shadow(H.shadow&&nb.shadow,ec).data("BBox",hc);ea&&ob.animate({y:Wa,height:Qa||1},ea,"normal",d.getAnimationCompleteFn());if(Zb||B)!w&&Qa<S&&(Wa-=(S-Qa)/2,Qa=S),fc={x:Za,y:Wa,width:Cb,height:Qa,r:rb,cursor:Zb?"pointer":"",stroke:e,"stroke-width":zb,fill:e,ishot:!0,visibility:na},($a=Yb.tracker)?$a.attr(fc):$a=Yb.tracker=n.rect(fc,vb);$a=Yb.tracker;($a||ob).data("eventArgs",
Ob).data("groupId",Ib).click(Ka).hover(Ab(ob,kc),kb(ob,jc)).tooltip(C)}}Cc=d.drawPlotColumnLabel(a,b,xb,Za,Wa)}Cc&&l.push(Cc);ob&&l.push(ob);$a&&l.push($a);d.drawTracker&&d.drawTracker.call(d,a,b,xb)}a.visible=!1!==b.visible;return a},drawPlotColumnScroll:function(a,b,c){var d=a.data.length,e=a.items,f;f=c.vxLength;var h=Da(0,Ia((d-f)*c.position)-1)||0,d=Ra(d,h+f+2)||d;h>d-f-2&&(h=Da(0,d-f-2));c.scrollEnd=d;for(f=h;f<d;f++)if(!e[f]){c.scrollStart=f;this.drawPlotColumn(a,b,c);break}},drawPlotColumnLabel:function(a,
b,c,d,e,f){var h=this.options,k=this.logic;d=h.chart;var l=this.paper,m=this.smartLabel,n=this.layers,h=h.plotOptions.series.dataLabels.style,p=1===d.rotateValues?270:0,q=this.canvasHeight,s=this.canvasTop,t=a.data[c];a=a.items[c];var v=d.valuePadding+2,u=a.graphic;c=a.dataLabel;var B=r(a.valueBelowPlot,0>t.y),C=k.isStacked,k=k.is3D,F=d.xDepth||0,J=d.yDepth||0,K=t.displayValue;b=!1===b.visible?"hidden":"visible";var N=d.placeValuesInside,L;f=f||n.datalabels;Ba(K)&&K!==H&&null!==t.y?(a._state&&a._state.labelWidth||
(m=m.getOriSize(K),a._state=p?{labelWidth:m.height,labelHeight:m.width}:{labelWidth:m.width,labelHeight:m.height}),u=u.data("BBox"),n=u.height,m=L=a._state.labelHeight+v,v=.5*L+v,u=u.x+.5*u.width,L=B?s+q-(e+n):e-s,C?(e=Ra(s+q-.5*m,e+.5*n+(J||0)),e=Da(s+.5*m,e),u-=F):N?n>=m?(e+=B?n-v:v,t._valueBelowPoint=1,k&&(u-=F,e+=J)):L>=m?(e+=B?n+v:-v,k&&B&&(u-=F,e+=J)):(e+=B?n-v:v,t._valueBelowPoint=1,k&&(u-=F,e+=J)):L>=m?(e+=B?n+v:-v,k&&(B?(u-=F,e+=J):u-=F/2)):(e+=B?n-v:v,t._valueBelowPoint=1,k&&(u-=F,e+=J)),
c?c.attr({x:u,y:e,visibility:b}):c=a.dataLabel=l.text({text:K,"class":"fusioncharts-label",x:u,y:e,fill:h.color,"font-size":h.fontSize,direction:d.textDirection,visibility:b},f).attr({"line-height":h.lineHeight,"text-bound":[h.backgroundColor,h.borderColor,h.borderThickness,h.borderPadding,h.borderRadius,h.borderDash]}),p&&c.attr("transform","T0,0,R"+p)):c&&c.attr({text:H});return c},drawPlotFloatedcolumn:function(a,b){this.drawPlotColumn.call(this,a,b)},drawPlotColumn3d:function(a,b){this.drawPlotColumn.call(this,
a,b)},drawPlotBar:function(a,b){var c=this,d=a.data,f=d.length,h=a.items,k=a.graphics=[],l=c.paper,n=c.logic,r=c.layers,p=c.options,q=c.elements,s=p.chart,t=!1!==(p.tooltip||{}).enabled,v,u=c.definition.chart,p=p.plotOptions.series,B=p.dataLabels.style,C={fontFamily:B.fontFamily,fontSize:B.fontSize,lineHeight:B.lineHeight,fontWeight:B.fontWeight,fontStyle:B.fontStyle},B=c.xAxis[b.xAxis||0],F=c.yAxis[b.yAxis||0],H=n.is3D,n=n.isStacked,N=s.canvasBorderOpacity=m.color(s.plotBorderColor).opacity,L=c.canvasBorderWidth,
N=s.isCanvasBorder=0!==N&&0<L,L=isNaN(+p.animation)&&p.animation.duration||1E3*p.animation,M=b.numColumns||1,U=b.columnPosition||0,W=s.use3DLighting,aa=!1===b.visible?"hidden":"visible",z=s.overlapColumns,w=B.getAxisPosition(0),w=B.getAxisPosition(1)-w,E=u&&u.plotspacepercent,u=ga(u&&u.plotpaddingpercent),I=p.groupPadding,g=p.maxColWidth,E=(1-.01*E)*w||Ra(w*(1-2*I),g*M),w=E/2,E=E/M,z=Ra(E-1,1<M?z||u!==Fa?0<u?E*u/100:0:4:0),M=E-z,U=U*E-w+z/2,ka=F.max,P=F.min,z=F.getAxisPosition(0>ka&&0>P?ka:0<ka&&
0<P?P:0),u=ga(s.useRoundEdges,0),T=c.canvasTop,w=c.canvasLeft,$=c.canvasHeight,E=c.canvasRight,da=c.chartWidth,fa=c.chartHeight,ja,ma,R,Na,ea,Oa,ra,ha,ia,na,I=F.axisData.effectiveZeroPlaneThickness;ra=r.dataset=r.dataset||l.group("dataset-orphan");var Ja=r.datalabels=r.datalabels||l.group("datalabels").insertAfter(ra),r=r.tracker,Y,sa,va,oa,Da,ta,g=function(a){O.call(this,c,a)},xa=function(a,b){return function(d){a.attr(b);O.call(this,c,d,"DataPlotRollOver")}},za=function(a,b){return function(d){a.attr(b);
O.call(this,c,d,"DataPlotRollOut")}},Ea;c.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",C);Ja.attr("class","fusioncharts-datalabels");L&&(c.animationCompleteQueue.push({fn:function(){Ja.attr({transform:"...t"+-da+","+-fa})},scope:c}),Ja.attr({transform:"...t"+da+","+fa}));n&&(Da=ra.shadows||(ra.shadows=l.group("shadows",ra).toBack()));ha=ra.column=ra.column||l.group("bars",ra);if(H)for(ja=s.xDepth||0,ma=s.yDepth||0,C=ha.negative=ha.negative||l.group("negative-values",ha),ra=ha.column=
ha.column||l.group("positive-values",ha),va=ha.zeroPlane,!va&&0>P&&0<=ka&&(va=ha.zeroPlane=l.group("zero-plane",ha).insertBefore(ra),na=s.zeroPlaneColor,ka=s.zeroPlaneBorderColor,P=s.zeroPlaneShowBorder,q.zeroplane=l.cubepath(z-ja,T+ma,1,$,ja,ma,va).attr({fill:[na,!W],stroke:ka||"none","stroke-width":P?1:0})),(va=C.data("categoryplots"))||(C.data("categoryplots",Array(f)),va=C.data("categoryplots")),(na=ra.data("categoryplots"))||(ra.data("categoryplots",Array(f)),na=ra.data("categoryplots")),q=0;q<
f;q+=1)va[q]=va[q]||l.group(C),na[q]=na[q]||l.group(ra);else ha.attrs["clip-rect"]||ha.attr({"clip-rect":q["clip-canvas"]}),oa=ha;q=0;for(C=f-1;q<f;q+=1,--C){T=d[q];P=T.y;Y=$=null;if(null===P){if(Oa=h[q])Y=Oa.graphic,H||Y.attr({width:0})}else{ha=ga(T.x,q);ra=T.link;v=T.toolText;ka=K(T.borderWidth)||0;ha=B.getAxisPosition(ha)+U;Oa=(R=T.previousY)?F.getAxisPosition(R):z;ia=F.getAxisPosition(P+(R||0));R=pb(ia-Oa);0<P&&(ia=Oa);Ba(b.previousData)&&Ba(b.previousData[q].y)&&n&&1>pb(b.previousData[q].y)*
F.pixelValueRatio&&(0<=P?ia+=1:--ia);sa={index:q,link:ra,value:T.y,displayValue:T.displayValue,categoryLabel:T.categoryLabel,toolText:T.toolText,id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible};if(H){oa=0>P?va:na;(Oa=h[q])||(Oa=h[q]={index:q,value:P,graphic:l.cubepath(oa[C]),dataLabel:null,tracker:null});Y=Oa.graphic;ea=Na={};T.hoverEffects&&(ea={fill:[X(T.color),!W],stroke:ka&&X(T.borderColor)||"NONE","stroke-width":ka},Na=T.rolloverProperties,Na={fill:[X(Na.color),!W],stroke:Na.borderWidth&&
X(Na.borderColor)||"NONE","stroke-width":Na.borderWidth});Y.attr({cubepath:[L?z-ja:ia-ja,ha+ma,L?0:R,M,ja,ma],fill:[X(T.color),!W],ishot:!t,stroke:ka&&X(T.borderColor)||"NONE","stroke-width":ka,"stroke-dasharray":T.dashStyle,cursor:ra?"pointer":"",visibility:aa}).shadow(p.shadow&&T.shadow,Da).data("BBox",{height:M,width:R,x:ia,y:ha});L&&Y.animate({cubepath:[ia-ja,ha+ma,R,M,ja,ma]},L,"normal",c.getAnimationCompleteFn());if(ra||t)!n&&R<S&&(ia-=(S-R)/2,R=S),Oa.tracker||(Oa.tracker=l.cubepath(r)),$=Oa.tracker,
$.attr({cubepath:[ia-ja,ha+ma,R,M,ja,ma],cursor:ra?"pointer":"",stroke:ka&&e||"NONE","stroke-width":ka,fill:e,ishot:!0});($||Y).data("eventArgs",sa).click(g).hover(xa(Y,Na),za(Y,ea)).tooltip(v);($||Y)._.cubetop.data("eventArgs",sa).click(g).hover(xa(Y,Na),za(Y,ea)).tooltip(v);($||Y)._.cubeside.data("eventArgs",sa).click(g).hover(xa(Y,Na),za(Y,ea)).tooltip(v);if(!n||n&&0>P)Y.toBack(),$&&$.toBack()}else{J(ia)<=w&&(R+=ia,ia=w+ka/2+.2,s.xAxisLineVisible&&!N&&--ia,R-=ia);Ia(ia+R)>=E&&(R=E-ia-ka/2-.2);
ta=m.crispBound(ia,ha,R,M,ka);ia=ta.x;ha=ta.y;R=ta.width;Ea=ta.height;1>=R&&(R=1,ia+=0>P?-R:0===P?0:1<I?R:0);(Oa=h[q])||(Oa=h[q]={index:q,value:P,height:Ea,graphic:null,dataLabel:null,tracker:null});Y=Oa.graphic;ea=Na={};T.hoverEffects&&(ea={fill:X(T.color),stroke:X(T.borderColor),"stroke-width":ka,"stroke-dasharray":T.dashStyle},Na=T.rolloverProperties,Na={fill:X(Na.color),stroke:X(Na.borderColor),"stroke-width":Na.borderWidth,"stroke-dasharray":Na.dashStyle});P={x:L?z:ia,y:ha,width:L?0:R||1,height:Ea,
r:u,fill:X(T.color),ishot:!t,stroke:X(T.borderColor),"stroke-width":ka,"stroke-dasharray":T.dashStyle,"stroke-linejoin":"miter",cursor:ra?"pointer":"",visibility:aa};Y?Y.attr(P):Y=Oa.graphic=l.rect(P,oa);Y.shadow(p.shadow&&T.shadow,Da).data("BBox",ta);L&&Y.animate({x:ia,width:R||1},L,"normal",c.getAnimationCompleteFn());if(ra||t)!n&&R<S&&(ia-=(S-R)/2,R=S),$=Oa.tracker,P={x:ia,y:ha,width:R,height:M,r:u,cursor:ra?"pointer":"",stroke:e,"stroke-width":ka,fill:e,ishot:!0},$?$.attr(P):$=Oa.tracker=l.rect(P,
r),$.data("eventArgs",sa);($||Y).data("eventArgs",sa).click(g).hover(xa(Y,Na),za(Y,ea)).tooltip(v)}v=c.drawPlotBarLabel(a,b,q,ia,ha)}v&&k.push(v);Y&&k.push(Y);$&&k.push($);c.drawTracker&&c.drawTracker.call(c,a,b,q)}a.visible=!1!==b.visible;return a},drawPlotBarLabel:function(a,b,c,d,e,f){var h=this.options,k=this.logic,l=h.chart,m=this.paper,n=this.layers,p=h.plotOptions.series.dataLabels.style,h=this.canvasLeft,r=this.canvasWidth,q=a.data[c],s=a.items[c];a=l.valuePadding+2;var t=s.graphic;c=s.dataLabel;
var v=0>q.y,u=k.isStacked,k=k.is3D,B=l.xDepth||0,C=l.yDepth||0,F=q.displayValue;b=!1===b.visible?"hidden":"visible";var J=l.placeValuesInside;f=f||n.datalabels;if(Ba(F)&&F!==H&&null!==q.y){c||(c=s.dataLabel=m.text({"class":"fusioncharts-label",text:F,"font-size":p.fontSize,title:q.originalText||"",fill:p.color,direction:l.textDirection,x:0,y:0,"line-height":p.lineHeight},f).attr("text-bound",[p.backgroundColor,p.borderColor,p.borderThickness,p.borderPadding,p.borderRadius,p.borderDash]));n=c.getBBox();
f=t.data("BBox");p=f.height;m=f.width;f=u?"middle":v?J?"start":"end":J?"end":"start";l=v?d-h:h+r-(d+m);n=n.width;n+=a;p=e+.5*p;q=d+(v?0:m);e=v?d-h:h+r-(d+m);if(u)q=Da(h+.5*n,q+.5*(v?m:-m)),q=Ra(h+r-.5*n,q),q-=k?B:0,p+=k?C:0;else if(J?m>=n?(q+=v?a:-a,k&&(p+=C,q-=B)):n<l?(q+=v?-a:a,f=v?"end":"start",k&&v&&(q-=B)):(v?(q=d+m+Da(n-d-m+h,0)-a,f="end",q-=k?B:0):(q=d-Da(n-(h+r-d),0)+a,f="start"),k&&(q-=B,p+=C)):e>=n?(q+=v?-a:a,k&&v&&(q-=B,p+=B)):(q+=v?a+n:-(a+n),k&&(q-=B,p+=C)),q>h+r||q<h)q=h+4,f="start";
c.attr({x:q,y:p,"text-anchor":f,visibility:b})}else c&&c.attr({text:H});return c},drawPlotBar3d:function(a,b){this.drawPlotBar.call(this,a,b)},drawPlotLine:function(a,c){var d=this,f=d.paper,h=d.elements,k=d.options,l=k.chart,n=d.logic,p=k.plotOptions.series,q=a.items,r=a.graphics=a.graphics||[],s,v=d.xAxis[c.xAxis||0],t=d.yAxis[c.yAxis||0],u=n.multisetRealtime||n.dragExtended,B=n.isWaterfall,C,F,J,H,N,L=0,M=!1!==(k.tooltip||{}).enabled,U,S=isNaN(+p.animation)&&p.animation.duration||1E3*p.animation,
W,z=p.dataLabels.style,w={fontFamily:z.fontFamily,fontSize:z.fontSize,lineHeight:z.lineHeight,fontWeight:z.fontWeight,fontStyle:z.fontStyle},E=l.xDepth||0,I=l.yDepth||0,g=l.series2D3Dshift,ka=c.step,P=c.drawVerticalJoins,T=c.useForwardSteps,aa=a.data,$=!1===c.visible?"hidden":"visible",da,ia=aa.length,ha=v.getAxisPosition(0),R=v.getAxisPosition(1)-ha,fa=R*ia,ea=v.axisData.scroll||{},ja=l.hasScroll||!1,ra,ma=p.connectNullData,na=d.chartWidth,va=d.chartHeight,Ja=function(){rc.attr({"clip-rect":null});
Ua.show();bc.show();Za.show();Ib.attr({transform:"...t"+-na+","+-va})},Y,sa,ta,xa,Fa,Ia,za,Ea=null,Ba,ya,La=p.connectorWidth=K(c.lineWidth),Sa=c.color,Xa,cb,fb=p.connectorDashStyle=c.dashStyle,mb,gb,tb,pb,qb,hb,eb,rb,vb,sb=d.layers,Eb=sb.dataset=sb.dataset||f.group("dataset-orphan"),Ib=sb.datalabels=sb.datalabels||f.group("datalabels").insertAfter(Eb),Tb=sb.tracker,Lb=sb.lineHot=sb.lineHot||f.group("line-hot",Tb),Mb=h["clip-canvas-init"].slice(0),Qb=h["clip-canvas"].slice(0),Ub=t.axisData.reversed,
lc=t.max,mc=t.min,Ic=t.getAxisPosition(0<lc&&0<mc?Ub?lc:mc:0>lc&&0>mc?Ub?mc:lc:Ub?lc:0)+(g?I:0),Jb=[],Yb=l.anchorTrackingRadius,xb=/drag/ig.test(d.logic.rendererId),nb,Zb,zb,bc,Ua,rc,Za,Wa,Ca,Cc,Qa,Cb,zc=[],$b=function(a){O.call(this,d,a)},jc=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOver",a,d)}},kc=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOut",a,d)}},Nc=function(b,g,h,k,l,m,n,p){return function(){var q=h.imageUrl,s=h.imageScale,v=h.imageAlpha,
t=n.imageHoverAlpha,u=n.imageHoverScale,w=this.height*s*.01,z=this.width*s*.01,B=this.width*u*.01;eb={x:b-this.width*s*.005,y:g-this.height*s*.005,width:z,height:w,alpha:v};rb={x:b-this.width*u*.005,y:g-this.height*u*.005,width:B,height:this.height*u*.01,alpha:t};t=B>z?rb:eb;xb&&(t={cx:b,cy:g,r:.5*Da(w,z)});(k.graphic=pb=f.image(q,Za).attr(eb).css({opacity:.01*v}).data("alwaysInvisible",!s).data("setRolloverProperties",n).data("setRolloverAttr",rb).data("setRolloutAttr",eb).data("anchorRadius",s).data("anchorHoverRadius",
u))&&r.push(pb);if(sa||M||n)qb=k.tracker=(xb?f.circle(Lb):f.rect(Lb)).attr(t).attr({cursor:sa?"pointer":"",stroke:e,"stroke-width":h.lineWidth,fill:e,ishot:!0,visibility:$}).data("eventArgs",l).data("groupId",nb).click($b).hover(jc(k),kc(k)).tooltip(m);d.drawTracker&&d.drawTracker.call(d,a,c,p);(Qa=k.dataLabel=d.drawPlotLineLabel(a,c,p,b,g))&&r.push(Qa)}},ob=function(b,e,g,f,h,k,l,m){return function(){(Qa=f.dataLabel=d.drawPlotLineLabel(a,c,m,b,e))&&r.push(Qa)}};d.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",
w);Ib.attr("class","fusioncharts-datalabels");p.connectorOpacity=m.color(Sa).opacity;t.yBasePos=Ic;B&&(C=(F=d.definition.chart)&&F.plotspacepercent,J=p.groupPadding,H=p.maxColWidth,N=(1-.01*C)*R||Ra(R*(1-2*J),1*H),L=N/2);Ib.attr({transform:"...t"+na+","+va});S&&d.animationCompleteQueue.push({fn:Ja,scope:d});zb=Eb.line||(Eb.line=f.group("line-connector",Eb));bc=a.lineShadowLayer||(a.lineShadowLayer=f.group("connector-shadow",zb));Ua=a.anchorShadowLayer||(a.anchorShadowLayer=f.group("anchor-shadow",
zb));rc=a.lineLayer||(a.lineLayer=f.group("connector",zb));Za=a.anchorLayer||(a.anchorLayer=f.group("anchors",zb));Za.hide();bc.hide();Ua.hide();for(da=0;da<ia;da+=1){Y=aa[da];Fa=Y.y;Ia=Y.previousY||0;U=Y.toolText;nb=a.index+"_"+da;vb=Qa=pb=qb=null;s=q[da]={index:da,value:null,graphic:null,connector:null,dataLabel:null,shadowGroup:Ua,tracker:null};if(null===Fa)zc.length=0,0===ma&&(Ea=null);else{xa=ga(Y.x,da);sa=Y.link;"boxandwhisker"===c.relatedSeries&&c.pointStart&&(xa+=c.pointStart);ya=t.getAxisPosition(Fa+
Ia)+(g?I:0);Ba=v.getAxisPosition(xa)-E;Ba=oa(Ba,La,La).position;ya=oa(ya,La,La).position;if((mb=Y.marker)&&mb.enabled)if(gb=mb.symbol.split("_"),tb="spoke"===gb[0]?1:0,ta=mb.radius,Wa=mb.shadow,Zb={index:da,link:sa,value:Y.y,displayValue:Y.displayValue,categoryLabel:Y.categoryLabel,toolText:Y.toolText,id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible},eb=rb={},hb=Y.rolloverProperties,mb.imageUrl)Cb=new b,Cb.onload=Nc(Ba,ya,mb,s,Zb,U,hb,da),Cb.onerror=ob(Ba,ya,mb,s,Zb,U,hb,da),
Cb.src=mb.imageUrl;else{hb&&(eb={polypath:[gb[1]||2,Ba,ya,ta,mb.startAngle,tb],fill:X(mb.fillColor),"stroke-width":mb.lineWidth,stroke:X(mb.lineColor)},rb={polypath:[hb.sides||2,Ba,ya,hb.radius,hb.startAngle,hb.dip],fill:X(hb.fillColor),"stroke-width":hb.lineWidth,stroke:X(hb.lineColor)});pb=s.graphic=f.polypath(gb[1]||2,Ba,ya,ta,mb.startAngle,tb,Za).attr({fill:X(mb.fillColor),ishot:!M,"stroke-width":mb.lineWidth,stroke:X(mb.lineColor),cursor:sa?"pointer":"",visibility:ta?$:"hidden"}).data("alwaysInvisible",
!ta).data("setRolloverProperties",hb).data("setRolloverAttr",rb).data("setRolloutAttr",eb).data("anchorRadius",ta).data("anchorHoverRadius",hb&&hb.radius).shadow(Wa||!1,Ua);if(sa||M||hb)ta=Da(ta,hb&&hb.radius||0,Yb),qb=s.tracker=f.circle({cx:Ba,cy:ya,r:ta,cursor:sa?"pointer":"",stroke:e,"stroke-width":mb.lineWidth,fill:e,ishot:!0,visibility:$},Lb);(qb||pb).data("eventArgs",Zb).data("groupId",nb).click($b).hover(jc(s),kc(s)).tooltip(U);d.drawTracker&&d.drawTracker.call(d,a,c,da)}Ca=Cc!==[X(Y.color||
Sa),Y.dashStyle||fb].join(":");if(null!==Ea){if(zc.length&&(Jb=Jb.concat(zc),zc.length=0),(u||B||!Jb.join(""))&&Jb.push("M",za,Ea),B&&Jb.push("m",-L,0),ka?T?(Jb.push("H",Ba),B&&Jb.push("h",L),P?Jb.push("V",ya):Jb.push("m",0,ya-Ea)):(P&&Jb.push("V",ya),Jb.push("M",za,ya,"H",Ba)):Jb.push("L",Ba,ya),u||Ca)vb=s.connector=f.path(Jb,rc).attr({"stroke-dasharray":cb,"stroke-width":La,stroke:Xa,"stroke-linecap":"round","stroke-linejoin":2<La?"round":"miter",visibility:$}).shadow(p.shadow&&Y.shadow,bc),Jb=
[]}else!u&&zc.push("M",Ba,ya);mb&&mb.imageUrl||(Qa=s.dataLabel=d.drawPlotLineLabel(a,c,da,Ba,ya));za=Ba;Ea=ya;Xa=X(Y.color||Sa);cb=Y.dashStyle||fb;Cc=[Xa,cb].join(":")}Qa&&r.push(Qa);pb&&r.push(pb);vb&&r.push(vb);qb&&r.push(qb)}!u&&Jb.join("")&&(vb=f.path(Jb,rc).attr({"stroke-dasharray":cb,"stroke-width":La,stroke:Xa,"stroke-linecap":"round","stroke-linejoin":2<=La?"round":"miter",visibility:$}).shadow(p.shadow&&Y.shadow,bc))&&r.push(vb);ja&&(ra=ea.startPercent,Qb[2]=fa+Mb[0],1===ra&&(Mb[0]=Qb[2],
Qb[0]=0));S?(W=m.animation({"clip-rect":Qb},S,ja?"easeIn":"normal",d.getAnimationCompleteFn()),rc.attr({"clip-rect":Mb}).animate(B?W.delay(S):W)):(Ja&&Ja(),Ja=void 0);a.visible=!1!==c.visible;return a},hoverPlotAnchor:function(a,b,c,d,e){var f=d.graphic;d=d.dataLabel;var h=e.options.chart,k=1===h.rotateValues?270:0,l=f.data("setRolloverProperties"),m=f.data("isRealtime"),n=m&&f.attr("polypath"),p=f.data("setRolloverAttr"),q="image"===f.type,r=f.data("setRolloutAttr"),s=d&&(d.data("isBelow")?1:-1)*
(q?.5*(p.height-r.height):f.data("anchorHoverRadius")-f.data("anchorRadius")),v="DataPlotRollOver"==c?p:r,t={transform:"T0,"+("DataPlotRollOver"===c?s:0)+"R"+k},u={fill:v.fill,"stroke-width":v["stroke-width"],stroke:v.stroke},v=q?v:{polypath:v.polypath},h=h.syncLabelWithAnchor,B=f.data("anchorRadius"),C=f.data("anchorHoverRadius"),p=!(/,0\)$/.test(p.fill)&&/,0\)$/.test(r.fill))&&f.data("anchorHoverRadius")-f.data("anchorRadius")&&l.animation&&50;d&&d.data("isMiddle")&&(t={transform:"T,"+("DataPlotRollOver"===
c?s:0)+",0R"+k});l&&(("DataPlotRollOver"==c&&0!==C||"DataPlotRollOut"==c&&0!==B)&&f.attr({visibility:"visible"}),q?f.css({opacity:.01*v.alpha}):f.attr(u),m&&!q&&(v.polypath[1]=n[1],v.polypath[2]=n[2]),f.stop(),f.animate(v,p,"easeOut",function(){("DataPlotRollOver"==c&&!C||"DataPlotRollOut"==c&&!B)&&f.attr({visibility:"hidden"})}),d&&d.stop(),p&&h&&d&&d.animate(t,p,"easeOut"));O.call(a,e,b,c)},drawPlotArea:function(a,c){var d=this,f=d.paper,h=d.options,k=h.chart,l=d.logic,m=h.plotOptions.series,p=
d.elements,q=a.items,r=a.graphics=a.graphics||[],s,v=d.xAxis[c.xAxis||0],t=d.yAxis[c.yAxis||0],u=t.axisData.reversed,B=k.xDepth||0,C=k.yDepth||0,l=l.isStacked,F=!1!==(h.tooltip||{}).enabled,J,K,h=m.dataLabels.style,H={fontFamily:h.fontFamily,fontSize:h.fontSize,lineHeight:h.lineHeight,fontWeight:h.fontWeight,fontStyle:h.fontStyle,color:h.color},h=isNaN(+m.animation)&&m.animation.duration||1E3*m.animation,N=k.series2D3Dshift,L="0"===d.definition.chart.drawfullareaborder,M=a.data,U=!1===c.visible?"hidden":
"visible",S=M.length,z=v.getAxisPosition(0),w=(v.getAxisPosition(1)-z)*S,E=v.axisData.scroll||{},z=k.hasScroll||!1,I=m.connectNullData,g,W,P,T,aa,$=t.max,da=t.min,ia=t.getAxisPosition(0<$&&0>da?0:!u&&0<$&&0<=da?da:$)+(N?C:0),ha=d.chartWidth,R=d.chartHeight,u=function(){fb.attr({"clip-rect":null});mb.show();Xa.show();La.attr({transform:"...t"+-ha+","+-R})},ja=null,ea,fa,$=c.lineWidth,da=c.dashStyle,ra=X(c.fillColor),ma=X(c.lineColor),na=0,sa=/drag/ig.test(d.logic.rendererId),va,Y,ta,oa,xa,Ba,ya=[],
Fa=[],Ea=null,Ia=[],za=d.layers;T=za.dataset=za.dataset||f.group("dataset-orphan");var La=za.datalabels=za.datalabels||f.group("datalabels").insertAfter(T),Ea=za.tracker,Ra=za.areaHot=za.areaHot||f.group("area-hot",Ea),za=p["clip-canvas-init"].slice(0),p=p["clip-canvas"].slice(0),k=k.anchorTrackingRadius,Sa,Xa,cb,mb,fb,gb,pb,qb,hb,eb,rb=function(a){O.call(this,d,a)},sb=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOver",a,d)}},tb=function(a){return function(b){d.hoverPlotAnchor(this,
b,"DataPlotRollOut",a,d)}},Ea=function(b,g,h,k,l,m,p,q){return function(){var s=h.imageUrl,v=h.imageScale,t=h.imageAlpha,u=p.imageHoverAlpha,w=p.imageHoverScale,z=this.width*v*.01,B=this.width*w*.01;xa={x:b-this.width*v*.005,y:g-this.height*v*.005,width:z,height:this.height*v*.01,alpha:t};Ba={x:b-this.width*w*.005,y:g-this.height*w*.005,width:B,height:this.height*w*.01,alpha:u};u=B>z?Ba:xa;sa&&(u={cx:b,cy:g,r:.5*Da(B,z)});(k.graphic=Y=f.image(s,mb).attr(xa).css({opacity:.01*t}).data("alwaysInvisible",
!v).data("setRolloverProperties",p).data("setRolloverAttr",Ba).data("setRolloutAttr",xa).data("anchorRadius",v).data("anchorHoverRadius",w))&&r.push(Y);if(W||F||p)Sa=n({cursor:W?"pointer":"",stroke:e,"stroke-width":h.lineWidth,fill:e,ishot:!0,visibility:U},u),ta=k.tracker=(sa?f.circle(Sa,Ra):f.rect(Sa,Ra)).data("eventArgs",l).click(rb).hover(sb(k),tb(k)).tooltip(m),d.drawTracker&&d.drawTracker.call(d,a,c,q);(eb=k.dataLabel=d.drawPlotLineLabel(a,c,q,b,g))&&r.push(eb)}},vb=function(b,e,f,g,h,k,l,m){return function(){(eb=
g.dataLabel=d.drawPlotLineLabel(a,c,m,b,e))&&r.push(eb)}};d.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",H);La.attr("class","fusioncharts-datalabels");t.yBasePos=ia;La.attr({transform:"...t"+ha+","+R});h&&d.animationCompleteQueue.push({fn:u,scope:d});H=T;l&&(gb=H.shadows||(H.shadows=f.group("shadows",H).toBack()));fb=H.area=H.area||f.group("area",H);H=H.areaConnector||(H.areaConnector=f.group("area-connector",H));a.lineShadowLayer||(a.lineShadowLayer=f.group("connector-shadow",
H));Xa=a.anchorShadowLayer||(a.anchorShadowLayer=f.group("anchor-shadow",H));cb=a.lineLayer||(a.lineLayer=f.group("connector",H));mb=a.anchorLayer||(a.anchorLayer=f.group("anchors",H));mb.hide();Xa.hide();H=T;for(H=0;H<S;H+=1){g=M[H];T=g.y;s=ga(g.x,H);ea=v.getAxisPosition(s)-B;Y=eb=ta=null;s=q[H]={};if(null===T)0===I&&(ja=null,0<na&&(1===na?ya.splice(-8,8):(ya=ya.concat(Fa),ya.push("Z")),Fa=[])),s.chart=d,s.index=H,s.value=T;else{W=g.link;J=g.toolText;K=g.previousY;aa=(aa=t.getAxisPosition(K)||null)||
ia;fa=t.getAxisPosition(T+(K||0))+(N?C:0);if((hb=g.marker)&&hb.enabled)if(K={index:H,link:W,value:g.y,displayValue:g.displayValue,categoryLabel:g.categoryLabel,toolText:g.toolText,id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible},xa=Ba={},oa=g.rolloverProperties,hb.imageUrl)P=new b,P.onload=Ea(ea,fa,hb,s,K,J,oa,H),P.onerror=vb(ea,fa,hb,s,K,J,oa,H),P.src=hb.imageUrl;else{va=hb.symbol.split("_");P=hb.radius;qb=hb.shadow;oa&&(xa={polypath:[va[1]||2,ea,fa,P,hb.startAngle,0],fill:X(hb.fillColor),
"stroke-width":hb.lineWidth,stroke:X(hb.lineColor)},oa=g.rolloverProperties,Ba={polypath:[oa.sides||2,ea,fa,oa.radius,oa.startAngle,oa.dip],fill:X(oa.fillColor),"stroke-width":oa.lineWidth,stroke:X(oa.lineColor)});Y=s.graphic=f.polypath(va[1]||2,ea,fa,P,hb.startAngle,0,mb).attr({fill:X(hb.fillColor),ishot:!F,"stroke-width":hb.lineWidth,stroke:X(hb.lineColor),cursor:W?"pointer":"",visibility:P?U:"hidden"}).data("alwaysInvisible",!P).data("setRolloverProperties",oa).data("setRolloverAttr",Ba).data("setRolloutAttr",
xa).data("anchorRadius",P).data("anchorHoverRadius",oa&&oa.radius).shadow(qb||!1,Xa);if(W||F||oa)l||(P=Da(P,oa&&oa.radius||0,k)),ta=s.tracker=f.circle({cx:ea,cy:fa,r:P,cursor:W?"pointer":"",stroke:e,"stroke-width":hb.lineWidth,fill:e,ishot:!0,visibility:U},Ra);(ta||Y).data("eventArgs",K).click(rb).hover(sb(s),tb(s)).tooltip(J);d.drawTracker&&d.drawTracker.call(d,a,c,H)}null===ja?(Ia.push("M",ea,",",fa),ya.push("M",ea,",",aa),na=0):Ia.push("L",ea,",",fa);ya.push("L",ea,",",fa);Fa.unshift("L",ea,",",
aa);na++;ja=fa;hb&&hb.imageUrl||(eb=s.dataLabel=d.drawPlotLineLabel(a,c,H,ea,fa));s.chart=d;s.index=H;s.value=T;s.dataLabel=eb}eb&&r.push(eb);Y&&r.push(Y);ta&&r.push(ta)}0<na&&(1===na?ya.splice(-8,8):(ya=ya.concat(Fa),ya.push("Z")));(Ea=a.graphic=f.path(ya,fb).attr({fill:ra,"stroke-dasharray":da,"stroke-width":L?0:$,stroke:ma,"stroke-linecap":"round","stroke-linejoin":2<$?"round":"miter",visibility:U}).shadow(m.shadow&&g.shadow,gb))&&r.push(Ea);z&&(m=E.startPercent,p[2]=w+za[0],1===m&&(za[0]=p[2],
p[0]=0));h?pb=fb.attr({"clip-rect":za}).animate({"clip-rect":p},h,z?"easeIn":"normal",d.getAnimationCompleteFn()):(u&&u(),u=void 0);gb&&(h?gb.attr({"clip-rect":za}).animateWith(fb,pb,{"clip-rect":p},h,z?"easeIn":"normal",function(){gb.attr({"clip-rect":null})}):gb.attr({"clip-rect":null}));L&&(m=a.connector=f.path(Ia,cb).attr({"stroke-dasharray":da,"stroke-width":$,stroke:ma,"stroke-linecap":"round","stroke-linejoin":2<$?"round":"miter",visibility:U}),h?cb.attr({"clip-rect":za}).animateWith(fb,pb,
{"clip-rect":p},h,z?"easeIn":"normal",function(){cb.attr({"clip-rect":null})}):cb.attr({"clip-rect":null}),m&&r.push(m));a.visible=!1!==c.visible;return a},drawPlotScatter:function(a,b){var c=this,d=c.options,f=d.chart,h=d.plotOptions.series,k=c.paper,l=c.elements,m=a.items,n,p=a.graphics=a.graphics||[],q=c.xAxis[b.xAxis||0],r=c.yAxis[b.yAxis||0],s=a.data,v=!1===b.visible?"hidden":"visible",d=!1!==(d.tooltip||{}).enabled,t,u=h.dataLabels.style,B={fontFamily:u.fontFamily,fontSize:u.fontSize,lineHeight:u.lineHeight,
fontWeight:u.fontWeight,fontStyle:u.fontStyle,color:u.color},u=isNaN(+h.animation)&&h.animation.duration||1E3*h.animation,C=c.chartWidth,F=c.chartHeight,J,K,H,N,L,M,z,w,E,I=b.lineWidth,g=0<I,U=b.color,P=b.dashStyle,S=h.connectNullData,W=[],T,aa,$,da,R,ga,ea=c.layers,fa=ea.dataset||(ea.dataset=k.group("dataset-orphan")),ia=ea.datalabels||(ea.datalabels=k.group("datalabels").insertAfter(fa)),ea=ea.tracker,f=f.anchorTrackingRadius,ha,ja,ma,na=function(a){O.call(this,c,a)},Y=function(a){return function(b){c.hoverPlotAnchor(this,
b,"DataPlotRollOver",a,c)}},oa=function(a){return function(b){c.hoverPlotAnchor(this,b,"DataPlotRollOut",a,c)}};c.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",B);ia.attr("class","fusioncharts-datalabels");u&&(c.animationCompleteQueue.push({fn:function(){ia.attr({transform:"...t"+-C+","+-F})},scope:c}),ia.attr({transform:"...t"+C+","+F}));ha=fa.line||(fa.line=k.group("line-connector",fa));a.lineShadowLayer=k.group("connector-shadow",ha);fa=a.anchorShadowLayer=k.group("anchor-shadow",
ha);B=a.lineLayer=k.group("connector",ha);ha=a.anchorLayer=k.group("anchors",ha);J=0;for(K=s.length;J<K;J+=1){H=s[J];T=H.marker;w=E=da=t=R=null;ma=a.index+"_"+J;M=H.y;L=H.x;if(null!==M&&null!==L){if(T&&T.enabled){N=H.link;t=H.toolText;$=T.radius;ja=T.shadow;E=r.getAxisPosition(M);w=q.getAxisPosition(L);aa={index:J,link:N,y:H.y,x:H.x,displayValue:H.displayValue,categoryLabel:H.categoryLabel,toolText:H.toolText,id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible};da=T.symbol.split("_");
n=m[J]={index:J,x:L,y:M,value:M};L=M={};H.hoverEffects&&(L={polypath:[da[1]||2,w,E,$,T.startAngle,0],fill:X(T.fillColor),"stroke-width":T.lineWidth,stroke:X(T.lineColor)},ga=H.rolloverProperties,M={polypath:[ga.sides||2,w,E,ga.radius,ga.startAngle,ga.dip],fill:X(ga.fillColor),"stroke-width":ga.lineWidth,stroke:X(ga.lineColor)});da=n.graphic=k.polypath(da[1]||2,w,E,$,T.startAngle,0,ha).attr({fill:X(T.fillColor),ishot:!d,"stroke-width":T.lineWidth,stroke:X(T.lineColor),cursor:N?"pointer":"",visibility:$?
v:"hidden"}).data("alwaysInvisible",!$).data("setRolloverProperties",ga).data("setRolloverAttr",M).data("setRolloutAttr",L).data("anchorRadius",$).data("anchorHoverRadius",ga&&ga.radius).shadow(ja||!1,fa);if(N||d||ga)$=Da($,ga&&ga.radius||0,f),R=n.tracker=k.circle({cx:w,cy:E,r:$,cursor:N?"pointer":"",stroke:e,"stroke-width":T.lineWidth,fill:e,ishot:!0,visibility:v},ea);(R||da).data("eventArgs",aa).data("groupId",ma).click(na).hover(Y(n),oa(n)).tooltip(t)}g&&((void 0===z||null===z&&0===S)&&w&&E&&W.push("M",
w,",",E),w&&E&&W.push("L",w,",",E),z=E);t=n.dataLabel=c.drawPlotLineLabel(a,b,J,w,E)}else g&&0===S&&(z=null),m[J]={chart:c,index:J,x:L,y:M};t&&p.push(t);da&&p.push(da);R&&p.push(R);c.drawTracker&&c.drawTracker.call(c,a,b,J)}W.length&&(h=a.graphic=k.path(W,B).attr({"stroke-dasharray":P,"stroke-width":I,stroke:U,"stroke-linecap":"round","stroke-linejoin":2<I?"round":"miter",visibility:v}).shadow(h.shadow&&H.shadow),B.attr({"clip-rect":l[u?"clip-canvas-init":"clip-canvas"]}),u&&B.animate({"clip-rect":l["clip-canvas"]},
u,"normal"),p.push(h));u&&ha.attr({opacity:0}).animate({opacity:1},u,"normal",c.getAnimationCompleteFn());a.visible=!1!==b.visible;return a},drawPlotLineLabel:function(a,b,c,d,e,f){var h=this.options,k=h.chart,l=this.paper,m=this.layers,n=h.plotOptions.series.dataLabels.style,h=1===k.rotateValues?270:0,p=this.canvasHeight,q=this.canvasTop,r=a.data,s=r[c],v=a.items[c],u=ia(s.valuePosition,"auto").toLowerCase();a=this.logic.defaultSeriesType;var t=v.graphic,B=s.marker,t=B&&B.enabled?t&&"image"==t.type&&
.5*t.attr("height")||B&&B.radius-3:0,t=k.valuePadding+2+t;b=!1===b.visible?"hidden":"visible";B=v.dataLabel;f=f||m.datalabels;switch(u){case "above":c=0;break;case "below":c=1;break;default:m=r[c-1]||{},r=r[c+1]||{},c=c?m.y>s.y?1:(null==m.y&&r.y)>s.y?1:0:0}m=s.displayValue;Ba(m)&&m!==H?(B?h&&B.attr("transform",["r",360-h]):B=v.dataLabel=l.text(f).attr({"class":"fusioncharts-label",text:m,fill:n.color,"text-bound":[n.backgroundColor,n.borderColor,n.borderThickness,n.borderPadding,n.borderRadius,n.borderDash],
direction:k.textDirection,"font-weight":n.fontWeight,"font-style":n.fontStyle,"font-family":n.fontFamily,"font-size":n.fontSize,"line-height":n.lineHeight}),B.attr({title:s.originalText||"",fill:n.color}),v._state&&v._state.labelWidth||(f=B.getBBox(),v._state={labelWidth:f.width,labelHeight:f.height}),k=l=h?v._state.labelWidth:v._state.labelHeight,f=e-q,p=q+p-e,k=k+t+4,q=.5*l+t,/bubble/i.test(a)||(c?p>k?(e+=q,s._valueBelowPoint=1):f>k&&(e-=q,s._valueBelowPoint=0):f>k?(e-=q,s._valueBelowPoint=0):p>
k&&(e+=q,s._valueBelowPoint=1)),B.attr({x:d,y:e,visibility:b}).data("isBelow",s._valueBelowPoint),h&&B.attr("transform","T0,0,R"+h)):B&&B.attr({text:H});return B},drawLabels:function(){for(var a=this.paper,b=this.options,c=b.labels&&b.labels.items&&b.labels.items,d=c&&c.length,e=this.layers.layerAboveDataset,f=this.elements.quadran||(this.elements.quadran=[]),h=this.canvasTop,k=this.canvasLeft,b=b.chart.textDirection,l={right:"end",left:"start",undefined:"start"},m,n,p;d--;)p=c[d],m=p.style,n={fontFamily:m.fontFamily,
fontSize:m.fontSize,lineHeight:m.lineHeight,fontWeight:m.fontWeight,fontStyle:m.fontStyle,fill:m.color},Ba(p.html)&&p.html!==H&&(f[d]=a.text({text:p.html},e).css(n).attr({x:parseInt(m.left,10)+k,y:parseInt(m.top,10)+h,"text-anchor":l[p.textAlign],"vertical-align":p.vAlign,direction:b,"text-bound":[m.backgroundColor,m.borderColor,m.borderThickness,m.borderPadding,m.borderRadius,m.borderDash]}))}},F["renderer.root"]);F("renderer.piebase",{isHovered:!1,getPlotData:function(a,b){var c=this.datasets[0],
d=c.data[a],c=c.userData||(c.userData=[]),e,f;if(c[a])c=c[a];else{c=c[a]={};for(f in d)"object"!==typeof(e=d[f])&&"function"!==typeof e&&0!==f.indexOf("_")&&(c[f]=e);c.value=c.y;c.label=c.name;delete c.y;delete c.total;delete c.doNotSlice;delete c.name;delete c.centerAngle;delete c.showInLegend}c.sliced=b;return c},redrawDataLabels:function(a){var b=a.elements.plots[0];a.placeDataLabels(!0,b.items,b);return{}},sliceInOtherPies:function(a){var b=this.options.series[0],c=b.plot.items,d=c.length,e=0,
f;for(b.enableMultiSlicing=!0;d--;)d!==a&&(f=c[d]).sliced&&++e&&this.plotGraphicClick.call(f);b.enableMultiSlicing=!1;return!!e},plotGraphicClick:function(a){var b=this.graphic||this,c=b.plotItem||b.data("plotItem"),d=c.seriesData,e=c.chart,f=e.logic.chartInstance,h=c.index,k=b.data("eventArgs")||{},l=e.options.series[0].enableMultiSlicing,m=d.data[c.index].doNotSlice,p=c.slicedTranslation,r,s;!d.isRotating&&O.call(b,e,a);if(!(d.isRotating||d.singletonCase||m||(b=!l&&e.sliceInOtherPies(h),(a=c.sliced)&&
b))){if(T&&!u){b=(new Date).getTime();if(c.lastSliceTimeStamp&&400>b-c.lastSliceTimeStamp)return;c.lastSliceTimeStamp=b}b=c.graphic;d=c.connector;l=c.dataLabel;p="object"===typeof p?"t"+p:p;m=c.connectorPath;r=(a?-1:1)*c.transX;s=(a?-1:1)*c.transY;q.raiseEvent("slicingStart",{slicedState:a,dataIndex:"index"in k&&k.index,data:e.getPlotData(h,a)},f);b.animate({transform:a?"t0,0":p},200,"easeIn",function(){q.raiseEvent("slicingEnd",{slicedState:c.sliced,dataIndex:"index"in k&&k.index,data:e.getPlotData(h,
c.sliced)},f)});l&&l.x&&l.animate({x:l.x+(a?0:r)},200,"easeIn");m&&(m[1]+=r,m[2]+=s,m[4]+=r,m[6]+=r,d.animate({path:m},200,"easeIn"));a=c.sliced=!a;b={hcJSON:{series:[]}};b.hcJSON.series[0]={data:p=[]};p[h]={sliced:a};n(f.jsVars._reflowData,b,!0);return a}},plotDragStart:function(a,b,c){var e=this.data("plotItem"),f=e.chart,e=e.seriesData,h=f.options.series,k=-f.datasets[0].startAngle*Mb;e.isRotating=!1;if(h[0].enableRotation){h=f.container;f={left:0,top:0};if(h.getBoundingClientRect)h=h.getBoundingClientRect(),
f.top=h.top+(d.pageYOffset||l.scrollTop||0)-(l.clientTop||0),f.left=h.left+(d.pageXOffset||l.scrollLeft||0)-(l.clientLeft||0);else for(;h;)f.left+=h.offsetLeft||0,f.top+=h.offsetTop||0,h!==l.body&&h!==l.documentElement&&(f.left-=h.scrollLeft||0,f.top-=h.scrollTop||0),h=h.offsetParent;e.chartPosition=f;a=t.call(c,a,b,e.pieCenter,e.chartPosition);e.dragStartAngle=a;e.startingAngleOnDragStart=k}},plotDragEnd:function(a){var b=this.data("plotItem"),c=b.chart,d=b.seriesData,e=-c.datasets[0].startAngle*
Mb,f={hcJSON:{series:[{startAngle:e}]}};c.disposed||(n(c.logic.chartInstance.jsVars._reflowData,f,!0),c.rotate(d,c.options.series[0]));!d.isRotating&&c.plotGraphicClick.call(b,a);d.isRotating&&(setTimeout(function(){d.isRotating=!1},0),q.raiseEvent("RotationEnd",{startingAngle:C(e,!0),changeInAngle:e-d.startingAngleOnDragStart},c.logic.chartInstance));!c.isHovered&&c.onPlotHover(this,!1)},plotDragMove:function(a,b,c,d,e){a=this.data("plotItem");var f=a.chart,h=a.seriesData,k=f.options.series;k[0].enableRotation&&
!h.singletonCase&&(c=t.call(e,c,d,h.pieCenter,h.chartPosition),h.isRotating||(h.dragStartAngle!==c&&(h.isRotating=!0),q.raiseEvent("RotationStart",{startingAngle:C(h.startingAngleOnDragStart,!0)},f.logic.chartInstance)),k[0].startAngle+=c-h.dragStartAngle,h.dragStartAngle=c,h.moveDuration=0,c=(new Date).getTime(),!h._lastTime||h._lastTime+h.timerThreshold<c)&&(setTimeout(function(){f.rotate(h,k[0])},0),h._lastTime=c)},plotRollOver:function(a){var b=this.plotItem||this.data("plotItem"),c=b.chart,d,
e;b.seriesData.isRotating||(O.call(this,c,a,"DataPlotRollOver"),c.onPlotHover(this,!0));c.isHovered=!0;(a=b.innerDiameter)&&(d=b.centerLabelConfig)&&(e=d.label)&&c.drawDoughnutCenterLabel(e,b.center[0],b.center[1],a,a,d,!1)},plotRollOut:function(a){var b=this.plotItem||this.data("plotItem"),c=b.chart,d=c.options.series[0],e,f;b.seriesData.isRotating||(O.call(this,c,a,"DataPlotRollOut"),c.onPlotHover(this,!1));c.isHovered=!1;(a=b.innerDiameter)&&(e=d.centerLabelConfig)&&((f=e.label)||!f)&&c.drawDoughnutCenterLabel(f,
b.center[0],b.center[1],a,a,e,!1)},onPlotHover:function(a,b){var c=a.data("plotItem"),d=c.rolloverProperties,e=b?d.color:c.color,f=b?d.borderWidth:c.borderWidth,h=b?d.borderColor:c.borderColor;d&&c.graphic.attr({fill:X(e),"stroke-width":f,stroke:h})},getEventArgs:function(a){a=a||{};return{datasetName:a.label,datasetIndex:a.originalIndex,id:a.userID,visible:!0,label:a.label,value:a.value,percentValue:a.percentage,tooltext:a.toolText,link:a.link,sliced:a.sliced}},legendClick:function(a){var b=a.chart;
b.elements.plots[0].isRotating=!1;b.plotGraphicClick.call(a)},placeDataLabels:function(){var a=function(a,b){return a.point.value-b.point.value},b=function(a,b){return a.angle-b.angle},c=["start","start","end","end"],d=[-1,1,1,-1],e=[1,1,-1,-1];return function(f,h,k,l){var m=this.options.plotOptions,n=m.pie,p=this.canvasLeft+.5*this.canvasWidth,q=this.canvasTop+.5*this.canvasHeight,r=this.smartLabel,s=m.series.dataLabels,v=s.style,t=ga(Lb(parseFloat(v.lineHeight)),12),u=Ea(s.placeLabelsInside,1===
h.length?!0:!1),m=s.skipOverlapLabels,B=s.manageLabelOverflow,C=s.connectorPadding,F=s.distance,J;J=l&&l.metrics||[p,q,n.size,n.innerSize||0];var K=J[1],H=J[0];l=.5*J[2];var N=[[],[],[],[]],M=this.canvasLeft,z=this.canvasTop,n=this.canvasWidth,F=k.labelsRadius||(k.labelsRadius=l+F),q=p=parseInt(v.fontSize,10),w=q/2,C=[C,C,-C,-C];k=k.labelsMaxInQuadrant||(k.labelsMaxInQuadrant=Ub(F/q));var s=s.isSmartLineSlanted,E=J[3]/2,I,g,O,P,U,S,T,W,X,aa,R,$,ea,da,fa,ha,ia,ja;J=Number.POSITIVE_INFINITY;R=[];I=
[];f||r.setStyle(v);if(1==h.length&&!E&&u)u=h[0],(ea=u.dataLabel)&&ea.show(),u.slicedTranslation=[M,z],ea&&(ea.attr({visibility:fb,align:"middle",transform:["t",H,K]}),ea.x=H);else if(u)ja=E+(l-E)/2,L(h,function(a){(ea=a.dataLabel)&&ea.show();ea&&($=a.angle,aa=K+ja*xa($),S=H+ja*gb($),ea.x=S,ea._x=S,ea.y=aa,a.sliced&&(ia=a.slicedTranslation,fa=ia[0]-M,ha=ia[1]-z,S+=fa,aa+=ha),ea.attr({visibility:fb,align:"middle",transform:["t",S,aa]}))});else{L(h,function(a){(ea=a.dataLabel)&&ea.show();ea&&($=a.angle%
rb,0>$&&($=rb+$),da=0<=$&&$<Eb?1:$<vb?2:$<Ib?3:0,N[da].push({point:a,angle:$}))});for(h=f=4;h--;){if(m&&(v=N[h].length-k,0<v))for(N[h].sort(a),R=N[h].splice(0,v),v=0,E=R.length;v<E;v+=1)u=R[v].point,u.dataLabel.attr({visibility:"hidden"}),u.connector&&u.connector.attr({visibility:"hidden"});N[h].sort(b)}h=Da(N[0].length,N[1].length,N[2].length,N[3].length);v=Da(Ra(h,k)*q,F+q);I=N[0].concat(N[1]);R=N[2].concat(N[3]);for(h=I.length-1;0<=h;h--)u=I[h].point,delete u.clearance,delete u.clearanceShift,
O=pb(v*xa(u.angle)),Math.abs(J-O)<2*t&&(u.clearance=0,I[h+1].point.clearanceShift=t/2),J=O;J=Number.POSITIVE_INFINITY;h=0;for(E=R.length;h<E;h++)u=R[h].point,delete u.clearance,delete u.clearanceShift,O=pb(v*xa(u.angle)),Math.abs(J-O)<2*t&&(u.clearance=0,R[h-1].point.clearanceShift=t/2),J=O;N[1].reverse();for(N[3].reverse();f--;){R=N[f];E=R.length;m||(q=E>k?v/E:p,w=q/2);t=E*q;J=v;for(h=0;h<E;h+=1,t-=q)O=pb(v*xa(R[h].angle)),J<O?O=J:O<t&&(O=t),J=(R[h].oriY=O)-q;I=c[f];E=v-(E-1)*q;J=0;for(h=R.length-
1;0<=h;--h,E+=q)if(u=R[h].point,$=R[h].angle,P=u.sliced,ea=u.dataLabel,O=pb(v*xa($)),O<J?O=J:O>E&&(O=E),J=O+q,t=void 0===u.clearance?2*Lb(ga(parseFloat(u.style.border),12),12):2*Lb(ga(parseFloat(u.style.border),u.clearance)),W=(O+R[h].oriY)/2,O=H+e[f]*F*gb(Xa.asin(W/v)),W*=d[f],W+=K,X=K+l*xa($),U=H+l*gb($),(2>f&&O<U||1<f&&O>U)&&(O=U),S=O+C[f],aa=W-w-2,T=S+C[f],ea.x=T,ea._x=T,B&&(g=1<f?T-this.canvasLeft:this.canvasLeft+n-T,r.setStyle(u.style),t=ga(Lb(parseFloat(u.style.lineHeight)),12)+t,t=r.getSmartText(u.labelText,
g,t),void 0===u.clearance&&t.height>q&&(W+=q),ea.attr({text:t.text,title:t.tooltext||""})),ea.y=aa,P&&(fa=u.transX,ha=u.transY,S+=fa,O+=fa,U+=fa,X+=ha,T+=fa),ea.attr({visibility:fb,"text-anchor":I,vAlign:"middle",x:T,y:W}),t=u.connector)u.connectorPath=u=["M",U,X,"L",s?O:U,W,S,W],t.attr({path:u,visibility:fb})}}}}()},F["renderer.root"])}]);
FusionCharts.register("module",["private","modules.renderer.js-interface",function(){var f=this,t=f.hcLib,C=f.renderer.getRenderer("javascript"),q=t.hasModule,d=t.loadModule,a=t.getMetaSentence,m=t.moduleCmdQueue,F=t.executeWaitingCommands,c=t.injectModuleDependency,l=t.moduleDependencies,b=t.getDependentModuleName,p,H;p=function(c){var d,h,k,l={},m;c=a(c);for(d in f.core.items)d=f.core.items[d],h=d.chartType(),k=d.options.chartTypeSourcePath+h,(h=d.jsVars)&&h.waitingModule&&d.__state.rendering&&
t.needsModule(c.predicate,k)&&(h.waitingModuleError=!0,h=b(k).concat(h.userModules),h.length&&(h=h[h.length-1],l[h]=t.moduleCmdQueue[h]));for(m in l)F(l[m]);f.raiseError(f.core,"11171116151","run","HC-interface~renderer.load","Unable to load required modules and resources: "+c.key)};H=function(a,b,c){var d=a.args,l=a.options;a._chartMessageImageStyle={imageHAlign:d.typeNotSupportedMessageImageHAlign||l.baseChartMessageImageHAlign,imageVAlign:d.typeNotSupportedMessageImageVAlign||l.baseChartMessageImageVAlign,
imageAlpha:d.typeNotSupportedMessageImageAlpha||l.baseChartMessageImageAlpha,imageScale:d.typeNotSupportedMessageImageScale||l.baseChartMessageImageScale};a._chartMessageStyle={color:d.typeNotSupportedMessageColor||l.baseChartMessageColor,fontFamily:d.typeNotSupportedMessageFont||l.baseChartMessageFont,fontSize:d.typeNotSupportedMessageFontSize||l.baseChartMessageFontSize};f.hcLib.createChart(a,b,"stub",c,l.typeNotSupportedMessage)};t.eventList=f.extend(f.legacyEventList,{loaded:"FC_Loaded",dataloaded:"FC_DataLoaded",
rendered:"FC_Rendered",drawcomplete:"FC_DrawComplete",dataxmlinvalid:"FC_DataXMLInvalid",nodatatodisplay:"FC_NoDataToDisplay",exported:"FC_Exported"});t.raiseEvent=f.raiseEventWithLegacy;l.charts=f.extend(l.charts||{},{column2d:0,column3d:0,bar2d:0,bar3d:0,pie2d:0,pie3d:0,line:0,area2d:0,doughnut2d:0,doughnut3d:0,pareto2d:0,pareto3d:0,mscolumn2d:0,mscolumn3d:0,msline:0,msarea:0,msbar2d:0,msbar3d:0,stackedcolumn2d:0,marimekko:0,stackedcolumn3d:0,stackedarea2d:0,stackedcolumn2dline:0,stackedcolumn3dline:0,
stackedbar2d:0,stackedbar3d:0,msstackedcolumn2d:0,mscombi2d:0,mscombi3d:0,mscolumnline3d:0,mscombidy2d:0,mscolumn3dlinedy:0,stackedcolumn3dlinedy:0,msstackedcolumn2dlinedy:0,scatter:0,bubble:0,ssgrid:0,scrollcolumn2d:0,scrollcolumn3d:0,scrollline2d:0,scrollarea2d:0,scrollstackedcolumn2d:0,scrollcombi2d:0,scrollcombidy2d:0,zoomline:0});l.powercharts=f.extend(l.powercharts||{},{spline:0,splinearea:0,msspline:0,mssplinearea:0,mssplinedy:0,multiaxisline:0,multilevelpie:0,waterfall2d:0,msstepline:0,inversemsline:0,
inversemscolumn2d:0,inversemsarea:0,errorbar2d:0,errorscatter:0,errorline:0,logmsline:0,logmscolumn2d:0,logstackedcolumn2d:0,radar:0,dragnode:0,candlestick:0,selectscatter:0,dragcolumn2d:0,dragline:0,dragarea:0,boxandwhisker2d:0,kagi:0,heatmap:0});l.widgets=f.extend(l.widgets||{},{angulargauge:0,bulb:0,cylinder:0,drawingpad:0,funnel:0,hbullet:0,hled:0,hlineargauge:0,vlineargauge:0,pyramid:0,realtimearea:0,realtimecolumn:0,realtimeline:0,realtimelinedy:0,realtimestackedarea:0,realtimestackedcolumn:0,
sparkcolumn:0,sparkline:0,sparkwinloss:0,thermometer:0,vbullet:0,gantt:0,vled:0});l.maps=f.extend(l.maps||{},{});f.extend(C,{render:function(a,d){var h=this.chartType(),k=this.options.chartTypeSourcePath+h,l=this.jsVars,p=this.__state,F=t.chartAPI,n=this.options,N=this.args,B=this.options.showChartLoadingMessage,U,r;U=b(k).concat(l.userModules);l.isResizing&&(l.isResizing=clearTimeout(l.isResizing));l.hcObj&&l.hcObj.destroy&&l.hcObj.destroy();if(F[h]){if(F[p.lastRenderedType]&&p.lastRenderedType!==
h)for(r in f.raiseEvent("chartTypeChanged",{previousType:p.lastRenderedType,newType:h},this),F[p.lastRenderedType].eiMethods)delete this[r];p.lastRenderedType=h;p.lastRenderedSrc=this.src;!l.waitingModuleError&&t.raiseEvent("internal.loaded",{type:h,triggeredModuleLoad:l.drLoadAttempted||l.waitingModule},this,[this.id]);delete l.waitingModule;delete l.waitingModuleError;delete l.drLoadAttempted;f.hcLib.createChart(this,a,h,d)}else{if(h&&q(U)){if(l.drLoadAttempted){f.raiseError(this,11112822001,"run",
"HC-interface~renderer.render","Chart runtimes not loaded even when resource is present");H(this,a,d);return}c(k)&&(U=b(k).concat(l.userModules));l.drLoadAttempted=!0}else{if(!U.length){H(this,a,d);return}if(l.waitingModuleError){H(this,a,d);delete l.waitingModule;delete l.waitingModuleError;return}}(h=m[U[U.length-1]])?(h.push({cmd:"render",obj:this,args:arguments}),l.waitingModule||(l=B?n.PBarLoadingText||n.loadMessage:"",this._chartMessageImageStyle={imageHAlign:N.loadMessageImageHAlign||n.baseChartMessageImageHAlign,
imageVAlign:N.loadMessageImageVAlign||n.baseChartMessageImageVAlign,imageAlpha:N.loadMessageImageAlpha||n.baseChartMessageImageAlpha,imageScale:N.loadMessageImageScale||n.baseChartMessageImageScale},this._chartMessageStyle={color:N.loadMessageColor||n.baseChartMessageColor,fontFamily:N.loadMessageFont||n.baseChartMessageFont,fontSize:N.loadMessageFontSize||n.baseChartMessageFontSize},f.hcLib.createChart(this,a,"stub",void 0,l),C.load.call(this,a,d))):(f.raiseError(this,12080515551,"run","HC-interface~renderer.render",
"Unregistered module in dependentModule definition."),this._chartMessageImageStyle={imageHAlign:N.renderErrorMessageImageHAlign||n.baseChartMessageImageHAlign,imageVAlign:N.renderErrorMessageImageVAlign||n.baseChartMessageImageVAlign,imageAlpha:N.renderErrorMessageImageAlpha||n.baseChartMessageImageAlpha,imageScale:N.renderErrorMessageImageScale||n.baseChartMessageImageScale},this._chartMessageStyle={color:N.renderErrorMessageColor||n.baseChartMessageColor,fontFamily:N.renderErrorMessageFont||n.baseChartMessageFont,
fontSize:N.renderErrorMessageFontSize||n.baseChartMessageFontSize},f.hcLib.createChart(this,a,"stub",void 0,n.renderErrorMessage))}},update:function(a){var b=this.ref,c=this.jsVars,d=c&&c.fcObj,d=c.container||d&&d.options&&d.options.containerElement&&d.options.containerElement.childNodes[0];c.hcObj&&c.hcObj.destroy&&c.hcObj.destroy();c.isResizing&&(c.isResizing=clearTimeout(c.isResizing));void 0===a.error?(delete c.stallLoad,delete c.loadError,this.isActive()?this.src!==this.__state.lastRenderedSrc?
this.render():f.hcLib.createChart(this,d):this.__state.rendering&&!c.waitingModule&&f.hcLib.createChart(this,d)):(this.isActive()&&"function"===typeof b.showChartMessage&&b.showChartMessage("InvalidXMLText"),delete c.loadError)},resize:function(a){var b=this.ref,c,d=this.jsVars;b&&b.resize&&(d.isResizing&&(d.isResizing=clearTimeout(d.isResizing)),d.isResizing=setTimeout(function(){c=f.normalizeCSSDimension(a.width,a.height,b);void 0!==a.width&&(b.style.width=c.width);void 0!==a.height&&(b.style.height=
c.height);b.resize();delete d.isResizing},0))},dispose:function(){var a,b=this.jsVars;b.isResizing&&(b.isResizing=clearTimeout(b.isResizing));b.instanceAPI&&b.instanceAPI.dispose&&(b.instanceAPI.dispose(),delete b.instanceAPI);if(a=this.ref)f.purgeDOM(a),a.parentNode&&a.parentNode.removeChild(a);b.container=null;t.cleanupWaitingCommands(this)},load:function(a,c){var h=this.jsVars,k=this.chartType(),l=f.hcLib.chartAPI[k],k=b(k).concat(h.userModules),m=k[k.length-1];l||!k||k&&0===k.length?(delete h.waitingModule,
a&&H(this,a||this.ref,c)):h.waitingModule||(h.waitingModule=!0,delete h.waitingModuleError,d(k,function(){delete h.waitingModule;F(t.moduleCmdQueue[m])},p,this))}})}]);
FusionCharts.register("module",["private","modules.api.dynamicchartattributes",function(){var f=this;f.extend(f.core,{setChartAttribute:function(t,C){var q,d,a,m;if("string"===typeof t)q=t,t={},t[q]=C;else if(null===t||"object"!==typeof t)return;m=0;if(a=(q=this.getChartData(f.dataFormats.JSON))&&(q.chart||q.graph||q.map)){for(d in t)m+=1,null===t[d]?delete a[d.toLowerCase()]:a[d.toLowerCase()]=t[d];0<m&&("undefined"===typeof a.animation&&(a.animation="0"),this.setChartData(q,f.dataFormats.JSON))}else f.raiseError(this,
"2105141421","run","#setChartAttribute()","Could not retrieve attribute list. Is data ready?")},getChartAttribute:function(t){var C=this.getChartData(f.dataFormats.JSON),C=C&&(C.chart||C.graph||C.map),q,d;if(0===arguments.length||void 0===t||void 0===C)return C;if("string"===typeof t)q=C[t.toString().toLowerCase()];else if(t instanceof Array)for(q={},d=0;d<t.length;d+=1)q[t[d]]=C[t[d].toString().toLowerCase()];else f.raiseError(this,"25081429","param","~getChartAttribute()",'Unexpected value of "attribute"');
return q}},!0)}]);
FusionCharts.register("module",["private","api.linkmanager",function(){var f=this,t=f.FusionChartsDOMInsertModes,C={},q=function(a,d){this.items={};this.root=a;this.parent=d;d instanceof f.core?this.level=this.parent.link.level+1:(C[a.id]=[{}],this.level=0)},d=function(a,d){return(a.options.containerElement===d.options.containerElement||a.options.containerElementId===d.options.containerElementId)&&a.options.insertMode===t.REPLACE};f.policies.link=["link",void 0];q.prototype.configuration=function(){return C[this.root.id][this.level]||
(C[this.root.id][this.level]={})};f.extend(f.core,{configureLink:function(a,d){var q;if(a instanceof Array){for(q=0;q<a.length;q+=1)"object"!==typeof C[this.link.root.id][q]&&(C[this.link.root.id][q]={}),f.extend(C[this.link.root.id][q],a[q]);C[this.link.root.id].splice(a.length)}else"object"===typeof a?("number"!==typeof d&&(d=this.link.level),void 0===C[this.link.root.id][d]&&(C[this.link.root.id][d]={}),f.extend(C[this.link.root.id][d],a)):f.raiseError(this,"25081731","param","~configureLink()",
"Unable to update link configuration from set parameters")}},!0);f.addEventListener("beforeInitialize",function(a){a.sender.link instanceof q?a.sender.link.parent instanceof f.core&&(a.sender.link.parent.link.items[a.sender.id]=a.sender):a.sender.link=new q(a.sender)});f.addEventListener("linkedChartInvoked",function(a,m){var t=a.sender,c=t.clone({dataSource:m.data,dataFormat:m.linkType,link:new q(t.link.root,t)},!0),l=m.alias,b;l&&(!c.typeSource&&c.swfUrl&&(c.typeSource=c.swfUrl.replace(/(.*?)?[^\/]*\.swf.*?/ig,
"$1")),c.type=l);t.args&&0!==parseInt(t.args.animate,10)&&delete c.animate;f.extend(c,t.link.configuration());f.raiseEvent("beforeLinkedItemOpen",{level:t.link.level},t.link.root,void 0,function(){f.core.items[c.id]instanceof f.core&&f.core.items[c.id].dispose();b=new f.core(c);d(b,t)||t.options.overlayButton&&t.options.overlayButton.message||("object"!==typeof t.options.overlayButton&&(t.options.overlayButton={}),t.options.overlayButton.message="Close");b.render();f.raiseEvent("linkedItemOpened",
{level:t.link.level,item:b},t.link.root)})});f.addEventListener("overlayButtonClick",function(a,m){if("LinkManager"===m.id){var q=a.sender,c=q.link.level-1,l=q.link.parent,b=q.link.root;f.raiseEvent("beforeLinkedItemClose",{level:c,item:q},b,q,function(){setTimeout(function(){f.core.items[q.id]&&q.dispose();f.raiseEvent("linkedItemClosed",{level:c},b)},0);l.disposed||l.isActive()||!d(q,l)||l.render()})}});f.addEventListener("Loaded",function(a){a=a.sender;var d;a&&void 0!==a.link&&a.link.root!==a&&
a.link.parent instanceof f.core&&(a.ref&&"function"===typeof a.ref.drawOverlayButton?(d=f.extend({show:!0,id:"LinkManager"},a.link.parent.options.overlayButton),f.extend(d,a.link.parent.link.configuration().overlayButton||{}),a.ref.drawOverlayButton(d)):f.raiseWarning(a,"04091602","run","::LinkManager^Loaded","Unable to draw overlay button on object. -"+a.id))});f.addEventListener("beforeDispose",function(a){var d=a.sender;d&&d.link instanceof q&&(d&&d.link&&d.link.parent instanceof f.core&&d.link.parent.link&&
d.link.parent.link.items&&delete d.link.parent.link.items[a.sender.id],delete C[d.id])})}]);
FusionCharts.register("module",["private","modules.renderer.js-thememanager",function(){var f=this,t,C,q,d=/\s+!important$/,a=/\\!important$/,m=function(a,b){for(var c=b.length,d=-1;c--;)if(a===b[c]){d=c;break}return d},F=function(a,b,c,d,f){var l,n,p,q;f?(d.push(a),f.push(b)):(d=[a],f=[b]);if(b instanceof Array)for(l=0;l<b.length;l+=1){try{n=a[l],p=b[l]}catch(s){continue}if("object"!==typeof p)c&&void 0===p||(a[l]=p);else{if(null===n||"object"!==typeof n)n=a[l]=p instanceof Array?[]:{};q=m(p,f);
-1!==q?n=a[l]=d[q]:F(n,p,c,d,f)}}else for(l in b){try{n=a[l],p=b[l]}catch(r){continue}if(null!==p&&"object"===typeof p)if(q=Object.prototype.toString.call(p),"[object Object]"===q){if(null===n||"object"!==typeof n)n=a[l]={};q=m(p,f);-1!==q?n=a[l]=d[q]:F(n,p,c,d,f)}else"[object Array]"===q?(null!==n&&n instanceof Array||(n=a[l]=[]),q=m(p,f),-1!==q?n=a[l]=d[q]:F(n,p,c,d,f)):a[l]=p;else a[l]=p}return a},c=function(a,b,c){if("object"!==typeof a&&"object"!==typeof b)return null;if("object"!==typeof b||
null===b)return a;"object"!==typeof a&&(a=b instanceof Array?[]:{});F(a,b,c);return a},l=function(b){var c={important:!1,str:""};if(!b)return c;b=b.toString();d.test(b)?(b=b.replace(d,""),c.important=!0):(b=b.replace(a,"!imporant"),c.important=!1);c.str=b;return c},b=function(a,c){var d,f,l,m,n,q,s=0,t=0;for(d in a)if(f=a[d],f instanceof Array)for(q=f.length,n=0;n<q;n+=1){if(m=f[n],"object"===typeof m)if("category"===d)if("true"===m.vline){if(l=c.component("vline",s,m))p(m,l),s+=1}else{if(l=c.component("category",
t,m,q))p(m,l),t+=1}else if(l=c.component(d,n,m,q))p(m,l),b(m,l)}else"object"===typeof f&&(l=c.component(d,null,f))&&(p(f,l),b(f,l))},p=function(a,b){var c=b.getAll(),d,f;for(d in c)f=c[d].toString(),f=l(f),f.important?a[d.toLowerCase()]=f.str:void 0===a[d.toLowerCase()]&&(a[d.toLowerCase()]=f.str)},H=function(a,b){"geo"===b.defaultSeriesType&&s.call(this,a,b)},s=function(a,b){var c=a.sender,d=c.getChartData(f.dataFormats.JSON,!0),l;d.error||((l=d.data.chart.theme)?q.themify(l,c,c.chartType(),d.data,
"geo"===b.defaultSeriesType&&"geo"):c.jsVars.themeObject&&c.jsVars.themeObject.dispose())};t=function(){this.themeStore={}};t.prototype={constructor:t,add:function(a){for(var b=0,c=a.length,d;b<c;b+=1)(d=a[b].name)&&(this.themeStore[d]=a[b])},themify:function(a,b,c,d,l){var m=b.jsVars,n=a.split(","),p=[],q=n.length,t,r;if(q){for(r=0;r<q;r+=1){t=this.themeStore;var F;F=n[r];F=F.replace(/^\s\s*/,"");for(var X=/\s/,aa=F.length;X.test(F.charAt(--aa)););F=F.slice(0,aa+1);(t=t[F])&&p.push(this.evaluateThemeJSON(t.theme,
b,c,l))}p.length?(m.themeObject=new C(p,b,!1,d),this.applyTheme(b),b.addEventListener("chartTypeChanged",s),b.addEventListener("internal.drawstart",H)):f.raiseWarning(b,"14051100501","run","api.themes~themify()",'The theme "'+a+'" requested has not been registered.')}},evaluateThemeJSON:function(a,b,d,f){var l={},m=b.jsVars,n=function(a){var b,d;for(b in a)d=a[b],l[b]=d instanceof Array?c(l[b]||[],d):"object"===typeof d?c(l[b]||{},d):d};d=d||b.chartType();m.themeObject&&a!==m.themeObject&&(m.themeObject.dispose(),
delete m.themeObject);n(a.base);f&&a[f]&&n(a[f]);d&&a[d]&&n(a[d]);return l},applyTheme:function(a){a=a.jsVars.themeObject;var c=a.getThemedJSONData().data;c&&b(c,a)}};C=function(a,b,d,f){this.themeArray=a;this.themeComponents={};this.base={};this.chartInstance=b;this.isChildInstance=Boolean(d);this.themedData=d?null:c({},f);this.length=a.length;b=0;for(d=a.length;b<d;b+=1)this.parse(a[b])};C.prototype={constructor:C,pushTheme:function(a){a&&(this.themeArray.push(a),this.parse(a),this.length+=1)},
popTheme:function(){},parse:function(a){var b=this.themeComponents,d=this.chartInstance,f=this.base,m,p,n;for(p in a)if("string"===typeof a[p]||"number"===typeof a[p])if(f[p]){if(m=l(a[p]),n=l(f[p]),m.important||!n.important)f[p]=a[p]}else f[p]=a[p];else b[p]||(b[p]=[]),m=b[p],a[p]instanceof Array?m.push(c([],a[p])):"object"===typeof a[p]?m.push(new C([a[p]],d,!0)):"function"===typeof a[p]&&m.push(a[p])},merge:function(a){var b=this.base,c=a.base,d=this.themeComponents,f=a.themeComponents,m,n,p;for(p in c)if(m=
l(b[p]),n=l(c[p]),!m.important||n.important)b[p]=c[p];for(p in f)d[p]=d[p]?d[p].concat(f[p]):[].concat(f[p]);this.length+=a.length},get:function(a){return this.base[a]},getAll:function(){return c({},this.base)},component:function(a,b,c,d){var f=this.themeComponents,l=this.chartInstance,m=new C([],l,!0),p,q,s;q=f[a];if(!q)return null;a=0;for(f=q.length;a<f;a+=1)s=q[a],"function"===typeof s?(b=b||0,m.pushTheme(s.call(l,b,c,d))):s instanceof Array?(b=b||0,p=s.length,b%=p,p=s[b],p instanceof C?m.merge(p):
"function"===typeof p?m.pushTheme(p.call(l,b,c,d)):m.pushTheme(p)):s instanceof C?m.merge(s):m.pushTheme(s);return m},getThemedJSONData:function(){return{data:this.themedData}},dispose:function(){var a=this.themeComponents,b=this.chartInstance,c,d;for(c in a)if(d=a[c].length){for(;d--;)a[c][d].dispose&&a[c][d].dispose();delete a[c]}this.isChildInstance||(b.removeEventListener("chartTypeChanged",s),b.removeEventListener("internal.drawstart",H));this.dataWithoutTheme=this.isChildInstance=this.themeArray=
this.base=this.chartInstance=this.themeComponents=null}};q=new t;f.registrars.theme=f.registerTheme=function(a){a&&("[object Array]"!==Object.prototype.toString.call(a)&&(a=[a]),q.add(a))};f.addEventListener("beforeDataUpdate",function(a,b){var c=a.sender,d=f.core.transcodeData(b.data,b.format,f.dataFormats.JSON),l=d.chart&&d.chart.theme;l?q.themify(l,c,c.args.type,d):c.jsVars.themeObject&&(c.jsVars.themeObject.dispose(),delete c.jsVars.themeObject)})}]);
FusionCharts.register("theme",{name:"default",theme:{base:{chart:{labelDisplay:"stagger !important",caption:"Theme Caption \\!important",canvasBgColor:"#56EF22",borderThickness:"5 !important",borderColor:"#E60539",baseFontColor:"#781129"},categories:[{fontColor:"#0F4F40",fontSize:15,category:function(f){return{showLabel:f%2?0:1}},vline:{color:"#000000",thickness:2}}],dataset:[{color:"#8C3146",data:function(f,t){8==f&&(t.value="");return{color:32E3>Number(t.value)?"#8C3146":"#FF0000",alpha:"100"}}}],
trendlines:[{line:function(f){return f?{color:"#ff0000",thickness:3}:{color:"#ffff00",thickness:3}}}]},pie2d:{chart:{bgColor:"#FF0000"}},msline:{chart:{canvasBgColor:"#ff0000"}},geo:{chart:{canvasBgColor:"#0000ff"}},world:{chart:{canvasBgColor:"#00ff00"}}}});
;
/*
 FusionCharts JavaScript Library
 Copyright FusionCharts Technologies LLP
 License Information at <http://www.fusioncharts.com/license>
 FusionCharts JavaScript Library
 Copyright FusionCharts Technologies LLP
 License Information at <http://www.fusioncharts.com/license>

 @version 3.6.0
*/
FusionCharts.register("module", [
    "private", "modules.renderer.js-charts", function() {
        function Aa(a) {
            var p = { left: a.offsetLeft, top: a.offsetTop };
            for (a = a.offsetParent; a;)p.left += a.offsetLeft, p.top += a.offsetTop, a !== Ha.body && a !== Ha.documentElement && (p.left -= a.scrollLeft, p.top -= a.scrollTop), a = a.offsetParent;
            return p
        }

        function oa(a, p) {
            for (var c = [], d = 0, q = a.length; d < q; d++)c[d] = p.call(a[d], a[d], d, a);
            return c
        }

        function na(a, p) {
            var c = p ? 360 : X;
            a = (a || 0) % c;
            return 0 > a ? c + a : a
        }

        function Ka(a, p) { return a <= x ? a : p <= x ? p : p > a ? 0 : p }

        function Na(a, p, c, d, q) { return ca((p - c[1] - d.top) / q, a - c[0] - d.left) }

        function La(a, p, c, d, q, b, t, da, e, r) {
            "object" === typeof a && (p = a.y, c = a.r, d = a.innerR, q = a.radiusYFactor, b = a.depth, t = a.seriesGroup, da = a.renderer, a = a.x);
            if (0 > q || 1 <= q)q = .6;
            a = a || 0;
            p = p || 0;
            c = c || 1;
            d = d || 0;
            b = b || 0;
            this.renderer = da;
            this.hasOnePoint = e;
            this.use3DLighting = r;
            this.cx = a;
            this.cy = p;
            this.rx = c;
            this.ry = c * q;
            this.radiusYFactor = q;
            this.isDoughnut = 0 < d;
            this.innerRx = d;
            this.innerRy = d * q;
            this.depth = b;
            this.leftX = a - c;
            this.rightX = a + c;
            this.leftInnerX = a - d;
            this.rightInnerX =
                a + d;
            this.depthY = p + b;
            this.topY = p - this.ry;
            this.bottomY = this.depthY + this.ry;
            this.bottomBorderGroup = da.group("bottom-border", t).attr({ transform: "t0," + b });
            this.outerBackGroup = da.group("outer-back-Side", t);
            this.slicingWallsBackGroup = da.group("slicingWalls-back-Side", t);
            this.innerBackGroup = da.group("inner-back-Side", t);
            this.innerFrontGroup = da.group("inner-front-Side", t);
            this.slicingWallsFrontGroup = da.group("slicingWalls-front-Side", t);
            this.topGroup = da.group("top-Side", t);
            this.moveCmdArr = ["M"];
            this.lineCmdArr =
            ["L"];
            this.closeCmdArr = ["Z"];
            this.centerPoint = [a, p];
            this.leftPoint = [this.leftX, p];
            this.topPoint = [a, this.topY];
            this.rightPoint = [this.rightX, p];
            this.bottomPoint = [a, p + this.ry];
            this.leftDepthPoint = [this.leftX, this.depthY];
            this.rightDepthPoint = [this.rightX, this.depthY];
            this.leftInnerPoint = [this.leftInnerX, p];
            this.rightInnerPoint = [this.rightInnerX, p];
            this.leftInnerDepthPoint = [this.leftInnerX, this.depthY];
            this.rightInnerDepthPoint = [this.rightInnerX, this.depthY];
            this.pointElemStore = [];
            this.slicingWallsArr =
            [];
            a = ["A", this.rx, this.ry, 0, 0, 1, this.rightX, p];
            c = ["A", this.rx, this.ry, 0, 0, 1, this.leftX, p];
            d = ["A", this.rx, this.ry, 0, 0, 0, this.rightX, this.depthY];
            q = ["A", this.rx, this.ry, 0, 0, 0, this.leftX, this.depthY];
            b = ["A", this.innerRx, this.innerRy, 0, 0, 0, this.rightInnerX, p];
            p = ["A", this.innerRx, this.innerRy, 0, 0, 0, this.leftInnerX, p];
            t = ["A", this.innerRx, this.innerRy, 0, 0, 1, this.rightInnerX, this.depthY];
            da = ["A", this.innerRx, this.innerRy, 0, 0, 1, this.leftInnerX, this.depthY];
            this.isDoughnut ? (this.topBorderPath = this.moveCmdArr.concat(this.leftPoint,
                a, c, this.moveCmdArr, this.leftInnerPoint, b, p), this.topPath = this.moveCmdArr.concat(this.leftPoint, a, c, this.lineCmdArr, this.leftInnerPoint, b, p, this.closeCmdArr), this.innerFrontPath = this.moveCmdArr.concat(this.leftInnerPoint, b, this.lineCmdArr, this.rightInnerDepthPoint, da, this.closeCmdArr), this.innerBackPath = this.moveCmdArr.concat(this.rightInnerPoint, p, this.lineCmdArr, this.leftInnerDepthPoint, t, this.closeCmdArr)) : this.topBorderPath = this.topPath = this.moveCmdArr.concat(this.leftPoint, a, c, this.closeCmdArr);
            this.outerBackPath = this.moveCmdArr.concat(this.leftPoint, a, this.lineCmdArr, this.rightDepthPoint, q, this.closeCmdArr);
            this.outerFrontPath = this.moveCmdArr.concat(this.rightPoint, c, this.lineCmdArr, this.leftDepthPoint, d, this.closeCmdArr);
            this.clipPathforOuter = ["M", this.leftX, this.topY, "L", this.rightX, this.topY, this.rightX, this.bottomY, this.leftX, this.bottomY, "Z"];
            this.clipPathforInner = [
                "M", this.leftInnerX, this.topY, "L", this.rightInnerX, this.topY, this.rightInnerX, this.bottomY, this.leftInnerX, this.bottomY,
                "Z"
            ];
            this.clipPathforNoClip = ["M", this.leftInnerX, this.topY, "L", this.leftInnerX, this.bottomY, "Z"];
            this.colorObjs = []
        }

        var pa = this,
            v = pa.hcLib,
            ia = v.Raphael,
            s = pa.window,
            Ha = s.document,
            K = v.BLANKSTRING,
            Ua = v.createTrendLine,
            g = v.pluck,
            ta = v.getValidValue,
            Ea = v.parseTooltext,
            k = v.pluckNumber,
            Fa = v.getFirstValue,
            Va = v.getDefinedColor,
            ga = v.parseUnsafeString,
            ua = v.FC_CONFIG_STRING,
            ya = v.extend2,
            Ba = v.getDashStyle,
            Y = v.toRaphaelColor,
            Oa = v.toPrecision,
            Sa = v.stubFN,
            ma = v.hasSVG,
            va = v.each,
            Ca = v.TOUCH_THRESHOLD_PIXELS,
            Pa = v.CLICK_THRESHOLD_PIXELS,
            sa = v.plotEventHandler,
            b = v.hasTouch ? Ca : Pa,
            e = "rgba(192,192,192," + (v.isIE ? .002 : 1E-6) + ")",
            h = 8 === s.document.documentMode ? "visible" : "",
            f = Math,
            Z = f.sin,
            P = f.cos,
            ca = f.atan2,
            w = f.round,
            ja = f.min,
            m = f.max,
            L = f.abs,
            A = f.PI,
            D = f.ceil,
            u = f.floor,
            ha = f.sqrt,
            N = A / 180,
            V = 180 / A,
            x = Math.PI,
            Wa = x / 2,
            X = 2 * x,
            Da = x + Wa,
            la = v.graphics.getColumnColor,
            ea = v.getFirstColor,
            $ = v.setLineHeight,
            Ia = v.pluckFontSize,
            Ma = v.getFirstAlpha,
            ka = v.graphics.getDarkColor,
            fa = v.graphics.getLightColor,
            aa = v.graphics.convertColor,
            Qa = v.COLOR_TRANSPARENT,
            Ta = v.POSITION_CENTER,
            Za = v.POSITION_TOP,
            Xa = v.POSITION_BOTTOM,
            $a = v.POSITION_RIGHT,
            ab = v.POSITION_LEFT,
            bb = v.parsexAxisStyles,
            Ya = v.hashify,
            n = v.chartAPI,
            cb = v.graphics.mapSymbolName,
            s = n.singleseries,
            ba = v.COMMASTRING,
            za = v.ZEROSTRING,
            Ja = v.ONESTRING,
            Ga = v.HUNDREDSTRING,
            Ra = v.PXSTRING,
            db = v.COMMASPACE;
        n("column2d", { standaloneInit: !0, friendlyName: "Column Chart", creditLabel: !1, rendererId: "cartesian" }, n.column2dbase);
        n("column3d", {
            friendlyName: "3D Column Chart",
            defaultSeriesType: "column3d",
            defaultPlotShadow: 1,
            is3D: !0,
            fireGroupEvent: !0,
            defaultZeroPlaneHighlighted: !1
        }, n.column2d);
        n("bar2d", { friendlyName: "Bar Chart", isBar: !0, defaultSeriesType: "bar", spaceManager: n.barbase }, n.column2d);
        n("bar3d", { friendlyName: "3D Bar Chart", defaultSeriesType: "bar3d", defaultPlotShadow: 1, fireGroupEvent: !0, is3D: !0, defaultZeroPlaneHighlighted: !1 }, n.bar2d);
        n("line", { friendlyName: "Line Chart", standaloneInit: !0, creditLabel: !1, rendererId: "cartesian" }, n.linebase);
        n("area2d", { friendlyName: "Area Chart", standaloneInit: !0, creditLabel: !1, rendererId: "cartesian" },
            n.area2dbase);
        n("pie2d", {
            friendlyName: "Pie Chart",
            standaloneInit: !0,
            defaultSeriesType: "pie",
            defaultPlotShadow: 1,
            reverseLegend: 1,
            alignCaptionWithCanvas: 0,
            sliceOnLegendClick: !0,
            rendererId: "pie",
            point: function(a, p, c, d, q) {
                a = q[ua];
                var b = this.colorManager,
                    t = a.is3d,
                    da = k(d.plotborderthickness),
                    e = k(da, t ? .1 : 1),
                    r = k(d.enablemultislicing, 1),
                    Q = k(d.use3dlighting, 1),
                    l = Q ? k(d.radius3d, d["3dradius"], 90) : 100,
                    wa = k(d.showzeropies, 1),
                    h = k(d.showpercentintooltip, 1),
                    f = k(d.showlabels, 1),
                    y = k(d.showvalues, 1),
                    n = k(d.showpercentvalues,
                        d.showpercentagevalues, 0),
                    z = g(d.tooltipsepchar, d.hovercapsepchar, db),
                    eb = g(d.labelsepchar, z),
                    R = g(d.plotbordercolor, d.piebordercolor),
                    B = q[ua].numberFormatter,
                    P = c.length,
                    Z = k(d.plotborderdashed, 0),
                    O = k(d.plotborderdashlen, 5),
                    C = k(d.plotborderdashgap, 4),
                    G = k(d.showvalueinlegend, 0),
                    I = k(d.showlabelinlegend, 1),
                    w = k(d.valuebeforelabelinlegend, 0),
                    W = k(d.showvalueaspercentinlegend, 1),
                    H = k(d.reverseplotorder, 0),
                    S = g(d.legendsepchar, ", "),
                    U = q.plotOptions.series.dataLabels.style,
                    T = 0,
                    m = [],
                    u,
                    M,
                    qa,
                    E,
                    F,
                    J,
                    x,
                    D,
                    A,
                    ja,
                    s,
                    X,
                    v,
                    ca,
                    Y,
                    V,
                    L,
                    N,
                    ha,
                    $ = -1;
                L = p.centerLabelConfig = {
                    label: ga(g(d.defaultcenterlabel, "")),
                    font: g(d.centerlabelfont, U.fontFamily),
                    fontSize: k(d.centerlabelfontsize, parseInt(U.fontSize, 10)),
                    color: ea(g(d.centerlabelcolor, d.valuefontcolor, a.inCanvasStyle.color, "555555")),
                    alpha: k(d.centerlabelalpha, 100),
                    bold: k(d.centerlabelbold, U.fontWeight),
                    italic: k(d.centerlabelitalic, U.style),
                    bgColor: g(d.centerlabelbgcolor, ""),
                    bgAlpha: k(d.centerlabelbgalpha, 100),
                    borderColor: g(d.centerlabelbordercolor, U.borderColor),
                    borderAlpha: k(d.centerlabelborderalpha,
                        100),
                    borderThickness: k(d.centerlabelborderthickness, U.borderThickness),
                    borderRadius: k(d.centerlabelborderradius, U.borderRadius),
                    textPadding: k(d.centerlabeltextpadding, U.borderPadding),
                    padding: k(d.centerlabelpadding, 2),
                    bgOval: k(d.centerlabelbgoval, 0),
                    shadow: k(d.showcenterlabelshadow, 0),
                    hoverColor: d.centerlabelhovercolor && ea(g(d.centerlabelhovercolor)),
                    hoverAlpha: k(d.centerlabelhoveralpha),
                    toolText: ga(g(d.centerlabeltooltext, ""))
                };
                100 < l && (l = 100);
                0 > l && (l = 0);
                k(d.showlegend, 0) && (q.legend.enabled = !0, q.legend.reversed =
                    !Boolean(k(d.reverselegend, 0)), p.showInLegend = !0);
                for (M = 0; M < P; M += 1)E = c[M], qa = B.getCleanValue(E.value, !0), null === qa || !wa && 0 === qa || (m.push(E), T += qa);
                0 === T && (m = []);
                p.enableRotation = 1 < m.length ? k(d.enablerotation, 1) : 0;
                p.alphaAnimation = k(d.alphaanimation, 1);
                p.is3D = t;
                p.placeLabelsInside = d.placevaluesinside;
                p.use3DLighting = Q;
                p.pieYScale = k(d.pieyscale, 40);
                1 > p.pieYScale && (p.pieYScale = 1);
                100 <= p.pieYScale && (p.pieYScale = 80);
                p.pieYScale /= 100;
                p.pieSliceDepth = k(d.pieslicedepth, 15);
                1 > p.pieSliceDepth && (p.pieSliceDepth =
                    1);
                p.managedPieSliceDepth = p.pieSliceDepth;
                p.enableMultiSlicing = !!r;
                t && d.showplotborder != Ja && !da && (p.showBorderEffect = 1);
                for (M = m.length - 1; 0 <= M; M -= 1) {
                    E = m[M];
                    qa = B.getCleanValue(E.value, !0);
                    u = ga(g(E.label, E.name, K));
                    P = g(E.color, b.getPlotColor(M));
                    J = g(E.alpha, d.plotfillalpha);
                    x = g(E.bordercolor, R);
                    D = g(E.borderalpha, d.plotborderalpha, d.pieborderalpha);
                    t && (x || void 0 !== D) && (p.showBorderEffect = 0);
                    x = g(x, fa(P, t ? 90 : 25)).split(ba)[0];
                    D = d.showplotborder == za ? za : g(D, J, "80");
                    J = g(J, Ga);
                    wa = { opacity: Math.max(J, D) / 100 };
                    if (c = Boolean(k(E.issliced, d.issliced, 0)))r || (-1 !== $ && (p.data[m.length - $ - 1].sliced = !1), $ = M), a.preSliced = c;
                    da = (Y = k(E.dashed, Z)) ? Ba(g(E.dashlen, O), g(E.dashgap, C), e) : void 0;
                    F = ta(ga(g(E.tooltext, a.tooltext)));
                    s = B.percentValue(qa / T * 100);
                    X = B.dataLabels(qa) || K;
                    ja = 1 === k(E.showlabel, f) ? u : K;
                    A = 1 === (v = k(E.showvalue, y)) ? 1 === n ? s : X : K;
                    ca = ta(ga(E.displayvalue));
                    A = void 0 !== ca && v ? ca : A !== K && ja !== K ? ja + eb + A : g(ja, A);
                    void 0 !== F ? F = Ea(F, [1, 2, 3, 5, 6, 7, 14, 24, 25], {
                        formattedValue: X,
                        label: u,
                        yaxisName: ga(d.yaxisname),
                        xaxisName: ga(d.xaxisname),
                        percentValue: s,
                        sum: B.dataLabels(T),
                        unformattedSum: T
                    }, E, d) : (F = u, v = h ? s : X, F = F != K ? F + z + v : v);
                    v = I ? u : K;
                    G && (V = W ? B.legendPercentValue(qa / T * 100) : B.legendValue(qa), v = w ? V + (v && S + v) : (v && v + S) + V);
                    Y = this.pointHoverOptions(E, p, { plotType: "pie", use3DLighting: Q, color: P, alpha: J, borderWidth: e, borderColor: x, borderAlpha: D, borderDashed: Y, borderDashGap: g(E.dashgap, C), borderDashLen: k(E.dashlen, O), radius3D: l, shadow: wa });
                    u = {
                        label: g((N = E.centerlabel || d.centerlabel) && this.replaceMacros(N, [
                            "\\$value", "\\$percentValue", "\\$displayValue",
                            "\\$label"
                        ], [X, s, void 0 === ca ? "" : ca, u]), ""),
                        font: L.font,
                        fontSize: k(E.centerlabelfontsize, L.fontSize),
                        color: ea(g(E.centerlabelcolor, L.color)),
                        alpha: k(E.centerlabelalpha, L.alpha),
                        bold: k(E.centerlabelbold, L.bold),
                        italic: k(E.centerlabelitalic, L.italic),
                        bgColor: g(E.centerlabelbgcolor, L.bgColor),
                        bgAlpha: k(E.centerlabelbgalpha, L.bgAlpha),
                        borderColor: g(E.centerlabelbordercolor, L.borderColor),
                        borderAlpha: k(E.centerlabelborderalpha, L.borderAlpha),
                        borderThickness: L.borderThickness,
                        borderRadius: L.borderRadius,
                        textPadding: L.textPadding,
                        padding: L.padding,
                        bgOval: L.bgOval,
                        shadow: L.shadow,
                        hoverColor: (ha = g(E.centerlabelhovercolor, L.hoverColor)) && ea(ha),
                        hoverAlpha: k(E.centerlabelhoveralpha, L.hoverAlpha),
                        toolText: g(E.centerlabeltooltext, "")
                    };
                    p.data.push({
                        displayValue: A,
                        style: bb(E, {}, d, U, P),
                        categoryLabel: ja,
                        showInLegend: v !== K,
                        y: qa,
                        name: v,
                        shadow: wa,
                        toolText: F,
                        color: this.getPointColor(P, J, l),
                        _3dAlpha: J,
                        borderColor: aa(x, D),
                        borderWidth: e,
                        link: ta(E.link),
                        sliced: c,
                        dashStyle: da,
                        doNotSlice: g(d.enableslicing, Ja) != Ja,
                        hoverEffects: Y.enabled &&
                            Y.options,
                        rolloverProperties: Y.enabled && Y.rolloverOptions,
                        centerLabelConfig: u
                    })
                }
                H && (p.reversePlotOrder = !0, p.data && p.data.reverse());
                p.valueTotal = T;
                q.legend.enabled = d.showlegend === Ja ? !0 : !1;
                p.startAngle = k(d.startingangle, 0);
                q.chart.startingAngle = g(1 < m.length ? d.startingangle : 0, 0);
                return p
            },
            replaceMacros: function(a, p, c) {
                for (var d = p.length || 0, q; d--;)q = new RegExp(p[d], "gi"), a = a.replace(q, c[d]);
                return a
            },
            containsMacro: function(a, p) {
                for (var c = p.length || 0, d; c--;)if (d = new RegExp(p[c], "gi"), d = a.match(d))return!0;
                return!1
            },
            getPointColor: function(a, p, c) {
                var d, q;
                a = ea(a);
                p = Ma(p);
                100 > c && ma ? (d = Math.floor(85 * (100 - .35 * c)) / 100, d = ka(a, d), q = Math.floor(50 * (100 + c)) / 100, a = fa(a, q), p = { FCcolor: { color: a + ba + d, alpha: p + ba + p, ratio: c + "," + (100 - c), radialGradient: !0, gradientUnits: "userSpaceOnUse" } }) : p = { FCcolor: { color: a + ba + a, alpha: p + ba + p, ratio: "0,100" } };
                return p
            },
            configureAxis: function(a, p) {
                var c = 0, d = a[ua], q = p.chart, b = a.xAxis.labels.style, t, da;
                t = (t = Fa(q.valuebordercolor, K)) ? aa(t, k(q.valueborderalpha, q.valuealpha, 100)) : K;
                b = {
                    fontFamily: g(q.valuefont,
                        b.fontFamily),
                    fontSize: g(q.valuefontsize, parseInt(b.fontSize, 10)) + Ra,
                    lineHeight: b.lineHeight,
                    color: aa(g(q.valuefontcolor, b.color), k(q.valuefontalpha, q.valuealpha, 100)),
                    fontWeight: k(q.valuefontbold) ? "bold" : "normal",
                    fontStyle: k(q.valuefontitalic) ? "italic" : "normal",
                    border: t || q.valuebgcolor ? k(q.valueborderthickness, 1) + "px solid" : void 0,
                    borderColor: t,
                    borderThickness: k(q.valueborderthickness, 1),
                    borderPadding: k(q.valueborderpadding, 2),
                    borderRadius: k(q.valueborderradius, 0),
                    backgroundColor: q.valuebgcolor ?
                        aa(q.valuebgcolor, k(q.valuebgalpha, q.valuealpha, 100)) : K,
                    borderDash: k(q.valueborderdashed, 0) ? Ba(k(q.valueborderdashlen, 4), k(q.valueborderdashgap, 2), k(q.valueborderthickness, 1)) : "none"
                };
                a.plotOptions.series.dataLabels.style = b;
                delete d.x;
                delete d[0];
                delete d[1];
                a.chart.plotBorderColor = a.chart.plotBackgroundColor = Qa;
                d = d.pieDATALabels = [];
                if (1 === a.series.length && (da = a.series[0].data) && 0 < (c = a.series[0].data.length) && a.plotOptions.series.dataLabels.enabled)
                    for (; c--;)
                        da[c] && void 0 !== ta(da[c].displayValue) &&
                            d.push({ text: da[c].displayValue, style: da[c].style })
            },
            spaceManager: function(a, p, c, d) {
                var q = a[ua],
                    b = q.is3d,
                    t = this.name,
                    da = this.colorManager,
                    e = this.smartLabel || q.smartLabel,
                    r = k(q.pieDATALabels && q.pieDATALabels.length, 0),
                    Q = 0,
                    l = p.chart,
                    wa = k(l.managelabeloverflow, 0),
                    h = k(l.slicingdistance),
                    f = q.preSliced || l.enableslicing !== za || l.showlegend === Ja && l.interactivelegend !== za ? L(k(h, 20)) : 0,
                    y = k(l.pieradius, 0),
                    n = k(l.enablesmartlabels, l.enablesmartlabel, 1),
                    z = n ? k(l.skipoverlaplabels, l.skipoverlaplabel, 1) : 0,
                    P = k(l.issmartlineslanted,
                        1),
                    R = r ? k(l.labeldistance, l.nametbdistance, 5) : f,
                    B = k(l.smartlabelclearance, 5);
                c -= a.chart.marginRight + a.chart.marginLeft;
                var Z = d - (a.chart.marginTop + a.chart.marginBottom);
                d = ja(Z, c);
                var w = g(l.smartlinecolor, da.getColor("plotFillColor")), O = k(l.smartlinealpha, 100), C = k(l.smartlinethickness, .7), G = a.plotOptions.series.dataLabels, da = G.style, I = r ? k(parseInt(da.lineHeight, 10), 12) : 0, da = a.series[0] || {}, u = da.pieYScale, W = da.pieSliceDepth;
                d = 0 === y ? .15 * d : y;
                var H = 0, H = 2 * d, S = k("doughnut2d" === t ? 0 : l.placevaluesinside);
                G.connectorWidth =
                    C;
                G.connectorPadding = k(l.connectorpadding, 5);
                G.connectorColor = aa(w, O);
                r && (n && (R = B), R += f);
                B = H + 2 * (I + R);
                Z -= this.titleSpaceManager(a, p, c, m(B < Z ? Z - B : Z / 2, parseFloat(a.title.style.lineHeight, 10)));
                l.showlegend === Ja && (g(l.legendposition, Xa).toLowerCase() !== $a ? Z -= this.placeLegendBlockBottom(a, p, c, Z / 2, !0) : c -= this.placeLegendBlockRight(a, p, c / 3, Z, !0));
                if (1 !== r)for (; r--;)e.setStyle(q.pieDATALabels[r].style), p = e.getOriSize(q.pieDATALabels[r].text), Q = m(Q, p.width);
                0 === y && (b ? (Z -= W, H = ja(c / 2 - Q - f, (Z / 2 - I) / u) - R) : H = ja(c /
                    2 - Q - f, Z / 2 - I) - R, H >= d ? d = H : h || (f = R = m(ja(R - (d - H), f), 10)));
                b && (r = Z - 2 * (d * u + I), W > r && (da.managedPieSliceDepth = W - r));
                a.plotOptions.pie3d.slicedOffset = a.plotOptions.pie.slicedOffset = f;
                a.plotOptions.pie3d.size = a.plotOptions.pie.size = 2 * d;
                a.plotOptions.series.dataLabels.distance = R;
                a.plotOptions.series.dataLabels.isSmartLineSlanted = P;
                a.plotOptions.series.dataLabels.enableSmartLabels = n;
                a.plotOptions.series.dataLabels.skipOverlapLabels = z;
                a.plotOptions.series.dataLabels.manageLabelOverflow = wa;
                a.plotOptions.series.dataLabels.placeLabelsInside =
                    S;
                if ("doughnut2d" === t || "doughnut3d" === t)
                    if (t = k(l.doughnutradius, 0), r = (r = k(l.use3dlighting, 1)) ? k(l.radius3d, l["3dradius"], 50) : 100, 100 < r && (r = 100), 0 > r && (r = 0), l = 0 === t || t >= d ? d / 2 : t, a.plotOptions.pie3d.innerSize = a.plotOptions.pie.innerSize = 2 * l, 0 < r && ma && (l = parseInt(l / d * 100, 10), t = (100 - l) / 2, r = parseInt(t * r / 100, 10), l = l + ba + r + ba + 2 * (t - r) + ba + r, a.series[0] && a.series[0].data))
                        for (wa = a.series[0].data, a = 0, r = wa.length; a < r; a += 1)
                            t = wa[a], t.color.FCcolor && (t.color.FCcolor.ratio = l, t.rolloverProperties.color && (t.rolloverProperties.color.FCcolor.ratio =
                                l))
            },
            creditLabel: !1,
            eiMethods: {
                isPlotItemSliced: function(a) {
                    var p = this.jsVars.hcObj, c, d, q;
                    return p && p.datasets && p.datasets[0] && (c = p.datasets[0].data) && (q = c.length) && c[a = q - a - 1] && (d = c[a].plot) && d.sliced
                },
                slicePlotItem: function(a, p) {
                    var c = this.jsVars.hcObj, d, q, b, t;
                    return c && c.datasets && (d = c.datasets[0]) && (q = d.data) && (t = q.length) && q[a = d.reversePlotOrder ? a : t - a - 1] && (b = q[a].plot) && ((!!p !== b.sliced || void 0 === p) && c.plotGraphicClick.call(b) || b.sliced)
                },
                centerLabel: function(a, p) {
                    var c = this.jsVars.hcObj,
                        d = c.options,
                        q = d.series[0],
                        d = d.plotOptions.pie.innerSize,
                        b = c.canvasLeft + .5 * c.canvasWidth,
                        t = c.canvasTop + .5 * c.canvasHeight,
                        e = q.centerLabelConfig,
                        k;
                    if ("object" !== typeof p)p = e;
                    else for (k in e)void 0 === p[k] && (p[k] = e[k]);
                    p.label = a;
                    q.centerLabelConfig = p;
                    d && c.drawDoughnutCenterLabel(a || "", b, t, d, d, p, !0)
                },
                startingAngle: function(a, p) {
                    var c = this.jsVars.hcObj, d = c.datasets[0].plot, q = "pie" === c.options.chart.defaultSeriesType, b, t = (b = c.datasets[0].startAngle) * (q ? -V : 1) + (0 > (q ? -1 : 1) * b ? 360 : 0);
                    if (!isNaN(a)) {
                        if (d.singletonCase || d.isRotating)return;
                        a += p ? t : 0;
                        q ? ((q = c.options.series[0]).startAngle = -a * N, c.rotate(d, q)) : c.rotate(a);
                        t = a
                    }
                    return w(100 * ((t %= 360) + (0 > t ? 360 : 0))) / 100
                }
            }
        }, s);
        n.pie2d.eiMethods.togglePieSlice = n.pie2d.eiMethods.sliceDataItem = n.pie2d.eiMethods.slicePlotItem;
        n.pie2d.eiMethods.enableSlicingMovement = n.pie2d.eiMethods.enablelink = function() { pa.raiseWarning(this, "1301081430", "run", "JSRenderer~enablelink()", "Method deprecated.") };
        n("pie3d", {
            friendlyName: "3D Pie Chart",
            defaultSeriesType: "pie3d",
            rendererId: "pie3d",
            creditLabel: !1,
            fireGroupEvent: !0,
            getPointColor: function(a) { return a },
            defaultPlotShadow: 0
        }, n.pie2d);
        n("doughnut2d", {
            friendlyName: "Doughnut Chart",
            getPointColor: function(a, p, c) {
                var d;
                a = ea(a);
                p = Ma(p);
                100 > c && ma ? (d = ka(a, u(100 * (85 - .2 * (100 - c))) / 100), a = fa(a, u(100 * (100 - .5 * c)) / 100), p = { FCcolor: { color: d + "," + a + "," + a + "," + d, alpha: p + "," + p + "," + p + "," + p, radialGradient: !0, gradientUnits: "userSpaceOnUse", r: c } }) : p = { FCcolor: { color: a + "," + a, alpha: p + "," + p, ratio: "0,100" } };
                return p
            }
        }, n.pie2d);
        n("doughnut3d", {
            friendlyName: "3D Doughnut Chart",
            defaultSeriesType: "pie3d",
            rendererId: "pie3d",
            fireGroupEvent: !0,
            getPointColor: n.pie3d,
            defaultPlotShadow: 0
        }, n.doughnut2d);
        n("pareto2d", {
            standaloneInit: !0,
            friendlyName: "Pareto Chart",
            point: function(a, p, c, d, q) {
                a = c.length;
                var b = 0,
                    t = 0,
                    e = {},
                    h = this.colorManager,
                    r = /3d$/.test(q.chart.defaultSeriesType),
                    Q = this.isBar,
                    l = g(360 - d.plotfillangle, 90),
                    wa = g(d.showplotborder, r ? za : Ja) === Ja ? r ? 1 : k(d.plotborderthickness, 1) : 0,
                    f = q.chart.useRoundEdges,
                    n = g(d.tooltipsepchar, ", "),
                    y = g(d.plotbordercolor, h.getColor("plotBorderColor")).split(ba)[0],
                    Z = d.showplotborder ==
                        za ? za : g(d.plotborderalpha, d.plotfillalpha, Ga),
                    z = q.xAxis,
                    P = k(d.showcumulativeline, 1),
                    R = q[ua],
                    B = R.axisGridManager,
                    w = R.x,
                    m = d.showtooltip != za,
                    O = [],
                    C = k(d.use3dlighting, 1),
                    G = q[ua].numberFormatter,
                    I = k(d.showlinevalues, d.showvalues),
                    u = k(d.plotborderdashed, 0),
                    W,
                    H = k(d.plotborderdashlen, 5),
                    S = k(d.plotborderdashgap, 4),
                    U = ga(d.xaxisname),
                    T = ga(d.yaxisname),
                    x = R.numberFormatter,
                    D = p,
                    M,
                    qa,
                    E,
                    F,
                    J,
                    A,
                    v,
                    ja,
                    L,
                    s,
                    X,
                    ca,
                    Y,
                    V,
                    N,
                    ha,
                    $,
                    ka,
                    fa,
                    ra,
                    aa,
                    na,
                    Da,
                    ia,
                    Z = r ? d.showplotborder ? Z : za : Z,
                    y = r ? g(d.plotbordercolor, "#FFFFFF") : y;
                E = k(d.useplotgradientcolor,
                    1) ? Va(d.plotgradientcolor, h.getColor("plotGradientColor")) : K;
                for (N = qa = 0; qa < a; qa += 1)ra = c[qa], c[qa].vline ? B.addVline(z, ra, N, q) : (M = G.getCleanValue(ra.value, !0), null !== M && (t += ra.value = M, O.push(ra), N += 1));
                a = O.length;
                O.sort(function(a, c) { return c.value - a.value });
                P && 0 < t ? (s = k(d.linedashed, 0), aa = ea(g(d.linecolor, h.getColor("plotBorderColor"))), e = g(d.linealpha, 100), X = k(d.linedashlen, 5), F = k(d.linedashgap, 4), qa = k(d.linethickness, 2), Y = { opacity: e / 100 }, fa = g(d.valueposition, "auto"), V = k(d.drawanchors, d.showanchors),
                    void 0 === V && (V = e != za), $ = k(d.anchorborderthickness, 1), ka = k(d.anchorsides, 0), W = k(d.anchorradius, 3), ha = ea(g(d.anchorbordercolor, aa)), M = ea(g(d.anchorbgcolor, h.getColor("anchorBgColor"))), N = Ma(g(d.anchoralpha, Ga)), c = Ma(g(d.anchorbgalpha, N)) * N / 100, s = s ? Ba(X, F, qa) : void 0, F = Boolean(k(ra.anchorshadow, d.anchorshadow, 0)), X = this.pointHoverOptions(ra, p, {
                        plotType: "anchor",
                        anchorBgColor: M,
                        anchorAlpha: N,
                        anchorBgAlpha: c,
                        anchorAngle: g(d.anchorstartangle, 90),
                        anchorBorderThickness: $,
                        anchorBorderColor: ha,
                        anchorBorderAlpha: N,
                        anchorSides: ka,
                        anchorRadius: W,
                        shadow: ca
                    }), e = { yAxis: 1, data: [], type: "line", color: { FCcolor: { color: aa, alpha: e } }, lineWidth: qa, marker: { enabled: V, shadow: F && 1 <= W ? { opacity: N / 100 } : !1, fillColor: { FCcolor: { color: M, alpha: c } }, lineColor: { FCcolor: { color: ha, alpha: N } }, lineWidth: $, radius: W, symbol: cb(ka), startAngle: g(d.anchorstartangle, 90) } }, D = [D, e], R[1] || (R[1] = {}), R[1].stacking100Percent = !0) : ("1" !== d.showsecondarylimits && (d.showsecondarylimits = "0"), "1" !== d.showdivlinesecondaryvalue && (d.showdivlinesecondaryvalue = "0"));
                R[1] || (R[1] = {});
                R[1].stacking100Percent = !0;
                for (qa = 0; qa < a; qa += 1)
                    ra = O[qa], ca = k(ra.showlabel, d.showlabels, 1), c = ga(ca ? Fa(ra.label, ra.name) : K), v = g(ra.color, h.getPlotColor()), B.addXaxisCat(z, qa, qa, c, ra, {}, d, v), b += M = ra.value, F = k(ra.dashed, u), J = g(ra.dashgap, S), A = g(ra.dashlen, H), ja = g(ra.alpha, d.plotfillalpha, Ga), L = g(ra.ratio, d.plotfillratio), ca = { opacity: ja / 100 }, na = g(ra.alpha, Z) + K, aa = la(v + ba + E.replace(/,+?$/, ""), ja, L, l, f, y + K, na + K, Q, r), W = F ? Ba(A, J, wa) : "none", N = b / t * 100, $ = G.percentValue(N), ha = null === M ? M : x.dataLabels(M),
                        ka = ta(ga(ra.displayvalue)), ka = k(ra.showvalue, R.showValues) ? void 0 !== ka ? ka : ha : K, R.showTooltip ? void 0 !== (V = ta(ga(g(ra.tooltext, R.tooltext)))) ? (Da = { formattedValue: ha, label: c, yaxisName: T, xaxisName: U, cumulativeValue: b, cumulativeDataValue: x.dataLabels(b), cumulativePercentValue: $, sum: x.dataLabels(t), unformattedSum: t }, ia = [1, 2, 3, 5, 6, 7, 20, 21, 22, 23, 24, 25], V = Ea(V, ia, Da, ra, d)) : V = null === ha ? !1 : c !== K ? c + R.tooltipSepChar + ha : ha : V = K, J = this.pointHoverOptions(ra, p, {
                            plotType: "column",
                            is3d: r,
                            isBar: Q,
                            use3DLighting: C,
                            isRoundEdged: f,
                            color: v,
                            gradientColor: E,
                            alpha: ja,
                            ratio: L,
                            angle: l,
                            borderWidth: wa,
                            borderColor: y,
                            borderAlpha: na,
                            borderDashed: F,
                            borderDashGap: J,
                            borderDashLen: A,
                            shadow: ca
                        }), F = g(ra.link), p.data.push({ link: F, toolText: V, displayValue: ka, categoryLabel: c, y: M, shadow: ca, color: aa[0], borderColor: aa[1], borderWidth: wa, use3DLighting: C, dashStyle: W, tooltipConstraint: this.tooltipConstraint, hoverEffects: J.enabled && J.options, rolloverProperties: J.enabled && J.rolloverOptions }), this.pointValueWatcher(q, M), P && (M = ta(ga(g(ra.cumulativeplottooltext,
                            d.cumulativeplottooltext))), ca = 1 == I ? $ : 0 === I || ka === K ? K : $, V = m ? void 0 !== M ? Ea(M, ia || [1, 2, 3, 5, 6, 7, 20, 21, 22, 23, 24, 25], Da || { formattedValue: ha, label: c, yaxisName: T, xaxisName: U, cumulativeValue: b, cumulativeDataValue: x.dataLabels(b), cumulativePercentValue: $, sum: x.dataLabels(t), unformattedSum: t }, ra, d) : (c !== K ? c + n : K) + $ : K, e.data.push({
                            shadow: Y,
                            color: e.color,
                            marker: e.marker,
                            y: N,
                            toolText: V,
                            displayValue: ca,
                            valuePosition: fa,
                            categoryLabel: c,
                            link: F,
                            dashStyle: s,
                            hoverEffects: X.enabled && X.options,
                            rolloverProperties: X.enabled &&
                                X.rolloverOptions
                        }));
                w.catCount = a;
                return D
            },
            defaultSeriesType: "column",
            isDual: !0,
            creditLabel: !1,
            rendererId: "cartesian"
        }, s);
        n("pareto3d", { friendlyName: "3D Pareto Chart", defaultSeriesType: "column3d", fireGroupEvent: !0, defaultPlotShadow: 1, is3D: !0 }, n.pareto2d);
        n("mscolumn2d", { standaloneInit: !0, friendlyName: "Multi-series Column Chart", creditLabel: !1, rendererId: "cartesian" }, n.mscolumn2dbase);
        n("mscolumn3d", {
            defaultSeriesType: "column3d",
            friendlyName: "Multi-series 3D Column Chart",
            defaultPlotShadow: 1,
            fireGroupEvent: !0,
            is3D: !0,
            defaultZeroPlaneHighlighted: !1
        }, n.mscolumn2d);
        n("msbar2d", { friendlyName: "Multi-series Bar Chart", isBar: !0, defaultSeriesType: "bar", spaceManager: n.barbase }, n.mscolumn2d);
        n("msbar3d", { defaultSeriesType: "bar3d", friendlyName: "Multi-series 3D Bar Chart", fireGroupEvent: !0, defaultPlotShadow: 1, is3D: !0, defaultZeroPlaneHighlighted: !1 }, n.msbar2d);
        n("msline", { standaloneInit: !0, friendlyName: "Multi-series Line Chart", creditLabel: !1, rendererId: "cartesian" }, n.mslinebase);
        n("msarea", {
            standaloneInit: !0,
            friendlyName: "Multi-series Area Chart",
            creditLabel: !1,
            rendererId: "cartesian"
        }, n.msareabase);
        n("stackedcolumn2d", { friendlyName: "Stacked Column Chart", isStacked: !0 }, n.mscolumn2d);
        n("stackedcolumn3d", { friendlyName: "3D Stacked Column Chart", isStacked: !0 }, n.mscolumn3d);
        n("stackedbar2d", { friendlyName: "Stacked Bar Chart", isStacked: !0 }, n.msbar2d);
        n("stackedbar3d", { friendlyName: "3D Stacked Bar Chart", isStacked: !0 }, n.msbar3d);
        n("stackedarea2d", { friendlyName: "Stacked Area Chart", isStacked: !0, areaAlpha: 100, showSum: 0 }, n.msarea);
        n("marimekko", {
                friendlyName: "Marimekko Chart",
                isValueAbs: !0,
                distributedColumns: !0,
                isStacked: !0,
                xAxisMinMaxSetter: Sa,
                postSeriesAddition: function(a, p) {
                    var c = a[ua],
                        d = 0,
                        b = a.xAxis,
                        e = 100 / c.marimekkoTotal,
                        t = [],
                        da = a.series,
                        h = 0,
                        r = ya({}, a.plotOptions.series.dataLabels.style),
                        Q = parseInt(r.fontSize, 10),
                        l = k(p.chart.plotborderthickness, 1),
                        wa = a.chart.rotateValues,
                        f = k(p.chart.rotatexaxispercentvalues, 0),
                        n = -.5 * l - (l % 2 + (f ? 1 : 0) + !a.chart.plotBorderWidth),
                        y = f ? Q / 2 * 1.2 : 0,
                        Z = wa ? 270 : 0,
                        z = c[0],
                        P = z.stacking100Percent,
                        R = !P,
                        B = c.inCanvasStyle,
                        g = this.numberFormatter,
                        m = p.categories &&
                            p.categories[0] && p.categories[0].category || [],
                        O = 0,
                        C = [],
                        G,
                        I,
                        x,
                        W,
                        H,
                        S,
                        U,
                        T,
                        A,
                        v,
                        l = [];
                    c.isXYPlot = !0;
                    c.distributedColumns = !0;
                    b.min = 0;
                    b.max = 100;
                    b.labels.enabled = !1;
                    b.gridLineWidth = 0;
                    b.alternateGridColor = Qa;
                    G = z.stack;
                    p.chart.interactivelegend = "0";
                    z = 0;
                    for (I = a.xAxis.plotLines.length; z < I; z += 1)x = b.plotLines[z], x.isGrid && (x.isCat = !0, t[x.value] = x, x._hideLabel = !0);
                    for (z = I = 0; z < m.length; z += 1)m[z].vline || (O += C[I] = g.getCleanValue(m[z].widthpercent || 0), I += 1);
                    x = G.floatedcolumn && G.floatedcolumn[0] || [];
                    if (100 === O && (x && x.length) !==
                        I)for (; I--;)x[I] || (x[I] = { p: null });
                    O = w(O);
                    if (x)
                        for (H = 0, I = x.length; H < I;) {
                            v = x[H];
                            d += W = v && v.p || 0;
                            U = 100 === O ? C[H] : W * e;
                            S = h + U / 2;
                            T = h + U;
                            l.push(T);
                            for (z = 0; z < da.length; z += 1)
                                if (a.series[z].visible = !0, m = a.series[z].data[H], m._FCX = h, m._FCW = U, A = g.percentValue(m.y / W * 100), m.toolText = Ea(m.toolText, [14, 24, 25, 111, 112], { xAxisPercentValue: g.percentValue(U), percentValue: A, sum: g.dataLabels(W), unformattedSum: W }), P) {
                                    if (m.y || 0 === m.y)G = m.y / W * 100, m.y = G, m.showPercentValues && (m.displayValue = A);
                                    if (m.previousY || 0 === m.previousY)
                                        m.previousY =
                                            m.previousY / W * 100
                                }
                            c.showStackTotal && a.xAxis.plotLines.push({ value: S, width: 0, isVline: R, isTrend: !R, _isStackSum: 1, zIndex: 4, label: { align: Ta, textAlign: Ta, rotation: Z, style: r, verticalAlign: Za, offsetScale: R ? 0 > W ? v.n : v.p : void 0, offsetScaleIndex: 0, y: 0 > W ? 270 === wa ? 4 : Q : -4, x: 0, text: g.yAxis(Oa(W, 10)) } });
                            t[H] && (t[H].value = S, t[H]._weight = U, t[H]._hideLabel = !1);
                            H += 1;
                            c.showXAxisPercentValues && H < I && a.xAxis.plotLines.push({
                                value: T,
                                width: 0,
                                isVine: !0,
                                label: {
                                    align: Ta,
                                    textAlign: f ? ab : Ta,
                                    rotation: f ? 270 : 0,
                                    backgroundColor: "#ffffff",
                                    backgroundOpacity: 1,
                                    borderWidth: "1px",
                                    borderType: "solid",
                                    borderColor: B.color,
                                    style: { color: B.color, fontSize: B.fontSize, fontFamily: B.fontFamily, lineHeight: B.lineHeight },
                                    verticalAlign: Xa,
                                    y: n,
                                    x: y,
                                    text: this.numberFormatter.percentValue(T)
                                },
                                zIndex: 5
                            });
                            h = T
                        }
                    H = 0;
                    for (I = t.length; H < I; H += 1)t[H] && t[H]._hideLabel && (t[H].value = null);
                    z = 0;
                    for (I = a.xAxis.plotLines.length; z < I; z += 1)if (x = b.plotLines[z], x.isVline && !x._isStackSum && (c = x.value))c -= .5, d = l[u(c)], e = l[D(c)], x.value = d + (e - d) * (c - u(c))
                },
                defaultSeriesType: "floatedcolumn"
            },
            n.stackedcolumn2d);
        n("msstackedcolumn2d", {
            friendlyName: "Multi-series Stacked Column Chart",
            series: function(a, p, c) {
                var d, b, e, t, da = p[ua], h = 0, r, Q;
                r = [];
                var l;
                p.legend.enabled = Boolean(k(a.chart.showlegend, 1));
                if (a.dataset && 0 < a.dataset.length) {
                    this.categoryAdder(a, p);
                    d = 0;
                    for (b = a.dataset.length; d < b; d += 1)
                        if (l = a.dataset[d].dataset)
                            for (e = 0, t = l.length; e < t; e += 1, h += 1)
                                r = { hoverEffects: this.parseSeriesHoverOptions(a, p, l[e], c), visible: !k(l[e].initiallyhidden, 0), data: [], numColumns: b, columnPosition: d }, Q = Math.min(da.oriCatTmp.length,
                                    l[e].data && l[e].data.length), r = this.point(c, r, l[e], a.chart, p, Q, h, d), p.series.push(r);
                    if (this.isDual && a.lineset && 0 < a.lineset.length)for (e = 0, t = a.lineset.length; e < t; e += 1, h += 1)d = a.lineset[e], r = { hoverEffects: this.parseSeriesHoverOptions(a, p, d, c), visible: !k(d.initiallyhidden, 0), data: [], yAxis: 1, type: "line" }, Q = Math.min(da.oriCatTmp.length, d.data && d.data.length), p.series.push(n.msline.point.call(this, "msline", r, d, a.chart, p, Q, h));
                    this.configureAxis(p, a);
                    a.trendlines && Ua(a.trendlines, p.yAxis, p[ua], this.isDual,
                        this.isBar)
                }
            },
            postSpaceManager: function(a, p, c) {
                var d = a[ua], b, e, t;
                n.base.postSpaceManager.call(this);
                if (this.isStacked && d.showStackTotal && (b = a.chart, a = (p = a.xAxis) && p.plotLines, b = c - b.marginLeft - b.marginRight, c = d.plotSpacePercent, d = d[0].stack, d = d.column && d.column.length, e = (1 - 2 * c) / d, p = b / (p.max - p.min), 50 < p * e && .1 == c))for (p = 50 / p, c = a && a.length, d = -((d - 1) / 2) * p, t = 0; t < c; t += 1)e = a[t], e._isStackSum && (b = e._catPosition + (d + p * e._stackIndex), e.value = b)
            }
        }, n.stackedcolumn2d);
        n("mscombi2d", {
            friendlyName: "Multi-series Combination Chart",
            standaloneInit: !0,
            creditLabel: !1,
            rendererId: "cartesian"
        }, n.mscombibase);
        n("mscombi3d", {
            friendlyName: "Multi-series 3D Combination Chart", series: n.mscombi2d.series,
            eiMethods: function(a) {
                var p = {};
                va(a.split(","), function(a) { p[a] = function() { pa.raiseWarning(this, "1301081430", "run", "JSRenderer~" + a + "()", "Method not applicable.") } });
                return p
            }("view2D,view3D,resetView,rotateView,getViewAngles,fitToStage")
        }, n.mscolumn3d);
        n("mscolumnline3d", { friendlyName: "Multi-series Column and Line Chart" }, n.mscombi3d);
        n("stackedcolumn2dline",
        { friendlyName: "Stacked Column and Line Chart", isStacked: !0, stack100percent: 0 }, n.mscombi2d);
        n("stackedcolumn3dline", { friendlyName: "Stacked 3D Column and Line Chart", isStacked: !0, stack100percent: 0 }, n.mscombi3d);
        n("mscombidy2d", { friendlyName: "Multi-series Dual Y-Axis Combination Chart", isDual: !0, secondarySeriesType: void 0 }, n.mscombi2d);
        n("mscolumn3dlinedy", { friendlyName: "Multi-series 3D Column and Line Chart", isDual: !0, secondarySeriesType: "line" }, n.mscolumnline3d);
        n("stackedcolumn3dlinedy", {
            friendlyName: "Stacked 3D Column and Line Chart",
            isDual: !0,
            secondarySeriesType: "line"
        }, n.stackedcolumn3dline);
        n("msstackedcolumn2dlinedy", { friendlyName: "Multi-series Dual Y-Axis Stacked Column and Line Chart", isDual: !0, stack100percent: 0, secondarySeriesType: "line" }, n.msstackedcolumn2d);
        n("scrollcolumn2d", { friendlyName: "Scrollable Multi-series Column Chart", postSeriesAddition: n.scrollbase.postSeriesAddition, tooltipConstraint: "plot", canvasborderthickness: 1, avgScrollPointWidth: 40 }, n.mscolumn2d);
        n("scrollline2d", {
            friendlyName: "Scrollable Multi-series Line Chart",
            postSeriesAddition: n.scrollbase.postSeriesAddition,
            tooltipConstraint: "plot",
            canvasborderthickness: 1,
            avgScrollPointWidth: 75
        }, n.msline);
        n("scrollarea2d", { friendlyName: "Scrollable Multi-series Area Chart", postSeriesAddition: n.scrollbase.postSeriesAddition, tooltipConstraint: "plot", canvasborderthickness: 1, avgScrollPointWidth: 75 }, n.msarea);
        n("scrollstackedcolumn2d", {
            friendlyName: "Scrollable Stacked Column Chart",
            postSeriesAddition: function(a, p, c, d) {
                n.base.postSeriesAddition.call(this, a, p, c, d);
                n.scrollbase.postSeriesAddition.call(this,
                    a, p, c, d)
            },
            canvasborderthickness: 1,
            tooltipConstraint: "plot",
            avgScrollPointWidth: 75
        }, n.stackedcolumn2d);
        n("scrollcombi2d", { friendlyName: "Scrollable Combination Chart", postSeriesAddition: n.scrollbase.postSeriesAddition, tooltipConstraint: "plot", canvasborderthickness: 1, avgScrollPointWidth: 40 }, n.mscombi2d);
        n("scrollcombidy2d", { friendlyName: "Scrollable Dual Y-Axis Combination Chart", postSeriesAddition: n.scrollbase.postSeriesAddition, tooltipConstraint: "plot", canvasborderthickness: 1, avgScrollPointWidth: 40 },
            n.mscombidy2d);
        n("scatter", { friendlyName: "Scatter Chart", isXY: !0, standaloneInit: !0, defaultSeriesType: "scatter", defaultZeroPlaneHighlighted: !1, creditLabel: !1 }, n.scatterbase);
        n("bubble", {
            friendlyName: "Bubble Chart",
            standaloneInit: !0,
            standaloneInut: !0,
            defaultSeriesType: "bubble",
            rendererId: "bubble",
            point: function(a, p, c, d, b) {
                a = k(d.ignoreemptydatasets, 0);
                var e = !1, t = this.colorManager, da, h, r, Q, l, f, n, Z, y, P, z, m, R, B, x, w, O = k(c.showvalues, b[ua].showValues);
                da = k(d.bubblescale, 1);
                var C = g(d.negativecolor, "FF0000"),
                    G = b.plotOptions.bubble,
                    I = this.numberFormatter,
                    u = p._showRegression = k(c.showregressionline, d.showregressionline, 0),
                    W,
                    H,
                    S,
                    U;
                p.name = ta(c.seriesname);
                r = Boolean(k(c.drawanchors, c.showanchors, d.drawanchors, 1));
                Z = g(c.plotfillalpha, c.bubblefillalpha, d.plotfillalpha, Ga);
                y = k(c.showplotborder, d.showplotborder, 1);
                P = ea(g(c.plotbordercolor, d.plotbordercolor, "666666"));
                z = g(c.plotborderthickness, d.plotborderthickness, 1);
                m = g(c.plotborderalpha, d.plotborderalpha, "95");
                y = 1 === y ? z : 0;
                t = g(c.color, c.plotfillcolor, d.plotfillcolor,
                    t.getPlotColor());
                p.marker = { enabled: r, fillColor: this.getPointColor(t, Ga), lineColor: aa(P, y ? m : 0), lineWidth: y, symbol: "circle" };
                if (z = c.data) {
                    w = z.length;
                    G.bubbleScale = da;
                    if (0 === k(c.includeinlegend) || void 0 === p.name)p.showInLegend = !1;
                    u && (p.events = { hide: this.hideRLine, show: this.showRLine }, W = { sumX: 0, sumY: 0, sumXY: 0, sumXsqure: 0, sumYsqure: 0, xValues: [], yValues: [] }, H = k(c.showyonx, d.showyonx, 1), S = ea(g(c.regressionlinecolor, d.regressionlinecolor, t)), U = k(c.regressionlinethickness, d.regressionlinethickness, 1), da =
                        Ma(k(c.regressionlinealpha, d.regressionlinealpha, 100)), S = aa(S, da));
                    for (h = 0; h < w; h += 1)
                    (Q = z[h]) ? (da = I.getCleanValue(Q.y), R = I.getCleanValue(Q.x), B = I.getCleanValue(Q.z, !0), null === da ? p.data.push({ y: null, x: R }) : (e = !0, n = 0 !== k(d.use3dlighting, Q.is3d, c.is3d, d.is3d), l = ea(g(Q.color, 0 > Q.z ? C : t)), f = g(Q.alpha, Z), x = this.getPointStub(Q, da, R, b, c, O), l = n ? this.getPointColor(l, f) : { FCcolor: { color: l, alpha: f } }, null !== B && (G.zMax = G.zMax > B ? G.zMax : B, G.zMin = G.zMin < B ? G.zMin : B), Q = this.pointHoverOptions(Q, p, {
                        plotType: "bubble",
                        is3d: n,
                        seriesAnchorSymbol: "circle",
                        color: l,
                        negativeColor: C,
                        alpha: f,
                        borderWidth: y,
                        borderColor: P,
                        borderAlpha: m,
                        shadow: !1
                    }), p.data.push({ y: da, x: R, z: B, displayValue: x.displayValue, toolText: x.toolText, link: x.link, hoverEffects: Q.enabled && Q.options, rolloverProperties: Q.enabled && Q.rolloverOptions, marker: { enabled: r, fillColor: l, lineColor: { FCcolor: { color: P, alpha: m } }, lineWidth: y, symbol: "circle" } }), this.pointValueWatcher(b, da, R, u && W))) : p.data.push({ y: null });
                    u && (c = {
                        type: "line",
                        color: S,
                        showInLegend: !1,
                        lineWidth: U,
                        enableMouseTracking: !1,
                        marker: { enabled: !1 },
                        data: this.getRegressionLineSeries(W, H, w),
                        zIndex: 0
                    }, p = [p, c])
                }
                a && !e && (p.showInLegend = !1);
                return p
            },
            getPointStub: function(a, p, c, d, b, e) {
                var t = this.dataObj.chart;
                d = d[ua];
                p = null === p ? p : d.numberFormatter.dataLabels(p);
                var da, h = d.tooltipSepChar, r = ta(ga(g(a.tooltext, b.plottooltext, d.tooltext)));
                d.showTooltip ? void 0 !== r ? b = Ea(r, [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 118], { yDataValue: p, xDataValue: d.numberFormatter.xAxis(c), yaxisName: ga(t.yaxisname), xaxisName: ga(t.xaxisname), zDataValue: d.numberFormatter.dataLabels(a.z) },
                    a, t, b) : null === p ? b = !1 : (d.seriesNameInToolTip && (da = g(b && b.seriesname)), b = da ? da + h : K, b += c ? d.numberFormatter.xAxis(c) + h : K, b = b + p + (a.z ? h + d.numberFormatter.dataLabels(a.z) : K)) : b = K;
                c = k(a.showvalue, e, d.showValues) ? void 0 !== g(a.displayvalue, a.name, a.label) ? ga(g(a.displayvalue, a.name, a.label)) : p : K;
                a = ta(a.link);
                return{ displayValue: c, toolText: b, link: a }
            }
        }, n.scatter);
        n("ssgrid", {
            friendlyName: "Grid Component",
            standaloneInit: !0,
            defaultSeriesType: "ssgrid",
            rendererId: "ssgrid",
            chart: function(a, b) {
                var c = this.containerElement,
                    d = ya({}, this.dataObj),
                    q = d.chart || (d.chart = d.graph || {}),
                    e = this.chartInstance,
                    t = 0,
                    da = [],
                    h = d.data,
                    r = h && h.length,
                    Q = this.smartLabel,
                    l = this.numberFormatter,
                    f = c.offsetHeight,
                    Z = c.offsetWidth,
                    P = this.colorManager,
                    y,
                    m,
                    z,
                    x,
                    R,
                    B,
                    w,
                    u,
                    O,
                    C,
                    G,
                    I,
                    A,
                    W,
                    H,
                    S,
                    U,
                    T,
                    D,
                    ja,
                    M,
                    qa,
                    E,
                    F,
                    J,
                    L = 0;
                m = 0;
                var c = {
                        _FCconf: { 0: { stack: {} }, 1: { stack: {} }, x: { stack: {} }, noWrap: !1, marginLeftExtraSpace: 0, marginRightExtraSpace: 0, marginBottomExtraSpace: 0, marginTopExtraSpace: 0, marimekkoTotal: 0 },
                        chart: {
                            ignoreHiddenSeries: !1,
                            events: {},
                            spacingTop: 0,
                            spacingRight: 0,
                            spacingBottom: 0,
                            spacingLeft: 0,
                            marginTop: 0,
                            marginRight: 0,
                            marginBottom: 0,
                            marginLeft: 0,
                            borderRadius: 0,
                            borderColor: "#000000",
                            borderWidth: 1,
                            defaultSeriesType: "ssgrid",
                            style: { fontFamily: g(q.basefont, "Verdana,sans"), fontSize: Ia(q.basefontsize, 20) + Ra, color: g(q.basefontcolor, P.getColor("baseFontColor")).replace(/^#?([a-f0-9]+)/ig, "#$1") },
                            plotBackgroundColor: Qa
                        },
                        labels: { smartLabel: Q },
                        colors: "AFD8F8 F6BD0F 8BBA00 FF8E46 008E8E D64646 8E468E 588526 B3AA00 008ED6 9D080D A186BE CC6600 FDC689 ABA000 F26D7D FFF200 0054A6 F7941C CC3300 006600 663300 6DCFF6".split(" "),
                        credits: { href: v.CREDIT_HREF, text: v.CREDIT_STRING, enabled: !1 },
                        legend: { enabled: !1 },
                        series: [],
                        subtitle: { text: K },
                        title: { text: K },
                        tooltip: { enabled: !1 },
                        exporting: { buttons: { exportButton: {}, printButton: { enabled: !1 } } }
                    },
                    X = c[ua],
                    ca = y = m = L = 0,
                    s = t = W = 0;
                J = e.jsVars.cfgStore;
                e = c.chart;
                R = e.toolbar = { button: {} };
                B = R.button;
                delete d.graph;
                $(c.chart.style);
                e.events.click = this.linkClickFN;
                B.scale = k(q.toolbarbuttonscale, 1.15);
                B.width = k(q.toolbarbuttonwidth, 15);
                B.height = k(q.toolbarbuttonheight, 15);
                B.radius = k(q.toolbarbuttonradius,
                    2);
                B.spacing = k(q.toolbarbuttonspacing, 5);
                B.fill = aa(g(q.toolbarbuttoncolor, "ffffff"));
                B.labelFill = aa(g(q.toolbarlabelcolor, "cccccc"));
                B.symbolFill = aa(g(q.toolbarsymbolcolor, "ffffff"));
                B.hoverFill = aa(g(q.toolbarbuttonhovercolor, "ffffff"));
                B.stroke = aa(g(q.toolbarbuttonbordercolor, "bbbbbb"));
                B.symbolStroke = aa(g(q.toolbarsymbolbordercolor, "9a9a9a"));
                B.strokeWidth = k(q.toolbarbuttonborderthickness, 1);
                B.symbolStrokeWidth = k(q.toolbarsymbolborderthickness, 1);
                d = B.symbolPadding = k(q.toolbarsymbolpadding, 5);
                B.symbolHPadding =
                    k(q.toolbarsymbolhpadding, d);
                B.symbolVPadding = k(q.toolbarsymbolvpadding, d);
                B = R.position = g(q.toolbarposition, "tr").toLowerCase();
                switch (B) {
                case "tr":
                case "tl":
                case "br":
                case "bl":
                    break;
                default:
                    B = "tr"
                }
                d = R.hAlign = "left" === (K + q.toolbarhalign).toLowerCase() ? "l" : B.charAt(1);
                B = R.vAlign = "bottom" === (K + q.toolbarvalign).toLowerCase() ? "b" : B.charAt(0);
                R.hDirection = k(q.toolbarhdirection, "r" === d ? -1 : 1);
                R.vDirection = k(q.toolbarvdirection, "b" === B ? -1 : 1);
                R.vMargin = k(q.toolbarvmargin, 6);
                R.hMargin = k(q.toolbarhmargin, 10);
                R.x = k(q.toolbarx, "l" === d ? 0 : a);
                R.y = k(q.toolbary, "t" === B ? 0 : b);
                void 0 !== g(q.clickurl) && (e.link = q.clickurl, e.style.cursor = "pointer");
                y = k(J.showpercentvalues, q.showpercentvalues, 0);
                m = g(J.numberitemsperpage, q.numberitemsperpage);
                k(J.showshadow, q.showshadow, 0);
                t = g(J.basefont, q.basefont, "Verdana,sans");
                z = Ia(J.basefontsize, q.basefontsize, 10);
                z += Ra;
                x = ea(g(J.basefontcolor, q.basefontcolor, P.getColor("baseFontColor")));
                d = ea(g(J.alternaterowbgcolor, q.alternaterowbgcolor, P.getColor("altHGridColor")));
                R = g(J.alternaterowbgalpha,
                    q.alternaterowbgalpha, P.getColor("altHGridAlpha")) + K;
                B = k(J.listrowdividerthickness, q.listrowdividerthickness, 1);
                w = ea(g(J.listrowdividercolor, q.listrowdividercolor, P.getColor("borderColor")));
                u = k(J.listrowdivideralpha, q.listrowdivideralpha, P.getColor("altHGridAlpha")) + 15 + K;
                O = k(J.colorboxwidth, q.colorboxwidth, 8);
                C = k(J.colorboxheight, q.colorboxheight, 8);
                G = k(J.navbuttonradius, q.navbuttonradius, 7);
                I = ea(g(J.navbuttoncolor, q.navbuttoncolor, P.getColor("canvasBorderColor")));
                A = ea(g(J.navbuttonhovercolor, q.navbuttonhovercolor,
                    P.getColor("altHGridColor")));
                W = k(J.textverticalpadding, q.textverticalpadding, 3);
                H = k(J.navbuttonpadding, q.navbuttonpadding, 5);
                S = k(J.colorboxpadding, q.colorboxpadding, 10);
                U = k(J.valuecolumnpadding, q.valuecolumnpadding, 10);
                T = k(J.namecolumnpadding, q.namecolumnpadding, 5);
                D = k(J.borderthickness, q.borderthickness, 1);
                ja = ea(g(J.bordercolor, q.bordercolor, P.getColor("borderColor")));
                M = g(J.borderalpha, q.borderalpha, P.getColor("borderAlpha")) + K;
                qa = g(J.bgcolor, q.bgcolor, "FFFFFF");
                E = g(J.bgalpha, q.bgalpha, Ga);
                F = g(J.bgratio,
                    q.bgratio, Ga);
                J = g(J.bgangle, q.bgangle, za);
                e.borderRadius = D / 16;
                e.borderWidth = D;
                e.borderColor = Y({ FCcolor: { color: ja, alpha: M } });
                e.backgroundColor = { FCcolor: { color: qa, alpha: E, ratio: F, angle: J } };
                e.borderRadius = k(q.borderradius, 0);
                J = { fontFamily: t, fontSize: z, color: x };
                $(J);
                Q.setStyle(J);
                for (t = 0; t < r; t += 1)if (z = h[t], D = l.getCleanValue(z.value), ja = ga(Fa(z.label, z.name)), x = ea(g(z.color, P.getPlotColor())), g(z.alpha, q.plotfillalpha, Ga), ja != K || null != D)da.push({ value: D, label: ja, color: x }), L += D, s += 1;
                for (t = 0; t < s; t += 1)
                    z =
                        da[t], D = z.value, z.dataLabel = z.label, z.displayValue = y ? l.percentValue(D / L * 100) : l.dataLabels(D), h = Q.getOriSize(z.displayValue), ca = Math.max(ca, h.width + U);
                m ? m >= s ? (y = f / s, m = s) : (l = f - 2 * (H + G), y = l / m) : (L = parseInt(J.lineHeight, 10), L = Math.max(L + 2 * W, C), m = f / L, m >= s ? (y = f / s, m = s) : (l = f - 2 * (H + G), m = Math.floor(l / L), y = l / m));
                W = Z - S - O - T - ca - U;
                t = S + O + T;
                l = g(q.basefont, "Verdana,sans");
                ca = Ia(q.basefontsize, 10);
                P = g(q.basefontcolor, P.getColor("baseFontColor"));
                h = g(q.outcnvbasefont, l);
                z = Ia(q.outcnvbasefontsize, ca);
                r = z + Ra;
                q = g(q.outcnvbasefontcolor,
                    P).replace(/^#?([a-f0-9]+)/ig, "#$1");
                ca += Ra;
                P = P.replace(/^#?([a-f0-9]+)/ig, "#$1");
                X.trendStyle = X.outCanvasStyle = { fontFamily: h, color: q, fontSize: r };
                $(X.trendStyle);
                X.inCanvasStyle = { fontFamily: l, fontSize: ca, color: P };
                c.tooltip.style = { fontFamily: l, fontSize: ca, lineHeight: void 0, color: P };
                c.tooltip.shadow = !1;
                e.height = f;
                e.width = Z;
                e.rowHeight = y;
                e.labelX = t;
                e.colorBoxWidth = O;
                e.colorBoxHeight = C;
                e.colorBoxX = S;
                e.valueX = S + O + T + W + U;
                e.valueColumnPadding = U;
                e.textStyle = J;
                e.listRowDividerAttr = {
                    "stroke-width": B,
                    stroke: {
                        FCcolor: {
                            color: w,
                            alpha: u
                        }
                    }
                };
                e.alternateRowColor = { FCcolor: { color: d, alpha: R } };
                e.navButtonRadius = G;
                e.navButtonPadding = H;
                e.navButtonColor = I;
                e.navButtonHoverColor = A;
                e.lineHeight = parseInt(J.lineHeight, 10);
                f = [];
                q = 0;
                X = !0;
                for (t = 0; t < s & 0 !== m; t += 1)0 === t % m && (f.push({ data: [], visible: X }), X = !1, q += 1), z = da[t], Z = Q.getSmartText(z.dataLabel, W, y), f[q - 1].data.push({ label: Z.text, originalText: Z.tooltext, displayValue: z.displayValue, y: z.value, color: z.color });
                c.series = f;
                n.base.parseExportOptions.call(this, c);
                c.tooltip.enabled = !!c.exporting.enabled;
                return c
            },
            creditLabel: !1
        }, n.base);
        n("renderer.bubble", {
            drawPlotBubble: function(a, p) {
                var c = this,
                    d = c.options,
                    q = d.chart,
                    h = d.plotOptions.series,
                    t = h.dataLabels && h.dataLabels.style || {},
                    da = { fontFamily: t.fontFamily, fontSize: t.fontSize, lineHeight: t.lineHeight, fontWeight: t.fontWeight, fontStyle: t.fontStyle },
                    t = c.paper,
                    f = c.elements,
                    r = a.items,
                    Q = a.graphics = a.graphics || [],
                    l = c.xAxis[p.xAxis || 0],
                    wa = c.yAxis[p.yAxis || 0],
                    P = a.data,
                    Z = !1 !== (d.tooltip || {}).enabled,
                    y,
                    n,
                    h = isNaN(+h.animation) && h.animation.duration || 1E3 * h.animation,
                    z = !1 === p.visible ? "hidden" : "visible",
                    d = d.plotOptions.bubble,
                    m = d.zMax,
                    d = d.bubbleScale,
                    g = ja(c.canvasHeight, c.canvasWidth) / 8,
                    m = ha(m),
                    B,
                    x,
                    u,
                    O,
                    C,
                    G,
                    I,
                    D,
                    W,
                    H,
                    S;
                B = c.layers;
                x = B.dataset = B.dataset || t.group("dataset-orphan");
                var U = B.tracker, T, A, L = function(a) { sa.call(this, c, a) },
                    M = function(a, d, b) {
                        return function(p) {
                            a.attr(d);
                            sa.call(this, c, p, b)
                        }
                    };
                c.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label", da);
                B.datalabels ? B.datalabels.attr("class", "fusioncharts-datalabels") : B.datalabels = t.group({ "class": "fusioncharts-datalabels" },
                    "datalables").insertAfter(x);
                da = x.bubble = x.bubble || t.group("bubble", x);
                q.clipBubbles && !da.attrs["clip-rect"] && da.attr({ "clip-rect": f["clip-canvas"] });
                B = 0;
                for (x = P.length; B < x; B += 1) {
                    u = P[B];
                    H = S = A = null;
                    W = u.marker;
                    if (null !== u.y && W && W.enabled) {
                        O = u.link;
                        q = u.toolText;
                        C = k(u.x, B);
                        G = u.y;
                        f = { index: B, link: O, value: G, y: G, x: C, z: u.z, displayValue: u.displayValue, toolText: u.toolText, id: a.userID, datasetIndex: a.index, datasetName: a.name, visible: a.visible };
                        D = wa.getAxisPosition(G);
                        I = l.getAxisPosition(C);
                        n = ha(u.z);
                        T = w(n * g / m) *
                            d || 0;
                        n = y = {};
                        u.hoverEffects && (n = { fill: Y(W.fillColor), "stroke-width": W.lineWidth, stroke: Y(W.lineColor), r: T }, y = u.rolloverProperties, y = { fill: Y(y.fillColor), "stroke-width": y.lineWidth, stroke: Y(y.lineColor), r: T * y.scale });
                        H = t.circle(I, D, 0, da).attr({ fill: Y(W.fillColor), "stroke-width": W.lineWidth, stroke: Y(W.lineColor), visibility: z }).animate({ r: T || 0 }, h, "easeOut", c.getAnimationCompleteFn());
                        if (O || Z)
                            T < b && (T = b), S = t.circle(I, D, T, U).attr({
                                cursor: O ? "pointer" : "",
                                stroke: e,
                                "stroke-width": W.lineWidth,
                                fill: e,
                                ishot: !!O,
                                visibility: z
                            });
                        (S || H).data("eventArgs", f).click(L).hover(M(H, y, "DataPlotRollOver"), M(H, n, "DataPlotRollOut")).tooltip(q);
                        r[B] = { index: B, x: C, y: G, z: u.z, value: G, graphic: H, dataLabel: A, tracker: S };
                        A = c.drawPlotLineLabel(a, p, B, I, D)
                    } else r[B] = { index: B, x: C, y: G };
                    A && Q.push(A);
                    H && Q.push(H);
                    S && Q.push(S)
                }
                a.visible = !1 !== p.visible;
                return a
            }
        }, n["renderer.cartesian"]);
        n("renderer.ssgrid", {
            drawGraph: function() {
                var a = this.options.series, b = this.elements, c = b.plots, d = a.length, q;
                c || (c = this.plots = this.plots || [], b.plots = c);
                this.drawSSGridNavButton();
                for (q = 0; q < d; q++)(b = c[q]) || c.push(b = { items: [], data: a[q].data }), a[q].data && a[q].data.length && this.drawPlot(b, a[q]);
                1 < d && this.nenagitePage(0)
            },
            drawPlot: function(a) {
                var b = a.data, c = this.paper, d = this.options.chart, q = d.colorBoxHeight, e = d.colorBoxWidth, t = d.colorBoxX, h = d.labelX, f = d.valueX, r = d.rowHeight, k = d.width, l = d.listRowDividerAttr, P = l["stroke-width"], l = Y(l.stroke), Z = P % 2 / 2, n = d.textStyle, y = this.layers, y = y.dataset = y.dataset || c.group("dataset-orphan"), d = Y(d.alternateRowColor);
                a = a.items;
                var m = 0, z, x, g, B;
                b &&
                    b.length || (b = []);
                l = { stroke: l, "stroke-width": P };
                B = 0;
                for (P = b.length; B < P; B += 1)
                    g = b[B], x = g.y, z = a[B] = { index: B, value: x, graphic: null, dataLabel: null, dataValue: null, alternateRow: null, listRowDivider: null, hot: null }, null !== x && void 0 !== x && (0 === B % 2 && (z.alternateRow = c.rect(0, m, k, r, 0, y).attr({ fill: d, "stroke-width": 0 })), x = w(m) + Z, z.listRowDivider = c.path(["M", 0, x, "L", k, x], y).attr(l), z.graphic = c.rect(t, m + r / 2 - q / 2, e, q, 0, y).attr({ fill: g.color, "stroke-width": 0, stroke: "#000000" }), x = z.dataLabel = c.text().attr({
                        text: g.label,
                        title: g.originalText || "",
                        x: h,
                        y: m + r / 2,
                        fill: n.color,
                        "text-anchor": "start"
                    }).css(n), y.appendChild(x), z = z.dataValue = c.text().attr({ text: g.displayValue, title: g.originalText || "", x: f, y: m + r / 2, fill: n.color, "text-anchor": "start" }).css(n), y.appendChild(z), m += r);
                x = w(m) + Z;
                c.path(["M", 0, x, "L", k, x], y).attr(l)
            },
            drawSSGridNavButton: function() {
                var a = this,
                    b = a.paper,
                    c = a.options,
                    d = c.chart,
                    q = c.series,
                    e = d.navButtonColor,
                    t = d.navButtonHoverColor,
                    c = d.navButtonRadius,
                    h = .67 * c,
                    f = d.navButtonPadding + h + (q && q[0].data && q[0].data.length *
                        d.rowHeight) + .5 * c,
                    d = d.width - 20,
                    r,
                    k,
                    l,
                    P;
                1 < q.length && (P = a.naviigator = b.group("navigation"), a.navElePrv = q = b.group(P), r = b.path(["M", 20, f, "L", 20 + c + h, f - h, 20 + c, f, 20 + c + h, f + h, "Z"]).attr({ fill: e, "stroke-width": 0, cursor: "pointer" }), q.appendChild(r), l = b.circle(20 + c, f, c).attr({ fill: Qa, "stroke-width": 0, cursor: "pointer" }).mouseover(function() { r.attr({ fill: t, cursor: "pointer" }) }).mouseout(function() { r.attr({ fill: e }) }).click(function() { a.nenagitePage(-1) }), q.appendChild(l), a.navEleNxt = q = b.group(P), k = b.path([
                    "M", d,
                    f, "L", d - c - h, f - h, d - c, f, d - c - h, f + h, "Z"
                ]).attr({ fill: e, "stroke-width": 0, cursor: "pointer" }), q.appendChild(k), b = b.circle(d - c, f, c).attr({ fill: Qa, "stroke-width": 0, cursor: "pointer" }).mouseover(function() { k.attr({ fill: t }) }).mouseout(function() { k.attr({ fill: e }) }).click(function() { a.nenagitePage(1) }), q.appendChild(b))
            },
            nenagitePage: function(a) {
                var b = this.plots, c = b.length;
                a = (this.currentSeriesIndex || 0) + (a || 0);
                var d,
                    q = function(a) {
                        a.graphic && a.graphic.hide();
                        a.dataLabel && a.dataLabel.hide();
                        a.dataValue && a.dataValue.hide();
                        a.alternateRow && a.alternateRow.hide();
                        a.listRowDivider && a.listRowDivider.hide()
                    };
                if (b[a]) {
                    for (d = c; d--;)va(b[d].items, q);
                    va(b[a].items, function(a) {
                        a.graphic && a.graphic.show();
                        a.dataLabel && a.dataLabel.show();
                        a.dataValue && a.dataValue.show();
                        a.alternateRow && a.alternateRow.show();
                        a.listRowDivider && a.listRowDivider.show()
                    });
                    this.currentSeriesIndex = a;
                    pa.raiseEvent("pageNavigated", { pageId: a, data: this.options.series[a].data }, this.logic.chartInstance);
                    0 === a ? this.navElePrv.hide() : this.navElePrv.show();
                    a === c -
                        1 ? this.navEleNxt.hide() : this.navEleNxt.show()
                }
            }
        }, n["renderer.root"]);
        La.prototype = {
            getArcPath: function(a, b, c, d, q, e, t, h, f, r) { return c == q && d == e ? [] : ["A", t, h, 0, r, f, q, e] },
            parseColor: function(a, b) {
                var c, d, q, e, t, h, f, r, k, l, P = b / 2, m, n, y, Z, z;
                z = 3;
                this.use3DLighting ? (c = ka(a, 80), d = ka(a, 75), h = fa(a, 85), f = fa(a, 70), r = fa(a, 40), k = fa(a, 50), fa(a, 30), l = fa(a, 65), ka(a, 85), q = ka(a, 69), e = ka(a, 75), t = ka(a, 95)) : (z = 10, c = ka(a, 90), d = ka(a, 87), h = fa(a, 93), f = fa(a, 87), r = fa(a, 80), l = k = fa(a, 85), fa(a, 80), t = ka(a, 85), q = ka(a, 75), e = ka(a, 80));
                m = d + ba + h + ba + f + ba + h + ba + d;
                y = b + ba + b + ba + b + ba + b + ba + b;
                n = d + ba + a + ba + h + ba + a + ba + d;
                Z = P + ba + P + ba + P + ba + P + ba + P;
                r = d + ba + a + ba + r + ba + a + ba + d;
                q = e + ba + h + ba + k + ba + h + ba + q;
                e = "FFFFFF" + ba + "FFFFFF" + ba + "FFFFFF" + ba + "FFFFFF" + ba + "FFFFFF";
                z = 0 + ba + P / z + ba + b / z + ba + P / z + ba + 0;
                return{
                    frontOuter: { FCcolor: { gradientUnits: "userSpaceOnUse", x1: this.leftX, y1: 0, x2: this.rightX, y2: 0, color: q, alpha: y, angle: 0, ratio: "0,20,15,15,50" } },
                    backOuter: { FCcolor: { gradientUnits: "userSpaceOnUse", x1: this.leftX, y1: 0, x2: this.rightX, y2: 0, color: r, alpha: Z, angle: 0, ratio: "0,62,8,8,22" } },
                    frontInner: { FCcolor: { gradientUnits: "userSpaceOnUse", x1: this.leftInnerX, y1: 0, x2: this.rightInnerX, y2: 0, color: n, alpha: Z, angle: 0, ratio: "0,25,5,5,65" } },
                    backInner: { FCcolor: { gradientUnits: "userSpaceOnUse", x1: this.leftInnerX, y1: 0, x2: this.rightInnerX, y2: 0, color: m, alpha: y, angle: 0, ratio: "0,62,8,8,22" } },
                    topBorder: { FCcolor: { gradientUnits: "userSpaceOnUse", x1: this.leftX, y1: 0, x2: this.rightX, y2: 0, color: e, alpha: z, angle: 0, ratio: "0,20,15,15,50" } },
                    topInnerBorder: {
                        FCcolor: {
                            gradientUnits: "userSpaceOnUse",
                            x1: this.leftInnerX,
                            y1: 0,
                            x2: this.rightInnerX,
                            y2: 0,
                            color: e,
                            alpha: z,
                            angle: 0,
                            ratio: "0,50,15,15,20"
                        }
                    },
                    top: ma ? { FCcolor: { gradientUnits: "userSpaceOnUse", radialGradient: !0, cx: this.cx, cy: this.cy, r: this.rx, fx: this.cx - .3 * this.rx, fy: this.cy + 1.2 * this.ry, color: l + ba + t, alpha: b + ba + b, ratio: "0,100" } } : { FCcolor: { gradientUnits: "objectBoundingBox", color: f + ba + f + ba + h + ba + d, alpha: b + ba + b + ba + b + ba + b, angle: -72, ratio: "0,8,15,77" } },
                    bottom: Y(aa(a, P)),
                    startSlice: Y(aa(c, b)),
                    endSlice: Y(aa(c, b))
                }
            },
            rotate: function(a) {
                if (!this.hasOnePoint) {
                    for (var b = this.pointElemStore,
                        c = 0,
                        d = b.length,
                        e; c < d; c += 1)e = b[c], e = e._confObject, e.start += a, e.end += a, this.updateSliceConf(e);
                    this.refreshDrawing()
                }
            },
            refreshDrawing: function() {
                return function() {
                    var a = this.slicingWallsArr, b = 0, c, d = a.length, e, h, t, f, k = this.slicingWallsFrontGroup, r = this.slicingWallsBackGroup;
                    a: {
                        var P = a[0] && a[0]._conf.index, l, m;
                        f = P <= x;
                        e = 1;
                        for (c = a.length; e < c; e += 1)if (m = a[e]._conf.index, l = m <= x, l != f || m < P)break a;
                        e = 0
                    }
                    for (; b < d; b += 1, e += 1)
                        e === d && (e = 0), c = a[e], f = c._conf.index, f < Wa ? k.appendChild(c) : f <= x ? (h ? c.insertBefore(h) : k.appendChild(c),
                            h = c) : f < Da ? (t ? c.insertBefore(t) : r.appendChild(c), t = c) : r.appendChild(c)
                }
            }(),
            updateSliceConf: function(a, b) {
                var c = this.getArcPath, d = a.start, e = a.end, h = na(d), t = na(e), f, k, r, Q, l, m, n, g, y, u, z, w, R, B, D, A, O = this.cx, C = this.cy, G = this.rx, I = this.ry, L = G + (ma ? -1 : 2), W = I + (ma ? -1 : 2), H = this.innerRx, S = this.innerRy, U = this.depth, T = this.depthY, v = a.elements, ca, M, s, E, F, J, ja;
                f = P(h);
                k = Z(h);
                r = P(t);
                Q = Z(t);
                l = O + G * f;
                m = C + I * k;
                n = O + L * f;
                g = C + W * k;
                ca = m + U;
                M = O + G * r;
                s = C + I * Q;
                y = O + L * r;
                u = C + W * Q;
                E = s + U;
                this.isDoughnut ? (z = O + H * f, w = C + S * k, D = w + U, R = O + H * r, B = C +
                    S * Q, A = B + U, a.startSlice = ["M", l, m, "L", l, ca, z, D, z, w, "Z"], a.endSlice = ["M", M, s, "L", M, E, R, A, R, B, "Z"]) : (a.startSlice = ["M", l, m, "L", l, ca, O, T, O, C, "Z"], a.endSlice = ["M", M, s, "L", M, E, O, T, O, C, "Z"]);
                ma ? (c = (h > t ? X : 0) + t - h, a.clipTopPath = this.isDoughnut ? ["M", l, m, "A", G, I, 0, c > x ? 1 : 0, 1, M, s, "L", R, B, "A", H, S, 0, c > x ? 1 : 0, 0, z, w, "Z"] : ["M", l, m, "A", G, I, 0, c > x ? 1 : 0, 1, M, s, "L", this.cx, this.cy, "Z"], a.clipOuterFrontPath1 = this.clipPathforNoClip, a.clipTopBorderPath = [
                    "M", n, g, "A", L, W, 0, c > x ? 1 : 0, 1, y, u, "L", M, s, M, s + 1, "A", G, I, 0, c > x ? 1 : 0, 0, l, m + 1, "L",
                    l, m, "Z"
                ], d != e ? h > t ? h < x ? (a.clipOuterFrontPath = ["M", this.rightX, C, "A", G, I, 0, 0, 1, M, s, "v", U, "A", G, I, 0, 0, 0, this.rightX, C + U, "Z"], a.clipOuterFrontPath1 = ["M", this.leftX, C, "A", G, I, 0, 0, 0, l, m, "v", U, "A", G, I, 0, 0, 1, this.leftX, C + U, "Z"], a.clipOuterBackPath = ["M", this.rightX, C, "A", G, I, 0, 1, 0, this.leftX, C, "v", U, "A", G, I, 0, 1, 1, this.rightX, C + U, "Z"], this.isDoughnut && (a.clipInnerBackPath = ["M", this.rightInnerX, C, "A", H, S, 0, 1, 0, this.leftInnerX, C, "v", U, "A", H, S, 0, 1, 1, this.rightInnerX, C + U, "Z"], a.clipInnerFrontPath = [
                    "M", this.rightInnerX,
                    C, "A", H, S, 0, 0, 1, R, B, "v", U, "A", H, S, 0, 0, 0, this.rightInnerX, C + U, "Z", "M", this.leftInnerX, C, "A", H, S, 0, 0, 0, z, w, "v", U, "A", H, S, 0, 0, 1, this.leftInnerX, C + U, "Z"
                ])) : t > x ? (a.clipOuterFrontPath = ["M", this.rightX, C, "A", G, I, 0, 1, 1, this.leftX, C, "v", U, "A", G, I, 0, 1, 0, this.rightX, C + U, "Z"], a.clipOuterBackPath = ["M", this.leftX, C, "A", G, I, 0, 0, 1, M, s, "v", U, "A", G, I, 0, 0, 0, this.leftX, C + U, "Z", "M", this.rightX, C, "A", G, I, 0, 0, 0, l, m, "v", U, "A", G, I, 0, 0, 1, this.rightX, C + U, "Z"], this.isDoughnut && (a.clipInnerFrontPath = [
                    "M", this.rightInnerX, C, "A",
                    H, S, 0, 1, 1, this.leftInnerX, C, "v", U, "A", H, S, 0, 1, 0, this.rightInnerX, C + U, "Z"
                ], a.clipInnerBackPath = ["M", this.leftInnerX, C, "A", H, S, 0, 0, 1, R, B, "v", U, "A", H, S, 0, 0, 0, this.leftInnerX, C + U, "Z", "M", this.rightInnerX, C, "A", H, S, 0, 0, 0, z, w, "v", U, "A", H, S, 0, 0, 1, this.rightInnerX, C + U, "Z"])) : (a.clipOuterFrontPath = ["M", this.rightX, C, "A", G, I, 0, 0, 1, M, s, "v", U, "A", G, I, 0, 0, 0, this.rightX, C + U, "Z"], a.clipOuterBackPath = ["M", l, m, "A", G, I, 0, 0, 1, this.rightX, C, "v", U, "A", G, I, 0, 0, 0, l, ca, "Z"], this.isDoughnut && (a.clipInnerFrontPath = [
                    "M", this.rightInnerX,
                    C, "A", H, S, 0, 0, 1, R, B, "v", U, "A", H, S, 0, 0, 0, this.rightInnerX, C + U, "Z"
                ], a.clipInnerBackPath = ["M", z, w, "A", H, S, 0, 0, 1, this.rightInnerX, C, "v", U, "A", H, S, 0, 0, 0, z, D, "Z"])) : h < x ? t > x ? (a.clipOuterFrontPath = ["M", l, m, "A", G, I, 0, 0, 1, this.leftX, C, "v", U, "A", G, I, 0, 0, 0, l, ca, "Z"], a.clipOuterBackPath = ["M", this.leftX, C, "A", G, I, 0, 0, 1, M, s, "v", U, "A", G, I, 0, 0, 0, this.leftX, C + U, "Z"], this.isDoughnut && (a.clipInnerFrontPath = ["M", z, w, "A", H, S, 0, 0, 1, this.leftInnerX, C, "v", U, "A", H, S, 0, 0, 0, z, D, "Z"], a.clipInnerBackPath = [
                    "M", this.leftInnerX,
                    C, "A", H, S, 0, 0, 1, R, B, "v", U, "A", H, S, 0, 0, 0, this.leftInnerX, C + U, "Z"
                ])) : (a.clipOuterFrontPath = ["M", l, m, "A", G, I, 0, 0, 1, M, s, "v", U, "A", G, I, 0, 0, 0, l, ca, "Z"], a.clipOuterBackPath = this.clipPathforNoClip, this.isDoughnut && (a.clipInnerFrontPath = ["M", z, w, "A", H, S, 0, 0, 1, R, B, "v", U, "A", H, S, 0, 0, 0, z, D, "Z"], a.clipInnerBackPath = this.clipPathforNoClip)) : (a.clipOuterFrontPath = this.clipPathforNoClip, a.clipOuterBackPath = ["M", l, m, "A", G, I, 0, 0, 1, M, s, "v", U, "A", G, I, 0, 0, 0, l, ca, "Z"], this.isDoughnut && (a.clipInnerFrontPath = this.clipPathforNoClip,
                    a.clipInnerBackPath = ["M", z, w, "A", H, S, 0, 0, 1, R, B, "v", U, "A", H, S, 0, 0, 0, z, D, "Z"])) : a.clipOuterFrontPath = a.clipOuterBackPath = a.clipInnerBackPath = a.clipInnerFrontPath = this.clipPathforNoClip, b || (a.elements.startSlice._conf.index = h, a.elements.endSlice._conf.index = t, a.elements.frontOuter._conf.index = Ka(t, h), a.elements.frontOuter1 && (a.elements.frontOuter1._conf.index = h, a.elements.frontOuter1.attr("litepath", [a.clipOuterFrontPath1])), a.thisElement.attr("litepath", [a.clipTopPath]), a.elements.bottom.attr("litepath",
                [a.clipTopPath]), a.elements.bottomBorder.attr("litepath", [a.clipTopPath]), a.elements.topBorder && a.elements.topBorder.attr("litepath", [a.clipTopBorderPath]), a.elements.frontOuter.attr("litepath", [a.clipOuterFrontPath]), a.elements.backOuter.attr("litepath", [a.clipOuterBackPath]), this.isDoughnut && (a.elements.backInner.attr("litepath", [a.clipInnerBackPath]), a.elements.frontInner.attr("litepath", [a.clipInnerFrontPath]), a.elements.backInner._conf.index = Ka(t, h)), this.hasOnePoint ? (a.elements.startSlice.hide(),
                    a.elements.endSlice.hide()) : (a.elements.startSlice.attr("litepath", [a.startSlice]).show(), a.elements.endSlice.attr("litepath", [a.endSlice]).show()))) : (n = this.moveCmdArr, g = this.lineCmdArr, y = this.closeCmdArr, F = this.centerPoint, u = this.leftPoint, L = this.topPoint, W = this.rightPoint, U = this.bottomPoint, J = this.leftDepthPoint, ja = this.rightDepthPoint, f = this.leftInnerPoint, k = this.rightInnerPoint, r = this.leftInnerDepthPoint, Q = this.rightInnerDepthPoint, a.clipOuterFrontPath1 = [], d != e ? (h > t ? h < x ? (d = c(O, C, l, m, this.leftX,
                    C, G, I, 1, 0), e = c(O, C, this.leftX, C, this.rightX, C, G, I, 1, 0), s = c(O, C, this.rightX, C, M, s, G, I, 1, 0), a.clipOuterBackPath = n.concat(u, e, g, ja, c(O, T, this.rightX, T, this.leftX, T, G, I, 0, 0), y), a.clipOuterFrontPath1 = n.concat([l, m], d, g, J, c(O, T, this.leftX, T, l, ca, G, I, 0, 0), y), a.clipOuterFrontPath = n.concat(W, s, g, [M, E], c(O, T, M, E, this.rightX, T, G, I, 0, 0), y), a.clipTopBorderPath = n.concat([l, m], d, e, s), this.isDoughnut ? (l = c(O, C, R, B, this.rightInnerX, C, H, S, 0, 0), m = c(O, C, this.rightInnerX, C, this.leftInnerX, C, H, S, 0, 0), w = c(O, C, this.leftInnerX,
                    C, z, w, H, S, 0, 0), a.clipInnerBackPath = n.concat(k, m, g, r, c(O, T, this.leftInnerX, T, this.rightInnerX, T, H, S, 1, 0), y), a.clipInnerFrontPath = n.concat(f, w, g, [z, D], c(O, T, z, D, this.leftInnerX, T, H, S, 1, 0), y, n, [R, B], l, g, Q, c(O, T, this.rightInnerX, T, R, A, H, S, 1, 0), y), a.clipTopPath = a.clipTopBorderPath.concat(g, [R, B], l, m, w, y), a.clipTopBorderPath = a.clipTopBorderPath.concat(n, [R, B], l, m, w)) : a.clipTopPath = a.clipTopBorderPath.concat(g, F, y)) : t > x ? (d = c(O, C, l, m, this.rightX, C, G, I, 1, 0), e = c(O, C, this.rightX, C, this.leftX, C, G, I, 1, 0), s = c(O,
                    C, this.leftX, C, M, s, G, I, 1, 0), a.clipOuterFrontPath = n.concat(W, e, g, J, c(O, T, this.leftX, T, this.rightX, T, G, I, 0, 0), y), a.clipOuterBackPath = n.concat([l, m], d, g, ja, c(O, T, this.rightX, T, l, ca, G, I, 0, 0), y, n, u, s, g, [M, E], c(O, T, M, E, this.leftX, T, G, I, 0, 0), y), a.clipTopBorderPath = n.concat([l, m], d, e, s), this.isDoughnut ? (l = c(O, C, R, B, this.leftInnerX, C, H, S, 0, 0), m = c(O, C, this.leftInnerX, C, this.rightInnerX, C, H, S, 0, 0), w = c(O, C, this.rightInnerX, C, z, w, H, S, 0, 0), a.clipInnerFrontPath = n.concat(f, m, g, Q, c(O, T, this.rightInnerX, T, this.leftInnerX,
                    T, H, S, 1, 0), y), a.clipInnerBackPath = n.concat(k, w, g, [z, D], c(O, T, z, D, this.rightInnerX, T, H, S, 1, 0), y, n, [R, B], l, g, r, c(O, T, this.leftInnerX, T, R, A, H, S, 1, 0), y), a.clipTopPath = a.clipTopBorderPath.concat(g, [R, B], l, m, w, y), a.clipTopBorderPath = a.clipTopBorderPath.concat(n, [R, B], l, m, w)) : a.clipTopPath = a.clipTopBorderPath.concat(g, F, y)) : (d = c(O, C, l, m, this.rightX, C, G, I, 1, 0), e = c(O, C, this.rightX, C, M, s, G, I, 1, 0), a.clipOuterFrontPath = n.concat(W, e, g, [M, E], c(O, T, M, E, this.rightX, T, G, I, 0, 0), y), a.clipOuterBackPath = n.concat([l, m],
                    d, g, ja, c(O, T, this.rightX, T, l, ca, G, I, 0, 0), y), a.clipTopBorderPath = n.concat([l, m], d, e), this.isDoughnut ? (l = c(O, C, R, B, this.rightInnerX, C, H, S, 0, 0), m = c(O, C, this.rightInnerX, C, z, w, H, S, 0, 0), a.clipInnerFrontPath = n.concat([R, B], l, g, Q, c(O, T, this.rightInnerX, T, R, A, H, S, 1, 0), y), a.clipInnerBackPath = n.concat(k, m, g, [z, D], c(O, T, z, D, this.rightInnerX, T, H, S, 1, 0), y), a.clipTopPath = a.clipTopBorderPath.concat(g, [R, B], l, m, y), a.clipTopBorderPath = a.clipTopBorderPath.concat(n, [R, B], l, m)) : a.clipTopPath = a.clipTopBorderPath.concat(g,
                    F, y)) : h < x ? t > x ? (d = c(O, C, l, m, this.leftX, C, G, I, 1, 0), e = c(O, C, this.leftX, C, M, s, G, I, 1, 0), a.clipOuterBackPath = n.concat(u, e, g, [M, E], c(O, T, M, E, this.leftX, T, G, I, 0, 0), y), a.clipOuterFrontPath = n.concat([l, m], d, g, J, c(O, T, this.leftX, T, l, ca, G, I, 0, 0), y), a.clipTopBorderPath = n.concat([l, m], d, e), this.isDoughnut ? (l = c(O, C, R, B, this.leftInnerX, C, H, S, 0, 0), m = c(O, C, this.leftInnerX, C, z, w, H, S, 0, 0), a.clipInnerBackPath = n.concat([R, B], l, g, r, c(O, T, this.leftInnerX, T, R, A, H, S, 1, 0), y), a.clipInnerFrontPath = n.concat(f, m, g, [z, D], c(O, T,
                    z, D, this.leftInnerX, T, H, S, 1, 0), y), a.clipTopPath = a.clipTopBorderPath.concat(g, [R, B], l, m, y), a.clipTopBorderPath = a.clipTopBorderPath.concat(n, [R, B], l, m)) : a.clipTopPath = a.clipTopBorderPath.concat(g, F, y)) : (d = c(O, C, l, m, M, s, G, I, 1, 0), a.clipOuterBackPath = n.concat([l, m]), a.clipTopBorderPath = a.clipOuterBackPath.concat(d), a.clipOuterFrontPath = a.clipTopBorderPath.concat(g, [M, E], c(O, T, M, E, l, ca, G, I, 0, 0), y), this.isDoughnut ? (l = c(O, C, R, B, z, w, H, S, 0, 0), a.clipInnerBackPath = n.concat([R, B]), a.clipTopPath = a.clipTopBorderPath.concat(g,
                [R, B], l, y), a.clipTopBorderPath = a.clipTopBorderPath.concat(n, [R, B], l), a.clipInnerFrontPath = a.clipInnerBackPath.concat(l, g, [z, D], c(O, T, z, D, R, A, H, S, 1, 0), y)) : a.clipTopPath = a.clipTopBorderPath.concat(g, F, y)) : (d = c(O, C, l, m, M, s, G, I, 1, 0), a.clipOuterFrontPath = n.concat([l, m]), a.clipTopBorderPath = a.clipOuterFrontPath.concat(d), a.clipOuterBackPath = a.clipTopBorderPath.concat(g, [M, E], c(O, T, M, E, l, ca, G, I, 0, 0), y), this.isDoughnut ? (l = c(O, C, R, B, z, w, H, S, 0, 0), a.clipInnerFrontPath = n.concat([R, B]), a.clipTopPath = a.clipTopBorderPath.concat(g,
                [R, B], l, y), a.clipTopBorderPath = a.clipTopBorderPath.concat(a.clipInnerFrontPath, l), a.clipInnerBackPath = a.clipInnerFrontPath.concat(l, g, [z, D], c(O, T, z, D, R, A, H, S, 1, 0), y)) : a.clipTopPath = a.clipTopBorderPath.concat(g, F, y)), d = n.concat(u, g, W), l = n.concat(L, g, U), a.clipTopPath = a.clipTopPath.concat(d, l), a.clipOuterFrontPath = a.clipOuterFrontPath.concat(d), a.clipOuterFrontPath1 = a.clipOuterFrontPath1.concat(d), a.clipOuterBackPath = a.clipOuterBackPath.concat(d), this.isDoughnut && (l = n.concat(f, g, k), a.clipInnerFrontPath =
                    a.clipInnerFrontPath.concat(l), a.clipInnerBackPath = a.clipInnerBackPath.concat(l))) : (a.clipTopPath = a.clipOuterFrontPath = a.clipOuterBackPath = [], this.isDoughnut && (a.clipInnerFrontPath = a.clipInnerBackPath = [])), b || (a.elements.startSlice._conf.index = h, a.elements.endSlice._conf.index = t, a.elements.frontOuter._conf.index = Ka(t, h), a.elements.frontOuter1 && (a.elements.frontOuter1._conf.index = h, v.frontOuter1.attr({ path: a.clipOuterFrontPath1 })), a.thisElement.attr({ path: a.clipTopPath }), v.topBorder.attr({ path: a.clipTopBorderPath }),
                    v.bottom.attr({ path: a.clipTopPath }), v.bottomBorder.attr({ path: a.clipTopBorderPath }), v.frontOuter.attr({ path: a.clipOuterFrontPath }), v.backOuter.attr({ path: a.clipOuterBackPath }), this.isDoughnut && (v.frontInner.attr({ path: a.clipInnerFrontPath }), v.backInner.attr({ path: a.clipInnerBackPath })), this.hasOnePoint ? (a.elements.startSlice.hide(), a.elements.endSlice.hide()) : (a.elements.startSlice.attr({ path: a.startSlice }).show(), a.elements.endSlice.attr({ path: a.endSlice }).show())))
            },
            onPlotHover: function(a, b) {
                var c =
                        this.pointElemStore[a]._confObject,
                    d = c.thisElement,
                    e = c.elements,
                    h = this.colorObjs[a],
                    t = h.hoverProps,
                    f = b ? t.hoverColorObj : h.color,
                    k = h.showBorderEffect,
                    r = b ? t.borderColor : h.borderColor,
                    h = b ? t.borderWidth : h.borderWidth;
                ma ? (t = { fill: Y(f.top), "stroke-width": 0 }, 1 !== k && (t.stroke = r, t["stroke-width"] = h), d._attr(t), k && e.topBorder.attr({ fill: Y(f.topBorder), "stroke-width": 0 })) : (d._attr({ fill: Y(f.top), "stroke-width": 0 }), e.topBorder.attr({ stroke: r, "stroke-width": h }));
                e.bottom.attr({ fill: Y(f.bottom), "stroke-width": 0 });
                e.bottomBorder.attr({ stroke: r, "stroke-width": h });
                e.frontOuter.attr({ fill: Y(f.frontOuter), "stroke-width": 0 });
                e.backOuter.attr({ fill: Y(f.backOuter), "stroke-width": 0 });
                e.startSlice.attr({ fill: Y(f.startSlice), stroke: r, "stroke-width": h });
                e.endSlice.attr({ fill: Y(f.endSlice), stroke: r, "stroke-width": h });
                d = na(c.start);
                c = na(c.end);
                (d > c ? X : 0) + c - d > x && e.frontOuter1.attr({ fill: Y(f.frontOuter), "stroke-width": 0 });
                this.isDoughnut && (e.frontInner.attr({ fill: Y(f.frontInner), "stroke-width": 0 }), e.backInner.attr({
                    fill: Y(f.backInner),
                    "stroke-width": 0
                }))
            },
            createSlice: function() {
                var a = { stroke: !0, strokeWidth: !0, "stroke-width": !0, dashstyle: !0, "stroke-dasharray": !0, translateX: !0, translateY: !0, "stroke-opacity": !0, transform: !0, fill: !0, opacity: !0, ishot: !0, start: !0, end: !0, cursor: !0 },
                    b = function(b, c) {
                        var d, e, p = this, h = p._confObject, q, f = h.elements, k, m, n = h.Pie3DManager;
                        "string" === typeof b && void 0 !== c && null !== c && (d = b, b = {}, b[d] = c);
                        if (b && "string" !== typeof b) {
                            void 0 !== b.cx && (b.start = b.cx);
                            void 0 !== b.cy && (b.end = b.cy);
                            for (d in b)
                                if (e = b[d], a[d])
                                    if (h[d] =
                                        e, "ishot" === d || "cursor" === d) {
                                        q = {};
                                        q[d] = e;
                                        for (k in f)f[k].attr(q);
                                        p._attr(q)
                                    } else if ("transform" === d) {
                                        for (k in f)f[k].attr({ transform: b[d] });
                                        p._attr({ transform: b[d] })
                                    } else"stroke" === d || "strokeWidth" === d || "stroke-width" === d || "dashstyle" === d || "stroke-dasharray" === d ? (q = {}, q[d] = e, f.topBorder && f.topBorder.attr(q), f.startSlice.attr(q), f.endSlice.attr(q), f.bottomBorder.attr(q)) : "fill" === d || "start" !== d && "end" !== d || (m = !0);
                                else p._attr(d, e);
                            m && (n.updateSliceConf(h), n.refreshDrawing())
                        } else p = p._attr(b);
                        return p
                    },
                    c = function(a, b, c, d) {
                        var e = this._confObject.elements, p;
                        for (p in e)
                            if (c)e[p].drag(b, c, d);
                            else e[p].on(a, b);
                        return c ? this.drag(b, c, d) : this._on(a, b)
                    },
                    d = function() {
                        var a = this._confObject.elements, b;
                        for (b in a)a[b].hide();
                        return this._hide()
                    },
                    e = function() {
                        var a = this._confObject.elements, b;
                        for (b in a)a[b].show();
                        return this._show()
                    },
                    h = function() {
                        var a = this._confObject, b = a.elements, c;
                        for (c in b)b[c].destroy();
                        ma && (a.clipTop.destroy(), a.clipOuterFront.destroy(), a.clipOuterBack.destroy(), a.clipOuterFront1 &&
                            a.clipOuterFront1.destroy(), a.clipInnerFront && a.clipInnerFront.destroy(), a.clipInnerBack && a.clipInnerBack.destroy());
                        return this._destroy()
                    };
                return function(a, f, k, r, m, l, n, g, P, y) {
                    var Z = this.renderer;
                    k = this.parseColor(k, r);
                    a = { start: a, end: f, elements: {}, Pie3DManager: this };
                    f = this.slicingWallsArr;
                    r = a.elements;
                    var z, w = ma ? "litepath" : "path";
                    y && (this.colorObjs[n] = { color: k, borderColor: m, borderWidth: l, showBorderEffect: !1 }, y.hoverColorObj = this.parseColor(y.color, y.alpha), this.colorObjs[n].hoverProps = y);
                    this.updateSliceConf(a,
                        !0);
                    ma ? (y = { fill: Y(k.top), "stroke-width": 0 }, 1 !== P && (y.stroke = m, y["stroke-width"] = l), y = Z[w](a.clipTopPath, this.topGroup).attr(y), P && (r.topBorder = Z[w](a.clipTopBorderPath, this.topGroup).attr({ fill: Y(k.topBorder), "stroke-width": 0 }))) : (y = Z[w](a.clipTopPath, this.topGroup).attr({ fill: Y(k.top), "stroke-width": 0 }), r.topBorder = Z[w](a.clipTopBorderPath, this.topGroup).attr({ stroke: m, "stroke-width": l }));
                    r.bottom = Z[w](a.clipTopPath, this.bottomBorderGroup).attr({ fill: Y(k.bottom), "stroke-width": 0 });
                    r.bottomBorder =
                        Z[w](ma ? a.clipTopPath : a.clipTopBorderPath, this.bottomBorderGroup).attr({ stroke: m, "stroke-width": l });
                    r.frontOuter = Z[w](a.clipOuterFrontPath, this.slicingWallsFrontGroup).attr({ fill: Y(k.frontOuter), "stroke-width": 0 });
                    r.backOuter = Z[w](a.clipOuterBackPath, this.outerBackGroup).attr({ fill: Y(k.backOuter), "stroke-width": 0 });
                    r.startSlice = Z[w](a.startSlice, this.slicingWallsFrontGroup).attr({ fill: Y(k.startSlice), stroke: m, "stroke-width": l });
                    r.endSlice = Z[w](a.endSlice, this.slicingWallsFrontGroup).attr({
                        fill: Y(k.endSlice),
                        stroke: m,
                        "stroke-width": l
                    });
                    m = na(a.start);
                    l = na(a.end);
                    P = (m > l ? X : 0) + l - m;
                    P > x && (r.frontOuter1 = Z[w](a.clipOuterFrontPath1, this.slicingWallsFrontGroup).attr({ fill: Y(k.frontOuter), "stroke-width": 0 }), r.frontOuter1._conf = { index: m, isStart: .5, pIndex: n }, ma && (a.clipOuterFront1 = a.clipOuterFrontPath1));
                    r.frontOuter._conf = { index: Ka(l, m), isStart: .5, pIndex: n };
                    r.startSlice._conf = { index: m, isStart: 0, pIndex: n };
                    r.endSlice._conf = { index: l, isStart: 1, pIndex: n };
                    this.hasOnePoint && (r.startSlice.hide(), r.endSlice.hide());
                    this.isDoughnut ?
                        (r.frontInner = Z[w](a.clipInnerFrontPath, this.innerFrontGroup).attr({ fill: Y(k.frontInner), "stroke-width": 0 }), r.backInner = Z[w](a.clipInnerBackPath, this.innerBackGroup).attr({ fill: Y(k.backInner), "stroke-width": 0 }), r.backInner._conf = { index: Ka(l, m), isStart: .5, pIndex: n }, P > x ? ma ? f.push(r.startSlice, r.frontOuter1, r.frontOuter, r.backInner, r.endSlice) : f.push(r.startSlice, r.frontOuter1, r.frontOuter, r.endSlice) : ma ? f.push(r.startSlice, r.frontOuter, r.backInner, r.endSlice) : f.push(r.startSlice, r.frontOuter, r.endSlice)) :
                        P > x ? f.push(r.startSlice, r.frontOuter1, r.frontOuter, r.endSlice) : f.push(r.startSlice, r.frontOuter, r.endSlice);
                    if (void 0 !== g) {
                        for (z in r)r[z].tooltip(g);
                        y.tooltip(g)
                    }
                    ma && (a.clipTop = a.clipTopPath, a.clipOuterFront = a.clipOuterFrontPath, a.clipOuterBack = a.clipOuterBackPath, this.isDoughnut && (a.clipInnerFront = a.clipInnerFrontPath, a.clipInnerBack = a.clipInnerBackPath));
                    y._confObject = a;
                    a.thisElement = y;
                    y._destroy = y.destroy;
                    y.destroy = h;
                    y._show = y.show;
                    y.show = e;
                    y._hide = y.hide;
                    y.hide = d;
                    y._on = y.on;
                    y.on = c;
                    y._attr = y.attr;
                    y.attr = b;
                    this.pointElemStore.push(y);
                    return y
                }
            }()
        };
        La.prototype.constructor = La;
        n("renderer.pie3d", {
            type: "pie3d",
            isHovered: !1,
            translate: function() {
                var a = 0,
                    b = this.options,
                    c = b.series[0],
                    d = b.plotOptions.series.dataLabels,
                    e = b.plotOptions.pie3d,
                    h = g(c.startAngle, 0) % 360,
                    m = c.managedPieSliceDepth,
                    n = c.slicedOffset = e.slicedOffset,
                    x = this.canvasWidth,
                    r = this.canvasHeight,
                    Q = [this.canvasLeft + .5 * x, this.canvasTop + .5 * r - .5 * m],
                    l,
                    D,
                    s,
                    A,
                    y,
                    b = c.data,
                    ca,
                    z = ja(x, r),
                    v,
                    R,
                    B,
                    L = d.distance,
                    V = c.pieYScale,
                    O = c.pieSliceDepth,
                    C = c.slicedOffsetY =
                        n * V;
                Q.push(e.size, e.innerSize || 0);
                Q = oa(Q, function(a, b) { return(v = /%$/.test(a)) ? [x, r - m, z, z][b] * parseInt(a, 10) / 100 : a });
                Q[2] /= 2;
                Q[3] /= 2;
                Q.push(Q[2] * V);
                Q.push((Q[2] + Q[3]) / 2);
                Q.push(Q[5] * V);
                c.getX = function(a, b) {
                    s = f.asin((a - Q[1]) / (Q[2] + L));
                    return Q[0] + (b ? -1 : 1) * P(s) * (Q[2] + L)
                };
                c.center = Q;
                va(b, function(b) { a += b.y });
                c.labelsRadius = Q[2] + L;
                c.labelsRadiusY = c.labelsRadius * V;
                c.quadrantHeight = (r - m) / 2;
                c.quadrantWidth = x / 2;
                A = -h * N;
                A = w(1E3 * A) / 1E3;
                y = A + X;
                e = k(parseInt(d.style.fontSize, 10), 10) + 4;
                c.maxLabels = u(c.quadrantHeight /
                    e);
                c.labelFontSize = e;
                c.connectorPadding = k(d.connectorPadding, 5);
                c.isSmartLineSlanted = g(d.isSmartLineSlanted, !0);
                c.connectorWidth = k(d.connectorWidth, 1);
                c.enableSmartLabels = d.enableSmartLabels;
                c.Pie3DManager || (c.Pie3DManager = new La(Q[0], Q[1], Q[2], Q[3], V, O, this.layers.dataset, this.paper, 1 === c.data.length, c.use3DLighting));
                va(b, function(b) {
                    l = A;
                    ca = a ? b.y / a : 0;
                    A = w(1E3 * (A + ca * X)) / 1E3;
                    A > y && (A = y);
                    D = A;
                    b.shapeArgs = { start: w(1E3 * l) / 1E3, end: w(1E3 * D) / 1E3 };
                    b.centerAngle = s = (D + l) / 2 % X;
                    b.slicedTranslation = [
                        w(P(s) * n), w(Z(s) *
                            C)
                    ];
                    R = P(s) * Q[2];
                    c.radiusY = B = Z(s) * Q[4];
                    b.tooltipPos = [Q[0] + .7 * R, Q[1] + B];
                    b.percentage = 100 * ca;
                    b.total = a
                })
            },
            drawPlotPie3d: function(a, b) {
                this.translate();
                var c = this,
                    d = a.items,
                    e = a.data,
                    h = c.options,
                    f = h.plotOptions,
                    m = f.series,
                    n = c.layers,
                    r = c.elements.plots[0],
                    g = c.datasets[0],
                    f = f.series.dataLabels,
                    l = m.dataLabels.style,
                    m = k(a.moveDuration, m.animation.duration),
                    w = c.paper,
                    x = h.tooltip || {},
                    x = x && !1 !== x.enabled,
                    u = g.slicedOffset,
                    y = g.slicedOffsetY,
                    D = c.plotGraphicClick,
                    z = c.plotDragMove,
                    s = c.plotDragStart,
                    A = c.plotDragEnd,
                    B = c.plotMouseDown,
                    ca = c.plotMouseUp,
                    L = c.plotRollOver,
                    O = c.plotRollOut,
                    C = !!c.datasets[0].enableRotation,
                    G = b.showBorderEffect,
                    I = e.length,
                    h = h.chart.usePerPointLabelColor,
                    v = { fontFamily: l.fontFamily, fontSize: l.fontSize, lineHeight: l.lineHeight, fontWeight: l.fontWeight, fontStyle: l.fontStyle },
                    ja = function(a) { return function() { c.legendClick(a, !0, !1) } },
                    H = function(a) { return function() { return c.getEventArgs(a) } },
                    S = function(a) { return function(b, c, d, e, p) { z.call(a, b, c, d, e, p) } },
                    U = function(a) {
                        return function(b, c, d) {
                            s.call(a,
                                b, c, d)
                        }
                    },
                    T = function(a) { return function() { A.call(a) } },
                    X = function(a) { return function() { B.call(a) } },
                    V = function(a) { return function(b) { ca.call(a, b) } },
                    M = function(a) { return function(b) { O.call(a, b) } },
                    N = function(a) { return function(b) { L.call(a, b) } },
                    E,
                    F,
                    J,
                    ha,
                    ba,
                    $,
                    K,
                    ka,
                    ea,
                    aa;
                e && I || (e = []);
                r.singletonCase = 1 === I;
                r.chartPosition = Aa(c.container);
                r.pieCenter = g.center;
                r.timerThreshold = 30;
                for (aa = -1; ++aa < I;)
                    J = e[aa], l = J.y, ha = J.displayValue, v = J.sliced, ka = J.shapeArgs, E = J.centerAngle, ea = J.toolText, $ = (ba = !!J.link) || C || !J.doNotSlice,
                        null === l || void 0 === l || (F = d[aa]) || (b.data[aa].plot = F = d[aa] = { chart: c, index: aa, seriesData: r, value: l, angle: E, link: J.link, shapeArgs: ka, slicedX: v && !r.singletonCase ? P(E) * u : 0, slicedY: v && !r.singletonCase ? Z(E) * y : 0, sliced: v, labelText: ha, name: J.name, label: J.name, percentage: J.percentage, toolText: ea, originalIndex: I - aa - 1, style: J.style, graphic: g.Pie3DManager.createSlice(ka.start, ka.end, J.color, J._3dAlpha, J.borderColor, J.borderWidth, aa, x ? ea : "", G, J.rolloverProperties) }, b.data[aa].legendClick = ja(F), b.data[aa].getEventArgs =
                                H(F), F.graphic.plotItem = F, F.graphic.data("plotItem", F), F.transX = P(E) * u, F.transY = Z(E) * y, F.slicedTranslation = "t" + F.transX + "," + F.transY, E = { index: b.reversePlotOrder ? aa : I - 1 - aa, link: J.link, value: J.y, displayValue: J.displayValue, categoryLabel: J.categoryLabel, isSliced: J.sliced, toolText: J.toolText }, F.graphic.attr({ transform: "t" + F.slicedX + "," + F.slicedY, ishot: $, cursor: ba ? "pointer" : "" }).click(D).drag(S(F), U(F), T(F)).mousedown(X(F.graphic)).mouseup(V(F.graphic)).data("groupId", aa).data("eventArgs", E).mouseover(N(F)).mouseout(M(F)),
                            void 0 !== ha && (l = J.style, v = { fontFamily: l.fontFamily, fontSize: l.fontSize, lineHeight: l.lineHeight, fontWeight: l.fontWeight, fontStyle: l.fontStyle }, F.dataLabel = w.text(n.dataset).css(v).attr({ text: ha, title: J.originalText || "", fill: (h ? Y(J.color) : l.color) || "#000000", "text-bound": [l.backgroundColor, l.borderColor, l.borderThickness, l.borderPadding, l.borderRadius, l.borderDash], visibility: "hidden", ishot: $, cursor: ba ? "pointer" : "" }).data("eventArgs", E).hover(N(F), M(F)).click(D).mousedown(B, F.dataLabel).mouseup(ca,
                                F.dataLabel).data("plotItem", F), 0 < f.distance && (K = f.connectorWidth) && f.enableSmartLabels && (F.connector = w.path("M 0 0 l 0 0", n.dataset).attr({ "stroke-width": K, stroke: f.connectorColor || "#606060", visibility: "hidden", ishot: $, cursor: ba ? "pointer" : "" }).data("eventArgs", E).click(D).hover(N(F), M(F)).mousedown(B, F.connector).mouseup(ca, F.connector).data("plotItem", F))));
                g.Pie3DManager.refreshDrawing();
                0 < m ? c.animate(d, m) : c.placeDataLabels(!1, d)
            },
            rotate: function(a) {
                var b = this.datasets[0],
                    c = this.elements.plots[0].items,
                    d = b.slicedOffset,
                    e = b.slicedOffsetY,
                    h = b.startAngle,
                    f;
                a = isNaN(a) ? -b._lastAngle : a;
                f = (a - h) % 360;
                b.startAngle = k(a, b.startAngle) % 360;
                f = -(f * A) / 180;
                b.Pie3DManager && b.Pie3DManager.rotate(f);
                va(c, function(a) {
                    var b = a.graphic, c = a.shapeArgs, p = c.start += f, c = c.end += f, h = a.angle = na((p + c) / 2), p = a.sliced, c = P(h), h = Z(h);
                    a.slicedTranslation = [w(c * d), w(h * e)];
                    a.transX = a.slicedTranslation[0];
                    a.transY = a.slicedTranslation[1];
                    a.slicedX = p ? P(f) * d : 0;
                    a.slicedY = p ? Z(f) * e : 0;
                    b && p && a.graphic.attr({
                        transform: "t" + a.slicedTranslation[0] + "," +
                            a.slicedTranslation[1]
                    })
                });
                this.placeDataLabels(!0, c)
            },
            plotRollOver: function(a) {
                var b = this.chart, c = b.datasets[0].Pie3DManager;
                this.seriesData.isRotating || (sa.call(this.graphic, b, a, "DataPlotRollOver"), c.colorObjs[this.index] && c.onPlotHover(this.index, !0));
                b.isHovered = !0
            },
            plotRollOut: function(a) {
                var b = this.chart, c = b.datasets[0].Pie3DManager;
                this.seriesData.isRotating || (sa.call(this.graphic, b, a, "DataPlotRollOut"), c.colorObjs[this.index] && c.onPlotHover(this.index, !1));
                b.isHovered = !1
            },
            plotDragStart: function(a,
                b, c) {
                var d = this.seriesData, e = this.chart.datasets[0];
                e.enableRotation && (a = Na.call(c, a, b, d.pieCenter, d.chartPosition, e.pieYScale), e.dragStartAngle = a, e._lastAngle = -e.startAngle, e.startingAngleOnDragStart = e.startAngle)
            },
            plotDragEnd: function() {
                var a = this.chart, b = a.datasets[0], c = b.Pie3DManager, d = b.startAngle, e = this.seriesData, h = { hcJSON: { series: [{ startAngle: d }] } };
                a.disposed || ya(a.logic.chartInstance.jsVars._reflowData, h, !0);
                e.isRotating && (setTimeout(function() { e.isRotating = !1 }, 0), pa.raiseEvent("rotationEnd",
                { startingAngle: na(d, !0), changeInAngle: d - b.startingAngleOnDragStart }, a.logic.chartInstance), !a.isHovered && c.colorObjs[this.index] && c.onPlotHover(this.index, !1))
            },
            plotDragMove: function(a, b, c, d, e) {
                var h = this.chart;
                a = h.datasets[0];
                b = this.seriesData;
                h.options.series[0].enableRotation && !b.singletonCase && (b.isRotating || (b.isRotating = !0, pa.raiseEvent("rotationStart", { startingAngle: na(a.startAngle, !0) }, h.logic.chartInstance)), c = Na.call(e, c, d, b.pieCenter, b.chartPosition, a.pieYScale), d = c - a.dragStartAngle, a.dragStartAngle =
                    c, b.moveDuration = 0, a._lastAngle += 180 * d / A, c = (new Date).getTime(), !a._lastTime || a._lastTime + b.timerThreshold < c) && (a._lastTime || h.rotate(), b.timerId = setTimeout(function() { h.disposed && h.disposing || h.rotate() }, b.timerThreshold), a._lastTime = c)
            },
            animate: function(a, b) {
                var c, d, e, h = a.length, f, m, k, n = this, g, l = function() { n.disposed || n.disposing || n.placeDataLabels(!1, a) };
                if (n.datasets[0].alphaAnimation)
                    n.layers.dataset.attr({ opacity: 0 }), n.layers.dataset.animate({ opacity: 1 }, b, "ease-in", function() {
                        n.disposed || n.disposing ||
                            n.placeDataLabels(!1, a)
                    });
                else for (c = 0; c < h; c++)f = a[c], m = f.graphic, k = f.shapeArgs, f = 2 * A, m && (m.attr({ start: f, end: f }), g = k.start, k = k.end, d ? m.animateWith(d, e, { cx: g - f, cy: k - f }, b, "ease-in") : (e = ia.animation({ cx: g - f, cy: k - f }, b, "ease-in", l), d = m.animate(e)))
            },
            placeDataLabels: function() {
                var a = function(a, b) { return a.point.value - b.point.value }, b = function(a, b) { return a.angle - b.angle }, c = ["start", "start", "end", "end"], d = [-1, 1, 1, -1], e = [1, 1, -1, -1];
                return function(n, g) {
                    var u = this.datasets[0],
                        s = this.smartLabel,
                        r = this.options.plotOptions.series.dataLabels,
                        Q = r.style,
                        l = k(D(parseFloat(Q.lineHeight)), 12),
                        A = Fa(r.placeInside, !1),
                        ca = r.skipOverlapLabels,
                        v = r.manageLabelOverflow,
                        y = r.connectorPadding,
                        V = r.connectorWidth,
                        z,
                        N,
                        R = 0 < r.distance,
                        B = u.center,
                        Y = B[1],
                        ha = B[0],
                        O = B[2],
                        C = B[4],
                        G = [[], [], [], []],
                        I,
                        ba,
                        W,
                        H = this.canvasLeft,
                        S = this.canvasTop,
                        U = this.canvasWidth,
                        T,
                        $,
                        aa,
                        M,
                        ka,
                        E,
                        F,
                        J,
                        K,
                        ea,
                        fa,
                        na = u.labelsRadius,
                        ia = w(100 * u.labelsRadiusY) / 100,
                        la = u.labelFontSize,
                        ga = la,
                        ma = ga / 2,
                        y = [y, y, -y, -y],
                        pa = u.maxLabels,
                        oa = u.isSmartLineSlanted,
                        Ia = u.enableSmartLabels,
                        xa,
                        u = u.pieSliceDepth / 2;
                    n ||
                        s.setStyle(Q);
                    if (1 == g.length)M = g[0], xa = M.dataLabel, M.slicedTranslation = [H, S], xa && (xa.attr({ visibility: h, "text-anchor": "middle", x: ha, y: Y + ma - 2 }), xa.x = ha);
                    else if (A)
                        va(g, function(a) {
                            if (xa = a.dataLabel) {
                                fa = a.angle;
                                ea = Y + B[6] * Z(fa) + ma - 2;
                                F = ha + B[5] * P(fa);
                                xa.x = F;
                                xa._x = F;
                                xa.y = ea;
                                if (a.sliced) {
                                    a = a.slicedTranslation;
                                    var b = a[1] - S;
                                    F += a[0] - H;
                                    ea += b
                                }
                                xa.attr({ visibility: h, align: "middle", x: F, y: ea })
                            }
                        });
                    else {
                        va(g, function(a) {
                            if (xa = a.dataLabel)
                                fa = a.angle, 0 > fa && (fa = X + fa), I = 0 <= fa && fa < Wa ? 1 : fa < x ? 2 : fa < Da ? 3 : 0, G[I].push({
                                    point: a,
                                    angle: fa
                                })
                        });
                        for (W = A = 4; W--;) {
                            if (ca && (M = G[W].length - pa, 0 < M))for (G[W].sort(a), ba = G[W].splice(0, M), $ = 0, aa = ba.length; $ < aa; $ += 1)M = ba[$].point, M.dataLabel.attr({ visibility: "hidden" }), M.connector && M.connector.attr({ visibility: "hidden" });
                            G[W].sort(b)
                        }
                        W = m(G[0].length, G[1].length, G[2].length, G[3].length);
                        ia = m(ja(W, pa) * ga, ia + ga);
                        G[1].reverse();
                        G[3].reverse();
                        for (s.setStyle(Q); A--;) {
                            $ = G[A];
                            aa = $.length;
                            ca || (ga = aa > pa ? ia / aa : la, ma = ga / 2);
                            M = aa * ga;
                            Q = ia;
                            for (W = 0; W < aa; W += 1, M -= ga)
                                N = L(ia * Z($[W].angle)), Q < N ? N = Q : N < M && (N = M),
                                    Q = ($[W].oriY = N) - ga;
                            ba = c[A];
                            aa = ia - (aa - 1) * ga;
                            Q = 0;
                            for (W = $.length - 1; 0 <= W; W -= 1, aa += ga)
                                M = $[W].point, fa = $[W].angle, ka = M.sliced, xa = M.dataLabel, N = L(ia * Z(fa)), N < Q ? N = Q : N > aa && (N = aa), Q = N + ga, J = (N + $[W].oriY) / 2, N = ha + e[A] * na * P(f.asin(J / ia)), J *= d[A], J += Y, K = Y + C * Z(fa), E = ha + O * P(fa), (2 > A && N < E || 1 < A && N > E) && (N = E), F = N + y[A], ea = J + ma - 2, z = F + y[A], xa.x = z, xa._x = z, v && (T = 1 < A ? z - this.canvasLeft : this.canvasLeft + U - z, s.setStyle(M.style), l = k(D(parseFloat(M.style.lineHeight)), 12) + 2 * D(parseFloat(M.style.border), 12), l = s.getSmartText(M.labelText,
                                    T, l), xa.attr({ text: l.text, title: l.tooltext || "" })), fa < x && (J += u, K += u, ea += u), xa.y = ea, ka && (l = M.transX, ka = M.transY, F += l, N += l, E += l, K += ka, z += l), xa.attr({ visibility: h, "text-anchor": ba, x: z, y: J }), R && V && Ia && (z = M.connector, M.connectorPath = N = ["M", E, K, "L", oa ? N : E, J, F, J], z ? (z.attr({ path: N }), z.attr("visibility", h)) : M.connector = z = this.paper.path(N).attr({ "stroke-width": V, stroke: r.connectorColor || "#606060", visibility: h }))
                        }
                    }
                }
            }()
        }, n["renderer.piebase"]);
        n("renderer.pie", {
            drawDoughnutCenterLabel: function(a, b, c, d, e, f, k) {
                var m =
                    this.options.series[0];
                f = f || m.lastCenterLabelConfig;
                var n = this.paper, g = this.smartLabel, P = this.layers.dataset, l = this.elements, Z = f.padding, x = 2 * f.textPadding, w = { fontFamily: f.font, fontSize: f.fontSize + "px", lineHeight: 1.2 * f.fontSize + "px", fontWeight: f.bold ? "bold" : "", fontStyle: f.italic ? "italic" : "" }, y = 1.414 * (.5 * d - Z) - x;
                e = 1.414 * (.5 * e - Z) - x;
                var u;
                g.setStyle(w);
                g = g.getSmartText(a, y, e);
                (e = l.doughnutCenterLabel) ? (e.attr("text") !== a && this.centerLabelChange(a), u = l.centerLabelOvalBg) : (f.bgOval && (l.centerLabelOvalBg =
                    u = n.circle(b, c, .5 * d - Z, P)), e = l.doughnutCenterLabel = n.text(P).hover(this.centerLabelRollover, this.centerLabelRollout).click(this.centerLabelClick), e.chart = this);
                a ? (e.css(w).attr({ x: b, y: c, text: g.text, visibility: h, title: f.toolText ? "" : g.tooltext || "", fill: Y({ FCcolor: { color: f.color, alpha: f.alpha } }), "text-bound": f.bgOval ? "none" : [Y({ FCcolor: { color: f.bgColor, alpha: f.bgAlpha } }), Y({ FCcolor: { color: f.borderColor, alpha: f.borderAlpha } }), f.borderThickness, f.textPadding, f.borderRadius] }).tooltip(f.toolText), f.bgOval &&
                    u && u.attr({ visibility: h, fill: Ya(f.bgColor), "fill-opacity": f.bgAlpha / 100, stroke: Ya(f.borderColor), "stroke-width": f.borderThickness, "stroke-opacity": f.borderAlpha / 100 })) : (e.attr("visibility", "hidden"), u && u.attr("visibility", "hidden"));
                k && (m.lastCenterLabelConfig = f)
            },
            centerLabelRollover: function() {
                var a = this.chart,
                    b = a.fusionCharts,
                    c = a.options.series[0].lastCenterLabelConfig,
                    b = {
                        height: b.args.height,
                        width: b.args.width,
                        pixelHeight: b.ref.offsetHeight,
                        pixelWidth: b.ref.offsetWidth,
                        id: b.args.id,
                        renderer: b.args.renderer,
                        container: b.options.containerElement,
                        centerLabelText: c && c.label
                    };
                this.attr("text") && pa.raiseEvent("centerLabelRollover", b, a.logic.chartInstance, this, a.hoverOnCenterLabel)
            },
            centerLabelRollout: function() {
                var a = this.chart, b = a.fusionCharts, c = a.options.series[0].lastCenterLabelConfig, b = { height: b.args.height, width: b.args.width, pixelHeight: b.ref.offsetHeight, pixelWidth: b.ref.offsetWidth, id: b.args.id, renderer: b.args.renderer, container: b.options.containerElement, centerLabelText: c && c.label };
                this.attr("text") &&
                    pa.raiseEvent("centerLabelRollout", b, a.logic.chartInstance, this, a.hoverOffCenterLabel)
            },
            centerLabelClick: function() {
                var a = this.chart, b = a.fusionCharts, c = a.options.series[0].lastCenterLabelConfig, b = { height: b.args.height, width: b.args.width, pixelHeight: b.ref.offsetHeight, pixelWidth: b.ref.offsetWidth, id: b.args.id, renderer: b.args.renderer, container: b.options.containerElement, centerLabelText: c && c.label };
                this.attr("text") && pa.raiseEvent("centerLabelClick", b, a.logic.chartInstance)
            },
            centerLabelChange: function(a) {
                var b =
                    this.fusionCharts;
                pa.raiseEvent("centerLabelChanged", { height: b.args.height, width: b.args.width, pixelHeight: b.ref.offsetHeight, pixelWidth: b.ref.offsetWidth, id: b.args.id, renderer: b.args.renderer, container: b.options.containerElement, centerLabelText: a }, this.logic.chartInstance)
            },
            hoverOnCenterLabel: function() {
                var a = this.chart.options.series[0].lastCenterLabelConfig;
                (a.hoverColor || a.hoverAlpha) && this.attr({ fill: Y({ FCcolor: { color: a.hoverColor || a.color, alpha: a.hoverAlpha || a.alpha } }) })
            },
            hoverOffCenterLabel: function() {
                var a =
                    this.chart.options.series[0].lastCenterLabelConfig;
                (a.hoverColor || a.hoverAlpha) && this.attr({ fill: Y({ FCcolor: { color: a.color, alpha: a.alpha } }) })
            },
            drawPlotPie: function(a, b) {
                var c = this,
                    d = a.items,
                    e = a.data,
                    f = c.options,
                    m = f.series[0],
                    n = f.plotOptions,
                    g = n.pie,
                    r = n.series,
                    w = c.layers,
                    l = w.dataset,
                    u = c.elements.plots[0],
                    n = n.series.dataLabels,
                    A = r.dataLabels.style,
                    s = r.shadow,
                    r = k(a.moveDuration, r.animation.duration),
                    y = c.paper,
                    D = f.tooltip || {},
                    D = D && !1 !== D.enabled,
                    z = ((b.startAngle *= -x / 180) || 0) % X,
                    ca = g.slicedOffset,
                    v = b.valueTotal,
                    B = X / v,
                    L = c.canvasLeft + .5 * c.canvasWidth,
                    N = c.canvasTop + .5 * c.canvasHeight,
                    O = .5 * g.size,
                    g = .5 * (g.innerSize || 0),
                    C = c.plotGraphicClick,
                    G = c.plotDragMove,
                    I = c.plotDragStart,
                    ja = c.plotDragEnd,
                    W = c.plotMouseDown,
                    H = c.plotMouseUp,
                    S = c.plotRollOver,
                    U = c.plotRollOut,
                    T = !!c.datasets[0].enableRotation,
                    V = e.length,
                    f = f.chart.usePerPointLabelColor,
                    ha = m.centerLabelConfig,
                    M = ha.label,
                    $ = { fontFamily: A.fontFamily, fontSize: A.fontSize, lineHeight: A.lineHeight, fontWeight: A.fontWeight, fontStyle: A.fontStyle },
                    E,
                    F,
                    J,
                    aa,
                    ba,
                    ea,
                    K,
                    ka,
                    fa,
                    ga,
                    na =
                        a.shadowGroup,
                    la,
                    ma,
                    Da,
                    pa,
                    oa,
                    Ia = function(a) { return function() { c.legendClick(a, !0, !1) } },
                    ra = function(a) { return function() { return c.getEventArgs(a) } },
                    Ma = function() { c.disposed || c.disposing || c.paper.ca.redrawDataLabels || (c.placeDataLabels(!1, d, a), c.paper.ca.redrawDataLabels = c.redrawDataLabels) };
                e && V || (e = []);
                na || (na = a.shadowGroup = y.group(l).toBack());
                u.singletonCase = 1 === V;
                u.chartPosition || (u.chartPosition = Aa(c.container));
                u.pieCenter = [L, N];
                u.timerThreshold = 30;
                fa = ka = z;
                for (la = V; la--;)
                    F = e[la], $ = F.y, J = F.displayValue,
                        ba = F.sliced, A = F.toolText, ea = (aa = !!F.link) || T || !F.doNotSlice, null !== $ && void 0 !== $ && (E = F.color.FCcolor, E.r = O, E.cx = L, E.cy = N, F.rolloverProperties && (E = F.rolloverProperties.color.FCcolor, E.r = O, E.cx = L, E.cy = N), fa = ka, ka -= u.singletonCase ? X : $ * B, K = .5 * (ka + fa), r ? pa = oa = z : (pa = ka, oa = fa), (E = d[la]) || (b.data[la].plot = E = d[la] = {
                                chart: c,
                                index: la,
                                seriesData: u,
                                value: $,
                                angle: K,
                                slicedX: P(K) * ca,
                                slicedY: Z(K) * ca,
                                sliced: ba,
                                labelText: J,
                                toolText: A,
                                label: F.name,
                                link: F.link,
                                percentage: v ? $ * v / 100 : 0,
                                originalIndex: V - la - 1,
                                style: F.style,
                                color: F.color,
                                borderColor: F.borderColor,
                                borderWidth: F.borderWidth,
                                rolloverProperties: F.rolloverProperties,
                                center: [L, N],
                                innerDiameter: 2 * g,
                                centerLabelConfig: F.centerLabelConfig,
                                graphic: y.ringpath(L, N, O, g, pa, oa, w.dataset).attr({ "stroke-width": F.borderWidth, "stroke-linejoin": "round", stroke: F.borderColor, fill: Y(F.color), "stroke-dasharray": F.dashStyle, redrawDataLabels: z, ishot: ea, cursor: aa ? "pointer" : "" }).shadow(s && F.shadow, na).drag(G, I, ja).mousedown(W).mouseup(H).hover(S, U)
                            }, E.graphic.click(C), D && E.graphic.tooltip(A),
                            b.data[la].legendClick = Ia(E), b.data[la].getEventArgs = ra(E), E.graphic.data("plotItem", E), aa = { index: b.reversePlotOrder ? la : V - 1 - la, link: F.link, value: F.y, displayValue: F.displayValue, categoryLabel: F.categoryLabel, isSliced: F.sliced, toolText: F.toolText }, E.graphic.data("eventArgs", aa), void 0 !== J && (A = F.style, $ = { fontFamily: A.fontFamily, fontSize: A.fontSize, lineHeight: A.lineHeight, fontWeight: A.fontWeight, fontStyle: A.fontStyle }, E.dataLabel = y.text(l).css($).attr({
                                text: J,
                                fill: (f ? Y(F.color) : A.color) || "#000000",
                                "text-bound": [
                                    A.backgroundColor,
                                    A.borderColor, A.borderThickness, A.borderPadding, A.borderRadius, A.borderDash
                                ],
                                ishot: ea,
                                visibility: "hidden"
                            }).click(C).drag(G, I, ja).mousedown(W).mouseup(H).hover(S, U).data("eventArgs", aa).hide(), E.dataLabel.data("plotItem", E), 0 < n.distance && (ga = n.connectorWidth) && n.enableSmartLabels && (E.connector = y.path("M 0 0 l 0 0", l).attr({ "stroke-width": ga, stroke: n.connectorColor || "#606060", visibility: h, ishot: !0 }).click(C).data("eventArgs", aa).drag(G, I, ja).mousedown(W).mouseup(H).hover(S, U), E.connector.data("plotItem",
                                E)))), E.angle = K, E.transX = P(K) * ca, E.transY = Z(K) * ca, E.slicedTranslation = "t" + P(K) * ca + "," + Z(K) * ca, r ? ma ? E.graphic.animateWith(ma, Da, { ringpath: [L, N, O, g, ka, fa], transform: E.sliced ? E.slicedTranslation : "" }, r, "easeIn") : (Da = ia.animation({ ringpath: [L, N, O, g, ka, fa], redrawDataLabels: c, transform: E.sliced ? E.slicedTranslation : "" }, r, "easeIn", Ma), ma = E.graphic.animate(Da)) : E.graphic.attr({ transform: E.sliced ? E.slicedTranslation : "" }));
                M && g && c.drawDoughnutCenterLabel(M, L, N, 2 * g, 2 * g, ha, !0);
                m.lastCenterLabelConfig = ha;
                r ? m.doughnutCenterLabel &&
                    m.doughnutCenterLabel.attr({ "fill-opacity": 0 }).animate(ia.animation({ "fill-opacity": 100 }, 100).delay(100 < r ? r - 100 : 0)) : c.placeDataLabels(!1, d, a)
            },
            rotate: function(a, b) {
                var c = a.items, d = a.data, e = this.options.plotOptions.pie, f = e.slicedOffset, h = X / b.valueTotal, m = this.canvasLeft + .5 * this.canvasWidth, k = this.canvasTop + .5 * this.canvasHeight, n = .5 * e.size, e = .5 * (e.innerSize || 0), g, l, u, w, x;
                u = (b.startAngle || 0) % X;
                for (x = d.length; x--;)
                    g = d[x], l = g.y, null !== l && void 0 !== l && (g = c[x], w = u, u -= g.seriesData.singletonCase ? X : l * h, l = .5 *
                    (u + w), g.angle = l, g.transX = P(l) * f, g.transY = Z(l) * f, g.slicedTranslation = "t" + P(l) * f + "," + Z(l) * f, g.graphic.attr({ ringpath: [m, k, n, e, u, w], transform: g.sliced ? g.slicedTranslation : "" }));
                this.placeDataLabels(!0, c, a)
            }
        }, n["renderer.piebase"])
    }, [3, 2, 2, "sr4"]
]);
FusionCharts.register("module", [
    "private", "modules.renderer.js-zoomline", function() {
        var Aa = this,
            oa = Aa.hcLib,
            na = Aa.window,
            Ka = /msie/i.test(na.navigator.userAgent) && !na.opera,
            Na = oa.chartAPI,
            La = oa.chartAPI,
            pa = oa.extend2,
            v = oa.raiseEvent,
            ia = oa.pluck,
            s = oa.pluckNumber,
            Ha = oa.getFirstColor,
            K = oa.graphics.convertColor,
            Ua = oa.bindSelectionEvent,
            g = oa.createTrendLine,
            ta = oa.parseUnsafeString,
            Ea = oa.regescape,
            k = oa.Raphael,
            Fa = oa.hasTouch,
            Va = oa.getMouseCoordinate,
            ga = oa.FC_CONFIG_STRING,
            ua = "rgba(192,192,192," + (Ka ? .002 :
                1E-6) + ")",
            ya = na.Math,
            Ba = ya.ceil,
            Y = ya.floor,
            Oa = ya.max,
            Sa = ya.min,
            ma = ya.cos,
            va = ya.sin,
            Ca = na.parseFloat,
            Pa = na.parseInt,
            sa;
        pa(oa.eventList, { zoomed: "FC_Zoomed", pinned: "FC_Pinned", resetzoomchart: "FC_ResetZoomChart" });
        Na("zoomline", {
            friendlyName: "Zoomable and Panable Multi-series Line Chart",
            rendererId: "zoomline",
            standaloneInit: !0,
            hasVDivLine: !0,
            defaultSeriesType: "stepzoom",
            canvasborderthickness: 1,
            defaultPlotShadow: 1,
            chart: function() {
                var b = this.base.chart.apply(this, arguments),
                    e = b[ga],
                    h = this.dataObj.chart,
                    f = this.colorManager.getColor("canvasBorderColor");
                pa(b.chart, {
                    animation: !1,
                    zoomType: "x",
                    canvasPadding: s(h.canvaspadding, 0),
                    scrollColor: Ha(ia(h.scrollcolor, this.colorManager.getColor("altHGridColor"))),
                    scrollShowButtons: !!s(h.scrollshowbuttons, 1),
                    scrollHeight: s(h.scrollheight, 16) || 16,
                    scrollBarFlat: e.flatScrollBars,
                    allowPinMode: s(h.allowpinmode, 1),
                    skipOverlapPoints: s(h.skipoverlappoints, 1),
                    showToolBarButtonTooltext: s(h.showtoolbarbuttontooltext, 1),
                    btnResetChartTooltext: ia(h.btnresetcharttooltext, "Reset Chart"),
                    btnZoomOutTooltext: ia(h.btnzoomouttooltext, "Zoom out one level"),
                    btnSwitchToZoomModeTooltext: ia(h.btnswitchtozoommodetooltext, "<strong>Switch to Zoom Mode</strong><br/>Select a subset of data to zoom into it for detailed view"),
                    btnSwitchToPinModeTooltext: ia(h.btnswitchtopinmodetooltext, "<strong>Switch to Pin Mode</strong><br/>Select a subset of data and compare with the rest of the view"),
                    pinPaneFill: K(ia(h.pinpanebgcolor, f), s(h.pinpanebgalpha, 15)),
                    zoomPaneFill: K(ia(h.zoompanebgcolor, "#b9d5f1"), s(h.zoompanebgalpha,
                        30)),
                    zoomPaneStroke: K(ia(h.zoompanebordercolor, "#3399ff"), s(h.zoompaneborderalpha, 80)),
                    crossline: {
                        enabled: s(h.showcrossline, 1),
                        line: { "stroke-width": s(h.crosslinethickness, 1), stroke: Ha(ia(h.crosslinecolor, "#000000")), "stroke-opacity": s(h.crosslinealpha, 20) / 100 },
                        labelEnabled: s(h.showcrosslinelabel, h.showcrossline, 1),
                        labelstyle: { fontSize: Ca(h.crosslinelabelsize) ? Ca(h.crosslinelabelsize) + "px" : e.outCanvasStyle.fontSize, fontFamily: ia(h.crosslinelabelfont, e.outCanvasStyle.fontFamily) },
                        valueEnabled: s(h.showcrosslinevalues,
                            h.showcrossline, 1),
                        valuestyle: { fontSize: Ca(h.crosslinevaluesize) ? Ca(h.crosslinevaluesize) + "px" : e.inCanvasStyle.fontSize, fontFamily: ia(h.crosslinevaluefont, e.inCanvasStyle.fontFamily) }
                    },
                    useCrossline: s(h.usecrossline, 1),
                    tooltipSepChar: ia(h.tooltipsepchar, ", ")
                });
                return b
            },
            preSeriesAddition: function() {
                var b = this.dataObj,
                    e = b.chart,
                    h = this.hcJSON,
                    f = h[ga],
                    k = this.smartLabel,
                    g = s(e.compactdatamode, 0),
                    ca = ia(e.dataseparator, "|"),
                    w = s(e.showlabels, 1),
                    v = e.labeldisplay && e.labeldisplay.toLowerCase(),
                    m = w && s(e.labelheight),
                    L = "rotate" === v ? 270 : s(e.rotatelabels, 1) ? 270 : 0,
                    A = h.xAxis.labels.style,
                    D = Ca(A.lineHeight),
                    u = h.chart.labelPadding = s(e.labelpadding, .2 * D) + h.chart.plotBorderWidth,
                    ha,
                    N,
                    V,
                    x = 0,
                    Y = -1,
                    X,
                    K,
                    la;
                0 > m && (m = void 0);
                0 > u && (u = (h.chart.plotBorderWidth || 0) + 2);
                ha = (ha = b.categories) && ha[0] || {};
                b = ha.category;
                delete ha.category;
                h.categories = v = pa({ data: N = g && b && b.split && b.split(ca) || b || [], rotate: L, wrap: "none" !== v }, ha);
                void 0 !== b && (ha.category = b);
                ha = N.length || 0;
                if (X = !g && w && 0 !== m && ha || 0) {
                    for (; X--;)
                        N[X] = N[X] && (V = N[X].label || "") &&
                        ((K = V.length) > x && (x = K, Y = X, V) || V) || "";
                    x && (V = N[Y])
                } else if (g && ha && !m)
                    if (L) {
                        g = na.document.createElement("div");
                        m = na.document.createElement("span");
                        g.setAttribute("class", "fusioncharts-zoomline-localsmartlabel");
                        g.style.cssText = "display:block;width:1px;position:absolute;";
                        for (la in A)g.style[la] = A[la];
                        m.innerHTML = b.replace(/\s*/g, "").replace(/\{br\}/ig, "<br />").replace(new RegExp(Ea(ca), "g"), " ");
                        g.appendChild(m);
                        na.document.body.appendChild(g);
                        m = m.offsetWidth || void 0;
                        g.parentNode.removeChild(g)
                    } else
                        V =
                            N[ha - 1] || N[0];
                void 0 !== m && 0 !== m || !w || (V ? (k.setStyle(A), V = k.getSmartText(V), m = L ? V.width : V.height) : m = D * (L && 3 || 1));
                m > .3 * f.height && (m = .3 * f.height);
                v.labelHeight = m && m + 6 || 0;
                v.show = m && w || 0;
                v.css = pa({}, A);
                L ? (v.css.rotation = L, v.css["text-anchor"] = "end") : v.css["vertical-align"] = "top";
                h.xAxis.min = 0;
                h.xAxis.max = ha && ha - 1 || 0;
                m += s(e.scrollheight, 16) || 16;
                h.chart.marginBottom += u;
                f.marginBottomExtraSpace += m;
                ia(e.caption, e.subcaption) || (f.marginTopExtraSpace += 16)
            },
            series: function() {
                var b = this.dataObj,
                    e = b.chart,
                    h = b.dataset,
                    f = this.hcJSON,
                    k = f[ga],
                    P = k[0],
                    v = f.series,
                    w = s(e.yaxismaxvalue),
                    ja = s(e.yaxisminvalue),
                    m = s(e.forceyaxislimits, 0),
                    L = s(e.compactdatamode, 0),
                    A = ia(e.dataseparator, "|"),
                    D = Ea(e.indecimalseparator),
                    u = Ea(e.inthousandseparator),
                    ha = s(e.drawanchors, e.showanchors, 1),
                    N = !!s(e.showlegend, 1),
                    V,
                    x,
                    Y,
                    X,
                    K,
                    la = Infinity,
                    ea = -Infinity,
                    $;
                K = f.categories.data.length;
                if (h && h.length && K) {
                    D && (D = new RegExp(D, "g"));
                    u && (u = new RegExp(u, "g"));
                    !u && !D && L && m && void 0 !== w && void 0 !== ja ? (m = !0, ea = Oa(w, ja), la = Sa(ja, w)) : m = !1;
                    w = 0;
                    for (ja = h.length; w <
                        ja; w++) {
                        V = h[w];
                        Y = V.data;
                        delete V.data;
                        L ? (X = Y || "", u && (X = X.replace(u, "")), D && (X = X.replace(D, ".")), X = X.split(A)) : X = Y || [];
                        X.length > K && (X.length = K);
                        $ = X.length;
                        if (L) {
                            if (!m)for (; $--;)x = Ca(X[$]), isNaN(x) && (x = void 0), x > ea && (ea = x), x <= la && (la = x), X[$] = x
                        } else for (; $--;)x = X[$] && X[$].value || "", u && (x = x.replace(u, "")), D && (x = x.replace(D, ".")), x = Ca(x), isNaN(x) && (x = void 0), x > ea && (ea = x), x <= la && (la = x), X[$] = x;
                        v.push(x = {
                            index: w,
                            type: "zoomline",
                            data: X,
                            name: V.seriesname || "",
                            showInLegend: V.seriesname && s(V.includeinlegend, 1) &&
                                N || !1,
                            showAnchors: s(V.drawanchors, V.showanchors, ha),
                            visible: !s(V.initiallyhidden, 0),
                            lineWidth: 2
                        });
                        X.length = K;
                        void 0 !== Y && (V.data = Y);
                        x.attrs = this.seriesGraphicsAttrs(V);
                        V = x.attrs.anchors;
                        x.color = x.attrs.graphics.stroke;
                        x.ancorRadius = V.r + V["stroke-width"] / 2;
                        x.marker = { fillColor: V.fill, lineColor: V.stroke, lineWidth: 1, symbol: "circle" }
                    }
                    -Infinity !== ea && Infinity !== la || (ea = la = void 0);
                    m = Pa(s(e.displaystartindex, 1), 10) - 1;
                    A = Pa(s(e.displayendindex, K || 2), 10) - 1;
                    1 > (h = s(e.pixelsperpoint, 15)) && (h = 1);
                    (v = s(e.pixelsperlabel,
                        e.xaxisminlabelwidth, f.categories.rotate ? 20 : 60)) < h && (v = h);
                    (0 > m || m >= (K - 1 || 1)) && (m = 0);
                    (A <= m || A > (K - 1 || 1)) && (A = K - 1 || 1);
                    f.stepZoom = { cnd: s(e.connectnulldata, 0), amrd: s(e.anchorminrenderdistance, 20), nvl: s(e.numvisiblelabels, 0), cdm: L, oppp: h, oppl: v, dsi: m, dei: A, vdl: A - m, dmax: P.max = ea, dmin: P.min = la, clen: K, offset: 0, step: 1, llen: 0, alen: 0, ddsi: m, ddei: A, ppc: 0 };
                    this.configureAxis(f, b);
                    b.trendlines && g(b.trendlines, f.yAxis, k, !1, this.isBar)
                }
            },
            seriesGraphicsAttrs: function(b) {
                var e = this.dataObj.chart,
                    h = "0" != (b.dashed || e.linedashed ||
                        "0"),
                    f,
                    g,
                    h = { "stroke-width": s(b.linethickness, e.linethickness, 2), stroke: Ha(ia(b.color, e.linecolor, this.colorManager.getPlotColor())), "stroke-opacity": s(b.alpha, e.linealpha, 100) / 100, "stroke-dasharray": h ? [s(b.linedashlen, e.linedashlen, 5), s(b.linedashgap, e.linedashgap, 4)] : "none", "stroke-linejoin": "round", "stroke-linecap": "round" };
                f = pa({}, h);
                g = h["stroke-width"] + s(e.pinlinethicknessdelta, 1);
                f["stroke-width"] = 0 < g && g || 0;
                f["stroke-dasharray"] = [3, 2];
                return{
                    graphics: h,
                    pin: f,
                    shadow: {
                        opacity: h["stroke-opacity"],
                        apply: s(e.showshadow, +!k.vml)
                    },
                    anchors: {
                        "stroke-linejoin": "round",
                        "stroke-linecap": "round",
                        r: s(b.anchorradius, e.anchorradius, h["stroke-width"] + 2),
                        stroke: Ha(ia(b.anchorbordercolor, e.anchorbordercolor, h.stroke)),
                        "stroke-opacity": s(b.anchorborderalpha, e.anchorborderalpha, 100) / 100,
                        "stroke-width": s(b.anchorborderthickness, e.anchorborderthickness, h["stroke-width"]),
                        fill: Ha(ia(b.anchorbgcolor, e.anchorbgcolor, "#ffffff")),
                        "fill-opacity": s(b.anchorbgalpha, e.anchorbgalpha, 100) / 100,
                        opacity: s(b.anchoralpha, e.anchoralpha,
                            100) / 100
                    },
                    anchorShadow: s(e.anchorshadow, e.showshadow, +!k.vml) && { apply: !0, opacity: s(b.anchoralpha, e.anchoralpha, 100) / 100 }
                }
            },
            eiMethods: {
                zoomOut: function() {
                    var b = this.jsVars, e;
                    if (b && (e = b.hcObj))return e.zoomOut && b.hcObj.zoomOut()
                },
                zoomTo: function(b, e) {
                    var h = this.jsVars, f;
                    if (h && (f = h.hcObj))return f.zoomRange && h.hcObj.zoomRange(b, e)
                },
                resetChart: function() {
                    var b = this.jsVars, e;
                    b && (e = b.hcObj) && (e.pinRangePixels && b.hcObj.pinRangePixels(), e.resetZoom && b.hcObj.resetZoom())
                },
                setZoomMode: function(b) {
                    var e = this.jsVars,
                        h;
                    e && (h = e.hcObj) && h.activatePin && h.activatePin(!b)
                },
                getViewStartIndex: function() {
                    var b = this.jsVars, e;
                    if (b && b.hcObj && (e = b.hcObj._zoominfo))return e.ddsi
                },
                getViewEndIndex: function() {
                    var b = this.jsVars, e;
                    if (b && b.hcObj && (e = b.hcObj._zoominfo))return b = e.ddei - 1, (b >= e.clen ? e.clen : b) - 1
                }
            }
        }, Na.msline);
        La("renderer.zoomline", {
            resetZoom: function() {
                var b = this._zoomhistory, e = this.options.stepZoom;
                if (!b.length)return!1;
                b.length = 0;
                this.zoomTo(e.dsi, e.dei) && v("zoomReset", this._zoomargs, this.fusionCharts, [this.fusionCharts.id]);
                return!0
            },
            zoomOut: function() {
                var b = this._zoomhistory.pop(), e = this.options.stepZoom, h, f, k;
                b ? (h = b.dsi, f = b.dei) : this._prezoomed && (h = 0, f = e.clen - 1);
                (k = this.zoomTo(h, f)) && Aa.raiseEvent("zoomedout", k, this.fusionCharts);
                return!0
            },
            zoomRangePixels: function(b, e) {
                var h = this._zoomhistory, f = this._zoominfo, k = f.ppp, f = f.ddsi, g;
                h.push(this._zoominfo);
                (g = this.zoomTo(f + Y(b / k), f + Y(e / k))) ? Aa.raiseEvent("zoomedin", g, this.fusionCharts) : h.pop()
            },
            zoomRange: function(b, e) {
                var h = this._zoomhistory, f;
                h.push(this._zoominfo);
                (f =
                    this.zoomTo(+b, +e)) ? Aa.raiseEvent("zoomedin", f, this.fusionCharts) : h.pop()
            },
            zoomTo: function(b, e) {
                var h = this.xlabels.data, f = this._zoominfo, k = this._zoomhistory, g = f.clen;
                0 > b && (b = 0);
                b >= g - 1 && (b = g - 1);
                e <= b && (e = b + 1);
                e > g - 1 && (e = g - 1);
                if (b === e || b === f.dsi && e === f.dei)return!1;
                this.pinRangePixels();
                f = pa({}, f);
                f.dsi = b;
                f.dei = e;
                f = this._zoominfo = f;
                this.updatePlotZoomline();
                this.zoomOutButton[f.vdl === f.clen - 1 ? "hide" : "show"]();
                this.resetButton[k.length ? "show" : "hide"]();
                this.elements.zoomscroller.attr({
                    "scroll-ratio": f.vdl /
                    (g - !!g),
                    "scroll-position": [f.dsi / (g - f.vdl - 1), !0]
                });
                h = { level: k.length + 1, startIndex: b, startLabel: h[b], endIndex: e, endLabel: h[e] };
                v("zoomed", h, this.fusionCharts, [this.fusionCharts.id, b, e, h.startLabel, h.endLabel, h.level]);
                return h
            },
            activatePin: function(b) {
                var e = this._zoominfo, h = this.options.chart, f = this.pinButton;
                if (f && e.pinned ^ (b = !!b))
                    return b || this.pinRangePixels(), v("zoomModeChanged", { pinModeActive: b }, this.fusionCharts, []), h.showToolBarButtonTooltext && f.tooltip(h[b && "btnSwitchToZoomModeTooltext" || "btnSwitchToPinModeTooltext"] ||
                        ""), f.attr("button-active", b), e.pinned = b
            },
            pinRangePixels: function(b, e) {
                var h = this.paper, f = this.elements, k = this.xlabels.data, g = this._zoominfo, s = this.layers.zoompin, w = f.pinrect, ja = f["clip-pinrect"], m = this._pingrouptransform, L = this.plots, A = e - b, D, u;
                if (g && s && w) {
                    if (b === e)return s.hide(), f.pintracker.hide(), this.pinButton.attr("button-active", !1), g.pinned = !1;
                    for (u = L.length; u--;)w = L[u], D = w.pinline, D || (D = w.pinline = h.path(void 0, s).attr(w.attrPin)), D.attr("path", w.graphic.attrs.path);
                    ja[0] = b + this.canvasLeft;
                    ja[2] = A;
                    s.attr({ "clip-rect": ja, transform: m }).show();
                    f.pintracker.__pindragdelta = 0;
                    f.pintracker.show().attr({ transform: m, x: b, width: A });
                    b = this.getValuePixel(b);
                    e = this.getValuePixel(e);
                    v("pinned", { startIndex: b, endIndex: e, startLabel: k[b], endLabel: k[e] }, this.fusionCharts, [this.fusionCharts.id, b, e, k[b], k[e]]);
                    return g.pinned = !0
                }
            },
            getValuePixel: function(b) {
                var e = this._zoominfo;
                return e.ddsi + Y(b / e.ppp)
            },
            getParsedLabel: function(b) {
                var e = this.xlabels;
                return e.parsed[b] || (e.parsed[b] = ta(e.data[b] || ""))
            },
            drawGraph: function() {
                var b =
                        this,
                    e = b.paper,
                    h = b.canvasLeft,
                    f = b.canvasTop,
                    g = b.canvasWidth,
                    P = b.canvasHeight,
                    s = b.options,
                    w = s.chart,
                    v = w.plotBorderWidth,
                    m = w.useRoundEdges,
                    L = w.showToolBarButtonTooltext,
                    A = w.crossline,
                    D = b.layers,
                    u = b.toolbar,
                    K = b.elements,
                    N = w.allowPinMode,
                    V = s.categories,
                    x = !1,
                    Y,
                    X,
                    ga,
                    la,
                    ea,
                    $,
                    ia;
                $ = b._zoominfo = pa({}, s.stepZoom);
                b._zoomhistory = [];
                $.clen && (x = b._prezoomed = $.dei - $.dsi < $.clen - 1, ea = b._visw = b.canvasWidth - 2 * w.canvasPadding, la = b._visx = b.canvasLeft + w.canvasPadding, b._visout = -(b.chartHeight + b.canvasHeight + 1E3), b.base.drawGraph.apply(b,
                    arguments), b._ypvr = b.yAxis[0] && b.yAxis[0].pixelValueRatio || 0, ia = b._ymin || (b._ymin = b.yAxis[0].endY), b._yminValue = b.yAxis[0].min, s = D.dataset.attr("clip-rect", [b._visx, b.canvasTop, b._visw, b.canvasHeight]), ga = D.scroll || (D.scroll = e.group("scroll").insertAfter(D.layerAboveDataset)), b.xlabels = [], b.xlabels.show = V.show, b.xlabels.height = V.labelHeight, b.xlabels.wrap = V.wrap, b.xlabels.rotate = V.rotate, b.xlabels.data = V.data || [], b.xlabels.parsed = [], b.xlabels.css = V.css, b.xlabels.group = e.group("zoomline-plot-xlabels",
                    D.datalabels), D.datalabels.transform(["T", la, f + P + w.scrollHeight + w.labelPadding]), b._lcmd = V.rotate ? "y" : "x", N && (N = k.crispBound(0, f - ia, 0, P, v), Y = K["clip-pinrect"] = [N.x, f, N.width, N.height], X = D.zoompin = e.group("zoompin").insertBefore(s).transform(b._pingrouptransform = ["T", la, ia]).hide(), K.pinrect = e.rect(0, f - ia, b._visw, P, D.zoompin).attr({ "stroke-width": 0, stroke: "none", fill: w.pinPaneFill, "shape-rendering": "crisp", ishot: !0 }), K.pintracker = e.rect(D.tracker).attr({
                    transform: X.transform(),
                    x: 0,
                    y: f - ia,
                    width: 0,
                    height: P,
                    stroke: "none",
                    fill: ua,
                    ishot: !0,
                    cursor: k.svg && "ew-resize" || "e-resize"
                }).drag(function(b) {
                    var e = la + b + this.__pindragdelta, f = this.__pinboundleft, h = this.__pinboundright, g = this.data("cliprect").slice(0);
                    e < f ? e = f : e > h && (e = h);
                    X.transform(["T", e, ia]);
                    K.pintracker.transform(X.transform());
                    k.svg || (g[0] = g[0] + e - la - this.__pindragdelta, X.attr("clip-rect", g));
                    this.__pindragoffset = b
                }, function() {
                    this.__pinboundleft = 0 - Y[0] + la + h;
                    this.__pinboundright = this.__pinboundleft + ea - Y[2];
                    this.data("cliprect", X.attr("clip-rect"));
                    X._.clipispath = !0
                }, function() {
                    X._.clipispath = !1;
                    this.__pindragdelta = this.__pindragoffset;
                    delete this.__pindragoffset;
                    delete this.__pinboundleft;
                    delete this.__pinboundright
                }), b.pinButton = u.add("pinModeIcon", function() { b.activatePin(!b._zoominfo.pinned) }, { tooltip: L && w.btnSwitchToPinModeTooltext || "" })), v++, N = k.crispBound(h - v, f + P + v, g + v + v, w.scrollHeight, v), v--, K.zoomscroller = e.scroller(N.x + (m && -1 || v % 2), N.y - (m && 4 || 2), N.width - (!m && 2 || 0), N.height, !0, {
                    showButtons: w.scrollShowButtons,
                    scrollRatio: $.vdl / ($.clen -
                        !!$.clen),
                    scrollPosition: [$.dsi / ($.clen - $.vdl - 1), !1],
                    displayStyleFlat: w.scrollBarFlat
                }, ga).attr({ fill: w.scrollColor, r: m && 2 || 0 }).scroll(b.updatePlotZoomline, b), m && K.zoomscroller.shadow(!0), function() {
                    var e;
                    k.eve.on("raphael.scroll.start." + K.zoomscroller.id, function(f) {
                        e = f;
                        b.crossline && b.crossline.disable(!0);
                        Aa.raiseEvent("scrollstart", { scrollPosition: f }, b.logic.chartInstance)
                    });
                    k.eve.on("raphael.scroll.end." + K.zoomscroller.id, function(f) {
                        b.crossline && b.crossline.disable(!1);
                        Aa.raiseEvent("scrollend",
                        { prevScrollPosition: e, scrollPosition: f }, b.logic.chartInstance)
                    })
                }(), Ua(b, {
                    attr: { stroke: w.zoomPaneStroke, fill: w.zoomPaneFill, strokeWidth: 0 }, selectionStart: function() {},
                    selectionEnd: function(e) {
                        var f = e.selectionLeft - h;
                        e = f + e.selectionWidth;
                        b.crossline && b.crossline.hide();
                        b[b._zoominfo.pinned ? "pinRangePixels" : "zoomRangePixels"](f, e)
                    }
                }), b.zoomOutButton = u.add("zoomOutIcon", function() { b.zoomOut() }, { tooltip: L && w.btnZoomOutTooltext || "" })[x && "show" || "hide"](), b.resetButton = u.add("resetIcon", function() { b.resetZoom() },
                { tooltip: L && w.btnResetChartTooltext || "" }).hide(), N = b.resetButton.attr("fill"), N[2] = "rgba(255,255,255,0)", b.resetButton.attr("fill", [N[0], N[1], N[2], N[3]]), A && 0 !== A.enabled && 1 === w.useCrossline && (b.crossline = new sa(b, A)), b.updatePlotZoomline())
            },
            drawPlotZoomline: function(b, e) {
                var h = this.paper,
                    f = e.attrs,
                    k = e.visible,
                    g = k ? "show" : "hide",
                    s = this.layers.dataset,
                    w = b.group || (b.group = h.group("plot-zoomline-dataset", s)),
                    s = b.anchorGroup || (b.anchorGroup = h.group("plot-zoomline-anchors", s)),
                    h = b.graphic || (b.graphic =
                        h.path(void 0, w)),
                    v = ["T", this._visx, this._ymin || (this._ymin = this.yAxis[0].endY)];
                w.transform(v)[g]();
                s.transform(v)[g]();
                b.graphic = h.attr(f.graphics).shadow(f.shadow);
                b.attrPin = f.pin;
                b.visible = k;
                b.anchors = [];
                b.anchors.show = e.showAnchors;
                b.anchors.attrs = f.anchors;
                b.anchors.attrsShadow = f.anchorShadow;
                b.anchors.left = -(f.anchors.r + .5 * f.anchors["stroke-width"]);
                b.anchors.right = this._visw - b.anchors.right
            },
            updatePlotZoomline: function(b, e) {
                var h = this.paper,
                    f = this._ypvr,
                    k = this._visw,
                    g = this.xlabels,
                    s = g.css,
                    w = g.group,
                    v = this.plots,
                    m,
                    L,
                    A,
                    D,
                    u,
                    K,
                    N;
                !e && (e = this._zoominfo);
                A = e.oppp;
                D = e.vdl = e.dei - e.dsi;
                u = e.ppl = e.nvl ? k / e.nvl : e.oppl;
                k = e.step = (L = e.ppp = k / D) < A ? Ba(A / L) : 1;
                u = e.lskip = Ba(Oa(u, Ca(s.lineHeight)) / L / k);
                void 0 !== b ? (A = (e.clen - D - 1) * b, e.offset = (A - (A = Pa(A))) * L, K = A + D) : (A = e.dsi, K = e.dei, e.offset = 0);
                D = e.norm = A % k;
                e.ddsi = A -= D;
                e.ddei = K = K + 2 * k - D;
                e.pvr = f;
                e._ymin = this._ymin;
                e._yminValue = this._yminValue;
                f = g.show ? Ba((K - A) / k / u) : 0;
                D = e.llen - 1;
                e.llen = f;
                N = e.ppc = L * u * k;
                if (f > D)
                    for (u = D, D = f; u < D; u++)
                    (m = g[u]) && m.show() || (g[u] = h.text(0,
                        0, "", w).css(s));
                else for (u = f, D += 1; u < D; u++)g[u].hide();
                f = L * k < e.amrd ? 0 : Ba((K - A) / k);
                s = f - e.alen;
                e.alen = f;
                g.wrap && (g.rotate ? (g._width = g.height, g._height = N) : (g._width = N, g._height = g.height));
                for (k = v.length; k--;) {
                    w = v[k];
                    e.plotName = w.name || "";
                    m = w.anchors;
                    if (m.show && s) {
                        L = m.attrs;
                        u = 0;
                        for (D = f; u < D; u++)m[u] = m[u] && m[u].show() || h.circle(L, w.anchorGroup);
                        u = f;
                        for (D = m.length; u < D; u++)m[u] && m[u].hide()
                    }
                    this.drawPlotZoomlineGraphics(e, w.data, w.graphic, m, !k && g)
                }
                na.FC_DEV_ENVIRONMENT && na.jQuery && (FusionCharts["debugger"].enable() ?
                (this.debug = this.debug || (na.jQuery("#fc-zoominfo").length || na.jQuery("body").append('<pre id="fc-zoominfo">'), na.jQuery("#fc-zoominfo").css({ position: "absolute", left: "10px", top: "0", "pointer-events": "none", opacity: .7, width: "250px", zIndex: "999", border: "1px solid #cccccc", "box-shadow": "1px 1px 3px #cccccc", background: "#ffffff" })), this.debug.text(JSON.stringify(e, 0, 2))) : (this.debug && na.jQuery("#fc-zoominfo").remove(), delete this.debug))
            },
            drawPlotZoomlineGraphics: function(b, e, h, f, k) {
                var g = this.smartLabel,
                    s = this.numberFormatter,
                    w = this.options.chart,
                    v = w.useCrossline,
                    m = [],
                    L = !b.cnd,
                    A = b.ddei,
                    D = b.clen,
                    u = b.step,
                    K = b.lskip,
                    N = b.ppp,
                    V = b.offset,
                    x = b.pvr,
                    Y = this._visw,
                    X = this._visout,
                    ia = this._lcmd,
                    la = "M",
                    ea,
                    $,
                    ga = k && k[0],
                    na,
                    ka;
                f = f[0];
                var fa = {}, aa = {}, ma, pa, oa = 0, ua, sa, va = -b.norm, ta = b.ddsi, ya = 0, n, w = w.tooltipSepChar;
                ga && (k.group.transform(["T", -V, 0]), sa = k.wrap, na = k._height, ka = k._width, sa && g.setStyle(k.css));
                for (; ta <= A; ta += u, va += u)
                    $ = this.getParsedLabel(ta), v || (n = $ + w + s.yAxis(e[ta]), n = b.plotName && b.plotName + w + n || n), ua = oa /
                        3 + ya, pa = va * N, void 0 === (ea = e[ta]) ? (L && (la = "M"), ma = X, k = pa - V, ea = X, ya++) : (m[oa++] = la, m[oa++] = ma = k = pa - V, m[oa++] = ea = (ea - b._yminValue) * x, la = "L"), v ? f && (f = f.attr((fa.cx = ma, fa.cy = ea, fa)).next) : f && (f = f.attr((fa.cx = ma, fa.cy = ea, fa)).tooltip(n).next), !ga || ua % K || (ma = ga.attrs, k = 0 > k || k > Y ? X : pa, ga._prevtext === $ ? delete aa.text : aa.text = ga._prevtext = $, ma[ia] === k ? delete aa[ia] : aa[ia] = k, sa && $ && (aa.text = g.getSmartText($, ka, na).text), ga = ga.attr(aa).next);
                A >= D && (void 0 !== (ea = e[D - 1]) && (m[oa++] = "L", m[oa++] = (va - (A - D)) * N - V, m[oa++] =
                    ea * x), f && f.attr((fa.cx = X, fa.cy = X, fa)));
                h.attr("path", m)
            },
            legendClick: function(b) {
                var e = !b.visible, h = e ? "show" : "hide";
                b.group[h]();
                b.anchorGroup[h]();
                this.base.legendClick.apply(this, arguments);
                return b.visible = e
            },
            dispose: function() {
                var b;
                this.crossline && (this.crossline.dispose(), delete this.crossline);
                (b = this.elements.pintracker) && (b.undrag(), delete this.elements.pintracker);
                delete this.zoomOutButton;
                delete this.resetButton;
                delete this.pinButton;
                this.xlabels && (this.xlabels.length = 0);
                delete this.xlabels;
                this.base.dispose.apply(this)
            }
        }, La["renderer.cartesian"]);
        sa = function(b, e) {
            var h = b.paper, f = this.left = b._visx, k = this.width = b._visw, g = this.top = b.canvasTop, s = this.height = b.canvasHeight, w = this._visout = b._visout, v = this.plots = b.plots, m = b.layers.dataset, L, A = e.labelstyle, D = e.valuestyle;
            L = this.group = h.group("crossline-labels", m).attr({ transform: ["T", f, b._ymin] });
            this.tracker = h.rect(f, g, k, s, m).attr({ stroke: "none", "stroke-width": 0, fill: ua }).toFront().mousedown(this.onMouseDown, this).mouseup(this.onMouseUp, this,
                !0).mouseout(this.onMouseOut, this).mousemove(this.onMouseMove, this);
            Fa && this.tracker.touchstart(this.onMouseMove, this);
            this.container = b.container;
            this.line = h.path(void 0, m).attr(pa({ path: ["M", f, g, "l", 0, s] }, e.line)).toBack();
            f = this.labels = e.valueEnabled && h.set();
            e.labelEnabled && (this.positionLabel = h.text(w, g + s + (b.options.chart.scrollHeight || 0) + 2.5, "").insertAfter(b.xlabels.group.parent).css(A).attr({ "vertical-align": "top", "text-bound": ["rgba(255,255,255,1)", "rgba(0,0,0,1)", 1, 2.5] }));
            this.hide();
            this.pixelRatio =
                b._ypvr;
            this.yminValue = b._yminValue;
            this.positionLabels = b.xlabels || { data: [], parsed: [] };
            this.getZoomInfo = function() { return b._zoominfo };
            this.getDataIndexFromPixel = function(e) { return b.getValuePixel(e) };
            this.getPositionLabel = function(e) { return b.getParsedLabel(e) };
            if (e.valueEnabled) {
                g = 0;
                for (s = v.length; g < s; g++)A = v[g], A = A.graphic.attrs.stroke, f.push(h.text(0, w, "", L).css(D).attr({ fill: A, "text-bound": ["rgba(255,255,255,0.8)", "rgba(0,0,0,0.2)", 1, 2.5] }));
                this.numberFormatter = b.numberFormatter
            }
        };
        sa.prototype.disable =
            function(b) {
                void 0 !== b && (this.disabled = !!b) && this.visible && this.hide();
                return this.disabled
            };
        sa.prototype.onMouseOut = function() { this.hide() };
        sa.prototype.onMouseDown = function() {
            !Fa && this.hide();
            this._mouseIsDown = !0
        };
        sa.prototype.onMouseUp = function() {
            !Fa && this.hide();
            delete this._mouseIsDown
        };
        sa.prototype.onMouseMove = function(b) {
            if (!(this.disabled || this._mouseIsDown && !Fa)) {
                var e = this.getZoomInfo(), h = this.line, f = this.left, k = e.step, g = e.ppp * k;
                b = Va(this.container, b).chartX - f;
                var s;
                b = (b += g / 2 + e.offset) -
                    b % g;
                s = (s = this.getDataIndexFromPixel(Ba(b))) + s % k;
                b -= e.offset;
                h.transform(["T", Y(b), 0]);
                this.hidden && this.show();
                if (s !== this.position || this.hidden)this.position = s, this.lineX = b, this.updateLabels()
            }
        };
        sa.prototype.updateLabels = function() {
            var b = this, e = b.labels, h = b.plots, f = b.width, k = b.position, g = b.lineX, s = Y(g), w = b.pixelRatio, v = b.yminValue, m = b._visout, L = b.numberFormatter;
            e && e.forEach(function(e, D) {
                var u = h[D], K = u.data[k], N, V;
                e.attr({ text: L.xAxis(K) });
                N = e.getBBox();
                V = .5 * N.width + 10;
                N = N.height;
                u = void 0 !== K &&
                    u.visible ? (K - v) * w : m;
                u < -1 * (b.height - N) ? u += N : u > v * w - N && (u -= N);
                e.attr({ x: Oa(0, Sa(s, f)), y: u, "text-anchor": g <= V && "start" || g + V >= f && "end" || "middle" })
            });
            b.positionLabel && b.positionLabel.attr({ x: g + b.left, text: b.getPositionLabel(k) })
        };
        sa.prototype.show = function() { this.disabled || (this.hidden = !1, this.group.attr("visibility", "visible"), this.line.attr("visibility", "visible"), this.positionLabel && this.positionLabel.attr("visibility", "visible")) };
        sa.prototype.hide = function() {
            this.hidden = !0;
            this.group.attr("visibility",
                "hidden");
            this.line.attr("visibility", "hidden");
            this.positionLabel && this.positionLabel.attr("visibility", "hidden")
        };
        sa.prototype.dispose = function() { for (var b in this)this.hasOwnProperty(b) && delete this[b] };
        k.addSymbol({
            pinModeIcon: function(b, e, h) {
                var f = .5 * h, k = b - h, g = b + h, s = b - f, w = b + f, v = b + .5, m = v + 1, L = v + 1.5, A = e - h, D = e + f, u = e - f, f = e + (h - f);
                return["M", k, A, "L", s, u, s, f, k, D, b - .5, D, b, e + h + .5, v, D, g, D, w, f, w, u, g, A, L, A, L, u, L, f, m, f, m, u, L, u, L, A, "Z"]
            },
            zoomOutIcon: function(b, e, h) {
                b -= .2 * h;
                e -= .2 * h;
                var f = .8 * h,
                    g = k.rad(43),
                    s =
                        k.rad(48),
                    v = b + f * ma(g),
                    g = e + f * va(g),
                    w = b + f * ma(s),
                    s = e + f * va(s),
                    K = k.rad(45),
                    m = v + h * ma(K),
                    L = g + h * va(K),
                    A = w + h * ma(K);
                h = s + h * va(K);
                return["M", v, g, "A", f, f, 0, 1, 0, w, s, "Z", "M", v + 1, g + 1, "L", m, L, A, h, w + 1, s + 1, "Z", "M", b - 2, e, "L", b + 2, e, "Z"]
            },
            resetIcon: function(b, e, h) {
                var f = b - h, g = (ya.PI / 2 + ya.PI) / 2;
                b += h * ma(g);
                var g = e + h * va(g), k = 2 * h / 3;
                return["M", f, e, "A", h, h, 0, 1, 1, b, g, "L", b + k, g - 1, b + 2, g + k - .5, b, g]
            }
        })
    }
]);;
/*
 FusionCharts JavaScript Library
 Copyright FusionCharts Technologies LLP
 License Information at <http://www.fusioncharts.com/license>

 @version 3.6.0
*/
FusionCharts.register("module", [
    "private", "modules.renderer.js-gradientlegend", function() {
        function db(g, h, ta) {
            var ma = g[0], J = g[1];
            g = g[2];
            ma += (h[0] - ma) * ta;
            J += (h[1] - J) * ta;
            h = g + (h[2] - g) * ta;
            return{ hex: (z + (ma << 16 | J << 8 | h).toString(16)).slice(-6), rgb: [ma, J, h] }
        }

        function vb(g, h) { return g.maxvalue - h.maxvalue }

        function qb(h) {
            var z, ta, ma = h.colorRange || {}, J = h.dataMin, u = h.dataMax, P = h.sortLegend || !1, v = h.mapByCategory || !1, F = h.defaultColor, ea = h.numberFormatter, A = ma.color;
            h = this.colorArr = [];
            var Z, ba, S;
            this.mapByCategory =
                v;
            "1" === ma.mapbypercent && (this.mapbypercent = !0);
            if ("1" === ma.gradient && !v) {
                this.gradient = !0;
                ta = Eb(Na(ma.startcolor, ma.mincolor, ma.code));
                P = Jb(Eb(Na(ta, F, "CCCCCC")));
                v = this.scaleMin = Sa(ma.startvalue, ma.minvalue, this.mapbypercent ? 0 : J);
                h.push({ code: ta, maxvalue: v, label: H(ma.startlabel), codeRGB: Jb(ta) });
                if (A && (z = A.length))for (J = 0; J < z; J += 1)F = A[J], ta = Eb(Na(F.color, F.code)), ba = Sa(F.value, F.maxvalue), S = Sa(F.minvalue), ba > v && h.push({ code: ta, maxvalue: ba, userminvalue: S, label: H(Na(F.label, F.displayvalue)), codeRGB: Jb(ta) });
                h.sort(vb);
                z = h.length;
                for (J = 1; J < z; J += 1)F = h[J], ta = F.maxvalue - v, 0 < ta ? (F.minvalue = v, F.range = ta, v = F.maxvalue) : (h.splice(J, 1), J -= 1, z -= 1);
                2 <= h.length && (this.scaleMax = v, h[J - 1].label = Na(ma.endlabel, h[J - 1].label, h[J - 1].displayvalue));
                1 === h.length && (ba = Sa(ma.maxvalue, this.mapbypercent ? 100 : u), h.push({ minvalue: v, maxvalue: ba, range: ba - v, label: ma.endlabel }), this.scaleMax = ba, delete h[0].code);
                ma = h[0];
                u = h[h.length - 1];
                ma.code && u.code || (ta = g(P), z = B((ta[2] = 0, ta)), ta = B((ta[2] = 100, ta)), ma.code || (ma.codeRGB = z, ma.code = da(z)),
                    u.code || (u.codeRGB = ta, u.code = da(ta)));
                z = h.length;
                for (J = 1; J < z; J += 1)
                    if (F = h[J], F.code) {
                        if (Z)for (u = F, S = ma.maxvalue, A = u.maxvalue - S; Z < J; Z += 1)P = h[Z], ta = db(ma.codeRGB, u.codeRGB, (P.maxvalue - S) / A), P.code = ta.hex, P.codeRGB = ta.rgb;
                        Z = null;
                        ma = F
                    } else Z = Z || J;
                if (void 0 === this.scaleMin || void 0 === this.scaleMax)this.noValidRange = !0
            } else if (A && (z = A.length)) {
                for (J = 0; J < z; J += 1)
                    F = A[J], ta = Na(F.color, F.code), ba = Sa(F.maxvalue), S = Sa(F.minvalue), Z = Na(F.label, F.displayvalue, v ? Y : ea.dataLabels(S) + " - " + ea.dataLabels(ba)), (ta && ba >
                        S || v && Z) && h.push({ code: ta, maxvalue: ba, minvalue: S, label: H(Z), labelId: Z.toLowerCase() });
                h.length ? P && h.sort(vb) : this.noValidRange = !0
            }
        }

        function A(g, h) { return h ? ha(100 * g) / 100 + "%" : hb(g, Y).toString() }

        var u = this,
            U = u.hcLib,
            Ta = u.window,
            Ta = /msie/i.test(Ta.navigator.userAgent) && !Ta.opera,
            Sa = U.pluckNumber,
            z = U.COLOR_BLACK,
            ac = U.COLOR_GLASS,
            ab = U.FC_CONFIG_STRING,
            h = U.graphics,
            B = h.HSBtoRGB,
            g = h.RGBtoHSB,
            da = h.RGBtoHex,
            Jb = h.HEXtoRGB,
            F = U.COMMASTRING,
            Y = U.BLANKSTRING,
            H = U.parseUnsafeString,
            xa = U.graphics.convertColor,
            ea = U.POSITION_TOP,
            rb = U.POSITION_MIDDLE,
            Aa = U.POSITION_START,
            Fb = U.POSITION_END,
            bc = U.graphics.getDarkColor,
            sb = U.graphics.getLightColor,
            Na = U.pluck,
            hb = U.getValidValue,
            jb = U.toRaphaelColor,
            wb = U.hasTouch,
            ha = Math.round,
            Ka = Math.max,
            S = Math.min,
            qa = Math.abs,
            La,
            Kb,
            Gb,
            cc = "rgba(192,192,192," + (Ta ? .002 : 1E-6) + ")",
            Eb = function(g) { return g && g.replace(/^#?([a-f0-9]+)/ig, "$1") };
        qb.prototype = {
            getColorObj: function(g) {
                var h = this.colorArr, z = this.gradient ? 1 : 0, u = h[z], J;
                if (this.mapByCategory) {
                    for (g = H(g).toLowerCase(); u;) {
                        if (u.labelId === g)
                            return{
                                code: u.code,
                                seriesIndex: z
                            };
                        z += 1;
                        u = h[z]
                    }
                    return{ outOfRange: !0 }
                }
                if (this.gradient) {
                    if (this.scaleMin <= g && this.scaleMax >= g) {
                        for (; u && u.maxvalue < g;)z += 1, u = h[z];
                        g = (g - u.minvalue) / u.range;
                        return{ code: db(h[z - 1].codeRGB, u.codeRGB, g).hex }
                    }
                    return{ outOfRange: !0 }
                }
                for (; u;) {
                    if (u.maxvalue > g && u.minvalue <= g)return{ code: u.code, seriesIndex: z };
                    u.maxvalue === g && (J = z);
                    z += 1;
                    u = h[z]
                }
                return(u = h[J]) && u.maxvalue === g ? { code: u.code, seriesIndex: J } : { outOfRange: !0 }
            }
        };
        qb.prototype.constructor = qb;
        U.colorRange = qb;
        La = U.configureGradientLegendOptions = function(g,
            h) {
            var u = g.legend, F = h.chart;
            u.legendSliderBorderWidth = Sa(F.legendpointerborderthickness, 1);
            u.legendSliderBorderColor = xa(Na(F.legendpointerbordercolor, z), Sa(F.legendpointerborderalpha, 100));
            u.legendSliderWidth = Sa(F.legendpointerwidth, F.legendpointerswidth, 12);
            u.legendSliderHeight = Sa(F.legendpointerheight, F.legendpointersheight, 12);
            u.legendColorBoxBorderColor = u.borderColor;
            u.legendColorBoxBorderWidth = u.borderWidth;
            u.legendScaleColor = xa(Na(F.legendscalelinecolor, z), Sa(F.legendscalelinealpha, 100));
            u.legendScalePadding =
                Sa(F.legendscalepadding, 4);
            u.legendScaleLineThickness = Sa(F.legendscalelinethickness, 1);
            u.legendScaleTickDistance = Sa(F.legendscaletickdistance, 6);
            u.itemStyle.cursor = "default";
            u.interActivity = Sa(F.interactivelegend, 1)
        };
        U.placeGLegendBlockRight = function(g, h, z, u, J) {
            this.configureLegendOptions(g, h.chart, !0, J, z);
            La(g, h);
            J = this.snapLiterals || (this.snapLiterals = {});
            var F = g[ab],
                P = this.smartLabel || F.smartLabel,
                v = g.legend,
                ea = g.chart.spacingRight,
                B,
                H,
                Z = v.textPadding = 2,
                ba = 2 * Z,
                qa = v.title.padding,
                ha = 0,
                da = 0,
                xa = 2 *
                    v.padding;
            h = Sa(h.chart.legendpadding, 7) + v.borderWidth / 2 + 1;
            var I = g.colorRange || {}, U = I.colorArr, Fa = I.mapbypercent, Ga = I.scaleMin, Na = I.scaleMax - Ga, Aa = v.legendSliderWidth, ga = v.legendSliderHeight / 2;
            H = v.legendScalePadding;
            var y = v.legendScaleTickDistance, Ha = v.itemStyle || {};
            B = Sa(parseInt(Ha.lineHeight, 10) || 12);
            var Pa = .75 * B, Ia = z - xa, Ba, ka, Ea = 0, Va, q, oa, ya, Ja, Ca, ib;
            u -= xa;
            if (!I.noValidRange && U && 1 < (ka = U.length)) {
                ka -= 1;
                v.title.text !== Y && (P.setStyle(v.title.style), B = P.getSmartText(v.title.text, Ia, Ka(B, u / 4)), v.title.text =
                    B.text, ha = B.width + xa, u -= da = B.height + qa);
                P.setStyle(Ha);
                B = P.lineHeight;
                Ia -= y + H + Aa;
                v.colorBoxX = Aa;
                qa = Ka(B, Ia / 2);
                Ia = S(Ia - qa - 4, B);
                Va = Ka(B, u / 2);
                Ba = u / 4;
                y = U[0];
                y.scaleLabel = A(y.maxvalue, Fa);
                B = P.getSmartText(y.label, Ba, Ia);
                y.label = B.text;
                Ha = B.height;
                y.labelY = Pa - B.height / 2;
                H = P.getSmartText(y.scaleLabel, qa, Va);
                y.scaleLabel = H.text;
                I = H.height / 2;
                q = H.width;
                y.scaleLabelY = Pa - H.height / 2;
                v.colorBoxY = Ka(I, B.width + ba, ga) + da;
                y = ib = U[ka];
                y.scaleLabel = A(y.maxvalue, Fa);
                B = P.getSmartText(y.label, Ba, Ia);
                y.label = B.text;
                Ha = Ka(Ha,
                    B.height);
                y.labelY = Pa - B.height / 2;
                H = P.getSmartText(y.scaleLabel, qa, Va);
                y.scaleLabel = H.text;
                q = Ka(q, H.width);
                Ba = H.height / 2;
                B = Ka(B.width + ba, Ba, ga);
                y.scaleLabelY = Pa - H.height / 2;
                v.colorBoxHeight = ga = u - v.colorBoxY - B;
                Va = ga - Ba;
                oa = ga / Na;
                Ja = S(ga - Ea, Va - I) - 4;
                for (Ba = 1; Ba < ka; Ba += 1)
                    y = U[Ba], ya = (y.maxvalue - Ga) * oa, B = P.getSmartText(y.label, 2 * S(ya - Ea, ga - ya), Ia), y.label = B.text, Ha = Ka(Ha, B.height), y.labelY = Pa - B.height / 2, B = B.width / 2, y.scaleLabel = A(y.maxvalue, Fa), H = P.getSmartText(y.scaleLabel, qa, 2 * S(ya - I, Va - ya)), y.scaleLabel =
                        H.text, q = Ka(q, H.width), Ca = H.height / 2, y.scaleLabelY = Pa - H.height / 2, Ja = S(Ja, (ya - Ka(Ca + I, B + Ea) - 4) * Na / y.range), Ea = B + ya, I = Ca + ya;
                Ja = Ka(S(Ja, (S(Va - I, ga - Ea) - 4) * Na / ib.range, .3 * u), 0);
                v.colorBoxHeight -= Ja;
                v.colorBoxWidth = Ha && Ha + ba || 15;
                v.height = v.totalHeight = u + da + xa - Ja;
                v.width = (q && q + Z) + v.colorBoxWidth + Aa + v.legendScaleTickDistance + v.legendScalePadding + xa;
                v.width < ha && (v.colorBoxX += (ha - v.width) / 2, v.width = ha);
                v.width > z && (v.width = z);
                J.legendstartx = F.width - ea - v.width;
                J.legendwidth = v.width;
                J.legendendx = J.legendstartx +
                    J.legendwidth;
                J.legendheight = v.height;
                h += v.width;
                g.chart.marginRight += h;
                return h
            }
            v.enabled = !1;
            return 0
        };
        U.placeGLegendBlockBottom = function(g, h, z, u, J) {
            this.configureLegendOptions(g, h.chart, !1, J, z);
            La(g, h);
            J = this.snapLiterals || (this.snapLiterals = {});
            var F = g[ab], B = this.smartLabel || F.smartLabel, v = g.legend, H = g.chart, ea = H.spacingBottom, qa = H.spacingLeft, H = H.spacingRight, Z, ba, ha = v.textPadding = 2, da = v.title.padding, xa = 0, U = 0, I = 2 * v.padding;
            h = Sa(h.chart.legendpadding, 7) + v.borderWidth / 2 + 1;
            var Aa = g.colorRange ||
                {},
                Fa = Aa.colorArr,
                Ga = Aa.mapbypercent,
                bb = Aa.scaleMin,
                Ta = Aa.scaleMax - bb,
                ga = v.legendSliderWidth,
                y = v.legendSliderHeight,
                Ha = v.legendScalePadding,
                Pa = v.legendScaleTickDistance,
                Ia = v.itemStyle || {};
            Z = Sa(parseInt(Ia.lineHeight, 10) || 12);
            var Ba = .75 * Z, ka = u - I, Ea, Va, q, oa, ya = 0, Ja, Ca, ib;
            z -= I;
            if (!Aa.noValidRange && Fa && 1 < (Va = Fa.length)) {
                Va -= 1;
                v.title.text !== Y && (B.setStyle(v.title.style), Z = B.getSmartText(v.title.text, z, ka / 3), v.title.text = Z.text, xa = Z.width + I, ka -= U = Z.height + da);
                B.setStyle(Ia);
                Z = B.lineHeight;
                ka -= Pa + Ha + y;
                da = Ka(Z, ka / 2);
                Ia = S(ka - da - 4, Z);
                Ea = z / 4;
                oa = 2 * Ea;
                q = Fa[0];
                q.scaleLabel = A(q.maxvalue, Ga);
                Z = B.getSmartText(q.label, Ea, Ia);
                q.label = Z.text;
                ka = Z.height;
                q.labelY = Ba - Z.height / 2;
                ba = B.getSmartText(q.scaleLabel, oa, da);
                q.scaleLabel = ba.text;
                Ha = ba.width / 2;
                Pa = ba.height;
                q.code || (q.code = Na(v.minColor, "CCCCCC"));
                v.colorBoxX = Ka(Ha, Z.width + ha, ga);
                q = Aa = Fa[Va];
                q.scaleLabel = A(q.maxvalue, Ga);
                Z = B.getSmartText(q.label, Ea, Ia);
                q.label = Z.text;
                ka = Ka(ka, Z.height);
                q.labelY = Ba - Z.height / 2;
                ba = B.getSmartText(q.scaleLabel, oa, da);
                q.scaleLabel =
                    ba.text;
                Pa = Ka(Pa, ba.height);
                q = ba.width / 2;
                Z = Ka(Z.width + ha, q, ga);
                v.colorBoxWidth = ga = z - v.colorBoxX - Z;
                oa = ga - q;
                Ja = ga / Ta;
                ib = S(ga - ya, oa - Ha) - 4;
                for (Ea = 1; Ea < Va; Ea += 1)q = Fa[Ea], Ca = (q.maxvalue - bb) * Ja, Z = B.getSmartText(q.label, 2 * S(Ca - ya, ga - Ca), Ia), q.label = Z.text, ka = Ka(ka, Z.height), q.labelY = Ba - Z.height / 2, Z = Z.width / 2, q.scaleLabel = A(q.maxvalue, Ga), ba = B.getSmartText(q.scaleLabel, 2 * S(Ca - Ha, oa - Ca), da), q.scaleLabel = ba.text, Pa = Ka(Pa, ba.height), ba = ba.width / 2, ib = S(ib, (Ca - Ka(ba + Ha, Z + ya) - 4) * Ta / q.range), ya = Z + Ca, Ha = ba + Ca;
                ib =
                    Ka(S(ib, (S(oa - Ha, ga - ya) - 4) * Ta / Aa.range, .3 * z), 0);
                v.colorBoxWidth -= ib;
                v.width = z + I - ib;
                v.width < xa && (v.colorBoxX += (xa - v.width) / 2, v.width = xa);
                v.colorBoxY = U + y;
                v.colorBoxHeight = ka && ka + 2 * ha || 15;
                v.height = v.totalHeight = (Pa && Pa + ha) + v.colorBoxHeight + U + y + v.legendScaleTickDistance + v.legendScalePadding + I;
                v.height > u && (v.height = u);
                J.legendstartx = qa + .5 * (F.width - qa - H - v.width) + (v.x || 0);
                J.legendwidth = v.width;
                J.legendendx = J.legendstartx + J.legendwidth;
                J.legendstarty = F.height - ea - v.height;
                J.legendheight = v.height;
                J.legendendy =
                    J.legendstarty + J.legendheight;
                h += v.height;
                g.chart.marginBottom += h;
                return h
            }
            v.enabled = !1;
            return 0
        };
        Kb = function() { return{ point: this } };
        Gb = function(g) { return ha(100 * g) / 100 };
        U.rendererRoot.drawGradientLegendItem = function(g) {
            var h = this, B = h.paper, H = h.options, J = h.canvasLeft, A = h.canvasTop, P = h.canvasWidth, v = h.canvasHeight, S = H.colorRange, da, U, Z, ba, Ra = H.legend, La = Sa(Ra.padding, 4), Ta = Ra.itemStyle, H = Ra.symbolStyle, hb = Ra.interActivity, I = g.elements;
            g = I.elementGroup.trackTooltip(!0);
            var db = "vertical" === Ra.layout,
                Fa,
                Ga,
                bb,
                ab,
                ga,
                y,
                Ha = 0,
                Pa = Ra.lighting3d,
                Ia = Ra.colorBoxWidth,
                Ba = Ra.colorBoxHeight,
                ka = Ia,
                Ea = Ba,
                Va = { FCcolor: { color: Y, alpha: Y, angle: 0, ratio: Y } },
                q = Va.FCcolor,
                oa = Ra.colorBoxX + La,
                ya = Ra.colorBoxY + La,
                Ja,
                Ca,
                ib = Ra.legendColorBoxBorderColor,
                qb = Ra.legendColorBoxBorderWidth,
                ua = ["M"],
                vb = Ra.legendScaleColor;
            y = Ra.legendScalePadding;
            var Jb = Ra.legendScaleLineThickness, pb = Jb % 2 / 2;
            U = Ra.legendScaleTickDistance;
            var xb = Ra.legendSliderWidth, Hb = Ra.legendSliderHeight;
            ga = Ea / 2;
            ba = ka / 2;
            var tb = xb / 2, Wa = Hb / 2, Rb, Ya, yb;
            Ca = 0;
            var Ib = sb("ABABAB",
                    50),
                La = bc("ABABAB", 70),
                Ra = xa("ABABAB", 100),
                La = xa(La, 100),
                Ib = xa(Ib, 100),
                Pb,
                Da = { isFirst: !0 },
                sa = {},
                eb,
                $a,
                Eb,
                b;
            if (S && (da = S.colorArr) && 1 < (Z = da.length)) {
                Da.toolText = eb = bb = S.scaleMin;
                sa.toolText = $a = S = S.scaleMax;
                ab = S - bb;
                Da.snapPX = sa.snapPX = 0;
                Da.tooltipConstraint = sa.tooltipConstraint = "chart";
                Da.getLabelConfig = sa.getLabelConfig = Kb;
                Da.tooltipPos = [0, 0];
                sa.tooltipPos = [0, 0];
                sa.tooltipOffsetReference = Da.tooltipOffsetReference = {};
                sa.tooltipOffsetReference.left = Da.tooltipOffsetReference.left += J - 20;
                sa.tooltipOffsetReference.top =
                    Da.tooltipOffsetReference.top += A;
                Eb = I.colorBox = B.group("colorBox", g);
                if (db) {
                    Da.tooltipPos[0] = sa.tooltipPos[0] = P + J;
                    Ca = 270;
                    q.angle = 90;
                    J = oa - xb;
                    P = oa + ka;
                    A = ya - Wa;
                    Fa = ya + Wa;
                    J = ha(oa - xb) + .5;
                    P = ha(oa) + .5;
                    A = ha(ya - Wa) + .5;
                    Fa = ha(ya + Wa) + .5;
                    Rb = ha(oa + ka) + .5;
                    yb = ha(ya - 2) + .5;
                    Ga = ha(ya + 2) + .5;
                    Ja = ha(ya) + .5;
                    v = oa - tb / 2;
                    Ya = ha(v - Wa) + .5;
                    v = ha(v) + .5;
                    ga = ya - Wa / 2;
                    Wa = ha(ga + Wa) + .5;
                    ga = ha(ga) + .5;
                    Ia /= 2;
                    tb = ["M", J, A, "L", P, A, P, yb, Rb, Ja, P, Ga, P, Fa, J, Fa, "Z", "M", Ya, ga, "L", v, ga, "M", Ya, Ja, "L", v, Ja, "M", Ya, Wa, "L", v, Wa];
                    Wa = [
                        "M", J + 1, A, "L", J + 1, Fa, "M",
                        Ya, ga - 1, "L", v, ga - 1, "M", Ya, Ja - 1, "L", v, Ja - 1, "M", Ya, Wa - 1, "L", v, Wa - 1
                    ];
                    ga = oa + ka + y;
                    Fa = ha(ga + U) + pb;
                    ga = ha(ga) + pb;
                    Ja = oa + ba;
                    Ya = Z - 1;
                    for (U = 0; U < Z; U += 1)
                        ba = da[U], P = (ba.maxvalue - bb) / ab, Ga = Ea * P + ya, y = ha(Ga) + pb, U ? (q.ratio += F, q.color += F, q.alpha += F, ua.push("L", ga, y, Fa, y, "M", ga, y), U === Ya ? (v = Fb, y = Ga + 2) : (v = rb, y = Ga)) : (ua.push(ga, y, "L", Fa, y, "M", ga, y), v = Aa, y = Ga - 2), q.ratio += 100 * (P - Ha), q.color += Na(ba.code, z), q.alpha += Na(ba.alpha, 100), Ha = P, ba.legendItem = B.text(g).attr({ text: ba.label, x: Ja, y: y, "text-anchor": v, "vertical-align": rb }).rotate(Ca,
                            Ja, y).css(Ta), ba.legendSymbol = B.text(g).attr({ text: ba.scaleLabel, x: Fa, y: Ga, "text-anchor": Aa, "vertical-align": rb }).css(Ta);
                    Da.xMin = sa.xMin = 0;
                    Da.xMax = sa.xMax = 0;
                    Da.yMin = sa.yMin = 0;
                    Da.yMax = sa.yMax = Ea;
                    Da.x = sa.x = 0;
                    Da.y = 0;
                    sa.y = Ea;
                    da = Hb + ka;
                    Z = xb
                } else {
                    Da.tooltipPos[1] = sa.tooltipPos[1] = v + A;
                    J = ha(oa - tb) + .5;
                    P = ha(oa + tb) + .5;
                    A = ha(ya - Hb) + .5;
                    Fa = ha(ya + Ea) + .5;
                    Rb = ha(oa - 2) + .5;
                    v = ha(oa + 2) + .5;
                    Ya = ha(oa) + .5;
                    yb = ha(ya) + .5;
                    Ga = ya - Wa / 2;
                    Ja = ha(Ga - Wa) + .5;
                    Ga = ha(Ga) + .5;
                    Ca = oa - tb / 2;
                    ba = ha(Ca + tb) + .5;
                    Ca = ha(Ca) + .5;
                    Ba /= 2;
                    tb = [
                        "M", J, A, "L", P, A,
                        P, yb, v, yb, Ya, Fa, Rb, yb, J, yb, "Z", "M", Ca, Ja, "L", Ca, Ga, "M", Ya, Ja, "L", Ya, Ga, "M", ba, Ja, "L", ba, Ga
                    ];
                    Wa = ["M", J, A + 1, "L", P, A + 1, "M", Ca - 1, Ja, "L", Ca - 1, Ga, "M", Ya - 1, Ja, "L", Ya - 1, Ga, "M", ba - 1, Ja, "L", ba - 1, Ga];
                    y = ya + Ea + y;
                    Ca = ha(y + U) + pb;
                    y = ha(y) + pb;
                    Ga = ya + ga;
                    Ya = Z - 1;
                    for (U = 0; U < Z; U += 1)
                        ba = da[U], P = (ba.maxvalue - bb) / ab, Fa = ka * P + oa, ga = ha(Fa) + pb, U ? (q.ratio += F, q.color += F, q.alpha += F, ua.push("L", ga, y, ga, Ca, "M", ga, y), U === Ya ? (v = Aa, ga = Fa + 2) : (v = rb, ga = Fa)) : (ua.push(ga, y, "L", ga, Ca, "M", ga, y), v = Fb, ga = Fa - 2), q.ratio += 100 * (P - Ha), q.color += Na(ba.code,
                            z), q.alpha += Na(ba.alpha, 100), Ha = P, ba.legendItem = B.text(g).attr({ text: ba.label, x: ga, y: Ga, "text-anchor": v, "vertical-align": rb }).css(Ta), ba.legendSymbol = B.text(g).attr({ text: ba.scaleLabel, x: Fa, y: Ca, "text-anchor": rb, "vertical-align": ea }).css(Ta);
                    Da.xMin = sa.xMin = 0;
                    Da.xMax = sa.xMax = ka;
                    Da.yMin = sa.yMin = 0;
                    Da.yMax = sa.yMax = 0;
                    Da.y = sa.y = 0;
                    Da.x = 0;
                    sa.x = ka;
                    da = xb;
                    Z = Hb + Ea
                }
                I.colorBox = B.rect(Eb).attr({ x: oa, y: ya, width: ka, height: Ea, fill: jb(Va), stroke: ib, strokeWidth: qb });
                Pa && (I.colorBoxEffect = B.rect(Eb).attr({
                    x: oa,
                    y: ya,
                    width: Ia,
                    height: Ba,
                    fill: ac,
                    "stroke-width": 0
                }));
                I.scale = B.path(g).attr({ path: ua, stroke: vb, "stroke-width": Jb });
                Pb = function(d, a, c, e, f) {
                    var p;
                    db ? (p = a * ab / Ea + bb, e = 0 < a ? e : e + a + .01) : (p = d * ab / ka + bb, c = 0 < d ? c : c + d + .01);
                    d = Gb(p);
                    f ? (I.slider1.translate(c, e), I.slider1Effect.translate(c, e), I.slider1Tracker.toFront().translate(c, e).tooltip(d, null, null, !0), eb = p) : (I.slider2.translate(c, e), I.slider2Effect.translate(c, e), I.slider2Tracker.toFront().translate(c, e).tooltip(d, null, null, !0), $a = p);
                    hb && (b = clearTimeout(b), b = setTimeout(function() {
                        h.setScaleRange &&
                            h.setScaleRange(eb, $a)
                    }, 100))
                };
                Pa = function(b, a) {
                    var c = 0, e = c, f, p = this.isFirst, n = p ? sa : Da;
                    if (db) {
                        e = this._startY + a;
                        0 >= e && (e = 0);
                        e > Ea && (e = Ea);
                        if (p ? e > n.y : e < n.y)e = n.y;
                        qa(e - this.y) >= (this.snapPX || 0) && (f = !0)
                    } else {
                        c = this._startX + b;
                        0 >= c && (c = 0);
                        c > ka && (c = ka);
                        if (p ? c > n.x : c < n.x)c = n.x;
                        qa(c - this.x) >= (this.snapPX || 0) && (f = !0)
                    }
                    f && (Pb(c, e, c - this.x, e - this.y, p), this.x = c, this.y = e)
                };
                Ia = function() {
                    var b = this.isFirst;
                    this._startX = this.x;
                    this._startY = this.y;
                    this._scaleStart = eb;
                    this._scaleEnd = $a;
                    u.raiseEvent("LegendPointerDragStart",
                    { pointerIndex: b ? 0 : 1, pointers: [{ value: eb }, { value: $a }], legendPointerHeight: Hb, legendPointerWidth: xb }, h.logic.chartInstance)
                };
                Ba = function() {
                    var b = this._scaleStart, a = this._scaleEnd;
                    u.raiseEvent("LegendPointerDragStop", { pointerIndex: this.isFirst ? 0 : 1, pointers: [{ value: eb }, { value: $a }], legendPointerHeight: Hb, legendPointerWidth: xb }, h.logic.chartInstance);
                    b === eb && a === $a || u.raiseEvent("LegendRangeUpdated", { previousMinValue: b, previousMaxValue: a, minValue: eb, maxValue: $a }, h.logic.chartInstance);
                    delete this._scaleStart;
                    delete this._scaleEnd
                };
                Va = Gb(bb);
                I.slider1 = B.path(g).attr({ path: tb, fill: Ra, strokeWidth: 1, stroke: La });
                I.slider1Effect = B.path(g).attr({ path: Wa, fill: "none", strokeWidth: 1, stroke: Ib });
                wb && (J -= .5 * (Ka(30, da) - da), A -= .5 * (Ka(40, Z) - Z), da = Ka(30, da), Z = Ka(40, Z));
                I.slider1Tracker = B.rect(g).attr({ ishot: !0, width: da, height: Z, x: J, y: A, fill: cc, stroke: "none" }).drag(Pa, Ia, Ba, Da, Da, Da).tooltip(Va, null, null, !0).css(H);
                Va = Gb(S);
                I.slider2 = B.path(g).attr({ path: tb, fill: Ra, strokeWidth: 1, stroke: La }).translate(sa.x, sa.y);
                I.slider2Effect =
                    B.path(g).attr({ path: Wa, fill: "none", strokeWidth: 1, stroke: Ib }).translate(sa.x, sa.y);
                I.slider2Tracker = B.rect(g).attr({ ishot: !0, width: da, height: Z, x: J, y: A, fill: cc, stroke: "none" }).translate(sa.x, sa.y).css(H).drag(Pa, Ia, Ba, sa, sa, sa).tooltip(Va, null, null, !0)
            }
        }
    }
]);
FusionCharts.register("module", [
    "private", "modules.renderer.js-powercharts", function() {
        function db(b, d, a) {
            var c = b.fcObj;
            A.hcLib.createChart(c, b.container, b.type, void 0, void 0, !1, !0);
            u.raiseEvent("chartUpdated", H({ sourceEvent: a }, d), c, [c.id])
        }

        function vb(b, d, a, c, e, f) {
            var p = Ma.atan((d - c) / (b - a)), n = [];
            0 > p && (p = 2 * Ma.PI + p);
            if (c > d) {
                if (a >= b && p > Ma.PI || a < b && p > Ma.PI)p -= Ma.PI
            } else if (a >= b && p < Ma.PI && 0 !== p || a < b && p < Ma.PI)p += Ma.PI;
            "undefined" == typeof f ? (a = b + e * ta(p), e = d + e * Za(p)) : (e = P(e) / 2, f = P(f) / 2, a = b + (e = b < a ? e : -e),
                e = d + e * Ma.tan(p), P(d - e) > P(f) && (e = d + (f = d < c ? f : -f), a = b + f / Ma.tan(p)));
            n.push("L", a, e, a + 10 * ta(p + .79), e + 10 * Za(p + .79), "M", a + 10 * ta(p - .79), e + 10 * Za(p - .79), "L", a, e);
            return n
        }

        function qb(b, d) {
            var a;
            d._origAttr || (d._origAttr = {});
            for (a in b)cc.test(a) || (d._origAttr[a] = b[a]);
            return d._origAttr
        }

        var A = this,
            u = A.hcLib,
            U = u.Raphael,
            Ta = A.window,
            Sa = Ta.document,
            z = u.BLANKSTRING,
            ac = u.createTrendLine,
            ab = u.parseTooltext,
            h = u.pluck,
            B = u.getValidValue,
            g = u.pluckNumber,
            da = u.getFirstValue,
            Jb = u.getDefinedColor,
            F = u.parseUnsafeString,
            Y = u.FC_CONFIG_STRING,
            H = u.extend2,
            xa = u.getDashStyle,
            ea = u.toRaphaelColor,
            rb = u.toPrecision,
            Aa = u.hasSVG,
            Fb = u.createContextMenu,
            bc = u.isIE,
            sb = u.regex.dropHash,
            Na = u.HASHSTRING,
            hb = function(b, d) {
                var a;
                b || (b = {});
                for (a in d)b[a] = d[a];
                return b
            },
            jb = u.each,
            wb = u.addEvent,
            ha = u.removeEvent,
            Ka = u.getTouchEvent,
            S = function(b) { return void 0 !== b && null !== b },
            qa = "rgba(192,192,192," + (bc ? .002 : 1E-6) + ")",
            La = u.TOUCH_THRESHOLD_PIXELS,
            Kb = u.CLICK_THRESHOLD_PIXELS,
            Gb = 8 === Ta.document.documentMode ? "visible" : "",
            cc = /^_/,
            Eb = u.BGRATIOSTRING,
            Ma = Math,
            Za = Ma.sin,
            ta = Ma.cos,
            ma = Ma.round,
            J = Ma.min,
            Xa = Ma.max,
            P = Ma.abs,
            v = Ma.PI,
            uc = Ma.ceil,
            $b = Ma.floor,
            Ac = Ma.sqrt,
            Z = Ma.pow,
            ba = v / 180,
            Ra = 2 * v,
            ob = u.hasTouch,
            dc = ob ? La : Kb,
            ec = u.graphics.getColumnColor,
            I = u.getFirstColor,
            kc = u.setLineHeight,
            Fa = u.pluckFontSize,
            Ga = u.pluckColor,
            bb = u.getFirstAlpha,
            lc = u.graphics.getDarkColor,
            ga = u.graphics.getLightColor,
            y = u.graphics.convertColor,
            Ha = u.COLOR_TRANSPARENT,
            Pa = u.POSITION_CENTER,
            Ia = u.POSITION_TOP,
            Ba = u.POSITION_BOTTOM,
            ka = u.POSITION_RIGHT,
            Ea = u.POSITION_LEFT,
            Va = u.bindSelectionEvent,
            q = u.chartAPI,
            oa = u.graphics.mapSymbolName,
            La = q.singleseries,
            ya = u.COMMASTRING,
            Ja = u.ZEROSTRING,
            Ca = u.HUNDREDSTRING,
            ib = u.COMMASPACE,
            fc = u.getMouseCoordinate,
            ua = u.plotEventHandler,
            $c = A.xssEncode,
            gc = u.SHAPE_RECT,
            pb = u.deltend,
            Kb = u.graphics,
            xb = Kb.parseColor,
            Hb = Kb.getValidColor,
            tb = u.placeHorizontalAxis,
            Wa = u.placeVerticalAxis,
            Rb = u.stepYAxisNames,
            Ya = u.adjustHorizontalCanvasMargin,
            yb = u.adjustVerticalCanvasMargin,
            Ib = u.getDataParser,
            Pb = { pageX: 0, pageY: 0 },
            Da,
            sa,
            eb,
            $a = function() {
                this.data("move", !1);
                clearTimeout(this._longpressactive);
                delete this._longpressactive
            },
            ad = u.createElement;
        u.eventList.chartupdated = "FC_ChartUpdated";
        u.eventList.dataposted = "FC_DataPosted";
        u.eventList.dataposterror = "FC_DataPostError";
        u.eventList.datarestored = "FC_DataRestored";
        A.addEventListener("rendered", function(b) {
            b = b.sender;
            var d = b.__state, a = b.jsVars && b.jsVars.instanceAPI;
            !d.listenersAdded && a && "function" === typeof a.getCollatedData && (b.addEventListener(["chartupdated", "dataupdated", "rendered"], function(a) { delete a.sender.__state.hasStaleData }), d.listenersAdded =
                !0)
        });
        q("spline", { friendlyName: "Spline Chart", standaloneInit: !0, creditLabel: !1, defaultSeriesType: "spline", rendererId: "spline" }, q.linebase);
        q("splinearea", { friendlyName: "Spline Area Chart", standaloneInit: !0, creditLabel: !1, defaultSeriesType: "areaspline", anchorAlpha: "100", rendererId: "spline" }, q.area2dbase);
        q("msspline", { friendlyName: "Multi-series Spline Chart", standaloneInit: !0, creditLabel: !1, defaultSeriesType: "spline", rendererId: "spline" }, q.mslinebase);
        q("mssplinedy", {
            friendlyName: "Multi-series Dual Y-Axis Spline Chart",
            standaloneInit: !0,
            creditLabel: !1,
            isDual: !0,
            series: q.mscombibase.series,
            secondarySeriesType: "spline",
            secondarySeriesFilter: { spline: !0 },
            defaultSeriesFilter: { spline: !0 }
        }, q.msspline);
        q("mssplinearea", { friendlyName: "Multi-series Spline Area Chart", standaloneInit: !0, creditLabel: !1, defaultSeriesType: "areaspline", rendererId: "spline" }, q.msareabase);
        q("msstepline", { friendlyName: "Multi-series Step Line Chart", standaloneInit: !0, creditLabel: !1, defaultSeriesType: "line", rendererId: "cartesian", stepLine: !0 }, q.mslinebase);
        q("inversemsline", { friendlyName: "Inverted Y-Axis Multi-series Line Chart", standaloneInit: !0, creditLabel: !1, inversed: !0, rendererId: "cartesian" }, q.mslinebase);
        q("inversemsarea", { friendlyName: "Inverted Y-Axis Multi-series Area Chart", standaloneInit: !0, creditLabel: !1, inversed: !0, rendererId: "cartesian" }, q.msareabase);
        q("inversemscolumn2d", { friendlyName: "Inverted Y-Axis Multi-series Column Chart", standaloneInit: !0, creditLabel: !1, inversed: !0, rendererId: "cartesian" }, q.mscolumn2dbase);
        q("logmsline", {
            friendlyName: "Multi-series Log Line Chart",
            standaloneInit: !0,
            isValueAbs: !0,
            isLog: !0,
            configureAxis: q.logbase.configureAxis,
            pointValueWatcher: q.logbase.pointValueWatcher,
            getLogAxisLimits: q.logbase.getLogAxisLimits,
            creditLabel: !1,
            rendererId: "cartesian"
        }, q.mslinebase);
        q("logmscolumn2d", { friendlyName: "Multi-series Log Column Chart", standaloneInit: !0, isLog: !0, isValueAbs: !0, configureAxis: q.logbase.configureAxis, pointValueWatcher: q.logbase.pointValueWatcher, getLogAxisLimits: q.logbase.getLogAxisLimits, creditLabel: !1, rendererId: "cartesian" }, q.mscolumn2dbase);
        q("logstackedcolumn2d", { friendlyName: "Stacked Log Column Chart", standaloneInit: !0, creditLabel: !1, isStacked: !0 }, q.logmscolumn2d);
        q("errorbar2d", {
            friendlyName: "Error Bar Chart",
            standaloneInit: !0,
            creditLabel: !1,
            showValues: 0,
            rendererId: "cartesian",
            isErrorChart: !0,
            fireGroupEvent: !0,
            chart: function() {
                var b = this.base.chart.apply(this, arguments), d = this.drawErrorValue;
                b.callbacks || (b.callbacks = []);
                b.callbacks.push(function() {
                    for (var a = this.elements.plots, b = this.dataset || this.options.series, e = a && a.length; e--;)
                        b[e] &&
                            d.call(this, a[e], b[e])
                });
                return b
            },
            point: function(b, d, a, c, e, f, p, n, t) {
                b = g(c.ignoreemptydatasets, 0);
                var l = !1,
                    r = !g(c.halferrorbar, 1),
                    k = e[Y],
                    m = h(this.isValueAbs, k.isValueAbs, !1),
                    s = g(a.showvalues, k.showValues),
                    C = g(d.yAxis, 0),
                    fa = g(c.use3dlighting, 1),
                    G = e[Y].numberFormatter,
                    x = this.colorManager,
                    w = g(c.useplotgradientcolor, 1) ? Jb(c.plotgradientcolor, x.getColor("plotGradientColor")) : z,
                    za = h(a.alpha, c.plotfillalpha, "100"),
                    D = bb(h(a.errorbaralpha, c.errorbaralpha, za)),
                    kb = g(a.dashed, c.plotborderdashed, 0),
                    fb = g(a.dashlen,
                        c.plotborderdashlen, 5),
                    E = g(a.dashgap, c.plotborderdashgap, 4),
                    $ = h(d.type, this.defaultSeriesType),
                    R = e.plotOptions[$] && e.plotOptions[$].stacking,
                    $ = x.getPlotColor(),
                    K,
                    q,
                    ca,
                    la,
                    M,
                    u,
                    L,
                    W,
                    O,
                    N,
                    ia,
                    X,
                    Q,
                    v,
                    V,
                    Oa;
                this.errorBarShadow = g(c.errorbarshadow);
                d.errorBar2D = !0;
                d.name = B(a.seriesname);
                R || (d.columnPosition = g(t, n, p));
                if (0 === g(a.includeinlegend) || 0 === za || void 0 === d.name)d.showInLegend = !1;
                d.errorBarWidthPercent = g(a.errorbarwidthpercent, c.errorbarwidthpercent, 70);
                d.errorBarColor = y(I(h(a.errorbarcolor, c.errorbarcolor,
                    "AAAAAA")), D);
                d.errorBarThickness = g(a.errorbarthickness, c.errorbarthickness, 1);
                d.color = h(a.color, $).split(",")[0].replace(/^#?/g, "#");
                if (p = a.data)
                    for (X = h(c.plotborderthickness, "1"), R = e.chart.useRoundEdges, t = this.isBar, n = /3d$/.test(e.chart.defaultSeriesType), v = h(c.plotbordercolor, x.getColor("plotBorderColor")).split(",")[0], V = "0" == c.showplotborder ? "0" : h(c.plotborderalpha, "100"), V = n ? c.showplotborder ? V : "0" : V, v = n ? h(c.plotbordercolor, "#FFFFFF") : v, x = 0; x < f; x += 1)
                    (q = p[x]) ? (W = G.getCleanValue(q.value, m), O = G.getCleanValue(q.errorvalue,
                        m), null === W ? d.data.push({ y: null }) : (l = !0, L = k.oriCatTmp[x], la = h(q.color, a.color, $), M = bb(h(q.alpha, za)) + z, K = h(q.ratio, a.ratio, c.plotfillratio), ca = h(360 - c.plotfillangle, 90), 0 > W && (ca = 360 - ca), N = { opacity: M / 100 }, Q = J(M, bb(V)) + z, u = ec(la + "," + w, M, K, ca, R, v, Q, t, n), ia = { opacity: D / 250 }, Oa = this.getPointStub(q, W, L, e, a, s, C, O), L = [], L.push({ errorValue: O, toolText: Oa._errortoolText, shadow: ia }), r && L.push({ errorValue: -O, toolText: Oa._errortoolText, shadow: ia }), K = this.pointHoverOptions(q, d, {
                        plotType: "column",
                        is3d: n,
                        isBar: t,
                        use3DLighting: fa,
                        isRoundEdged: R,
                        color: la,
                        gradientColor: w,
                        alpha: M,
                        ratio: K,
                        angle: ca,
                        borderWidth: X,
                        borderColor: v,
                        borderAlpha: Q,
                        borderDashed: kb,
                        borderDashGap: E,
                        borderDashLen: fb,
                        shadow: N
                    }), d.data.push(H(Oa, { y: W, shadow: N, errorValue: L, color: u[0], borderColor: u[1], borderWidth: X, use3DLighting: fa, dashStyle: g(q.dashed, kb) ? xa(h(q.dashlen, fb), h(q.dashgap, E), X) : void 0, hoverEffects: K.enabled && K.options, rolloverProperties: K.enabled && K.rolloverOptions })), this.pointValueWatcher(e, W, O))) : d.data.push({ y: null });
                b && !l && (d.showInLegend =
                    !1);
                return d
            },
            pointValueWatcher: function(b, d, a) {
                var c = b[Y];
                null !== d && (a ? (b = d + a, d -= a) : b = d, c[0] || (c[0] = {}), a = c[0], a.max = a.max > b ? a.max : b, a.min = a.min < b ? a.min : b, a.max = a.max > d ? a.max : d, a.min = a.min < d ? a.min : d)
            },
            drawErrorValue: function(b, d) {
                var a = this,
                    c = a.options,
                    e = c.plotOptions.series,
                    f = c[Y],
                    f = a.smartLabel || f.smartLabel,
                    p = a.paper,
                    n = a.layers,
                    t = a.xAxis[0],
                    l = a.yAxis[0],
                    h = isNaN(+e.animation) && e.animation.duration || 1E3 * e.animation,
                    k = n.dataset = n.dataset || p.group("dataset-orphan"),
                    m = b.errorGroup = p.group("errorBar").insertAfter(b.lineLayer ||
                        k.column || k),
                    s = n.errorTracker || (n.errorTracker = p.group("hot-error", n.tracker || k).toBack()),
                    C = k.errorValueGroup || (k.errorValueGroup = p.group("errorValues")),
                    fa = d.errorBar2D,
                    G = d.data || [],
                    x = G.length,
                    w = b.items,
                    za = !1 !== (c.tooltip || {}).enabled,
                    D,
                    kb,
                    q,
                    E,
                    $ = b.graphics = b.graphics || [],
                    R = !1 === d.visible ? "hidden" : "visible",
                    K = c.chart,
                    Qa = K.valuePadding || 0,
                    K = 1 == K.rotateValues ? 270 : void 0,
                    ca = d.columnPosition || 0,
                    la = a.definition.chart,
                    M = t.getAxisPosition(0),
                    u = t.getAxisPosition(1) - M,
                    L = e.groupPadding,
                    W = e.maxColWidth,
                    M = d.numColumns ||
                        1,
                    u = (1 - .01 * (la && la.plotspacepercent)) * u || J(u * (1 - 2 * L), W * M),
                    la = u / M,
                    ca = ca * la - u / 2,
                    M = a.logic,
                    u = !M.avoidCrispError,
                    L = a.canvasHeight + a.canvasTop,
                    O = n.shadows || (n.shadows = p.group("shadows", k).toBack()),
                    n = {},
                    W = c.plotOptions.series.dataLabels.style,
                    N = a.chartWidth,
                    ia = a.chartHeight,
                    X = { fontFamily: W.fontFamily, fontSize: W.fontSize, lineHeight: W.lineHeight, fontWeight: W.fontWeight, fontStyle: W.fontStyle },
                    Q,
                    y,
                    V,
                    v,
                    B,
                    F,
                    H,
                    aa,
                    I,
                    A,
                    ja,
                    cb,
                    na,
                    pa,
                    mb,
                    va,
                    ea,
                    P,
                    ra,
                    wa,
                    zb = function(b) { ua.call(this, a, b) },
                    Z = function(b) {
                        ua.call(this, a,
                            b, "DataPlotRollOver")
                    },
                    ba = function(b) { ua.call(this, a, b, "DataPlotRollOut") },
                    Cc = function(b) { return function() { void 0 !== b && a.linkClickFN.call({ link: b }, a) } },
                    U = function() {
                        m.show();
                        C.attr({ transform: "...t" + -N + "," + -ia });
                        O.show()
                    };
                if (0 < x) {
                    for (; x--;)
                        if (D = G[x], c = g(D.errorStartValue, D.y), cb = D.errorValue, k = D.link, void 0 !== c && cb && (mb = cb.length)) {
                            D = g(D.x, x);
                            E = l.getAxisPosition(c);
                            q = t.getAxisPosition(D);
                            fa && (ca && (q += ca), la && (q += la / 2));
                            A = w[x] || (w[x] = {});
                            A.errorBars = A.errorBars || [];
                            A.errorValues = A.errorValues || [];
                            A.trackerBars = A.trackerBars || [];
                            for (y = (Q = A.tracker || A.graphic) && Q.data("groupId"); mb--;)
                                ra = va = wa = null, na = cb[mb], I = na.errorStartValue, kb = na.tooltext || na.toolText, B = isNaN(I) ? E : l.getAxisPosition(I), V = na.displayValue, pa = na.errorValue, na && S(pa) && (v = g(na.isHorizontal, 0), P = g(na.errorBarThickness, d.errorBarThickness, 1), va = g(la * d.errorBarWidthPercent / 100, na.errorWidth, v ? d.hErrorBarWidth : d.vErrorBarWidth, d.errorBarWidth), ea = va / 2, va = na.errorBarColor || d.errorBarColor, S(V) && V !== z && (wa = p.text(C).attr({
                                    text: V,
                                    fill: W.color,
                                    "text-bound": [W.backgroundColor, W.borderColor, W.borderThickness, W.borderPadding, W.borderRadius, W.borderDash]
                                }).css(X), f.setStyle(X), n = f.getOriSize(V)), v ? (V = ja = I = t.getAxisPosition(D + pa), v = q, u && (V = ma(B) + P % 2 / 2, v = ma(ja) + P % 2 / 2), B = ["M", q, V, "H", v, "M", v, V - ea, "V", V + ea]) : (V = ja = I = l.getAxisPosition((S(I) ? I : c) + pa), v = q, u && (V = ma(ja) + P % 2 / 2, v = ma(q) + P % 2 / 2), aa = .5 * (K ? n.width : n.height), F = ja + .5 * P + Qa + aa, H = ja - .5 * P - Qa - aa, B > ja ? (I = H, H - a.canvasTop < aa && (I = F)) : (I = F, L - F < aa && (I = H)), B = ["M", v, B, "V", V, "M", v - ea, V, "H", v + ea]), va = p.path(B,
                                    m).attr({ stroke: va, "stroke-width": P, cursor: k ? "pointer" : "", "stroke-linecap": "round", visibility: R }).shadow(g(M.errorBarShadow, e.shadow) && 0 < P && na.shadow, O), (k || za) && P < dc && (ra = p.path(B, s).attr({ stroke: qa, "stroke-width": dc, cursor: k ? "pointer" : "", ishot: !!k, visibility: R })), ra = ra || va, ra.data("eventArgs", Q && Q.data("eventArgs") || { link: k, toolText: kb, displayValue: na.displayValue, value: pa }), ra.click(zb).data("groupId", y).hover(Z, ba).tooltip(kb), (k || za) && ra.click(Cc(k)), wa && (wa.attr({
                                    x: q,
                                    y: I,
                                    title: na.originalText ||
                                        "",
                                    visibility: R
                                }).css(X), K && wa.attr("transform", "T0,0,R" + K)), va && ($.push(va), A.errorBars.push(va)), wa && ($.push(wa), A.errorValues.push(wa)), ra && ra !== va && ($.push(ra), A.trackerBars.push(ra)));
                            h && (m.hide(), C.attr({ transform: "...t" + N + "," + ia }), O.hide(), setTimeout(U, h))
                        }
                    b.visible = !1 !== d.visible
                }
            }
        }, q.mscolumn2dbase);
        q("errorline", {
            friendlyName: "Error Line Chart",
            standaloneInit: !0,
            creditLabel: !1,
            chart: q.errorbar2d.chart,
            drawErrorValue: q.errorbar2d.drawErrorValue,
            useErrorGroup: !0,
            rendererId: "cartesian",
            isErrorChart: !0,
            fireGroupEvent: !0,
            canvasPaddingModifiers: ["anchor", "errorbar"],
            point: function(b, d, a, c, e, f) {
                b = g(c.ignoreemptydatasets, 0);
                var p = !1,
                    n = !g(c.halferrorbar, 1),
                    t = e[Y],
                    l = h(this.isValueAbs, t.isValueAbs, !1),
                    r = g(a.showvalues, t.showValues),
                    k = g(d.yAxis, 0),
                    m = this.numberFormatter,
                    s = this.colorManager,
                    C = I(h(a.color, c.linecolor, s.getPlotColor())),
                    fa = e.chart,
                    G = g(a.alpha, c.linealpha, "100"),
                    x = g(a.errorbaralpha, c.errorbaralpha, G),
                    w = g(a.linethickness, c.linethickness, 2),
                    za = Boolean(g(a.dashed, c.linedashed, 0)),
                    D = g(a.linedashlen,
                        c.linedashlen, 5),
                    kb = g(a.linedashgap, c.linedashgap, 4),
                    fb,
                    E,
                    $,
                    R,
                    K,
                    u,
                    ca,
                    la,
                    M,
                    v,
                    L,
                    W,
                    O,
                    N,
                    ia,
                    X,
                    Q,
                    F,
                    V,
                    Oa,
                    A,
                    Bc,
                    P,
                    aa,
                    ea,
                    S,
                    ja,
                    cb,
                    na,
                    pa;
                this.errorBarShadow = g(c.errorbarshadow);
                d.name = B(a.seriesname);
                d.color = { FCcolor: { color: C, alpha: G } };
                d.lineWidth = w;
                ca = g(a.drawanchors, a.showanchors, c.drawanchors, c.showanchors);
                V = g(a.anchorsides, c.anchorsides, 0);
                Oa = g(a.anchorradius, c.anchorradius, 3);
                A = I(h(a.anchorbordercolor, c.anchorbordercolor, C));
                Bc = g(a.anchorborderthickness, c.anchorborderthickness, 1);
                P = I(h(a.anchorbgcolor,
                    c.anchorbgcolor, s.getColor("anchorBgColor")));
                aa = h(a.anchoralpha, c.anchoralpha, "100");
                ea = h(a.anchorbgalpha, c.anchorbgalpha, aa);
                S = g(a.anchorstartangle, c.anchorstartangle, 90);
                s = d.anchorShadow = g(c.anchorshadow, 0);
                d.errorBarWidth = g(c.errorbarwidth, a.errorbarwidth, 5);
                d.errorBarColor = y(I(h(a.errorbarcolor, c.errorbarcolor, "AAAAAA")), x);
                d.errorBarThickness = J(w, g(a.errorbarthickness, c.errorbarthickness, 1));
                if (0 === g(a.includeinlegend) || void 0 === d.name || 0 === G && 1 !== ca)d.showInLegend = !1;
                d.marker = {
                    fillColor: {
                        FCcolor: {
                            color: P,
                            alpha: ea * aa / 100 + z
                        }
                    },
                    lineColor: { FCcolor: { color: A, alpha: aa + z } },
                    lineWidth: Bc,
                    radius: Oa,
                    symbol: oa(V),
                    startAngle: S
                };
                if (c = a.data)
                    for (R = 0; R < f; R += 1)
                    (ia = c[R]) ? (E = m.getCleanValue(ia.value, l), $ = m.getCleanValue(ia.errorvalue, l), null === E ? d.data.push({ y: null }) : (p = !0, N = g(ia.anchorsides, V), O = g(ia.anchorradius, Oa), L = I(h(ia.anchorbordercolor, A)), W = g(ia.anchorborderthickness, Bc), v = I(h(ia.anchorbgcolor, P)), la = h(ia.anchoralpha, aa), M = h(ia.anchorbgalpha, ea), K = I(h(ia.color, C)), u = h(ia.alpha, G), cb = g(ia.dashed, za) ? xa(D, kb,
                        w) : void 0, X = { opacity: u / 100 }, ja = void 0 === ca ? 0 !== u : !!ca, fb = t.oriCatTmp[R], pa = this.getPointStub(ia, E, fb, e, a, r, k, $), na = [], na.push({ errorValue: $, toolText: pa._errortoolText, shadow: { opacity: x / 250 } }), n && na.push({ errorValue: null === $ ? null : -$, toolText: pa._errortoolText, shadow: { opacity: x / 250 } }), Q = h(ia.anchorstartangle, S), F = Boolean(g(ia.anchorshadow, s, 0)), fb = this.pointHoverOptions(ia, d, {
                        plotType: "anchor",
                        anchorBgColor: v,
                        anchorAlpha: la,
                        anchorBgAlpha: M,
                        anchorAngle: Q,
                        anchorBorderThickness: W,
                        anchorBorderColor: L,
                        anchorBorderAlpha: la,
                        anchorSides: N,
                        anchorRadius: O,
                        shadow: X
                    }), d.data.push(H(pa, { y: E, shadow: X, dashStyle: cb, errorValue: na, valuePosition: h(ia.valueposition, fa.valuePosition), color: { FCcolor: { color: K, alpha: u } }, marker: { enabled: ja, shadow: F && { opacity: la / 100 }, fillColor: { FCcolor: { color: v, alpha: M * la / 100 + z } }, lineColor: { FCcolor: { color: L, alpha: la } }, lineWidth: W, radius: O, symbol: oa(N), startAngle: Q }, hoverEffects: fb.enabled && fb.options, rolloverProperties: fb.enabled && fb.rolloverOptions })), q.errorbar2d.pointValueWatcher(e, E, $))) : d.data.push({ y: null });
                b && !p && (d.showInLegend = !1);
                return d
            }
        }, q.mslinebase);
        q("errorscatter", {
            friendlyName: "Error Scatter Chart",
            isXY: !0,
            standaloneInit: !0,
            creditLabel: !1,
            chart: q.errorbar2d.chart,
            drawErrorValue: q.errorbar2d.drawErrorValue,
            defaultZeroPlaneHighlighted: !1,
            useErrorGroup: !0,
            rendererId: "cartesian",
            isErrorChart: !0,
            fireGroupEvent: !0,
            point: function(b, d, a, c, e, f, p) {
                b = g(c.ignoreemptydatasets, 0);
                f = !1;
                var n = g(a.drawline, 0),
                    t = g(a.drawprogressioncurve, 0),
                    l,
                    r,
                    k = g(a.showvalues, e[Y].showValues),
                    m = this.numberFormatter,
                    s = g(a.showregressionline,
                        c.showregressionline, 0),
                    C = h(c.errorbarcolor, "AAAAAA"),
                    fa = h(c.errorbaralpha, "100"),
                    G = g(c.errorbarthickness, 1);
                r = g(c.errorbarwidth, 5);
                var x = g(c.halfverticalerrorbar, 1),
                    w = g(a.verticalerrorbaralpha, a.errorbaralpha, c.verticalerrorbaralpha, fa),
                    za = y(h(a.verticalerrorbarcolor, a.errorbarcolor, c.verticalerrorbarcolor, C), w),
                    D = g(a.verticalerrorbarthickness, a.errorbarthickness, c.verticalerrorbarthickness, G),
                    kb = g(c.halfhorizontalerrorbar, 1),
                    fa = h(a.horizontalerrorbaralpha, a.errorbaralpha, c.horizontalerrorbaralpha,
                        fa),
                    C = y(h(a.horizontalerrorbarcolor, a.errorbarcolor, c.horizontalerrorbarcolor, C), fa),
                    G = g(a.horizontalerrorbarthickness, a.errorbarthickness, c.horizontalerrorbarthickness, G),
                    q = g(a.usehorizontalerrorbar, c.usehorizontalerrorbar, 0),
                    E = g(a.useverticalerrorbar, c.useverticalerrorbar, 1),
                    $ = { sumX: 0, sumY: 0, sumXY: 0, sumXsqure: 0, sumYsqure: 0, xValues: [], yValues: [] };
                l = this.colorManager;
                var R = l.getPlotColor(), K, u, ca, la, M, v, L, W, O, N, ia, X, Q, F, V, Oa, J, A, H, aa, P, ea, ja, S;
                this.errorBarShadow = g(c.errorbarshadow);
                d.zIndex = 1;
                d.name =
                    B(a.seriesname);
                if (0 === g(a.includeinlegend) || void 0 === d.name)d.showInLegend = !1;
                d.vErrorBarWidth = g(a.verticalerrorbarwidth, a.errorbarwidth, c.verticalerrorbarwidth, r);
                d.hErrorBarWidth = g(a.horizontalerrorbarwidth, a.errorbarwidth, c.horizontalerrorbarwidth, r);
                if (n || t)
                    t && (d.type = "spline"), u = I(h(a.color, R)), n = h(a.alpha, Ca), t = g(a.linethickness, c.linethickness, 2), r = Boolean(g(a.linedashed, a.dashed, c.linedashed, 0)), ca = g(a.linedashlen, c.linedashlen, 5), la = g(a.linedashgap, c.linedashgap, 4), d.color = y(h(a.linecolor,
                        c.linecolor, u), g(a.linealpha, c.linealpha, n)), d.lineWidth = t, d.dashStyle = r ? xa(ca, la, t) : void 0;
                n = Boolean(g(a.drawanchors, a.showanchors, c.drawanchors, c.showanchors, 1));
                p = g(a.anchorsides, c.anchorsides, p + 3);
                t = g(a.anchorradius, c.anchorradius, 3);
                u = I(h(a.anchorbordercolor, a.color, c.anchorbordercolor, u, R));
                R = g(a.anchorborderthickness, c.anchorborderthickness, 1);
                la = I(h(a.anchorbgcolor, c.anchorbgcolor, l.getColor("anchorBgColor")));
                v = h(a.anchoralpha, a.alpha, c.anchoralpha, "100");
                L = h(a.anchorbgalpha, c.anchorbgalpha,
                    v);
                ca = h(a.anchorstartangle, c.anchorstartangle);
                d.anchorShadow = g(c.anchorshadow, 0);
                d.marker = { fillColor: this.getPointColor(la, "100"), lineColor: { FCcolor: { color: u, alpha: v + z } }, lineWidth: R, radius: t, symbol: oa(p) };
                if (l = a.data) {
                    r = l.length;
                    s && (d.events = { hide: this.hideRLine, show: this.showRLine }, P = g(a.showyonx, c.showyonx, 1), ea = I(h(a.regressionlinecolor, c.regressionlinecolor, u)), ja = g(a.regressionlinethickness, c.regressionlinethickness, R), c = bb(g(a.regressionlinealpha, c.regressionlinealpha, v)), ea = y(ea, c));
                    for (K =
                        0; K < r; K += 1)
                    (M = l[K]) ? (c = m.getCleanValue(M.y), V = m.getCleanValue(M.x), m.getCleanValue(M.errorvalue), Oa = m.getCleanValue(h(M.horizontalerrorvalue, M.errorvalue)), J = m.getCleanValue(h(M.verticalerrorvalue, M.errorvalue)), null === c ? d.data.push({ y: null, x: V }) : (f = !0, A = this.getPointStub(M, c, m.xAxis(V), e, a, k, void 0, J, Oa, V), W = g(M.anchorsides, p), O = g(M.anchorradius, t), N = I(h(M.anchorbordercolor, u)), ia = g(M.anchorborderthickness, R), X = I(h(M.anchorbgcolor, la)), Q = h(M.anchoralpha, M.alpha, v), F = h(M.anchorbgalpha, L), H = Boolean(g(M.usehorizontalerrorbar,
                        q)), aa = Boolean(g(M.useverticalerrorbar, E)), S = [], H && (H = A._hErrortoolText, S.push({ errorValue: Oa, toolText: H, errorBarColor: C, isHorizontal: 1, errorBarThickness: G, shadow: { opacity: fa / 250 } }), kb || S.push({ errorValue: -Oa, toolText: H, errorBarColor: C, isHorizontal: 1, errorBarThickness: G, shadow: { opacity: fa / 250 } })), aa && (aa = A._errortoolText, S.push({ errorValue: J, toolText: aa, errorBarColor: za, errorBarThickness: D, shadow: { opacity: w / 250 } }), x || S.push({
                        errorValue: -J,
                        toolText: aa,
                        errorBarColor: za,
                        errorBarThickness: D,
                        shadow: {
                            opacity: w /
                                250
                        }
                    })), aa = this.pointHoverOptions(M, d, { plotType: "anchor", anchorBgColor: X, anchorAlpha: Q, anchorBgAlpha: F, anchorAngle: ca, anchorBorderThickness: ia, anchorBorderColor: N, anchorBorderAlpha: Q, anchorSides: W, anchorRadius: O }), d.data.push({
                        y: c,
                        x: V,
                        errorValue: S,
                        displayValue: A.displayValue,
                        toolText: A.toolText,
                        link: A.link,
                        marker: { enabled: n, shadow: void 0, fillColor: { FCcolor: { color: X, alpha: F * Q / 100 + z } }, lineColor: { FCcolor: { color: N, alpha: Q } }, lineWidth: ia, radius: O, symbol: oa(W), startAngle: h(M.anchorstartangle, ca) },
                        hoverEffects: aa.enabled &&
                            aa.options,
                        rolloverProperties: aa.enabled && aa.rolloverOptions
                    }), this.pointValueWatcher(e, x ? c : c - J, kb ? V : V - Oa, s && $), this.pointValueWatcher(e, c + J, V + Oa, s && $))) : d.data.push({ y: null });
                    s && (a = this.getRegressionLineSeries($, P, r), this.pointValueWatcher(e, a[0].y, a[0].x), this.pointValueWatcher(e, a[1].y, a[1].x), e = { type: "line", color: ea, showInLegend: !1, lineWidth: ja, enableMouseTracking: !1, marker: { enabled: !1 }, data: a, zIndex: 0 }, d = [d, e])
                }
                b && !f && (d.showInLegend = !1);
                return d
            }
        }, q.scatterbase);
        q("waterfall2d", {
            friendlyName: "Waterfall Chart",
            standaloneInit: !0,
            isWaterfall: !0,
            creditLabel: !1,
            point: function(b, d, a, c, e) {
                var f, p, n, t, l, r, k, m, s, C, fa, G, x, w, za;
                b = h(c.connectorthickness, 1);
                var D = { step: !0, type: "line", enableMouseTracking: !1, data: [], dataLabels: { enabled: !1 }, marker: { enabled: !1 }, dashStyle: "1" === c.connectordashed ? xa(g(c.connectordashlen, 2), g(c.connectordashgap, 2), b) : void 0, drawVerticalJoins: !1, useForwardSteps: !0, color: y(h(c.connectorcolor, "000000"), h(c.connectoralpha, 100)), lineWidth: b },
                    kb = this.colorManager,
                    q = a.length,
                    E = e[Y],
                    $ = E.axisGridManager,
                    R = e.xAxis,
                    u = E.x,
                    v = /3d$/.test(e.chart.defaultSeriesType),
                    ca = this.isBar,
                    la = "1" === h(c.showplotborder, v ? "0" : "1") ? v ? 1 : g(c.plotborderthickness, 1) : 0,
                    M = e.chart.useRoundEdges,
                    J = g(c.plotborderalpha, c.plotfillalpha, 100) + z,
                    L = h(c.plotbordercolor, kb.getColor("plotBorderColor").split(",")[0]),
                    W = g(c.useplotgradientcolor, 1) ? Jb(c.plotgradientcolor, kb.getColor("plotGradientColor")) : z,
                    O = g(c.plotborderdashed, 0),
                    N = g(c.plotborderdashlen, 6),
                    ia = g(c.plotborderdashgap, 3),
                    X = 0,
                    Q = Boolean(g(c.use3dlighting, 1)),
                    lb = 0,
                    V = 0,
                    Oa = e[Y].numberFormatter,
                    A,
                    H = 0,
                    I,
                    aa = g(c.showsumatend, 1);
                for (f = 0; f < q; f += 1)m = a[f], b = Oa.getCleanValue(m.value), n = g(m.issum, 0), m.vline || n || (H += b, m._value = b);
                A = Oa.dataLabels(H);
                aa && (aa = !0, q += 1, I = { label: da(c.sumlabel, "Total"), _value: H, value: H, issum: 1, cumulative: 1 });
                for (p = f = 0; f < q; f += 1)
                    m = a[f], !m && aa && (m = I), m.vline ? $.addVline(R, m, X, e) : (b = m._value, delete m._value, n = g(m.issum, 0), k = g(m.cumulative, 1), n ? (b = k ? lb : lb === V ? lb : lb - V, V = lb, D.data.push({ y: null, x: p - .5 })) : lb += b, n = g(m.showlabel, c.showlabels, 1), n = F(n ? da(m.label, m.name) : z), $.addXaxisCat(R,
                        X, X, n, m, {}, c), X += 1, 0 < b ? (t = h(m.color, c.positivecolor, kb.getPlotColor()), d.hoverEffects && (d.hoverEffects.color = h(m.positivehovercolor, c.positivehovercolor, c.plotfillhovercolor))) : (t = h(m.color, c.negativecolor, kb.getPlotColor()), d.hoverEffects && (d.hoverEffects.color = h(m.negativehovercolor, c.negativehovercolor, c.plotfillhovercolor))), l = h(m.alpha, c.plotfillalpha, "100"), r = h(m.ratio, c.plotfillratio), s = h(360 - c.plotfillangle, 90), 0 > b && (s = 360 - s), G = h(m.alpha, J), x = g(m.dashed, O), w = h(m.dashgap, ia), za = h(m.dashlen,
                        N), C = { opacity: l / 100, inverted: ca }, k = ec(t + ya + W.replace(/,+?$/, ""), l, r, s, M, L, h(m.alpha, J), ca, v), fa = x ? xa(za, w, la) : "none", t = this.pointHoverOptions(m, d, { plotType: "column", is3d: v, isBar: ca, use3DLighting: Q, isRoundEdged: M, color: t, gradientColor: W, alpha: l, ratio: r, angle: s, borderWidth: la, borderColor: L, borderAlpha: G, borderDashed: x, borderDashGap: w, borderDashLen: za, shadow: C }), l = B(F(m.displayvalue)), r = null === b ? b : Oa.dataLabels(b), s = B(F(h(m.tooltext, E.tooltext))), s = E.showTooltip ? void 0 !== s ? ab(s, [
                        1, 2, 3, 5, 6, 7, 20, 21, 24,
                        25
                    ], { formattedValue: r, label: n, yaxisName: F(c.yaxisname), xaxisName: F(c.xaxisname), cumulativeValue: lb, cumulativeDataValue: Oa.dataLabels(lb), sum: A, unformattedSum: H }, m, c) : null === r ? !1 : n !== z ? n + E.tooltipSepChar + r : r : z, l = g(m.showvalue, E.showValues) ? void 0 !== l ? l : r : z, d.data.push({
                        y: b,
                        _FCY: 0 > b ? lb - b : lb,
                        previousY: 0 > b ? lb : 0 === lb - b ? void 0 : lb - b,
                        shadow: C,
                        color: k[0],
                        borderColor: k[1],
                        borderWidth: la,
                        dashStyle: fa,
                        use3DLighting: Q,
                        hoverEffects: t.enabled && t.options,
                        rolloverProperties: t.enabled && t.rolloverOptions,
                        displayValue: l,
                        categoryLabel: n,
                        toolText: s,
                        link: h(m.link)
                    }), D.data.push({ y: b && lb, x: p }), this.pointValueWatcher(e, lb), p += 1);
                u.catCount = X;
                "0" != c.showconnectors && (d = [D, d]);
                return d
            },
            defaultSeriesType: "column",
            rendererId: "cartesian"
        }, La);
        q("multilevelpie", {
            friendlyName: "Multi-level Pie Chart",
            standaloneInit: !0,
            defaultSeriesType: "multilevelpie",
            rendererId: "multiLevelPie",
            defaultPlotShadow: 0,
            series: function() {
                var b = this.dataObj,
                    d = this.hcJSON,
                    a = b.chart,
                    c = d.series,
                    e = {},
                    f = Boolean(g(a.usehovercolor, 1)),
                    p = y(h(a.hoverfillcolor,
                        "FF5904"), g(a.hoverfillalpha, 100)),
                    n = parseInt(a.pieradius, 10),
                    t = 0,
                    l = !0;
                d.chart.plotBorderColor = 0;
                d.chart.plotBackgroundColor = null;
                d.plotOptions.series.dataLabels.style = d.xAxis.labels.style;
                d.plotOptions.series.dataLabels.color = d.xAxis.labels.style.color;
                d.legend.enabled = !1;
                d.plotOptions.pie.allowPointSelect = !1;
                d.plotOptions.series.borderColor = y(h(a.plotbordercolor, a.piebordercolor, "FFFFFF"), "0" != a.showplotborder ? h(a.plotborderalpha, a.pieborderalpha, 100) : 0);
                d.plotOptions.series.borderWidth = g(a.pieborderthickness,
                    a.plotborderthickness, 1);
                d.plotOptions.pie.startingAngle = 0;
                d.plotOptions.pie.size = "100%";
                e.showLabels = g(a.showlabels, 1);
                e.showValues = g(a.showvalues, 0);
                e.showValuesInTooltip = g(a.showvaluesintooltip, a.showvalues, 0);
                e.showPercentValues = g(a.showpercentvalues, a.showpercentagevalues, 0);
                e.showPercentInTooltip = g(a.showpercentintooltip, 0);
                e.toolTipSepChar = h(a.tooltipsepchar, a.hovercapsepchar, ib);
                e.labelSepChar = h(a.labelsepchar, e.toolTipSepChar);
                e.tooltext = a.plottooltext;
                f && (d.plotOptions.series.point.events =
                { mouseOver: function() { for (var a = this, b = a.chart.plots, c, d; a;)a.graphic.attr({ fill: p }), d = a.prevPointIndex, a = a.prevSeriesIndex, a = (c = b[a]) && c.items && c.items[d] }, mouseOut: function() { for (var a = this, b = a.chart.plots, c, d; a;)a.graphic.attr({ fill: a.color }), d = a.prevPointIndex, a = a.prevSeriesIndex, a = (c = b[a]) && c.items && c.items[d] } });
                d.chart.plotBorderWidth = 0;
                b.category && this.addMSPieCat(b.category, 0, 0, 100, h(a.plotfillalpha, a.piefillalpha, 100), e, null);
                n = parseInt(a.pieradius, 10);
                t = 0;
                l = !0;
                n ? (b = 2 * n / c.length, l = !1) : b =
                    parseInt(100 / c.length, 10);
                d.plotOptions.series.dataLabels.distance = 0;
                d.plotOptions.series.dataLabels.placeLabelsInside = !0;
                for (d = 0; d < c.length; d += 1)c[d].innerSize = t + (l ? "%" : ""), c[d].size = (t += b) + (l ? "%" : ""), 0 === c[d].data[c[d].data.length - 1].y && c[d].data.pop()
            },
            spaceManager: function(b, d, a, c) {
                var e = b[Y];
                this.titleSpaceManager(b, d, a - (e.marginLeftExtraSpace + e.marginRightExtraSpace + b.chart.marginRight + b.chart.marginLeft), .4 * (c - (e.marginBottomExtraSpace + e.marginTopExtraSpace + b.chart.marginBottom + b.chart.marginTop)))
            },
            addMSPieCat: function(b, d, a, c, e, f, p) {
                var n = this.numberFormatter, t = this.colorManager, l, r, k = 0, m = b.length - 1, s, C, fa;
                l = this.hcJSON.series;
                var G = f.labelSepChar, x, w, za, D, q, u;
                void 0 === this.colorCount && (this.colorCount = 0);
                0 === d && (this.colorCount = 0);
                l[d] || (l[d] = { data: [{ toolText: !1, doNotSlice: !0, y: 100, visible: !1, color: "rgba(255,255,255,0)" }] });
                l = l[d];
                (r = a - 100 + l.data[l.data.length - 1].y) && l.data.splice(l.data.length - 1, 0, { toolText: !1, doNotSlice: !0, y: r, visible: !1, color: "rgba(255,255,255,0)" });
                l.data[l.data.length -
                    1].y = 100 - c;
                for (C = 0; C <= m; C += 1)s = b[C], s._userValue = n.getCleanValue(s.value, this.isValueAbs), s._value = g(s._userValue, 1), k += s._value;
                k = k || 1;
                r = (c - a) / k;
                for (C = m; 0 <= C; C -= 1)
                    s = b[C], m = r * s._value, fa = F(h(s.label, s.name)), za = null !== s._userValue ? n.dataLabels(s._userValue) : z, D = n.percentValue(s._value / k * 100), x = l.data.length - 1, w = g(s.alpha, e), u = f.showLabels ? fa : z, f.showValues && (f.showPercentValues ? u += u !== z ? G + D : D : void 0 !== za && za !== z && (u += u !== z ? G + za : za)), q = F(h(s.tooltext, s.hovertext, f.tooltext)), q === z ? (q = fa, f.showValuesInTooltip &&
                    (f.showPercentInTooltip ? q += q !== z ? G + D : D : void 0 !== za && za !== z && (q += q !== z ? G + za : za))) : q = ab(q, [1, 2, 3, 14], { percentValue: D, label: fa, formattedValue: za }, s), l.data.splice(x, 0, { prevPointIndex: p, prevSeriesIndex: d - 1, displayValue: u, toolText: q, y: m, link: B(s.link), doNotSlice: !0, color: y(s.color || t.getPlotColor(), w), shadow: { opacity: .01 * ma(50 < w ? w * w * w * 1E-4 : w * w * .01) } }), this.colorCount += 1, s.category && this.addMSPieCat(s.category, d + 1, a, 0 === C ? c : a + m, e, f, x), a += m
            },
            isValueAbs: !0,
            creditLabel: !1
        }, La);
        q("radar", {
            friendlyName: "Radar Chart",
            standaloneInit: !0,
            creditLabel: !1,
            defaultSeriesType: "radar",
            areaAlpha: 50,
            spaceManager: function(b, d, a, c) {
                b.chart.plotBorderWidth = 0;
                b.chart.plotBackgroundColor = null;
                var e = b[Y], f = e.x, p = b.xAxis, n = b.yAxis[0], t = d.chart, n = g(t.labelpadding, t.labelxpadding, parseInt(n && n.labels && n.labels.style && n.labels.style.fontSize || 10, 10));
                a -= e.marginLeftExtraSpace + e.marginRightExtraSpace + b.chart.marginRight + b.chart.marginLeft;
                c -= e.marginBottomExtraSpace + e.marginTopExtraSpace + b.chart.marginBottom + b.chart.marginTop;
                e = this.colorManager;
                c -= this.titleSpaceManager(b, d, a, .4 * c);
                p.min = g(f.min, 0);
                p.max = g(f.max, f.catCount - 1);
                p.gridLineColor = y(h(t.radarspikecolor, e.getColor("divLineColor")), g(t.radarspikealpha, t.radarinlinealpha, e.getColor("divLineAlpha")));
                p.gridLineWidth = g(t.radarspikethickness, 1);
                p.showRadarBorder = g(t.showradarborder, 1);
                p.radarBorderThickness = g(t.radarborderthickness, 2);
                p.radarBorderColor = y(h(t.radarbordercolor, e.getColor("divLineColor")), g(t.radarborderalpha, 100));
                p.radarFillColor = y(h(t.radarfillcolor, e.getColor("altHGridColor")),
                    g(t.radarfillalpha, e.getColor("altHGridAlpha")));
                b.legend.enabled && (h(t.legendposition, Ba).toLowerCase() != ka ? c -= this.placeLegendBlockBottom(b, d, a, c / 2) : a -= this.placeLegendBlockRight(b, d, a / 3, c));
                d = g(t.radarradius);
                f = 2 * g(parseInt(p.labels.style.lineHeight, 10), 12);
                t = 2 * n;
                f = J(a - (100 + t), c - (f + t));
                d = d || .5 * f;
                a = J(.3 * a, .3 * c);
                d < a && (d = a);
                b.chart.axisRadius = d;
                p.labels.labelPadding = n
            },
            anchorAlpha: "100",
            showValues: 0,
            isRadar: !0,
            rendererId: "radar"
        }, q.msareabase);
        La = {
            dragExtended: !0,
            defaultRestoreButtonVisible: 1,
            spaceManager: function(b,
                d, a, c) {
                var e = b[Y], f = b.chart, p = d.chart, n = e.outCanvasStyle, t = c - .3 * (e.marginBottomExtraSpace + f.marginBottom + f.marginTop), l = 0, r = 0, e = this.smartLabel || e.smartLabel, k, m;
                f.formAction = B(p.formaction);
                f.formDataFormat = h(p.formdataformat, A.dataFormats.XML);
                f.formTarget = h(p.formtarget, "_self");
                f.formMethod = h(p.formmethod, "POST");
                f.submitFormAsAjax = g(p.submitformusingajax, 1);
                f.showFormBtn = g(p.showformbtn, 1) && f.formAction;
                f.formBtnTitle = h(p.formbtntitle, "Submit");
                f.formBtnBorderColor = h(p.formbtnbordercolor, "CBCBCB");
                f.formBtnBgColor = h(p.formbtnbgcolor, "FFFFFF");
                f.btnPadding = g(p.btnpadding, 7);
                f.btnSpacing = g(p.btnspacing, 5);
                f.formBtnStyle = { fontSize: n.fontSize, fontFamily: n.fontFamily, fontWeight: "bold" };
                f.formBtnLabelFill = n.color;
                p.btntextcolor && (f.formBtnLabelFill = p.btntextcolor.replace(sb, Na));
                0 <= (n = g(p.btnfontsize)) && (f.formBtnStyle.fontSize = n + "px");
                kc(f.formBtnStyle);
                f.showRestoreBtn = g(p.showrestorebtn, this.defaultRestoreButtonVisible, 1);
                f.showRestoreBtn && (f.restoreBtnTitle = h(p.restorebtntitle, "Restore"), f.restoreBtnBorderColor =
                    h(p.restorebtnbordercolor, f.formBtnBorderColor), f.restoreBtnBgColor = h(p.restorebtnbgcolor, f.formBtnBgColor), f.restoreBtnStyle = { fontSize: f.formBtnStyle.fontSize, fontFamily: f.formBtnStyle.fontFamily, fontWeight: "bold" }, f.restoreBtnLabelFill = f.formBtnLabelFill, p.restorebtntextcolor && (f.restoreBtnLabelFill = p.restorebtntextcolor.replace(sb, Na)), 0 <= (n = g(p.restorebtnfontsize)) && (f.restoreBtnStyle.fontSize = n + "px"), kc(f.restoreBtnStyle));
                f.showLimitUpdateMenu = g(p.showlimitupdatemenu, 1);
                f.showFormBtn && (e.setStyle(f.formBtnStyle),
                    k = e.getOriSize(f.formBtnTitle), l = k.height || 0);
                f.showRestoreBtn && (e.setStyle(f.restoreBtnStyle), m = e.getOriSize(f.restoreBtnTitle), l = Xa(m.height, l) || 0);
                0 < l && (l += f.btnPadding + 4, l > t && (f.btnPadding = Xa(f.btnPadding - l + t, 0) / 2, l = t));
                f.btnHeight = l;
                f.showFormBtn && (r = k.width + l, f.formBtnWidth = g(p.formbtnwidth, r), f.formBtnWidth < k.width && (f.formBtnWidth = r));
                f.showRestoreBtn && (r = m.width + l, f.restoreBtnWidth = g(p.restorebtnwidth, r), f.restoreBtnWidth < m.width && (f.restoreBtnWidth = r));
                f.marginBottom += l + f.btnPadding;
                f.spacingBottom +=
                    l + f.btnPadding;
                (b.callbacks || (b.callbacks = [])).push(this.drawButtons);
                return this.placeVerticalXYSpaceManager.apply(this, arguments)
            },
            drawButtons: function() {
                var b = this.logic, d = this.paper, a = this.options.chart, c = a.btnSpacing, e = this.chartHeight - a.spacingBottom + a.btnPadding, f = this.chartWidth - a.spacingRight, p = this.layers.layerAboveDataset, n = 0;
                a.showFormBtn && (this.submitBtn = d.button(f - a.formBtnWidth, e, a.formBtnTitle, void 0, { width: a.formBtnWidth, height: a.btnHeight, verticalPadding: 1, horizontalPadding: 15 },
                    p).labelcss(a.formBtnStyle).attr({ fill: [I(a.formBtnBgColor), a.formBtnLabelFill], stroke: I(a.formBtnBorderColor) }).buttonclick(function() { b.chartInstance.submitData() }), n = a.formBtnWidth + c);
                a.showRestoreBtn && (this.restoreBtn = d.button(f - a.restoreBtnWidth - n, e, a.restoreBtnTitle, void 0, { width: a.restoreBtnWidth, height: a.btnHeight, verticalPadding: 1, horizontalPadding: 15 }, p).labelcss(a.restoreBtnStyle).attr({ fill: [I(a.restoreBtnBgColor), a.restoreBtnLabelFill], stroke: I(a.restoreBtnBorderColor) }).buttonclick(function() { b.chartInstance.restoreData() }))
            },
            drawAxisUpdateUI: function() {
                var b = this,
                    d = b.logic,
                    a = b.elements,
                    c = b.options,
                    e = c.chart,
                    f = c[Y],
                    p = d.chartInstance,
                    d = d.renderer,
                    n = b.yAxis[0],
                    g = n.axisData,
                    l = n.poi,
                    h = g.plotLines,
                    k = b.container,
                    m = c.chart.showRangeError,
                    s = f.inCanvasStyle,
                    c = b.toolbar || (b.toolbar = []),
                    n = b.menus || (b.menus = []),
                    C = hb({ outline: "none", "-webkit-appearance": "none", filter: "alpha(opacity=0)", position: "absolute", background: "transparent", border: "1px solid #cccccc", textAlign: "right", top: 0, left: 0, width: 50, zIndex: 20, opacity: 0, borderRadius: 0 },
                        s),
                    fa,
                    G;
                d && !d.forExport && (G = function(a, c, d) {
                    if (a === c + "")return null;
                    c = d ? p.setUpperLimit(a, !0) : p.setLowerLimit(a, !0);
                    !c && m && b.showMessage("Sorry! Not enough range gap to modify axis limit to " + (Number(a) || "0") + ".<br />Please modify the data values to be within range.<br />&nbsp;<br />(click anywhere on the chart to close this message)", !0);
                    return c
                }, jb(["max", "min"], function(a) {
                    var c = l[a], d = c.label, f = h[c.index], c = d && d.getBBox(), p, n, g, m, t, fa, q;
                    if (c && d) {
                        n = c.x + c.width - e.spacingLeft;
                        g = e.marginLeft - n - (Aa ?
                            4 : 5);
                        p = ad("input", { type: "text", value: f.value, name: a || "" }, k, !0);
                        hb(C, { top: c.y + (Aa ? -1 : 0) + "px", left: g + "px", width: n + "px" });
                        for (m in C)p.style[m] = C[m];
                        u.dem.listen(p, ["focus", "mouseup", "blur", "keyup"], [
                            function() {
                                var a = { opacity: 1, filter: "alpha(opacity=100)", color: s.color }, b;
                                this.value = f.value;
                                for (b in a)this.style[b] = a[b];
                                t = q = !0;
                                d.hide()
                            }, function() {
                                var a = this;
                                q && (q = !1, ob || setTimeout(function() { a.select() }, 0))
                            }, function() {
                                !0 !== G(this.value, f.value, f.isMaxLabel) && (this.style.opacity = 0, this.style.filter =
                                    "alpha(opacity=0)", d.show());
                                bc && Sa.getElementsByTagName("body")[0].focus && Sa.getElementsByTagName("body")[0].focus();
                                t = q = !1
                            }, function(a) {
                                var b = a.originalEvent.keyCode, c = this.value;
                                13 === b ? (a = G(c, f.value, f.isMaxLabel), !1 === a && (this.style.color = "#dd0000")) : 27 === b && (this.value = f.value, u.dem.fire(this, "blur", a))
                            }
                        ]);
                        p.setAttribute("isOverlay", "true");
                        Aa ? (wb(b.container, "defaultprevented", fa = function(a) { p.parentNode && u.dem.fire(p, "blur", a) }), wb(b.container, "destroy", function() {
                            ha(b, "defaultprevented", fa);
                            p.parentNode.removeChild(p)
                        })) : (wb(b.container, "mousedown", fa = function(a) { a.srcElement !== p && t && u.dem.fire(p, "blur", a) }), wb(b.container, "destroy", function() {
                            ha(b.container, "mousedown", fa);
                            p.parentNode.removeChild(p)
                        }))
                    }
                }), e.showLimitUpdateMenu && (n.push(fa = Fb({
                    chart: b,
                    basicStyle: f.outCanvasStyle,
                    items: [
                        { text: "Increase Upper Limit", onclick: function() { p.setUpperLimit(g.max + g.tickInterval, !0) } }, { text: "Increase Lower Limit", onclick: function() { p.setLowerLimit(g.min + g.tickInterval, !0) } }, {
                            text: "Decrease Upper Limit",
                            onclick: function() { p.setUpperLimit(g.max - g.tickInterval, !0) }
                        }, { text: "Decrease Lower Limit", onclick: function() { p.setLowerLimit(g.min - g.tickInterval, !0) } }
                    ],
                    position: { x: e.spacingLeft, y: p.height - e.spacingBottom + (e.showFormBtn || e.showRestoreBtn ? 10 : -15) }
                })), a.configureButton = c.add("configureIcon", function(a, b) { return function() { fa.visible ? fa.hide() : fa.show({ x: a, y: b + 1 }) } }(), { x: e.spacingLeft, y: p.height - e.spacingBottom + (e.showFormBtn || e.showRestoreBtn ? 10 : -15), tooltip: "Change Y-Axis Limits" })))
            },
            getCollatedData: function() {
                var b =
                        this.chartInstance,
                    d = b.__state,
                    a = b.jsVars,
                    b = this.updatedDataObj || H({}, b.getChartData(A.dataFormats.JSON)),
                    c = a._reflowData,
                    a = b.dataset,
                    e = (c = c && c.hcJSON && c.hcJSON.series) && c.length,
                    f,
                    p,
                    n,
                    g;
                if (void 0 !== d.hasStaleData && !d.hasStaleData && this.updatedDataObj)return this.updatedDataObj;
                if (a && c)for (; e--;)if (p = a[e] && a[e].data, (f = (n = c[e] && c[e].data) && n.length) && p)for (; f--;)if (g = n[f])p[f].value = g.y;
                d.hasStaleData = !1;
                return this.updatedDataObj = b
            },
            eiMethods: {
                restoreData: function() {
                    var b = this.jsVars, d = b.fcObj;
                    b._reflowData =
                    {};
                    delete b._reflowClean;
                    A.hcLib.createChart(d, b.container, b.type, void 0, void 0, !1, !0);
                    u.raiseEvent("dataRestored", {}, d, [d.id]);
                    return!0
                },
                submitData: function() {
                    var b = this.jsVars, d = b.fcObj, a = d.__state, c = a._submitAjaxObj || (a._submitAjaxObj = new A.ajax), a = A.dataFormats.JSON, e = A.dataFormats.CSV, f = A.dataFormats.XML, b = b.instanceAPI, p = b.hcJSON.chart, n = p.formAction, g = p.submitFormAsAjax, l, h, k, m, s;
                    p.formDataFormat === a ? (l = a, h = JSON.stringify(b.getCollatedData())) : p.formDataFormat === e ? (l = e, h = b.getCSVString && b.getCSVString(),
                        void 0 === h && (h = A.core.transcodeData(b.getCollatedData(), a, e))) : (l = f, h = A.core.transcodeData(b.getCollatedData(), a, f));
                    A.raiseEvent("beforeDataSubmit", { data: h }, d, void 0, function() {
                        g ? (c.onError = function(a, b, c, e) { u.raiseEvent("dataSubmitError", { xhrObject: b.xhr, url: e, statusText: a, httpStatus: b.xhr && b.xhr.status ? b.xhr.status : -1, data: h }, d, [d.id, a, b.xhr && b.xhr.status]) }, c.onSuccess = function(a, b, e, f) { u.raiseEvent("dataSubmitted", { xhrObject: c, response: a, url: f, data: h }, d, [d.id, a]) }, k = {}, k["str" + l.toUpperCase()] =
                            h, c.open && c.abort(), c.post(n, k)) : (m = Ta.document.createElement("span"), m.innerHTML = '<form style="display:none" action="' + n + '" method="' + p.formMethod + '" target="' + p.formTarget + '"> <input type="hidden" name="strXML" value="' + $c(h) + '"><input type="hidden" name="dataFormat" value="' + l.toUpperCase() + '" /></form>', s = m.removeChild(m.firstChild), Ta.document.body.appendChild(s), s.submit && s.submit(), s.parentNode.removeChild(s), m = s = null)
                    }, function() { A.raiseEvent("dataSubmitCancelled", { data: h }, d) })
                },
                getDataWithId: function() {
                    for (var b =
                                 this.jsVars.instanceAPI.getCollatedData(),
                        d = [[z]],
                        a = b.dataset,
                        b = b.categories && b.categories[0] && b.categories[0].category,
                        c = a && a.length || 0,
                        e = 0,
                        f,
                        p,
                        n,
                        g,
                        l,
                        h; c--;)
                        if (p = a[c])
                            for (d[0][c + 1] = p.id || p.seriesname, g = p.id || c + 1, h = (p = p.data) && p.length || 0, l = 0; l < h; l += 1) {
                                n = l + 1;
                                if (!d[n]) {
                                    for (f = b && b[l + e] || {}; f.vline;)e += 1, f = b[l + e] || {};
                                    f = f.label || f.name || z;
                                    d[n] = [f]
                                }
                                f = d[n];
                                n = p[l].id || n + "_" + g;
                                f[c + 1] = [n, Number(p[l].value)]
                            }
                    return d
                },
                getData: function(b) {
                    var d = this.jsVars.instanceAPI.getCollatedData(),
                        a = [[z]],
                        c = d.dataset,
                        e =
                            d.categories && d.categories[0] && d.categories[0].category,
                        f = c && c.length || 0,
                        p = 0,
                        n,
                        g,
                        l;
                    if (b)a = /^json$/ig.test(b) ? d : A.core.transcodeData(d, "json", b);
                    else
                        for (; f--;)
                            if (b = c[f])
                                for (a[0][f + 1] = c[f].seriesname, d = (b = c[f] && c[f].data) && b.length || 0, l = 0; l < d; l += 1) {
                                    g = l + 1;
                                    if (!a[g]) {
                                        for (n = e && e[l + p] || {}; n.vline;)p += 1, n = e[l + p] || {};
                                        n = n.label || n.name || z;
                                        a[g] = [n]
                                    }
                                    g = a[g];
                                    g[f + 1] = Number(b[l].value)
                                }
                    return a
                },
                setYAxisLimits: function(b, d) {
                    var a = this.jsVars.instanceAPI,
                        c = a.hcJSON,
                        e = a.dataObj,
                        f = e && e.chart || {},
                        c = c && c.yAxis && c.yAxis[0] ||
                            !1,
                        p = !1;
                    f.animation = !1;
                    if (!c)return!1;
                    void 0 !== b && b > a.highValue && b !== c.max ? (f.yaxismaxvalue = b, p = !0) : (b = a.highValue > c.max ? a.highValue : c.max, f.yaxismaxvalue = b);
                    void 0 !== d && d < a.lowValue && d !== c.min ? (f.yaxisminvalue = d, p = !0) : (d = a.lowValue < c.min ? a.lowValue : c.min, f.yaxisminvalue = d);
                    p && a.updateChartWithData(e);
                    return p
                },
                getUpperLimit: function() {
                    var b = this.jsVars.instanceAPI.hcJSON;
                    return(b = b.yAxis && b.yAxis[0]) ? b.max : void 0
                },
                setUpperLimit: function(b) { return this.jsVars.fcObj.setYAxisLimits(b, void 0) },
                getLowerLimit: function() {
                    var b =
                        this.jsVars.instanceAPI.hcJSON;
                    return(b = b.yAxis && b.yAxis[0]) ? b.min : void 0
                },
                setLowerLimit: function(b) { return this.jsVars.fcObj.setYAxisLimits(void 0, b) }
            },
            updateChartWithData: function(b) {
                var d = this.chartInstance, a = d.jsVars, c = b && b.chart;
                b = a._reflowData || (a._reflowData = {});
                c = { dataObj: { chart: { yaxisminvalue: g(c.yaxisminvalue), yaxismaxvalue: g(c.yaxismaxvalue), animation: c.animation } } };
                H(b, c, !0);
                A.hcLib.createChart(d, a.container, a.type)
            },
            preSeriesAddition: function() {
                var b = this,
                    d = b.hcJSON,
                    a = b.dataObj.chart,
                    c = d.chart;
                b.tooltipSepChar = d[Y].tooltipSepChar;
                c.allowAxisChange = g(a.allowaxischange, 1);
                c.changeDivWithAxis = 1;
                c.snapToDivOnly = g(a.snaptodivonly, 0);
                c.snapToDiv = c.snapToDivOnly ? 1 : g(a.snaptodiv, 1);
                c.snapToDivRelaxation = g(a.snaptodivrelaxation, 10);
                c.doNotSnap = g(a.donotsnap, 0);
                c.doNotSnap && (c.snapToDiv = c.snapToDivOnly = 0);
                c.showRangeError = g(a.showrangeerror, 0);
                g(a.allowaxischange, 1) && (d.callbacks || (d.callbacks = [])).push(function(a) {
                    var c = this, d = arguments, n;
                    wb(a.renderer.container, "destroy", function() {
                        n &&
                        (n = clearTimeout(n))
                    });
                    n = setTimeout(function() {
                        b.drawAxisUpdateUI.apply(c, d);
                        n = null
                    }, 1)
                })
            },
            getTooltextCreator: function() {
                var b = arguments;
                return function() {
                    var d = arguments, a = d.length, c, e, f;
                    for (f = 0; f < a; f += 1)void 0 !== (e = d[f]) && void 0 !== (c = b[f]) && (b[f] = "object" === typeof c ? H(c, e) : e);
                    return ab.apply(this, b)
                }
            },
            getPointStub: function(b, d, a, c, e, f, p) {
                var n = this.isDual, t = this.dataObj.chart;
                c = c[Y];
                var l = null === d ? d : c.numberFormatter.dataLabels(d, 1 === p ? !0 : !1),
                    r = B(F(h(b.tooltext, e.plottooltext, c.tooltext))),
                    k = c.tooltipSepChar,
                    m = e._sourceDataset;
                d = g(b.allowdrag, m.allowdrag, 1);
                var m = g(b.allownegativedrag, m.allownegativedrag, e.allownegativedrag, 1), s, C, fa, G, x = 0, w = 0, za, D;
                c.showTooltip ? void 0 !== r ? (D = this.getTooltextCreator(r, [1, 2, 3, 4, 5, 6, 7], { yaxisName: F(n ? p ? t.syaxisname : t.pyaxisname : t.yaxisname), xaxisName: F(t.xaxisname), formattedValue: l, label: a }, b, t, e), e = D(), e === r && (D = void 0, x = 1)) : null === l ? e = !1 : (c.seriesNameInToolTip && (G = da(e && e.seriesname)), e = G ? G + k : z, za = e += a ? a + k : z, c.showPercentInToolTip ? s = !0 : e += l) : e = !1;
                g(b.showvalue, f) ? void 0 !==
                    B(b.displayvalue) ? (fa = F(b.displayvalue), w = 1) : c.showPercentValues ? C = !0 : fa = l : fa = z;
                b = h(b.link);
                return{ displayValue: fa, categoryLabel: a, toolText: e, link: b, showPercentValues: C, showPercentInToolTip: s, allowDrag: d, allowNegDrag: m, _toolTextStr: za, _isUserValue: w, _isUserTooltip: x, _getTooltext: D }
            }
        };
        q("dragnode", {
            friendlyName: "Dragable Node Chart",
            standaloneInit: !0,
            decimals: 2,
            numdivlines: 0,
            numVDivLines: 0,
            defaultZeroPlaneHighlighted: !1,
            defaultZeroPlaneHidden: !0,
            spaceManager: La.spaceManager,
            drawButtons: La.drawButtons,
            updateChartWithData: La.updateChartWithData,
            creditLabel: !1,
            canvasPaddingModifiers: null,
            defaultSeriesType: "dragnode",
            rendererId: "dragnode",
            tooltipsepchar: " - ",
            showAxisLimitGridLines: 0,
            cleanedData: function(b, d) {
                var a = b && b.hcJSON, c = d && d.hcJSON, e, f, p, n, g, l, h, k, m;
                if (a && c) {
                    if (a.series && c.series && (g = c.series.length))for (k = 0; k < g; k += 1)if (f = c.series[k], e = a.series[k], f.data && (l = f.data.length))for (m = 0; m < l; m += 1)!0 === f.data[m] && e && e.data && e.data[m] && (delete e.data[m], e.data[m] = { y: null });
                    if (a.connectors && c.connectors &&
                    (p = c.connectors.length))for (k = 0; k < p; k += 1)if (f = c.connectors[k], e = a.connectors[k], f.connector && (h = f.connector.length))for (m = 0; m < h; m += 1)!0 === f.connector[m] && e && e.connector && e.connector[m] && (delete e.connector[m], e.connector[m] = {});
                    if (a.dragableLabels && c.dragableLabels && (n = c.dragableLabels.length))for (k = 0; k < n; k += 1)!0 === c.dragableLabels[k] && a.dragableLabels[k] && (delete a.dragableLabels[k], a.dragableLabels[k] = {})
                }
            },
            eiMethods: H(hb(q.scatterbase.eiMethods, La.eiMethods), {
                addNode: function(b) {
                    var d = this.jsVars,
                        a = d.instanceAPI,
                        c = d._reflowData || (d._reflowData = {}),
                        e = a.hcJSON,
                        f = a.numberFormatter,
                        a = h(b.datasetId),
                        p = f.getCleanValue(b.y),
                        f = f.getCleanValue(b.x),
                        n = !1,
                        g = e.series,
                        l = g.length,
                        r = e.xAxis.min,
                        k = e.xAxis.max,
                        m = e.yAxis[0].min,
                        s = e.yAxis[0].max,
                        e = { hcJSON: { series: [] } },
                        C = e.hcJSON.series,
                        fa;
                    if (void 0 !== a && null !== p && p >= m && p <= s && null !== f && f >= r && f <= k) {
                        for (r = 0; r < l && !n; r += 1)
                            a == g[r].id && (C[r] = { data: [] }, n = !0, fa = g[r], m = fa.data, k = m.length, m.push(m = fa._dataParser(b, k, f, p)), C[r].data[k] = m, H(c, e, !0), fa = {
                                index: k,
                                dataIndex: k,
                                link: b.link,
                                y: b.y,
                                x: b.x,
                                shape: b.shape,
                                width: b.width,
                                height: b.height,
                                radius: b.radius,
                                sides: b.sides,
                                label: b.name,
                                toolText: b.tooltext,
                                id: b.id,
                                datasetIndex: r,
                                datasetName: fa.name,
                                sourceType: "dataplot"
                            });
                        if (n)return db(d, fa, "nodeadded"), A.raiseEvent("nodeadded", fa, d.fcObj), !0
                    }
                    return!1
                },
                getNodeAttribute: function(b) {
                    var d = this.jsVars, a = d.instanceAPI, d = d._reflowData || (d._reflowData = {}), d = d.hcJSON && d.hcJSON.series || [], a = a.hcJSON.series, c = a.length, e, f, p, n;
                    if (void 0 !== b)
                        for (e = 0; e < c; e += 1)
                            for (f = a[e], n = f.data, p =
                                n.length, f = 0; f < p; f += 1)if (n[f].id === b)return d[e] && d[e].data && d[e].data[f] ? H(n[f]._options, d[e].data[f]._options, !0) : n[f]._options;
                    return!1
                },
                setNodeAttribute: function(b, d, a) {
                    var c = this.jsVars, e = c.instanceAPI, f = c._reflowData || (c._reflowData = {}), p = e.hcJSON, n = e.numberFormatter, g = p.series, l = g.length, h = p.xAxis.min, k = p.xAxis.max, m = p.yAxis[0].min, s = p.yAxis[0].max, p = { hcJSON: { series: [] } }, e = p.hcJSON.series, C = f.hcJSON && f.hcJSON.series || [], fa, G, x, w;
                    "object" === typeof d && void 0 === a ? w = d : (w = {}, w[d] = a);
                    if (void 0 !==
                        b)
                        for (d = 0; d < l; d += 1)
                            for (fa = g[d], G = fa.data, x = G.length, a = 0; a < x; a += 1)
                                if (b === G[a].id)
                                    return b = G[a], delete w.id, C[d] && C[d].data && C[d].data[a] && C[d].data[a]._options && (w = H(C[d].data[a]._options, w, !0)), w = H(b._options, w, !0), b = n.getCleanValue(w.y), n = n.getCleanValue(w.x), null !== b && b >= m && b <= s && null !== n && n >= h && n <= k ? (e[d] = { data: [] }, h = fa._dataParser(w, a, n, b), k = {
                                        index: a,
                                        dataIndex: a,
                                        link: w.link,
                                        y: w.y,
                                        x: w.x,
                                        shape: w.shape,
                                        width: w.width,
                                        height: w.height,
                                        radius: w.radius,
                                        sides: w.sides,
                                        label: w.name,
                                        toolText: w.tooltext,
                                        id: w.id,
                                        datasetIndex: d,
                                        datasetName: fa.name,
                                        sourceType: "dataplot"
                                    }, e[d].data[a] = h, H(f, p, !0), db(c, k, "nodeupdated"), A.raiseEvent("nodeupdated", k, c.fcObj), !0) : !1;
                    return!1
                },
                deleteNode: function(b) {
                    if (void 0 !== b) {
                        var d = this.jsVars, a = d.instanceAPI, c = d._reflowClean || (d._reflowClean = {}), e = a.hcJSON.series, f = { hcJSON: { series: [] } }, p, n, g, l, h;
                        if (e && (g = e.length))
                            for (l = 0; l < g; l += 1)
                                if ((a = e[l]) && (n = a.data) && (p = n.length))
                                    for (h = 0; h < p; h += 1)
                                        if (b === n[h].id)
                                            return f.hcJSON.series[l] = { data: [] }, f.hcJSON.series[l].data[h] = !0, H(c, f, !0),
                                                b = n[h], b = { index: h, dataIndex: h, link: b.link, y: b.y, x: b.x, shape: b._options.shape, width: b._options.width, height: b._options.height, radius: b._options.radius, sides: b._options.sides, label: b.displayValue, toolText: b.toolText, id: b.id, datasetIndex: l, datasetName: a.name, sourceType: "dataplot" }, db(d, b, "nodedeleted"), A.raiseEvent("nodedeleted", b, d.fcObj), !0
                    }
                    return!1
                },
                addConnector: function(b) {
                    if ("object" === typeof b) {
                        var d = this.jsVars,
                            a = d.instanceAPI,
                            c = d._reflowData || (d._reflowData = {}),
                            a = a.hcJSON,
                            e = a.connectors && a.connectors[0] ||
                            { connector: [] },
                            a = e.connector.length,
                            f = { hcJSON: { connectors: [{ connector: [] }] } };
                        b = e._connectorParser && e._connectorParser(b, a);
                        e = { arrowAtEnd: b.arrowAtEnd, arrowAtStart: b.arrowAtStart, fromNodeId: b.from, id: b.id, label: b.label, link: b.connectorLink, sourceType: "connector", toNodeId: b.to };
                        f.hcJSON.connectors[0].connector[a] = b;
                        H(c, f, !0);
                        db(d, e, "connectoradded");
                        A.raiseEvent("connectoradded", e, d.fcObj);
                        return!0
                    }
                    return!1
                },
                editConnector: function(b, d, a) {
                    var c = this.jsVars,
                        e = c.instanceAPI,
                        f = c._reflowData || (c._reflowData =
                        {}),
                        e = e.hcJSON,
                        p = e.connectors || (e.connectors = []),
                        n = p.length,
                        e = { hcJSON: { connectors: [] } },
                        g = e.hcJSON.connectors,
                        l,
                        h,
                        k,
                        m;
                    "object" === typeof d && void 0 === a ? m = d : (m = {}, m[d] = a);
                    if (void 0 !== b)
                        for (d = 0; d < n; d += 1)
                            if ((h = p[d]) && (l = h.connector))
                                for (k = l.length, a = 0; a < k; a += 1)
                                    if (b === l[a].id)
                                        return l = l[a], delete m.id, f.hcJSON && f.hcJSON.connectors && f.hcJSON.connectors[d] && f.hcJSON.connectors[d].connector && f.hcJSON.connectors[d].connector[a] && f.hcJSON.connectors[d].connector[a]._options && (m = H(f.hcJSON.connectors[d].connector[a]._options,
                                            m, !0)), m = H(l._options, m, !0), b = { arrowAtEnd: Boolean(m.arrowatend), arrowAtStart: Boolean(m.arrowatstart), fromNodeId: m.from, id: b, label: m.label, link: m.link, sourceType: "connector", toNodeId: m.to }, g[d] = { connector: [] }, l = h._connectorParser(m, a), g[d].connector[a] = l, H(f, e, !0), db(c, b, "connectorupdated"), A.raiseEvent("connectorupdated", b, c.fcObj), !0;
                    return!1
                },
                deleteConnector: function(b) {
                    if (void 0 !== b) {
                        var d = this.jsVars,
                            a = d.instanceAPI,
                            c = d._reflowClean || (d._reflowClean = {}),
                            e = a.hcJSON.connectors,
                            a = { hcJSON: { connectors: [] } },
                            f,
                            p,
                            n,
                            g,
                            l,
                            h = {};
                        if (e && (g = e.length))for (l = 0; l < g; l += 1)if ((f = e[l]) && (n = f.connector) && (p = n.length))for (f = 0; f < p; f += 1)if (b === n[f].id)return b = n[f], h = { arrowAtEnd: b.arrowAtEnd, arrowAtStart: b.arrowAtStart, fromNodeId: b.from, id: b.id, label: b.label, link: b.connectorLink, sourceType: "connector", toNodeId: b.to }, a.hcJSON.connectors[l] = { connector: [] }, a.hcJSON.connectors[l].connector[f] = !0, H(c, a, !0), db(d, h, "connectordeleted"), A.raiseEvent("connectordeleted", h, d.fcObj), !0
                    }
                    return!1
                },
                addLabel: function(b) {
                    if (b) {
                        var d = this.jsVars,
                            a = d.instanceAPI,
                            c = d._reflowData || (d._reflowData = {}),
                            e = { hcJSON: { dragableLabels: [] } };
                        e.hcJSON.dragableLabels[(a.hcJSON.dragableLabels || []).length] = b;
                        H(c, e, !0);
                        b = { text: b.text, x: b.x, y: b.y, allowdrag: b.allowdrag, sourceType: "labelnode", link: b.link };
                        db(d, b, "labeladded");
                        A.raiseEvent("labeladded", b, d.fcObj);
                        return!0
                    }
                    return!1
                },
                deleteLabel: function(b, d) {
                    var a = this.jsVars, c = a.instanceAPI, e = a._reflowClean || (a._reflowClean = {}), f = { hcJSON: { dragableLabels: [] } };
                    return b < (c.hcJSON.dragableLabels || []).length ? (f.hcJSON.dragableLabels[b] =
                        !0, H(e, f, !0), db(a, d, "labeldeleted"), A.raiseEvent("labeldeleted", d, a.fcObj), !0) : !1
                },
                setThreshold: function(b) {
                    var d = this.jsVars.hcObj.connectorsStore || [], a = d.length, c, e;
                    for (e = 0; e < a; e += 1)(c = d[e]) && c.options && (c.options.conStrength < b ? (c.graphic && c.graphic.hide(), c.text && (c.text.hide(), c.text.textBoundWrapper && c.text.textBoundWrapper.hide())) : (c.graphic && c.graphic.show(), c.text && (c.text.show(), c.text.textBoundWrapper && c.text.textBoundWrapper.show())))
                }
            }),
            getCollatedData: function() {
                var b = this.chartInstance,
                    d = b.__state,
                    a = b.jsVars,
                    b = this.updatedDataObj || H({}, b.getChartData(A.dataFormats.JSON)),
                    c = a._reflowData,
                    e = a._reflowClean,
                    a = (b.labels || (b.labels = { label: [] }), b.labels.label || (b.labels.label = [])),
                    f = c && c.hcJSON && c.hcJSON.dragableLabels,
                    p = e && e.hcJSON && e.hcJSON.dragableLabels,
                    n = b.connectors,
                    g = c && c.hcJSON && c.hcJSON.connectors,
                    l = e && e.hcJSON && e.hcJSON.connectors,
                    h = b.dataset,
                    k = c && c.hcJSON && c.hcJSON.series,
                    c = e && e.hcJSON && e.hcJSON.series,
                    e = k && k.length,
                    m,
                    s,
                    C,
                    fa;
                if (void 0 !== d.hasStaleData && !d.hasStaleData && this.updatedDataObj)return this.updatedDataObj;
                if (h && k)for (; e--;)if (s = h[e] && h[e].data, (m = (C = k[e] && k[e].data) && C.length) && s)for (; m--;)if (fa = C[m])s[m] ? H(s[m], fa._options) : s[m] = fa._options;
                if (e = g && g.length)for (b.connectors || (n = b.connectors = [{ connector: [] }]); e--;)if (k = n[e] && n[e].connector, (m = (s = g[e] && g[e].connector) && s.length) && k)for (; m--;)if (C = s[m])k[m] ? H(k[m], C._options) : k[m] = C._options;
                if ((e = f && f.length) && f)for (; e--;)f[e] && (a[e] = f[e]);
                pb(h, c);
                pb(n, l);
                pb(a, p);
                d.hasStaleData = !1;
                return this.updatedDataObj = b
            },
            createHtmlDialog: function(b, d, a, c, e, f) {
                var p =
                        b.paper,
                    n = this.hcJSON[Y].inCanvasStyle,
                    g = b.chartWidth,
                    l = b.chartHeight,
                    h = { color: n.color, textAlign: "center", paddingTop: "1px", border: "1px solid #cccccc", borderRadius: "4px", cursor: "pointer", _cursor: "hand", backgroundColor: "#ffffff", zIndex: 21, "-webkit-border-radius": "4px" },
                    k;
                k = p.html("div", { fill: "transparent", width: g, height: l }, { fontSize: "10px", lineHeight: "15px", fontFamily: n.fontFamily }, b.container);
                k.veil = p.html("div", { fill: "000000", width: g, height: l, opacity: .3 }, void 0, k);
                k.dialog = p.html("div", {
                    x: (g - d) /
                        2,
                    y: (l - a) / 2,
                    fill: "efefef",
                    strokeWidth: 1,
                    stroke: "000000",
                    width: d,
                    height: a
                }, { borderRadius: "5px", boxShadow: "1px 1px 3px #000000", "-webkit-border-radius": "5px", "-webkit-box-shadow": "1px 1px 3px #000000", filter: 'progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color="#000000")' }, k);
                k.ok = p.html("div", { x: d - 70 - 5, y: a - 23 - 5, width: 65, height: 17, text: "Submit", tabIndex: 1 }, h, k.dialog).on("click", c);
                k.cancel = p.html("div", { x: d - 140 - 5, y: a - 23 - 5, width: 65, height: 17, text: "Cancel", tabIndex: 2 }, h, k.dialog).on("click",
                    e);
                k.remove = p.html("div", { x: d - 210 - 5, y: a - 23 - 5, width: 65, height: 17, text: "Delete", tabIndex: 3, visibility: "hidden" }, h, k.dialog).on("click", f);
                k.handleKeyPress = function(a) { 13 === a.keyCode ? k.ok.trigger(ob ? "touchStart" : "click", a) : 27 === a.keyCode && k.cancel.trigger(ob ? "touchStart" : "click", a) };
                k.hide();
                return k
            },
            nodeUpdateUIDefinition: [
                { key: "id", text: "Id", inputWidth: 60, x: 10, y: 15 }, { key: "dataset", text: "Dataset", inputType: "select", inputWidth: 110, innerHTML: void 0, x: 170, y: 15 }, { key: "x", text: "Value", x: 10, y: 40, inputWidth: 21 },
                { key: "y", text: ",", x: 88, y: 40, inputWidth: 21, labelWidth: 5 }, { text: "(x, y)", x: 125, y: 40, labelWidth: 33, noInput: !0 }, { key: "tooltip", text: "Tooltip", inputWidth: 105, x: 170, y: 40 }, { key: "label", text: "Label", inputWidth: 92, x: 10, y: 65 }, { key: "labelalign", text: "Align", labelWidth: 70, inputWidth: 110, inputType: "select", innerHTML: '<option></option><option value="top">Top</option><option value="middle">Middle</option><option value="bottom">Bottom</option>', x: 145, y: 63 }, { key: "color", text: "Color", x: 10, y: 90, inputWidth: 60 }, {
                    key: "colorOut",
                    innerHTML: "&nbsp;",
                    x: 85,
                    y: 90,
                    inputWidth: 15,
                    inputType: "span"
                }, { key: "alpha", text: "Alpha", x: 170, y: 90, inputWidth: 20 }, { key: "draggable", text: "Allow Drag", value: !0, inputWidth: 20, x: 250, y: 90, labelWidth: 58, inputPaddingTop: 3, type: "checkbox" }, { key: "shape", text: "Shape", inputType: "select", inputWidth: 97, innerHTML: '<option value="rect">Rectangle</option><option value="circ">Circle</option><option value="poly">Polygon</option>', x: 10, y: 115 }, { key: "rectHeight", text: "Height", x: 170, y: 115, inputWidth: 20 }, {
                    key: "rectWidth",
                    text: "Width",
                    x: 255,
                    y: 115,
                    inputWidth: 20
                }, { key: "circPolyRadius", text: "Radius", x: 170, y: 115, inputWidth: 20 }, { key: "polySides", text: "Sides", x: 255, y: 115, inputWidth: 20 }, { key: "link", text: "Link", x: 10, y: 140, inputWidth: 92 }, { key: "image", text: "Image", type: "checkbox", inputPaddingTop: 4, inputWidth: 20, x: 10, y: 170 }, { key: "imgUrl", text: "URL", inputWidth: 105, x: 170, y: 170 }, { key: "imgWidth", text: "Width", inputWidth: 20, x: 10, y: 195 }, { key: "imgHeight", text: "Height", inputWidth: 20, x: 82, y: 195 }, {
                    key: "imgAlign",
                    text: "Align",
                    inputType: "select",
                    inputWidth: 75,
                    innerHTML: '<option value="top">Top</option><option value="middle">Middle</option><option value="bottom">Bottom</option>',
                    x: 170,
                    y: 195
                }
            ],
            showNodeUpdateUI: function() {
                var b = function(a) {
                        a = a.cacheUpdateUI;
                        for (var b = a.fields.shape, d = ["rectWidth", "rectHeight", "circPolyRadius", "polySides"], p = d.length, n; p--;)n = d[p], /rect|poly|circ/ig.test(n) && (a.labels[n].hide(), a.fields[n].hide()), (new RegExp(h(b.val(), "rect"), "ig")).test(n) && (a.labels[n].show(), a.fields[n].show())
                    },
                    d = function(a) {
                        a = a.cacheUpdateUI.fields;
                        var b = Hb(a.color.val());
                        b && a.colorOut.css({ background: xb(b) })
                    },
                    a = function(a, b) {
                        var d = a.cacheUpdateUI, p = a.chartHeight, n = d.fields.image.val(), g = b ? 300 : 0, h = ["imgWidth", "imgHeight", "imgAlign", "imgUrl"], r, k, m;
                        r = n ? 250 : 215;
                        d.ok.hide();
                        d.cancel.hide();
                        d.remove.hide();
                        d.error.hide();
                        for (k = h.length; !n && k--;)m = h[k], d.labels[m].hide(), d.fields[m].hide();
                        u.danimate.animate(d.dialog.element, { top: (p - r) / 2, height: r }, g, "linear", function() {
                            for (k = h.length; k-- && n;)m = h[k], d.labels[m].show(), d.fields[m].show();
                            d.ok.attr({
                                y: r -
                                    23 - 5
                            }).show();
                            d.cancel.attr({ y: r - 23 - 5 }).show();
                            d.remove.attr({ y: r - 23 - 5 });
                            d.error.attr({ y: r - 23 - 5 + 4 }).show();
                            d.edit ? d.remove.show() : d.remove.hide()
                        })
                    };
                return function(c, e, f) {
                    var p = this, n = c.cacheUpdateUI, g = c.paper, h = { width: "80px", border: "1px solid #cccccc", fontSize: "10px", lineHeight: "15px", padding: "2px", fontFamily: p.hcJSON[Y].inCanvasStyle.fontFamily }, r = 0, k = { textAlign: "right" }, m = n && n.fields, s = n && n.labels, C;
                    n || (n = c.cacheUpdateUI = p.createHtmlDialog(c, 350, 215, function() {
                            var a = n && n.fields,
                                b = n.edit,
                                c = p.chartInstance,
                                d = p.hcJSON,
                                e,
                                f,
                                g,
                                k,
                                h,
                                l,
                                m;
                            if (!d)return!1;
                            e = d.xAxis.min;
                            f = d.yAxis[0].min;
                            d = d.series;
                            g = d.length;
                            if (a) {
                                switch (a.shape.val()) {
                                case "circ":
                                    h = "circle";
                                    break;
                                case "poly":
                                    h = "polygon";
                                    break;
                                default:
                                    h = "rectangle"
                                }
                                m = {
                                    x: da(a.x.val(), e),
                                    y: da(a.y.val(), f),
                                    id: e = a.id.val(),
                                    datasetId: a.dataset.val(),
                                    name: a.label.val(),
                                    tooltext: a.tooltip.val(),
                                    color: a.color.val(),
                                    alpha: a.alpha.val(),
                                    labelalign: a.labelalign.val(),
                                    allowdrag: a.draggable.val(),
                                    shape: h,
                                    width: a.rectWidth.val(),
                                    height: a.rectHeight.val(),
                                    radius: a.circPolyRadius.val(),
                                    numsides: a.polySides.val(),
                                    imagenode: a.image.val(),
                                    imagewidth: a.imgWidth.val(),
                                    imageheight: a.imgHeight.val(),
                                    imagealign: a.imgAlign.val(),
                                    imageurl: a.imgUrl.val(),
                                    link: a.link.val()
                                };
                                if (void 0 !== e && !b)for (r = 0; r < g && !k; r += 1)for (h = d[r].data, l = h.length, f = 0; f < l; f += 1)e === h[f].id && (k = !0);
                                if (k)n.error.attr({ text: "ID already exist." }), a.label.focus();
                                else {
                                    b ? c && c.setNodeAttribute && c.setNodeAttribute(m.id, m) : c && c.addNode && c.addNode(m);
                                    return
                                }
                            }
                            n.enableFields()
                        }, function() {
                            n.hide();
                            n.enableFields();
                            n.error.attr({ text: z })
                        },
                        function() { p.chartInstance.deleteNode && p.chartInstance.deleteNode(n.fields.id.val()) }), C = n.dialog, s = n.labels = {}, m = n.fields = {});
                    n.config = e;
                    n.edit = f;
                    n.error || (n.error = g.html("span", { color: "ff0000", x: 30, y: 228 }, void 0, C));
                    n.enableFields || (n.enableFields = function() { for (var a in e)e[a] && e[a].disabled && m[a] && m[a].element.removeAttribute("disabled") });
                    jb(this.nodeUpdateUIDefinition, function(f) {
                        var p, r = f.key, w = {}, za = e[r] || {}, D, q;
                        !s[r] && (s[r] = g.html("label", { x: f.x, y: f.y, width: f.labelWidth || 45, text: f.text },
                            k, C));
                        if (!f.noInput) {
                            p = m[r];
                            if (!p) {
                                h.border = "checkbox" == f.type ? z : "1px solid #cccccc";
                                p = m[r] = g.html(f.inputType || "input", { x: f.labelWidth && f.labelWidth + 5 || 50, y: -2 + (f.inputPaddingTop || 0), width: f.inputWidth || 50, name: r || "" }, h);
                                if ("select" !== f.inputType)p.attr({ type: f.type || "text" }).on("keyup", n.handleKeyPress);
                                p.add(s[r])
                            }
                            S(D = da(za.innerHTML, f.innerHTML)) && (w.innerHTML = D);
                            za.disabled && (w.disabled = "disabled");
                            p.attr(w);
                            S(q = da(za.value, f.value)) && p.val(q);
                            "shape" == r && p.on("change", function() { b(c) });
                            "image" ==
                                r && p.on("click", function() { a(c, !0) });
                            "color" == r && p.on("keyup", function() { d(c) })
                        }
                    });
                    d(c);
                    a(c);
                    b(c);
                    c.options.chart.animation ? n.fadeIn("fast") : n.show();
                    n.fields[f ? "label" : "id"].focus()
                }
            }(),
            labelUpdateUIDefinition: [
                { key: "label", text: "Label*", x: 10, y: 15, inputWidth: 235 }, { key: "size", text: "Size", x: 10, y: 40 }, { key: "padding", text: "Padding", x: 10, y: 65 }, { key: "x", text: "Position", x: 120, y: 65, labelWidth: 70, inputWidth: 25 }, { key: "y", text: ",", x: 225, y: 65, labelWidth: 10, inputWidth: 25 }, { key: "xy", text: "(x, y)", x: 260, y: 65, noInput: !0 },
                { key: "allowdrag", text: "Allow Drag", x: 120, y: 40, inputType: "checkbox", inputPaddingTop: 3, inputWidth: 15, labelWidth: 70, val: 1 }, { key: "color", text: "Color", x: 10, y: 90 }, { key: "alpha", text: "Alpha", x: 145, y: 90, inputWidth: 30, val: "100" }, { key: "bordercolor", text: "Border Color", x: 10, y: 125, labelWidth: 100 }, { key: "bgcolor", text: "Background Color", x: 10, y: 150, labelWidth: 100 }
            ],
            showLabelUpdateUI: function(b, d) {
                var a = this,
                    c = b.paper,
                    e = b.cacheLabelUpdateUI,
                    f = {
                        border: "1px solid #cccccc",
                        fontSize: "10px",
                        lineHeight: "15px",
                        fontFamily: a.hcJSON[Y].inCanvasStyle.fontFamily,
                        padding: "2px"
                    },
                    p = { textAlign: "right" },
                    n = e && e.fields,
                    g = e && e.labels,
                    l,
                    r,
                    k;
                e || (e = b.cacheLabelUpdateUI = a.createHtmlDialog(b, 315, 205, function() {
                    var b = e && e.fields, c;
                    b && (c = { text: b.label.val(), x: b.x.val(), y: b.y.val(), color: b.color.val(), alpha: b.alpha.val(), bgcolor: b.bgcolor.val(), bordercolor: b.bordercolor.val(), fontsize: b.size.val(), allowdrag: b.allowdrag.val(), padding: b.padding.val() }, c.text ? a.chartInstance && a.chartInstance.addLabel && a.chartInstance.addLabel(c) : (e.error.attr({ text: "Label cannot be blank." }),
                        b.label.focus()))
                }, function() {
                    e.error.attr({ text: "" });
                    e.hide()
                }), k = e.dialog, g = e.labels = {}, n = e.fields = {});
                jb(a.labelUpdateUIDefinition, function(a) {
                    var b = a.key;
                    g[b] || (g[b] = c.html("label", { x: a.x, y: a.y, width: a.labelWidth || 45, text: a.text }, p, k));
                    a.noInput || ((l = n[b]) || (l = n[b] = c.html("input", { y: -2 + (a.inputPaddingTop || 0), x: a.labelWidth && a.labelWidth + 5 || 50, width: a.inputWidth || 50, type: a.inputType || "text", name: b || "" }, f, g[b]).on("keyup", e.handleKeyPress)), void 0 !== (r = h(d[b], a.val)) && l.val(r))
                });
                e.error || (e.error =
                    c.html("span", { color: "ff0000", x: 10, y: 180 }, void 0, k));
                b.animation ? e.fadeIn("fast") : e.show();
                e.fields.label.focus()
            },
            showLabelDeleteUI: function(b, d) {
                var a = this, c = b.paper, e = b["cache-label-delete-ui"], f = d.data && d.data("data") || {}, p = d.data && d.data("eventArgs"), f = f && f.labelNode;
                e || (e = b["cache-label-delete-ui"] = a.createHtmlDialog(b, 250, 100, void 0, function() { e.hide() }, function() { a.chartInstance.deleteLabel(f.index, p) }), e.message = c.html("span", { x: 10, y: 10, width: 230, height: 80 }).add(e.dialog), e.ok.hide(), e.remove.translate(175).show());
                e.message.attr({ text: 'Would you really like to delete the label: "' + f.text + '"?' });
                b.animation ? e.fadeIn("fast") : e.show()
            },
            connectorUpdateUIDefinition: [
                { key: "fromid", text: "Connect From", inputType: "select", x: 10, y: 15, labelWidth: 80, inputWidth: 100 }, { key: "toid", text: "Connect To", inputType: "select", x: 10, y: 40, labelWidth: 80, inputWidth: 100 }, { key: "arratstart", text: "Arrow At Start", x: 200, y: 15, type: "checkbox", inputPaddingTop: 3, labelWidth: 80, inputWidth: 15 }, {
                    key: "arratend",
                    text: "Arrow At End",
                    x: 200,
                    y: 40,
                    type: "checkbox",
                    inputPaddingTop: 3,
                    labelWidth: 80,
                    inputWidth: 15
                }, { key: "label", text: "Label", x: 10, y: 75, labelWidth: 40, inputWidth: 120 }, { key: "id", text: "Node ID", x: 190, y: 75, inputWidth: 55 }, { key: "color", text: "Color", x: 10, y: 100, labelWidth: 40, inputWidth: 35 }, { key: "alpha", text: "Alpha", x: 110, y: 100, inputWidth: 25, labelWidth: 35 }, { key: "strength", text: "Strength", x: 190, y: 100, inputWidth: 55, val: "0.1" }, { key: "url", text: "Link", x: 10, y: 125, labelWidth: 40, inputWidth: 120 }, { key: "tooltext", text: "Tooltip", x: 190, y: 125, labelWidth: 40, inputWidth: 60 },
                { key: "dashed", text: "Dashed", x: 10, y: 150, type: "checkbox", inputPaddingTop: 3, inputWidth: 15, labelWidth: 40 }, { key: "dashgap", text: "Dash Gap", x: 85, y: 150, labelWidth: 60, inputWidth: 25 }, { key: "dashlen", text: "Dash Length", x: 190, y: 150, labelWidth: 70, inputWidth: 30 }
            ],
            showConnectorUpdateUI: function(b, d, a) {
                var c = this.chartInstance,
                    e = b.paper,
                    f = b.cacheConnectorUpdateUI,
                    p = { border: "1px solid #cccccc", fontSize: "10px", lineHeight: "15px", fontFamily: this.hcJSON[Y].inCanvasStyle.fontFamily, padding: "2px" },
                    n = { textAlign: "right" },
                    g = f && f.fields,
                    l = f && f.labels,
                    r,
                    k,
                    m,
                    s;
                f || (f = b.cacheConnectorUpdateUI = this.createHtmlDialog(b, 315, 215, function() {
                    var b = f && f.fields, d;
                    b && (d = { from: b.fromid.val(), to: b.toid.val(), id: b.id.val(), label: b.label.val(), color: b.color.val(), alpha: b.alpha.val(), link: b.url.val(), tooltext: b.tooltext.val(), strength: b.strength.val(), arrowatstart: b.arratstart.val(), arrowatend: b.arratend.val(), dashed: b.dashed.val(), dashlen: b.dashlen.val(), dashgap: b.dashgap.val() }, d.from ? d.to ? d.from != d.to ? (a ? c.editConnector(d.id, d) : c.addConnector(d),
                        f.enableFields()) : (f.error.attr({ text: "Connector cannot start and end at the same node!" }), b.fromid.focus()) : (f.error.attr({ text: "Please select a valid connector end." }), b.toid.focus()) : (f.error.attr({ text: "Please select a valid connector start." }), b.fromid.focus()))
                }, function() {
                    f.error.attr({ text: "" });
                    f.enableFields();
                    f.hide()
                }, function() { c.deleteConnector(f.fields.id.val()) }), s = f.dialog, l = f.labels = {}, g = f.fields = {});
                f.config = d;
                f.enableFields = function() { for (var a in d)d[a] && d[a].disabled && g[a] && g[a].element.removeAttribute("disabled") };
                jb(this.connectorUpdateUIDefinition, function(a) {
                    var b = a.key, c = d[b] || {};
                    l[b] || (l[b] = e.html("label", { x: a.x, y: a.y, width: a.labelWidth || 45, text: a.text }, n, s));
                    if (!a.noInput) {
                        if (!(k = g[b])) {
                            k = g[b] = e.html(a.inputType || "input", { y: -2 + (a.inputPaddingTop || 0), x: a.labelWidth && a.labelWidth + 5 || 50, width: a.inputWidth || 50, name: b || "" }, p);
                            if ("select" !== a.inputType)k.attr({ type: a.type || "text" }).on("keyup", f.handleKeyPress);
                            k.add(l[b])
                        }
                        (r = h(c.innerHTML, a.innerHTML)) && k.attr({ innerHTML: r });
                        void 0 !== (m = h(c.val, a.val)) && k.val(m);
                        c.disabled && k.attr({ disabled: "disabled" })
                    }
                });
                f.checkDash = function() {
                    var a = g.dashed && g.dashed.val() ? "show" : "hide";
                    l.dashgap && l.dashgap[a]();
                    g.dashgap && g.dashgap[a]();
                    l.dashlen && l.dashlen[a]();
                    g.dashlen && g.dashlen[a]()
                };
                f.checkDash();
                g.dashed.on("click", f.checkDash);
                f.error || (f.error = e.html("span", { color: "ff0000", x: 10, y: 170 }, void 0, s));
                f.remove[a ? "show" : "hide"]();
                b.animation ? f.fadeIn("fast") : f.show()
            },
            drawNodeUpdateButtons: function() {
                var b = this,
                    d = b.logic,
                    a = b.options,
                    c = a.chart,
                    e = a.pointStore || {},
                    f = a.series,
                    a = (a = a[Y]) && a.outCanvasStyle || b.outCanvasStyle || {},
                    p = b.menu || (b.menu = []),
                    g = b.toolbar,
                    h = f.length,
                    l = "",
                    r = "",
                    k,
                    m;
                for (m in e)l += '<option value="' + m + '">' + m + "</option>";
                for (m = 0; m < h; m += 1)e = f[m], r += '<option value="' + e.id + '">' + (e.name !== z && void 0 !== e.name && e.name + ya + " " || z) + e.id + "</option>";
                p.push(k = Fb({
                    chart: b,
                    basicStyle: a,
                    items: [
                        { text: "Add a Node", onclick: function() { d.showNodeUpdateUI(b, { dataset: { innerHTML: r } }) } }, { text: "Add a Label", onclick: function() { d.showLabelUpdateUI(b, {}) } }, {
                            text: "Add a Connector",
                            onclick: function() { d.showConnectorUpdateUI(b, { fromid: { innerHTML: l }, toid: { innerHTML: l } }) }
                        }
                    ],
                    position: { x: c.spacingLeft, y: b.chartHeight - c.spacingBottom + (c.showFormBtn || c.showRestoreBtn ? 10 : -15) }
                }));
                b.elements.configureButton = g.add("configureIcon", function(a, b) { return function() { k.visible ? k.hide() : k.show({ x: a, y: b + 1 }) } }(), { x: c.spacingLeft, y: b.chartHeight - c.spacingBottom + (c.showFormBtn || c.showRestoreBtn ? 10 : -15), tooltip: "Add or edit items" })
            },
            postSeriesAddition: function() {
                var b = this.hcJSON,
                    d = this.dataObj.chart,
                    a = this.base.postSeriesAddition && this.base.postSeriesAddition.apply(this, arguments);
                b.legend.enabled = "1" == d.showlegend ? !0 : !1;
                (b.chart.viewMode = g(d.viewmode, 0)) || (b.callbacks || (b.callbacks = [])).push(this.drawNodeUpdateButtons);
                return a
            },
            pointHoverOptions: function(b, d, a, c) {
                var e = g(b.showhovereffect, d.showhovereffect, a.plothovereffect, a.showhovereffect),
                    f = {},
                    p = !!h(b.hovercolor, d.hovercolor, a.plotfillhovercolor, b.hoveralpha, d.hoveralpha, a.plotfillhoveralpha, b.borderhovercolor, d.borderhovercolor, a.plotborderhovercolor,
                        b.borderhoveralpha, d.borderhoveralpha, a.plotborderhoveralpha, b.borderhoverthickness, d.borderhoverthickness, a.plotborderhoverthickness, b.hoverheight, d.hoverheight, a.plothoverheight, b.hoverwidth, d.hoverwidth, a.plothoverwidth, b.hoverradius, d.hoverradius, a.plothoverradius, e),
                    n = !1;
                if (void 0 === e && p || e)
                    n = !0, e = h(b.hovercolor, d.hovercolor, a.plotfillhovercolor, ga(c.color, 70)), p = h(b.hoveralpha, d.hoveralpha, a.plotfillhoveralpha, c.alpha), f = {
                        stroke: y(h(b.borderhovercolor, d.borderhovercolor, a.plotborderhovercolor,
                            c.borderColor), g(b.borderhoveralpha, d.borderhoveralpha, a.plotborderhoveralpha, p, c.borderAlpha)),
                        "stroke-width": g(b.borderhoverthickness, d.borderhoverthickness, a.plotborderhoverthickness, c.borderThickness),
                        height: g(b.hoverheight, d.hoverheight, a.plothoverheight, c.height),
                        width: g(b.hoverwidth, d.hoverwidth, a.plothoverwidth, c.width),
                        r: g(b.hoverradius, d.hoverradius, a.plothoverradius, c.radius)
                    }, b = c.use3D ? this.getPointColor(I(h(b.hovercolor, d.hovercolor, a.plotfillhovercolor, ga(c.color, 70))), h(b.hoveralpha,
                        d.hoveralpha, a.plotfillhoveralpha, c.alpha), c.shapeType) : y(e, p), f.fill = ea(b);
                return{ enabled: n, rolloverProperties: f }
            },
            point: function(b, d, a, c, e, f, p) {
                var n = this;
                b = g(c.ignoreemptydatasets, 0);
                var t = n.numberFormatter, l = (f = a.data) && f.length, r = g(a.showvalues, e[Y].showValues), k = g(c.useroundedges), m = !1, s = n.colorManager, C, fa, G, x, w, za, D, q, u, E, $, R, K, v;
                d.zIndex = 1;
                d.name = B(a.seriesname);
                za = d.id = h(a.id, p);
                if (b && !a.data)return d.showInLegend = !1, d;
                if (0 === g(a.includeinlegend) || void 0 === d.name)d.showInLegend = !1;
                fa = h(c.plotfillalpha,
                    "100");
                G = g(c.showplotborder, 1);
                p = I(h(c.plotbordercolor, "666666"));
                C = g(c.plotborderthickness, k ? 2 : 1);
                x = h(c.plotborderalpha, c.plotfillalpha, k ? "35" : "95");
                w = Boolean(g(c.use3dlighting, c.is3d, k ? 1 : 0));
                D = I(h(a.color, s.getPlotColor()));
                q = h(a.plotfillalpha, a.nodeFillAlpha, a.alpha, fa);
                k = Boolean(g(a.showplotborder, G));
                u = I(h(a.plotbordercolor, a.nodebordercolor, p));
                E = g(a.plotborderthickness, a.nodeborderthickness, C);
                $ = k ? h(a.plotborderalpha, a.nodeborderalpha, a.alpha, x) : "0";
                R = Boolean(g(a.allowdrag, 1));
                d.marker = {
                    enabled: !0,
                    fillColor: y(D, q),
                    lineColor: { FCcolor: { color: u, alpha: $ } },
                    lineWidth: E,
                    symbol: "poly_4"
                };
                x = d._dataParser = function(b, d, f, p) {
                    d = h(b.id, za + "_" + d);
                    var k = Boolean(g(b.allowdrag, R)), l = B(b.shape, "rectangle").toLowerCase(), m = B(b.height, 10), s = B(b.width, 10), C = B(b.radius, 10), x = B(b.numsides, 4), G = I(h(b.color, D)), fa = h(b.alpha, q), V = B(b.imageurl), F = Boolean(g(b.imagenode));
                    switch (l) {
                    case "circle":
                        v = 0;
                        break;
                    case "polygon":
                        v = 2;
                        l = oa(x);
                        break;
                    default:
                        v = 1
                    }
                    K = w ? n.getPointColor(G, fa, v) : y(G, fa);
                    x = n.pointHoverOptions(b, a, c, {
                        plotType: "funnel",
                        shapeType: v,
                        use3D: w,
                        height: m,
                        width: s,
                        radius: C,
                        color: G,
                        alpha: fa,
                        borderColor: u,
                        borderAlpha: $,
                        borderThickness: E
                    });
                    return H(n.getPointStub(b, p, t.xAxis(f), e, a, r), { hoverEffects: x, _options: b, y: p, x: f, id: d, imageNode: F, imageURL: V, imageAlign: B(b.imagealign, z).toLowerCase(), imageWidth: B(b.imagewidth), imageHeight: B(b.imageheight), labelAlign: h(b.labelalign, F && S(V) ? Ia : "middle"), allowDrag: k, marker: { enabled: !0, fillColor: K, lineColor: { FCcolor: { color: u, alpha: $ } }, lineWidth: E, radius: C, height: m, width: s, symbol: l }, tooltipConstraint: n.tooltipConstraint })
                };
                for (p = 0; p < l; p += 1)if (C = f[p])k = t.getCleanValue(C.y), s = t.getCleanValue(C.x), null === k ? d.data.push({ _options: C, y: null }) : (m = !0, d.data.push(x(C, p, s, k)), this.pointValueWatcher(e, k, s));
                b && !m && (d.showInLegend = !1);
                return d
            },
            getPointColor: function(b, d, a) {
                var c;
                b = I(b);
                d = bb(d);
                c = ga(b, 80);
                b = lc(b, 65);
                d = { FCcolor: { gradientUnits: "objectBoundingBox", color: c + "," + b, alpha: d + "," + d, ratio: Eb } };
                a ? d.FCcolor.angle = 1 === a ? 0 : 180 : (d.FCcolor.cx = .4, d.FCcolor.cy = .4, d.FCcolor.r = "50%", d.FCcolor.radialGradient = !0);
                return d
            },
            getPointStub: function(b,
                d, a, c, e) {
                var f = this.dataObj.chart, p = c[Y], g = null === d ? d : p.numberFormatter.dataLabels(d), t = B(F(h(b.tooltext, e.plottooltext, p.tooltext))), l = this.tooltipSepChar = p.tooltipSepChar, r = h(b.label, b.name);
                d = F(r);
                var k;
                c = z;
                var m = !1;
                p.showTooltip ? void 0 !== t ? (m = !0, e = ab(t, [3, 4, 5, 6, 8, 9, 10, 11], { yaxisName: F(f.yaxisname), xaxisName: F(f.xaxisname), yDataValue: g, xDataValue: a, label: d }, b, f, e)) : void 0 !== r ? (e = d, m = !0) : null === g ? e = !1 : (p.seriesNameInToolTip && (k = da(e && e.seriesname)), e = c = k ? k + l : z, e += a ? a + l : z, e += g) : e = !1;
                b = h(b.link);
                return{ displayValue: d, toolText: e, link: b, _toolTextStr: c, _isUserTooltip: m }
            },
            connector: function(b, d, a, c, e) {
                var f = e[Y], p = f.smartLabel;
                e = (b = a.connector) && b.length;
                var n, t, l, r, k, m, s, C, fa, G, x, w = B(F(h(a.connectortooltext, c.connectortooltext))), za = "$fromLabel" + f.tooltipSepChar + "$toLabel";
                n = g(a.stdthickness, 1);
                t = I(h(a.color, "FF5904"));
                l = h(a.alpha, "100");
                r = g(a.dashgap, 5);
                k = g(a.dashlen, 5);
                m = Boolean(g(a.dashed, 0));
                s = Boolean(g(a.arrowatstart, 1));
                C = Boolean(g(a.arrowatend, 1));
                fa = g(a.strength, 1);
                c = d.connector;
                G = d._connectorParser =
                    function(a, b) {
                        var c = F(h(a.label, a.name)), d = h(a.alpha, l), d = { FCcolor: { color: I(h(a.color, t)), alpha: d } }, e = p.getOriSize(c), G = B(F(h(a.tooltext, w)));
                        x = f.showTooltip ? h(G, c ? "$label" : za) : !1;
                        return{
                            _options: a,
                            id: h(a.id, b).toString(),
                            from: h(a.from, z),
                            to: h(a.to, z),
                            label: c,
                            toolText: x,
                            customToolText: G,
                            color: d,
                            dashStyle: Boolean(g(a.dashed, m)) ? xa(g(a.dashlen, k), g(a.dashgap, r), n) : void 0,
                            arrowAtStart: Boolean(g(a.arrowatstart, s)),
                            arrowAtEnd: Boolean(g(a.arrowatend, C)),
                            conStrength: g(a.strength, fa),
                            connectorLink: B(a.link),
                            stdThickness: n,
                            labelWidth: e.widht,
                            labelHeight: e.height
                        }
                    };
                for (a = 0; a < e; a += 1)c.push(G(b[a], a));
                return d
            },
            series: function(b, d, a) {
                var c = d[Y], e = [], f, p, n, t;
                d.legend.enabled = Boolean(g(b.chart.showlegend, 1));
                if (b.dataset && 0 < (p = b.dataset.length)) {
                    this.categoryAdder(b, d);
                    c.x.requiredAutoNumericLabels = !1;
                    if (b.connectors && (f = b.connectors.length))for (t = 0, n = f; t < n; t += 1)f = { connector: [] }, e.push(this.connector(a, f, b.connectors[t], b.chart, d, c.oriCatTmp.length, t));
                    else
                        f = { connector: [] }, e.push(this.connector(a, f, {}, b.chart,
                            d, c.oriCatTmp.length, t));
                    for (t = 0; t < p; t += 1)f = { hoverEffects: this.parseSeriesHoverOptions(b, d, b.dataset[t], a), data: [] }, f = this.point(a, f, b.dataset[t], b.chart, d, c.oriCatTmp.length, t), f instanceof Array ? d.series = d.series.concat(f) : d.series.push(f);
                    d.connectors = e;
                    b.labels && b.labels.label && 0 < b.labels.label.length && (d.dragableLabels = b.labels.label);
                    b.chart.showyaxisvalue = h(b.chart.showyaxisvalue, 0);
                    this.configureAxis(d, b);
                    b.trendlines && ac(b.trendlines, d.yAxis, c, !1, this.isBar)
                }
            }
        }, q.scatterbase);
        sa = function(b,
            d, a, c, e, f) {
            var p = f.logic, n, t, l = d[b.from], r = d[b.to], k = { sourceType: "connector" }, m = b && b._options, s = p.numberFormatter, C, fa, G, x, w;
            this.renderer = c;
            this.connectorsGroup = e;
            this.pointStore = d;
            this.options = b;
            this.style = a || {};
            l && r && (this.fromPointObj = l, this.toPointObj = r, this.fromX = C = l._xPos, this.fromY = fa = l._yPos, this.toX = G = r._xPos, this.toY = x = r._yPos, this.arrowAtStart = k.arrowAtStart = b.arrowAtStart, this.arrowAtEnd = k.arrowAtEnd = b.arrowAtEnd, this.strokeWidth = d = b.conStrength * b.stdThickness, this.textBgColor = t = (this.color =
                    n = b.color) && n.FCcolor && n.FCcolor.color, this.label = k.label = w = b.label, s = ab(b.toolText, [3, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92], { label: b.label, fromXValue: s.dataLabels(l.x), fromYValue: s.dataLabels(l.y), fromXDataValue: l.x, fromYDataValue: l.y, fromLabel: h(l.displayValue, l.id), toXValue: s.dataLabels(r.x), toYValue: s.dataLabels(r.y), toXDataValue: r.x, toYDataValue: r.y, toLabel: h(r.displayValue, r.id) }), this.link = k.link = m && m.link, k.id = b.id, k.fromNodeId = l.id, k.toNodeId = r.id, l._config && l._config.startConnectors && l._config.startConnectors.push(this),
                r._config && r._config.endConnectors && r._config.endConnectors.push(this), l = function() {
                    var a = this, c = b._options || {};
                    a._longpressactive = clearTimeout(a._longpressactive);
                    a.data("fire_click_event", 1);
                    a._longpressactive = setTimeout(function() {
                        a.data("fire_click_event", 0);
                        a.data("viewMode") || p.showConnectorUpdateUI(f, {
                            fromid: { val: c.from, innerHTML: "<option>" + c.from + "</option>", disabled: !0 },
                            toid: { val: c.to, innerHTML: "<option>" + c.to + "</option>", disabled: !0 },
                            arratstart: { val: Boolean(g(c.arrowatstart, 1)) },
                            arratend: {
                                val: Boolean(g(c.arrowatend,
                                    1))
                            },
                            dashed: { val: g(c.dashed) },
                            dashgap: { val: c.dashgap },
                            dashlen: { val: c.dashlen },
                            label: { val: c.label },
                            tooltext: { val: c.tooltext },
                            id: { val: b.id, disabled: !0 },
                            strength: { val: c.strength },
                            alpha: { val: c.alpha },
                            color: { val: c.color }
                        }, !0)
                    }, 1E3)
                }, this.graphic = c.path(this.getlinePath(), e).attr({ "stroke-width": d, ishot: !0, "stroke-dasharray": b.dashStyle, cursor: this.link ? "pointer" : "", stroke: ea(n) }).mousedown(l).mousemove(function() {
                    this.data("fire_click_event", 0);
                    $a.call(this)
                }).mouseup(function(a) {
                    $a.call(this);
                    ua.call(this,
                        f, a, "ConnectorClick")
                }).hover(function(a) { ua.call(this, f, a, "ConnectorRollover") }, function(a) { ua.call(this, f, a, "ConnectorRollout") }).tooltip(s).data("eventArgs", k).data("viewMode", f.options.chart.viewMode), w && (this.text = c.text(), e.appendChild(this.text), this.text.css(a.style).attr({ text: w, x: (C + G) / 2, y: (fa + x) / 2, fill: a.color, ishot: !0, cursor: this.link ? "pointer" : "", "text-bound": [h(a.backgroundColor, t), h(a.borderColor, t), 1, "2"] }).tooltip(s).mousedown(l).mousemove(function() {
                    this.data("fire_click_event",
                        0);
                    $a.call(this)
                }).hover(function(a) { ua.call(this, f, a, "ConnectorRollover") }, function(a) { ua.call(this, f, a, "ConnectorRollout") }).mouseup(function(a) {
                    $a.call(this);
                    ua.call(this, f, a, "ConnectorClick")
                }).tooltip(s).data("eventArgs", k).data("viewMode", f.options.chart.viewMode)))
        };
        sa.prototype = {
            updateFromPos: function(b, d) {
                this.fromX = b;
                this.fromY = d;
                this.graphic && this.graphic.animate({ path: this.getlinePath() });
                this.text && this.text.animate({ x: (this.fromX + this.toX) / 2, y: (this.fromY + this.toY) / 2 })
            },
            updateToPos: function(b,
                d) {
                this.toX = b;
                this.toY = d;
                this.graphic && this.graphic.animate({ path: this.getlinePath() });
                this.text && this.text.animate({ x: (this.fromX + this.toX) / 2, y: (this.fromY + this.toY) / 2 })
            },
            getlinePath: function() {
                var b = this.fromPointObj, d = this.toPointObj, a = this.fromX, c = this.fromY, e = this.toX, f = this.toY, p = ["M", a, c];
                this.arrowAtStart && (b = b._config, p = b.shapeType === gc ? p.concat(vb(a, c, e, f, b.shapeArg.width, b.shapeArg.height)) : p.concat(vb(a, c, e, f, b.shapeArg.radius)));
                this.arrowAtEnd && (b = d._config, p = b.shapeType === gc ? p.concat(vb(e,
                    f, a, c, b.shapeArg.width, b.shapeArg.height)) : p.concat(vb(e, f, a, c, b.shapeArg.radius)));
                p.push("L", e, f);
                return p
            }
        };
        sa.prototype.constructor = sa;
        eb = {
            mouseDown: function(b) { delete b.data.point.dragActive },
            click: function(b) { return!b.data.point.dragActive },
            dragHandler: function(b) {
                var d = b.data, a = b.type, c = d.point, e = d.series, f = e.chart || e, p = f.tooltip, g = ob && Ka(b) || Pb, f = f.options.instanceAPI;
                switch (a) {
                case "dragstart":
                    p.block(!0);
                    d.dragStartY = b.pageY || g.pageY || 0;
                    d.dragStartX = b.pageX || g.pageX || 0;
                    d.startValue = c.y;
                    d.startXValue = c.x;
                    c.dragActive = !0;
                    e.dragStartHandler && e.dragStartHandler(d);
                    break;
                case "dragend":
                    p.block(!1);
                    e.repositionItems(d, d.changeX ? (b.pageX || g.pageX || 0) - d.dragStartX : 0, d.changeY ? (b.pageY || g.pageY || 0) - d.dragStartY : 0, !0);
                    a = { dataIndex: c.index + 1, datasetIndex: e.index + 1, startValue: d.startValue, endValue: c.y, datasetName: e.name };
                    b = [f.chartInstance.id, a.dataIndex, a.datasetIndex, a.datasetName, a.startValue, a.endValue];
                    d.changeX && (a.startYValue = d.startValue, a.endYValue = c.y, a.startXValue = d.startXValue,
                        a.endXValue = c.x, b.push(d.startXValue, c.x), delete a.startValue, delete a.endValue);
                    u.raiseEvent("chartupdated", a, f.chartInstance, b);
                    delete d.dragStartY;
                    delete d.dragStartX;
                    delete d.startValue;
                    delete d.startXValue;
                    break;
                default:
                    e.repositionItems(d, d.changeX ? (b.pageX || g.pageX || 0) - d.dragStartX : 0, d.changeY ? (b.pageY || g.pageY || 0) - d.dragStartY : 0)
                }
            },
            dragLabelHandler: function(b) {
                var d = b.data, a = b.type, c = d.element, e = d.tracker, f = d.toolTip, p = ob && Ka(b) || Pb, g = d.series, h, l, r;
                "dragstart" === a ? (f.block(!0), d.dragStartY =
                    b.pageY || p.pageY || 0, d.dragStartX = b.pageX || p.pageX || 0) : (h = d.x + (b.pageX || p.pageX || 0) - d.dragStartX, r = h - d.leftDistance, r + d.width > d.plotWidth && (r = d.plotWidth - d.width), 0 > r && (r = 0), h = r + d.leftDistance, l = d.y + (b.pageY || p.pageY || 0) - d.dragStartY, b = l - d.topDistance, b + d.height > d.plotHeight && (b = d.plotHeight - d.height), 0 > b && (b = 0), l = b + d.topDistance, "dragend" === a ? (f.block(!1), d.x = h, d.y = l, delete d.dragStartY, delete d.dragStartX) : (c.attr({ x: h, y: l }).textBound(), e.attr({ x: r, y: b })));
                "dragend" == a && (a = { hcJSON: { dragableLabels: [] } },
                    a.hcJSON.dragableLabels[d.index] = { y: g.yAxis.translate(g.chart.plotHeight - l + d.yAdjustment, 1), x: g.xAxis.translate(h, 1) }, H(g.chart.options.instanceAPI.chartInstance.jsVars._reflowData, a, !0))
            },
            pointUpdate: function(b, d, a) {
                b._isUserTooltip || b.toolText === z || b._getTooltext ? b._getTooltext && (b.toolText = b._getTooltext(void 0, void 0, { formattedValue: d }, { value: a })) : b.toolText = b._toolTextStr + d;
                b._isUserValue || b.displayValue === z || (b.displayValue = d)
            },
            snapPoint: function(b, d, a) {
                var c = b.options.chart,
                    e = c.snapToDiv,
                    f =
                        c.snapToDivOnly;
                b = b._yAxisPlotLines;
                for (var p = P(b[1] - b[0]), c = f ? .5 * p : c.snapToDivRelaxation, p = d.lastSnap, g = 1, h = b.length, l; h--;)
                    if (l = P(b[h] - a), e && l < c) {
                        p !== h && (d.lastSnap = f ? void 0 : h, a = b[h]);
                        g = 0;
                        break
                    }
                g && (d.lastSnap = void 0);
                return a
            },
            setMinMaxValue: function(b) {
                var d = b.options.series;
                b = b.logic;
                var a = 0, c = Infinity, e = -Infinity, f = b.chartInstance.jsVars._reflowData, p, g, h, l, r;
                r = 0;
                for (p = d.length; r < p; r += 1)for (h = d[r] && d[r].data, a = 0, l = h.length; a < l; a += 1)g = h[a].y, null !== g && (e = e > g ? e : g, c = c < g ? c : g);
                b.highValue = e;
                b.lowValue =
                    c;
                f.postHCJSONCreation = function() {
                    var a = this.hcJSON[Y][0];
                    a.min = c;
                    a.max = e
                }
            },
            setSelectBoxValues: function(b, d) {
                var a = d.xAxis[0], c = d.yAxis[0], e = d.plotHeight;
                b.startX = a.translate(b.left, 1);
                b.endX = a.translate(b.left + b.width, 1);
                b.startY = c.translate(e - b.top, 1);
                b.endY = c.translate(e - (b.top + b.height), 1)
            }
        };
        q("dragarea", hb({ friendlyName: "Dragable Area Chart", standaloneInit: !0, creditLabel: !1, rendererId: "dragarea", defaultSeriesType: "area", decimals: 2, anchorAlpha: "100", eiMethods: q.msareabase.eiMethods }, La), q.msareabase);
        q("dragline", hb({ friendlyName: "Dragable Line Chart", standaloneInit: !0, creditLabel: !1, decimals: 2, defaultSeriesType: "line", rendererId: "dragline", eiMethods: q.mslinebase.eiMethods }, La), q.mslinebase);
        q("dragcolumn2d", hb({ friendlyName: "Dragable Column Chart", standaloneInit: !0, creditLabel: !1, decimals: 2, defaultSeriesType: "column", rendererId: "dragcolumn2d", eiMethods: q.mscolumn2dbase.eiMethods }, La), q.mscolumn2dbase);
        q("selectscatter", {
            friendlyName: "Dragable Scatter Chart",
            isXY: !0,
            standaloneInit: !0,
            creditLabel: !1,
            defaultSeriesType: "scatter",
            defaultZeroPlaneHighlighted: !1,
            spaceManager: La.spaceManager,
            drawButtons: La.drawButtons,
            updateChartWithData: La.updateChartWithData,
            eiMethods: hb(hb(hb({}, q.scatterbase.eiMethods), La.eiMethods), {
                getData: function(b) {
                    var d = this.jsVars.instanceAPI, a = d.getCollatedData(), c = [], e = a.dataset, f = e && e.length || 0, p = 0, g = 0;
                    if (b)c = /^json$/ig.test(b) ? a : /^csv$/ig.test(b) ? d.getCSVString() : A.core.transcodeData(a, "json", b);
                    else
                        for (; p < f; p += 1)
                            if (d = e[p]) {
                                for ((a = b = (d = e[p] && e[p].data) && d.length || 0) &&
                                (c[g] || (c[g] = [B(e[p].id, "null")])); a--;)c[g][a + 1] = B(d[a].id, "null");
                                b && (g += 1)
                            }
                    return c
                }
            }),
            getCSVString: function() {
                for (var b = this.chartInstance.getData(), d = b.length; d--;)b[d] = b[d].join(",");
                return b.join("|")
            },
            getCollatedData: function() {
                for (var b = this.chartInstance, d = b.jsVars.hcObj._selectEleArr, a = d && d.length, b = H({}, b.getChartData(A.dataFormats.JSON)), c = b.dataset, e, f, p, g, h, l, r, k, m, s = []; a--;)
                    if (e = d[a])
                        for (l = e.startX, r = e.endX, k = e.startY, m = e.endY, g = c.length; g--;)
                            for (s[g] || (s[g] = { data: [] }), h = (p = c[g].data) &&
                                p.length; h--;)f = p[h], e = f.x, f = f.y, e > l && e < r && f < k && f > m && (s[g].data[h] = !0);
                for (g = c.length; g--;)for (h = (p = c[g].data) && p.length; h--;)s[g] && s[g].data[h] || p.splice(h, 1);
                return this.updatedDataObj = b
            },
            createSelectionBox: function(b) {
                var d = b.chart, a = d.paper, c = d.options.chart, e = d.yAxis && d.yAxis[0], f = d.xAxis && d.xAxis[0], g = b.selectionLeft, n = b.selectionTop, h = b.selectionWidth;
                b = b.selectionHeight;
                var l = g + h,
                    r = n + b,
                    k = 15 < h && 15 < b,
                    m = {
                        resizeEleRadius: 15,
                        canvasTop: d.canvasTop,
                        canvasRight: d.canvasLeft + d.canvasWidth,
                        canvasLeft: d.canvasLeft,
                        canvasBottom: d.canvasTop + d.canvasHeight
                    },
                    s = d.layers.tracker,
                    C = d._selectEleArr || (d._selectEleArr = []);
                m.index = C.length;
                m.id = "SELECT_" + m.index;
                m.selectBoxG = s = a.group("selection-box", s).toFront();
                m.selectBoxTracker = a.rect(g, n, h, b, s).attr({ "stroke-width": 1, stroke: ea(c.selectBorderColor), ishot: !0, fill: c.selectFillColor }).css({ cursor: "move" });
                m.selectBoxTracker.data("config", { position: 6, selectEleObj: m, xChange: !0, yChange: !0 });
                m.topTracker = a.rect(g, n - 6, h, 12, s).attr({ "stroke-width": 0, ishot: !0, fill: qa }).css("cursor",
                    Aa && "ns-resize" || "n-resize");
                m.topTracker.data("config", { position: 1, selectEleObj: m, yChange: !0 });
                m.rightTracker = a.rect(g + h - 6, n, 12, b, s).attr({ "stroke-width": 0, ishot: !0, fill: qa }).css("cursor", Aa && "ew-resize" || "w-resize");
                m.rightTracker.data("config", { position: 2, selectEleObj: m, xChange: !0 });
                m.bottomTracker = a.rect(g, n + b - 6, h, 12, s).attr({ "stroke-width": 0, ishot: !0, fill: qa }).css("cursor", Aa && "ns-resize" || "n-resize");
                m.bottomTracker.data("config", { position: 3, selectEleObj: m, yChange: !0 });
                m.leftTracker = a.rect(g -
                    6, n, 12, b, s).attr({ "stroke-width": 0, ishot: !0, fill: qa }).css("cursor", Aa && "ew-resize" || "e-resize");
                m.leftTracker.data("config", { position: 4, selectEleObj: m, xChange: !0 });
                m.cornerInnerSymbol = a.symbol("resizeIcon", 0, 0, 15, s).attr({ transform: "t" + l + "," + r, "stroke-width": 1, visibility: k ? Gb : "hidden", ishot: !0, stroke: "#999999" });
                m.cornerOuterSymbol = a.symbol("resizeIcon", 0, 0, -12, s).attr({ transform: "t" + l + "," + r, strokeWidth: 1, visibility: k ? "hidden" : Gb, ishot: !0, stroke: "#777777" });
                m.resizeTracker = a.circle(l, r, 12, s).attr({
                    "stroke-width": 1,
                    stroke: qa,
                    ishot: !0,
                    fill: qa
                }).css("cursor", Aa && "nwse-resize" || "nw-resize");
                m.resizeTracker.data("config", { position: 5, selectEleObj: m, yChange: !0, xChange: !0 });
                m.closeButton = a.symbol("closeIcon", 0, 0, 6, s).attr({ transform: "t" + l + "," + n, "stroke-width": 2, stroke: c.selectionCancelButtonBorderColor, fill: c.selectionCancelButtonFillColor, "stroke-linecap": "round", ishot: !0, "stroke-linejoin": "round" }).css({ cursor: "pointer", _cursor: "hand" }).click(function() { d.logic.deleteSelection(this, d) });
                m.closeButton.data("config",
                { index: m.index });
                m.chart = d;
                m.startX = f.getAxisPosition(g, 1);
                m.startY = e.getAxisPosition(n, 1);
                m.endX = f.getAxisPosition(l, 1);
                m.endY = e.getAxisPosition(r, 1);
                m.isVisible = !0;
                C.push(m);
                d.logic.bindDragEvent(m)
            },
            deleteSelection: function(b, d) {
                var a = b.data("config").index, c = d._selectEleArr, e = c[a], f, g, h;
                f = e.selectBoxTracker.getBBox();
                h = {
                    selectionLeft: f.x,
                    selectionTop: f.y,
                    selectionWidth: f.width,
                    selectionHeight: f.height,
                    startXValue: d.xAxis[0].getAxisPosition(f.x, 1),
                    startYValue: d.yAxis[0].getAxisPosition(f.y, 1),
                    endXValue: d.xAxis[0].getAxisPosition(f.x + f.width, 1),
                    endYValue: d.yAxis[0].getAxisPosition(f.y + f.height, 1),
                    data: d.logic.getCollatedData(),
                    id: e.id
                };
                for (g in e)f = e[g], f.remove && f.remove(), delete e[g];
                delete c[a];
                A.raiseEvent("selectionRemoved", h, d.logic.chartInstance)
            },
            bindDragEvent: function(b) { for (var d in b)/Tracker/.test(d) && b[d].drag(this.move, this.start, this.up) },
            start: function() {
                var b = this.data("config").selectEleObj,
                    d = b.topTracker,
                    a = b.rightTracker,
                    c = b.bottomTracker,
                    e = b.leftTracker,
                    f = b.resizeTracker,
                    g = d.data("config"),
                    h = a.data("config"),
                    t = c.data("config"),
                    l = e.data("config"),
                    r = f.data("config"),
                    k = b.selectBoxTracker.data("config"),
                    m = b.selectBoxTracker.getBBox();
                g.ox = m.x;
                g.oy = m.y;
                h.ox = m.x2;
                h.oy = m.y;
                t.ox = m.x;
                t.oy = m.y2;
                l.ox = m.x;
                l.oy = m.y;
                g.ox = m.x;
                g.oy = m.y;
                r.ox = m.x2;
                r.oy = m.y2;
                k.ox = m.x;
                k.oy = m.y;
                k.ow = m.width;
                k.oh = m.height;
                k.ox2 = m.x2;
                k.oy2 = m.y2;
                b.selectBoxG.toFront();
                d.hide();
                a.hide();
                c.hide();
                e.hide();
                f.hide();
                this.show()
            },
            move: function(b, d) {
                var a = this.data("config"),
                    c = a.selectEleObj,
                    e = c.chart,
                    f = c.topTracker,
                    g = c.rightTracker,
                    h = c.bottomTracker,
                    t = c.leftTracker,
                    l = c.resizeTracker,
                    r = c.selectBoxTracker,
                    k = c.canvasLeft,
                    m = c.canvasRight,
                    s = c.canvasTop,
                    C = c.canvasBottom,
                    fa = r.data("config"),
                    G = {},
                    x,
                    w;
                b = a.xChange ? b : 0;
                d = a.yChange ? d : 0;
                x = b + a.ox;
                w = d + a.oy;
                x = J(m - (a.ow || 0), Xa(x, k));
                w = J(C - (a.oh || 0), Xa(w, s));
                switch (a.position) {
                case 1:
                    G.y = J(fa.oy2, w);
                    G.height = P(fa.oy2 - w) || 1;
                    f.attr({ y: w + -6 });
                    break;
                case 2:
                    G.x = J(fa.ox, x);
                    G.width = P(fa.ox - x) || 1;
                    g.attr({ x: x + -6 });
                    break;
                case 3:
                    G.y = J(fa.oy, w);
                    G.height = P(fa.oy - w) || 1;
                    h.attr({ y: w + -6 });
                    break;
                case 4:
                    G.x = J(fa.ox2, x);
                    G.width = P(fa.ox2 - x) || 1;
                    t.attr({ x: x + -6 });
                    break;
                case 5:
                    G.x = J(fa.ox, x);
                    G.width = P(fa.ox - x) || 1;
                    G.y = J(fa.oy, w);
                    G.height = P(fa.oy - w) || 1;
                    l.attr({ cx: x, cy: w });
                    break;
                default:
                    G.x = x, G.y = w
                }
                this.data("dragStarted") || (a = r.getBBox(), a = {
                    selectionLeft: a.x,
                    selectionTop: a.y,
                    selectionWidth: a.width,
                    selectionHeight: a.height,
                    startXValue: e.xAxis[0].getAxisPosition(a.x, 1),
                    startYValue: e.yAxis[0].getAxisPosition(a.y, 1),
                    endXValue: e.xAxis[0].getAxisPosition(a.x + a.width, 1),
                    endYValue: e.yAxis[0].getAxisPosition(a.y +
                        a.height, 1),
                    id: c.id
                }, A.raiseEvent("BeforeSelectionUpdate", a, e.logic.chartInstance), this.data("dragStarted", 1));
                r.animate(G);
                c.isVisible && (c.closeButton.hide(), c.cornerInnerSymbol.hide(), c.cornerOuterSymbol.hide(), c.isVisible = !1)
            },
            up: function() {
                var b = this, d = b.data("config").selectEleObj, a = d.chart, c = a.xAxis && a.xAxis[0], e = a.yAxis && a.yAxis[0], f = d.topTracker, g = d.rightTracker, h = d.bottomTracker, t = d.leftTracker, l = d.resizeTracker, r = d.selectBoxTracker, k, m;
                setTimeout(function() {
                    k = r.getBBox();
                    d.startX = c.getAxisPosition(k.x,
                        1);
                    d.startY = e.getAxisPosition(k.y, 1);
                    d.endX = c.getAxisPosition(k.x2, 1);
                    d.endY = e.getAxisPosition(k.y2, 1);
                    f.attr({ x: k.x, y: k.y + -6, width: k.width });
                    g.attr({ x: k.x2 + -6, y: k.y, height: k.height });
                    h.attr({ x: k.x, y: k.y2 + -6, width: k.width });
                    t.attr({ x: k.x + -6, y: k.y, height: k.height });
                    l.attr({ cx: k.x2, cy: k.y2 });
                    d.closeButton.transform("t" + k.x2 + "," + k.y);
                    d.cornerInnerSymbol.transform("t" + k.x2 + "," + k.y2);
                    d.cornerOuterSymbol.transform("t" + k.x2 + "," + k.y2);
                    d.closeButton.show();
                    15 > k.width || 15 > k.height ? (d.cornerInnerSymbol.hide(),
                        d.cornerOuterSymbol.show()) : (d.cornerInnerSymbol.show(), d.cornerOuterSymbol.hide());
                    d.isVisible = !0;
                    f.show();
                    g.show();
                    h.show();
                    t.show();
                    l.show();
                    b.data("dragStarted") && (m = { selectionLeft: k.x, selectionTop: k.y, selectionWidth: k.width, selectionHeight: k.height, startXValue: a.xAxis[0].getAxisPosition(k.x, 1), startYValue: a.yAxis[0].getAxisPosition(k.y, 1), endXValue: a.xAxis[0].getAxisPosition(k.x + k.width, 1), endYValue: a.yAxis[0].getAxisPosition(k.y + k.height, 1), data: a.logic.getCollatedData(), id: d.id }, A.raiseEvent("SelectionUpdated",
                        m, a.logic.chartInstance), b.data("dragStarted", 0))
                }, 100)
            },
            postSeriesAddition: function(b, d) {
                var a = q.scatter && q.scatter.postSeriesAddition && q.scatter.postSeriesAddition.apply(this, arguments), c = b.chart, e = d.chart, f = this.colorManager, p = h(e.selectbordercolor, f.getColor("canvasBorderColor")), n = g(e.selectborderalpha, f.getColor("canvasBorderAlpha"));
                c.selectBorderColor = { FCcolor: { color: p, alpha: n } };
                c.selectFillColor = y(h(e.selectfillcolor, f.getColor("altHGridColor")), g(e.selectfillalpha, f.getColor("altHGridAlpha")));
                c.selectionCancelButtonBorderColor = y(h(e.selectioncancelbuttonbordercolor, p), g(e.selectioncancelbuttonborderalpha, n));
                c.selectionCancelButtonFillColor = y(h(e.selectioncancelbuttonfillcolor, "FFFFFF"), g(e.selectioncancelbuttonfillalpha, 100));
                b.chart.nativeZoom = !1;
                c.formAction = B(e.formaction);
                "0" !== e.submitdataasxml || e.formdataformat || (e.formdataformat = A.dataFormats.CSV);
                c.formDataFormat = h(e.formdataformat, A.dataFormats.XML);
                c.formTarget = h(e.formtarget, "_self");
                c.formMethod = h(e.formmethod, "POST");
                c.submitFormAsAjax =
                    g(e.submitformusingajax, 1);
                (b.callbacks || (b.callbacks = [])).push(function() {
                    var a = this.logic;
                    Va(this, {
                        selectionStart: function(a) {
                            var b = fc(a.chart.container, a.originalEvent), b = H({ selectionLeft: a.selectionLeft, selectionTop: a.selectionTop, selectionWidth: a.selectionWidth, selectionHeight: a.selectionHeight, startXValue: a.chart.xAxis[0].getAxisPosition(a.selectionLeft, 1), startYValue: a.chart.yAxis[0].getAxisPosition(a.selectionTop, 1) }, b);
                            A.raiseEvent("selectionStart", b, a.chart.logic.chartInstance)
                        },
                        selectionEnd: function(b) {
                            var c =
                                    fc(b.chart.container, b.originalEvent),
                                d = b.chart.xAxis[0],
                                e = b.chart.yAxis[0],
                                c = H({ selectionLeft: b.selectionLeft, selectionTop: b.selectionTop, selectionWidth: b.selectionWidth, selectionHeight: b.selectionHeight, startXValue: d.getAxisPosition(b.selectionLeft, 1), startYValue: e.getAxisPosition(b.selectionTop, 1), endXValue: d.getAxisPosition(b.selectionLeft + b.selectionWidth, 1), endYValue: e.getAxisPosition(b.selectionTop + b.selectionHeight, 1) }, c);
                            A.raiseEvent("selectionEnd", c, b.chart.logic.chartInstance);
                            a.createSelectionBox(b)
                        }
                    })
                });
                b.chart.zoomType = "xy";
                return a
            }
        }, q.scatterbase);
        q("multiaxisline", {
            friendlyName: "Multi-axis Line Chart",
            standaloneInit: !0,
            creditLabel: !1,
            defaultSeriesType: "line",
            rendererId: "multiaxisline",
            isMLAxis: !0,
            canvasPaddingModifiers: ["anchor", "anchorlabel"],
            drawAxisTrackerAndCheckBox: function() {
                for (var b = this,
                    d = b.canvasLeft,
                    a = b.canvasTop,
                    c = b.canvasWidth,
                    e = b.canvasHeight,
                    f = b.paper,
                    p = b.yAxis,
                    h = p.length,
                    t = b.logic,
                    l = 0,
                    r = 0,
                    k = { cursor: "col-resize", _cursor: "e-resize", "*cursor": "e-resize" },
                    m = t.chartInstance,
                    s = m.jsVars,
                    C = t.dataObj,
                    fa = s._reflowData,
                    G = fa.hcJSON || {},
                    x = C.axis,
                    w = C.chart,
                    C = g(w.allowaxisshift, 1),
                    q = (w = g(w.allowselection, 1)) && f.html("div", { fill: "transparent", width: b.chartWidth }, { top: "", left: "", fontSize: "10px", lineHeight: "15px", marginTop: -b.chartHeight + "px" }, b.container),
                    G = G.yAxis || (G.yAxis = []),
                    D,
                    u,
                    z,
                    E,
                    $,
                    R,
                    K = function(a) { b.series && b.series[a] && b.series[a].setVisible(!1, !1) },
                    v = function(a) {
                        var c = a.data;
                        a = c.axis[c.index].axisData;
                        var d = a._relatedSeries, e = !c.checkBox.checked(), c = x[a._axisposition];
                        d && jb(d, function(a) {
                            b.options.series[a].legendClick(e,
                                !0)
                        });
                        c.hidedataplots = !e;
                        H(fa, { preReflowAdjustments: function() { this.dataObj.axis = x } });
                        A.raiseEvent("AxisSelected", { selected: e, AxisId: c._index, AxisConfiguration: a._origAttr || qb(c, a) }, b.logic.chartInstance)
                    },
                    ca = function(a) {
                        var c = a.data;
                        a = c.axis;
                        var c = a[c.index].axisData, d = c.opposite, e = c._axisposition, f = x.length, p, h, k, n = {}, l = x[e], r = {};
                        for (p = 0; p < f; p += 1)h = x[p], h = !g(h.axisonleft, 1), h === d && (k = p, d && (p = f));
                        k !== e && (n = a[k], r = x[k], a = x.splice(k, 1, x[e]), x.splice(e, 1, a[0]));
                        if (k !== e || d !== t.dataObj.chart._lastClickedOpp)
                            H(fa,
                            {
                                preReflowAdjustments: function() {
                                    this.dataObj.chart._lastClickedOpp = d;
                                    this.dataObj.axis = x
                                }
                            }), A.raiseEvent("AxisShifted", { previousDefaultAxisId: r._index, newDefaultAxisId: l._index, previousDefaultAxisConfiguration: n._origAttr || qb(r, n), newDefaultAxisConfiguration: c._origAttr || qb(l, c) }, b.logic.chartInstance), A.hcLib.createChart(m, s.container, s.type, void 0, void 0, !1, !0)
                    }; h--;)
                    D = p[h], u = D.axisData, z = u._axisWidth, (E = u.opposite) || (l += z), G[h] || (G[h] = {}), w && u.showAxis && ($ = d + (E ? c + r + g(u.title.margin, z - 10) + 5 : -l),
                        R = a + e + 10, D.checkBox = f.html("input", {}, { left: $ + "px", top: R + "px" }).attr({ type: "checkbox", name: "axis[]", value: u.title.text || "" }).add(q), D.checkBox.val(u.hidedataplots), u.hidedataplots || u._relatedSeries && jb(u._relatedSeries, K), wb(D.checkBox.element, ob ? "touchstart" : "mousedown", v, { axis: p, index: h, checkBox: D.checkBox })), C && (D.tracker = f.rect(d + (E ? c + r : -l), a, z, e, 0).attr({ "stroke-width": 0, fill: qa, isTracker: +new Date, zIndex: 7 }).css(k), E && (r += z), wb(D.tracker[0], ob ? "touchstart" : "mousedown", ca, { axis: p, index: h }))
            },
            series: function(b) {
                var d = this, a = d.numberFormatter, c = d.name, e = d.dataObj, f = e.chart, p = e.axis, n = d.hcJSON, t = n[Y], l = n.yAxis[0], r = g(e.chart.allowselection, 1), k = [], m = g(f.showaxisnamesinlegend, 0), s = g(f.yaxisvaluesstep, f.yaxisvaluestep, 1), C = this.colorManager, fa, G, x, w, q, D, u, v, E, $, R, K, Qa, ca, la;
                n.callbacks || (n.callbacks = []);
                n.callbacks.push(function() { d.drawAxisTrackerAndCheckBox.call(this) });
                n.legend.enabled = Boolean(g(e.chart.showlegend, 1));
                if (p && 0 < p.length) {
                    this.categoryAdder(e, n);
                    n.yAxis.splice(0, 2);
                    D = t.noHiddenAxis =
                        0;
                    for (v = p.length; D < v; D += 1)E = p[D], void 0 === E._index && (E._index = D), E._axisposition = D, (w = !g(E.axisonleft, 1)) ? (E._isSY = !0, k.unshift(E)) : (E._isSY = !1, k.push(E));
                    D = 0;
                    for (v = k.length; D < v; D += 1)
                        if (E = k[D], q = g(E.showaxis, 1), p = E._index || 0, a.parseMLAxisConf(E, p), fa = C.getPlotColor(p), E.id = p, Qa = h(E.color, f.axiscolor, fa), $ = y(Qa, 100), w = !g(E.axisonleft, 1), R = g(E.divlinethickness, f.divlinethickness, 1), G = q ? g(E.tickwidth, f.axistickwidth, 2) : 0, x = q ? g(E.axislinethickness, f.axislinethickness, 2) : 0, K = t[D] = {}, K.showAxis = q, t.noHiddenAxis +=
                                1 - q, q && (w ? la = D : ca = D), u = [], n.yAxis.push({
                                startOnTick: !1,
                                endOnTick: !1,
                                _axisposition: E._axisposition,
                                _isSY: E._isSY,
                                _index: p,
                                hidedataplots: !g(E.hidedataplots, 0),
                                title: { enabled: q, style: l.title.style, text: q ? F(E.title) : z, align: r ? "low" : "middle", textAlign: r && w ? "right" : void 0 },
                                labels: { x: 0, style: l.labels.style },
                                plotBands: [],
                                plotLines: [],
                                gridLineColor: y(h(E.divlinecolor, Qa), g(E.divlinealpha, f.divlinealpha, C.getColor("divLineAlpha"), 100)),
                                gridLineWidth: R,
                                gridLineDashStyle: g(E.divlinedashed, E.divlineisdashed, f.divlinedashed,
                                    f.divlineisdashed, 0) ? xa(g(E.divlinedashlen, f.divlinedashlen, 4), g(E.divlinedashgap, f.divlinedashgap, 2), R) : void 0,
                                alternateGridColor: Ha,
                                lineColor: $,
                                lineWidth: x,
                                tickLength: G,
                                tickColor: $,
                                tickWidth: x,
                                opposite: w,
                                _relatedSeries: u,
                                showAxis: q
                            }), K.yAxisValuesStep = g(E.yaxisvaluesstep, E.yaxisvaluestep, s), K.maxValue = E.maxvalue, K.tickWidth = G, K.minValue = E.minvalue, K.setadaptiveymin = g(E.setadaptiveymin, f.setadaptiveymin), K.numDivLines = g(E.numdivlines, f.numdivlines, 4), K.adjustdiv = g(E.adjustdiv, f.adjustdiv), K.showYAxisValues =
                                q ? g(E.showyaxisvalues, E.showyaxisvalue, f.showyaxisvalues, f.showyaxisvalue, 1) : 0, K.showLimits = q ? g(E.showlimits, f.showyaxislimits, f.showlimits, K.showYAxisValues) : 0, K.showDivLineValues = q ? g(E.showdivlinevalue, f.showdivlinevalues, E.showdivlinevalues, K.showYAxisValues) : 0, K.showzeroplane = E.showzeroplane, K.showzeroplanevalue = g(E.showzeroplanevalue), K.zeroplanecolor = E.zeroplanecolor, K.zeroplanethickness = E.zeroplanethickness, K.zeroplanealpha = E.zeroplanealpha, K.linecolor = h(E.linecolor, f.linecolor || E.color, fa),
                            K.linealpha = E.linealpha, K.linedashed = E.linedashed, K.linethickness = E.linethickness, K.linedashlen = E.linedashlen, K.linedashgap = E.linedashgap, K.anchorShadow = E.anchorshadow, K.plottooltext = E.plottooltext, E.dataset && 0 < E.dataset.length) {
                            R = E.dataset.length;
                            fa = g(E.includeinlegend, 1);
                            w = !1;
                            q = {
                                data: [],
                                relatedSeries: u,
                                name: F(E.title),
                                type: "line",
                                marker: { symbol: "axisIcon", fillColor: qa, lineColor: lc(Qa, 80).replace(sb, Na) },
                                lineWidth: 0,
                                legendFillColor: 0 !== m ? y(Qa, 25) : void 0,
                                legendFillOpacity: 0,
                                legendIndex: E._index,
                                showInLegend: Boolean(g(m,
                                    fa))
                            };
                            n.series.push(q);
                            for ($ = 0; $ < R; $ += 1) {
                                x = E.dataset[$];
                                x._yAxisName = E.title;
                                void 0 === x.color && (x.color = h(K.linecolor, Qa));
                                G = { visible: !g(x.initiallyhidden, 0), yAxis: D, data: [], hoverEffects: this.parseSeriesHoverOptions(b, n, x, c) };
                                G = this.point(c, G, x, e.chart, n, t.oriCatTmp.length, D, p);
                                G.legendFillColor = q.legendFillColor;
                                G.legendIndex = E._index;
                                if (void 0 === G.showInLegend || G.showInLegend)w = !0;
                                !1 !== G.showInLegend && (G.showInLegend = Boolean(fa));
                                u.push(n.series.length);
                                n.series.push(G)
                            }
                            0 !== u.length && w || (q.showInLegend =
                                !1)
                        }
                    b = f._lastClickedOpp ? g(la, ca) : g(ca, la);
                    D = 0;
                    for (v = n.yAxis.length; D < v; D += 1)D != b && (n.yAxis[D].gridLineWidth = 0, t[D].zeroplanethickness = 0);
                    this.configureAxis(n, e)
                }
            },
            point: function(b, d, a, c, e, f, p, n) {
                b = !1;
                p = g(c.ignoreemptydatasets, 0);
                var t;
                t = e.chart;
                var l = a.data || [],
                    r = e[Y],
                    k = r[d.yAxis || 0],
                    m = h(d.type, this.defaultSeriesType),
                    s = e.plotOptions[m] && e.plotOptions[m].stacking,
                    C = h(this.isValueAbs, r.isValueAbs, !1),
                    q = g(d.yAxis, 0),
                    G = this.numberFormatter,
                    x = this.colorManager,
                    w = I(h(a.color, k.linecolor, c.linecolor, x.getPlotColor())),
                    u = g(a.alpha, k.linealpha, c.linealpha, Ca),
                    D = g(c.showshadow, this.defaultPlotShadow, 1),
                    v = g(a.drawanchors, a.showanchors, c.drawanchors, c.showanchors),
                    y = g(a.anchorsides, c.anchorsides, 0),
                    E = g(a.anchorstartangle, c.anchorstartangle, 90),
                    $ = g(a.anchorradius, c.anchorradius, 3),
                    R = I(h(a.anchorbordercolor, c.anchorbordercolor, w)),
                    K = g(a.anchorborderthickness, c.anchorborderthickness, 1),
                    x = I(h(a.anchorbgcolor, c.anchorbgcolor, x.getColor("anchorBgColor"))),
                    Qa = h(a.anchoralpha, c.anchoralpha, Ca),
                    ca = h(a.anchorbgalpha, c.anchorbgalpha,
                        Qa);
                d.anchorShadow = Qa && h(a.anchorshadow, k.anchorShadow, c.anchorshadow, 0);
                d.name = B(a.seriesname);
                if (0 === g(a.includeinlegend) || void 0 === d.name || 0 === u && 1 !== v)d.showInLegend = !1;
                d.marker = { fillColor: { FCcolor: { color: x, alpha: ca * Qa / 100 + z } }, lineColor: { FCcolor: { color: R, alpha: Qa + z } }, lineWidth: K, radius: $, symbol: oa(y), startAngle: E };
                d.color = { FCcolor: { color: w, alpha: u } };
                d.shadow = D ? { opacity: D ? u / 100 : 0 } : !1;
                d.step = this.stepLine;
                d.drawVerticalJoins = Boolean(g(c.drawverticaljoins, 1));
                d.useForwardSteps = Boolean(g(c.useforwardsteps,
                    1));
                d.lineWidth = g(a.linethickness, k.linethickness, c.linethickness, 2);
                c = d._dataParser = Ib.line(e, {
                    plottooltext: h(a.plottooltext, k.plottooltext),
                    seriesname: d.name,
                    lineAlpha: u,
                    anchorAlpha: Qa,
                    showValues: g(a.showvalues, r.showValues),
                    yAxis: n,
                    lineDashed: Boolean(g(a.dashed, k.linedashed, c.linedashed, 0)),
                    lineDashLen: g(a.linedashlen, k.linedashlen, c.linedashlen, 5),
                    lineDashGap: g(a.linedashgap, k.linedashgap, c.linedashgap, 4),
                    lineThickness: d.lineWidth,
                    lineColor: w,
                    valuePosition: h(a.valueposition, t.valuePosition),
                    drawAnchors: v,
                    anchorShadow: d.anchorShadow,
                    anchorBgColor: x,
                    anchorBgAlpha: ca,
                    anchorBorderColor: R,
                    anchorBorderThickness: K,
                    anchorRadius: $,
                    anchorSides: y,
                    anchorAngle: E,
                    _sourceDataset: a,
                    _yAxisName: a._yAxisName,
                    hoverEffects: d.hoverEffects
                }, this);
                delete a._yAxisName;
                for (n = 0; n < f; n += 1)(t = l[n]) ? (a = G.getCleanValue(t.value, C), null === a ? d.data.push({ y: null }) : (b = !0, d.data.push(c(t, n, a)), this.pointValueWatcher(e, a, q, s, n, 0, m))) : d.data.push({ y: null });
                !p || b || this.realtimeEnabled || (d.showInLegend = !1);
                return d
            },
            configureAxis: function(b,
                d) {
                var a = b[Y], c = d.chart, e, f, p, h, t, l, r, k, m, s, C, q, G;
                b.xAxis.title.text = F(c.xaxisname);
                G = 0;
                for (f = b.yAxis.length; G < f; G += 1)e = b.yAxis[G], p = a[G], q = g(p.yAxisValuesStep, 1), q = 1 > q ? 1 : q, h = p.maxValue, t = p.minValue, l = g(p.setadaptiveymin, 0), r = l = !l, k = p.numDivLines, m = 0 !== p.adjustdiv, s = p.showLimits, C = p.showDivLineValues, this.axisMinMaxSetter(e, p, h, t, l, r, k, m), this.configurePlotLines(c, b, e, p, s, C, q, this.numberFormatter, e._isSY, void 0, e._index), e.reversed && 0 <= e.min && (b.plotOptions.series.threshold = e.max)
            },
            spaceManager: function(b,
                d, a, c) {
                var e = b[Y], f, p, n = d.chart, t, l, r, k, m, s, C, q, G, x, w, u, D, z;
                z = b.chart.marginLeft;
                var v = b.chart.marginRight, E = e.marginLeftExtraSpace, $ = e.marginTopExtraSpace, R = e.marginBottomExtraSpace, K = e.marginRightExtraSpace;
                m = a - (E + K + b.chart.marginRight + b.chart.marginLeft);
                var y = c - (R + b.chart.marginBottom + b.chart.marginTop), ca = .3 * m;
                c = .3 * y;
                var la = m - ca, M = y - c, F = h(n.legendposition, Ba).toLowerCase();
                b.legend.enabled && F === ka && (la -= this.placeLegendBlockRight(b, d, la / 2, y));
                p = b.yAxis;
                k = p.length;
                f = k - e.noHiddenAxis;
                C = 0;
                if (f)
                    for (x =
                        q = 0, w = 10, D = la / f, s = k - 1; 0 <= s; s -= 1)G = p[s], G.showAxis && (f = e[s], r = G.opposite, u = (r ? x : q) + w, t = f.tickWidth, l = h(n.rotateyaxisname, r ? "cw" : "ccw"), f.verticalAxisNamePadding = 4, f.fixedValuesPadding = t, f.verticalAxisValuesPadding = t, f.rotateVerticalAxisName = r && "ccw" !== l ? "cw" : l, f.verticalAxisNameWidth = 50, G.offset = u, C = D + C - w, f = Wa(G, f, b, d, y, C, r, 0, 0), f += w, r ? (x += f, b.chart.marginRight += w) : (q += f, b.chart.marginLeft += w), C -= f, la -= f, la < w && (w = 0), G._axisWidth = f);
                la -= Ya(b, d, la);
                p = la + ca;
                b.legend.enabled && F !== ka && (M -= this.placeLegendBlockBottom(b,
                    d, m, M / 2), b.legend.width > p && (b.legend.x = 0));
                M -= this.titleSpaceManager(b, d, p, M / 2);
                f = e.x;
                f.horizontalAxisNamePadding = g(n.xaxisnamepadding, 5);
                f.horizontalLabelPadding = g(n.labelpadding, 2);
                f.labelDisplay = "1" == n.rotatelabels ? "rotate" : h(n.labeldisplay, "auto").toLowerCase();
                f.staggerLines = g(n.staggerlines, 2);
                f.slantLabels = g(n.slantlabels, n.slantlabel, 0);
                m = { left: 0, right: 0 };
                m = b.chart.managePlotOverflow && this.canvasPaddingModifiers && this.calculateCanvasOverflow(b, !0) || m;
                s = m.left + m.right;
                C = .6 * p;
                s > C && (q = m.left /
                    s, m.left -= q * (s - C), m.right -= (1 - q) * (s - C));
                this.xAxisMinMaxSetter(b, d, p, m.left, m.right);
                M -= tb(b.xAxis, f, b, d, p, M, ca);
                M -= yb(b, d, M, b.xAxis);
                d = c + M;
                for (s = 0; s < k; s += 1)Rb(d, b, n, b.yAxis[s], e[s].lYLblIdx);
                b.legend.enabled && F === ka && (e = b.legend, n = c + M, e.height > n && (e.height = n, e.scroll.enabled = !0, C = (e.scroll.scrollBarWidth = 10) + (e.scroll.scrollBarPadding = 2), e.width += C, b.chart.marginRight += C), e.y = 20);
                n = (e = b.title.alignWithCanvas) ? b.chart.marginLeft + p / 2 : a / 2;
                z = e ? b.chart.marginLeft : z;
                a = e ? a - b.chart.marginRight : a - v;
                switch (b.title.align) {
                case Ea:
                    b.title.x =
                        z;
                    b.title.align = "start";
                    break;
                case ka:
                    b.title.x = a;
                    b.title.align = "end";
                    break;
                default:
                    b.title.x = n, b.title.align = "middle"
                }
                switch (b.subtitle.align) {
                case Ea:
                    b.subtitle.x = z;
                    break;
                case ka:
                    b.subtitle.x = a;
                    break;
                default:
                    b.subtitle.x = n
                }
                b.chart.marginLeft += E;
                b.chart.marginTop += $;
                b.chart.marginBottom += R;
                b.chart.marginRight += K
            }
        }, q.mslinebase);
        q("candlestick", {
            friendlyName: "Candlestick Chart",
            standaloneInit: !0,
            creditLabel: !1,
            paletteIndex: 3,
            defaultSeriesType: "candlestick",
            canvasborderthickness: 1,
            rendererId: "candlestick",
            chart: q.errorbar2d.chart,
            drawErrorValue: q.errorbar2d.drawErrorValue,
            series: function(b, d, a) {
                var c, e, f = d[Y], p, n, t, l, r, k;
                c = b.chart;
                p = d.chart;
                var m = g(c.showvolumechart, 1);
                n = this.colorManager;
                var s;
                d.legend.enabled = Boolean(g(c.showlegend, 1));
                p.rollOverBandColor = y(h(c.rolloverbandcolor, n.getColor("altHGridColor")), h(c.rolloverbandalpha, n.getColor("altHGridAlpha")));
                if (b.dataset && 0 < b.dataset.length) {
                    this.categoryAdder(b, d);
                    d.yAxis[0].opposite = !0;
                    f.numdivlines = B(b.chart.numpdivlines);
                    m && (s = d._FCconf.numberFormatter,
                        p = d.labels, d._FCconf.numberFormatter = {}, d._FCconf.smartLabel && (e = d._FCconf.smartLabel, d._FCconf.smartLabel = void 0), d.labels = {}, t = H({}, d), d._FCconf.numberFormatter = s, d._FCconf.smartLabel = e, d.labels = p, e && (t._FCconf.smartLabel = e), t._FCconf.numberFormatter = new u.NumberFormatter(H(H({}, c), {
                            forcedecimals: da(c.forcevdecimals, c.forcedecimals),
                            forceyaxisvaluedecimals: da(c.forcevyaxisvaluedecimals, c.forceyaxisvaluedecimals),
                            yaxisvaluedecimals: da(c.vyaxisvaluedecimals, c.yaxisvaluedecimals),
                            formatnumber: da(c.vformatnumber,
                                c.formatnumber),
                            formatnumberscale: da(c.vformatnumberscale, c.formatnumberscale),
                            defaultnumberscale: da(c.vdefaultnumberscale, c.defaultnumberscale),
                            numberscaleunit: da(c.vnumberscaleunit, c.numberscaleunit),
                            vnumberscalevalue: da(c.vnumberscalevalue, c.numberscalevalue),
                            scalerecursively: da(c.vscalerecursively, c.scalerecursively),
                            maxscalerecursion: da(c.vmaxscalerecursion, c.maxscalerecursion),
                            scaleseparator: da(c.vscaleseparator, c.scaleseparator),
                            numberprefix: da(c.vnumberprefix, c.numberprefix),
                            numbersuffix: da(c.vnumbersuffix,
                                c.numbersuffix),
                            decimals: da(c.vdecimals, c.decimals)
                        }), this), H(t, { chart: { backgroundColor: "rgba(255,255,255,0)", borderColor: "rgba(255,255,255,0)", animation: !1 }, title: { text: null }, subtitle: { text: null }, legend: { enabled: !1 }, credits: { enabled: !1 }, xAxis: { opposite: !0, labels: { enabled: !1 } }, yAxis: [{ opposite: !0, title: {}, plotBands: [], plotLines: [] }, { opposite: !1, title: { text: b.chart.vyaxisname } }] }), s = d.subCharts = [t]);
                    c = 0;
                    for (e = b.dataset.length; c < e; c += 1)
                        p = { numColumns: e, data: [] }, n = b.dataset[c], p = this.point(a, p, n, b.chart,
                            d, f.oriCatTmp.length, c), p instanceof Array ? (m && (t.series.push({ type: "column", data: p[1] }), t.showVolume = !0, n = g(b.chart.volumeheightpercent, 40), n = 20 > n ? 20 : 80 < n ? 80 : n, l = f.height - (d.chart.marginBottom + d.chart.marginTop), r = l * n / 100, k = d.chart.marginBottom + r, t[Y].marginTop = k + 40, t.yAxis[0].plotBands = [], t.yAxis[0].plotLines = [], t.exporting.enabled = !1, t.yAxis[0].title.text = F(B(b.chart.vyaxisname)), t.yAxis[0].title.align = "low", t.chart.height = r + 20, t.chart.width = f.width, t.chart.top = l - r, t.chart.left = 0, t.chart.volumeHeightPercent =
                            n), d.series.push(p[0])) : d.series.push(p);
                    if (b.trendset && 0 < b.trendset.length)for (c = 0, e = b.trendset.length; c < e; c += 1)p = { type: "line", marker: { enabled: !1 }, connectNullData: 1, data: [] }, t = b.trendset[c], t.data && 0 < t.data.length && (p = this.getTrendsetPoint(a, p, t, b.chart, d, f.oriCatTmp.length, c), d.series.push(p));
                    b.chart.showdivlinesecondaryvalue = 0;
                    b.chart.showsecondarylimits = 0;
                    this.configureAxis(d, b);
                    d.yAxis[1].opposite = !1;
                    d.yAxis[1].min = d.yAxis[0].min;
                    d.yAxis[1].max = d.yAxis[0].max;
                    d.yAxis[1].title.text = d.yAxis[0].title.text;
                    d.yAxis[0].title.text = z;
                    m && s && (s = s[0], a = s[Y], a.numdivlines = B(b.chart.numvdivlines), a[0].min = f.volume && f.volume.min, a[0].max = f.volume && f.volume.max, s.series && s.series[0] && (s.series[0].showInLegend = !1), this.configureAxis(s, b), s.yAxis[0].title.text = F(B(b.chart.vyaxisname)), s.yAxis[1].min = s.yAxis[0].min, s.yAxis[1].max = s.yAxis[0].max, s.yAxis[1].title.text = s.yAxis[0].title.text, s.yAxis[0].title.text = z);
                    if ((a = b.trendlines && b.trendlines[0] && b.trendlines[0].line) && a.length) {
                        for (m = 0; m < a.length; m += 1)
                            a[m].parentyaxis =
                                "s", a[m].valueonleft = "1";
                        ac(b.trendlines, d.yAxis, f, !0, this.isBar)
                    }
                }
            },
            getTrendsetPoint: function(b, d, a, c, e) {
                if (a.data) {
                    b = a.data;
                    var f = b.length, p = 0, n, t, l, r, k, m = e[Y], s = this.numberFormatter, C = g(d.yAxis, 0), m = m.toolTextStore, f = I(h(a.color, c.trendsetcolor, "666666")), p = h(a.alpha, c.trendsetalpha, "100");
                    n = g(a.thickness, c.trendsetthickness, 2);
                    t = Boolean(g(a.dashed, c.trendsetdashed, 0));
                    l = g(a.dashlen, c.trendsetdashlen, 4);
                    r = g(a.dashgap, c.trendsetdashgap, 4);
                    k = h(a.includeinlegend, 1);
                    d.color = y(f, p);
                    d.lineWidth = n;
                    d.dashStyle =
                        t ? xa(l, r) : void 0;
                    d.includeInLegend = k;
                    d.name = B(a.name);
                    d.doNotUseBand = !0;
                    if (0 === g(a.includeinlegend) || void 0 === d.name)d.showInLegend = !1;
                    d.tooltip = { enabled: !1 };
                    p = c.interactivelegend = 0;
                    for (f = b.length; p < f; p += 1)(c = b[p]) && !c.vline && (a = s.getCleanValue(c.value), c = s.getCleanValue(c.x), c = null !== c ? c : p + 1, n = m && m[c], d.data.push({ x: c, y: a, toolText: n }), this.pointValueWatchers(e, null, a, a, null, C))
                }
                return d
            },
            point: function(b, d, a, c, e) {
                if (a.data) {
                    b = q[b];
                    var f = e[Y],
                        p = B(c.plotpriceas, z).toLowerCase(),
                        n = a.data,
                        t = n && n.length,
                        l = this.numberFormatter,
                        r = [],
                        k = [],
                        m = {},
                        s,
                        C,
                        fa,
                        G = !1,
                        x = g(d.yAxis, 0),
                        w = I(h(c.bearbordercolor, "B90000")),
                        u = I(h(c.bearfillcolor, "B90000")),
                        D = this.colorManager,
                        v = I(h(c.bullbordercolor, D.getColor("canvasBorderColor"))),
                        fb = I(h(c.bullfillcolor, "FFFFFF")),
                        E = d.lineWidth = g(c.plotlinethickness, "line" == p || "bar" == p ? 2 : 1),
                        $ = h(c.plotlinealpha, "100"),
                        R = g(c.plotlinedashlen, 5),
                        K = g(c.plotlinedashgap, 4),
                        Qa = g(c.vplotborderthickness, 1),
                        ca = !!g(c.drawanchors, 1),
                        la = g(c.anchorsides, 0),
                        M = g(c.anchorstartangle, 90),
                        A = g(c.anchorradius,
                            this.anchorRadius, 3),
                        L = I(h(c.anchorbordercolor, v)),
                        W = g(c.anchorborderthickness, this.anchorBorderThickness, 1),
                        D = I(h(c.anchorbgcolor, D.getColor("anchorBgColor"))),
                        O = h(c.anchoralpha, "0"),
                        N = h(c.anchorbgalpha, O),
                        ia,
                        X,
                        Q,
                        H,
                        V,
                        Oa,
                        ea,
                        S,
                        Z,
                        aa,
                        ba,
                        U,
                        ja,
                        cb,
                        na,
                        pa = !1;
                    d.name = B(a.seriesname);
                    d.showInLegend = !1;
                    d.marker = {};
                    switch (p) {
                    case "line":
                        d.plotType = "line";
                        break;
                    case "bar":
                        d.plotType = "candlestickbar";
                        break;
                    default:
                        d.plotType = "column", d.errorBarWidthPercent = 0, pa = !0
                    }
                    for (X = 0; X < t; X += 1)
                    (Q = n[X]) && !Q.vline && (ea = l.getCleanValue(Q.open),
                        S = l.getCleanValue(Q.close), Z = l.getCleanValue(Q.high), aa = l.getCleanValue(Q.low), ba = l.getCleanValue(Q.volume, !0), cb = l.getCleanValue(Q.x), pa && P(S - ea), J(ea, S), Xa(ea, S), null !== ba && (G = !0), U = J(ea, S, Z, aa), ja = Xa(ea, S, Z, aa), F(B(Q.valuetext, z)), s = I(h(Q.bordercolor, S < ea ? w : v)), C = h(Q.alpha, "100"), p = y(I(h(Q.color, S < ea ? u : fb)), C), fa = Boolean(g(Q.dashed)) ? xa(R, K) : void 0, ia = { opacity: C / 100 }, V = f.oriCatTmp[X], na = y(s, $), H = b.getPointStub(e, c, Q, ea, S, Z, aa, ba, na, E, d.plotType, V), cb = cb ? cb : X + 1, m[cb] = H.toolText, d.data.push({
                            high: Xa(ea,
                                S, Z, aa),
                            low: J(ea, S, Z, aa),
                            color: pa ? p : { FCcolor: { color: s, alpha: C } },
                            displayValue: F(h(Q.displayvalue, Q.valuetext, z)),
                            borderColor: na,
                            shadow: ia,
                            dashStyle: fa,
                            borderWidth: E,
                            x: cb,
                            y: H.y,
                            categoryLabel: V,
                            errorValue: H.errorValue,
                            previousY: H.previousY,
                            toolText: H.toolText,
                            link: H.link,
                            marker: { enabled: ca, fillColor: { FCcolor: { color: D, alpha: N * O / 100 + z } }, lineColor: { FCcolor: { color: L, alpha: O } }, lineWidth: W, radius: A, startAngle: M, symbol: oa(la) }
                        }), Oa = B(F(h(Q.volumetooltext, a.volumetooltext, c.volumetooltext))), Oa = void 0 !== Oa ?
                            b.getPointStub(e, c, Q, ea, S, Z, aa, ba, na, E, d.plotType, V, Oa).toolText : H.toolText, k.push({ y: ba, categoryLabel: V, color: y(p, C), toolText: Oa, borderWidth: Qa, borderColor: y(s, h(c.plotlinealpha, Q.alpha)), dashStyle: fa, shadow: ia, x: cb, link: Q.link }), this.pointValueWatchers(e, cb, U, ja, ba, x));
                    f.toolTextStore = m;
                    (d.drawVolume = G) ? r.push(d, k) : r = d;
                    return r
                }
                return[]
            },
            getPointStub: function(b, d, a, c, e, f, g, n, t, l, r, k, m) {
                var s = z, s = b[Y], C = s.numberFormatter, q = "line" === r, G = J(c, e), x = Xa(c, e), w = {};
                b = b.subCharts && b.subCharts[0] && b.subCharts[0][Y].numberFormatter ||
                    C;
                switch (r) {
                case "line":
                    w.y = e;
                    w.link = h(a.link);
                    break;
                case "column":
                    w.y = P(e - c);
                    w.previousY = G;
                    w.link = h(a.link);
                    w.errorValue = [];
                    0 < f - x && w.errorValue.push({ errorValue: f - x, errorStartValue: x, errorBarColor: t, errorBarThickness: l, opacity: 1 });
                    0 > g - G && w.errorValue.push({ errorValue: g - G, errorStartValue: G, errorBarColor: t, errorBarThickness: l, opacity: 1 });
                    break;
                default:
                    w.y = c, w.previousY = e, w.link = h(a.link)
                }
                s.showTooltip ? (s = B(F(h(m, a.tooltext, s.tooltext))), void 0 !== s ? s = ab(s, [3, 5, 6, 10, 54, 55, 56, 57, 58, 59, 60, 61, 81, 82], {
                    label: k,
                    yaxisName: F(d.yaxisname),
                    xaxisName: F(d.xaxisname),
                    openValue: a.open,
                    openDataValue: C.dataLabels(c),
                    closeValue: a.close,
                    closeDataValue: C.dataLabels(e),
                    highValue: a.high,
                    highDataValue: C.dataLabels(f),
                    lowValue: a.low,
                    lowDataValue: C.dataLabels(g),
                    volumeValue: a.volume,
                    volumeDataValue: C.dataLabels(n)
                }, a, d) : (s = null === c || q ? z : "<b>Open:</b> " + C.dataLabels(c) + "<br/>", s += null !== e ? "<b>Close:</b> " + C.dataLabels(e) + "<br/>" : z, s += null === f || q ? z : "<b>High:</b> " + C.dataLabels(f) + "<br/>", s += null === g || q ? z : "<b>Low:</b> " + C.dataLabels(g) +
                    "<br/>", s += null !== n ? "<b>Volume:</b> " + b.dataLabels(n) : z)) : s = z;
                w.toolText = s;
                return w
            },
            pointValueWatchers: function(b, d, a, c, e, f) {
                var p = b[Y];
                f = g(f, 0);
                null !== e && (b = p.volume, b || (b = p.volume = {}), b.max = b.max > e ? b.max : e, b.min = b.min < e ? b.min : e);
                null !== a && (b = p[f], !b.max && 0 !== b.max && (b.max = a), !b.min && 0 !== b.min && (b.min = a), b.max = Xa(b.max, a), b.min = J(b.min, a));
                null !== c && (b = p[f], !b.max && 0 !== b.max && (b.max = c), !b.min && 0 !== b.min && (b.min = c), b.max = Xa(b.max, c), b.min = J(b.min, c));
                null !== d && (a = p.x, a.max = a.max > d ? a.max : d, a.min =
                    a.min < d ? a.min : d)
            },
            spaceManager: function(b, d, a, c) {
                var e = b[Y], f, p = d.chart, n = b.chart, t, l, r = this.smartLabel || e.smartLabel, k = e.x.min, m = e.x.max, s, C, q = c - (e.marginBottomExtraSpace + 0 + n.marginTop), G = b.yAxis, x;
                l = G.length;
                var w, u, D = 0, v = 0, y = 8, E, $ = Xa(g(n.plotBorderWidth, 1), 0), R;
                this.base.spaceManager.apply(this, arguments);
                b.xAxis.min = k - .5;
                b.xAxis.max = m + .5;
                b.yAxis[0].title.centerYAxis = b.yAxis[1].title.centerYAxis = !0;
                if (b.subCharts) {
                    k = b.subCharts[0];
                    D = b.xAxis.showLine ? b.xAxis.lineThickness : $;
                    R = c - (n.marginTop + n.marginBottom +
                        D + $);
                    v = k.chart.volumeHeightPercent;
                    m = (e.horizontalAxisHeight || 15) + $;
                    R = R * v / 100;
                    n.marginBottom += R + D + $;
                    l = H({}, b.xAxis);
                    v = 0;
                    for (y = b.xAxis.plotBands.length; v < y; v += 1)(f = b.xAxis.plotBands[v]) && f.label && f.label.text && (f.label.text = " "), (f = l.plotBands[v]) && f.label && f.label.y && (f.label.y = Fa(p.basefontsize, 10) + 4 + D);
                    v = 0;
                    for (y = l.plotLines.length; v < y; v += 1)(f = l.plotLines[v]) && f.label && f.label.text && (f.label.text = z);
                    k.yAxis && k.yAxis[0] && k.yAxis[0].title && k.yAxis[0].title.text && (k.yAxis[0].title.text = z);
                    k.xAxis = l;
                    l = h(d.chart.rotateyaxisname, "ccw");
                    l = l === Ja ? "none" : l;
                    r = G[1].title.rotation ? r.getSmartText(k.yAxis[1].title.text, "none" === l ? n.marginLeft - 10 : R, void 0, !0).text : r.getSmartText(k.yAxis[1].title.text, r.getOriSize(G[1].title.text).width, void 0, !0).text;
                    G = k.yAxis;
                    l = G.length;
                    y = v = D = 0;
                    for (w = l - 1; 0 <= w; w -= 1)
                        u = G[w], f = e[w], x = u.opposite, E = (x ? v : D) + y, l = h(d.chart.rotateyaxisname, x ? "cw" : "ccw"), l = l === Ja ? "none" : l, t = g(p.yaxisvaluespadding, p.labelypadding, 4), t < $ && (t = $), f.verticalAxisNamePadding = 10, f.verticalAxisValuesPadding =
                            t + (u.showLine ? u.lineThickness : 0), f.rotateVerticalAxisName = l, u.offset = E, x ? s = Wa(u, f, k, d, q, n.marginRight, !!x, 0, 0, v) : C = Wa(u, f, k, d, q, n.marginLeft, !!x, 0, 0, D);
                    G = b.yAxis;
                    k.yAxis[1].title = H({}, b.yAxis[1].title);
                    k.yAxis[1].title.style = b.orphanStyles.vyaxisname.style;
                    k.yAxis[1].title.text = r;
                    k.chart.left = 0;
                    k.chart.width = a;
                    k.chart.top = c - n.marginBottom + m;
                    k.chart.height = n.marginBottom - m;
                    s = Math.max(n.marginRight, s + n.spacingRight);
                    C = Math.max(n.marginLeft, C + n.spacingLeft);
                    k.chart.marginLeft = n.marginLeft = C;
                    k.chart.marginRight =
                        n.marginRight = s;
                    k.chart.marginTop = 5;
                    k.chart.marginBottom = n.marginBottom - (m + R);
                    b.yAxis.push(k.yAxis[0], k.yAxis[1]);
                    k.xAxis.startY = G[2].startY = G[3].startY = k.chart.top + k.chart.marginTop;
                    k.xAxis.endY = G[2].endY = G[3].endY = k.yAxis[0].startY + k.chart.height - k.chart.marginBottom;
                    k.series[0] && (k.series[0].yAxis = 3, b.series.push(k.series[0]));
                    b.xAxis = [b.xAxis, k.xAxis];
                    b.yAxis[2].title.centerYAxis = b.yAxis[3].title.centerYAxis = !0
                }
            },
            isDual: !0,
            numVDivLines: 0,
            defSetAdaptiveYMin: !0,
            divLineIsDashed: 1,
            isCandleStick: !0,
            defaultPlotShadow: 1,
            requiredAutoNumericLabels: 1
        }, q.scatterbase);
        q("kagi", {
            friendlyName: "Kagi Chart",
            standaloneInit: !0,
            stepLine: !0,
            creditLabel: !1,
            defaultSeriesType: "kagi",
            defaultZeroPlaneHighlighted: !1,
            setAdaptiveYMin: 1,
            canvasPadding: 15,
            isKagi: 1,
            rendererId: "kagi",
            pointValueWatcher: function(b, d, a) { null !== d && (b = b[Y], a = g(a, 0), b[a] || (b[a] = {}), a = b[a], this.maxValue = a.max = a.max > d ? a.max : d, this.minValue = a.min = a.min < d ? a.min : d) },
            point: function(b, d, a, c, e) {
                b = e.chart;
                var f = a.length,
                    p = 0,
                    n = e[Y].x,
                    t = e[Y].numberFormatter,
                    l = this.colorManager,
                    r,
                    k,
                    m,
                    s,
                    C,
                    q,
                    G,
                    x,
                    w,
                    u,
                    D,
                    v,
                    y,
                    E,
                    $,
                    R,
                    K,
                    Qa,
                    ca,
                    la,
                    M,
                    B,
                    L;
                x = I(h(c.linecolor, c.palettecolors, l.getColor("plotFillColor")));
                w = g(c.linealpha, 100);
                r = g(c.linethickness, 2);
                d.color = { FCcolor: { color: x, alpha: w } };
                ca = d.anchorShadow = g(c.anchorshadow, 0);
                d.lineWidth = r;
                d.step = this.stepLine;
                d.drawVerticalJoins = Boolean(g(c.drawverticaljoins, 1));
                G = g(c.drawanchors, c.showanchors);
                for (k = 0; k < f; k += 1)
                    s = a[k], s.vline || (r = t.getCleanValue(s.value), null != r && (m = g(s.showlabel, c.showlabels, 1), m = F(m ? da(s.label, s.name) :
                        z), p += 1, q = g(s.linealpha, w), C = { opacity: q / 100 }, u = g(s.anchorsides, c.anchorsides, 0), Qa = g(s.anchorstartangle, c.anchorstartangle, 90), y = g(s.anchorradius, c.anchorradius, this.anchorRadius, 3), v = I(h(s.anchorbordercolor, c.anchorbordercolor, x)), D = g(s.anchorborderthickness, c.anchorborderthickness, this.anchorBorderThickness, 1), E = I(h(s.anchorbgcolor, c.anchorbgcolor, l.getColor("anchorBgColor"))), $ = h(s.anchoralpha, c.anchoralpha, "100"), R = h(s.anchorbgalpha, c.anchorbgalpha, $), q = void 0 === G ? 0 !== q : !!G, la = Boolean(g(s.anchorshadow,
                        ca, 0)), M = h(s.anchorimageurl, c.anchorimageurl), B = h(s.anchorimagescale, c.anchorimagescale, 100), L = h(s.anchorimagealpha, c.anchorimagealpha, 100), K = this.pointHoverOptions(s, d, { plotType: "anchor", anchorBgColor: E, anchorAlpha: $, anchorBgAlpha: R, anchorAngle: Qa, anchorBorderThickness: D, anchorBorderColor: v, anchorBorderAlpha: $, anchorSides: u, anchorRadius: y, imageUrl: M, imageScale: B, imageAlpha: L, shadow: C }), d.data.push(H(this.getPointStub(s, r, m, e), {
                        y: r,
                        color: x,
                        shadow: C,
                        dashStyle: s.dashed,
                        valuePosition: h(s.valueposition,
                            b.valuePosition),
                        isDefined: !0,
                        marker: { enabled: !!q, shadow: la && { opacity: $ / 100 }, fillColor: { FCcolor: { color: E, alpha: R * $ / 100 + z } }, lineColor: { FCcolor: { color: v, alpha: $ } }, lineWidth: D, radius: y, startAngle: Qa, symbol: oa(u), imageUrl: M, imageScale: B, imageAlpha: L },
                        hoverEffects: K.enabled && K.options,
                        rolloverProperties: K.enabled && K.rolloverOptions
                    })), this.pointValueWatcher(e, r)));
                n.catCount = p;
                return d
            },
            postSeriesAddition: function(b, d) {
                var a = b.series[0],
                    c = d.chart,
                    e = d.data,
                    f = a && a.data,
                    p = f && f.length,
                    n = b[Y],
                    t = n.x,
                    n = n.axisGridManager,
                    l = b.xAxis,
                    r = !1,
                    k = 0,
                    m = .5,
                    s = g(c.reversalvalue, -1),
                    p = g(c.reversalpercentage, 5),
                    C = this.maxValue,
                    q = this.minValue,
                    G,
                    x,
                    w,
                    u,
                    D,
                    v,
                    y,
                    E,
                    $,
                    R,
                    K,
                    B,
                    ca,
                    la,
                    M,
                    J,
                    L = {};
                if (f && f.length) {
                    a.rallyColor = h(c.rallycolor, "FF0000");
                    a.rallyAlpha = g(c.rallyalpha, c.linealpha, 100);
                    a.declineColor = h(c.declinecolor, "0000FF");
                    a.declineAlpha = g(c.declinealpha, c.linealpha, 100);
                    a.rallyThickness = g(c.rallythickness, c.linethickness, 2);
                    D = g(c.rallydashlen, c.linedashlen, 5);
                    B = g(c.rallydashgap, c.linedashgap, 4);
                    a.declineThickness = g(c.declinethickness,
                        c.linethickness, 2);
                    ca = g(c.declinedashlen, c.linedashlen, 5);
                    la = g(c.declinedashgap, c.linedashgap, 4);
                    a.lineDashed = { "true": g(c.rallydashed, c.linedashed, 0), "false": g(c.declinedashed, c.linedashed, 0) };
                    a.rallyDashed = g(c.rallydashed, c.linedashed, 0) ? xa(D, B, a.rallyThickness) : void 0;
                    a.declineDashed = g(c.declinedashed, c.linedashed, 0) ? xa(ca, la, a.declineThickness) : void 0;
                    a.canvasPadding = g(c.canvaspadding, this.canvasPadding, 15);
                    s = 0 < s ? s : p * (C - q) / 100;
                    C = f[0].y;
                    q = function(a, b) {
                        for (var c, d = 1, e = f[0].y; d < a;)
                            c = f[d].y, b ? c <=
                                e && (f[d].isDefined = !1) : c >= e && (f[d].isDefined = !1), d += 1;
                        f[0].vAlign = b ? Ba : Ia;
                        f[0].align = "center"
                    };
                    p = e && e.length;
                    for (la = ca = 0; la < p; la += 1)
                        if ((B = e[la]) && B.vline)ca && n.addVline(l, B, m, b);
                        else {
                            L = e[la];
                            J && (J = !1, m += .5);
                            if (ca && ($ = f[ca])) {
                                R = f[ca - 1];
                                $.vAlign = "middle";
                                $.align = ka;
                                $.showLabel = !1;
                                D = null;
                                u = $.y;
                                w = f[ca + 1] && f[ca + 1].y;
                                K = P(C - u);
                                r ? u < v && G ? G = !1 : u > y && !G && (G = !0) : (u > C && K > s ? (G = !0, v = C, y = null, r = x = !0, q(ca, G)) : u < C && K > s ? (G = !1, v = null, y = C, x = !1, r = !0, q(ca, G)) : (x = G = null, r = !1), S(R) && (R.isRally = G), null != G && (f[0].isRally = G));
                                $.isRally = G;
                                if (x && u < C || !x && u > C)D = C;
                                M = D ? D : u;
                                K = P(M - w);
                                w = null == x ? null : x ? M > w && K >= s : M < w && K >= s;
                                if (R && R.isShift)
                                    for (x ? (v = C, E = Ba) : x || (y = C, E = Ia), R = ca; 1 < R; R -= 1)
                                        if (f[R].y == C) {
                                            f[R].vAlign = E;
                                            f[R].align = "center";
                                            f[R].showLabel = !0;
                                            break
                                        }
                                w ? (k += 1, m += .5, J = !0, x = !x, $.isShift = !0, C = M, u = g(B.showlabel, c.showlabels, 1), u = F(u ? da(B.label, B.name) : z), n.addXaxisCat(l, k - 1, k - 1, u, B, {}, c)) : x && u > C || !x && u < C ? C = u : D = C;
                                $.plotValue = D;
                                $.objParams = { isRally: G, lastHigh: y, lastLow: v, isRallyInitialised: r }
                            }
                            ca += 1
                        }
                    u = g(L.showlabel, c.showlabels, 1);
                    u =
                        F(u ? da(L.label, L.name) : z);
                    n.addXaxisCat(l, k, k, u, L, {}, c);
                    a.shiftCount = t.catCount = k + 1
                }
            },
            xAxisMinMaxSetter: function(b, d, a) {
                var c = b[Y].x, e = d.chart;
                d = c.min = g(c.min, 0);
                var c = c.max = g(c.max, c.catCount - 1), f = b.xAxis, p = J(g(e.canvaspadding, 0), a / 2 - 10), h = p, t = g(e.maxhshiftpercent, 10), l = b.series[0];
                b = l && l.shiftCount;
                var e = g(e.canvaspadding, this.canvasPadding, 15), r = a - 2 * e;
                l && (h = l.xShiftLength = J(r / b, (0 >= t ? 10 : t) * r / 100), p = e + h / 2, h = a - (h * Xa(b - 1, 1) + p), c = Xa(c, 1));
                f.labels.enabled = !1;
                f.gridLineWidth = 0;
                f.alternateGridColor =
                    Ha;
                a = (a - (p + h)) / (c - d + 0);
                f.min = d - (0 + p / a);
                f.max = c + (0 + h / a)
            }
        }, q.linebase);
        Da = function(b, d, a) {
            this.nf = d;
            this.dataSeparator = a;
            this.method = (b || z).toLowerCase().replace(/\s/g, "")
        };
        Da.prototype = {
            setArray: function(b) {
                var d = this.nf, a = this.dataSeparator, c = 0;
                !b && (b = z);
                for (b = this.dataLength = (a = b.replace(/\s/g, z).split(a)) && a.length; b--;)c += a[b] = d.getCleanValue(a[b]);
                a && a.sort(function(a, b) { return a - b });
                this.values = a;
                this.mean = c / this.dataLength;
                this.getFrequencies()
            },
            getQuartiles: function() {
                var b = this.values,
                    d = this.dataLength,
                    a = d % 2,
                    c,
                    e;
                switch (this.method) {
                case "tukey":
                    a ? (a = (d + 3) / 4, d = (3 * d + 1) / 4) : (a = (d + 2) / 4, d = (3 * d + 2) / 4);
                    break;
                case "mooremccabe":
                    a ? (a = (d + 1) / 4, d = 3 * a) : (a = (d + 2) / 4, d = (3 * d + 2) / 4);
                    break;
                case "freundperles":
                    a = (d + 3) / 4;
                    d = (3 * d + 1) / 4;
                    break;
                case "mendenhallsincich":
                    a = ma((d + 1) / 4);
                    d = ma(3 * a);
                    break;
                default:
                    a = (d + 1) / 4, d = 3 * a
                }
                a -= 1;
                d -= 1;
                c = $b(a);
                e = $b(d);
                a = a - c ? b[c] + (b[uc(a)] - b[c]) * (a - c) : b[a];
                b = d - e ? b[e] + (b[uc(d)] - b[e]) * (d - e) : b[d];
                return this.quartiles = { q1: a, q3: b }
            },
            getMinMax: function() {
                var b = this.values;
                return{
                    min: b[0],
                    max: b[this.dataLength -
                        1]
                }
            },
            getMean: function() { return this.mean },
            getMD: function() {
                for (var b = this.mean, d = this.frequencies, a = d.length, c, e = 0; a--;)c = d[a], e += c.frequency * P(c.value - b);
                return e / this.dataLength
            },
            getSD: function() {
                for (var b = this.mean, d = this.values, a = this.dataLength, c = a, e = 0; a--;)e += Z(d[a] - b, 2);
                return Ac(e) / c
            },
            getQD: function() { return .5 * (this.quartiles.q3 - this.quartiles.q1) },
            getFrequencies: function() {
                var b = [], d = this.dataLength, a = this.values, c = 0, e, f, g;
                for (g = 0; g < d; g += 1)
                    c += e = a[g], S(b[g]) ? b[g].frequency += 1 : (f = {}, f.value =
                        e, f.frequency = 1, b[g] = f);
                this.sum = c;
                this.frequencies = b
            },
            getMedian: function() {
                var b = this.dataLength, d = .5 * b, a = this.values;
                return 0 === b % 2 ? (a[d] + a[d - 1]) / 2 : a[$b(d)]
            }
        };
        Da.prototype.constructor = Da;
        q("boxandwhisker2d", {
            friendlyName: "Box and Whisker Chart",
            standaloneInit: !0,
            creditLabel: !1,
            defaultSeriesType: "boxandwhisker2d",
            chart: q.errorbar2d.chart,
            drawErrorValue: q.errorbar2d.drawErrorValue,
            decimals: 2,
            maxColWidth: 9E3,
            useErrorAnimation: 1,
            avoidCrispError: 0,
            tooltipsepchar: ": ",
            rendererId: "boxandwhisker",
            fireGroupEvent: !0,
            point: function(b, d, a, c, e, f, p, n, t) {
                var l = e[Y],
                    r = g(c.ignoreemptydatasets, 0),
                    k = l.numberFormatter,
                    m = e.chart.useRoundEdges,
                    s = g(c.showshadow, 1),
                    C = this.colorManager,
                    q = "," + (g(c.useplotgradientcolor, 0) ? Jb(c.plotgradientcolor, C.getColor("plotGradientColor")) : z),
                    G = 2 * p,
                    x = g(c.plotborderthickness, 1),
                    w = h(c.plotbordercolor, C.getColor("plotBorderColor")).split(",")[0],
                    u = h(c.plotborderalpha, "100"),
                    D = "0" == c.showplotborder ? "0" : u,
                    v = g(a.dashed, c.plotborderdashed, 0),
                    fb = g(a.dashlen, c.plotborderdashlen, 5),
                    E = g(a.dashgap, c.plotborderdashgap,
                        4),
                    $ = h(a.upperboxcolor, c.upperboxcolor, C.getPlotColor(G)),
                    R = h(a.lowerboxcolor, c.lowerboxcolor, C.getPlotColor(G + 1)),
                    K = g(a.upperboxalpha, c.upperboxalpha),
                    Qa = g(a.lowerboxalpha, c.lowerboxalpha),
                    ca = h(a.upperwhiskercolor, c.upperwhiskercolor, w),
                    la = h(a.lowerwhiskercolor, c.lowerwhiskercolor, w),
                    M = g(a.upperwhiskeralpha, c.upperwhiskeralpha, c.plotborderalpha, "100"),
                    A = g(a.lowerwhiskeralpha, c.lowerwhiskeralpha, c.plotborderalpha, "100"),
                    L = g(a.upperwhiskerthickness, c.upperwhiskerthickness, x),
                    W = g(a.lowerwhiskerthickness,
                        c.lowerwhiskerthickness, x),
                    O = h(a.upperwhiskerdashed, c.upperwhiskerdashed, 0),
                    N = h(a.lowerwhiskerdashed, c.lowerwhiskerdashed, 0),
                    ia = h(a.upperwhiskerdashlen, c.upperwhiskerdashlen, 5),
                    X = h(a.lowerwhiskerdashlen, c.lowerwhiskerdashlen, 5),
                    Q = h(a.upperwhiskerdashgap, c.upperwhiskerdashgap, 4),
                    I = h(a.lowerwhiskerdashgap, c.lowerwhiskerdashgap, 4),
                    V = h(a.upperquartilecolor, c.upperquartilecolor, w),
                    Oa = h(a.lowerquartilecolor, c.lowerquartilecolor, w),
                    P = h(a.upperboxbordercolor, c.upperboxbordercolor, w),
                    Z = h(a.lowerboxbordercolor,
                        c.lowerboxbordercolor, w),
                    ba = h(a.mediancolor, c.mediancolor, w),
                    aa = h(a.upperquartilealpha, c.upperquartilealpha, m ? 0 : u),
                    U = h(a.lowerquartilealpha, c.lowerquartilealpha, m ? 0 : u),
                    da = h(a.upperboxborderalpha, c.upperboxborderalpha, m ? 0 : D),
                    ja = h(a.lowerboxborderalpha, c.lowerboxborderalpha, m ? 0 : D),
                    cb = h(a.medianalpha, c.medianalpha, u),
                    na = h(a.upperquartilethickness, c.upperquartilethickness, x),
                    pa = h(a.lowerquartilethickness, c.lowerquartilethickness, x),
                    mb = h(a.upperboxborderthickness, c.upperboxborderthickness, x),
                    va = h(a.lowerboxborderthickness,
                        c.lowerboxborderthickness, x),
                    ga = h(a.medianthickness, c.medianthickness, x),
                    ma = h(a.upperquartiledashed, c.upperquartiledashed, v),
                    ra = h(a.lowerquartiledashed, c.lowerquartiledashed, v),
                    wa = h(a.upperboxborderdashed, c.upperboxborderdashed, v),
                    zb = h(a.lowerboxborderdashed, c.lowerboxborderdashed, v),
                    bd = h(a.mediandashed, c.mediandashed, v),
                    qa = h(a.upperquartiledashlen, c.upperquartiledashlen, fb),
                    Cc = h(a.lowerquartiledashlen, c.lowerquartiledashlen, fb),
                    ha = h(a.upperboxborderdashlen, c.upperboxborderdashlen, fb),
                    ua = h(a.lowerboxborderdashlen,
                        c.lowerboxborderdashlen, fb),
                    ka = h(a.mediandashlen, c.mediandashlen, fb),
                    sa = h(a.upperquartiledashgap, c.upperquartiledashgap, E),
                    ta = h(a.lowerquartiledashgap, c.lowerquartiledashgap, E),
                    ya = h(a.upperboxborderdashgap, c.upperboxborderdashgap, E),
                    Da = h(a.lowerboxborderdashgap, c.lowerboxborderdashgap, E),
                    Ia = h(a.mediandashgap, c.mediandashgap, E),
                    Ba = {},
                    Ca = {},
                    Ea = {},
                    Ja = {},
                    Aa = {},
                    Fa = [],
                    Ga = [],
                    Ka = [],
                    La = [],
                    Na = [],
                    Ma = { polygon: "polygon", spoke: "spoke" },
                    Ra = Ma[h(a.meaniconshape, c.meaniconshape, "polygon").toLowerCase()] || "polygon",
                    Sa = g(a.meaniconradius, c.meaniconradius, 5),
                    Pa = g(a.meaniconsides, c.meaniconsides, 3),
                    Ta = h(a.meaniconcolor, c.meaniconcolor, "000000"),
                    Va = h(a.meaniconbordercolor, c.meaniconbordercolor, "000000"),
                    Wa = g(a.meaniconalpha, c.meaniconalpha, 100),
                    Ya = Ma[h(a.sdiconshape, c.sdiconshape, "polygon").toLowerCase()] || "polygon",
                    Za = g(a.sdiconradius, c.sdiconradius, 5),
                    ab = g(a.sdiconsides, c.sdiconsides, 3),
                    $a = h(a.sdiconcolor, c.sdiconcolor, "000000"),
                    bb = h(a.sdiconbordercolor, c.sdiconbordercolor, "000000"),
                    eb = g(a.sdiconalpha, c.sdiconalpha,
                        100),
                    db = Ma[h(a.mdiconshape, c.mdiconshape, "polygon").toLowerCase()] || "polygon",
                    hb = g(a.mdiconradius, c.mdiconradius, 5),
                    ib = g(a.mdiconsides, c.mdiconsides, 3),
                    jb = h(a.mdiconcolor, c.mdiconcolor, "000000"),
                    ob = h(a.mdiconbordercolor, c.mdiconbordercolor, "000000"),
                    tb = g(a.mdiconalpha, c.mdiconalpha, 100),
                    qb = Ma[h(a.qdiconshape, c.qdiconshape, "polygon").toLowerCase()] || "polygon",
                    rb = g(a.qdiconradius, c.qdiconradius, 5),
                    sb = g(a.qdiconsides, c.qdiconsides, 3),
                    pb = h(a.qdiconcolor, c.qdiconcolor, "000000"),
                    vb = h(a.qdiconbordercolor,
                        c.qdiconbordercolor, "000000"),
                    Eb = g(a.qdiconalpha, c.qdiconalpha, 100),
                    wb = Ma[h(a.outliericonshape, c.outliericonshape, "polygon").toLowerCase()] || "polygon",
                    yb = g(a.outliericonradius, c.outliericonradius, 5),
                    Gb = g(a.outliericonsides, c.outliericonsides, 3),
                    Hb = h(a.outliericoncolor, c.outliericoncolor, "000000"),
                    Kb = h(a.outliericonbordercolor, c.outliericonbordercolor, "000000"),
                    Rb = g(a.outliericonalpha, c.outliericonalpha, 100),
                    Ib = (1 - 2 * l.plotSpacePercent) / 2 * (-.5 + p),
                    Pb = g(c.reverselegend, 0),
                    Fb = Pb ? -1 : 1,
                    mc = d.legendIndex =
                        6 * p + (Pb ? 5 : 0),
                    ac = g(a.showmean, c.showmean, 0),
                    bc = g(a.showmd, c.showmd, 0),
                    cc = g(a.showsd, c.showsd, 0),
                    fc = g(a.showqd, c.showqd, 0),
                    $b = g(a.showalloutliers, c.showalloutliers, 0),
                    vc = g(c.outliersupperrangeratio, 0),
                    wc = g(c.outlierslowerrangeratio, 0),
                    dc = !1,
                    nc = Boolean(g(c.showdetailedlegend, 1)),
                    oc = l.tooltipSepChar,
                    Ub = !0,
                    kc = l.dataSeparator,
                    Sb = l.bwCalc,
                    gc = h(d.type, this.defaultSeriesType),
                    uc = e.plotOptions[gc] && e.plotOptions[gc].stacking,
                    ub,
                    Vb,
                    Dc,
                    Ec,
                    lc,
                    Nc,
                    Oc,
                    Pc,
                    Qc,
                    Rc,
                    Sc,
                    nb,
                    Lb,
                    Mb,
                    Nb,
                    Ob,
                    xc,
                    Fc,
                    Qb,
                    hc,
                    pc,
                    Tb,
                    ic,
                    Wb,
                    Xb,
                    Yb,
                    Gc,
                    Hc,
                    qc,
                    Ic,
                    T,
                    rc,
                    Zb,
                    sc,
                    jc,
                    Tc,
                    Jc,
                    gb,
                    Ua,
                    Uc,
                    tc,
                    Kc,
                    Ab,
                    Bb,
                    yc,
                    Lc,
                    Cb,
                    Db,
                    Mc,
                    Ac = function(a, b) { return a - b },
                    zc,
                    Vc,
                    Wc,
                    Xc,
                    Yc,
                    Zc;
                d.errorBarWidthPercent = g(a.whiskerslimitswidthratio, c.whiskerslimitswidthratio, 40);
                Kc = a.data;
                d.name = B(a.seriesname);
                uc || (d.columnPosition = g(t, n, p));
                d.errorBar2D = !0;
                if (0 === g(a.includeinlegend) || void 0 === d.name)Ub = d.showInLegend = !1;
                3 > Pa && (Pa = 3);
                xc = xb($.split(",")[0]);
                Fc = xb(R.split(",")[0]);
                d.color = { FCcolor: { color: xc + "," + xc + "," + Fc + "," + Fc, alpha: "100,100,100,100", angle: 90, ratio: "0,50,0,50" } };
                sc =
                    this.isBar;
                D = (jc = /3d$/.test(e.chart.defaultSeriesType)) ? c.showplotborder ? D : "0" : D;
                w = jc ? h(c.plotbordercolor, "#FFFFFF") : w;
                vc = 0 > vc ? 0 : vc;
                wc = 0 > wc ? 0 : wc;
                for (Yb = 0; Yb < f; Yb += 1) {
                    if (T = Kc && Kc[Yb])
                        T.value ? (Sb.setArray(T.value), Lc = Sb.getQuartiles(), Cb = Lc.q1, Db = Lc.q3, Mc = Sb.getMinMax(), Bb = Xb = Mc.min, Ab = Mc.max, yc = Sb.getMedian(), Lb = Sb.getMean(), Nb = Sb.getMD(), Mb = Sb.getSD(), Ob = Sb.getQD(), Wb = ic = Ab) : (Cb = k.getCleanValue(T.q1), Db = k.getCleanValue(T.q3), Bb = Xb = k.getCleanValue(T.min), Ab = k.getCleanValue(T.max), yc = k.getCleanValue(T.median),
                            Wb = ic = Ab, Lb = Ec = k.getCleanValue(T.mean), Nb = k.getCleanValue(T.md), Mb = k.getCleanValue(T.sd), Ob = k.getCleanValue(T.qd));
                    if (T && null != Cb && null != Db && null !== ic) {
                        dc = !0;
                        Ec = g(T.showmean, ac);
                        lc = g(T.showmd, bc);
                        Nc = g(T.showsd, cc);
                        Oc = g(T.showqd, fc);
                        Vb = l.oriCatTmp[Yb];
                        gb = this.getPointStub(e, c, a, T, Ab, Db, yc, Cb, Bb, Lb, Nb, Mb, Ob, Vb);
                        Ua = gb.toolText;
                        Ec ? (Pc = 1, nb = g(T.meaniconalpha, Wa), Ua = B(F(h(T.meantooltext, a.meantooltext, c.meantooltext))), Ua = void 0 !== Ua ? this.getTooltext(Ua, e, c, a, T, Ab, Bb, Cb, Db, Aa, Mb, Ob, Nb, Lb, Vb) : "<b>Mean" +
                            oc + "</b>" + k.dataLabels(Lb), Fa.push({ y: Lb, toolText: Ua, link: gb.link, marker: { enabled: !0, fillColor: y(h(T.meaniconcolor, Ta), nb), lineColor: y(h(T.meaniconbordercolor, Va), nb), radius: g(T.meaniconradius, Sa), symbol: oa(g(T.meaniconsides, Pa), "spoke" == h(T.meaniconshape, Ra)) } })) : Fa.push({ y: null });
                        lc ? (Qc = 1, nb = g(T.mdiconalpha, tb), Ua = B(F(h(T.mdtooltext, a.mdtooltext, c.mdtooltext))), Ua = void 0 !== Ua ? this.getTooltext(Ua, e, c, a, T, Ab, Bb, Cb, Db, Aa, Mb, Ob, Nb, Lb, Vb) : "<b>MD" + oc + "</b>" + k.dataLabels(Nb), Ga.push({
                            y: Nb,
                            toolText: Ua,
                            link: gb.link,
                            marker: { enabled: !0, fillColor: y(h(T.mdiconcolor, jb), nb), lineColor: y(h(T.mdiconbordercolor, bb), nb), radius: g(T.mdiconradius, hb), symbol: oa(g(T.mdiconsides, ib), "spoke" == h(T.mdiconshape, db)) }
                        })) : Ga.push({ y: null });
                        Nc ? (Rc = 1, nb = g(T.sdiconalpha, eb), Ua = B(F(h(T.sdtooltext, a.sdtooltext, c.sdtooltext))), Ua = void 0 !== Ua ? this.getTooltext(Ua, e, c, a, T, Ab, Bb, Cb, Db, Aa, Mb, Ob, Nb, Lb, Vb) : "<b>SD" + oc + "</b>" + k.dataLabels(Mb), Ka.push({
                            y: Mb,
                            toolText: Ua,
                            link: gb.link,
                            marker: {
                                enabled: !0,
                                fillColor: y(h(T.sdiconcolor, $a),
                                    nb),
                                lineColor: y(h(T.sdiconbordercolor, bb), nb),
                                radius: g(T.sdiconradius, Za),
                                symbol: oa(g(T.sdiconsides, ab), "spoke" == h(T.sdiconshape, Ya))
                            }
                        })) : Ka.push({ y: null });
                        Oc ? (Sc = 1, nb = g(T.qdiconalpha, Eb), Ua = B(F(h(T.qdtooltext, a.qdtooltext, c.qdtooltext))), Ua = void 0 !== Ua ? this.getTooltext(Ua, e, c, a, T, Ab, Bb, Cb, Db, Aa, Mb, Ob, Nb, Lb, Vb) : "<b>QD" + oc + "</b>" + k.dataLabels(Ob), La.push({
                            y: Ob,
                            toolText: Ua,
                            link: gb.link,
                            marker: {
                                enabled: !0,
                                fillColor: y(h(T.qdiconcolor, pb), nb),
                                lineColor: y(h(T.qdiconbordercolor, vb), nb),
                                radius: g(T.qdiconradius,
                                    rb),
                                symbol: oa(g(T.qdiconsides, sb), "spoke" == h(T.qdiconshape, qb))
                            }
                        })) : La.push({ y: null });
                        if (Qb = T.outliers) {
                            Qb = Qb.replace(/\s/g, z).split(kc);
                            for (hc = Qb.length; hc--;)Qb[hc] = k.getCleanValue(Qb[hc]);
                            Qb.sort(Ac);
                            hc = Qb.length;
                            for (pc = 0; pc < hc; pc += 1)
                                if (Tb = Qb[pc], $b && (Wb = Xa(ic, Tb), Xb = J(Bb, Tb)), nb = g(T.outliericonalpha, Rb), Tb > ic || Tb < Bb)
                                    Ua = B(F(h(T.outlierstooltext, a.outlierstooltext, c.outlierstooltext))), Ua = void 0 !== Ua ? this.getTooltext(Ua, e, c, a, T, Ab, Bb, Cb, Db, Aa, Mb, Ob, Nb, Lb, Vb, Tb) : "<b>Outlier" + oc + "</b>" + k.dataLabels(Tb),
                                        Na.push({ y: Tb, toolText: Ua, x: Yb, link: gb.link, marker: { enabled: !0, fillColor: y(h(T.outliericoncolor, Hb), nb), lineColor: y(h(T.outliericonbordercolor, Kb), nb), radius: g(T.outliericonradius, yb), symbol: oa(g(T.outliericonsides, Gb), "spoke" == h(T.outliericonshape, wb)) } })
                        }
                        $b || (Dc = Wb - Xb, Wb += Dc * vc, Xb -= Dc * wc);
                        Gc = h(T.upperboxcolor, $) + q;
                        Hc = h(T.lowerboxcolor, R) + q;
                        qc = h(T.upperboxalpha, K, c.upperboxalpha, c.plotfillalpha, "100") + z;
                        Ic = h(T.lowerboxalpha, Qa, c.lowerboxalpha, c.plotfillalpha, "100") + z;
                        rc = h(T.ratio, a.ratio, c.plotfillratio);
                        Zb = h(360 - c.plotfillangle, 90);
                        0 > ic && (Zb = 360 - Zb);
                        Uc = { opacity: qc / 100 };
                        tc = J(qc, D) + z;
                        Tc = ec(Gc, qc, rc, Zb, m, w, tc, sc, jc);
                        Jc = ec(Hc, Ic, rc, Zb, m, w, tc, sc, jc);
                        Ba = { value: Db, color: y(h(T.upperquartilecolor, V), g(T.upperquartilealpha, aa)), borderWidth: g(T.upperquartilethickness, na), dashStyle: g(T.upperquartiledashed, ma) ? xa(h(T.upperquartiledashlen, qa), h(T.upperquartiledashgap, sa), g(T.upperquartilethickness, na)) : void 0, displayValue: gb.displayValueQ3 };
                        Ca = {
                            value: Cb,
                            color: y(h(T.lowerquartilecolor, Oa), g(T.lowerquartilealpha,
                                U)),
                            borderWidth: g(T.lowerquartilethickness, pa),
                            dashStyle: g(T.lowerquartiledashed, ra) ? xa(h(T.lowerquartiledashlen, Cc), h(T.lowerquartiledashgap, ta), g(T.lowerquartilethickness, pa)) : void 0,
                            displayValue: gb.displayValueQ1
                        };
                        Ea = { color: y(h(T.upperboxbordercolor, P), g(T.upperboxborderalpha, da)), borderWidth: g(T.upperboxborderthickness, mb), dashStyle: g(T.upperboxborderdashed, wa) ? xa(h(T.upperboxborderdashlen, ha), h(T.upperboxborderdashgap, ya), g(T.upperboxborderthickness, mb)) : void 0 };
                        Ja = {
                            color: y(h(T.lowerboxbordercolor,
                                Z), g(T.lowerboxborderalpha, ja)),
                            borderWidth: g(T.lowerboxborderthickness, va),
                            dashStyle: g(T.lowerboxborderdashed, zb) ? xa(h(T.lowerboxborderdashlen, ua), h(T.lowerboxborderdashgap, Da), g(T.lowerboxborderthickness, va)) : void 0
                        };
                        Aa = { value: yc, color: y(h(T.mediancolor, ba), g(T.medianalpha, cb)), borderWidth: g(T.medianthickness, ga), dashStyle: g(T.mediandashed, bd) ? xa(h(T.mediandashlen, ka), h(T.mediandashgap, Ia), g(T.medianthickness, ga)) : void 0, displayValue: gb.displayValueMid };
                        zc = [];
                        S(Ab) && zc.push({
                            errorValue: Ab - Db,
                            toolText: gb.toolText,
                            link: gb.link,
                            errorBarColor: y(h(T.upperwhiskercolor, ca), g(T.upperwhiskeralpha, M)),
                            errorBarThickness: g(T.upperwhiskerthickness, L),
                            dashStyle: g(T.upperwhiskerdashed, O) ? xa(h(T.upperwhiskerdashlen, ia), h(T.upperwhiskerdashgap, Q), g(T.upperwhiskerthickness, L)) : void 0,
                            displayValue: gb.displayValueMax,
                            shadow: { opacity: s ? g(T.upperwhiskeralpha, M) / 250 : 0 }
                        });
                        S(Bb) && zc.push({
                            errorValue: -(Cb - Bb),
                            errorStartValue: Cb,
                            toolText: gb.toolText,
                            link: gb.link,
                            errorBarColor: y(h(T.lowerwhiskercolor, la), g(T.lowerwhiskeralpha, A)),
                            errorBarThickness: g(T.lowerwhiskerthickness,
                                W),
                            dashStyle: g(T.lowerwhiskerdashed, N) ? xa(h(T.lowerwhiskerdashlen, X), h(T.lowerwhiskerdashgap, I), g(T.lowerwhiskerthickness, W)) : void 0,
                            displayValue: gb.displayValueMin,
                            shadow: { opacity: s ? g(T.lowerwhiskeralpha, A) / 250 : 0 }
                        });
                        ub = this.pointHoverOptions(T, a, c, {
                            upperBoxColor: Gc,
                            upperBoxAlpha: qc,
                            upperBoxBorderColor: h(T.upperboxbordercolor, P),
                            upperBoxBorderAlpha: g(T.upperboxborderalpha, da),
                            upperBoxBorderThickness: Ea.borderWidth,
                            lowerBoxColor: Hc,
                            lowerBoxAlpha: Ic,
                            lowerBoxBorderColor: h(T.lowerboxbordercolor, Z),
                            lowerBoxBorderAlpha: g(T.lowerboxborderalpha,
                                ja),
                            lowerBoxBorderThickness: Ja.borderWidth,
                            upperQuartileColor: h(T.upperquartilecolor, V),
                            upperQuartileAlpha: g(T.upperquartilealpha, aa),
                            upperQuartileThickness: Ba.borderWidth,
                            lowerQuartileColor: h(T.lowerquartilecolor, Oa),
                            lowerQuartileAlpha: g(T.lowerquartilealpha, U),
                            lowerQuartileThickness: Ca.borderWidth,
                            upperWhiskerColor: h(T.upperwhiskercolor, ca),
                            upperWhiskerThickness: g(T.upperwhiskerthickness, L),
                            upperWhiskerAlpha: g(T.upperwhiskeralpha, M),
                            lowerWhiskerColor: h(T.lowerwhiskercolor, la),
                            lowerWhiskerAlpha: g(T.lowerwhiskeralpha,
                                A),
                            lowerWhiskerThickness: g(T.lowerwhiskerthickness, W),
                            medianColor: h(T.mediancolor, ba),
                            medianAlpha: g(T.medianalpha, cb),
                            medianThickness: g(T.medianthickness, ga)
                        });
                        ub.enabled && (ub.upperBox.fill = ea(ec(ub.upperBox.color, ub.upperBox.alpha, rc, Zb, m, w, tc, sc, jc)[0].FCcolor), delete ub.upperBox.color, delete ub.upperBox.alpha, ub.lowerBox.fill = ea(ec(ub.lowerBox.color, ub.lowerBox.alpha, rc, Zb, m, w, tc, sc, jc)[0].FCcolor), delete ub.lowerBox.color, delete ub.lowerBox.alpha);
                        d.data.push(H(gb, {
                            y: Db,
                            errorValue: zc,
                            shadow: Uc,
                            color: Tc[0],
                            toolText: gb.toolText,
                            lowerboxColor: Jc[0],
                            lowerboxBorderColor: Jc[1],
                            borderWidth: 0,
                            upperQuartile: Ba,
                            lowerQuartile: Ca,
                            upperBoxBorder: Ea,
                            lowerBoxBorder: Ja,
                            median: Aa,
                            hoverEffects: ub
                        }));
                        this.pointValueWatcher(e, Wb);
                        this.pointValueWatcher(e, Xb)
                    } else d.data.push({ y: null }), Ga.push({ y: null }), Ka.push({ y: null }), La.push({ y: null }), Fa.push({ y: null })
                }
                d.showInLegend = Ub && (dc || !r);
                d.legendFillColor = y(xc, 20);
                Vc = {
                    type: "line",
                    name: "Mean",
                    relatedSeries: "boxandwhisker",
                    data: Fa,
                    legendIndex: mc + Fb,
                    showInLegend: !!Pc &&
                        Ub && nc,
                    marker: { fillColor: y(Ta, 100), lineColor: y(Va, 100), radius: Sa, symbol: oa(Pa, "spoke" == Ra) },
                    color: g(c.drawmeanconnector, a.drawmeanconnector, 0) ? y(h(a.meanconnectorcolor, c.meanconnectorcolor, Ta), g(a.meanconnectoralpha, c.meanconnectoralpha, 100)) : Ha,
                    lineWidth: g(c.drawmeanconnector, a.drawmeanconnector, 0) ? g(a.meanconnectorthickness, c.meanconnectorthickness, 1) : 0,
                    shadow: 0,
                    legendFillColor: d.legendFillColor
                };
                Wc = {
                    type: "line",
                    name: "SD",
                    relatedSeries: "boxandwhisker",
                    data: Ka,
                    legendIndex: mc + 2 * Fb,
                    showInLegend: !!Rc &&
                        Ub && nc,
                    marker: { fillColor: y($a, 100), lineColor: y(bb, 100), radius: Za, symbol: oa(ab, "spoke" == Ya) },
                    color: g(c.drawsdconnector, a.drawsdconnector, 0) ? y(h(a.sdconnectorcolor, c.sdconnectorcolor, $a), g(a.sdconnectoralpha, c.sdconnectoralpha, 100)) : Ha,
                    lineWidth: g(c.drawsdconnector, a.drawsdconnector, 0) ? g(a.sdconnectorthickness, c.sdconnectorthickness, 1) : 0,
                    shadow: 0,
                    pointStart: Ib,
                    legendFillColor: d.legendFillColor
                };
                Xc = {
                    type: "line",
                    name: "MD",
                    relatedSeries: "boxandwhisker",
                    data: Ga,
                    legendIndex: mc + 3 * Fb,
                    showInLegend: !!Qc && Ub &&
                        nc,
                    marker: { fillColor: y(jb, 100), lineColor: y(ob, 100), radius: hb, symbol: oa(ib, "spoke" == db) },
                    color: g(c.drawmdconnector, a.drawmdconnector, 0) ? y(h(a.mdconnectorcolor, c.mdconnectorcolor, jb), g(a.mdconnectoralpha, c.mdconnectoralpha, 100)) : Ha,
                    lineWidth: g(c.drawmdconnector, a.drawmdconnector, 0) ? g(a.mdconnectorthickness, c.mdconnectorthickness, 1) : 0,
                    shadow: 0,
                    pointStart: Ib,
                    legendFillColor: d.legendFillColor
                };
                Yc = {
                    type: "line",
                    name: "QD",
                    relatedSeries: "boxandwhisker",
                    data: La,
                    legendIndex: mc + 4 * Fb,
                    showInLegend: !!Sc && Ub && nc,
                    marker: { fillColor: y(pb, 100), lineColor: y(vb, 100), radius: rb, symbol: oa(sb, "spoke" == qb) },
                    color: g(c.drawqdconnector, a.drawqdconnector, 0) ? y(h(a.qdconnectorcolor, c.qdconnectorcolor, pb), g(a.qdconnectoralpha, c.qdconnectoralpha, 100)) : Ha,
                    lineWidth: g(c.drawqdconnector, a.drawqdconnector, 0) ? g(a.qdconnectorthickness, c.qdconnectorthickness, 1) : 0,
                    shadow: 0,
                    pointStart: Ib,
                    legendFillColor: d.legendFillColor
                };
                Zc = {
                    type: "line",
                    name: "Outlier",
                    relatedSeries: "boxandwhisker",
                    showInLegend: !(!Na || !Na.length) && Ub && nc,
                    data: Na,
                    legendIndex: mc +
                        5 * Fb,
                    marker: { fillColor: y(Hb, 100), lineColor: y(Kb, 100), radius: yb, symbol: oa(Gb, "spoke" == wb) },
                    color: Ha,
                    lineWidth: 0,
                    shadow: 0,
                    pointStart: Ib,
                    legendFillColor: d.legendFillColor
                };
                e._meanDataArr.push(Vc);
                e._sdDataArr.push(Wc);
                e._mdDataArr.push(Xc);
                e._qdDataArr.push(Yc);
                e._outliers.push(Zc);
                return d
            },
            series: function(b, d, a) {
                var c = d.series, e = d._meanDataArr = [], f = d._sdDataArr = [], g = d._mdDataArr = [], n = d._qdDataArr = [], t = d._outliers = [], l = d[Y], r = d.yAxis[0], k = 2 * l.plotSpacePercent, m, s, C, u, G;
                l.dataSeparator = h(d.chart.dataseparator,
                    ya);
                l.bwCalc = new Da(b.chart.calculationmethod, l.numberFormatter, l.dataSeparator);
                q.multiseries.series.call(this, b, d, a);
                a = c && c.length;
                b = Xa(e.length, f.length, g.length, n.length, t.length, a);
                k = (1 - k) / a;
                l = r.min;
                G = r.max;
                d.series = c.concat(e, f, g, n, t);
                for (r = 0; r < a; r += 1)for (s = c[r], m = r, !s.relatedSeries && (s.relatedSeries = []), C = 0; 5 > C; C += 1)m += a, s.relatedSeries.push(m);
                for (C = r = 0; C < b; C += 1, r += 1)
                    if (c = (-.5 * (a - 1) + r) * k, e[r] && (e[r].pointStart = c), f[r] && (f[r].pointStart = c), n[r] && (n[r].pointStart = c), g[r] && (g[r].pointStart = c),
                        t[r] && (t[r].pointStart = c), m = (c = t[r]) && c.data)for (c = 0; c < m.length; c += 1)s = m[c], u = s.y, s.y = u > G || u < l ? null : u;
                delete d._meanDataArr;
                delete d._sdDataArr;
                delete d._mdDataArr;
                delete d._qdDataArr;
                delete d._outliers
            },
            getTooltext: function(b, d, a, c, e, f, g, h, t, l, r, k, m, s, C, q) {
                d = this.numberFormatter;
                return ab(b, [1, 2, 3, 4, 5, 6, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80], {
                    maxValue: f,
                    maxDataValue: d.dataLabels(f),
                    minValue: g,
                    minDataValue: d.dataLabels(g),
                    Q1: d.dataLabels(h),
                    unformattedQ1: h,
                    Q3: d.dataLabels(t),
                    unformattedQ3: t,
                    median: d.dataLabels(l),
                    unformattedMedian: l,
                    SD: d.dataLabels(r),
                    unformattedSD: r,
                    QD: d.dataLabels(k),
                    unformattedQD: k,
                    MD: d.dataLabels(m),
                    unformattedMD: m,
                    mean: d.dataLabels(s),
                    unformattedMean: s,
                    label: F(C),
                    yaxisName: F(a.yaxisname),
                    xaxisName: F(a.xaxisname),
                    formattedValue: d.dataLabels(q),
                    value: q
                }, { value: q }, a, c)
            },
            pointHoverOptions: function(b, d, a, c) {
                var e = g(b.showhovereffect, d.showhovereffect, a.plothovereffect, a.showhovereffect),
                    f = g(b.highlightonhover, d.highlightonhover, d.highlightplotonhover, a.highlightonhover,
                        a.highlightplotonhover, e),
                    p = {},
                    n = {},
                    t = {},
                    l = {},
                    r = {},
                    k = {},
                    m = {},
                    s = {},
                    C = {},
                    q;
                p.color = h(b.upperboxhovercolor, d.upperboxhovercolor, a.plotfillhovercolor, a.upperboxhovercolor);
                p.alpha = h(b.upperboxhoveralpha, d.upperboxhoveralpha, a.upperboxhoveralpha);
                m.color = h(b.upperboxborderhovercolor, d.upperboxborderhovercolor, a.upperboxborderhovercolor);
                m.alpha = h(b.upperboxborderhoveralpha, d.upperboxborderhoveralpha, a.upperboxborderhoveralpha);
                m.thickness = g(b.upperboxborderhoverthickness, d.upperboxborderhoverthickness,
                    a.upperboxborderhoverthickness);
                n.color = h(b.lowerboxhovercolor, d.lowerboxhovercolor, a.plotfillhovercolor, a.lowerboxhovercolor);
                n.alpha = h(b.lowerboxhoveralpha, d.lowerboxhoveralpha, a.lowerboxhoveralpha);
                s.color = h(b.lowerboxborderhovercolor, d.lowerboxborderhovercolor, a.lowerboxborderhovercolor);
                s.alpha = h(b.lowerboxborderhoveralpha, d.lowerboxborderhoveralpha, a.lowerboxborderhoveralpha);
                s.thickness = g(b.lowerboxborderhoverthickness, d.lowerboxborderhoverthickness, a.lowerboxborderhoverthickness);
                r.color =
                    h(b.upperwhiskerhovercolor, d.upperwhiskerhovercolor, a.upperwhiskerhovercolor);
                r.alpha = h(b.upperwhiskerhoveralpha, d.upperwhiskerhoveralpha, a.upperwhiskerhoveralpha);
                r.thickness = h(b.upperwhiskerhoverthickness, d.upperwhiskerhoverthickness, a.upperwhiskerhoverthickness);
                k.color = h(b.lowerwhiskerhovercolor, d.lowerwhiskerhovercolor, a.lowerwhiskerhovercolor);
                k.alpha = h(b.lowerwhiskerhoveralpha, d.lowerwhiskerhoveralpha, a.lowerwhiskerhoveralpha);
                k.thickness = h(b.lowerwhiskerhoverthickness, d.lowerwhiskerhoverthickness,
                    a.lowerwhiskerhoverthickness);
                t.color = h(b.upperquartilehovercolor, d.upperquartilehovercolor, a.upperquartilehovercolor);
                t.alpha = h(b.upperquartilehoveralpha, d.upperquartilehoveralpha, a.upperquartilehoveralpha);
                t.thickness = h(b.upperquartilehoverthickness, d.upperquartilehoverthickness, a.upperquartilehoverthickness);
                l.color = h(b.lowerquartilehovercolor, d.lowerquartilehovercolor, a.lowerquartilehovercolor);
                l.alpha = h(b.lowerquartilehoveralpha, d.lowerquartilehoveralpha, a.lowerquartilehoveralpha);
                l.thickness =
                    h(b.lowerquartilehoverthickness, d.lowerquartilehoverthickness, a.lowerquartilehoverthickness);
                C.color = h(b.medianhovercolor, d.medianhovercolor, a.medianhovercolor);
                C.alpha = h(b.medianhoveralpha, d.medianhoveralpha, a.medianhoveralpha);
                C.thickness = h(b.medianhoverthickness, d.medianhoverthickness, a.medianhoverthickness);
                b = !!h(p.color, p.alpha, m.color, m.alpha, m.thickness, n.color, n.alpha, s.color, s.thickness, s.alpha, r.color, r.alpha, r.thickness, k.color, k.alpha, k.thickness, t.color, t.alpha, t.thickness, l.color, l.alpha,
                    l.thickness, C.color, C.alpha, C.thickness, f);
                void 0 === e && void 0 === f && b && (f = 0);
                if (void 0 === e && b || e)
                    q = !0, p.color = h(p.color, f ? ga(c.upperBoxColor, 70) : c.upperBoxColor), p.alpha = h(p.alpha, c.upperBoxAlpha), n.color = h(n.color, f ? ga(c.lowerBoxColor, 70) : c.lowerBoxColor), n.alpha = h(n.alpha, c.lowerBoxAlpha), m.color = h(m.color, c.upperBoxBorderColor), m.alpha = g(m.alpha, c.upperBoxBorderAlpha), m.stroke = y(m.color, m.alpha), m["stroke-width"] = g(m.thickness, c.upperBoxBorderThickness), delete m.color, delete m.alpha, delete m.thickness,
                        s.color = h(s.color, c.lowerBoxBorderColor), s.alpha = h(s.alpha, c.lowerBoxBorderAlpha), s.stroke = y(s.color, s.alpha), s["stroke-width"] = g(s.thickness, c.lowerBoxBorderThickness), delete s.color, delete s.alpha, delete s.thickness, r.color = h(r.color, c.upperWhiskerColor, 70), r.alpha = h(r.alpha, c.upperWhiskerAlpha), r.stroke = y(r.color, r.alpha), r["stroke-width"] = h(r.thickness, c.upperWhiskerThickness), delete r.color, delete r.alpha, delete r.thickness, k.color = h(k.color, c.lowerWhiskerColor, 70), k.alpha = h(k.alpha, c.lowerWhiskerAlpha),
                        k.stroke = y(k.color, k.alpha), k["stroke-width"] = h(k.thickness, c.lowerWhiskerThickness), delete k.color, delete k.alpha, delete k.thickness, t.color = h(t.color, c.upperQuartileColor, 70), t.alpha = h(t.alpha, c.upperQuartileAlpha), t.stroke = y(t.color, t.alpha), t["stroke-width"] = h(t.thickness, c.upperQuartileThickness), delete t.color, delete t.alpha, delete t.thickness, l.color = h(l.color, c.lowerQuartileColor, 70), l.alpha = h(l.alpha, c.lowerQuartileAlpha), l.stroke = y(l.color, l.alpha), l["stroke-width"] = h(l.thickness, c.lowerQuartileThickness),
                        delete l.color, delete l.alpha, delete l.thickness, C.color = h(C.color, c.medianColor, 70), C.alpha = h(C.alpha, c.medianAlpha), C.stroke = y(C.color, C.alpha), C["stroke-width"] = h(C.thickness, c.medianThickness), delete C.color, delete C.alpha, delete C.thickness;
                return{ enabled: q, upperBox: p, upperBoxBorder: m, lowerBox: n, lowerBoxBorder: s, upperQuartile: t, lowerQuartile: l, upperWhisker: r, lowerWhisker: k, median: C }
            },
            getPointStub: function(b, d, a, c, e, f, p, n, t, l, r, k, m, s) {
                var C = z,
                    C = b[Y],
                    q = C.tooltipSepChar,
                    u = this.numberFormatter,
                    x =
                        g(c.showvalue, a.showvalues, d.showvalues, 1),
                    w = { "true": u.dataLabels(e), "false": z },
                    v = { "true": u.dataLabels(f), "false": z },
                    D = { "true": u.dataLabels(p), "false": z },
                    y = { "true": u.dataLabels(n), "false": z },
                    u = { "true": u.dataLabels(t), "false": z };
                C.showTooltip ? (C = B(F(h(c.tooltext, a.plottooltext, C.tooltext))), C = void 0 !== C ? this.getTooltext(C, b, d, a, c, e, t, n, f, p, k, m, r, l, s) : "<b>Maximum" + q + "</b>" + w[!0] + "<br/><b>Q3" + q + "</b>" + v[!0] + "<br/><b>Median" + q + "</b>" + D[!0] + "<br/><b>Q1" + q + "</b>" + y[!0] + "<br/><b>Minimum" + q + "</b>" + u[!0]) :
                    C = z;
                return{ toolText: C, link: h(c.link), categoryLabel: s, displayValueMax: w[!(!x || !g(c.showmaxvalue, a.showmaxvalues, d.showmaxvalues, 1))], displayValueMid: D[!(!x || !g(c.showmedianvalue, a.showmedianvalues, d.showmedianvalues, 1))], displayValueMin: u[!(!x || !g(c.showminvalue, a.showminvalues, d.showminvalues, 1))], displayValueQ3: v[!(!x || !g(c.showq3value, a.showq3values, d.showq3values, 0))], displayValueQ1: y[!(!x || !g(c.showq1value, a.showq1values, d.showq1values, 0))] }
            }
        }, q.multiseries);
        q("heatmap", {
            friendlyName: "Heatmap Chart",
            standaloneInit: !0,
            creditLabel: !1,
            defaultSeriesType: "heatmap",
            tooltipsepchar: ": ",
            tooltipConstraint: "chart",
            rendererId: "heatmap",
            series: function(b, d, a) {
                var c = b.chart,
                    e = d.chart,
                    f = d[Y],
                    p = this.colorManager,
                    n = d.series,
                    t = this.numberFormatter,
                    l = b.rows && b.rows.row,
                    r = l && l.length,
                    k = b.columns && b.columns.column,
                    m = k && k.length,
                    s = b.dataset,
                    C = s && s.data,
                    q = b.colorrange || {},
                    G = f.mapByPercent = g(q.mapbypercent, 0),
                    x = f.mapByCategory = g(c.mapbycategory, 0),
                    q = !x && g(q.gradient, 0),
                    w = h(c.plotfillalpha, 100),
                    v = g(c.showlabels, c.showlabel,
                        1),
                    D = g(c.showplotborder, 1),
                    J = D ? g(c.plotborderthickness, 1) : 0,
                    p = h(c.plotbordercolor, p.getColor("plotBorderColor")),
                    D = h(c.plotborderalpha, D ? 95 : 0).toString(),
                    p = y(p, D),
                    D = g(c.plotborderdashed, 0),
                    A = g(c.plotborderdashlen, 5),
                    C = g(c.plotborderdashgap, 4),
                    A = D ? xa(A, C, J) : void 0,
                    E = u.colorRange,
                    $ = 0,
                    R = 0,
                    K = 0,
                    Qa = 0,
                    ca = f.rowIdObj = {},
                    la = f.columnIdObj = {},
                    M = [],
                    D = [],
                    I = 0,
                    L = [],
                    W,
                    O,
                    N,
                    ia,
                    X,
                    Q,
                    ea,
                    V,
                    Oa;
                e.showHoverEffect = g(c.showhovereffect, 1);
                q && (d.legend.type = "gradient");
                d.legend.enabled = Boolean(g(c.showlegend, 1));
                for (e = 0; e < r; e +=
                    1)O = l[e], W = O.id, S(W) && W !== z && ($ += 1, ca[W.toLowerCase()] = { index: $, label: g(O.showlabel, c.showyaxislabels, c.showyaxisnames, v) ? h(O.label, O.name, W) : z });
                for (e = 0; e < m; e += 1)N = k[e], l = N.id, S(l) && l !== z && (la[l.toLowerCase()] = { index: R, label: g(N.showlabel, c.showxaxislabels, c.showxaxisnames, v) ? h(N.label, N.name, l) : z }, R += 1);
                ea = 0;
                for (V = s && s.length; ea < V; ea += 1)
                    for (C = s[ea] && s[ea].data, e = 0, Oa = C && C.length; e < Oa; e += 1)
                        if (k = C[e], Q = t.getCleanValue(k.value), null !== Q || x)
                            W = B(k.rowid, k.rowids), O = B(W, z).toLowerCase(), l = B(k.columnid,
                                k.columnids), N = B(l, z).toLowerCase(), M.push(Q), S(X) || S(ia) || !S(Q) || (ia = X = Q), X > Q && (X = Q), ia < Q && (ia = Q), !S(O) || S(ca[O]) || r || (K += 1, ca[O] = { index: K, label: W }), !S(N) || S(la[N]) || m || (la[N] = { index: Qa, label: l }, Qa += 1), O = ca[O], N = la[N], O && N && (S(L[O.index]) || (L[O.index] = []), L[O.index][N.index] ? D[L[O.index][N.index] - 1] = {
                                rowId: W,
                                columnId: l,
                                categoryId: h(k.colorrangelabel, k.categoryid, k.categoryname, k.category),
                                tlLabel: F(h(k.tllabel, k.ltlabel)),
                                trLabel: F(h(k.trlabel, k.rtlabel)),
                                blLabel: F(h(k.bllabel, k.lblabel)),
                                brLabel: F(h(k.brlabel,
                                    k.rblabel)),
                                rowLabel: O.label,
                                columnLabel: N.label,
                                setColor: k.color,
                                setAlpha: h(k.alpha, w),
                                setShowLabel: g(k.showlabel, k.showname, v),
                                colorRangeLabel: k.colorrangelabel,
                                displayValue: k.displayvalue,
                                tooltext: k.tooltext,
                                showvalue: k.showvalue,
                                link: k.link,
                                hoverColor: h(k.hovercolor, c.hovercolor, c.plotfillhovercolor),
                                hoverAlpha: g(k.hoveralpha, c.hoveralpha, c.plotfillhoveralpha),
                                index: I,
                                value: Q,
                                y: O.index,
                                x: N.index,
                                _value: k.value,
                                _cleanValue: Q
                            } : (I += 1, D.push({
                                rowId: W,
                                columnId: l,
                                categoryId: h(k.colorrangelabel, k.categoryid,
                                    k.categoryname, k.category),
                                tlLabel: F(h(k.tllabel, k.ltlabel)),
                                trLabel: F(h(k.trlabel, k.rtlabel)),
                                blLabel: F(h(k.bllabel, k.lblabel)),
                                brLabel: F(h(k.brlabel, k.rblabel)),
                                rowLabel: O.label,
                                columnLabel: N.label,
                                setColor: k.color && k.color.replace(sb, Na),
                                setAlpha: h(k.alpha, w),
                                setShowLabel: g(k.showlabel, k.showname, v),
                                colorRangeLabel: k.colorrangelabel,
                                displayValue: k.displayvalue,
                                tooltext: k.tooltext,
                                showvalue: k.showvalue,
                                link: k.link,
                                hoverColor: h(k.hovercolor, c.hovercolor, c.plotfillhovercolor),
                                hoverAlpha: g(k.hoveralpha,
                                    c.hoveralpha, c.plotfillhoveralpha),
                                index: I,
                                value: Q,
                                y: O.index,
                                x: N.index,
                                _value: k.value,
                                _cleanValue: Q
                            }), L[O.index][N.index] = I));
                if (D.length) {
                    f.rowCount = $ = Xa($, K);
                    f.columnCount = Xa(R, Qa);
                    for (e in ca)ca[e].index = $ - ca[e].index + 1;
                    f.minHeatValue = X;
                    f.maxHeatValue = ia;
                    r = ia - X;
                    G = G && !x;
                    d.colorRange = new E({ colorRange: b.colorrange, dataMin: X, dataMax: ia, sortLegend: g(c.autoorderlegendicon, c.autoorderlegendicon, 0), mapByCategory: x, defaultColor: "cccccc", numberFormatter: t });
                    if (q)
                        n.push({
                            data: [],
                            hoverEffects: this.parseSeriesHoverOptions(b,
                                d, s, a),
                            borderWidth: J,
                            borderColor: p,
                            dashStyle: A
                        });
                    else for (t = (c = d.colorRange.colorArr) && c.length, e = 0; e < t; e += 1)ia = c[e], S(ia.code) && n.push({ data: [], hoverEffects: this.parseSeriesHoverOptions(b, d, s, a), name: h(ia.label, ia.name), borderWidth: J, borderColor: p, color: xb(ia.code), dashStyle: A });
                    n.length || n.push({ data: [], showInLegend: !1 });
                    for (e = 0; e < D.length; e += 1)
                        k = D[e], G && (k.value = ma((k.value - X) / r * 1E4) / 100), a = d.colorRange.getColorObj(x ? k.categoryId : k.value), a.outOfRange || (k.y = f.rowCount - k.y + 1, k.color = y(h(k.setColor,
                            a.code), h(k.setAlpha, w)), k.hoverColor = y(h(k.hoverColor, k.setColor, a.code), g(k.hoverAlpha, 25)), k = H(k, this.getPointStub(k, k.value, z, d, b)), q ? n[0].data.push(k) : n[a.seriesIndex] && n[a.seriesIndex].data.push(k))
                } else d.series = [];
                this.configureAxis(d, b)
            },
            getPointStub: function(b, d, a, c, e) {
                a = c[Y];
                var f = e.chart, p = a.tooltipSepChar, n = a.mapByCategory;
                e = a.mapByPercent && !n;
                var t = this.numberFormatter, l = b._cleanValue;
                c = t.percentValue(d);
                d = null === l ? d : t.dataLabels(l);
                var r = B(F(h(b.tooltext, a.tooltext))),
                    t = B(F(b.displayValue)),
                    k = n ? t : h(t, d),
                    m = g(b.showvalue, a.showValues),
                    s = B(f.tltype, z),
                    C = B(f.trtype, z),
                    q = B(f.bltype, z),
                    u = B(f.brtype, z),
                    n = b.tlLabel,
                    l = b.trLabel,
                    x = b.blLabel,
                    w = b.brLabel,
                    v;
                s !== z && (s = "<b>" + s + p + "</b>");
                C !== z && (C = "<b>" + C + p + "</b>");
                q !== z && (q = "<b>" + q + p + "</b>");
                u !== z && (u = "<b>" + u + p + "</b>");
                a = a.showTooltip ? void 0 !== r ? ab(r, [1, 2, 5, 6, 7, 14, 93, 94, 95, 96, 97, 98, 112, 113, 114, 115, 116, 117], { formattedValue: d, percentValue: e ? c : z, yaxisName: F(f.yaxisname), xaxisName: F(f.xaxisname) }, { value: b._value, displayvalue: b.displayValue }, f, b) : k === z ?
                    !1 : (e ? "<b>Value" + p + "</b>" + d + "<br/><b>Percentage" + p + "</b>" + c : k) + (b.tlLabel !== z ? "<br/>" + (s + b.tlLabel) : z) + (b.trLabel !== z ? "<br/>" + C + b.trLabel : z) + (b.blLabel !== z ? "<br/>" + q + b.blLabel : z) + (b.brLabel !== z ? "<br/>" + u + b.brLabel : z) : z;
                m ? v = void 0 !== t ? t : e ? c : d : n = l = x = w = v = z;
                b = h(b.link);
                return{ displayValue: v, toolText: a, link: b, tlLabel: n, trLabel: l, blLabel: x, brLabel: w }
            },
            configureAxis: function(b, d) {
                var a = b[Y],
                    c = d.chart,
                    e = b.yAxis[0],
                    f = b.xAxis,
                    p = a.rowCount,
                    n = a.columnCount,
                    t = a.axisGridManager,
                    l = a.rowIdObj,
                    r = a.columnIdObj,
                    k = this.colorManager,
                    m = y(h(c.vdivlinecolor, c.divlinecolor, k.getColor("divLineColor")), g(c.vdivlinealpha, c.divlinealpha, k.getColor("divLineAlpha"))),
                    s = g(c.vdivlinethickness, c.divlinethickness, 1),
                    q = g(c.vdivlinedashed, c.vdivlineisdashed, c.divlinedashed, c.divlineisdashed, 0) ? xa(g(c.vdivlinedashlen, c.divlinedashlen, 4), g(c.vdivlinedashgap, c.divlinedashgap, 2), s) : void 0,
                    u = y(h(c.hdivlinecolor, c.divlinecolor, k.getColor("divLineColor")), g(c.hdivlinealpha, c.divlinealpha, k.getColor("divLineAlpha"))),
                    G = g(c.hdivlinethickness, c.divlinethickness,
                        1),
                    x = g(c.hdivlinedashed, c.hdivlineisdashed, c.divlinedashed, c.divlineisdashed, 0) ? xa(g(c.hdivlinedashlen, c.divlinedashlen, 4), g(c.hdivlinedashgap, c.divlinedashgap, 2), s) : void 0,
                    w,
                    v;
                e.min = 0;
                e.max = p;
                for (v in l)w = l[v], k = w.index, w = w.label, t.addAxisGridLine(e, k + -.5, w, .1, void 0, Ha, 1), k < p && e.plotBands.push({ isTrend: !0, color: u, value: k, width: G, dashStyle: x, zIndex: 3 });
                e.labels.enabled = !1;
                e.gridLineWidth = 0;
                e.alternateGridColor = Ha;
                e.title.text = F(c.yaxisname);
                f.min = -.5;
                f.max = e = n + -.5;
                f.opposite = g(c.placexaxislabelsontop,
                    0);
                a.x.catCount = n;
                for (v in r)a = r[v], k = a.index, w = a.label, t.addXaxisCat(f, k, 1, w, a, {}, c), k -= -.5, k < e && f.plotBands.push({ isTrend: !0, color: m, value: k, width: s, dashStyle: q, zIndex: 3 });
                f.labels.enabled = !1;
                f.gridLineWidth = 0;
                f.alternateGridColor = Ha;
                f.title.text = F(c.xaxisname)
            },
            xAxisMinMaxSetter: function() {},
            placeLegendBlockRight: function() { return"gradient" === arguments[0].legend.type ? u.placeGLegendBlockRight ? u.placeGLegendBlockRight.apply(this, arguments) : 0 : u.placeLegendBlockRight.apply(this, arguments) },
            placeLegendBlockBottom: function() {
                return"gradient" ===
                    arguments[0].legend.type ? u.placeGLegendBlockBottom ? u.placeGLegendBlockBottom.apply(this, arguments) : 0 : u.placeLegendBlockBottom.apply(this, arguments)
            }
        }, q.column2dbase);
        q("renderer.multiaxisline", {
            legendClick: function(b, d, a) {
                var c = this.options.series, e = this.yAxis[c[b.index].yAxis], f = e.axisData._relatedSeries, g = f.length, h = !1;
                q["renderer.cartesian"].legendClick.call(this, b, d, a);
                if (!a) {
                    for (; g-- && !(h = c[f[g]].visible););
                    e.checkBox.element.checked = h
                }
            }
        }, q["renderer.cartesian"]);
        q("renderer.candlestick", {
                drawPlotCandlestickbar: function(b,
                    d) {
                    var a = b.data, c = a.length, e = b.items, f = b.graphics = [], h = this.paper, n = this.layers, t = this.definition.chart, l = this.options.plotOptions.series, r = this.xAxis[d.xAxis || 0], k = this.yAxis[d.yAxis || 0], m = d.numColumns || 1, s = d.columnPosition || 0, q = !1 === d.visible ? "hidden" : "visible", u = r.getAxisPosition(0), u = r.getAxisPosition(1) - u, G = l.groupPadding, x = l.maxColWidth, t = (1 - .01 * (t && t.plotspacepercent)) * u || J(u * (1 - 2 * G), x * m), m = t / m * s - t / 2, w, v, D, z, y, G = n.dataset = n.dataset || h.group("dataset-orphan");
                    G.column = G.column || h.group("columns",
                        G);
                    for (n = 0; n < c; n += 1) {
                        s = a[n];
                        u = s.y;
                        w = null;
                        if (null === u) {
                            if (x = e[n])w = x.graphic, w.attr({ height: 0 })
                        } else
                            x = g(s.x, n), t = s.link, x = r.getAxisPosition(x), w = s.previousY, v = k.getAxisPosition(w), w = k.getAxisPosition(u), D = k.getAxisPosition(s.high), z = k.getAxisPosition(s.low), P(w - v), y = m, v = ["M", x, z, "L", x, D, "M", x, w, "L", x + y, w, "M", x, v, "L", x - y, v], (x = e[n]) || (x = e[n] = { index: n, value: u, graphic: h.path(v, G), dataLabel: null, tracker: null }), w = x.graphic, w.attr({
                                path: v,
                                fill: ea(s.color),
                                stroke: ea(s.borderColor),
                                "stroke-width": s.borderWidth,
                                "stroke-dasharray": s.dashStyle,
                                "stroke-linecap": "round",
                                "stroke-linejoin": "round",
                                "shape-rendering": "crisp",
                                cursor: t ? "pointer" : "",
                                visibility: q
                            }).shadow(l.shadow || s.shadow), this.drawTracker && this.drawTracker.call(this, b, d, n);
                        w && f.push(w);
                        this.drawTracker && this.drawTracker.call(this, b, d, n)
                    }
                    b.visible = !1 !== d.visible;
                    return b
                },
                drawCanvas: function() {
                    q["renderer.cartesian"].drawCanvas.call(this, arguments);
                    if (this.options.subCharts && this.options.subCharts[0]) {
                        var b = this.options,
                            b = (b.subCharts && b.subCharts[0]).chart ||
                            {},
                            d = this.paper,
                            a = this.elements,
                            c = a.volumeCanvas,
                            e = b.marginTop + b.top,
                            f = b.left = b.marginLeft,
                            h = b.width - b.marginLeft - b.marginRight,
                            n = b.height - b.marginBottom,
                            t = g(b.plotBorderRadius, 0),
                            l = b.plotBorderWidth,
                            r = b.plotBackgroundColor,
                            k = .5 * l,
                            m = b.plotBorderColor,
                            s = this.layers.canvas;
                        c || (a.volumeCanvas = d.rect(f - k, e - k - 1, h + l, n + l, t, s).attr({ fill: ea(r), "stroke-width": l, stroke: m, "stroke-linejoin": 2 < l ? "round" : "miter", "shape-rendering": "crisp" }).shadow(b.plotShadow).crisp())
                    }
                },
                drawTracker: function(b, d, a) {
                    var c = this,
                        e = c.paper,
                        f = c.xAxis[0],
                        h = b.data[a],
                        n = c.yAxis[0].getAxisPosition(h.y),
                        t = f.getAxisPosition(g(h.x, a));
                    b = b.items[a];
                    a = ob ? 40 : 20;
                    var l = c.layers.tracker,
                        r = c.definition.chart,
                        k = c.options.plotOptions.series,
                        m = f.getAxisPosition(0),
                        f = f.getAxisPosition(1) - m,
                        m = k.groupPadding,
                        k = k.maxColWidth,
                        s = ((1 - .01 * (r && r.plotspacepercent)) * f || J(f * (1 - 2 * m), 1 * k)) / 1,
                        q = .5 * -s,
                        r = c.elements,
                        f = r.canvas.getBBox(),
                        k = r.volumeCanvas && r.volumeCanvas.getBBox(),
                        m = r.rollOverBand,
                        u = b && b.tracker,
                        s = {
                            "stroke-width": s,
                            ishot: !0,
                            stroke: ea(c.options.chart.rollOverBandColor),
                            fill: ea(c.options.chart.rollOverBandColor),
                            visibility: "hidden"
                        };
                    k && u && !d.doNotUseBand && (u || (u = b.tracker = e.circle(t, n, a, l).attr({ "stroke-width": 0, fill: qa })), u.data("x", t), h.toolText && u.tooltip(h.toolText), m || (m = r.rollOverBand = e.path(["M", 0, f.y, "L", 0, f.y2, "M", 0, k.y, "L", 0, k.y2]).attr(s), c.layers.dataset.appendChild(m), m.toBack()), u.mouseover(function() { c.rollOver(c, this, q) }).mouseout(function() { c.rollOut(c) }))
                },
                rollOver: function(b, d) { b.elements.rollOverBand.transform("t" + d.data("x") + ",0").show() },
                rollOut: function(b) { b.elements.rollOverBand.hide() }
            },
            q["renderer.cartesian"]);
        q("renderer.spline", {
            drawPlotSpline: function(b, d) {
                var a = this,
                    c = a.paper,
                    e = a.elements,
                    f = a.options,
                    h = f.chart,
                    n = f.plotOptions.series,
                    t = n.dataLabels && n.dataLabels.style || {},
                    l = { fontFamily: t.fontFamily, fontSize: t.fontSize, lineHeight: t.lineHeight, fontWeight: t.fontWeight, fontStyle: t.fontStyle },
                    t = b.items,
                    r = b.graphics = b.graphics || [],
                    k = a.xAxis[d.xAxis || 0],
                    m = a.yAxis[d.yAxis || 0],
                    s = b.data,
                    q = [],
                    u = [],
                    G = !1 === d.visible,
                    x = G ? "hidden" : "visible",
                    w = isNaN(+n.animation) && n.animation.duration || 1E3 *
                        n.animation,
                    v = !1 !== (f.tooltip || {}).enabled,
                    D = a.chartWidth,
                    z = a.chartHeight,
                    f = function() {
                        U.attr({ "clip-rect": null });
                        na.show();
                        ba.show();
                        ja.show();
                        P.attr({ transform: "...t" + -D + "," + -z })
                    },
                    y,
                    E,
                    $ = n.connectNullData,
                    R,
                    K,
                    B,
                    ca,
                    la,
                    M,
                    F = null,
                    L,
                    W = d.lineWidth,
                    O,
                    N,
                    J,
                    X,
                    Q,
                    A,
                    V,
                    H,
                    I = a.layers,
                    S = I.dataset = I.dataset || c.group("dataset-orphan"),
                    P = I.datalabels = I.datalabels || c.group("datalables"),
                    aa = I.tracker,
                    I = h.anchorTrackingRadius,
                    Z,
                    ba,
                    ja,
                    U,
                    na,
                    pa = [],
                    mb,
                    va,
                    da,
                    ga = function(e, f, g, h, p, k, n, l) {
                        return function() {
                            var m = g.imageUrl,
                                s =
                                    g.imageScale,
                                t = g.imageAlpha,
                                q = n.imageHoverAlpha,
                                C = n.imageHoverScale,
                                u = this.width * s * .01,
                                w = this.width * C * .01;
                            V = { x: e - this.width * s * .005, y: f - this.height * s * .005, width: u, height: this.height * s * .01, alpha: t };
                            H = { x: e - this.width * C * .005, y: f - this.height * C * .005, width: w, height: this.height * C * .01, alpha: q };
                            q = w > u ? H : V;
                            h.graphic = X = c.image(m, na).attr(V).css({ opacity: .01 * t }).data("alwaysInvisible", 0 === s).data("setRolloverProperties", n).data("setRolloverAttr", H).data("setRolloutAttr", V).data("anchorRadius", s).data("anchorHoverRadius",
                                C);
                            r.push(X);
                            if (ca || v || n)va = h.tracker = c.rect(aa).attr(q).attr({ cursor: ca ? "pointer" : "", stroke: qa, "stroke-width": g.lineWidth, fill: qa, ishot: !0, visibility: x }).data("eventArgs", p).click(function(b) { ua.call(this, a, b) }).hover(function(b) { return function(c) { a.hoverPlotAnchor(this, c, "DataPlotRollOver", b, a) } }(h), function(b) { return function(c) { a.hoverPlotAnchor(this, c, "DataPlotRollOut", b, a) } }(h)).tooltip(k);
                            (mb = a.drawPlotLineLabel(b, d, l, e, f)) && r.push(mb)
                        }
                    },
                    ra = function(c, e, f, g, h, p, k) {
                        return function() {
                            (mb = f.dataLabel =
                                a.drawPlotLineLabel(b, d, k, c, e)) && r.push(mb)
                        }
                    },
                    wa = function(b) { ua.call(this, a, b) },
                    zb = function(b, c) { return function(d) { a.hoverPlotAnchor(this, d, c, b, a) } },
                    h = function(a, b, c, d) {
                        var e = a.length, f = a[e - 1], g = f.length, h = f[0], f = f[g - 2];
                        3 > g || ("R" === h && 3 === g && (a[e - 1][0] = "L"), b && a.push(["L", f, d, c, d, "Z"]))
                    };
                a.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label", l);
                P.insertAfter(S);
                P.attr({ "class": "fusioncharts-datalabels", transform: "...t" + D + "," + z });
                w && a.animationCompleteQueue.push({ fn: f, scope: a });
                l = S.line ||
                (S.line = c.group("line-connector", S));
                ba = c.group("connector-shadow", l);
                ja = c.group("anchor-shadow", l);
                U = c.group("connector", l);
                na = c.group("anchors", l);
                na.hide();
                ba.hide();
                ja.hide();
                y = 0;
                for (E = s.length; y < E; y += 1)
                    if (R = s[y], B = R.y, X = va = mb = null, null === B)0 === $ && (F = null);
                    else {
                        l = t[y] = { chart: a, index: y, value: B };
                        K = g(R.x, y);
                        ca = R.link;
                        la = R.tooltext || R.toolText;
                        L = m.getAxisPosition(B);
                        K = k.getAxisPosition(K);
                        if ((N = R.marker) && N.enabled)
                            if (O = N.radius, A = N.shadow, J = N.symbol.split("_"), Z = {
                                index: y,
                                link: ca,
                                value: B,
                                displayValue: R.displayValue,
                                categoryLabel: R.categoryLabel,
                                toolText: R.toolText,
                                id: b.userID,
                                datasetIndex: b.index,
                                datasetName: b.name,
                                visible: b.visible
                            }, V = H = {}, B = R.rolloverProperties, N.imageUrl)O = new Ta.Image, O.onload = ga(K, L, N, l, Z, la, B, y), O.onerror = ra(K, L, l, y), O.src = N.imageUrl;
                            else {
                                B && (V = { polypath: [J[1] || 2, K, L, N.radius, N.startAngle, 0], fill: ea(N.fillColor), "stroke-width": N.lineWidth, stroke: ea(N.lineColor) }, H = { polypath: [B.sides || 2, K, L, B.radius, B.startAngle, B.dip], fill: ea(B.fillColor), "stroke-width": B.lineWidth, stroke: ea(B.lineColor) });
                                X = l.graphic = c.polypath(J[1] || 2, K, L, N.radius, N.startAngle, 0, na).attr({ fill: ea(N.fillColor), "stroke-width": N.lineWidth, stroke: ea(N.lineColor), cursor: ca ? "pointer" : "", "stroke-linecap": "round", "stroke-linejoin": "round", ishot: !0, visibility: 0 === O ? "hidden" : x }).data("alwaysInvisible", 0 === O).data("setRolloverProperties", B).data("setRolloverAttr", H).data("setRolloutAttr", V).data("anchorRadius", O).data("anchorHoverRadius", B && B.radius).shadow(A || !1, ja);
                                if (ca || v || B)
                                    O = Xa(O, B && B.radius || 0, I), va = c.polypath(J[1] ||
                                        2, K, L, O, N.startAngle, 0, aa).attr({ cursor: ca ? "pointer" : "", stroke: qa, "stroke-width": 0, ishot: !0, fill: qa, visibility: x });
                                da = va || X;
                                da.click(wa);
                                (va || X).data("eventArgs", Z).hover(zb(l, "DataPlotRollOver"), zb(l, "DataPlotRollOut")).tooltip(la)
                            }
                        la = pa.length;
                        null !== F ? 2 <= la ? (pa[la - 1].push(K), pa[la - 1].push(L)) : (pa.push(["M", M, F]), pa.push(["R", K, L])) : null === F && 2 <= la && (M = pa[la - 1], "R" === M[0] && 3 === M.length && (M.push(M[1]), M.push(M[2])), pa.push(["M", K, L]), pa.push(["R"]));
                        X && r.push(X);
                        da && r.push(da);
                        M = K;
                        F = L;
                        la = R.color;
                        O = R.dashStyle;
                        u.push(X);
                        l.dataLabel = mb;
                        l.tracker = da;
                        N && N.imageUrl || (mb = a.drawPlotLineLabel(b, d, y, K, L));
                        mb && r.push(mb);
                        a.drawTracker && a.drawTracker.call(a, b, d, y)
                    }
                2 <= pa.length && (h(pa, !1), Q = b.graphic = c.path(pa, U).attr({ "stroke-dasharray": O, "stroke-width": W, stroke: ea(la), "stroke-linecap": "round", "stroke-linejoin": "round", visibility: x }).shadow(n.shadow && R.shadow, ba), q.push(Q), S.shadow(n.shadow || R.shadow));
                w ? U.attr({ "clip-rect": e["clip-canvas-init"] }).animate({ "clip-rect": e["clip-canvas"] }, w, "normal", a.getAnimationCompleteFn()) :
                (f && f(), f = void 0);
                Q && r.push(Q);
                b.visible = !G;
                return b
            },
            drawPlotAreaspline: function(b, d) {
                var a = this,
                    c = a.paper,
                    e = a.layers,
                    f = a.options,
                    h = f.chart,
                    n = a.elements,
                    t = f.plotOptions.series,
                    l = t.dataLabels && t.dataLabels.style || {},
                    r = { fontFamily: l.fontFamily, fontSize: l.fontSize, lineHeight: l.lineHeight, fontWeight: l.fontWeight, fontStyle: l.fontStyle },
                    k = a.xAxis[d.xAxis || 0],
                    m = a.yAxis[d.yAxis || 0],
                    s = b.data,
                    q = (l = !1 === d.visible) ? "hidden" : "visible",
                    u = isNaN(+t.animation) && t.animation.duration || 1E3 * t.animation,
                    G = "0" === a.definition.chart.drawfullareaborder,
                    x = !1 !== (f.tooltip || {}).enabled,
                    w,
                    v,
                    D,
                    z,
                    y,
                    f = b.items,
                    E = b.graphics = b.graphics || [],
                    $ = null,
                    R,
                    K,
                    B = m.max,
                    ca = m.min,
                    B = m.getAxisPosition(0 < B && 0 < ca ? ca : 0 > B && 0 > ca ? B : 0),
                    F = e.tracker,
                    M = e.dataset = e.dataset || c.group("dataset-orphan"),
                    J = e.datalabels = e.datalabels || c.group("datalabels").insertAfter(M),
                    L = h.anchorTrackingRadius,
                    W = a.chartWidth,
                    O = a.chartHeight,
                    e = function() {
                        Q.attr({ "clip-rect": null });
                        X.show();
                        ia.show();
                        J.attr({ transform: "...t" + -W + "," + -O })
                    },
                    N,
                    ia,
                    X,
                    Q,
                    A,
                    V,
                    H = [],
                    ca = [],
                    I,
                    S,
                    P,
                    aa,
                    Z,
                    ba,
                    ja,
                    U,
                    na,
                    pa,
                    da,
                    va,
                    ga,
                    Y,
                    ra,
                    wa =
                        function(e, f, g, h, k, p, n, l) {
                            return function() {
                                var m = g.imageUrl, r = g.imageScale, s = g.imageAlpha, t = n.imageHoverAlpha, u = n.imageHoverScale, w = this.width * r * .01, v = this.width * u * .01;
                                da = { x: e - this.width * r * .005, y: f - this.height * r * .005, width: w, height: this.height * r * .01, alpha: s };
                                va = { x: e - this.width * u * .005, y: f - this.height * u * .005, width: v, height: this.height * u * .01, alpha: t };
                                t = v > w ? va : da;
                                h.graphic = ba = c.image(m, X).attr(da).css({ opacity: .01 * s }).data("alwaysInvisible", 0 === r).data("setRolloverProperties", n).data("setRolloverAttr",
                                    va).data("setRolloutAttr", da).data("anchorRadius", r).data("anchorHoverRadius", u);
                                E.push(ba);
                                if (z || x || n)ja = h.tracker = c.rect(F).attr(t).attr({ cursor: z ? "pointer" : "", stroke: qa, "stroke-width": g.lineWidth, fill: qa, ishot: !0, visibility: q }).data("eventArgs", k).click(function(b) { ua.call(this, a, b) }).hover(function(b) { return function(c) { a.hoverPlotAnchor(this, c, "DataPlotRollOver", b, a) } }(h), function(b) { return function(c) { a.hoverPlotAnchor(this, c, "DataPlotRollOut", b, a) } }(h)).tooltip(p);
                                (U = h.dataLabel = a.drawPlotLineLabel(b,
                                    d, l, e, f)) && E.push(U)
                            }
                        },
                    zb = function(c, e, f, g) { return function() { (U = f.dataLabel = a.drawPlotLineLabel(b, d, g, c, e)) && E.push(U) } },
                    ma = function(b) { ua.call(this, a, b) },
                    ha = function(b, c) { return function(d) { a.hoverPlotAnchor(this, d, c, b, a) } };
                P = function(a, b, c, d) {
                    var e = a.length, f = a[e - 1], g = f.length, h = f[0], f = f[g - 2];
                    3 > g || ("R" === h && 3 === g && (a[e - 1][0] = "L"), b && a.push(["L", f, d, c, d, "Z"]))
                };
                Q = M.area = M.area || c.group("area", M);
                N = M.line || (M.line = c.group("line-connector", M));
                c.group("connector-shadow", N);
                ia = c.group("anchor-shadow",
                    N);
                h = c.group("area-connector", N);
                X = c.group("area-anchors", N);
                X.hide();
                ia.hide();
                a.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label", r);
                J.insertAfter(M);
                J.attr({ "class": "fusioncharts-datalabels", transform: "...t" + W + "," + O });
                u && a.animationCompleteQueue.push({ fn: e, scope: a });
                r = 0;
                for (M = s.length; r < M; r += 1)
                    if (w = s[r], D = w.y, N = H.length, I = ca.length, ba = ja = U = null, 2 <= N && (S = H[N - 1], y = S.length), null === D)0 === t.connectNullData && ($ = null);
                    else {
                        Y = f[r] = { chart: a, index: r, value: D };
                        v = g(w.x, r);
                        z = w.link;
                        y = w.tooltext ||
                            w.toolText;
                        v = k.getAxisPosition(v);
                        D = m.getAxisPosition(D);
                        if ((aa = w.marker) && aa.enabled)
                            if (ra = { index: r, link: z, value: w.y, displayValue: w.displayValue, categoryLabel: w.categoryLabel, toolText: y, id: b.userID, datasetIndex: b.index, datasetName: b.name, visible: b.visible }, V = aa.radius, ga = aa.shadow, Z = aa.symbol.split("_"), da = va = {}, pa = w.rolloverProperties, aa.imageUrl)V = new Ta.Image, V.onload = wa(v, D, aa, Y, ra, y, pa, r), V.onerror = zb(v, D, Y, r), V.src = aa.imageUrl;
                            else {
                                if (pa = w.rolloverProperties)
                                    da = {
                                        polypath: [
                                            Z[1] || 2, v, D, V, aa.startAngle,
                                            0
                                        ],
                                        fill: ea(aa.fillColor),
                                        "stroke-width": aa.lineWidth,
                                        stroke: ea(aa.lineColor)
                                    }, va = { polypath: [pa.sides || 2, v, D, pa.radius, pa.startAngle, pa.dip], fill: ea(pa.fillColor), "stroke-width": pa.lineWidth, stroke: ea(pa.lineColor) };
                                ba = Y.graphic = c.polypath(Z[1] || 2, v, D, V, aa.startAngle, 0, X).attr({ fill: ea(aa.fillColor), "stroke-width": aa.lineWidth, stroke: ea(aa.lineColor), "stroke-linecap": "round", cursor: z ? "pointer" : "", ishot: !0, visibility: 0 === V ? "hidden" : q }).data("alwaysInvisible", 0 === V).data("setRolloverProperties", pa).data("setRolloverAttr",
                                    va).data("setRolloutAttr", da).data("anchorRadius", V).data("anchorHoverRadius", pa && pa.radius).shadow(ga || !1, ia);
                                if (z || x || pa)V = Xa(V, pa && pa.radius || 0, L), ja = c.polypath(Z[1] || 2, v, D, V, aa.startAngle, 0, F).attr({ cursor: z ? "pointer" : "", stroke: qa, "stroke-width": 0, ishot: !0, fill: qa, visibility: q });
                                (ja || ba).data("eventArgs", ra).click(ma).hover(ha(Y, "DataPlotRollOver"), ha(Y, "DataPlotRollOut")).tooltip(y)
                            }
                        null !== $ ? 2 <= N ? ("M" === H[N - 1][0] && H.push(["R"]), "M" === ca[I - 1][0] && ca.push(["R"]), N = H.length, I = ca.length, S = H[N - 1],
                            y = S.length, H[N - 1].push(v), H[N - 1].push(D), ca[I - 1].push(v), ca[I - 1].push(D), r === M - 1 && "R" === S[0] && (P(H, !0, K, B), P(ca, !1))) : (H.push(["M", R, $]), H.push(["R", v, D]), ca.push(["M", R, $]), ca.push(["R", v, D]), K = R) : null === $ && 2 <= N && ("R" === S[0] && (P(H, !0, K, B), P(ca, !1)), H.push(["M", v, D]), ca.push(["M", v, D]), K = v);
                        ba && E.push(ba);
                        a.drawTracker && a.drawTracker.call(a, b, d, r);
                        Y.graphic = ba;
                        Y.dataLabel = U;
                        Y.tracker = void 0;
                        aa && aa.imageUrl || (U = a.drawPlotLineLabel(b, d, r, v, D));
                        U && E.push(U);
                        a.drawTracker && a.drawTracker.call(a, b, d, r);
                        R = v;
                        $ = D
                    }
                if (S = H[H.length - 1])y = S.length, "Z" !== S[y - 1] && "R" === S[0] && (P(H, !0, K, B), P(ca, !1));
                2 <= H.length && (R = c.path(H, Q).attr({ fill: ea(d.fillColor), "stroke-dasharray": d.dashStyle, "stroke-width": G ? 0 : d.lineWidth, stroke: ea(d.lineColor), "stroke-linecap": "round", visibility: q }).shadow(t.shadow && w.shadow), b.graphic = R, E.push(R));
                u ? na = Q.attr({ "clip-rect": n["clip-canvas-init"] }).animate({ "clip-rect": n["clip-canvas"] }, u, "normal", a.getAnimationCompleteFn()) : (e && e(), e = void 0);
                G && (2 <= ca.length && (A = c.path(ca, h).attr({
                    stroke: ea(d.lineColor),
                    "stroke-width": d.lineWidth,
                    "stroke-dasharray": w.dashStyle || d.dashStyle,
                    "stroke-linecap": "round",
                    visibility: q
                }).shadow(t.shadow || w.shadow)), E.push(A), u && h.attr({ "clip-rect": n["clip-canvas-init"] }).animateWith(Q, na, { "clip-rect": n["clip-canvas"] }, u, "normal"));
                b.visible = !l;
                return b
            }
        }, q["renderer.cartesian"]);
        q("renderer.kagi", {
            drawPlotKagi: function(b, d) {
                var a = this,
                    c = a.paper,
                    e = a.options,
                    f = a.elements,
                    g = b.data,
                    n = e.plotOptions.series,
                    t = a.xAxis[d.xAxis || 0],
                    l = a.yAxis[d.yAxis || 0],
                    r = d.canvasPadding,
                    k = d.xShiftLength,
                    m = b.items,
                    s = a.logic,
                    q = !1 === d.visible ? "hidden" : "visible",
                    u = !1 !== (e.tooltip || {}).enabled,
                    v = { stroke: ea({ color: d.rallyColor, alpha: d.rallyAlpha }), "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": d.rallyThickness || d.lineWidth, "stroke-dasharray": d.rallyDashed },
                    x = { stroke: ea({ color: d.declineColor, alpha: d.declineAlpha }), "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": d.declineThickness || d.lineWidth, "stroke-dasharray": d.declineDashed },
                    w = { "true": v["stroke-width"], "false": x["stroke-width"] },
                    z = a.layers,
                    D = z.dataset = z.dataset || c.group("dataset-orphan"),
                    y = z.datalabels = z.datalabels || c.group("datalabels").insertAfter(D),
                    B = z.tracker,
                    z = isNaN(+n.animation) && n.animation.duration || 1E3 * n.animation,
                    E = f["clip-canvas-init"].slice(0),
                    f = f["clip-canvas"].slice(0),
                    $ = 0,
                    R = t.getAxisPosition($),
                    K = a.chartWidth,
                    F = a.chartHeight,
                    ca = function() {
                        ga.attr({ "clip-rect": null });
                        pa.show();
                        va.show();
                        y.attr({ transform: "...t" + -K + "," + -F })
                    },
                    J = [],
                    M = [],
                    H,
                    L,
                    W,
                    O,
                    N,
                    A,
                    X,
                    Q,
                    I,
                    V,
                    S,
                    P,
                    ba,
                    Z,
                    aa,
                    U,
                    da,
                    ja,
                    Y = e.chart.anchorTrackingRadius,
                    na,
                    pa,
                    ga,
                    va,
                    ha,
                    oa,
                    ra,
                    wa,
                    zb,
                    ka,
                    sa;
                if (g.length) {
                    e = D.line || (D.line = c.group("line-connector", D));
                    c.group("connector-shadow", e);
                    pa = c.group("anchor-shadow", e);
                    ga = c.group("connector", e);
                    va = c.group("anchors", e);
                    va.hide();
                    pa.hide();
                    y.attr({ transform: "...t" + K + "," + F });
                    z && a.animationCompleteQueue.push({ fn: ca, scope: this });
                    X = !!g[0].isRally;
                    e = 0;
                    for (D = g.length; e < D; e += 1)
                        m[e] = { chart: a, index: e, graphic: null, line: [], dataLabel: null, tracker: null }, Q = g[e], I = Q.y, Q.isDefined || (I = Q.plotValue), I = h(Q.plotValue, I), Q.plotY = rb(l.getAxisPosition(Q.y),
                            2), Q.graphY = rb(l.getAxisPosition(I), 2), Q.plotX = R, Q.isShift && ($ += 1, R = t.getAxisPosition($)), e && (I = g[e - 1], X = Q && Q.objParams && Q.objParams.isRally, ba = Q && Q.objParams && Q.objParams.lastHigh, Z = Q && Q.objParams && Q.objParams.lastLow, aa = Q && Q.objParams && Q.objParams.isRallyInitialised, I && aa && I.isRally !== Q.isRally ? (Q.isChanged = !0, Q.ty = rb(l.getAxisPosition(X ? ba : Z), 2)) : Q.isChanged = !1);
                    t = a.canvasLeft + r;
                    R = t + k / 2;
                    V = g[0].plotY;
                    X = !!g[0].isRally;
                    l = ma(V) + w[X] % 2 / 2;
                    X ? J.push("M", t, l, "H", R) : M.push("M", t, l, "H", R);
                    jb(g, function(e,
                        f) {
                        if (U = g[f + 1])ja = ["M", R, V], X = e.isRally, e.isShift && (R += k, V = e.graphY, ja.push("H", R), ja[2] = ma(ja[2]) + w[X] % 2 / 2, ja = ja.toString(), X ? J.push(ja) : M.push(ja), ja = ["M", R, V]), U.isChanged && (V = U.ty, ja.push("V", V), ja[1] = ma(ja[1]) + w[X] % 2 / 2, ja = ja.toString(), X ? J.push(ja) : M.push(ja), ja = ["M", R, V]), da = U.isRally, U.graphY !== ja[2] && (ja.push("V", U.graphY), ja[1] = ma(ja[1]) + w[da] % 2 / 2, ja = ja.toString(), da ? J.push(ja) : M.push(ja)), V = U.graphY;
                        S = e.plotX;
                        P = e.plotY;
                        O = e.marker;
                        H = e && e.link;
                        L = e && e.toolText;
                        if (void 0 !== P && !isNaN(P) && e.isDefined)
                            if (N =
                                O.symbol.split("_"), zb = "spoke" === N[0] ? 1 : 0, ka = O.radius, ha = O.shadow, na = { index: f, link: H, value: e.y, displayValue: e.displayValue, categoryLabel: e.categoryLabel, toolText: L, id: b.userID, datasetIndex: b.index, datasetName: b.name, visible: b.visible }, oa = ra = {}, wa = e.rolloverProperties, O.imageUrl)
                                sa = new Ta.Image, sa.onload = function(e, f, g, h, k, p, n, l) {
                                    return function() {
                                        var m = g.imageUrl, r = g.imageScale, s = g.imageAlpha, t = n.imageHoverAlpha, w = n.imageHoverScale, x = this.width * r * .01, v = this.width * w * .01;
                                        oa = {
                                            x: e - this.width * r * .005,
                                            y: f -
                                                this.height * r * .005,
                                            width: x,
                                            height: this.height * r * .01,
                                            alpha: s
                                        };
                                        ra = { x: e - this.width * w * .005, y: f - this.height * w * .005, width: v, height: this.height * w * .01, alpha: t };
                                        t = v > x ? ra : oa;
                                        h.graphic = A = c.image(m, va).attr(oa).css({ opacity: .01 * s }).data("alwaysInvisible", 0 === r).data("setRolloverProperties", n).data("setRolloverAttr", ra).data("setRolloutAttr", oa).data("anchorRadius", r).data("anchorHoverRadius", w);
                                        if (H || u || n)
                                            W = h.tracker = c.rect(B).attr(t).attr({
                                                cursor: H ? "pointer" : "",
                                                stroke: qa,
                                                "stroke-width": g.lineWidth,
                                                fill: qa,
                                                ishot: !0,
                                                visibility: q
                                            }).data("eventArgs", k).click(function(b) { ua.call(this, a, b) }).hover(function(b) { return function(c) { a.hoverPlotAnchor(this, c, "DataPlotRollOver", b, a) } }(h), function(b) { return function(c) { a.hoverPlotAnchor(this, c, "DataPlotRollOut", b, a) } }(h)).tooltip(p);
                                        h.dataLabel = a.drawPlotKagiLabel(b, d, l, e, f)
                                    }
                                }(S, P, O, m[f], na, L, wa, f), sa.onerror = function(c, e, f, g, h, k, p, n) { return function() { g.dataLabel = a.drawPlotKagiLabel(b, d, n, c, e) } }(S, P, O, m[f], na, L, wa, f), sa.src = O.imageUrl;
                            else {
                                !s.multisetRealtime && wa && (oa =
                                { polypath: [N[1] || 2, S, P, ka, O.startAngle, zb], fill: ea(O.fillColor), "stroke-width": O.lineWidth, stroke: ea(O.lineColor) }, ra = { polypath: [wa.sides || 2, S, P, wa.radius, wa.startAngle, wa.dip], fill: ea(wa.fillColor), "stroke-width": wa.lineWidth, stroke: ea(wa.lineColor) });
                                A = m[f].graphic = c.polypath(N[1] || 2, S, P, ka, O.startAngle, zb, va).attr({ fill: ea(O.fillColor), "stroke-width": O.lineWidth, stroke: ea(O.lineColor), "stroke-linecap": "round", cursor: H ? "pointer" : "", ishot: !0, visibility: 0 === ka ? "hidden" : q }).data("alwaysInvisible",
                                    0 === ka).data("setRolloverProperties", wa).data("setRolloverAttr", ra).data("setRolloutAttr", oa).data("anchorRadius", ka).data("anchorHoverRadius", wa && wa.radius).shadow(ha || !1, pa);
                                if (H || u)
                                    ka = Xa(ka, wa && wa.radius || 0, Y), W = c.circle(S, P, ka, B).attr({ cursor: H ? "pointer" : "", stroke: qa, ishot: !0, fill: qa, "stroke-width": O.lineWidth, visibility: q }).data("eventArgs", na).click(function(b) { ua.call(this, a, b) }).hover(function(b) { return function(c) { a.hoverPlotAnchor(this, c, "DataPlotRollOver", b, a) } }(m[f]), function(b) {
                                        return function(c) {
                                            a.hoverPlotAnchor(this,
                                                c, "DataPlotRollOut", b, a)
                                        }
                                    }(m[f])).tooltip(L);
                                m[f].tracker = W || A;
                                O && O.imageUrl || (m[f].dataLabel = a.drawPlotKagiLabel(b, d, f, S, P))
                            }
                    });
                    v = c.path(J, ga).attr(v).shadow(n.shadow);
                    m[0].line.push(v);
                    v = c.path(M, ga).attr(x).shadow(n.shadow);
                    m[0].line.push(v);
                    z ? ga.attr({ "clip-rect": E }).animate({ "clip-rect": f }, z, "normal", a.getAnimationCompleteFn()) : (ca && ca(), ca = void 0)
                }
            },
            drawPlotKagiLabel: function(b, d, a, c, e, f) {
                var g = this.options,
                    h = g.chart,
                    t = this.paper,
                    l = this.layers,
                    r = g.plotOptions.series.dataLabels.style,
                    g = 1 === h.rotateValues ?
                        270 : 0,
                    k = this.canvasHeight,
                    m = this.canvasTop,
                    s = this.canvasLeft,
                    q = b.data[a];
                a = b.items[a];
                b = (b = a.graphic) && "image" == b.type && .5 * b.attr("height") || q.marker && q.marker.radius - 3;
                h = h.valuePadding + 2 + b;
                d = !1 === d.visible ? "hidden" : "visible";
                b = a.dataLabel;
                var u = { fontFamily: r.fontFamily, fontSize: r.fontSize, lineHeight: r.lineHeight, fontWeight: r.fontWeight, fontStyle: r.fontStyle }, v, x, w;
                f = f || l.datalabels;
                l = q.displayValue;
                S(l) && l !== z ? (b ? g && b.rotate(360 - g) : b = a.dataLabel = t.text(f).attr({
                        text: l,
                        fill: r.color,
                        "text-bound": [
                            r.backgroundColor,
                            r.borderColor, r.borderThickness, r.borderPadding, r.borderRadius, r.borderDash
                        ]
                    }).css(u), b.attr({ title: q.originalText || "", fill: r.color }), l = b.getBBox(), f = r = g ? l.width : l.height, t = e, f = f + h + 4, r = .5 * r + h, g ? (s = !0, q.vAlign === Ia ? (t -= r, s = e - m < f) : q.vAlign === Ba && (t += r - 2, v = 1, s = e + f > m + k), s && (x = 1, c -= h + 3 + .5 * l.height, t = e)) : q.vAlign === Ia ? t -= r : q.vAlign === Ba ? (t += r, v = 1) : l.width > c - s ? t -= r : (x = 1, c -= h + 3, w = "end"), b.attr({ x: c, y: t, "text-anchor": w, visibility: d }).data("isBelow", v).data("isMiddle", x), g && b.attr("transform", "T0,0,R" + g)) :
                    b && b.attr({ text: z });
                return b
            }
        }, q["renderer.cartesian"]);
        q("renderer.boxandwhisker", {
            drawPlotBoxandwhisker2d: function(b, d) {
                var a = this,
                    c = a.paper,
                    e = a.options,
                    f = e.plotOptions.series,
                    h = a.xAxis[d.xAxis || 0],
                    n = a.yAxis[d.xAxis || 0],
                    t = isNaN(+f.animation) && f.animation.duration || 1E3 * f.animation,
                    l = a.layers,
                    r = l.dataset = l.dataset || c.group("dataset-orphan"),
                    k = l.datalabels = l.datalabels || c.group("datalabels"),
                    m = d.data,
                    s = b.items || (b.items = []),
                    q = !1 === d.visible ? "hidden" : "visible",
                    u = !1 !== (e.tooltip || {}).enabled,
                    v = d.columnPosition ||
                        0,
                    x = a.definition.chart,
                    w = h.getAxisPosition(0),
                    y = h.getAxisPosition(1) - w,
                    D = f.groupPadding,
                    B = f.maxColWidth,
                    w = d.numColumns || 1,
                    y = (1 - .01 * (x && x.plotspacepercent)) * y || J(y * (1 - 2 * D), B * w),
                    x = y / w,
                    v = v * x - y / 2,
                    y = e.chart,
                    w = 1 === y.rotateValues ? 270 : void 0,
                    y = g(y.valuePadding, 0),
                    D = r.upperBoxGroup = r.upperBoxGroup || c.group("upperBox", r),
                    B = r.lowerBoxGroup = r.lowerBoxGroup || c.group("lowerBox", r),
                    H = r.medianGroup = r.medianGroup || c.group("median", r),
                    E = b.graphics = b.graphics || [],
                    $ = s.displayValues = {},
                    R = $.upperQuartileValues = [],
                    K = $.lowerQuartileValues =
                    [],
                    $ = $.medianValues = [],
                    F = function(b) { ua.call(this, a, b) },
                    l = l.shadows || (l.shadows = c.group("shadows", r).toBack()),
                    e = e.plotOptions.series.dataLabels.style,
                    ca = { fontFamily: e.fontFamily, fontSize: e.fontSize, lineHeight: e.lineHeight, fontWeight: e.fontWeight, fontStyle: e.fontStyle },
                    I = function(b, c) {
                        return function(d) {
                            b.upperBox.attr(c.upperBox);
                            b.lowerBox.attr(c.lowerBox);
                            b.upperBoxBorder.attr(c.upperBoxBorder);
                            b.lowerBoxBorder.attr(c.lowerBoxBorder);
                            b.upperQuartile.attr(c.upperQuartile);
                            b.lowerQuartile.attr(c.lowerQuartile);
                            b.medianBorder.attr(c.median);
                            ua.call(this, a, d, "DataPlotRollOver")
                        }
                    },
                    M = function(b, c) {
                        return function(d) {
                            b.upperBox.attr(c.upperBox);
                            b.lowerBox.attr(c.lowerBox);
                            b.upperBoxBorder.attr(c.upperBoxBorder);
                            b.lowerBoxBorder.attr(c.lowerBoxBorder);
                            b.upperQuartile.attr(c.upperQuartile);
                            b.lowerQuartile.attr(c.lowerQuartile);
                            b.medianBorder.attr(c.median);
                            ua.call(this, a, d, "DataPlotRollOut")
                        }
                    },
                    A,
                    L,
                    W,
                    O,
                    N,
                    ia,
                    X,
                    Q,
                    P,
                    V,
                    ba,
                    Z,
                    U,
                    da,
                    aa,
                    Y,
                    ga,
                    ja,
                    oa,
                    na,
                    pa,
                    ha,
                    va,
                    ka,
                    qa,
                    ra;
                ja = 0;
                for (oa = m.length; ja < oa; ja += 1)
                    L = m[ja], W = L.y, N = L.link,
                        ia = L.tooltext || L.toolText, (A = s[ja]) || (A = s[ja] = { index: ja, value: W, upperBox: null, lowerBox: null, upperBoxBorder: null, lowerBoxBorder: null, upperQuartileBorder: null, lowerQuartileBorder: null, medianBorder: null, upperQuartileValues: null, lowerQuartileValues: null, medianValues: null, tracker: null, hot: null }), null !== W && (n.getAxisPosition(W), W = g(L.x, ja), W = h.getAxisPosition(W), v && (W += v), O = f.borderRadius || 0, Q = ((Q = (U = L.upperQuartile || {}, U.value)) || 0 === Q) && n.getAxisPosition(Q), X = ((X = (da = L.lowerQuartile || {}, da.value)) || 0 ===
                                X) && n.getAxisPosition(X), V = ((P = (ga = L.median) && ga.value) || 0 === P) && n.getAxisPosition(P), ba = V - Q, Z = X - V, aa = L.upperBoxBorder || {}, Y = L.lowerBoxBorder || {}, P = {
                                index: ja,
                                link: N,
                                maximum: L.displayValueMax,
                                minimum: L.displayValueMin,
                                median: P,
                                q3: U.value,
                                q1: da.value,
                                maxDisplayValue: L.displayValueMax,
                                minDisplayValue: L.displayValueMin,
                                medianDisplayValue: L.displayValueMid,
                                q1DisplayValue: L.displayValueQ1,
                                q3DisplayValue: L.displayValueQ3,
                                categoryLabel: L.categoryLabel,
                                toolText: L.toolText,
                                id: b.userID,
                                datasetIndex: b.index,
                                datasetName: b.name,
                                visible: b.visible
                            }, na = ma(W) + aa.borderWidth % 2 * .5, pa = ma(W + x) + aa.borderWidth % 2 * .5, ha = ma(Q) + U.borderWidth % 2 * .5, x = pa - na, ra = L.hoverEffects.rollOut = {
                                upperBox: { fill: ea(L.color.FCcolor), "stroke-width": 0, "stroke-dasharray": aa.dashStyle, cursor: N ? "pointer" : "", ishot: !0, visibility: q },
                                lowerBox: { fill: ea(L.lowerboxColor.FCcolor), "stroke-width": 0, "stroke-dasharray": Y.dashStyle, cursor: N ? "pointer" : z, ishot: !0, visibility: q },
                                upperBoxBorder: {
                                    stroke: aa.color,
                                    "stroke-width": aa.borderWidth,
                                    "stroke-linecap": "round",
                                    dashstyle: aa.dashStyle,
                                    ishot: !0,
                                    visibility: q
                                },
                                lowerBoxBorder: { stroke: Y.color, "stroke-width": Y.borderWidth, dashstyle: Y.dashStyle, "stroke-linecap": "round", ishot: !0, visibility: q },
                                upperQuartile: { stroke: ea(U.color), "stroke-width": U.borderWidth, "stroke-dasharray": U.dashSyle, "stroke-linecap": "round", cursor: N ? "pointer" : z, ishot: !0, visibility: q },
                                lowerQuartile: { stroke: ea(da.color), "stroke-width": da.borderWidth, "stroke-dasharray": da.dashSyle, cursor: N ? "pointer" : "", "stroke-linecap": "round", ishot: !0, visibility: q },
                                median: { stroke: ea(ga.color), "stroke-width": ga.borderWidth, "stroke-dasharray": ga.dashSyle, cursor: N ? "pointer" : "", "stroke-linecap": "round", ishot: !0, visibility: q }
                            }, N = A.graphic = A.upperBox = c.rect(na, ha, x, ba, O, D).attr(ra.upperBox).shadow(f.shadow && L.shadow, l), ba = A.upperBoxBorder = c.path(["M", na, ha, "V", ha + ba, "M", pa, ha, "V", ha + ba], D).attr(ra.upperBoxBorder).shadow(f.shadow && aa.shadow, l), aa = A.upperQuartile = c.path(["M", na, ha, "H", na + x], H).attr(ra.upperQuartile).shadow(f.shadow && U.shadow, l), na = ma(W) + Y.borderWidth %
                                2 * .5, pa = ma(W + x) + Y.borderWidth % 2 * .5, ha = ma(V + Z) + da.borderWidth % 2 * .5, O = A.lowerBox = c.rect(na, V, x, ha - V, O, B).attr(ra.lowerBox).shadow(f.shadow && L.shadow, l), Y = A.lowerBoxBorder = c.path(["M", na, V, "V", V + Z, "M", pa, V, "V", V + Z], B).attr(ra.lowerBoxBorder).shadow(f.shadow && Y.shadow, l), ha = ma(V + Z) + da.borderWidth % 2 * .5, Z = A.lowerQuartile = c.path(["M", na, ha, "H", na + x], H).attr(ra.lowerQuartile).shadow(f.shadow && U.shadow, l), ha = ma(V) + ga.borderWidth % 2 * .5, na = A.medianBorder = c.path(["M", na, ha, "H", na + x], H).attr(ra.median), ha = b.index +
                                "_" + ja, N.click(F).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).data("eventArgs", P), O.click(F).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).data("eventArgs", P), ba.click(F).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).data("eventArgs", P), Y.click(F).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).data("eventArgs", P), aa.click(F).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).data("eventArgs", P), Z.click(F).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).data("eventArgs",
                                P), na.click(F).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).data("eventArgs", P), P = w ? Ea : Pa, S(U.displayValue) && U.displayValue !== z && (va = R[ja] = c.text(k).attr({ text: U.displayValue, x: W + x / 2, title: U.originalText || "", y: Q - y, "text-anchor": w ? "start" : P, "vertical-align": w ? "middle" : "bottom", visibility: q, fill: e.color, "text-bound": [e.backgroundColor, e.borderColor, e.borderThickness, e.borderPadding, e.borderRadius, e.borderDash] }).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).css(ca), w && va.rotate(w, W +
                                x / 2, Q - y)), S(ga.displayValue) && ga.displayValue !== z && (qa = $[ja] = c.text(k).attr({ text: ga.displayValue, x: W + x / 2, y: V - y, title: ga.originalText || "", "text-anchor": w ? "start" : P, "vertical-align": w ? "middle" : "bottom", visibility: q, fill: e.color, "text-bound": [e.backgroundColor, e.borderColor, e.borderThickness, e.borderPadding, e.borderRadius, e.borderDash] }).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).css(ca), w && qa.rotate(w, W + x / 2, V - y)), S(da.displayValue) && da.displayValue !== z && (ka = K[ja] = c.text(k).attr({
                                text: da.displayValue,
                                x: W + x / 2,
                                y: X + y,
                                title: da.originalText || "",
                                "text-anchor": w ? "start" : P,
                                "vertical-align": w ? "middle" : "top",
                                visibility: q,
                                fill: e.color,
                                "text-bound": [e.backgroundColor, e.borderColor, e.borderThickness, e.borderPadding, e.borderRadius, e.borderDash]
                            }).hover(I(A, L.hoverEffects), M(A, ra)).data("groupId", ha).css(ca), w && ka.rotate(w, W + x / 2, X + y)), u && (N.tooltip(ia), O.tooltip(ia), ba.tooltip(ia), Y.tooltip(ia), aa.tooltip(ia), Z.tooltip(ia), na.tooltip(ia), va && va.tooltip(ia), qa && qa.tooltip(ia), ka && ka.tooltip(ia)), N && E.push(N),
                            O && E.push(O), na && E.push(na), ba && E.push(ba), Y && E.push(Y), aa && E.push(aa), Z && E.push(Z), va && E.push(va), qa && E.push(qa), ka && E.push(ka));
                r.attr({ "clip-rect": [a.canvasLeft, a.canvasTop, t ? 0 : a.canvasWidth, a.canvasHeight] });
                t && r.animate({ "clip-rect": [a.canvasLeft, a.canvasTop, a.canvasWidth, a.canvasHeight] }, t, "normal");
                b.visible = !1 !== d.visible
            }
        }, q["renderer.cartesian"]);
        q("renderer.dragnode", {
            drawPlotDragnode: function(b, d) {
                var a = this,
                    c = b.graphics = [],
                    e = {},
                    f = a.options,
                    p = f.tooltip,
                    n = f._FCconf.inCanvasStyle,
                    t = a.paper,
                    l = a.layers,
                    r = b.items,
                    k = l.dataset,
                    m = l.connector,
                    s = e.xAxis = a.xAxis[d.xAxis || 0],
                    q = e.yAxis = a.yAxis[d.yAxis || 0],
                    v = d.data,
                    G = e.elements = { data: [] },
                    x = a.smartLabel,
                    w = f.plotOptions.series.dataLabels.style,
                    y = f.orphanStyles.connectorlabels.style,
                    D = f.connectors,
                    B = f.connectorsStore,
                    A = f.pointStore || (f.pointStore = []),
                    E = f.invalConnectStore,
                    $ = { fontFamily: w.fontFamily, fontSize: w.fontSize, lineHeight: w.lineHeight, fontWeight: w.fontWeight, fontStyle: w.fontStyle },
                    R = function(b) {
                        A[b.from] && A[b.to] ? B.push(new sa(b, A, y, t, m, a)) :
                            E.push(b)
                    },
                    K = function() {
                        var b = this;
                        b.data("fire_click_event", 1);
                        clearTimeout(b._longpressactive);
                        b._longpressactive = setTimeout(function() {
                            b.data("fire_click_event", 0);
                            b.data("viewMode") || a.logic.showLabelDeleteUI(a, b)
                        }, 1E3)
                    },
                    J = function() { this.data("fire_click_event") && (this.data("fire_click_event", 0), $a.call(this)) },
                    ca = function(b) {
                        var c = this.data("fire_click_event");
                        $a.call(this);
                        c && ua.call(this, a, b, "LabelClick")
                    },
                    I = function(b) { ua.call(this, a, b, "LabelRollover") },
                    M = function(b) { ua.call(this, a, b, "LabelRollout") },
                    P = function(b, c, d, e, f) {
                        d = this.data("data");
                        e = d.bBox;
                        var g = a.canvasTop + a.canvasHeight, h = a.canvasLeft + a.canvasWidth;
                        this.data("fire_dragend") || (ua.call(this, a, f, "LabelDragStart"), this.data("fire_dragend", 1));
                        e.x + b < a.canvasLeft && (b = a.canvasLeft - e.x);
                        e.x2 + b > h && (b = h - e.x2);
                        e.y + c < a.canvasTop && (c = a.canvasTop - e.y);
                        e.y2 + c > g && (c = g - e.y2);
                        this.attr({ x: e.x + b, y: e.y + c });
                        d.label.attr({ x: d.ox + b, y: d.oy + c })
                    },
                    L = function() {
                        var a = this.data("data"), b = this.getBBox();
                        a.ox = a.label.attr("x");
                        a.oy = a.label.attr("y");
                        a.bBox = b;
                        this.data("fire_dragend",
                            0)
                    },
                    W = function(b) {
                        var c = this.data("data"), d = c.label, e = { hcJSON: { dragableLabels: [] } }, f = this.data("eventArgs"), g = f.x = a.xAxis[0].getAxisPosition(d.attr("x"), 1), d = f.y = a.yAxis[0].getAxisPosition(d.attr("y"), 1);
                        e.hcJSON.dragableLabels[c.labelNode.index] = { y: d, x: g };
                        H(a.logic.chartInstance.jsVars._reflowData, e, !0);
                        this.data("fire_dragend") && (c = fc(a.container, b), c.sourceEvent = "labeldragend", u.raiseEvent("chartupdated", H(c, f), a.logic.chartInstance), ua.call(this, a, b, "labeldragend"))
                    },
                    O,
                    N,
                    ia,
                    X,
                    Q,
                    U,
                    V,
                    Z,
                    ba,
                    da,
                    Y,
                    aa,
                    ga,
                    ha,
                    ja,
                    ka,
                    na,
                    pa,
                    oa,
                    va,
                    ma,
                    ta,
                    ra,
                    wa;
                m || (m = l.connector = t.group("connectors").insertBefore(k));
                p && !1 !== p.enabled && m.trackTooltip(!0);
                l = G.group = t.group(k);
                p = G.dragLabelGroup = t.group(k);
                x.setStyle(w);
                k = 0;
                for (G = v.length; k < G; k += 1) {
                    O = v[k];
                    X = O.marker;
                    O._yPos = ia = q.getAxisPosition(O.y);
                    O._xPos = N = s.getAxisPosition(O.x);
                    U = r[k] || (r[k] = {});
                    wa = O.hoverEffects && O.hoverEffects.rolloverProperties;
                    X = U.graphic;
                    V = U.image;
                    Z = U.label;
                    X = O.marker;
                    if (void 0 !== ia && !isNaN(ia) && X) {
                        Y = O._config = O._config || {
                            shapeArg: {},
                            startConnectors: [],
                            endConnectors: []
                        };
                        aa = Y.shapeArg;
                        ga = g(X && X.height);
                        ha = g(X && X.width);
                        ja = g(X && X.radius);
                        Q = h(X && X.symbol);
                        ka = "rectangle" === Q;
                        ba = O.id;
                        na = O.imageNode;
                        pa = O.imageURL;
                        oa = O.imageAlign;
                        va = O.labelAlign;
                        ma = ka ? ha : 1.4 * ja;
                        ta = g(O.imageWidth, ma);
                        ka = ka ? ga : 1.4 * ja;
                        ra = g(O.imageHeight, ka);
                        ja = { fill: ea(X.fillColor), "stroke-width": X.lineWidth, r: X.radius, stroke: ea(X.lineColor) };
                        Q = aa.symbol = h(X && X.symbol, e.symbol);
                        Q = Q.split("_");
                        aa.x = N;
                        aa.y = ia;
                        aa.radius = X.radius;
                        aa.width = ha;
                        aa.height = ga;
                        aa.sides = Q[1];
                        "poly" === Q[0] || "circle" ===
                            Q[0] ? X = t.polypath(Q[1], N, ia, X.radius, X.startAngle, 0, l).attr(ja) : (Y.shapeType = gc, aa.x = N - ha / 2, aa.y = ia - ga / 2, aa.r = 0, ja.width = ha, ja.height = ga, ja.x = N - ha / 2, ja.y = ia - ga / 2, wa && O.hoverEffects.enabled && (wa.x = N - wa.width / 2, wa.y = ia - wa.height / 2, delete wa.r), delete ja.r, X = t.rect(aa.x, aa.y, ha, ga, 0, l).attr(ja));
                        if (na && pa) {
                            ra > ka && (ra = ka);
                            ta > ma && (ta = ma);
                            switch (oa) {
                            case "middle":
                                wa = ia - ra / 2;
                                break;
                            case "bottom":
                                wa = ka > ra ? ia + ka / 2 - ra : ia - ra / 2;
                                break;
                            default:
                                wa = ka > ra ? ia - .5 * ka : ia - ra / 2
                            }
                            Y.imageX = N - ta / 2;
                            Y.imageY = wa;
                            V || (V = t.image(l));
                            V.attr({ src: pa, x: Y.imageX, y: wa, width: ta, height: ra })
                        }
                        Y = O.displayValue;
                        if (S(Y) || Y !== z) {
                            ma = x.getSmartText(Y, ma, ka);
                            Y = .5 * ka - .5 * ma.height;
                            switch (va) {
                            case "top":
                                Y = -Y;
                                break;
                            case "bottom":
                                break;
                            default:
                                Y = 0
                            }
                            O._yAdjustment = va = Y;
                            ia += va;
                            Z ? Z.attr({ text: ma.text, title: ma.tooltext || "", fill: w.color, x: N, y: ia }) : (Z = t.text(l), Z.attr({ text: ma.text, fill: w.color, x: N, y: ia, "text-bound": [w.backgroundColor, w.borderColor, w.borderThickness, w.borderPadding, w.borderRadius, w.borderDash] }).css($))
                        }
                        A[ba] = O;
                        U.index = k;
                        U.graphic = X;
                        U.label =
                            Z;
                        U.image = V;
                        ba = a.drawTracker && a.drawTracker.call(a, b, d, k, ja);
                        X && c.push(X);
                        Z && c.push(Z);
                        V && c.push(V);
                        ba && c.push(ba)
                    }
                    U.index = k;
                    U.tracker = ba
                }
                if (B)for (k = E.length - 1; 0 <= k; k -= 1)c = E[k], A[c.from] && A[c.to] && (E.splice(k, 1), B.push(new sa(c, A, y, t, m, a)));
                else for (B = f.connectorsStore = [], E = f.invalConnectStore = [], k = 0; k < D.length; k += 1)jb(D[k].connector, R);
                if (!a.dragLabelsDrawn && (da = f.dragableLabels) && 0 < (G = da.length)) {
                    ma = a.plotSizeX;
                    ka = a.plotSizeY;
                    c = parseInt(n.fontSize, 10);
                    r = n.backgroundColor;
                    v = n.borderColor;
                    for (k = 0; k <
                        G; k += 1)
                        if (x = da[k], x.index = k, $ = F(h(x.text, x.label)))
                            $ = F($), R = s.getAxisPosition(x.x || 0), ia = q.getAxisPosition(x.y || 0, 0, 1, 0, 1), O = g(x.fontsize, c), N = Ga(h(x.color, n.color)), l = g(x.alpha, 100) / 100, w = g(x.allowdrag, 1), va = .8 * O, D = g(x.padding, 5), V = { fontSize: O + "px", fontFamily: n.fontFamily, fill: N, color: N, opacity: l }, kc(V), N = h(x.bgcolor, r), U = h(x.bordercolor, v), O = { link: x.link, text: $, x: R, y: ia, allowdrag: w, sourceType: "labelnode" }, N && (V.backgroundColor = N.replace(sb, Na), V.backgroundOpacity = l), U && (V.borderColor = U.replace(sb,
                                    Na), V.borderOpacity = l), $ = t.text(p).css(V).attr({ text: $, x: R, y: ia, align: Pa, "text-bound": [(x.bgcolor || "").replace(sb, Na), (x.bordercolor || "").replace(sb, Na), g(x.borderthickness, 1), D, g(x.radius, 0), g(x.dashed, 0) ? xa(g(x.dashlen, 5), g(x.dashgap, 4), g(x.borderthickness, 1)) : void 0] }), R = $.getBBox(), D = t.rect(R.x - D, R.y - D, R.width + 2 * D, R.height + 2 * D, 0).attr({ fill: qa, ishot: !0, "stroke-width": 0 }).css({ cursor: w ? "move" : "" }).mousedown(K).mousemove(J).mouseup(ca).data("viewMode", f.chart.viewMode).hover(I, M), p.appendChild(D),
                                D.data("data", { label: $, labelNode: x, chart: a }).data("eventArgs", O).data("link", x.link), w && D.drag(P, L, W);
                    a.dragLabelsDrawn = !0
                }
                return e
            },
            drawTracker: function(b, d, a, c) {
                var e = this, f = e.paper, g = b.data[a], n = b.items[a], t = g._config, l = e.layers.tracker, r = hb({}, t.pointAttr), k = t.shapeArg, m = k.x, s = k.y, q = k.width, v = k.height, G = k.radius, x = e.dragStart, w = e.dragUp, y = e.dragMove, D = e.elements, B = D.waitElement, A = g.link ? "pointer" : g.allowDrag ? "move" : "", E = n.tracker;
                r.fill = qa;
                r.stroke = qa;
                r.cursor = A;
                r.ishot = !0;
                E = "rect" === t.shapeType ?
                    f.rect(m, s, q, v, 0).attr(r) : f.polypath(k.sides, m, s, G, k.startAngle).attr(r);
                r = { index: a, link: g.link, y: g.y, x: g.x, shape: h(g._options.shape, "rect"), width: q, height: v, radius: G, sides: k.sides, label: g.displayValue, toolText: g.toolText, id: g.id, datasetIndex: b.index, datasetName: b.name, sourceType: "dataplot" };
                n.tracker = E.mousedown(function(a) {
                    var b = this, c = ob && Ka(a) || Pb, h = a.layerX || c.layerX, k = a.layerY || c.layerY, n = u.getPosition(e.container);
                    b.data("fire_click_event", 1);
                    b.data("mousedown", 1);
                    void 0 === h && (h = (a.pageX ||
                        c.pageX) - n.left, k = (a.pageY || c.pageY) - n.top);
                    clearTimeout(b._longpressactive);
                    b.data("move", !0);
                    e.options.chart.viewMode || ((B = D.waitElement) || (B = D.waitElement = f.ringpath(l).attr({ fill: ea({ alpha: "100,100", angle: 120, color: "CCCCCC,FFFFFF", ratio: "30,50" }), "stroke-width": 0 })), h += 11, k -= 21, B.attr({ ringpath: [h, k, 8, 11, 0, 0] }).show().animate({ ringpath: [h, k, 8, 11, 0, 6.28] }, 1E3), b._longpressactive = setTimeout(function() {
                        var a = d.name !== z && void 0 !== d.name ? d.name + ya + " " : z,
                            c = d.id,
                            f = g._options,
                            h = {
                                circle: "circ",
                                polygon: "poly",
                                undefined: "rect"
                            }[f.shape];
                        D.waitElement && D.waitElement.hide();
                        b.data("fire_click_event", 0);
                        e.logic.showNodeUpdateUI(e, {
                            x: { value: g.x },
                            y: { value: g.y },
                            draggable: { value: da(f.allowdrag, 1) },
                            color: { value: f.color },
                            alpha: { value: f.alpha },
                            label: { value: da(f.label, f.name) },
                            tooltip: { value: f.tooltext },
                            shape: { value: h },
                            rectWidth: { value: f.width },
                            rectHeight: { value: f.height },
                            circPolyRadius: { value: f.radius },
                            polySides: { value: f.numsides },
                            image: { value: f.imagenode },
                            imgWidth: { value: f.imagewidth },
                            imgHeight: { value: f.imageheight },
                            imgAlign: { value: f.imagealign },
                            imgUrl: { value: f.imageurl },
                            id: { value: g.id, disabled: !0 },
                            link: { value: f.link },
                            dataset: { innerHTML: '<option value="' + c + '">' + a + c + "</option>", disabled: !0 }
                        }, !0)
                    }, 1E3))
                }).mousemove(function() {
                    D.waitElement && D.waitElement.hide();
                    this.data("fire_click_event", 0);
                    $a.call(this)
                }).mouseup(function(a) {
                    var b = this.data("fire_click_event");
                    D.waitElement && D.waitElement.hide();
                    $a.call(this);
                    this.data("mousedown", 0);
                    b && ua.call(this, e, a)
                }).hover(function(a, b) {
                    return function(c) {
                        a.graphic.attr(b);
                        ua.call(this, e, c, "DataPlotRollOver")
                    }
                }(n, g.hoverEffects.rolloverProperties), function(a, b) {
                    return function(c) {
                        a.graphic.attr(b);
                        ua.call(this, e, c, "DataPlotRollOut")
                    }
                }(n, c)).data("eventArgs", r).data("drag-options", {
                    plotItems: n,
                    dataObj: g,
                    endConnectors: t.endConnectors,
                    startConnectors: t.startConnectors,
                    boundaryTop: e.canvasTop,
                    boundaryBottom: e.canvasTop + e.canvasHeight,
                    boundaryLeft: e.canvasLeft,
                    boundaryRight: e.canvasLeft + e.canvasWidth,
                    cloneGroup: e.layers.dataset,
                    datasetIndex: b.index,
                    pointIndex: a,
                    dataOptions: d,
                    cursor: A,
                    chart: e,
                    link: g.link
                }).tooltip(g.toolText);
                l.appendChild(E);
                g.allowDrag && E.drag(function(a, b, c, d, f) { y.call(this, a, b, c, d, f, e) }, function(a, b, c, d, f) { x.call(this, a, b, c, d, f, e) }, function(a) { w.call(this, a, e) });
                return E
            },
            dragStart: function() {
                var b = this.paper, d = this.data("drag-options") || {}, a = d.dataObj, c = d.plotItems, e = c.cloneGroup, f = c.cloneGraphic, g = c.cloneImage, h = c.cloneLabel, t = this.getBBox(), l = { opacity: .3 };
                d.bBoxX = t.x;
                d.bBoxX2 = t.x2 || t.x + t.width;
                d.bBoxY = t.y;
                d.bBoxY2 = t.y2 || t.y + t.height;
                d.origX = d.lastX ||
                (d.lastX = 0);
                d.origY = d.lastY || (d.lastY = 0);
                d.draged = !1;
                d.startYValue = a.y;
                d.startXValue = a.x;
                e || (e = c.cloneGroup = b.group(d.cloneGroup).attr(l));
                c.graphic && !f && (f = c.cloneGraphic = c.graphic.clone(), e.appendChild(f), f.attr(l));
                c.image && !g && (g = c.cloneImage = c.image.clone(), e.appendChild(g).attr(l));
                c.label && !h && (h = c.cloneLabel = c.label.clone(), e.appendChild(h).attr(l));
                e.show()
            },
            dragMove: function(b, d, a, c, e, f) {
                a = this.data("drag-options");
                c = a.plotItems;
                var g = a.bBoxX2 + b, h = a.bBoxY + d, t = a.bBoxY2 + d;
                a.bBoxX + b < a.boundaryLeft &&
                (b = a.boundaryLeft - a.bBoxX);
                g > a.boundaryRight && (b = a.boundaryRight - a.bBoxX2);
                h < a.boundaryTop && (d = a.boundaryTop - a.bBoxY);
                t > a.boundaryBottom && (d = a.boundaryBottom - a.bBoxY2);
                g = a._transformObj = { transform: "t" + (a.origX + b) + "," + (a.origY + d) };
                this.attr(g);
                c.cloneGraphic && c.cloneGraphic.attr(g);
                c.cloneImage && c.cloneImage.attr(g);
                c.cloneLabel && c.cloneLabel.attr(g);
                a.draged || ua.call(this, f, e, "DataplotDragStart");
                a.draged = !0;
                a.lastX = b;
                a.lastY = d
            },
            dragUp: function(b) {
                var d = this.data("drag-options"),
                    a = d.plotItems,
                    c = d.chart,
                    e = c.xAxis[0],
                    f = c.yAxis[0],
                    g = c.logic,
                    h = g.tooltipSepChar,
                    t = g.numberFormatter,
                    l = d.dataObj,
                    r,
                    k,
                    m,
                    s,
                    q;
                if (d.draged) {
                    d.lastX += d.origX;
                    d.lastY += d.origY;
                    r = l._xPos + d.lastX;
                    k = l._yPos + d.lastY;
                    m = d.startConnectors;
                    s = m.length;
                    for (q = 0; q < s; q += 1)m[q].updateFromPos(r, k);
                    m = d.endConnectors;
                    s = m.length;
                    for (q = 0; q < s; q += 1)m[q].updateToPos(r, k);
                    a.label && a.label.attr(d._transformObj);
                    a.image && a.image.attr(d._transformObj);
                    a.graphic && a.graphic.attr(d._transformObj);
                    e = e.getAxisPosition(r, 1);
                    f = f.getAxisPosition(k, 1);
                    l._isUserTooltip ||
                        l.toolText === z || (l.toolText = l._toolTextStr + t.dataLabels(e) + h + t.dataLabels(f));
                    t = this.data("eventArgs");
                    l.x = t.x = e;
                    l.y = t.y = f;
                    h = fc(c.container, b);
                    h.sourceEvent = "dataplotdragend";
                    u.raiseEvent("chartupdated", H(h, t), c.logic.chartInstance);
                    ua.call(this, c, b, "dataplotdragend");
                    b = { hcJSON: { series: [] } };
                    b.hcJSON.series[d.datasetIndex] = { data: [] };
                    b.hcJSON.series[d.datasetIndex].data[d.pointIndex] = { _options: { x: e, y: f }, x: e, y: f, toolText: l.toolText, displayValue: l.displayValue };
                    H(g.chartInstance.jsVars._reflowData, b,
                        !0)
                }
                a.cloneGroup && a.cloneGroup.hide()
            }
        }, q["renderer.cartesian"]);
        q("renderer.dragcolumn2d", {
            drawTracker: function(b, d, a) {
                var c = this.paper, e = this.yAxis[0], f = b.data[a], g = e.getAxisPosition(f.y), h = b.items[a], t = this.layers.tracker, l = h && h.dragTracker || null, r = this.dragStart, k = this.dragUp, m = this.dragMove, s = { stroke: qa, "stroke-width": ob ? 40 : 10, ishot: !0, cursor: Aa && "ns-resize" || "n-resize" }, q = e && e.axisData && e.axisData.plotLines, u = this._yAxisPlotLines || (this._yAxisPlotLines = []), v = 0, x, w;
                if (!u.length)
                    for (x = q.length; v <
                        x; v += 1)w = q[v], w.isGrid && u.push(e.getAxisPosition(w.value));
                null !== f.y && f.allowDrag && (e = h.graphic.getBBox(), e = ["M", e.x, g, "L", e.x + e.width, g, "Z"], l ? l.animate({ d: e }).attr(s) : l = h.dragTracker = c.path(e, t).attr(s), l.drag(m, r, k).data("drag-options", { items: h, yPos: g, chart: this, datasetIndex: b.index, pointIndex: a, dataOptions: d, dataObj: f }), h.dragTracker = l)
            },
            dragStart: function() {
                var b = this.data("drag-options"), d = b.chart, a = d.yAxis[0], c = a.max, a = a.min, e = this.getBBox();
                b.barH = b.items.graphic.getBBox().height;
                b.isAllPositive =
                    0 < c && 0 < a;
                b.isAllPositiveZero = 0 < c && 0 <= a;
                b.isAllNegative = 0 > c && 0 > a;
                b.isAllNegativeZero = 0 >= c && 0 > a;
                b.isPositiveNegative = 0 < c && 0 > a;
                b.boundaryTop = d.canvasTop;
                b.boundaryBottom = d.canvasTop + d.canvasHeight;
                b.bBoxY = e.y;
                b.bBoxY2 = e.y2 || e.y + e.height;
                b.startValue = b.dataObj.y;
                b.origX = b.lastX || (b.lastX = 0);
                b.origY = b.lastY || (b.lastY = 0);
                b.draged = !1
            },
            dragMove: function(b, d) {
                var a = this.data("drag-options"),
                    c = a.items,
                    e = a.dataObj,
                    f = a.chart,
                    g = f.options.chart,
                    h = f.yAxis[0],
                    t = f.logic.numberFormatter,
                    l = h.yBasePos,
                    r = c.dataLabel,
                    k = {},
                    m = a.bBoxY2 + d,
                    s = a.bBoxY + d,
                    q = f.canvasBottom,
                    u = e.allowNegDrag ? q : l,
                    v = f.canvasTop,
                    x = parseFloat(e.borderWidth) || 0,
                    g = g.isCanvasBorder,
                    w = a.isAllNegativeZero,
                    y = a.isPositiveNegative,
                    D = a.dataOptions;
                s < a.boundaryTop && (d = a.boundaryTop - a.bBoxY);
                m > u && (d = u - a.bBoxY2);
                s = a._transformObj = { transform: "t0," + (a.origY + d) };
                a.draged || (m = { dataIndex: a.pointIndex + 1, datasetIndex: D.__i + 1, startValue: a.startValue, datasetName: D.name }, A.raiseEvent("dataplotDragStart", m, f.logic.chartInstance));
                m = a.yPos + d;
                m <= l ? (k.y = m, k.height = l -
                    m) : (k.y = l, k.height = m - l);
                g && !y && (w ? k.y -= k.y - (v - x / 2) : k.height = q - k.y + x / 2);
                this.attr(s);
                c.graphic.animate(k);
                a.shapeAttr = k;
                c = a.value = ma(1E8 * h.getAxisPosition(m, 1)) / 1E8;
                t = t.dataLabels(c);
                eb.pointUpdate(e, t, c);
                r && f.drawPlotColumnLabel(f.plots[a.datasetIndex], a.dataOptions, a.pointIndex, void 0, m).attr("text", a.dataObj.displayValue);
                a.draged = !0;
                a.lastX = b;
                a.lastY = d
            },
            dragUp: function() {
                var b = this.data("drag-options"), d = b.chart, a = d.logic, c = !d.options.chart.doNotSnap, e = b.dataObj, f = b.dataOptions, g, h;
                b.draged && (g =
                    b.yPos + b.lastY, c && (h = eb.snapPoint(d, e, g), h - g && d.dragMove.call(this, 0, h - b.yPos)), b.yPos = h, b.lastX += b.origX, b.lastY += b.origY, c = { dataIndex: b.pointIndex + 1, datasetIndex: f.__i + 1, startValue: b.startValue, endValue: b.dataObj.y = b.value, datasetName: f.name }, f = [d.logic.chartInstance.id, c.dataIndex, c.datasetIndex, c.datsetName, c.startValue, c.endValue], A.raiseEvent("dataplotDragEnd", c, d.logic.chartInstance), u.raiseEvent("chartupdated", c, d.logic.chartInstance, f), c = { hcJSON: { series: [] } }, c.hcJSON.series[b.datasetIndex] =
                { data: [] }, b.items.tracker.attr(b.shapeAttr).tooltip(e.toolText), c.hcJSON.series[b.datasetIndex].data[b.pointIndex] = { y: b.value, toolText: e.toolText, displayValue: e.displayValue }, eb.setMinMaxValue(d), H(a.chartInstance.jsVars._reflowData, c, !0))
            }
        }, q["renderer.cartesian"]);
        q("renderer.dragline", {
            drawTracker: function(b, d, a) {
                var c = this.paper,
                    e = this.yAxis[0],
                    f = this.xAxis[0],
                    g = b.data[a],
                    h = b.items[a],
                    t = ob ? 20 : Xa(g.marker && g.marker.radius || 0, 5),
                    l = this.layers.tracker,
                    r = h.tracker || null,
                    k = this.dragStart,
                    m = this.dragUp,
                    s = this.dragMove,
                    q = { fill: qa, "stroke-width": 0, cursor: Aa && "ns-resize" || "n-resize" },
                    u = e && e.axisData && e.axisData.plotLines,
                    v = this._yAxisPlotLines || (this._yAxisPlotLines = []),
                    x = 0,
                    w,
                    y;
                if (!v.length)for (w = u.length; x < w; x += 1)y = u[x], y.isGrid && v.push(e.getAxisPosition(y.value));
                null !== g.y && g.allowDrag && (f = f.getAxisPosition(a), e = e.getAxisPosition(g.y), r || (r = h.tracker = c.circle(f, e, t, l).attr(q)), r.attr({ cursor: Aa && "ns-resize" || "n-resize", ishot: !0 }).drag(s, k, m).data("drag-options", {
                    items: b.items,
                    yPos: e,
                    chart: this,
                    datasetIndex: b.index,
                    pointIndex: a,
                    dataOptions: d,
                    dataObj: g
                }))
            },
            dragStart: function() {
                var b = this.data("drag-options"), d = b.items, a = b.pointIndex, c = d[a + 1], d = d[a], c = b.nextGraph = c && c.connector, d = b.currGraph = d && d.connector, a = b.chart;
                b._origY = b._lastY || (b._lastY = 0);
                b.boundaryTop = a.canvasTop;
                b.boundaryBottom = a.canvasTop + a.canvasHeight;
                b.currPath = d && d.attr("path");
                b.nextPath = c && c.attr("path");
                b.startValue = b.dataObj.y;
                b.origY = this.attr("cy");
                b.origX = this.attr("cx");
                b.draged = !1
            },
            dragMove: function(b, d) {
                var a = this.data("drag-options"),
                    c = a.items[a.pointIndex],
                    e = a.nextPath,
                    f = a.currPath,
                    g = a.dataObj,
                    h = a.chart,
                    t = h.elements.plots[a.datasetIndex],
                    l = h.yAxis[0],
                    r = h.logic.numberFormatter,
                    k = l.yBasePos,
                    m = c.dataLabel,
                    s = g.allowNegDrag ? a.boundaryBottom : k,
                    q = a.dataOptions,
                    k = a.origY + d;
                a.draged || (q = { dataIndex: a.pointIndex + 1, datasetIndex: q.__i + 1, startValue: a.startValue, datasetName: q.name }, A.raiseEvent("dataplotDragStart", q, h.logic.chartInstance));
                k < a.boundaryTop && (d = a.boundaryTop - a.origY);
                k > s && (d = s - a.origY);
                k = a.origY + d;
                this.animate({ cy: k });
                c.graphic &&
                    c.graphic.attr("transform", "t0," + (a._origY + d));
                e && e[0] && a.nextGraph && (Aa ? e[0][2] = k : e[2] = k, a.nextGraph.animate({ path: e }));
                f && f[1] && a.currGraph && (Aa ? f[1][2] = k : f[5] = k, a.currGraph.animate({ path: f }));
                c = g.y = a.value = ma(1E8 * l.getAxisPosition(k, 1)) / 1E8;
                r = r.dataLabels(c);
                eb.pointUpdate(g, r, c);
                m && h.drawPlotLineLabel(h.plots[a.datasetIndex], a.dataOptions, a.pointIndex, a.origX, k).attr("text", g.displayValue);
                a.draged = !0;
                a.lastY = d;
                h.getAreaPath && t.graphic && t.graphic.attr({ path: h.getAreaPath(t.data) })
            },
            dragUp: function() {
                var b =
                        this.data("drag-options"),
                    d = b.chart,
                    a = d.logic,
                    c = !d.options.chart.doNotSnap,
                    e = b.dataObj,
                    f = b.dataOptions,
                    g,
                    h;
                b.draged && (g = b.yPos + b.lastY, c && (h = eb.snapPoint(d, e, g), h - g && d.dragMove.call(this, 0, h - b.yPos)), b.yPos = h, b._lastY = b.lastY + b._origY, b.lastY += b.origY, f = { dataIndex: b.pointIndex + 1, datasetIndex: f.__i + 1, startValue: b.startValue, endValue: b.dataObj.y = b.value, datasetName: f.name }, c = [d.logic.chartInstance.id, f.dataIndex, f.datasetIndex, f.datasetName, f.startValue, f.endValue], A.raiseEvent("dataplotDragEnd", f,
                    d.logic.chartInstance), u.raiseEvent("chartupdated", f, d.logic.chartInstance, c), c = { hcJSON: { series: [] } }, c.hcJSON.series[b.datasetIndex] = { data: [] }, c.hcJSON.series[b.datasetIndex].data[b.pointIndex] = { y: b.value, toolText: e.toolText, displayValue: e.displayValue }, b.items[b.pointIndex].tracker.tooltip(e.toolText), eb.setMinMaxValue(d), H(a.chartInstance.jsVars._reflowData, c, !0))
            }
        }, q["renderer.cartesian"]);
        q("renderer.dragarea", {
            getAreaPath: function(b) {
                for (var d = this.xAxis[0],
                    a = this.yAxis[0],
                    c = a.yBasePos,
                    e = b.length,
                    f = 0,
                    g = [],
                    h = [],
                    t = [],
                    l = !0,
                    r,
                    k,
                    m; f < e; f += 1)k = b[f], t[f] = d.getAxisPosition(f), h[f] = null, null !== k.y && (h[f] = a.getAxisPosition(k.y), m = b[f - 1] ? b[f - 1].y : null, k = b[f + 1] ? b[f + 1].y : null, null !== m ? (l ? (g.push("M", t[f - 1], c, "L", t[f - 1], h[f - 1], "L", t[f], h[f]), r = f - 1) : g.push("L", t[f], h[f]), null === k && g.push("L", t[f], c, "L", t[r], c), l = !1) : l = !0);
                return g
            }
        }, q["renderer.dragline"]);
        q("renderer.heatmap", {
            drawPlotHeatmap: function(b, d) {
                var a = this,
                    c = b.data,
                    e = b.items,
                    f = b.graphics = b.graphics || [],
                    h = a.paper,
                    n = a.layers,
                    t = a.options,
                    l = t.chart,
                    r = l.showHoverEffect,
                    k = !1 !== (t.tooltip || {}).enabled,
                    m = t.plotOptions.series,
                    t = a.xAxis[d.xAxis || 0],
                    s = a.yAxis[d.yAxis || 0],
                    m = isNaN(+m.animation) && m.animation.duration || 1E3 * m.animation,
                    q = !1 === d.visible ? "hidden" : "visible",
                    u,
                    v,
                    x = t.getAxisPosition(0),
                    w = t.getAxisPosition(1),
                    y = s.getAxisPosition(0),
                    D = s.getAxisPosition(1),
                    x = w - x,
                    y = y - D,
                    l = g(l.useRoundEdges, 0),
                    D = d.borderColor,
                    w = d.borderWidth,
                    z = d.dashStyle,
                    B = x / 2,
                    E = y / 2,
                    A = n.dataset = n.dataset || h.group("dataset-orphan"),
                    R = n.datalabels = n.datalabels || h.group("datalables").insertAfter(A),
                    n = n.tracker,
                    K = a.chartWidth,
                    F = a.chartHeight,
                    H = function(b) { ua.call(this, a, b) },
                    J = function(b) { ua.call(this, a, b, "DataPlotRollOver") },
                    M = function(b) { ua.call(this, a, b, "DataPlotRollOut") },
                    I = function(a, b) { return function() { a.attr({ fill: ea(b) }) } },
                    L,
                    W,
                    O,
                    N,
                    P,
                    X,
                    Q,
                    S,
                    V;
                m && (R.attr({ transform: "t" + K + "," + F }), a.animationCompleteQueue.push({ fn: function() { R.attr({ transform: "t0,0" }) }, scope: this }));
                K = 0;
                for (F = c.length; K < F; K++) {
                    N = c[K];
                    W = N.y;
                    L = null;
                    if (null !== W) {
                        P = N.link;
                        X = N.toolText || N.tooltext;
                        L = ea(N.setColor || N.color);
                        v = (u =
                            N.visible) && !1 === u ? "hiddden" : q;
                        Q = g(N.x, K);
                        Q = t.getAxisPosition(Q) - B;
                        V = s.getAxisPosition(W);
                        S = V + E;
                        W = { link: P, value: N.value, columnId: N.columnId, rowId: N.rowId, displayValue: N.displayValue, tlLabel: N.tlLabel, trLabel: N.trLabel, blLabel: N.blLabel, brLabel: N.brLabel, toolText: X, id: b.userID, datasetIndex: b.index, datasetName: b.name, visible: b.visible };
                        L = h.rect(Q, V, x, y, l, A).attr({
                            fill: L,
                            stroke: D,
                            "stroke-width": w,
                            "stroke-dasharray": z,
                            "stroke-linejoin": "miter",
                            "shape-rendering": 0 === l ? "crisp" : "",
                            cursor: P ? "pointer" : "",
                            opacity: m ? 0 : N.setAlpha && +N.setAlpha / 100 || 1
                        }).crisp().attr({ visibility: v });
                        m && L.animate({ opacity: N.setAlpha && +N.setAlpha / 100 || 1 }, m, "normal", a.getAnimationCompleteFn());
                        if (r || k || P)O = h.rect(Q, V, x, y, l, n).attr({ cursor: P ? "pointer" : "", stroke: qa, "stroke-width": w, fill: qa, ishot: !0 }).data("eventArgs", W);
                        (O || L).click(H).hover(J, M).tooltip(X);
                        1 === r && L && O && O.hover(I(L, N.hoverColor), I(L, N.setColor || N.color));
                        e[K] = { index: K, value: N.value, graphic: L, tracker: O, dataLabel: null, dataLabels: [], visible: u || "hidden" !== v };
                        u =
                            a.drawLabelHeatmap.call(a, b, d, K);
                        L && f.push(L);
                        O && f.push(O);
                        v = 0;
                        for (N = u.length; v < N; v++)!e[K].dataLabels && (e[K].dataLabels = []), u[v] && f.push(u[v]), e[K].dataLabels.push(u[v])
                    }
                    a.drawTracker && a.drawTracker.call(a, b, K, Q, S)
                }
                b.visible = !1 !== d.visible;
                return b
            },
            drawLabelHeatmap: function(b, d, a) {
                var c = b.items[a], e = b.data[a];
                b = this.paper;
                a = this.layers.datalabels;
                var f = this.options.plotOptions.series.dataLabels, g = f.style;
                d = !1 === d.visible ? "hidden" : Gb;
                var h = e.displayValue,
                    t = e.tlLabel,
                    l = e.trLabel,
                    r = e.blLabel,
                    e = e.brLabel,
                    k = f.tlLabelStyle,
                    m = f.trLabelStyle,
                    s = f.blLabelStyle,
                    f = f.brLabelStyle,
                    q = { fontFamily: k.fontFamily, fontSize: k.fontSize, lineHeight: k.lineHeight, fontWeight: k.fontWeight, fontStyle: k.fontStyle },
                    u = { fontFamily: m.fontFamily, fontSize: m.fontSize, lineHeight: m.lineHeight, fontWeight: m.fontWeight, fontStyle: m.fontStyle },
                    v = { fontFamily: s.fontFamily, fontSize: s.fontSize, lineHeight: s.lineHeight, fontWeight: s.fontWeight, fontStyle: s.fontStyle },
                    x = {
                        fontFamily: f.fontFamily,
                        fontSize: f.fontSize,
                        lineHeight: f.lineHeight,
                        fontWeight: f.fontWeight,
                        fontStyle: f.fontStyle
                    },
                    w = c.tlLabel,
                    y = c.trLabel,
                    D = c.blLabel,
                    B = c.brLabel,
                    A = this.smartLabel,
                    E = c.dataLabel,
                    F = [],
                    R = { fontFamily: g.fontFamily, fontSize: g.fontSize, lineHeight: g.lineHeight, fontWeight: g.fontWeight, fontStyle: g.fontStyle },
                    K,
                    H,
                    J,
                    I,
                    M,
                    P,
                    L,
                    W;
                I = c.graphic.getBBox();
                K = I.width;
                H = I.height;
                J = I.x;
                I = I.y;
                A.setStyle(g);
                S(h) && h !== z && (L = A.getSmartText(h, K, H, !1), h = L.text, E || (E = c.dataLabel = b.text(a)), E.attr({
                    text: h,
                    title: L.tooltext || "",
                    visibility: d,
                    fill: g.color,
                    x: J + .5 * K,
                    y: I + .5 * H,
                    "text-bound": [
                        g.backgroundColor,
                        g.borderColor, g.borderThickness, g.borderPadding, g.borderRadius, g.borderDash
                    ]
                }).css(R), F.push(E));
                h = S(t) && t !== z;
                R = S(l) && l !== z;
                M = S(r) && r !== z;
                P = S(e) && e !== z;
                g = K * (h && R ? .5 : .9);
                E = .5 * (H - (L && L.height || 0));
                W = I + 4;
                h && (A.setStyle(k), L = A.getSmartText(t, g, E, !1), h = L.text, t = J, w || (w = c.tlLabel = b.text(a)), w.attr({ text: h, title: L.tooltext || "", visibility: d, fill: k.color, "text-anchor": "start", "vertical-align": Ia, x: t + 4, y: W, "text-bound": [k.backgroundColor, k.borderColor, k.borderThickness, k.borderPadding, k.borderRadius, k.borderDash] }).css(q),
                    a.appendChild(w), F.push(w));
                R && (A.setStyle(m), L = A.getSmartText(l, g, E, !1), h = L.text, t = J + K, y || (y = c.trLabel = b.text(a)), y.attr({ text: h, title: L.tooltext || "", visibility: d, fill: m.color, "text-anchor": "end", "vertical-align": Ia, x: t - 4, y: W, "text-bound": [m.backgroundColor, m.borderColor, m.borderThickness, m.borderPadding, m.borderRadius, m.borderDash] }).css(u), a.appendChild(y), F.push(y));
                W = I + H - 4;
                M && (A.setStyle(s), L = A.getSmartText(r, g, E, !1), h = L.text, t = J, D || (D = c.blLabel = b.text(a)), D.attr({
                    text: h,
                    title: L.tooltext || "",
                    visibility: d,
                    fill: s.color,
                    "text-anchor": "start",
                    "vertical-align": Ba,
                    x: t + 4,
                    y: W,
                    "text-bound": [s.backgroundColor, s.borderColor, s.borderThickness, s.borderPadding, s.borderRadius, s.borderDash]
                }).css(v), F.push(D));
                P && (A.setStyle(s), L = A.getSmartText(e, g, E, !1), h = L.text, t = J + K - 4, B || (B = c.brLabel = b.text(a)), B.attr({
                    text: h,
                    title: L.tooltext || "",
                    visibility: d,
                    fill: f.color,
                    "text-anchor": "end",
                    "vertical-align": Ba,
                    x: t,
                    y: W,
                    "text-bound": [
                        f.backgroundColor, f.borderColor, f.borderThickness, f.borderPadding, f.borderRadius,
                        f.borderDash
                    ]
                }).css(x), a.appendChild(B), F.push(B));
                return F
            },
            setScaleRange: function(b, d) {
                var a = this.logic, c = this.plots[0], e = { visibility: "visible" }, f = { visibility: "hidden" }, g = { hcJSON: { series: [{}] } }, h = g.hcJSON.series[0], t = h.data || (h.data = []), l = a.chartInstance.jsVars._reflowData, r = c.items, k, m, s, q, u, v, x, w = function(a) { a.attr(v) };
                setTimeout(function() {
                    var a, c;
                    a = 0;
                    for (c = r.length; a < c; a++)k = r[a], m = k.value, s = k.graphic, u = t[a] || (t[a] = {}), q = k.dataLabels, v = (x = m >= b && m <= d) ? e : f, s.attr(v), jb(q, w), u.visible = x;
                    H(l, g,
                        !0)
                }, 100)
            }
        }, q["renderer.cartesian"]);
        q("renderer.radar", {
            createRadarAxis: function() {
                var b = this.options, d = this.canvasLeft + this.canvasWidth / 2, a = this.canvasTop + this.canvasHeight / 2, c = b.xAxis, e = b.yAxis instanceof Array ? b.yAxis[0] : b.yAxis, f = c.max - c.min + 1, g = P(e.max - e.min), b = S(b.chart.axisRadius) ? b.chart.axisRadius : J(d, a), h, t = Ma.PI / 2, l = {};
                0 > b && (b = J(d, a));
                h = 2 * Ma.PI / f;
                l.yTrans = b / g;
                l.xTrans = h;
                l.yRange = g;
                l.startAngle = t;
                l.yMin = e.min;
                l.centerX = d;
                l.centerY = a;
                l.radius = b;
                l.categories = [];
                l.catLength = f;
                l.yAxis = e;
                l.xAxis =
                    c;
                return this.radarAxis = l
            },
            drawRadarAxis: function() {
                var b = this.radarAxis,
                    d = b.catLength,
                    a = b.xAxis,
                    c = b.yAxis,
                    e = c.min,
                    f = c.plotLines,
                    p = f.length,
                    n = a.plotLines,
                    t = b.xTrans,
                    l = b.yTrans,
                    r = b.radius,
                    k = b.startAngle,
                    m = this.canvasLeft + this.canvasWidth / 2,
                    s = this.canvasTop + this.canvasHeight / 2,
                    q = this.paper,
                    u = this.layers,
                    v = u.dataset = u.dataset || q.group("orphan-dataset").trackTooltip(!0),
                    x = u.layerBelowDataset = u.layerBelowDataset || q.group("axisbottom").trackTooltip(!0),
                    w = u.layerAboveDataset = u.layerAboveDataset || q.group("axistop").trackTooltip(!0),
                    y = u.axisLines = u.axisLines || q.group("axis-lines", x),
                    D = u.axisLabels = u.axisLabels || q.group("axis-labels", x),
                    z = c.labels,
                    c = 2 * Ma.PI,
                    B = Ma.PI / 2,
                    E = Ma.PI + B,
                    A = !1 !== (this.options.tooltip || {}).enabled,
                    F = ["right", "center", "left"],
                    K = a.labels,
                    H = g(.9 * parseInt(K.style && K.style.fontSize, 10), 9) / 2,
                    K = r + K.labelPadding,
                    J = [],
                    I = ["M"],
                    M = [],
                    S = this.logic.smartLabel,
                    L,
                    W,
                    O,
                    N,
                    U,
                    X;
                x.insertBefore(v);
                w.insertAfter(v);
                b.divline = [];
                for (U = 0; U < p; U += 1) {
                    M[U] = ["M"];
                    x = !0;
                    v = d;
                    L = f[U];
                    X = L.tooltext;
                    for (W = L.value; v--;)
                        z = P(W - e) * l, O = m + z * ta(-(k + v *
                            t)), N = s + z * Za(-(k + v * t)), M[U].splice(M[U].length, 0, O, N), x && (M[U].push("L"), x = !1), 0 === v && L.label && (z = L.label, ((w = z.text) || 0 === w) && q.text(D).attr({ text: w, x: O, y: N, "text-anchor": "right" === z.textAlign ? "end" : "left" === z.textAlign ? "start" : "middle", "vertical-align": z.verticalAlign, rotation: z.rotation }).css(z.style));
                    M[U].push("Z");
                    b.divline[U] = q.path(M[U], y).attr({ stroke: L.color, "stroke-width": L.width });
                    A && X && q.path({ stroke: qa, "stroke-width": Xa(L.width, dc), ishot: !0, path: M[U] }, u.tracker).toBack().tooltip(X)
                }
                x =
                    !0;
                for (v = n.length; v--;)
                    if (L = n[v], W = L.value, A = k + W * t, d = A % c, O = m + r * ta(-A), N = s + r * Za(-A), J.splice(J.length, 0, "M", m, s, "L", O, N), I.splice(I.length, 0, O, N), x && (I.push("L"), x = !1), L.label && (z = L.label, (w = z.text) || 0 === w)) {
                        f = d > B && d < E ? 0 : d == B || d == E ? 1 : 2;
                        d = z.style;
                        e = { fontFamily: d.fontFamily, fontSize: d.fontSize, lineHeight: d.lineHeight, fontWeight: d.fontWeight, fontStyle: d.fontStyle };
                        S.setStyle(e);
                        f = "right" === F[f] ? "end" : "left" === F[f] ? "start" : "middle";
                        p = m + K * ta(-A);
                        l = s + K * Za(-A);
                        L = parseInt(e.lineHeight, 10);
                        M = z.verticalAlign;
                        switch (f) {
                        case "start":
                            u = this.canvasLeft + this.canvasWidth - p;
                            A = n[v - 1];
                            A = k + A.value * t;
                            A = s + K * Za(-A) + H * Za(-A) + H;
                            M = n[v + 1 === n.length ? 0 : v + 1];
                            M = k + M.value * t;
                            M = s + K * Za(-M) + H * Za(-M) + H;
                            L = .5 * (A - l) + .5 * (l - M);
                            M = "middle";
                            break;
                        case "end":
                            u = p - this.canvasLeft;
                            A = n[v + 1];
                            A = k + A.value * t;
                            A = s + K * Za(-A) + H * Za(-A) + H;
                            M = n[v - 1];
                            M = k + M.value * t;
                            M = s + K * Za(-M) + H * Za(-M) + H;
                            L = .5 * (A - l) + .5 * (l - M);
                            M = "middle";
                            break;
                        default:
                            u = this.canvasWidth, l += H * Za(-A) + H
                        }
                        w = S.getSmartText(w, u, L).text;
                        q.text(D).attr({
                            text: w,
                            x: p,
                            y: l,
                            "text-anchor": f,
                            "vertical-align": M,
                            rotation: z.rotation,
                            "text-bound": [d.backgroundColor, d.borderColor, d.borderThickness, d.borderPadding, d.borderRadius, d.borderDash]
                        }).css(e)
                    }
                I.push("Z");
                b.spikeGraph = q.path(J, y).attr({ stroke: a.gridLineColor, "stroke-width": h(a.gridLineWidth, 1) });
                a.showRadarBorder && (b.borderGraph = q.path(I, y).toBack().attr({ stroke: a.radarBorderColor, "stroke-width": h(a.radarBorderThickness, 2), fill: a.radarFillColor }))
            },
            drawPlotRadar: function(b, d) {
                var a = this,
                    c = a.paper,
                    e = a.layers,
                    f = e.dataset = e.dataset || c.group("orphan-dataset"),
                    h = e.datalabels = e.datalabels || c.group("datalabels").insertAfter(f),
                    n = e.tracker = e.tracker || c.group("hot").insertAfter(f),
                    t = a.options,
                    l = t.chart.anchorTrackingRadius,
                    r = t.plotOptions.series,
                    k = [],
                    m = b.items || {},
                    s = b.graphics = b.graphics || [],
                    e = a.radarAxis,
                    u = d.data || [],
                    v = u.length,
                    y,
                    x,
                    w = !1 === d.visible,
                    z = w ? "hidden" : "visible",
                    r = isNaN(+r.animation) && r.animation.duration || 1E3 * r.animation,
                    D,
                    A,
                    B = !1 !== (t.tooltip || {}).enabled,
                    E,
                    H,
                    F,
                    K,
                    I = f.radarGroup = f.radarGroup || c.group("connectors", f),
                    J = f.marker = f.marker || c.group("anchors",
                        f),
                    U = n.trackers = n.trackers || c.group("trackers", n),
                    M = a.chartWidth,
                    S = a.chartHeight,
                    f = [],
                    L,
                    W,
                    O,
                    N,
                    Z,
                    X,
                    Q,
                    ba,
                    V,
                    Y,
                    da,
                    ga,
                    ha,
                    aa,
                    ka,
                    ma,
                    ja = (t = t.cursor) && { cursor: t },
                    oa = q["renderer.cartesian"],
                    na,
                    pa,
                    sa;
                void 0 === a.radarAxis && (e = a.radarAxis = a.createRadarAxis(d), a.drawRadarAxis(d));
                D = e.yTrans;
                E = e.yMin;
                H = e.startAngle;
                A = e.xTrans;
                y = e.centerX;
                x = e.centerY;
                1 <= v && (X = [], jb(u, function(e, f) {
                    V = null;
                    f ? 2 > f && X.push("L") : X.push("M");
                    m[f] = na = k[f] = { chart: a, index: f, value: e.y };
                    if (null === e.y)X.push(y, x);
                    else {
                        Q = Y = null;
                        da = e.link;
                        ga = e.tooltext ||
                            e.toolText;
                        F = y + D * P(e.y - E) * ta(-(H + f * A));
                        K = x + D * P(e.y - E) * Za(-(H + f * A));
                        if (Q = e.anchorElem)Z = g(Q.attr("r"), W.radius), Q.attr({ x: F, y: K, r: Z });
                        else if (W = e.marker, sa = { index: f, link: da, value: e.y, displayValue: e.displayValue, categoryLabel: e.categoryLabel, toolText: ga, id: b.userID, datasetIndex: b.index, datasetName: b.name, visible: b.visible }, W && W.enabled)
                            if (O = W.radius, ha = W.shadow, L = W.symbol.split("_"), N = "spoke" === L[0] ? 1 : 0, ka = ma = {}, aa = e.rolloverProperties, W.imageUrl)
                                pa = new Ta.Image, pa.onload = function(e, f, g, h, k, l, p, m) {
                                    return function() {
                                        var r =
                                                g.imageUrl,
                                            q = g.imageScale,
                                            t = g.imageAlpha,
                                            u = p.imageHoverAlpha,
                                            v = p.imageHoverScale,
                                            w = this.width * q * .01,
                                            x = this.width * v * .01;
                                        ka = { x: e - this.width * q * .005, y: f - this.height * q * .005, width: w, height: this.height * q * .01, alpha: t };
                                        ma = { x: e - this.width * v * .005, y: f - this.height * v * .005, width: x, height: this.height * v * .01, alpha: u };
                                        u = x > w ? ma : ka;
                                        (h.graphic = Q = c.image(r, J).attr(ka).css({ opacity: .01 * t }).data("alwaysInvisible", 0 === q).data("setRolloverProperties", p).data("setRolloverAttr", ma).data("setRolloutAttr", ka).data("anchorRadius",
                                            q).data("anchorHoverRadius", v)) && s.push(Q);
                                        if (da || B || p)Y = h.tracker = c.rect(n).attr(u).attr({ cursor: da ? "pointer" : "", stroke: qa, "stroke-width": g.lineWidth, fill: qa, ishot: !0, visibility: z }).data("eventArgs", k).click(function(b) { ua.call(this, a, b) }).hover(function(b) { return function(c) { oa.hoverPlotAnchor(this, c, "DataPlotRollOver", b, a) } }(h), function(b) { return function(c) { oa.hoverPlotAnchor(this, c, "DataPlotRollOut", b, a) } }(h)).tooltip(l);
                                        (V = h.dataLabel = oa.drawPlotLineLabel.call(a, b, d, m, e, f)) && s.push(V)
                                    }
                                }(F, K,
                                    W, na, sa, ga, aa, f), pa.onerror = function(c, e, f, g, h, k, l, p) { return function() { (V = g.dataLabel = oa.drawPlotLineLabel.call(a, b, d, p, c, e)) && s.push(V) } }(F, K, W, na, sa, ga, aa, f), pa.src = W.imageUrl;
                            else {
                                aa && (ka = { polypath: [L[1] || 2, F, K, O, W.startAngle, N], fill: ea(W.fillColor), "stroke-width": W.lineWidth, stroke: ea(W.lineColor) }, ma = { polypath: [aa.sides || 2, F, K, aa.radius, aa.startAngle, aa.dip], fill: ea(aa.fillColor), "stroke-width": aa.lineWidth, stroke: ea(aa.lineColor) });
                                Q = na.graphic = c.polypath(L[1] || 2, F, K, O, W.startAngle, null, J).attr({
                                    fill: ea(W.fillColor),
                                    "stroke-width": W.lineWidth,
                                    stroke: ea(W.lineColor),
                                    cursor: da ? "pointer" : "",
                                    "stroke-linecap": "round",
                                    "stroke-linejoin": "round",
                                    ishot: !0,
                                    visibility: 0 === O ? "hidden" : z
                                }).data("alwaysInvisible", 0 === O).data("setRolloverProperties", aa).data("setRolloverAttr", ma).data("setRolloutAttr", ka).data("anchorRadius", O).data("anchorHoverRadius", aa && aa.radius).shadow(ha);
                                e.anchorElem = Q;
                                if (da || B || aa)
                                (Y = e.trackerElem) ? (Z = g(Y.attr("r"), W.radius + 1), Y.attr({ x: F, y: K, r: Z })) : (L || (L = W.symbol.split("_")), O = Xa(O, l, aa && aa.radius ||
                                    0), Y = c.circle(F, K, O, U).attr({ cursor: e.link ? "pointer" : "", stroke: qa, "stroke-width": 1, fill: qa, ishot: !0, visibility: z }).css(ja)), e.trackerElem = Y;
                                (Y = Y || Q) && Y.data("eventArgs", sa).click(function(b) { ua.call(this, a, b) }).hover(function(b) { return function(c) { oa.hoverPlotAnchor(this, c, "DataPlotRollOver", b, a) } }(na), function(b) { return function(c) { oa.hoverPlotAnchor(this, c, "DataPlotRollOut", b, a) } }(na)).tooltip(ga)
                            }
                        X.push(F, K);
                        na.dataLabel = V;
                        na.tracker = Y;
                        W && W.imageUrl || (V = oa.drawPlotLineLabel.call(a, b, d, f, F, K));
                        Q && s.push(Q);
                        V && s.push(V);
                        Y && s.push(Y)
                    }
                }), X.push("Z"), f = f.concat(X));
                f && 0 < f.length && (ba = b.graphic = c.path(f, I).attr({ stroke: ea(d.lineColor.FCcolor), fill: ea(d.fillColor.FCcolor), "stroke-width": d.lineWidth, visibility: z }));
                r && (a.animationCompleteQueue.push({
                    fn: function() {
                        J.show();
                        h.attr({ transform: "...t" + -M + "," + -S })
                    },
                    scope: a
                }), J.hide(), h.attr({ transform: "...t" + M + "," + S }), I.scale(.01, .01, y, x).animate({ transform: "s1,1" }, r, "normal", a.getAnimationCompleteFn()));
                ba && s.push(ba);
                b.visible = !w
            },
            legendClick: function(b) {
                q["renderer.cartesian"].legendClick.call(this,
                    b)
            },
            getEventArgs: function(b) { return q["renderer.cartesian"].getEventArgs.call(this, b) }
        }, q["renderer.root"]);
        q("renderer.multiLevelPie", {
            drawPlotMultilevelpie: function(b, d) {
                var a = this,
                    c = b.items,
                    e = b.data,
                    f = a.options,
                    h = f.plotOptions.series,
                    n = a.layers,
                    q = h.animation,
                    l = h.dataLabels.style,
                    r = h.shadow,
                    k = g(b.moveDuration, q.duration, 0),
                    m = h.borderWidth,
                    s = h.borderColor,
                    u = a.paper,
                    f = (f = f.tooltip || {}, !1 !== f.enabled),
                    v = (d.startAngle || 0) % Ra,
                    y = Ra / (d.valueTotal || 100),
                    x = a.canvasLeft + .5 * a.canvasWidth,
                    w = a.canvasTop + .5 *
                        a.canvasHeight,
                    z,
                    D,
                    A,
                    B,
                    E,
                    F,
                    H,
                    K,
                    I,
                    P,
                    S;
                D = J(a.canvasWidth, a.canvasHeight);
                var M,
                    Y = n.dataset,
                    L = q.mainItem,
                    W = q.animObj,
                    O = function(b) {
                        ua.call(this.graphic, a, b, "DataPlotRollOver");
                        h.point.events.mouseOver.call(this)
                    },
                    N = function(b) {
                        ua.call(this.graphic, a, b, "DataPlotRollOut");
                        h.point.events.mouseOut.call(this)
                    },
                    Z = function(b) {
                        ua.call(this.graphic, a, b, "DataPlotRollOver");
                        h.point.events.mouseOver.call(this)
                    },
                    X = function(b) {
                        ua.call(this.graphic, a, b, "DataPlotRollOut");
                        h.point.events.mouseOut.call(this)
                    },
                    Q = function() {
                        a.placeDataLabels(!1,
                            c, b, d)
                    };
                z = .5 * (/%$/.test(d.size) ? D * parseInt(d.size, 10) / 100 : d.size);
                D = .5 * (/%$/.test(d.innerSize) ? D * parseInt(d.innerSize, 10) / 100 : d.innerSize);
                d.metrics = [x, w, 2 * z, 2 * D];
                e && e.length || (e = []);
                M = n.datalabels || (n.datalabels = u.group("datalabels").insertAfter(Y));
                P = I = v;
                for (S = e.length; S--;)
                    B = e[S], E = B.y, F = B.displayValue, n = B.toolText, H = !!B.link, null !== E && void 0 !== E && (P = I, I -= E * y, K = .5 * (I + P), (A = c[S]) || (A = c[S] = {
                        chart: a,
                        link: B.link,
                        value: E,
                        angle: K,
                        color: B.color,
                        prevPointIndex: B.prevPointIndex,
                        prevSeriesIndex: B.prevSeriesIndex,
                        labelText: F,
                        graphic: u.ringpath(x, w, z, D, v, v, Y).attr({ "stroke-width": B.borderWidth || m, stroke: B.borderColor || s, fill: ea(B.color), "stroke-dasharray": B.dashStyle, ishot: H, cursor: H ? "pointer" : "" }).shadow(r && !!B.shadow)
                    }, B = { link: B.link, label: B.displayValue, toolText: B.toolText }, A.graphic.mouseover(O, A), A.graphic.mouseout(N, A), A.graphic.mouseup(a.plotMouseUp), A.graphic.data("plotItem", A), A.graphic.data("eventArgs", B), f && A.graphic.tooltip(n), void 0 !== F && (A.dataLabel = u.text(M).css(l).attr({
                        text: F,
                        fill: l.color ||
                            "#000000",
                        visibility: "hidden",
                        ishot: H,
                        cursor: H ? "pointer" : ""
                    }).mouseover(Z, A).mouseout(X, A).mouseup(a.plotMouseUp).data("plotItem", A).data("eventArgs", B), f && A.dataLabel.tooltip(n))), k ? L ? A.graphic.animateWith(L, W, { ringpath: [x, w, z, D, I, P] }, k, "easeIn", !S && Q) : (W = q.animObj = U.animation({ ringpath: [x, w, z, D, I, P] }, k, "easeIn", !S && Q), L = q.mainItem = A.graphic.animate(W)) : (A.graphic.attr({ ringpath: [x, w, z, D, I, P] }), !S && Q && Q()))
            },
            plotMouseUp: function(b) {
                var d = this.data("plotItem");
                ua.call(this, d.chart, b)
            }
        }, q["renderer.piebase"]);
        U.addSymbol({
            resizeIcon: function(b, d, a) {
                var c = g(a, 15) / 3, e = [];
                0 > c && (c = -c, a = -a, b += a - c / 2, d += a - c / 2);
                for (a = 3; 0 < a; a -= 1)e.push("M", b - c * a, d - 3, "L", b - 3, d - c * a);
                return e
            },
            closeIcon: function(b, d, a) {
                var c = 1.3 * a, e = 43 * ba, f = 48 * ba, g = b + c * ta(e), e = d + c * Za(e), h = b + c * ta(f), q = d + c * Za(f), f = .71 * (a - 2);
                a = .71 * (a - 2);
                c = ["A", c, c, 0, 1, 0, h, q];
                g = ["M", g, e];
                g = g.concat(c);
                return g = g.concat(["M", b + f, d - a, "L", b - f, d + a, "M", b - f, d - a, "L", b + f, d + a])
            },
            configureIcon: function(b, d, a) {
                a -= 1;
                var c = .71 * a, e = .71 * (a + 2), f = b - a, g = d - a, h = b + a;
                a = d + a;
                var q = b + .5,
                    l = d +
                        .5,
                    r = b - .5,
                    k = d - .5,
                    m = f - 2,
                    s = g - 2,
                    u = h + 2,
                    v = a + 2,
                    y = b + c,
                    x = d + c,
                    w = b - c,
                    c = d - c,
                    z = b + e,
                    A = d + e;
                b -= e;
                d -= e;
                return["M", f, l, "L", m, l, m, k, f, k, w - .25, c + .25, b - .25, d + .25, b + .25, d - .25, w + .25, c - .25, r, g, r, s, q, s, q, g, y - .25, c - .25, z - .25, d - .25, z + .25, d + .25, y + .25, c + .25, h, k, u, k, u, l, h, l, y + .25, x - .25, z + .25, A - .25, z - .25, A + .25, y - .25, x + .25, q, a, q, v, r, v, r, a, w + .25, x + .25, b + .25, A + .25, b - .25, A - .25, w - .25, x - .25, "Z"]
            },
            axisIcon: function(b, d, a) {
                a -= 1;
                var c = .33 * a, e = a / 2, f = b - a, g = d - a, h = b + e;
                a = d + a;
                b -= e;
                e = d + c;
                d -= c;
                return[
                    "M", f, g, "L", h, g, h, a, f, a, "M", b, e, "L", h, e, "M",
                    b, d, "L", h, d
                ]
            },
            loggerIcon: function(b, d, a) {
                a -= 1;
                b -= a;
                d -= a;
                var c = b + 2 * a, e = b + 2, f = c - 2, g = d + 2;
                a = g + a;
                var h = a + 2;
                return["M", b, d, "L", c, d, c, g, f, g, f, a, c, a, c, h, b, h, b, a, e, a, e, g, b, g, b, d]
            }
        })
    }, [3, 2, 1, "release"]
]);;
