@@ -124,10 +124,10 @@ hooks.version="2.29.4";setHookCallback(createLocal);hooks.fn=proto;hooks.min=min
c1.1-0.9,1.7-2.2,1.7-3.6c0-1.5-0.7-2.8-1.8-3.8c-0.2-0.1-0.4-0.1-0.5,0.1c-0.1,0.2-0.1,0.4,0.1,0.5c1,0.8,1.5,1.9,1.5,3.2
c0,1.2-0.5,2.3-1.4,3c-0.2,0.1-0.2,0.4,0,0.5c0.1,0.1,0.2,0.1,0.3,0.1C37.6,45.8,37.6,45.8,37.7,45.8z M39.2,47.3
c1.5-1.3,2.4-3.2,2.4-5.1c0-2.1-0.9-4-2.6-5.3c-0.2-0.1-0.4-0.1-0.5,0.1c-0.1,0.2-0.1,0.4,0.1,0.5c1.5,1.2,2.3,2.9,2.3,4.7
- c0,1.8-0.8,3.4-2.1,4.6c-0.2,0.1-0.2,0.4,0,0.5c0.1,0.1,0.2,0.1,0.3,0.1C39,47.4,39.1,47.4,39.2,47.3z`})],-1)),_hoisted_3$6=[_hoisted_2$8];function _sfc_render$b(e,t){return openBlock(),createElementBlock("svg",_hoisted_1$9,_hoisted_3$6)}const IconSensor=_export_sfc(_sfc_main$b,[["render",_sfc_render$b],["__scopeId","data-v-1ca21f0d"]]),_imports_0$1="/assets/app-icon-512.a5eb7b3f.png",Header_vue_vue_type_style_index_0_scoped_a4474917_lang="",_sfc_main$a={components:{IconSensor},data(){return{locale:localStorage.getItem("locale")||this.$i18n.locale||"en",store:useStore()}},watch:{locale(e){this.$i18n.locale=e,localStorage.setItem("locale",e)}},computed:{countPoints(){return this.store.sensors.length}}},_withScopeId$5=e=>(pushScopeId("data-v-a4474917"),e=e(),popScopeId(),e),_hoisted_1$8={class:"flexline space-between"},_hoisted_2$7={class:"flexline align-start"},_hoisted_3$5=_withScopeId$5(()=>createBaseVNode("img",{alt:"App logo",src:_imports_0$1},null,-1)),_hoisted_4$4={key:0,class:"sensorscount"},_hoisted_5$4={class:"flexline"},_hoisted_6$4=_withScopeId$5(()=>createBaseVNode("option",{value:"en"},"English",-1)),_hoisted_7$4=_withScopeId$5(()=>createBaseVNode("option",{value:"ru"},"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",-1)),_hoisted_8$4=[_hoisted_6$4,_hoisted_7$4],_hoisted_9$4={id:"about",class:"popover popover-top-right",popover:""},_hoisted_10$3=createStaticVNode('
Web3 \u043E\u0442\u043A\u0440\u044B\u0442\u0430\u044F \u0441\u0435\u0442\u044C \u0434\u0430\u0442\u0447\u0438\u043A\u043E\u0432
\u0414\u043E\u0431\u0440\u043E \u043F\u043E\u0436\u0430\u043B\u043E\u0432\u0430\u0442\u044C \u0432 \u043E\u0442\u043A\u0440\u044B\u0442\u0443\u044E \u0441\u0435\u0442\u044C \u0434\u0430\u0442\u0447\u0438\u043A\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043F\u043E\u0441\u0442\u0440\u043E\u0435\u043D\u0430 \u043D\u0430 open-source \u043F\u0440\u0438\u043D\u0446\u0438\u043F\u0430\u0445 \u0438 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u044D\u043D\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u0430\u043C\u0438 (\u0441\u043C. the free will of individuals). \u041A\u0430\u0440\u0442\u0430 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u0434\u0432\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 \u0443\u0440\u043E\u0432\u043D\u044F \u0434\u0435\u0446\u0435\u043D\u0442\u0440\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438: \u043F\u0440\u044F\u043C\u0430\u044F peer-to-peer \u0441\u0432\u044F\u0437\u044C \u0434\u0430\u0442\u0447\u0438\u043A\u043E\u0432 \u0438 \u0431\u043B\u043E\u043A\u0447\u0435\u0439\u043D \u0434\u043B\u044F \u0441\u0431\u043E\u0440\u0430 \u0438 \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0441 \u0434\u0430\u0442\u0447\u0438\u043A\u043E\u0432. \u0422\u0443\u0442 \u043C\u043E\u0436\u043D\u043E \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u0438\u0442\u044C\u0441\u044F \u0431\u043E\u043B\u0435\u0435 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E \u0441 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u0441\u0442\u043E\u0440\u043E\u043D\u043E\u0439.
\u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u0441\u0432\u043E\u0439 \u0434\u0430\u0442\u0447\u0438\u043A \u043D\u0430 \u043A\u0430\u0440\u0442\u0443
\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0441\u043E\u0431\u0440\u0430\u0442\u044C \u0441\u0432\u043E\u0439 \u0434\u0430\u0442\u0447\u0438\u043A, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044F \u043A\u043E\u043C\u043F\u043B\u0435\u043A\u0442\u0443\u044E\u0449\u0438\u0435 \u043D\u0430 \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u043C \u0440\u044B\u043D\u043A\u0435 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u0438\u043A\u0438, \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0434\u0430\u0442\u0447\u0438\u043A \u043D\u0430 \u043A\u0430\u0440\u0442\u0443. \u041C\u044B \u0441 \u0440\u0430\u0434\u043E\u0441\u0442\u044C\u044E \u043F\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043C \u043D\u043E\u0432\u044B\u0445 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u043E\u0432 \u0441\u043E\u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u041F\u0440\u0438\u0441\u043E\u0435\u0434\u0438\u043D\u044F\u0439\u0442\u0435\u0441\u044C!
\u0412\u0438\u0434\u0435\u043E-\u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u044F \u043D\u0430 YouTube
',5),_hoisted_15$2=createStaticVNode('
Web3 public sensors map
Welcome to the decentralized opensource sensors map which operates with the sole intent of serving the free will of individuals, without any beneficiaries. It offers two distinct layers of decentralization at your choise: peer-to-peer connectivity for direct access to sensor data, and the federative concept for accumulating sensor data and displaying measurement history. Click here for further technical details.
Add your sensor on this map
You can assemble your own sensor using components available on the free market. Follow the instructions provided to connect your sensor to the map. We welcome your participation and look forward to expanding our community together. Join us today!
YouTube video guide
',5),_hoisted_20$2=_withScopeId$5(()=>createBaseVNode("hr",null,null,-1)),_hoisted_21$2={class:"navlinks"},_hoisted_22$2={href:"https://github.com/airalab/sensors.robonomics.network",target:"_blank",rel:"noopener"},_hoisted_23$2={class:"popovercontrol",popovertarget:"about"};function _sfc_render$a(e,t,r,n,o,a){const l=resolveComponent("router-link"),c=resolveComponent("IconSensor"),u=resolveComponent("font-awesome-icon");return openBlock(),createElementBlock("header",_hoisted_1$8,[createBaseVNode("div",_hoisted_2$7,[createVNode(l,{to:"/",class:"appicon"},{default:withCtx(()=>[_hoisted_3$5]),_:1}),a.countPoints>0?(openBlock(),createElementBlock("b",_hoisted_4$4,[createVNode(c),createTextVNode(" "+toDisplayString$1(a.countPoints),1)])):createCommentVNode("",!0)]),createBaseVNode("div",_hoisted_5$4,[withDirectives(createBaseVNode("select",{"onUpdate:modelValue":t[0]||(t[0]=g=>o.locale=g)},_hoisted_8$4,512),[[vModelSelect,o.locale]]),createBaseVNode("div",_hoisted_9$4,[o.locale==="ru"?(openBlock(),createElementBlock(Fragment,{key:0},[_hoisted_10$3],64)):(openBlock(),createElementBlock(Fragment,{key:1},[_hoisted_15$2],64)),_hoisted_20$2,createBaseVNode("section",_hoisted_21$2,[createBaseVNode("a",_hoisted_22$2,toDisplayString$1(e.$t("links.github")),1),createVNode(l,{to:"/air-measurements"},{default:withCtx(()=>[createTextVNode(toDisplayString$1(e.$t("links.measurement")),1)]),_:1}),createVNode(l,{to:"/privacy-policy"},{default:withCtx(()=>[createTextVNode(toDisplayString$1(e.$t("links.privacy")),1)]),_:1})])]),createBaseVNode("button",_hoisted_23$2,[createVNode(u,{icon:"fa-solid fa-bars"})])])])}const Header=_export_sfc(_sfc_main$a,[["render",_sfc_render$a],["__scopeId","data-v-a4474917"]]),_imports_0="/assets/sensors-world-app.8a0828bb.png",InstallPWA_vue_vue_type_style_index_0_scoped_b59a209f_lang="",_sfc_main$9={data(){return{deferredPrompt:null,isSupported:!1,db:null,isInstalled:"loading",isBrowserSupport:!0,browsers:{chrome:!1,safari:!1,firefox:!1,edge:!1,opera:!1}}},methods:{async getDb(){return new Promise((e,t)=>{let r=window.indexedDB.open("SensorsDB",1);r.onerror=n=>{console.log("Error opening db",n),t("Error")},r.onsuccess=n=>{e(n.target.result)},r.onupgradeneeded=n=>{n.target.result.createObjectStore("install",{autoIncrement:!0,keyPath:"id"})}})},async getData(){return new Promise(e=>{let t=this.db.transaction(["install"],"readonly");t.oncomplete=()=>{e(n)};let r=t.objectStore("install"),n=null;r.openCursor().onsuccess=o=>{let a=o.target.result;a&&(n=a.value,a.continue())}})},async addDataToDb(e=!1,t=!1){return new Promise(r=>{let n=this.db.transaction(["install"],"readwrite");n.oncomplete=()=>{r()};let o=n.objectStore("install");o.delete(1),o.add({id:1,removed:e,installed:t})})},async installApp(){if(this.addDataToDb(!1,!0),this.deferredPrompt!==null){this.deferredPrompt.prompt();const{outcome:e}=await this.deferredPrompt.userChoice;e==="accepted"&&(this.deferredPrompt=null,this.isSupported=!1,this.isInstalled="installed")}},removeInstall(){this.addDataToDb(!0,!1),this.isInstalled="removed"},checkBrowser(){let e=navigator.userAgent;this.browsers.chrome=e.indexOf("Chrome")>-1,this.browsers.firefox=e.indexOf("Firefox")>-1,this.browsers.safari=e.indexOf("Safari")>-1,this.browsers.chrome&&this.browsers.safari&&(this.browsers.safari=!1),this.browsers.opera=e.indexOf("OP")>-1,this.browsers.chrome&&this.browsers.opera&&(this.browsers.chrome=!1)}},async created(){this.db=await this.getDb(),this.isInstalled=await this.getData()?await this.getData():null},mounted(){window.addEventListener("beforeinstallprompt",e=>{this.isSupported=!0,this.deferredPrompt=e}),window.matchMedia("(display-mode: standalone)").matches?this.isSupported=!0:this.isSupported=!1,this.checkBrowser(),(this.browsers.safari||this.browsers.firefox||this.browsers.opera)&&(this.isBrowserSupport=!1)}},_withScopeId$4=e=>(pushScopeId("data-v-b59a209f"),e=e(),popScopeId(),e),_hoisted_1$7={key:0,class:"container install-pwa__container"},_hoisted_2$6={class:"install-pwa__content"},_hoisted_3$4=_withScopeId$4(()=>createBaseVNode("img",{src:_imports_0,alt:"sensors-cy-app"},null,-1)),_hoisted_4$3={class:"install-pwa__text"},_hoisted_5$3=_withScopeId$4(()=>createBaseVNode("h3",null,"Available as web application (PWA)",-1));function _sfc_render$9(e,t,r,n,o,a){return!o.isInstalled&&o.isBrowserSupport?(openBlock(),createElementBlock("div",_hoisted_1$7,[createBaseVNode("div",_hoisted_2$6,[_hoisted_3$4,createBaseVNode("div",_hoisted_4$3,[_hoisted_5$3,createBaseVNode("button",{onClick:t[0]||(t[0]=(...l)=>a.installApp&&a.installApp(...l)),class:"install-pwa__btn"},"Install")])]),createBaseVNode("button",{onClick:t[1]||(t[1]=(...l)=>a.removeInstall&&a.removeInstall(...l)),class:"install-pwa__remove"})])):createCommentVNode("",!0)}const InstallPWA=_export_sfc(_sfc_main$9,[["render",_sfc_render$9],["__scopeId","data-v-b59a209f"]]),MessagePopup_vue_vue_type_style_index_0_scoped_c5bfb7c2_lang="";function preloadImages(e,t){let r=0;const n={};function o(){if(r++,r==e.length){const a=[],l=[];for(const c of e)n[c]&&n[c]>0?(console.log(`Bad image ${c}`),l.push(c)):a.push(c);t(a,l)}}for(let a of e){let l=document.createElement("img");l.onload=()=>{n[a]=0,o()},l.onerror=()=>{n[a]||(n[a]=0),n[a]++,n[a]<3?l.src=a:o()},l.src=a}}const _sfc_main$8={props:["data"],data(){return{isImages:!1,images:[],badImages:[],imagesLoaded:!1,state:"neutral"}},computed:{dateMsg:function(){return hooks(this.data.timestamp,"X").format("DD.MM.YYYY HH:mm:ss")},classList(){return{["sensor-popup__header"]:!0,[`sensor-popup__header--${this.state}`]:this.state}}},watch:{data(){this.imagesLoad()}},created(){this.imagesLoad()},methods:{replaceWithBr(e){return e.replace(/\n/g,"
")},imagesLoad(){if(this.data.images&&this.data.images.length>0){this.images=[],this.badImages=[],this.imagesLoaded=!1,this.isImages=!0;const e=this.data.images.map(t=>`https://aira.mypinata.cloud/ipfs/${this.data.ipfs}/${t}`);preloadImages(e,(t,r)=>{t.length>0&&(this.images=t),r.length>0&&(this.badImages=r),this.imagesLoaded=!0})}else this.isImages=!1,this.images=[],this.badImages=[],this.imagesLoaded=!1}}},_hoisted_1$6={class:"container sensor-popup sensors-panel sensors-panel--center-right active popup-js"},_hoisted_2$5={class:"sensor-popup__header-icon"},_hoisted_3$3={class:"sensor-popup__header-wrapper"},_hoisted_4$2={class:"sensor-popup--subtitle"},_hoisted_5$2={ref:"content",class:"sensor-popup--content"},_hoisted_6$3=["innerHTML"],_hoisted_7$3={key:0},_hoisted_8$3=["href"],_hoisted_9$3=["src"],_hoisted_10$2=["href"];function _sfc_render$8(e,t,r,n,o,a){const l=resolveComponent("font-awesome-icon");return openBlock(),createElementBlock("div",_hoisted_1$6,[createBaseVNode("div",{class:normalizeClass(a.classList)},[createBaseVNode("div",_hoisted_2$5,[createVNode(l,{icon:"fa-solid fa-face-meh"})]),createBaseVNode("div",_hoisted_3$3,[createBaseVNode("h2",null,toDisplayString$1(e.$t("details.user"))+" "+toDisplayString$1(r.data.username),1),createBaseVNode("div",_hoisted_4$2,[createBaseVNode("span",null,[createVNode(l,{icon:"fa-solid fa-stopwatch"}),createTextVNode(" "+toDisplayString$1(a.dateMsg),1)])])])],2),createBaseVNode("div",_hoisted_5$2,[createBaseVNode("div",{innerHTML:a.replaceWithBr(r.data.message)},null,8,_hoisted_6$3),o.isImages?(openBlock(),createElementBlock(Fragment,{key:0},[createBaseVNode("h2",null,toDisplayString$1(e.$t("details.photos")),1),o.imagesLoaded?(openBlock(),createElementBlock(Fragment,{key:1},[(openBlock(!0),createElementBlock(Fragment,null,renderList(o.images,(c,u)=>(openBlock(),createElementBlock("div",{key:u},[createBaseVNode("a",{href:c,target:"_blank"},[createBaseVNode("img",{style:{"max-width":"400px"},src:c},null,8,_hoisted_9$3)],8,_hoisted_8$3)]))),128)),createBaseVNode("template",null,[(openBlock(!0),createElementBlock(Fragment,null,renderList(o.badImages,(c,u)=>(openBlock(),createElementBlock("a",{key:u,href:c,target:"_blank"},toDisplayString$1(c),9,_hoisted_10$2))),128))])],64)):(openBlock(),createElementBlock("div",_hoisted_7$3,"..."))],64)):createCommentVNode("",!0)],512),createBaseVNode("a",{class:"popup__close",href:"javascript:;",onClick:t[0]||(t[0]=withModifiers(c=>e.$emit("close"),["stop","prevent"]))},[createVNode(l,{icon:"fa-solid fa-xmark"})])])}const MessagePopup=_export_sfc(_sfc_main$8,[["render",_sfc_render$8],["__scopeId","data-v-c5bfb7c2"]]),Bookmark_vue_vue_type_style_index_0_scoped_8cca7f79_lang="",_sfc_main$7={props:["address","link"],data(){return{IsBookmarked:!1,db:null,bookmarks:[],bookmarkid:null,bookmarkname:"",store:useStore()}},computed:{buttonclasses(){return{button:!0,["button-green"]:this.IsBookmarked}}},methods:{async findbookmark(){return(await IDBgettable(this.store.idbBookmarkDbname,this.store.idbBookmarkVDbver,this.store.idbBookmarkVDbtable)).find(t=>t.address===this.$props.address)},async addbookmark(){await this.findbookmark()?this.bookmarkid&&IDBworkflow(this.store.idbBookmarkDbname,this.store.idbBookmarkVDbver,this.store.idbBookmarkVDbtable,"readwrite",r=>{const n=r.get(this.bookmarkid);n.addEventListener("error",o=>{console.log(o)}),n.addEventListener("success",o=>{const a=o.target.result;a.customName=this.bookmarkname;const l=r.put(a);l.addEventListener("error",c=>{console.log(c)}),l.addEventListener("success",c=>{this.IsBookmarked=!0})})}):IDBworkflow(this.store.idbBookmarkDbname,this.store.idbBookmarkVDbver,this.store.idbBookmarkVDbtable,"readwrite",r=>{r.add({customName:this.bookmarkname,address:this.$props.address,link:this.$props.link}),this.IsBookmarked=!0});const t=new BroadcastChannel(this.store.idbWatcherBroadcast);t.postMessage(!0),t.close()}},async mounted(){const e=await this.findbookmark();e&&(this.IsBookmarked=!0,this.bookmarkid=e.id,this.bookmarkname=e.customName)}},_hoisted_1$5=["placeholder"],_hoisted_2$4=["disabled","area-label"];function _sfc_render$7(e,t,r,n,o,a){const l=resolveComponent("font-awesome-icon");return openBlock(),createElementBlock("form",{class:"flexline",onSubmit:t[2]||(t[2]=withModifiers((...c)=>a.addbookmark&&a.addbookmark(...c),["prevent"]))},[withDirectives(createBaseVNode("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=c=>o.bookmarkname=c),placeholder:e.$t("sensorpopup.bookmarkplaceholder"),onInput:t[1]||(t[1]=c=>o.IsBookmarked=!1)},null,40,_hoisted_1$5),[[vModelText,o.bookmarkname]]),createBaseVNode("button",{class:normalizeClass(a.buttonclasses),disabled:o.IsBookmarked,"area-label":e.$t("sensorpopup.bookmarkbutton")},[o.IsBookmarked?(openBlock(),createBlock(l,{key:1,icon:"fa-solid fa-check"})):(openBlock(),createBlock(l,{key:0,icon:"fa-solid fa-bookmark"}))],10,_hoisted_2$4)],32)}const Bookmark=_export_sfc(_sfc_main$7,[["render",_sfc_render$7],["__scopeId","data-v-8cca7f79"]]);var highchartsVue_min={exports:{}},highcharts={exports:{}},hasRequiredHighcharts;function requireHighcharts(){return hasRequiredHighcharts||(hasRequiredHighcharts=1,function(e){(function(t,r){e.exports?(r.default=r,e.exports=t&&t.document?r(t):r):(t.Highcharts&&t.Highcharts.error(16,!0),t.Highcharts=r(t))})(typeof window<"u"?window:commonjsGlobal$2,function(t){var r={};function n(o,a,l,c){o.hasOwnProperty(a)||(o[a]=c.apply(null,l),typeof CustomEvent=="function"&&t.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:a,module:o[a]}})))}return n(r,"Core/Globals.js",[],function(){var o,a;return(a=o||(o={})).SVG_NS="http://www.w3.org/2000/svg",a.product="Highcharts",a.version="11.4.3",a.win=t!==void 0?t:{},a.doc=a.win.document,a.svg=a.doc&&a.doc.createElementNS&&!!a.doc.createElementNS(a.SVG_NS,"svg").createSVGRect,a.userAgent=a.win.navigator&&a.win.navigator.userAgent||"",a.isChrome=a.userAgent.indexOf("Chrome")!==-1,a.isFirefox=a.userAgent.indexOf("Firefox")!==-1,a.isMS=/(edge|msie|trident)/i.test(a.userAgent)&&!a.win.opera,a.isSafari=!a.isChrome&&a.userAgent.indexOf("Safari")!==-1,a.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(a.userAgent),a.isWebKit=a.userAgent.indexOf("AppleWebKit")!==-1,a.deg2rad=2*Math.PI/360,a.hasBidiBug=a.isFirefox&&4>parseInt(a.userAgent.split("Firefox/")[1],10),a.marginNames=["plotTop","marginRight","marginBottom","plotLeft"],a.noop=function(){},a.supportsPassiveEvents=function(){let l=!1;if(!a.isMS){let c=Object.defineProperty({},"passive",{get:function(){l=!0}});a.win.addEventListener&&a.win.removeEventListener&&(a.win.addEventListener("testPassive",a.noop,c),a.win.removeEventListener("testPassive",a.noop,c))}return l}(),a.charts=[],a.composed=[],a.dateFormats={},a.seriesTypes={},a.symbolSizes={},a.chartCount=0,o}),n(r,"Core/Utilities.js",[r["Core/Globals.js"]],function(o){let a,{charts:l,doc:c,win:u}=o;function g(ae,ie,pe,ue){let ge=ie?"Highcharts error":"Highcharts warning";ae===32&&(ae=`${ge}: Deprecated member`);let ye=D(ae),Ae=ye?`${ge} #${ae}: www.highcharts.com/errors/${ae}/`:ae.toString();if(ue!==void 0){let Re="";ye&&(Ae+="?"),we(ue,function(We,Pe){Re+=`
+ c0,1.8-0.8,3.4-2.1,4.6c-0.2,0.1-0.2,0.4,0,0.5c0.1,0.1,0.2,0.1,0.3,0.1C39,47.4,39.1,47.4,39.2,47.3z`})],-1)),_hoisted_3$6=[_hoisted_2$8];function _sfc_render$b(e,t){return openBlock(),createElementBlock("svg",_hoisted_1$9,_hoisted_3$6)}const IconSensor=_export_sfc(_sfc_main$b,[["render",_sfc_render$b],["__scopeId","data-v-1ca21f0d"]]),_imports_0$1=""+new URL("app-icon-512.a5eb7b3f.png",import.meta.url).href,Header_vue_vue_type_style_index_0_scoped_a4474917_lang="",_sfc_main$a={components:{IconSensor},data(){return{locale:localStorage.getItem("locale")||this.$i18n.locale||"en",store:useStore()}},watch:{locale(e){this.$i18n.locale=e,localStorage.setItem("locale",e)}},computed:{countPoints(){return this.store.sensors.length}}},_withScopeId$5=e=>(pushScopeId("data-v-a4474917"),e=e(),popScopeId(),e),_hoisted_1$8={class:"flexline space-between"},_hoisted_2$7={class:"flexline align-start"},_hoisted_3$5=_withScopeId$5(()=>createBaseVNode("img",{alt:"App logo",src:_imports_0$1},null,-1)),_hoisted_4$4={key:0,class:"sensorscount"},_hoisted_5$4={class:"flexline"},_hoisted_6$4=_withScopeId$5(()=>createBaseVNode("option",{value:"en"},"English",-1)),_hoisted_7$4=_withScopeId$5(()=>createBaseVNode("option",{value:"ru"},"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",-1)),_hoisted_8$4=[_hoisted_6$4,_hoisted_7$4],_hoisted_9$4={id:"about",class:"popover popover-top-right",popover:""},_hoisted_10$3=createStaticVNode('
Web3 \u043E\u0442\u043A\u0440\u044B\u0442\u0430\u044F \u0441\u0435\u0442\u044C \u0434\u0430\u0442\u0447\u0438\u043A\u043E\u0432
\u0414\u043E\u0431\u0440\u043E \u043F\u043E\u0436\u0430\u043B\u043E\u0432\u0430\u0442\u044C \u0432 \u043E\u0442\u043A\u0440\u044B\u0442\u0443\u044E \u0441\u0435\u0442\u044C \u0434\u0430\u0442\u0447\u0438\u043A\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043F\u043E\u0441\u0442\u0440\u043E\u0435\u043D\u0430 \u043D\u0430 open-source \u043F\u0440\u0438\u043D\u0446\u0438\u043F\u0430\u0445 \u0438 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u044D\u043D\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u0430\u043C\u0438 (\u0441\u043C. the free will of individuals). \u041A\u0430\u0440\u0442\u0430 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u0434\u0432\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 \u0443\u0440\u043E\u0432\u043D\u044F \u0434\u0435\u0446\u0435\u043D\u0442\u0440\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438: \u043F\u0440\u044F\u043C\u0430\u044F peer-to-peer \u0441\u0432\u044F\u0437\u044C \u0434\u0430\u0442\u0447\u0438\u043A\u043E\u0432 \u0438 \u0431\u043B\u043E\u043A\u0447\u0435\u0439\u043D \u0434\u043B\u044F \u0441\u0431\u043E\u0440\u0430 \u0438 \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0441 \u0434\u0430\u0442\u0447\u0438\u043A\u043E\u0432. \u0422\u0443\u0442 \u043C\u043E\u0436\u043D\u043E \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u0438\u0442\u044C\u0441\u044F \u0431\u043E\u043B\u0435\u0435 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E \u0441 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u0441\u0442\u043E\u0440\u043E\u043D\u043E\u0439.
\u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u0441\u0432\u043E\u0439 \u0434\u0430\u0442\u0447\u0438\u043A \u043D\u0430 \u043A\u0430\u0440\u0442\u0443
\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0441\u043E\u0431\u0440\u0430\u0442\u044C \u0441\u0432\u043E\u0439 \u0434\u0430\u0442\u0447\u0438\u043A, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044F \u043A\u043E\u043C\u043F\u043B\u0435\u043A\u0442\u0443\u044E\u0449\u0438\u0435 \u043D\u0430 \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u043C \u0440\u044B\u043D\u043A\u0435 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u0438\u043A\u0438, \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0434\u0430\u0442\u0447\u0438\u043A \u043D\u0430 \u043A\u0430\u0440\u0442\u0443. \u041C\u044B \u0441 \u0440\u0430\u0434\u043E\u0441\u0442\u044C\u044E \u043F\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043C \u043D\u043E\u0432\u044B\u0445 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u043E\u0432 \u0441\u043E\u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u041F\u0440\u0438\u0441\u043E\u0435\u0434\u0438\u043D\u044F\u0439\u0442\u0435\u0441\u044C!
\u0412\u0438\u0434\u0435\u043E-\u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u044F \u043D\u0430 YouTube
',5),_hoisted_15$2=createStaticVNode('
Web3 public sensors map
Welcome to the decentralized opensource sensors map which operates with the sole intent of serving the free will of individuals, without any beneficiaries. It offers two distinct layers of decentralization at your choise: peer-to-peer connectivity for direct access to sensor data, and the federative concept for accumulating sensor data and displaying measurement history. Click here for further technical details.
Add your sensor on this map
You can assemble your own sensor using components available on the free market. Follow the instructions provided to connect your sensor to the map. We welcome your participation and look forward to expanding our community together. Join us today!
YouTube video guide
',5),_hoisted_20$2=_withScopeId$5(()=>createBaseVNode("hr",null,null,-1)),_hoisted_21$2={class:"navlinks"},_hoisted_22$2={href:"https://github.com/airalab/sensors.robonomics.network",target:"_blank",rel:"noopener"},_hoisted_23$2={class:"popovercontrol",popovertarget:"about"};function _sfc_render$a(e,t,r,n,o,a){const l=resolveComponent("router-link"),c=resolveComponent("IconSensor"),u=resolveComponent("font-awesome-icon");return openBlock(),createElementBlock("header",_hoisted_1$8,[createBaseVNode("div",_hoisted_2$7,[createVNode(l,{to:"/",class:"appicon"},{default:withCtx(()=>[_hoisted_3$5]),_:1}),a.countPoints>0?(openBlock(),createElementBlock("b",_hoisted_4$4,[createVNode(c),createTextVNode(" "+toDisplayString$1(a.countPoints),1)])):createCommentVNode("",!0)]),createBaseVNode("div",_hoisted_5$4,[withDirectives(createBaseVNode("select",{"onUpdate:modelValue":t[0]||(t[0]=g=>o.locale=g)},_hoisted_8$4,512),[[vModelSelect,o.locale]]),createBaseVNode("div",_hoisted_9$4,[o.locale==="ru"?(openBlock(),createElementBlock(Fragment,{key:0},[_hoisted_10$3],64)):(openBlock(),createElementBlock(Fragment,{key:1},[_hoisted_15$2],64)),_hoisted_20$2,createBaseVNode("section",_hoisted_21$2,[createBaseVNode("a",_hoisted_22$2,toDisplayString$1(e.$t("links.github")),1),createVNode(l,{to:"/air-measurements"},{default:withCtx(()=>[createTextVNode(toDisplayString$1(e.$t("links.measurement")),1)]),_:1}),createVNode(l,{to:"/privacy-policy"},{default:withCtx(()=>[createTextVNode(toDisplayString$1(e.$t("links.privacy")),1)]),_:1})])]),createBaseVNode("button",_hoisted_23$2,[createVNode(u,{icon:"fa-solid fa-bars"})])])])}const Header=_export_sfc(_sfc_main$a,[["render",_sfc_render$a],["__scopeId","data-v-a4474917"]]),_imports_0=""+new URL("sensors-world-app.8a0828bb.png",import.meta.url).href,InstallPWA_vue_vue_type_style_index_0_scoped_b59a209f_lang="",_sfc_main$9={data(){return{deferredPrompt:null,isSupported:!1,db:null,isInstalled:"loading",isBrowserSupport:!0,browsers:{chrome:!1,safari:!1,firefox:!1,edge:!1,opera:!1}}},methods:{async getDb(){return new Promise((e,t)=>{let r=window.indexedDB.open("SensorsDB",1);r.onerror=n=>{console.log("Error opening db",n),t("Error")},r.onsuccess=n=>{e(n.target.result)},r.onupgradeneeded=n=>{n.target.result.createObjectStore("install",{autoIncrement:!0,keyPath:"id"})}})},async getData(){return new Promise(e=>{let t=this.db.transaction(["install"],"readonly");t.oncomplete=()=>{e(n)};let r=t.objectStore("install"),n=null;r.openCursor().onsuccess=o=>{let a=o.target.result;a&&(n=a.value,a.continue())}})},async addDataToDb(e=!1,t=!1){return new Promise(r=>{let n=this.db.transaction(["install"],"readwrite");n.oncomplete=()=>{r()};let o=n.objectStore("install");o.delete(1),o.add({id:1,removed:e,installed:t})})},async installApp(){if(this.addDataToDb(!1,!0),this.deferredPrompt!==null){this.deferredPrompt.prompt();const{outcome:e}=await this.deferredPrompt.userChoice;e==="accepted"&&(this.deferredPrompt=null,this.isSupported=!1,this.isInstalled="installed")}},removeInstall(){this.addDataToDb(!0,!1),this.isInstalled="removed"},checkBrowser(){let e=navigator.userAgent;this.browsers.chrome=e.indexOf("Chrome")>-1,this.browsers.firefox=e.indexOf("Firefox")>-1,this.browsers.safari=e.indexOf("Safari")>-1,this.browsers.chrome&&this.browsers.safari&&(this.browsers.safari=!1),this.browsers.opera=e.indexOf("OP")>-1,this.browsers.chrome&&this.browsers.opera&&(this.browsers.chrome=!1)}},async created(){this.db=await this.getDb(),this.isInstalled=await this.getData()?await this.getData():null},mounted(){window.addEventListener("beforeinstallprompt",e=>{this.isSupported=!0,this.deferredPrompt=e}),window.matchMedia("(display-mode: standalone)").matches?this.isSupported=!0:this.isSupported=!1,this.checkBrowser(),(this.browsers.safari||this.browsers.firefox||this.browsers.opera)&&(this.isBrowserSupport=!1)}},_withScopeId$4=e=>(pushScopeId("data-v-b59a209f"),e=e(),popScopeId(),e),_hoisted_1$7={key:0,class:"container install-pwa__container"},_hoisted_2$6={class:"install-pwa__content"},_hoisted_3$4=_withScopeId$4(()=>createBaseVNode("img",{src:_imports_0,alt:"sensors-cy-app"},null,-1)),_hoisted_4$3={class:"install-pwa__text"},_hoisted_5$3=_withScopeId$4(()=>createBaseVNode("h3",null,"Available as web application (PWA)",-1));function _sfc_render$9(e,t,r,n,o,a){return!o.isInstalled&&o.isBrowserSupport?(openBlock(),createElementBlock("div",_hoisted_1$7,[createBaseVNode("div",_hoisted_2$6,[_hoisted_3$4,createBaseVNode("div",_hoisted_4$3,[_hoisted_5$3,createBaseVNode("button",{onClick:t[0]||(t[0]=(...l)=>a.installApp&&a.installApp(...l)),class:"install-pwa__btn"},"Install")])]),createBaseVNode("button",{onClick:t[1]||(t[1]=(...l)=>a.removeInstall&&a.removeInstall(...l)),class:"install-pwa__remove"})])):createCommentVNode("",!0)}const InstallPWA=_export_sfc(_sfc_main$9,[["render",_sfc_render$9],["__scopeId","data-v-b59a209f"]]),MessagePopup_vue_vue_type_style_index_0_scoped_c5bfb7c2_lang="";function preloadImages(e,t){let r=0;const n={};function o(){if(r++,r==e.length){const a=[],l=[];for(const c of e)n[c]&&n[c]>0?(console.log(`Bad image ${c}`),l.push(c)):a.push(c);t(a,l)}}for(let a of e){let l=document.createElement("img");l.onload=()=>{n[a]=0,o()},l.onerror=()=>{n[a]||(n[a]=0),n[a]++,n[a]<3?l.src=a:o()},l.src=a}}const _sfc_main$8={props:["data"],data(){return{isImages:!1,images:[],badImages:[],imagesLoaded:!1,state:"neutral"}},computed:{dateMsg:function(){return hooks(this.data.timestamp,"X").format("DD.MM.YYYY HH:mm:ss")},classList(){return{["sensor-popup__header"]:!0,[`sensor-popup__header--${this.state}`]:this.state}}},watch:{data(){this.imagesLoad()}},created(){this.imagesLoad()},methods:{replaceWithBr(e){return e.replace(/\n/g,"
")},imagesLoad(){if(this.data.images&&this.data.images.length>0){this.images=[],this.badImages=[],this.imagesLoaded=!1,this.isImages=!0;const e=this.data.images.map(t=>`https://aira.mypinata.cloud/ipfs/${this.data.ipfs}/${t}`);preloadImages(e,(t,r)=>{t.length>0&&(this.images=t),r.length>0&&(this.badImages=r),this.imagesLoaded=!0})}else this.isImages=!1,this.images=[],this.badImages=[],this.imagesLoaded=!1}}},_hoisted_1$6={class:"container sensor-popup sensors-panel sensors-panel--center-right active popup-js"},_hoisted_2$5={class:"sensor-popup__header-icon"},_hoisted_3$3={class:"sensor-popup__header-wrapper"},_hoisted_4$2={class:"sensor-popup--subtitle"},_hoisted_5$2={ref:"content",class:"sensor-popup--content"},_hoisted_6$3=["innerHTML"],_hoisted_7$3={key:0},_hoisted_8$3=["href"],_hoisted_9$3=["src"],_hoisted_10$2=["href"];function _sfc_render$8(e,t,r,n,o,a){const l=resolveComponent("font-awesome-icon");return openBlock(),createElementBlock("div",_hoisted_1$6,[createBaseVNode("div",{class:normalizeClass(a.classList)},[createBaseVNode("div",_hoisted_2$5,[createVNode(l,{icon:"fa-solid fa-face-meh"})]),createBaseVNode("div",_hoisted_3$3,[createBaseVNode("h2",null,toDisplayString$1(e.$t("details.user"))+" "+toDisplayString$1(r.data.username),1),createBaseVNode("div",_hoisted_4$2,[createBaseVNode("span",null,[createVNode(l,{icon:"fa-solid fa-stopwatch"}),createTextVNode(" "+toDisplayString$1(a.dateMsg),1)])])])],2),createBaseVNode("div",_hoisted_5$2,[createBaseVNode("div",{innerHTML:a.replaceWithBr(r.data.message)},null,8,_hoisted_6$3),o.isImages?(openBlock(),createElementBlock(Fragment,{key:0},[createBaseVNode("h2",null,toDisplayString$1(e.$t("details.photos")),1),o.imagesLoaded?(openBlock(),createElementBlock(Fragment,{key:1},[(openBlock(!0),createElementBlock(Fragment,null,renderList(o.images,(c,u)=>(openBlock(),createElementBlock("div",{key:u},[createBaseVNode("a",{href:c,target:"_blank"},[createBaseVNode("img",{style:{"max-width":"400px"},src:c},null,8,_hoisted_9$3)],8,_hoisted_8$3)]))),128)),createBaseVNode("template",null,[(openBlock(!0),createElementBlock(Fragment,null,renderList(o.badImages,(c,u)=>(openBlock(),createElementBlock("a",{key:u,href:c,target:"_blank"},toDisplayString$1(c),9,_hoisted_10$2))),128))])],64)):(openBlock(),createElementBlock("div",_hoisted_7$3,"..."))],64)):createCommentVNode("",!0)],512),createBaseVNode("a",{class:"popup__close",href:"javascript:;",onClick:t[0]||(t[0]=withModifiers(c=>e.$emit("close"),["stop","prevent"]))},[createVNode(l,{icon:"fa-solid fa-xmark"})])])}const MessagePopup=_export_sfc(_sfc_main$8,[["render",_sfc_render$8],["__scopeId","data-v-c5bfb7c2"]]),Bookmark_vue_vue_type_style_index_0_scoped_8cca7f79_lang="",_sfc_main$7={props:["address","link"],data(){return{IsBookmarked:!1,db:null,bookmarks:[],bookmarkid:null,bookmarkname:"",store:useStore()}},computed:{buttonclasses(){return{button:!0,["button-green"]:this.IsBookmarked}}},methods:{async findbookmark(){return(await IDBgettable(this.store.idbBookmarkDbname,this.store.idbBookmarkVDbver,this.store.idbBookmarkVDbtable)).find(t=>t.address===this.$props.address)},async addbookmark(){await this.findbookmark()?this.bookmarkid&&IDBworkflow(this.store.idbBookmarkDbname,this.store.idbBookmarkVDbver,this.store.idbBookmarkVDbtable,"readwrite",r=>{const n=r.get(this.bookmarkid);n.addEventListener("error",o=>{console.log(o)}),n.addEventListener("success",o=>{const a=o.target.result;a.customName=this.bookmarkname;const l=r.put(a);l.addEventListener("error",c=>{console.log(c)}),l.addEventListener("success",c=>{this.IsBookmarked=!0})})}):IDBworkflow(this.store.idbBookmarkDbname,this.store.idbBookmarkVDbver,this.store.idbBookmarkVDbtable,"readwrite",r=>{r.add({customName:this.bookmarkname,address:this.$props.address,link:this.$props.link}),this.IsBookmarked=!0});const t=new BroadcastChannel(this.store.idbWatcherBroadcast);t.postMessage(!0),t.close()}},async mounted(){const e=await this.findbookmark();e&&(this.IsBookmarked=!0,this.bookmarkid=e.id,this.bookmarkname=e.customName)}},_hoisted_1$5=["placeholder"],_hoisted_2$4=["disabled","area-label"];function _sfc_render$7(e,t,r,n,o,a){const l=resolveComponent("font-awesome-icon");return openBlock(),createElementBlock("form",{class:"flexline",onSubmit:t[2]||(t[2]=withModifiers((...c)=>a.addbookmark&&a.addbookmark(...c),["prevent"]))},[withDirectives(createBaseVNode("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=c=>o.bookmarkname=c),placeholder:e.$t("sensorpopup.bookmarkplaceholder"),onInput:t[1]||(t[1]=c=>o.IsBookmarked=!1)},null,40,_hoisted_1$5),[[vModelText,o.bookmarkname]]),createBaseVNode("button",{class:normalizeClass(a.buttonclasses),disabled:o.IsBookmarked,"area-label":e.$t("sensorpopup.bookmarkbutton")},[o.IsBookmarked?(openBlock(),createBlock(l,{key:1,icon:"fa-solid fa-check"})):(openBlock(),createBlock(l,{key:0,icon:"fa-solid fa-bookmark"}))],10,_hoisted_2$4)],32)}const Bookmark=_export_sfc(_sfc_main$7,[["render",_sfc_render$7],["__scopeId","data-v-8cca7f79"]]);var highchartsVue_min={exports:{}},highcharts={exports:{}},hasRequiredHighcharts;function requireHighcharts(){return hasRequiredHighcharts||(hasRequiredHighcharts=1,function(e){(function(t,r){e.exports?(r.default=r,e.exports=t&&t.document?r(t):r):(t.Highcharts&&t.Highcharts.error(16,!0),t.Highcharts=r(t))})(typeof window<"u"?window:commonjsGlobal$2,function(t){var r={};function n(o,a,l,c){o.hasOwnProperty(a)||(o[a]=c.apply(null,l),typeof CustomEvent=="function"&&t.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:a,module:o[a]}})))}return n(r,"Core/Globals.js",[],function(){var o,a;return(a=o||(o={})).SVG_NS="http://www.w3.org/2000/svg",a.product="Highcharts",a.version="11.4.3",a.win=t!==void 0?t:{},a.doc=a.win.document,a.svg=a.doc&&a.doc.createElementNS&&!!a.doc.createElementNS(a.SVG_NS,"svg").createSVGRect,a.userAgent=a.win.navigator&&a.win.navigator.userAgent||"",a.isChrome=a.userAgent.indexOf("Chrome")!==-1,a.isFirefox=a.userAgent.indexOf("Firefox")!==-1,a.isMS=/(edge|msie|trident)/i.test(a.userAgent)&&!a.win.opera,a.isSafari=!a.isChrome&&a.userAgent.indexOf("Safari")!==-1,a.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(a.userAgent),a.isWebKit=a.userAgent.indexOf("AppleWebKit")!==-1,a.deg2rad=2*Math.PI/360,a.hasBidiBug=a.isFirefox&&4>parseInt(a.userAgent.split("Firefox/")[1],10),a.marginNames=["plotTop","marginRight","marginBottom","plotLeft"],a.noop=function(){},a.supportsPassiveEvents=function(){let l=!1;if(!a.isMS){let c=Object.defineProperty({},"passive",{get:function(){l=!0}});a.win.addEventListener&&a.win.removeEventListener&&(a.win.addEventListener("testPassive",a.noop,c),a.win.removeEventListener("testPassive",a.noop,c))}return l}(),a.charts=[],a.composed=[],a.dateFormats={},a.seriesTypes={},a.symbolSizes={},a.chartCount=0,o}),n(r,"Core/Utilities.js",[r["Core/Globals.js"]],function(o){let a,{charts:l,doc:c,win:u}=o;function g(ae,ie,pe,ue){let ge=ie?"Highcharts error":"Highcharts warning";ae===32&&(ae=`${ge}: Deprecated member`);let ye=D(ae),Ae=ye?`${ge} #${ae}: www.highcharts.com/errors/${ae}/`:ae.toString();if(ue!==void 0){let Re="";ye&&(Ae+="?"),we(ue,function(We,Pe){Re+=`
- ${Pe}: ${We}`,ye&&(Ae+=encodeURI(Pe)+"="+encodeURI(We))}),Ae+=Re}_e(o,"displayError",{chart:pe,code:ae,message:Ae,params:ue},function(){if(ie)throw Error(Ae);u.console&&g.messages.indexOf(Ae)===-1&&console.warn(Ae)}),g.messages.push(Ae)}function b(ae,ie){return parseInt(ae,ie||10)}function x(ae){return typeof ae=="string"}function S(ae){let ie=Object.prototype.toString.call(ae);return ie==="[object Array]"||ie==="[object Array Iterator]"}function $(ae,ie){return!!ae&&typeof ae=="object"&&(!ie||!S(ae))}function k(ae){return $(ae)&&typeof ae.nodeType=="number"}function T(ae){let ie=ae&&ae.constructor;return!!($(ae,!0)&&!k(ae)&&ie&&ie.name&&ie.name!=="Object")}function D(ae){return typeof ae=="number"&&!isNaN(ae)&&ae<1/0&&ae>-1/0}function I(ae){return ae!=null}function O(ae,ie,pe){let ue,ge=x(ie)&&!I(pe),ye=(Ae,Re)=>{I(Ae)?ae.setAttribute(Re,Ae):ge?(ue=ae.getAttribute(Re))||Re!=="class"||(ue=ae.getAttribute(Re+"Name")):ae.removeAttribute(Re)};return x(ie)?ye(pe,ie):we(ie,ye),ue}function N(ae){return S(ae)?ae:[ae]}function ee(ae,ie){let pe;for(pe in ae||(ae={}),ie)ae[pe]=ie[pe];return ae}function ne(){let ae=arguments,ie=ae.length;for(let pe=0;pe
1e14?ae:parseFloat(ae.toPrecision(ie||14))}(g||(g={})).messages=[],Math.easeInOutSine=function(ae){return-.5*(Math.cos(Math.PI*ae)-1)};let xe=Array.prototype.find?function(ae,ie){return ae.find(ie)}:function(ae,ie){let pe,ue=ae.length;for(pe=0;peRe.order-We.order),ge.forEach(Re=>{Re.fn.call(ae,pe)===!1&&pe.preventDefault()})}ue&&!pe.defaultPrevented&&ue.call(ae,pe)}we({map:"map",each:"forEach",grep:"filter",reduce:"reduce",some:"some"},function(ae,ie){o[ie]=function(pe){return g(32,!1,void 0,{[`Highcharts.${ie}`]:`use Array.${ae}`}),Array.prototype[ae].apply(pe,[].slice.call(arguments,1))}});let ve=function(){let ae=Math.random().toString(36).substring(2,9)+"-",ie=0;return function(){return"highcharts-"+(a?"":ae)+ie++}}();return u.jQuery&&(u.jQuery.fn.highcharts=function(){let ae=[].slice.call(arguments);if(this[0])return ae[0]?(new o[x(ae[0])?ae.shift():"Chart"](this[0],ae[0],ae[1]),this):l[O(this[0],"data-highcharts-chart")]}),{addEvent:function(ae,ie,pe,ue={}){let ge=typeof ae=="function"&&ae.prototype||ae;Object.hasOwnProperty.call(ge,"hcEvents")||(ge.hcEvents={});let ye=ge.hcEvents;o.Point&&ae instanceof o.Point&&ae.series&&ae.series.chart&&(ae.series.chart.runTrackerClick=!0);let Ae=ae.addEventListener;Ae&&Ae.call(ae,ie,pe,!!o.supportsPassiveEvents&&{passive:ue.passive===void 0?ie.indexOf("touch")!==-1:ue.passive,capture:!1}),ye[ie]||(ye[ie]=[]);let Re={fn:pe,order:typeof ue.order=="number"?ue.order:1/0};return ye[ie].push(Re),ye[ie].sort((We,Pe)=>We.order-Pe.order),function(){he(ae,ie,pe)}},arrayMax:function(ae){let ie=ae.length,pe=ae[0];for(;ie--;)ae[ie]>pe&&(pe=ae[ie]);return pe},arrayMin:function(ae){let ie=ae.length,pe=ae[0];for(;ie--;)ae[ie]ie?ae{let ue=ie%2/2,ge=pe?-1:1;return(Math.round(ae*ge-ue)+ue)*ge},css:B,defined:I,destroyObjectProperties:function(ae,ie,pe){we(ae,function(ue,ge){ue!==ie&&ue?.destroy&&ue.destroy(),(ue?.destroy||!pe)&&delete ae[ge]})},diffObjects:function(ae,ie,pe,ue){let ge={};return function ye(Ae,Re,We,Pe){let Ue=pe?Re:Ae;we(Ae,function(Oe,Be){if(!Pe&&ue&&ue.indexOf(Be)>-1&&Re[Be]){Oe=N(Oe),We[Be]=[];for(let Ye=0;Ye{if(Ae.length>1)for(ge=Ae.length-1;ge>0;ge--)(ue=Ae[ge]-Ae[ge-1])<0&&!ye?(ie?.(),ie=void 0):ue&&(pe===void 0||ue=Ae-1&&(Ae=Math.floor(Re)),Math.max(0,Ae-(ae(ie,"padding-left",!0)||0)-(ae(ie,"padding-right",!0)||0))}if(pe==="height")return Math.max(0,Math.min(ie.offsetHeight,ie.scrollHeight)-(ae(ie,"padding-top",!0)||0)-(ae(ie,"padding-bottom",!0)||0));let ye=u.getComputedStyle(ie,void 0);return ye&&(ge=ye.getPropertyValue(pe),ne(ue,pe!=="opacity")&&(ge=b(ge))),ge},inArray:function(ae,ie,pe){return g(32,!1,void 0,{"Highcharts.inArray":"use Array.indexOf"}),ie.indexOf(ae,pe)},insertItem:function(ae,ie){let pe,ue=ae.options.index,ge=ie.length;for(pe=ae.options.isInternal?ge:0;pe=ae))&&(ge||!(Re<=(ie[ye]+(ie[ye+1]||ie[ye]))/2)));ye++);return fe(Ae*pe,-Math.round(Math.log(.001)/Math.LN10))},objectEach:we,offset:function(ae){let ie=c.documentElement,pe=ae.parentElement||ae.parentNode?ae.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:pe.top+(u.pageYOffset||ie.scrollTop)-(ie.clientTop||0),left:pe.left+(u.pageXOffset||ie.scrollLeft)-(ie.clientLeft||0),width:pe.width,height:pe.height}},pad:function(ae,ie,pe){return Array((ie||2)+1-String(ae).replace("-","").length).join(pe||"0")+ae},pick:ne,pInt:b,pushUnique:function(ae,ie){return 0>ae.indexOf(ie)&&!!ae.push(ie)},relativeLength:function(ae,ie,pe){return/%$/.test(ae)?ie*parseFloat(ae)/100+(pe||0):parseFloat(ae)},removeEvent:he,replaceNested:function(ae,...ie){let pe,ue;do for(ue of(pe=ae,ie))ae=ae.replace(ue[0],ue[1]);while(ae!==pe);return ae},splat:N,stableSort:function(ae,ie){let pe,ue,ge=ae.length;for(ue=0;ue0?setTimeout(ae,ie,pe):(ae.call(0,pe),-1)},timeUnits:{millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5},uniqueKey:ve,useSerialIds:function(ae){return a=ne(ae,a)},wrap:function(ae,ie,pe){let ue=ae[ie];ae[ie]=function(){let ge=arguments,ye=this;return pe.apply(this,[function(){return ue.apply(ye,arguments.length?arguments:ge)}].concat([].slice.call(arguments)))}}}}),n(r,"Core/Chart/ChartDefaults.js",[],function(){return{alignThresholds:!1,panning:{enabled:!1,type:"x"},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:"line",zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:"right",x:-10,y:10}}},width:null,height:null,borderColor:"#334eff",backgroundColor:"#ffffff",plotBorderColor:"#cccccc"}}),n(r,"Core/Color/Palettes.js",[],function(){return{colors:["#2caffe","#544fc5","#00e272","#fe6a35","#6b8abc","#d568fb","#2ee0ca","#fa4b42","#feb56a","#91e8e1"]}}),n(r,"Core/Time.js",[r["Core/Globals.js"],r["Core/Utilities.js"]],function(o,a){let{win:l}=o,{defined:c,error:u,extend:g,isNumber:b,isObject:x,merge:S,objectEach:$,pad:k,pick:T,splat:D,timeUnits:I}=a,O=o.isSafari&&l.Intl&&l.Intl.DateTimeFormat.prototype.formatRange,N=o.isSafari&&l.Intl&&!l.Intl.DateTimeFormat.prototype.formatRange;class ee{constructor(B){this.options={},this.useUTC=!1,this.variableTimezone=!1,this.Date=l.Date,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.update(B)}get(B,le){if(this.variableTimezone||this.timezoneOffset){let fe=le.getTime(),xe=fe-this.getTimezoneOffset(le);le.setTime(xe);let we=le["getUTC"+B]();return le.setTime(fe),we}return this.useUTC?le["getUTC"+B]():le["get"+B]()}set(B,le,fe){if(this.variableTimezone||this.timezoneOffset){if(B==="Milliseconds"||B==="Seconds"||B==="Minutes"&&this.getTimezoneOffset(le)%36e5==0)return le["setUTC"+B](fe);let xe=this.getTimezoneOffset(le),we=le.getTime()-xe;le.setTime(we),le["setUTC"+B](fe);let he=this.getTimezoneOffset(le);return we=le.getTime()+he,le.setTime(we)}return this.useUTC||O&&B==="FullYear"?le["setUTC"+B](fe):le["set"+B](fe)}update(B={}){let le=T(B.useUTC,!0);this.options=B=S(!0,this.options,B),this.Date=B.Date||l.Date||Date,this.useUTC=le,this.timezoneOffset=le&&B.timezoneOffset||void 0,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.variableTimezone=le&&!!(B.getTimezoneOffset||B.timezone)}makeTime(B,le,fe,xe,we,he){let _e,ve,ae;return this.useUTC?(_e=this.Date.UTC.apply(0,arguments),ve=this.getTimezoneOffset(_e),_e+=ve,ve!==(ae=this.getTimezoneOffset(_e))?_e+=ae-ve:ve-36e5!==this.getTimezoneOffset(_e-36e5)||N||(_e-=36e5)):_e=new this.Date(B,le,T(fe,1),T(xe,0),T(we,0),T(he,0)).getTime(),_e}timezoneOffsetFunction(){let B=this,le=this.options,fe=le.getTimezoneOffset;return this.useUTC?le.timezone?xe=>{try{let we=`shortOffset,${le.timezone||""}`,[he,_e,ve,ae,ie=0]=(ee.formatCache[we]=ee.formatCache[we]||Intl.DateTimeFormat("en",{timeZone:le.timezone,timeZoneName:"shortOffset"})).format(xe).split(/(GMT|:)/).map(Number),pe=-(36e5*(ve+ie/60));if(b(pe))return pe}catch{u(34)}return 0}:this.useUTC&&fe?xe=>6e4*fe(xe.valueOf()):()=>6e4*(B.timezoneOffset||0):xe=>6e4*new Date(xe.toString()).getTimezoneOffset()}dateFormat(B,le,fe){if(!c(le)||isNaN(le))return o.defaultOptions.lang&&o.defaultOptions.lang.invalidDate||"";B=T(B,"%Y-%m-%d %H:%M:%S");let xe=this,we=new this.Date(le),he=this.get("Hours",we),_e=this.get("Day",we),ve=this.get("Date",we),ae=this.get("Month",we),ie=this.get("FullYear",we),pe=o.defaultOptions.lang,ue=pe&&pe.weekdays,ge=pe&&pe.shortWeekdays;return $(g({a:ge?ge[_e]:ue[_e].substr(0,3),A:ue[_e],d:k(ve),e:k(ve,2," "),w:_e,b:pe.shortMonths[ae],B:pe.months[ae],m:k(ae+1),o:ae+1,y:ie.toString().substr(2,2),Y:ie,H:k(he),k:he,I:k(he%12||12),l:he%12||12,M:k(this.get("Minutes",we)),p:he<12?"AM":"PM",P:he<12?"am":"pm",S:k(this.get("Seconds",we)),L:k(Math.floor(le%1e3),3)},o.dateFormats),function(ye,Ae){for(;B.indexOf("%"+Ae)!==-1;)B=B.replace("%"+Ae,typeof ye=="function"?ye.call(xe,le):ye)}),fe?B.substr(0,1).toUpperCase()+B.substr(1):B}resolveDTLFormat(B){return x(B,!0)?B:{main:(B=D(B))[0],from:B[1],to:B[2]}}getTimeTicks(B,le,fe,xe){let we,he,_e,ve,ae=this,ie=ae.Date,pe=[],ue={},ge=new ie(le),ye=B.unitRange,Ae=B.count||1;if(xe=T(xe,1),c(le)){ae.set("Milliseconds",ge,ye>=I.second?0:Ae*Math.floor(ae.get("Milliseconds",ge)/Ae)),ye>=I.second&&ae.set("Seconds",ge,ye>=I.minute?0:Ae*Math.floor(ae.get("Seconds",ge)/Ae)),ye>=I.minute&&ae.set("Minutes",ge,ye>=I.hour?0:Ae*Math.floor(ae.get("Minutes",ge)/Ae)),ye>=I.hour&&ae.set("Hours",ge,ye>=I.day?0:Ae*Math.floor(ae.get("Hours",ge)/Ae)),ye>=I.day&&ae.set("Date",ge,ye>=I.month?1:Math.max(1,Ae*Math.floor(ae.get("Date",ge)/Ae))),ye>=I.month&&(ae.set("Month",ge,ye>=I.year?0:Ae*Math.floor(ae.get("Month",ge)/Ae)),he=ae.get("FullYear",ge)),ye>=I.year&&(he-=he%Ae,ae.set("FullYear",ge,he)),ye===I.week&&(ve=ae.get("Day",ge),ae.set("Date",ge,ae.get("Date",ge)-ve+xe+(ve4*I.month||ae.getTimezoneOffset(le)!==ae.getTimezoneOffset(fe));let Ue=ge.getTime();for(we=1;Ue1?Ue=ae.makeTime(he,Re,We,Pe+we*Ae):Ue+=ye*Ae,we++;pe.push(Ue),ye<=I.hour&&pe.length<1e4&&pe.forEach(function(Oe){Oe%18e5==0&&ae.dateFormat("%H%M%S%L",Oe)==="000000000"&&(ue[Oe]="day")})}return pe.info=g(B,{higherRanks:ue,totalRange:ye*Ae}),pe}getDateFormat(B,le,fe,xe){let we=this.dateFormat("%m-%d %H:%M:%S.%L",le),he="01-01 00:00:00.000",_e={millisecond:15,second:12,minute:9,hour:6,day:3},ve="millisecond",ae=ve;for(ve in I){if(B===I.week&&+this.dateFormat("%w",le)===fe&&we.substr(6)===he.substr(6)){ve="week";break}if(I[ve]>B){ve=ae;break}if(_e[ve]&&we.substr(_e[ve])!==he.substr(_e[ve]))break;ve!=="week"&&(ae=ve)}return this.resolveDTLFormat(xe[ve]).main}}return ee.formatCache={},ee}),n(r,"Core/Defaults.js",[r["Core/Chart/ChartDefaults.js"],r["Core/Globals.js"],r["Core/Color/Palettes.js"],r["Core/Time.js"],r["Core/Utilities.js"]],function(o,a,l,c,u){let{isTouchDevice:g}=a,{fireEvent:b,merge:x}=u,S={colors:l.colors,symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],decimalPoint:".",numericSymbols:["k","M","G","T","P","E"],resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:" "},global:{buttonTheme:{fill:"#f7f7f7",padding:8,r:2,stroke:"#cccccc","stroke-width":1,style:{color:"#333333",cursor:"pointer",fontSize:"0.8em",fontWeight:"normal"},states:{hover:{fill:"#e6e6e6"},select:{fill:"#e6e9ff",style:{color:"#000000",fontWeight:"bold"}},disabled:{style:{color:"#cccccc"}}}}},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:o,title:{style:{color:"#333333",fontWeight:"bold"},text:"Chart title",align:"center",margin:15,widthAdjust:-44},subtitle:{style:{color:"#666666",fontSize:"0.8em"},text:"",align:"center",widthAdjust:-44},caption:{margin:15,style:{color:"#666666",fontSize:"0.8em"},text:"",align:"left",verticalAlign:"bottom"},plotOptions:{},legend:{enabled:!0,align:"center",alignColumns:!0,className:"highcharts-no-tooltip",layout:"horizontal",itemMarginBottom:2,itemMarginTop:2,labelFormatter:function(){return this.name},borderColor:"#999999",borderRadius:0,navigation:{style:{fontSize:"0.8em"},activeColor:"#0022ff",inactiveColor:"#cccccc"},itemStyle:{color:"#333333",cursor:"pointer",fontSize:"0.8em",textDecoration:"none",textOverflow:"ellipsis"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#666666",textDecoration:"line-through"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontSize:"0.8em",fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:{duration:300,easing:k=>Math.sqrt(1-Math.pow(k-1,2))},borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %e %b, %H:%M:%S.%L",second:"%A, %e %b, %H:%M:%S",minute:"%A, %e %b, %H:%M",hour:"%A, %e %b, %H:%M",day:"%A, %e %b %Y",week:"Week from %A, %e %b %Y",month:"%B %Y",year:"%Y"},footerFormat:"",headerShape:"callout",hideDelay:500,padding:8,shape:"callout",shared:!1,snap:g?25:10,headerFormat:'{point.key}
',pointFormat:'\u25CF {series.name}: {point.y}
',backgroundColor:"#ffffff",borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:"#333333",cursor:"default",fontSize:"0.8em"},useHTML:!1},credits:{enabled:!0,href:"https://www.highcharts.com?credits",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#999999",fontSize:"0.6em"},text:"Highcharts.com"}};S.chart.styledMode=!1;let $=new c(S.time);return{defaultOptions:S,defaultTime:$,getOptions:function(){return S},setOptions:function(k){return b(a,"setOptions",{options:k}),x(!0,S,k),(k.time||k.global)&&(a.time?a.time.update(x(S.global,S.time,k.global,k.time)):a.time=$),S}}}),n(r,"Core/Color/Color.js",[r["Core/Globals.js"],r["Core/Utilities.js"]],function(o,a){let{isNumber:l,merge:c,pInt:u}=a;class g{static parse(x){return x?new g(x):g.None}constructor(x){let S,$,k,T;this.rgba=[NaN,NaN,NaN,NaN],this.input=x;let D=o.Color;if(D&&D!==g)return new D(x);if(typeof x=="object"&&x.stops!==void 0)this.stops=x.stops.map(I=>new g(I[1]));else if(typeof x=="string"){if(this.input=x=g.names[x.toLowerCase()]||x,x.charAt(0)==="#"){let I=x.length,O=parseInt(x.substr(1),16);I===7?$=[(16711680&O)>>16,(65280&O)>>8,255&O,1]:I===4&&($=[(3840&O)>>4|(3840&O)>>8,(240&O)>>4|240&O,(15&O)<<4|15&O,1])}if(!$)for(k=g.parsers.length;k--&&!$;)(S=(T=g.parsers[k]).regex.exec(x))&&($=T.parse(S))}$&&(this.rgba=$)}get(x){let S=this.input,$=this.rgba;if(typeof S=="object"&&this.stops!==void 0){let k=c(S);return k.stops=[].slice.call(k.stops),this.stops.forEach((T,D)=>{k.stops[D]=[k.stops[D][0],T.get(x)]}),k}return $&&l($[0])?x!=="rgb"&&(x||$[3]!==1)?x==="a"?`${$[3]}`:"rgba("+$.join(",")+")":"rgb("+$[0]+","+$[1]+","+$[2]+")":S}brighten(x){let S=this.rgba;if(this.stops)this.stops.forEach(function($){$.brighten(x)});else if(l(x)&&x!==0)for(let $=0;$<3;$++)S[$]+=u(255*x),S[$]<0&&(S[$]=0),S[$]>255&&(S[$]=255);return this}setOpacity(x){return this.rgba[3]=x,this}tweenTo(x,S){let $=this.rgba,k=x.rgba;if(!l($[0])||!l(k[0]))return x.input||"none";let T=k[3]!==1||$[3]!==1;return(T?"rgba(":"rgb(")+Math.round(k[0]+($[0]-k[0])*(1-S))+","+Math.round(k[1]+($[1]-k[1])*(1-S))+","+Math.round(k[2]+($[2]-k[2])*(1-S))+(T?","+(k[3]+($[3]-k[3])*(1-S)):"")+")"}}return g.names={white:"#ffffff",black:"#000000"},g.parsers=[{regex:/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,parse:function(b){return[u(b[1]),u(b[2]),u(b[3]),parseFloat(b[4],10)]}},{regex:/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,parse:function(b){return[u(b[1]),u(b[2]),u(b[3]),1]}}],g.None=new g(""),g}),n(r,"Core/Animation/Fx.js",[r["Core/Color/Color.js"],r["Core/Globals.js"],r["Core/Utilities.js"]],function(o,a,l){let{parse:c}=o,{win:u}=a,{isNumber:g,objectEach:b}=l;class x{constructor($,k,T){this.pos=NaN,this.options=k,this.elem=$,this.prop=T}dSetter(){let $=this.paths,k=$&&$[0],T=$&&$[1],D=this.now||0,I=[];if(D!==1&&k&&T)if(k.length===T.length&&D<1)for(let O=0;O=ee+this.startTime?(this.now=this.end,this.pos=1,this.update(),ne[this.prop]=!0,T=!0,b(ne,function(B){B!==!0&&(T=!1)}),T&&N&&N.call(O),k=!1):(this.pos=I.easing((D-this.startTime)/ee),this.now=this.start+(this.end-this.start)*this.pos,this.update(),k=!0),k}initPath($,k,T){let D=$.startX,I=$.endX,O=T.slice(),N=$.isArea,ee=N?2:1,ne,B,le,fe,xe=k&&k.slice();if(!xe)return[O,O];function we(_e,ve){for(;_e.length{let fe=k(le.options.animation);ne=b(I)&&l(I.defer)?N.defer:Math.max(ne,fe.duration+fe.defer),B=Math.min(N.duration,fe.duration)}),D.renderer.forExport&&(ne=0),{defer:Math.max(0,ne-B),duration:Math.min(ne,B)}},setAnimation:function(D,I){I.renderer.globalAnimation=$(D,I.options.chart.animation,!0)},stop:T}}),n(r,"Core/Renderer/HTML/AST.js",[r["Core/Globals.js"],r["Core/Utilities.js"]],function(o,a){let{SVG_NS:l,win:c}=o,{attr:u,createElement:g,css:b,error:x,isFunction:S,isString:$,objectEach:k,splat:T}=a,{trustedTypes:D}=c,I=D&&S(D.createPolicy)&&D.createPolicy("highcharts",{createHTML:ne=>ne}),O=I?I.createHTML(""):"",N=function(){try{return!!new DOMParser().parseFromString(O,"text/html")}catch{return!1}}();class ee{static filterUserAttributes(B){return k(B,(le,fe)=>{let xe=!0;ee.allowedAttributes.indexOf(fe)===-1&&(xe=!1),["background","dynsrc","href","lowsrc","src"].indexOf(fe)!==-1&&(xe=$(le)&&ee.allowedReferences.some(we=>le.indexOf(we)===0)),xe||(x(33,!1,void 0,{"Invalid attribute in config":`${fe}`}),delete B[fe]),$(le)&&B[fe]&&(B[fe]=le.replace(/{let xe=fe.split(":").map(he=>he.trim()),we=xe.shift();return we&&xe.length&&(le[we.replace(/-([a-z])/g,he=>he[1].toUpperCase())]=xe.join(":")),le},{})}static setElementHTML(B,le){B.innerHTML=ee.emptyHTML,le&&new ee(le).addToDOM(B)}constructor(B){this.nodes=typeof B=="string"?this.parseMarkup(B):B}addToDOM(B){return function le(fe,xe){let we;return T(fe).forEach(function(he){let _e,ve=he.tagName,ae=he.textContent?o.doc.createTextNode(he.textContent):void 0,ie=ee.bypassHTMLFiltering;if(ve)if(ve==="#text")_e=ae;else if(ee.allowedTags.indexOf(ve)!==-1||ie){let pe=ve==="svg"?l:xe.namespaceURI||l,ue=o.doc.createElementNS(pe,ve),ge=he.attributes||{};k(he,function(ye,Ae){Ae!=="tagName"&&Ae!=="attributes"&&Ae!=="children"&&Ae!=="style"&&Ae!=="textContent"&&(ge[Ae]=ye)}),u(ue,ie?ge:ee.filterUserAttributes(ge)),he.style&&b(ue,he.style),ae&&ue.appendChild(ae),le(he.children||[],ue),_e=ue}else x(33,!1,void 0,{"Invalid tagName in config":ve});_e&&xe.appendChild(_e),we=_e}),we}(this.nodes,B)}parseMarkup(B){let le,fe=[];if(B=B.trim().replace(/ style=(["'])/g," data-style=$1"),N)le=new DOMParser().parseFromString(I?I.createHTML(B):B,"text/html");else{let we=g("div");we.innerHTML=B,le={body:we}}let xe=(we,he)=>{let _e=we.nodeName.toLowerCase(),ve={tagName:_e};_e==="#text"&&(ve.textContent=we.textContent||"");let ae=we.attributes;if(ae){let ie={};[].forEach.call(ae,pe=>{pe.name==="data-style"?ve.style=ee.parseStyle(pe.value):ie[pe.name]=pe.value}),ve.attributes=ie}if(we.childNodes.length){let ie=[];[].forEach.call(we.childNodes,pe=>{xe(pe,ie)}),ie.length&&(ve.children=ie)}he.push(ve)};return[].forEach.call(le.body.childNodes,we=>xe(we,fe)),fe}}return ee.allowedAttributes=["alt","aria-controls","aria-describedby","aria-expanded","aria-haspopup","aria-hidden","aria-label","aria-labelledby","aria-live","aria-pressed","aria-readonly","aria-roledescription","aria-selected","class","clip-path","color","colspan","cx","cy","d","dx","dy","disabled","fill","filterUnits","flood-color","flood-opacity","height","href","id","in","markerHeight","markerWidth","offset","opacity","orient","padding","paddingLeft","paddingRight","patternUnits","r","refX","refY","role","scope","slope","src","startOffset","stdDeviation","stroke","stroke-linecap","stroke-width","style","tableValues","result","rowspan","summary","target","tabindex","text-align","text-anchor","textAnchor","textLength","title","type","valign","width","x","x1","x2","xlink:href","y","y1","y2","zIndex"],ee.allowedReferences=["https://","http://","mailto:","/","../","./","#"],ee.allowedTags=["a","abbr","b","br","button","caption","circle","clipPath","code","dd","defs","div","dl","dt","em","feComponentTransfer","feDropShadow","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feOffset","feMerge","feMergeNode","filter","h1","h2","h3","h4","h5","h6","hr","i","img","li","linearGradient","marker","ol","p","path","pattern","pre","rect","small","span","stop","strong","style","sub","sup","svg","table","text","textPath","thead","title","tbody","tspan","td","th","tr","u","ul","#text"],ee.emptyHTML=O,ee.bypassHTMLFiltering=!1,ee}),n(r,"Core/Templating.js",[r["Core/Defaults.js"],r["Core/Utilities.js"]],function(o,a){let{defaultOptions:l,defaultTime:c}=o,{extend:u,getNestedProperty:g,isArray:b,isNumber:x,isObject:S,pick:$,pInt:k}=a,T={add:(O,N)=>O+N,divide:(O,N)=>N!==0?O/N:"",eq:(O,N)=>O==N,each:function(O){let N=arguments[arguments.length-1];return!!b(O)&&O.map((ee,ne)=>D(N.body,u(S(ee)?ee:{"@this":ee},{"@index":ne,"@first":ne===0,"@last":ne===O.length-1}))).join("")},ge:(O,N)=>O>=N,gt:(O,N)=>O>N,if:O=>!!O,le:(O,N)=>O<=N,lt:(O,N)=>OO*N,ne:(O,N)=>O!=N,subtract:(O,N)=>O-N,unless:O=>!O};function D(O="",N,ee){let ne=/\{([a-zA-Z0-9\:\.\,;\-\/<>%_@"'= #\(\)]+)\}/g,B=/\(([a-zA-Z0-9\:\.\,;\-\/<>%_@"'= ]+)\)/g,le=[],fe=/f$/,xe=/\.([0-9])/,we=l.lang,he=ee&&ee.time||c,_e=ee&&ee.numberFormatter||I,ve=(ge="")=>{let ye;return ge==="true"||ge!=="false"&&((ye=Number(ge)).toString()===ge?ye:g(ge,N))},ae,ie,pe=0,ue;for(;(ae=ne.exec(O))!==null;){let ge=B.exec(ae[1]);ge&&(ae=ge,ue=!0),ie&&ie.isBlock||(ie={ctx:N,expression:ae[1],find:ae[0],isBlock:ae[1].charAt(0)==="#",start:ae.index,startInner:ae.index+ae[0].length,length:ae[0].length});let ye=ae[1].split(" ")[0].replace("#","");T[ye]&&(ie.isBlock&&ye===ie.fn&&pe++,ie.fn||(ie.fn=ye));let Ae=ae[1]==="else";if(ie.isBlock&&ie.fn&&(ae[1]===`/${ie.fn}`||Ae))if(pe)!Ae&&pe--;else{let Re=ie.startInner,We=O.substr(Re,ae.index-Re);ie.body===void 0?(ie.body=We,ie.startInner=ae.index+ae[0].length):ie.elseBody=We,ie.find+=We+ae[0],Ae||(le.push(ie),ie=void 0)}else ie.isBlock||le.push(ie);if(ge&&!ie?.isBlock)break}return le.forEach(ge=>{let ye,Ae,{body:Re,elseBody:We,expression:Pe,fn:Ue}=ge;if(Ue){let Oe=[ge],Be=Pe.split(" ");for(Ae=T[Ue].length;Ae--;)Oe.unshift(ve(Be[Ae+1]));ye=T[Ue].apply(N,Oe),ge.isBlock&&typeof ye=="boolean"&&(ye=D(ye?Re:We,N,ee))}else{let Oe=Pe.split(":");if(ye=ve(Oe.shift()||""),Oe.length&&typeof ye=="number"){let Be=Oe.join(":");if(fe.test(Be)){let Ye=parseInt((Be.match(xe)||["","-1"])[1],10);ye!==null&&(ye=_e(ye,Ye,we.decimalPoint,Be.indexOf(",")>-1?we.thousandsSep:""))}else ye=he.dateFormat(Be,ye)}}O=O.replace(ge.find,$(ye,""))}),ue?D(O,N,ee):O}function I(O,N,ee,ne){let B,le;O=+O||0,N=+N;let fe=l.lang,xe=(O.toString().split(".")[1]||"").split("e")[0].length,we=O.toString().split("e"),he=N;N===-1?N=Math.min(xe,20):x(N)?N&&we[1]&&we[1]<0&&((le=N+ +we[1])>=0?(we[0]=(+we[0]).toExponential(le).split("e")[0],N=le):(we[0]=we[0].split(".")[0]||0,O=N<20?(we[0]*Math.pow(10,we[1])).toFixed(N):0,we[1]=0)):N=2;let _e=(Math.abs(we[1]?we[0]:O)+Math.pow(10,-Math.max(N,xe)-1)).toFixed(N),ve=String(k(_e)),ae=ve.length>3?ve.length%3:0;return ee=$(ee,fe.decimalPoint),ne=$(ne,fe.thousandsSep),B=(O<0?"-":"")+(ae?ve.substr(0,ae)+ne:""),0>+we[1]&&!he?B="0":B+=ve.substr(ae).replace(/(\d{3})(?=\d)/g,"$1"+ne),N?B+=ee+_e.slice(-N):+B==0&&(B="0"),we[1]&&+B!=0&&(B+="e"+we[1]),B}return{dateFormat:function(O,N,ee){return c.dateFormat(O,N,ee)},format:D,helpers:T,numberFormat:I}}),n(r,"Core/Renderer/RendererRegistry.js",[r["Core/Globals.js"]],function(o){var a,l;let c;return(l=a||(a={})).rendererTypes={},l.getRendererType=function(u=c){return l.rendererTypes[u]||l.rendererTypes[c]},l.registerRendererType=function(u,g,b){l.rendererTypes[u]=g,(!c||b)&&(c=u,o.Renderer=g)},a}),n(r,"Core/Renderer/RendererUtilities.js",[r["Core/Utilities.js"]],function(o){var a;let{clamp:l,pick:c,pushUnique:u,stableSort:g}=o;return(a||(a={})).distribute=function b(x,S,$){let k=x,T=k.reducedLen||S,D=(ve,ae)=>ve.target-ae.target,I=[],O=x.length,N=[],ee=I.push,ne,B,le,fe=!0,xe,we,he=0,_e;for(ne=O;ne--;)he+=x[ne].size;if(he>T){for(g(x,(ve,ae)=>(ae.rank||0)-(ve.rank||0)),le=(_e=x[0].rank===x[x.length-1].rank)?O/2:-1,B=_e?le:O-1;le&&he>T;)xe=x[ne=Math.floor(B)],u(N,ne)&&(he-=xe.size),B+=le,_e&&B>=x.length&&(le/=2,B=le);N.sort((ve,ae)=>ae-ve).forEach(ve=>ee.apply(I,x.splice(ve,1)))}for(g(x,D),x=x.map(ve=>({size:ve.size,targets:[ve.target],align:c(ve.align,.5)}));fe;){for(ne=x.length;ne--;)xe=x[ne],we=(Math.min.apply(0,xe.targets)+Math.max.apply(0,xe.targets))/2,xe.pos=l(we-xe.size*xe.align,0,S-xe.size);for(ne=x.length,fe=!1;ne--;)ne>0&&x[ne-1].pos+x[ne-1].size>x[ne].pos&&(x[ne-1].size+=x[ne].size,x[ne-1].targets=x[ne-1].targets.concat(x[ne].targets),x[ne-1].align=.5,x[ne-1].pos+x[ne-1].size>S&&(x[ne-1].pos=S-x[ne-1].size),x.splice(ne,1),fe=!0)}return ee.apply(k,I),ne=0,x.some(ve=>{let ae=0;return(ve.targets||[]).some(()=>(k[ne].pos=ve.pos+ae,$!==void 0&&Math.abs(k[ne].pos-k[ne].target)>$?(k.slice(0,ne+1).forEach(ie=>delete ie.pos),k.reducedLen=(k.reducedLen||S)-.1*S,k.reducedLen>.1*S&&b(k,S,$),!0):(ae+=k[ne].size,ne++,!1)))}),g(k,D),k},a}),n(r,"Core/Renderer/SVG/SVGElement.js",[r["Core/Animation/AnimationUtilities.js"],r["Core/Color/Color.js"],r["Core/Globals.js"],r["Core/Utilities.js"]],function(o,a,l,c){let{animate:u,animObject:g,stop:b}=o,{deg2rad:x,doc:S,svg:$,SVG_NS:k,win:T}=l,{addEvent:D,attr:I,createElement:O,crisp:N,css:ee,defined:ne,erase:B,extend:le,fireEvent:fe,isArray:xe,isFunction:we,isObject:he,isString:_e,merge:ve,objectEach:ae,pick:ie,pInt:pe,pushUnique:ue,replaceNested:ge,syncTimeout:ye,uniqueKey:Ae}=c;class Re{_defaultGetter(Pe){let Ue=ie(this[Pe+"Value"],this[Pe],this.element?this.element.getAttribute(Pe):null,0);return/^[\-0-9\.]+$/.test(Ue)&&(Ue=parseFloat(Ue)),Ue}_defaultSetter(Pe,Ue,Oe){Oe.setAttribute(Ue,Pe)}add(Pe){let Ue,Oe=this.renderer,Be=this.element;return Pe&&(this.parentGroup=Pe),this.textStr!==void 0&&this.element.nodeName==="text"&&Oe.buildText(this),this.added=!0,(!Pe||Pe.handleZ||this.zIndex)&&(Ue=this.zIndexSetter()),Ue||(Pe?Pe.element:Oe.box).appendChild(Be),this.onAdd&&this.onAdd(),this}addClass(Pe,Ue){let Oe=Ue?"":this.attr("class")||"";return(Pe=(Pe||"").split(/ /g).reduce(function(Be,Ye){return Oe.indexOf(Ye)===-1&&Be.push(Ye),Be},Oe?[Oe]:[]).join(" "))!==Oe&&this.attr("class",Pe),this}afterSetters(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)}align(Pe,Ue,Oe,Be=!0){let Ye,Se,Te,$e,Ve={},oe=this.renderer,te=oe.alignedObjects,se=!!Pe;Pe?(this.alignOptions=Pe,this.alignByTranslate=Ue,this.alignTo=Oe):(Pe=this.alignOptions||{},Ue=this.alignByTranslate,Oe=this.alignTo);let me=!Oe||_e(Oe)?Oe||"renderer":void 0;me&&(se&&ue(te,this),Oe=void 0);let Ee=ie(Oe,oe[me],oe),Le=Pe.align,He=Pe.verticalAlign;return Ye=(Ee.x||0)+(Pe.x||0),Se=(Ee.y||0)+(Pe.y||0),Le==="right"?Te=1:Le==="center"&&(Te=2),Te&&(Ye+=((Ee.width||0)-(Pe.width||0))/Te),Ve[Ue?"translateX":"x"]=Math.round(Ye),He==="bottom"?$e=1:He==="middle"&&($e=2),$e&&(Se+=((Ee.height||0)-(Pe.height||0))/$e),Ve[Ue?"translateY":"y"]=Math.round(Se),Be&&(this[this.placed?"animate":"attr"](Ve),this.placed=!0),this.alignAttr=Ve,this}alignSetter(Pe){let Ue={left:"start",center:"middle",right:"end"};Ue[Pe]&&(this.alignValue=Pe,this.element.setAttribute("text-anchor",Ue[Pe]))}animate(Pe,Ue,Oe){let Be=g(ie(Ue,this.renderer.globalAnimation,!0)),Ye=Be.defer;return S.hidden&&(Be.duration=0),Be.duration!==0?(Oe&&(Be.complete=Oe),ye(()=>{this.element&&u(this,Pe,Be)},Ye)):(this.attr(Pe,void 0,Oe||Be.complete),ae(Pe,function(Se,Te){Be.step&&Be.step.call(this,Se,{prop:Te,pos:1,elem:this})},this)),this}applyTextOutline(Pe){let Ue=this.element;Pe.indexOf("contrast")!==-1&&(Pe=Pe.replace(/contrast/g,this.renderer.getContrast(Ue.style.fill)));let Oe=Pe.split(" "),Be=Oe[Oe.length-1],Ye=Oe[0];if(Ye&&Ye!=="none"&&l.svg){this.fakeTS=!0,Ye=Ye.replace(/(^[\d\.]+)(.*?)$/g,function(oe,te,se){return 2*Number(te)+se}),this.removeTextOutline();let Se=S.createElementNS(k,"tspan");I(Se,{class:"highcharts-text-outline",fill:Be,stroke:Be,"stroke-width":Ye,"stroke-linejoin":"round"});let Te=Ue.querySelector("textPath")||Ue;[].forEach.call(Te.childNodes,oe=>{let te=oe.cloneNode(!0);te.removeAttribute&&["fill","stroke","stroke-width","stroke"].forEach(se=>te.removeAttribute(se)),Se.appendChild(te)});let $e=0;[].forEach.call(Te.querySelectorAll("text tspan"),oe=>{$e+=Number(oe.getAttribute("dy"))});let Ve=S.createElementNS(k,"tspan");Ve.textContent="\u200B",I(Ve,{x:Number(Ue.getAttribute("x")),dy:-$e}),Se.appendChild(Ve),Te.insertBefore(Se,Te.firstChild)}}attr(Pe,Ue,Oe,Be){let{element:Ye}=this,Se=Re.symbolCustomAttribs,Te,$e,Ve=this,oe;return typeof Pe=="string"&&Ue!==void 0&&(Te=Pe,(Pe={})[Te]=Ue),typeof Pe=="string"?Ve=(this[Pe+"Getter"]||this._defaultGetter).call(this,Pe,Ye):(ae(Pe,function(te,se){oe=!1,Be||b(this,se),this.symbolName&&Se.indexOf(se)!==-1&&($e||(this.symbolAttr(Pe),$e=!0),oe=!0),this.rotation&&(se==="x"||se==="y")&&(this.doTransform=!0),oe||(this[se+"Setter"]||this._defaultSetter).call(this,te,se,Ye)},this),this.afterSetters()),Oe&&Oe.call(this),Ve}clip(Pe){if(Pe&&!Pe.clipPath){let Ue=Ae()+"-",Oe=this.renderer.createElement("clipPath").attr({id:Ue}).add(this.renderer.defs);le(Pe,{clipPath:Oe,id:Ue,count:0}),Pe.add(Oe)}return this.attr("clip-path",Pe?`url(${this.renderer.url}#${Pe.id})`:"none")}crisp(Pe,Ue){Ue=Math.round(Ue||Pe.strokeWidth||0);let Oe=Pe.x||this.x||0,Be=Pe.y||this.y||0,Ye=(Pe.width||this.width||0)+Oe,Se=(Pe.height||this.height||0)+Be,Te=N(Oe,Ue),$e=N(Be,Ue);return le(Pe,{x:Te,y:$e,width:N(Ye,Ue)-Te,height:N(Se,Ue)-$e}),ne(Pe.strokeWidth)&&(Pe.strokeWidth=Ue),Pe}complexColor(Pe,Ue,Oe){let Be=this.renderer,Ye,Se,Te,$e,Ve,oe,te,se,me,Ee,Le=[],He;fe(this.renderer,"complexColor",{args:arguments},function(){if(Pe.radialGradient?Se="radialGradient":Pe.linearGradient&&(Se="linearGradient"),Se){if(Te=Pe[Se],Ve=Be.gradients,oe=Pe.stops,me=Oe.radialReference,xe(Te)&&(Pe[Se]=Te={x1:Te[0],y1:Te[1],x2:Te[2],y2:Te[3],gradientUnits:"userSpaceOnUse"}),Se==="radialGradient"&&me&&!ne(Te.gradientUnits)&&($e=Te,Te=ve(Te,Be.getRadialAttr(me,$e),{gradientUnits:"userSpaceOnUse"})),ae(Te,function(ze,Qe){Qe!=="id"&&Le.push(Qe,ze)}),ae(oe,function(ze){Le.push(ze)}),Ve[Le=Le.join(",")])Ee=Ve[Le].attr("id");else{Te.id=Ee=Ae();let ze=Ve[Le]=Be.createElement(Se).attr(Te).add(Be.defs);ze.radAttr=$e,ze.stops=[],oe.forEach(function(Qe){Qe[1].indexOf("rgba")===0?(te=(Ye=a.parse(Qe[1])).get("rgb"),se=Ye.get("a")):(te=Qe[1],se=1);let rt=Be.createElement("stop").attr({offset:Qe[0],"stop-color":te,"stop-opacity":se}).add(ze);ze.stops.push(rt)})}He="url("+Be.url+"#"+Ee+")",Oe.setAttribute(Ue,He),Oe.gradient=Le,Pe.toString=function(){return He}}})}css(Pe){let Ue=this.styles,Oe={},Be=this.element,Ye,Se=!Ue;if(Ue&&ae(Pe,function(Te,$e){Ue&&Ue[$e]!==Te&&(Oe[$e]=Te,Se=!0)}),Se){Ue&&(Pe=le(Ue,Oe)),Pe.width===null||Pe.width==="auto"?delete this.textWidth:Be.nodeName.toLowerCase()==="text"&&Pe.width&&(Ye=this.textWidth=pe(Pe.width)),le(this.styles,Pe),Ye&&!$&&this.renderer.forExport&&delete Pe.width;let Te=ve(Pe);Be.namespaceURI===this.SVG_NS&&(["textOutline","textOverflow","width"].forEach($e=>Te&&delete Te[$e]),Te.color&&(Te.fill=Te.color)),ee(Be,Te)}return this.added&&(this.element.nodeName==="text"&&this.renderer.buildText(this),Pe.textOutline&&this.applyTextOutline(Pe.textOutline)),this}dashstyleSetter(Pe){let Ue,Oe=this["stroke-width"];if(Oe==="inherit"&&(Oe=1),Pe=Pe&&Pe.toLowerCase()){let Be=Pe.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");for(Ue=Be.length;Ue--;)Be[Ue]=""+pe(Be[Ue])*ie(Oe,NaN);Pe=Be.join(",").replace(/NaN/g,"none"),this.element.setAttribute("stroke-dasharray",Pe)}}destroy(){let Pe=this,Ue=Pe.element||{},Oe=Pe.renderer,Be=Ue.ownerSVGElement,Ye=Ue.nodeName==="SPAN"&&Pe.parentGroup||void 0,Se,Te;if(Ue.onclick=Ue.onmouseout=Ue.onmouseover=Ue.onmousemove=Ue.point=null,b(Pe),Pe.clipPath&&Be){let $e=Pe.clipPath;[].forEach.call(Be.querySelectorAll("[clip-path],[CLIP-PATH]"),function(Ve){Ve.getAttribute("clip-path").indexOf($e.element.id)>-1&&Ve.removeAttribute("clip-path")}),Pe.clipPath=$e.destroy()}if(Pe.connector=Pe.connector?.destroy(),Pe.stops){for(Te=0;TeYe&&Ye.join?(Se?Be+" ":"")+Ye.join(" "):(Ye||"").toString(),"")),/(NaN| {2}|^$)/.test(Pe)&&(Pe="M 0 0"),this[Ue]!==Pe&&(Oe.setAttribute(Ue,Pe),this[Ue]=Pe)}fillSetter(Pe,Ue,Oe){typeof Pe=="string"?Oe.setAttribute(Ue,Pe):Pe&&this.complexColor(Pe,Ue,Oe)}hrefSetter(Pe,Ue,Oe){Oe.setAttributeNS("http://www.w3.org/1999/xlink",Ue,Pe)}getBBox(Pe,Ue){let Oe,Be,Ye,Se,{alignValue:Te,element:$e,renderer:Ve,styles:oe,textStr:te}=this,{cache:se,cacheKeys:me}=Ve,Ee=$e.namespaceURI===this.SVG_NS,Le=ie(Ue,this.rotation,0),He=Ve.styledMode?$e&&Re.prototype.getStyle.call($e,"font-size"):oe.fontSize;if(ne(te)&&((Se=te.toString()).indexOf("<")===-1&&(Se=Se.replace(/[0-9]/g,"0")),Se+=["",Ve.rootFontSize,He,Le,this.textWidth,Te,oe.textOverflow,oe.fontWeight].join(",")),Se&&!Pe&&(Oe=se[Se]),!Oe){if(Ee||Ve.forExport){try{Ye=this.fakeTS&&function(ze){let Qe=$e.querySelector(".highcharts-text-outline");Qe&&ee(Qe,{display:ze})},we(Ye)&&Ye("none"),Oe=$e.getBBox?le({},$e.getBBox()):{width:$e.offsetWidth,height:$e.offsetHeight,x:0,y:0},we(Ye)&&Ye("")}catch{}(!Oe||Oe.width<0)&&(Oe={x:0,y:0,width:0,height:0})}else Oe=this.htmlGetBBox();Be=Oe.height,Ee&&(Oe.height=Be={"11px,17":14,"13px,20":16}[`${He||""},${Math.round(Be)}`]||Be),Le&&(Oe=this.getRotatedBox(Oe,Le))}if(Se&&(te===""||Oe.height>0)){for(;me.length>250;)delete se[me.shift()];se[Se]||me.push(Se),se[Se]=Oe}return Oe}getRotatedBox(Pe,Ue){let{x:Oe,y:Be,width:Ye,height:Se}=Pe,{alignValue:Te,translateY:$e,rotationOriginX:Ve=0,rotationOriginY:oe=0}=this,te={right:1,center:.5}[Te||0]||0,se=Number(this.element.getAttribute("y")||0)-($e?0:Be),me=Ue*x,Ee=(Ue-90)*x,Le=Math.cos(me),He=Math.sin(me),ze=Ye*Le,Qe=Ye*He,rt=Math.cos(Ee),Ke=Math.sin(Ee),[[Ie,Fe],[je,Ze]]=[Ve,oe].map(Nt=>[Nt-Nt*Le,Nt*He]),Ce=Oe+te*(Ye-ze)+Ie+Ze+se*rt,ce=Ce+ze,de=ce-Se*rt,De=de-ze,qe=Be+se-te*Qe-Fe+je+se*Ke,nt=qe+Qe,lt=nt-Se*Ke,pt=lt-Qe,bt=Math.min(Ce,ce,de,De),St=Math.min(qe,nt,lt,pt),Et=Math.max(Ce,ce,de,De)-bt,vt=Math.max(qe,nt,lt,pt)-St;return{x:bt,y:St,width:Et,height:vt}}getStyle(Pe){return T.getComputedStyle(this.element||this,"").getPropertyValue(Pe)}hasClass(Pe){return(""+this.attr("class")).split(" ").indexOf(Pe)!==-1}hide(){return this.attr({visibility:"hidden"})}htmlGetBBox(){return{height:0,width:0,x:0,y:0}}constructor(Pe,Ue){this.onEvents={},this.opacity=1,this.SVG_NS=k,this.element=Ue==="span"||Ue==="body"?O(Ue):S.createElementNS(this.SVG_NS,Ue),this.renderer=Pe,this.styles={},fe(this,"afterInit")}on(Pe,Ue){let{onEvents:Oe}=this;return Oe[Pe]&&Oe[Pe](),Oe[Pe]=D(this.element,Pe,Ue),this}opacitySetter(Pe,Ue,Oe){let Be=Number(Number(Pe).toFixed(3));this.opacity=Be,Oe.setAttribute(Ue,Be)}reAlign(){this.alignOptions?.width&&this.alignOptions.align!=="left"&&(this.alignOptions.width=this.getBBox().width,this.placed=!1,this.align())}removeClass(Pe){return this.attr("class",(""+this.attr("class")).replace(_e(Pe)?RegExp(`(^| )${Pe}( |$)`):Pe," ").replace(/ +/g," ").trim())}removeTextOutline(){let Pe=this.element.querySelector("tspan.highcharts-text-outline");Pe&&this.safeRemoveChild(Pe)}safeRemoveChild(Pe){let Ue=Pe.parentNode;Ue&&Ue.removeChild(Pe)}setRadialReference(Pe){let Ue=this.element.gradient&&this.renderer.gradients[this.element.gradient];return this.element.radialReference=Pe,Ue&&Ue.radAttr&&Ue.animate(this.renderer.getRadialAttr(Pe,Ue.radAttr)),this}setTextPath(Pe,Ue){Ue=ve(!0,{enabled:!0,attributes:{dy:-5,startOffset:"50%",textAnchor:"middle"}},Ue);let Oe=this.renderer.url,Be=this.text||this,Ye=Be.textPath,{attributes:Se,enabled:Te}=Ue;if(Pe=Pe||Ye&&Ye.path,Ye&&Ye.undo(),Pe&&Te){let $e=D(Be,"afterModifyTree",Ve=>{if(Pe&&Te){let oe=Pe.attr("id");oe||Pe.attr("id",oe=Ae());let te={x:0,y:0};ne(Se.dx)&&(te.dx=Se.dx,delete Se.dx),ne(Se.dy)&&(te.dy=Se.dy,delete Se.dy),Be.attr(te),this.attr({transform:""}),this.box&&(this.box=this.box.destroy());let se=Ve.nodes.slice(0);Ve.nodes.length=0,Ve.nodes[0]={tagName:"textPath",attributes:le(Se,{"text-anchor":Se.textAnchor,href:`${Oe}#${oe}`}),children:se}}});Be.textPath={path:Pe,undo:$e}}else Be.attr({dx:0,dy:0}),delete Be.textPath;return this.added&&(Be.textCache="",this.renderer.buildText(Be)),this}shadow(Pe){let{renderer:Ue}=this,Oe=ve(this.parentGroup?.rotation===90?{offsetX:-1,offsetY:-1}:{},he(Pe)?Pe:{}),Be=Ue.shadowDefinition(Oe);return this.attr({filter:Pe?`url(${Ue.url}#${Be})`:"none"})}show(Pe=!0){return this.attr({visibility:Pe?"inherit":"visible"})}"stroke-widthSetter"(Pe,Ue,Oe){this[Ue]=Pe,Oe.setAttribute(Ue,Pe)}strokeWidth(){if(!this.renderer.styledMode)return this["stroke-width"]||0;let Pe=this.getStyle("stroke-width"),Ue=0,Oe;return/px$/.test(Pe)?Ue=pe(Pe):Pe!==""&&(I(Oe=S.createElementNS(k,"rect"),{width:Pe,"stroke-width":0}),this.element.parentNode.appendChild(Oe),Ue=Oe.getBBox().width,Oe.parentNode.removeChild(Oe)),Ue}symbolAttr(Pe){let Ue=this;Re.symbolCustomAttribs.forEach(function(Oe){Ue[Oe]=ie(Pe[Oe],Ue[Oe])}),Ue.attr({d:Ue.renderer.symbols[Ue.symbolName](Ue.x,Ue.y,Ue.width,Ue.height,Ue)})}textSetter(Pe){Pe!==this.textStr&&(delete this.textPxLength,this.textStr=Pe,this.added&&this.renderer.buildText(this),this.reAlign())}titleSetter(Pe){let Ue=this.element,Oe=Ue.getElementsByTagName("title")[0]||S.createElementNS(this.SVG_NS,"title");Ue.insertBefore?Ue.insertBefore(Oe,Ue.firstChild):Ue.appendChild(Oe),Oe.textContent=ge(ie(Pe,""),[/<[^>]*>/g,""]).replace(/</g,"<").replace(/>/g,">")}toFront(){let Pe=this.element;return Pe.parentNode.appendChild(Pe),this}translate(Pe,Ue){return this.attr({translateX:Pe,translateY:Ue})}updateTransform(Pe="transform"){let{element:Ue,matrix:Oe,rotation:Be=0,rotationOriginX:Ye,rotationOriginY:Se,scaleX:Te,scaleY:$e,translateX:Ve=0,translateY:oe=0}=this,te=["translate("+Ve+","+oe+")"];ne(Oe)&&te.push("matrix("+Oe.join(",")+")"),Be&&(te.push("rotate("+Be+" "+ie(Ye,Ue.getAttribute("x"),0)+" "+ie(Se,Ue.getAttribute("y")||0)+")"),this.text?.element.tagName==="SPAN"&&this.text.attr({rotation:Be,rotationOriginX:(Ye||0)-this.padding,rotationOriginY:(Se||0)-this.padding})),(ne(Te)||ne($e))&&te.push("scale("+ie(Te,1)+" "+ie($e,1)+")"),te.length&&!(this.text||this).textPath&&Ue.setAttribute(Pe,te.join(" "))}visibilitySetter(Pe,Ue,Oe){Pe==="inherit"?Oe.removeAttribute(Ue):this[Ue]!==Pe&&Oe.setAttribute(Ue,Pe),this[Ue]=Pe}xGetter(Pe){return this.element.nodeName==="circle"&&(Pe==="x"?Pe="cx":Pe==="y"&&(Pe="cy")),this._defaultGetter(Pe)}zIndexSetter(Pe,Ue){let Oe=this.renderer,Be=this.parentGroup,Ye=(Be||Oe).element||Oe.box,Se=this.element,Te=Ye===Oe.box,$e,Ve,oe,te=!1,se,me=this.added,Ee;if(ne(Pe)?(Se.setAttribute("data-z-index",Pe),Pe=+Pe,this[Ue]===Pe&&(me=!1)):ne(this[Ue])&&Se.removeAttribute("data-z-index"),this[Ue]=Pe,me){for((Pe=this.zIndex)&&Be&&(Be.handleZ=!0),Ee=($e=Ye.childNodes).length-1;Ee>=0&&!te;Ee--)se=!ne(oe=(Ve=$e[Ee]).getAttribute("data-z-index")),Ve!==Se&&(Pe<0&&se&&!Te&&!Ee?(Ye.insertBefore(Se,$e[Ee]),te=!0):(pe(oe)<=Pe||se&&(!ne(Pe)||Pe>=0))&&(Ye.insertBefore(Se,$e[Ee+1]),te=!0));te||(Ye.insertBefore(Se,$e[Te?3:0]),te=!0)}return te}}return Re.symbolCustomAttribs=["anchorX","anchorY","clockwise","end","height","innerR","r","start","width","x","y"],Re.prototype.strokeSetter=Re.prototype.fillSetter,Re.prototype.yGetter=Re.prototype.xGetter,Re.prototype.matrixSetter=Re.prototype.rotationOriginXSetter=Re.prototype.rotationOriginYSetter=Re.prototype.rotationSetter=Re.prototype.scaleXSetter=Re.prototype.scaleYSetter=Re.prototype.translateXSetter=Re.prototype.translateYSetter=Re.prototype.verticalAlignSetter=function(We,Pe){this[Pe]=We,this.doTransform=!0},Re}),n(r,"Core/Renderer/SVG/SVGLabel.js",[r["Core/Renderer/SVG/SVGElement.js"],r["Core/Utilities.js"]],function(o,a){let{defined:l,extend:c,isNumber:u,merge:g,pick:b,removeEvent:x}=a;class S extends o{constructor(k,T,D,I,O,N,ee,ne,B,le){let fe;super(k,"g"),this.paddingLeftSetter=this.paddingSetter,this.paddingRightSetter=this.paddingSetter,this.textStr=T,this.x=D,this.y=I,this.anchorX=N,this.anchorY=ee,this.baseline=B,this.className=le,this.addClass(le==="button"?"highcharts-no-tooltip":"highcharts-label"),le&&this.addClass("highcharts-"+le),this.text=k.text(void 0,0,0,ne).attr({zIndex:1}),typeof O=="string"&&((fe=/^url\((.*?)\)$/.test(O))||this.renderer.symbols[O])&&(this.symbolKey=O),this.bBox=S.emptyBBox,this.padding=3,this.baselineOffset=0,this.needsBox=k.styledMode||fe,this.deferredAttr={},this.alignFactor=0}alignSetter(k){let T={left:0,center:.5,right:1}[k];T!==this.alignFactor&&(this.alignFactor=T,this.bBox&&u(this.xSetting)&&this.attr({x:this.xSetting}))}anchorXSetter(k,T){this.anchorX=k,this.boxAttr(T,Math.round(k)-this.getCrispAdjust()-this.xSetting)}anchorYSetter(k,T){this.anchorY=k,this.boxAttr(T,k-this.ySetting)}boxAttr(k,T){this.box?this.box.attr(k,T):this.deferredAttr[k]=T}css(k){if(k){let T={};k=g(k),S.textProps.forEach(D=>{k[D]!==void 0&&(T[D]=k[D],delete k[D])}),this.text.css(T),"fontSize"in T||"fontWeight"in T?this.updateTextPadding():("width"in T||"textOverflow"in T)&&this.updateBoxSize()}return o.prototype.css.call(this,k)}destroy(){x(this.element,"mouseenter"),x(this.element,"mouseleave"),this.text&&this.text.destroy(),this.box&&(this.box=this.box.destroy()),o.prototype.destroy.call(this)}fillSetter(k,T){k&&(this.needsBox=!0),this.fill=k,this.boxAttr(T,k)}getBBox(k,T){this.textStr&&this.bBox.width===0&&this.bBox.height===0&&this.updateBoxSize();let{padding:D,height:I=0,translateX:O=0,translateY:N=0,width:ee=0}=this,ne=b(this.paddingLeft,D),B=T??(this.rotation||0),le={width:ee,height:I,x:O+this.bBox.x-ne,y:N+this.bBox.y-D+this.baselineOffset};return B&&(le=this.getRotatedBox(le,B)),le}getCrispAdjust(){return(this.renderer.styledMode&&this.box?this.box.strokeWidth():this["stroke-width"]?parseInt(this["stroke-width"],10):0)%2/2}heightSetter(k){this.heightSetting=k}onAdd(){this.text.add(this),this.attr({text:b(this.textStr,""),x:this.x||0,y:this.y||0}),this.box&&l(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY})}paddingSetter(k,T){u(k)?k!==this[T]&&(this[T]=k,this.updateTextPadding()):this[T]=void 0}rSetter(k,T){this.boxAttr(T,k)}strokeSetter(k,T){this.stroke=k,this.boxAttr(T,k)}"stroke-widthSetter"(k,T){k&&(this.needsBox=!0),this["stroke-width"]=k,this.boxAttr(T,k)}"text-alignSetter"(k){this.textAlign=k}textSetter(k){k!==void 0&&this.text.attr({text:k}),this.updateTextPadding(),this.reAlign()}updateBoxSize(){let k,T=this.text,D={},I=this.padding,O=this.bBox=(!u(this.widthSetting)||!u(this.heightSetting)||this.textAlign)&&l(T.textStr)?T.getBBox(void 0,0):S.emptyBBox;this.width=this.getPaddedWidth(),this.height=(this.heightSetting||O.height||0)+2*I;let N=this.renderer.fontMetrics(T);if(this.baselineOffset=I+Math.min((this.text.firstLineMetrics||N).b,O.height||1/0),this.heightSetting&&(this.baselineOffset+=(this.heightSetting-N.h)/2),this.needsBox&&!T.textPath){if(!this.box){let ee=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect();ee.addClass((this.className==="button"?"":"highcharts-label-box")+(this.className?" highcharts-"+this.className+"-box":"")),ee.add(this)}k=this.getCrispAdjust(),D.x=k,D.y=(this.baseline?-this.baselineOffset:0)+k,D.width=Math.round(this.width),D.height=Math.round(this.height),this.box.attr(c(D,this.deferredAttr)),this.deferredAttr={}}}updateTextPadding(){let k=this.text;if(!k.textPath){this.updateBoxSize();let T=this.baseline?0:this.baselineOffset,D=b(this.paddingLeft,this.padding);l(this.widthSetting)&&this.bBox&&(this.textAlign==="center"||this.textAlign==="right")&&(D+={center:.5,right:1}[this.textAlign]*(this.widthSetting-this.bBox.width)),(D!==k.x||T!==k.y)&&(k.attr("x",D),k.hasBoxWidthChanged&&(this.bBox=k.getBBox(!0)),T!==void 0&&k.attr("y",T)),k.x=D,k.y=T}}widthSetter(k){this.widthSetting=u(k)?k:void 0}getPaddedWidth(){let k=this.padding,T=b(this.paddingLeft,k),D=b(this.paddingRight,k);return(this.widthSetting||this.bBox.width||0)+T+D}xSetter(k){this.x=k,this.alignFactor&&(k-=this.alignFactor*this.getPaddedWidth(),this["forceAnimate:x"]=!0),this.xSetting=Math.round(k),this.attr("translateX",this.xSetting)}ySetter(k){this.ySetting=this.y=Math.round(k),this.attr("translateY",this.ySetting)}}return S.emptyBBox={width:0,height:0,x:0,y:0},S.textProps=["color","direction","fontFamily","fontSize","fontStyle","fontWeight","lineHeight","textAlign","textDecoration","textOutline","textOverflow","whiteSpace","width"],S}),n(r,"Core/Renderer/SVG/Symbols.js",[r["Core/Utilities.js"]],function(o){let{defined:a,isNumber:l,pick:c}=o;function u(x,S,$,k,T){let D=[];if(T){let I=T.start||0,O=c(T.r,$),N=c(T.r,k||$),ee=2e-4/Math.max(O,1),ne=Math.abs((T.end||0)-I-2*Math.PI)0&&N0)return ee;if(x+O>$-I)if(N>S+I&&NS+I&&N0){let ne=Nk&&O<$-I?ee.splice(5,1,["L",O+6,S+k],["L",O,S+k+6],["L",O-6,S+k],["L",x+D,S+k]):N<0&&O>I&&ee.splice(1,1,["L",O-6,S],["L",O,S-6],["L",O+6,S],["L",$-D,S]);return ee},circle:function(x,S,$,k){return u(x+$/2,S+k/2,$/2,k/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},diamond:function(x,S,$,k){return[["M",x+$/2,S],["L",x+$,S+k/2],["L",x+$/2,S+k],["L",x,S+k/2],["Z"]]},rect:g,roundedRect:b,square:g,triangle:function(x,S,$,k){return[["M",x+$/2,S],["L",x+$,S+k],["L",x,S+k],["Z"]]},"triangle-down":function(x,S,$,k){return[["M",x,S],["L",x+$,S],["L",x+$/2,S+k],["Z"]]}}}),n(r,"Core/Renderer/SVG/TextBuilder.js",[r["Core/Renderer/HTML/AST.js"],r["Core/Globals.js"],r["Core/Utilities.js"]],function(o,a,l){let{doc:c,SVG_NS:u,win:g}=a,{attr:b,extend:x,fireEvent:S,isString:$,objectEach:k,pick:T}=l;return class{constructor(D){let I=D.styles;this.renderer=D.renderer,this.svgElement=D,this.width=D.textWidth,this.textLineHeight=I&&I.lineHeight,this.textOutline=I&&I.textOutline,this.ellipsis=!!(I&&I.textOverflow==="ellipsis"),this.noWrap=!!(I&&I.whiteSpace==="nowrap")}buildSVG(){let D=this.svgElement,I=D.element,O=D.renderer,N=T(D.textStr,"").toString(),ee=N.indexOf("<")!==-1,ne=I.childNodes,B=!D.added&&O.box,le=[N,this.ellipsis,this.noWrap,this.textLineHeight,this.textOutline,D.getStyle("font-size"),this.width].join(",");if(le!==D.textCache){D.textCache=le,delete D.actualWidth;for(let fe=ne.length;fe--;)I.removeChild(ne[fe]);if(ee||this.ellipsis||this.width||D.textPath||N.indexOf(" ")!==-1&&(!this.noWrap||//g.test(N))){if(N!==""){B&&B.appendChild(I);let fe=new o(N);this.modifyTree(fe.nodes),fe.addToDOM(I),this.modifyDOM(),this.ellipsis&&(I.textContent||"").indexOf("\u2026")!==-1&&D.attr("title",this.unescapeEntities(D.textStr||"",["<",">"])),B&&B.removeChild(I)}}else I.appendChild(c.createTextNode(this.unescapeEntities(N)));$(this.textOutline)&&D.applyTextOutline&&D.applyTextOutline(this.textOutline)}}modifyDOM(){let D,I=this.svgElement,O=b(I.element,"x");for(I.firstLineMetrics=void 0;(D=I.element.firstChild)&&/^[\s\u200B]*$/.test(D.textContent||" ");)I.element.removeChild(D);[].forEach.call(I.element.querySelectorAll("tspan.highcharts-br"),(B,le)=>{B.nextSibling&&B.previousSibling&&(le===0&&B.previousSibling.nodeType===1&&(I.firstLineMetrics=I.renderer.fontMetrics(B.previousSibling)),b(B,{dy:this.getLineHeight(B.nextSibling),x:O}))});let N=this.width||0;if(!N)return;let ee=(B,le)=>{let fe=B.textContent||"",xe=fe.replace(/([^\^])-/g,"$1- ").split(" "),we=!this.noWrap&&(xe.length>1||I.element.childNodes.length>1),he=this.getLineHeight(le),_e=0,ve=I.actualWidth;if(this.ellipsis)fe&&this.truncate(B,fe,void 0,0,Math.max(0,N-.8*he),(ae,ie)=>ae.substring(0,ie)+"\u2026");else if(we){let ae=[],ie=[];for(;le.firstChild&&le.firstChild!==B;)ie.push(le.firstChild),le.removeChild(le.firstChild);for(;xe.length;)xe.length&&!this.noWrap&&_e>0&&(ae.push(B.textContent||""),B.textContent=xe.join(" ").replace(/- /g,"-")),this.truncate(B,void 0,xe,_e===0&&ve||0,N,(pe,ue)=>xe.slice(0,ue).join(" ").replace(/- /g,"-")),ve=I.actualWidth,_e++;ie.forEach(pe=>{le.insertBefore(pe,B)}),ae.forEach(pe=>{le.insertBefore(c.createTextNode(pe),B);let ue=c.createElementNS(u,"tspan");ue.textContent="\u200B",b(ue,{dy:he,x:O}),le.insertBefore(ue,B)})}},ne=B=>{[].slice.call(B.childNodes).forEach(le=>{le.nodeType===g.Node.TEXT_NODE?ee(le,B):(le.className.baseVal.indexOf("highcharts-br")!==-1&&(I.actualWidth=0),ne(le))})};ne(I.element)}getLineHeight(D){let I=D.nodeType===g.Node.TEXT_NODE?D.parentElement:D;return this.textLineHeight?parseInt(this.textLineHeight.toString(),10):this.renderer.fontMetrics(I||this.svgElement.element).h}modifyTree(D){let I=(O,N)=>{let{attributes:ee={},children:ne,style:B={},tagName:le}=O,fe=this.renderer.styledMode;if(le==="b"||le==="strong"?fe?ee.class="highcharts-strong":B.fontWeight="bold":(le==="i"||le==="em")&&(fe?ee.class="highcharts-emphasized":B.fontStyle="italic"),B&&B.color&&(B.fill=B.color),le==="br"){ee.class="highcharts-br",O.textContent="\u200B";let xe=D[N+1];xe&&xe.textContent&&(xe.textContent=xe.textContent.replace(/^ +/gm,""))}else le==="a"&&ne&&ne.some(xe=>xe.tagName==="#text")&&(O.children=[{children:ne,tagName:"tspan"}]);le!=="#text"&&le!=="a"&&(O.tagName="tspan"),x(O,{attributes:ee,style:B}),ne&&ne.filter(xe=>xe.tagName!=="#text").forEach(I)};D.forEach(I),S(this.svgElement,"afterModifyTree",{nodes:D})}truncate(D,I,O,N,ee,ne){let B,le,fe=this.svgElement,{rotation:xe}=fe,we=[],he=O?1:0,_e=(I||O||"").length,ve=_e,ae=function(ie,pe){let ue=pe||ie,ge=D.parentNode;if(ge&&we[ue]===void 0&&ge.getSubStringLength)try{we[ue]=N+ge.getSubStringLength(0,O?ue+1:ue)}catch{}return we[ue]};if(fe.rotation=0,N+(le=ae(D.textContent.length))>ee){for(;he<=_e;)ve=Math.ceil((he+_e)/2),O&&(B=ne(O,ve)),le=ae(ve,B&&B.length-1),he===_e?he=_e+1:le>ee?_e=ve-1:he=ve;_e===0?D.textContent="":I&&_e===I.length-1||(D.textContent=B||ne(I||O,ve))}O&&O.splice(0,ve),fe.actualWidth=le,fe.rotation=xe}unescapeEntities(D,I){return k(this.renderer.escapes,function(O,N){I&&I.indexOf(O)!==-1||(D=D.toString().replace(RegExp(O,"g"),N))}),D}}}),n(r,"Core/Renderer/SVG/SVGRenderer.js",[r["Core/Renderer/HTML/AST.js"],r["Core/Defaults.js"],r["Core/Color/Color.js"],r["Core/Globals.js"],r["Core/Renderer/RendererRegistry.js"],r["Core/Renderer/SVG/SVGElement.js"],r["Core/Renderer/SVG/SVGLabel.js"],r["Core/Renderer/SVG/Symbols.js"],r["Core/Renderer/SVG/TextBuilder.js"],r["Core/Utilities.js"]],function(o,a,l,c,u,g,b,x,S,$){let k,{defaultOptions:T}=a,{charts:D,deg2rad:I,doc:O,isFirefox:N,isMS:ee,isWebKit:ne,noop:B,SVG_NS:le,symbolSizes:fe,win:xe}=c,{addEvent:we,attr:he,createElement:_e,crisp:ve,css:ae,defined:ie,destroyObjectProperties:pe,extend:ue,isArray:ge,isNumber:ye,isObject:Ae,isString:Re,merge:We,pick:Pe,pInt:Ue,replaceNested:Oe,uniqueKey:Be}=$;class Ye{constructor(Te,$e,Ve,oe,te,se,me){let Ee,Le,He=this.createElement("svg").attr({version:"1.1",class:"highcharts-root"}),ze=He.element;me||He.css(this.getStyle(oe||{})),Te.appendChild(ze),he(Te,"dir","ltr"),Te.innerHTML.indexOf("xmlns")===-1&&he(ze,"xmlns",this.SVG_NS),this.box=ze,this.boxWrapper=He,this.alignedObjects=[],this.url=this.getReferenceURL(),this.createElement("desc").add().element.appendChild(O.createTextNode("Created with Highcharts 11.4.3")),this.defs=this.createElement("defs").add(),this.allowHTML=se,this.forExport=te,this.styledMode=me,this.gradients={},this.cache={},this.cacheKeys=[],this.imgCount=0,this.rootFontSize=He.getStyle("font-size"),this.setSize($e,Ve,!1),N&&Te.getBoundingClientRect&&((Ee=function(){ae(Te,{left:0,top:0}),Le=Te.getBoundingClientRect(),ae(Te,{left:Math.ceil(Le.left)-Le.left+"px",top:Math.ceil(Le.top)-Le.top+"px"})})(),this.unSubPixelFix=we(xe,"resize",Ee))}definition(Te){return new o([Te]).addToDOM(this.defs.element)}getReferenceURL(){if((N||ne)&&O.getElementsByTagName("base").length){if(!ie(k)){let Te=Be(),$e=new o([{tagName:"svg",attributes:{width:8,height:8},children:[{tagName:"defs",children:[{tagName:"clipPath",attributes:{id:Te},children:[{tagName:"rect",attributes:{width:4,height:4}}]}]},{tagName:"rect",attributes:{id:"hitme",width:8,height:8,"clip-path":`url(#${Te})`,fill:"rgba(0,0,0,0.001)"}}]}]).addToDOM(O.body);ae($e,{position:"fixed",top:0,left:0,zIndex:9e5});let Ve=O.elementFromPoint(6,6);k=(Ve&&Ve.id)==="hitme",O.body.removeChild($e)}if(k)return Oe(xe.location.href.split("#")[0],[/<[^>]*>/g,""],[/([\('\)])/g,"\\$1"],[/ /g,"%20"])}return""}getStyle(Te){return this.style=ue({fontFamily:"Helvetica, Arial, sans-serif",fontSize:"1rem"},Te),this.style}setStyle(Te){this.boxWrapper.css(this.getStyle(Te))}isHidden(){return!this.boxWrapper.getBBox().width}destroy(){let Te=this.defs;return this.box=null,this.boxWrapper=this.boxWrapper.destroy(),pe(this.gradients||{}),this.gradients=null,this.defs=Te.destroy(),this.unSubPixelFix&&this.unSubPixelFix(),this.alignedObjects=null,null}createElement(Te){return new this.Element(this,Te)}getRadialAttr(Te,$e){return{cx:Te[0]-Te[2]/2+($e.cx||0)*Te[2],cy:Te[1]-Te[2]/2+($e.cy||0)*Te[2],r:($e.r||0)*Te[2]}}shadowDefinition(Te){let $e=[`highcharts-drop-shadow-${this.chartIndex}`,...Object.keys(Te).map(oe=>`${oe}-${Te[oe]}`)].join("-").toLowerCase().replace(/[^a-z0-9\-]/g,""),Ve=We({color:"#000000",offsetX:1,offsetY:1,opacity:.15,width:5},Te);return this.defs.element.querySelector(`#${$e}`)||this.definition({tagName:"filter",attributes:{id:$e,filterUnits:Ve.filterUnits},children:[{tagName:"feDropShadow",attributes:{dx:Ve.offsetX,dy:Ve.offsetY,"flood-color":Ve.color,"flood-opacity":Math.min(5*Ve.opacity,1),stdDeviation:Ve.width/2}}]}),$e}buildText(Te){new S(Te).buildSVG()}getContrast(Te){let $e=l.parse(Te).rgba.map(oe=>{let te=oe/255;return te<=.03928?te/12.92:Math.pow((te+.055)/1.055,2.4)}),Ve=.2126*$e[0]+.7152*$e[1]+.0722*$e[2];return 1.05/(Ve+.05)>(Ve+.05)/.05?"#FFFFFF":"#000000"}button(Te,$e,Ve,oe,te={},se,me,Ee,Le,He){let ze=this.label(Te,$e,Ve,Le,void 0,void 0,He,void 0,"button"),Qe=this.styledMode,rt=arguments,Ke=0;te=We(T.global.buttonTheme,te),Qe&&(delete te.fill,delete te.stroke,delete te["stroke-width"]);let Ie=te.states||{},Fe=te.style||{};delete te.states,delete te.style;let je=[o.filterUserAttributes(te)],Ze=[Fe];return Qe||["hover","select","disabled"].forEach((Ce,ce)=>{je.push(We(je[0],o.filterUserAttributes(rt[ce+5]||Ie[Ce]||{}))),Ze.push(je[ce+1].style),delete je[ce+1].style}),we(ze.element,ee?"mouseover":"mouseenter",function(){Ke!==3&&ze.setState(1)}),we(ze.element,ee?"mouseout":"mouseleave",function(){Ke!==3&&ze.setState(Ke)}),ze.setState=(Ce=0)=>{if(Ce!==1&&(ze.state=Ke=Ce),ze.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-"+["normal","hover","pressed","disabled"][Ce]),!Qe){ze.attr(je[Ce]);let ce=Ze[Ce];Ae(ce)&&ze.css(ce)}},ze.attr(je[0]),!Qe&&(ze.css(ue({cursor:"default"},Fe)),He&&ze.text.css({pointerEvents:"none"})),ze.on("touchstart",Ce=>Ce.stopPropagation()).on("click",function(Ce){Ke!==3&&oe.call(ze,Ce)})}crispLine(Te,$e){let[Ve,oe]=Te;return ie(Ve[1])&&Ve[1]===oe[1]&&(Ve[1]=oe[1]=ve(Ve[1],$e)),ie(Ve[2])&&Ve[2]===oe[2]&&(Ve[2]=oe[2]=ve(Ve[2],$e)),Te}path(Te){let $e=this.styledMode?{}:{fill:"none"};return ge(Te)?$e.d=Te:Ae(Te)&&ue($e,Te),this.createElement("path").attr($e)}circle(Te,$e,Ve){let oe=Ae(Te)?Te:Te===void 0?{}:{x:Te,y:$e,r:Ve},te=this.createElement("circle");return te.xSetter=te.ySetter=function(se,me,Ee){Ee.setAttribute("c"+me,se)},te.attr(oe)}arc(Te,$e,Ve,oe,te,se){let me;Ae(Te)?($e=(me=Te).y,Ve=me.r,oe=me.innerR,te=me.start,se=me.end,Te=me.x):me={innerR:oe,start:te,end:se};let Ee=this.symbol("arc",Te,$e,Ve,Ve,me);return Ee.r=Ve,Ee}rect(Te,$e,Ve,oe,te,se){let me=Ae(Te)?Te:Te===void 0?{}:{x:Te,y:$e,r:te,width:Math.max(Ve||0,0),height:Math.max(oe||0,0)},Ee=this.createElement("rect");return this.styledMode||(se!==void 0&&(me["stroke-width"]=se,ue(me,Ee.crisp(me))),me.fill="none"),Ee.rSetter=function(Le,He,ze){Ee.r=Le,he(ze,{rx:Le,ry:Le})},Ee.rGetter=function(){return Ee.r||0},Ee.attr(me)}roundedRect(Te){return this.symbol("roundedRect").attr(Te)}setSize(Te,$e,Ve){this.width=Te,this.height=$e,this.boxWrapper.animate({width:Te,height:$e},{step:function(){this.attr({viewBox:"0 0 "+this.attr("width")+" "+this.attr("height")})},duration:Pe(Ve,!0)?void 0:0}),this.alignElements()}g(Te){let $e=this.createElement("g");return Te?$e.attr({class:"highcharts-"+Te}):$e}image(Te,$e,Ve,oe,te,se){let me={preserveAspectRatio:"none"};ye($e)&&(me.x=$e),ye(Ve)&&(me.y=Ve),ye(oe)&&(me.width=oe),ye(te)&&(me.height=te);let Ee=this.createElement("image").attr(me),Le=function(He){Ee.attr({href:Te}),se.call(Ee,He)};if(se){Ee.attr({href:"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="});let He=new xe.Image;we(He,"load",Le),He.src=Te,He.complete&&Le({})}else Ee.attr({href:Te});return Ee}symbol(Te,$e,Ve,oe,te,se){let me,Ee,Le,He,ze=this,Qe=/^url\((.*?)\)$/,rt=Qe.test(Te),Ke=!rt&&(this.symbols[Te]?Te:"circle"),Ie=Ke&&this.symbols[Ke];if(Ie)typeof $e=="number"&&(Ee=Ie.call(this.symbols,$e||0,Ve||0,oe||0,te||0,se)),me=this.path(Ee),ze.styledMode||me.attr("fill","none"),ue(me,{symbolName:Ke||void 0,x:$e,y:Ve,width:oe,height:te}),se&&ue(me,se);else if(rt){Le=Te.match(Qe)[1];let Fe=me=this.image(Le);Fe.imgwidth=Pe(se&&se.width,fe[Le]&&fe[Le].width),Fe.imgheight=Pe(se&&se.height,fe[Le]&&fe[Le].height),He=je=>je.attr({width:je.width,height:je.height}),["width","height"].forEach(je=>{Fe[`${je}Setter`]=function(Ze,Ce){this[Ce]=Ze;let{alignByTranslate:ce,element:de,width:De,height:qe,imgwidth:nt,imgheight:lt}=this,pt=Ce==="width"?nt:lt,bt=1;se&&se.backgroundSize==="within"&&De&&qe&&nt&<?(bt=Math.min(De/nt,qe/lt),he(de,{width:Math.round(nt*bt),height:Math.round(lt*bt)})):de&&pt&&de.setAttribute(Ce,pt),!ce&&nt&<&&this.translate(((De||0)-nt*bt)/2,((qe||0)-lt*bt)/2)}}),ie($e)&&Fe.attr({x:$e,y:Ve}),Fe.isImg=!0,ie(Fe.imgwidth)&&ie(Fe.imgheight)?He(Fe):(Fe.attr({width:0,height:0}),_e("img",{onload:function(){let je=D[ze.chartIndex];this.width===0&&(ae(this,{position:"absolute",top:"-999em"}),O.body.appendChild(this)),fe[Le]={width:this.width,height:this.height},Fe.imgwidth=this.width,Fe.imgheight=this.height,Fe.element&&He(Fe),this.parentNode&&this.parentNode.removeChild(this),ze.imgCount--,ze.imgCount||!je||je.hasLoaded||je.onload()},src:Le}),this.imgCount++)}return me}clipRect(Te,$e,Ve,oe){return this.rect(Te,$e,Ve,oe,0)}text(Te,$e,Ve,oe){let te={};if(oe&&(this.allowHTML||!this.forExport))return this.html(Te,$e,Ve);te.x=Math.round($e||0),Ve&&(te.y=Math.round(Ve)),ie(Te)&&(te.text=Te);let se=this.createElement("text").attr(te);return oe&&(!this.forExport||this.allowHTML)||(se.xSetter=function(me,Ee,Le){let He=Le.getElementsByTagName("tspan"),ze=Le.getAttribute(Ee);for(let Qe=0,rt;QeTe.align())}}return ue(Ye.prototype,{Element:g,SVG_NS:le,escapes:{"&":"&","<":"<",">":">","'":"'",'"':"""},symbols:x,draw:B}),u.registerRendererType("svg",Ye,!0),Ye}),n(r,"Core/Renderer/HTML/HTMLElement.js",[r["Core/Renderer/HTML/AST.js"],r["Core/Globals.js"],r["Core/Renderer/SVG/SVGElement.js"],r["Core/Utilities.js"]],function(o,a,l,c){let{composed:u}=a,{attr:g,css:b,createElement:x,defined:S,extend:$,pInt:k,pushUnique:T}=c;function D(ee,ne,B){let le=this.div?.style||B.style;l.prototype[`${ne}Setter`].call(this,ee,ne,B),le&&(le[ne]=ee)}let I=(ee,ne)=>{if(!ee.div){let B=g(ee.element,"class"),le=ee.css,fe=x("div",B?{className:B}:void 0,{position:"absolute",left:`${ee.translateX||0}px`,top:`${ee.translateY||0}px`,...ee.styles,display:ee.display,opacity:ee.opacity,visibility:ee.visibility},ee.parentGroup?.div||ne);ee.classSetter=(xe,we,he)=>{he.setAttribute("class",xe),fe.className=xe},ee.translateXSetter=ee.translateYSetter=(xe,we)=>{ee[we]=xe,fe.style[we==="translateX"?"left":"top"]=`${xe}px`,ee.doTransform=!0},ee.opacitySetter=ee.visibilitySetter=D,ee.css=xe=>(le.call(ee,xe),xe.cursor&&(fe.style.cursor=xe.cursor),xe.pointerEvents&&(fe.style.pointerEvents=xe.pointerEvents),ee),ee.on=function(){return l.prototype.on.apply({element:fe,onEvents:ee.onEvents},arguments),ee},ee.div=fe}return ee.div};class O extends l{static compose(ne){T(u,this.compose)&&(ne.prototype.html=function(B,le,fe){return new O(this,"span").attr({text:B,x:Math.round(le),y:Math.round(fe)})})}constructor(ne,B){super(ne,B),this.css({position:"absolute",...ne.styledMode?{}:{fontFamily:ne.style.fontFamily,fontSize:ne.style.fontSize}}),this.element.style.whiteSpace="nowrap"}getSpanCorrection(ne,B,le){this.xCorr=-ne*le,this.yCorr=-B}css(ne){let B,{element:le}=this,fe=le.tagName==="SPAN"&&ne&&"width"in ne,xe=fe&&ne.width;return fe&&(delete ne.width,this.textWidth=k(xe)||void 0,B=!0),ne?.textOverflow==="ellipsis"&&(ne.whiteSpace="nowrap",ne.overflow="hidden"),$(this.styles,ne),b(le,ne),B&&this.updateTransform(),this}htmlGetBBox(){let{element:ne}=this;return{x:ne.offsetLeft,y:ne.offsetTop,width:ne.offsetWidth,height:ne.offsetHeight}}updateTransform(){if(!this.added){this.alignOnAdd=!0;return}let{element:ne,renderer:B,rotation:le,rotationOriginX:fe,rotationOriginY:xe,styles:we,textAlign:he="left",textWidth:_e,translateX:ve=0,translateY:ae=0,x:ie=0,y:pe=0}=this,ue=we.whiteSpace;if(b(ne,{marginLeft:`${ve}px`,marginTop:`${ae}px`}),ne.tagName==="SPAN"){let ge=[le,he,ne.innerHTML,_e,this.textAlign].join(","),ye=-(this.parentGroup?.padding*1)||0,Ae,Re=!1;if(_e!==this.oldTextWidth){let Be=this.textPxLength?this.textPxLength:(b(ne,{width:"",whiteSpace:ue||"nowrap"}),ne.offsetWidth),Ye=_e||0;(Ye>this.oldTextWidth||Be>Ye)&&(/[ \-]/.test(ne.textContent||ne.innerText)||ne.style.textOverflow==="ellipsis")&&(b(ne,{width:Be>Ye||le?_e+"px":"auto",display:"block",whiteSpace:ue||"normal"}),this.oldTextWidth=_e,Re=!0)}this.hasBoxWidthChanged=Re,ge!==this.cTT&&(Ae=B.fontMetrics(ne).b,S(le)&&(le!==(this.oldRotation||0)||he!==this.oldAlign)&&this.setSpanRotation(le,ye,ye),this.getSpanCorrection(!S(le)&&this.textPxLength||ne.offsetWidth,Ae,{left:0,center:.5,right:1}[he]));let{xCorr:We=0,yCorr:Pe=0}=this,Ue=(fe??ie)-We-ie-ye,Oe=(xe??pe)-Pe-pe-ye;b(ne,{left:`${ie+We}px`,top:`${pe+Pe}px`,transformOrigin:`${Ue}px ${Oe}px`}),this.cTT=ge,this.oldRotation=le,this.oldAlign=he}}setSpanRotation(ne,B,le){b(this.element,{transform:`rotate(${ne}deg)`,transformOrigin:`${B}% ${le}px`})}add(ne){let B,le=this.renderer.box.parentNode,fe=[];if(this.parentGroup=ne,ne&&!(B=ne.div)){let xe=ne;for(;xe;)fe.push(xe),xe=xe.parentGroup;for(let we of fe.reverse())B=I(we,le)}return(B||le).appendChild(this.element),this.added=!0,this.alignOnAdd&&this.updateTransform(),this}textSetter(ne){ne!==this.textStr&&(delete this.bBox,delete this.oldTextWidth,o.setElementHTML(this.element,ne??""),this.textStr=ne,this.doTransform=!0)}alignSetter(ne){this.alignValue=this.textAlign=ne,this.doTransform=!0}xSetter(ne,B){this[B]=ne,this.doTransform=!0}}let N=O.prototype;return N.visibilitySetter=N.opacitySetter=D,N.ySetter=N.rotationSetter=N.rotationOriginXSetter=N.rotationOriginYSetter=N.xSetter,O}),n(r,"Core/Axis/AxisDefaults.js",[],function(){var o,a;return(a=o||(o={})).xAxis={alignTicks:!0,allowDecimals:void 0,panningEnabled:!0,zIndex:2,zoomEnabled:!0,dateTimeLabelFormats:{millisecond:{main:"%H:%M:%S.%L",range:!1},second:{main:"%H:%M:%S",range:!1},minute:{main:"%H:%M",range:!1},hour:{main:"%H:%M",range:!1},day:{main:"%e %b"},week:{main:"%e %b"},month:{main:"%b '%y"},year:{main:"%Y"}},endOnTick:!1,gridLineDashStyle:"Solid",gridZIndex:1,labels:{autoRotationLimit:80,distance:15,enabled:!0,indentation:10,overflow:"justify",reserveSpace:void 0,rotation:void 0,staggerLines:0,step:0,useHTML:!1,zIndex:7,style:{color:"#333333",cursor:"default",fontSize:"0.8em"}},maxPadding:.01,minorGridLineDashStyle:"Solid",minorTickLength:2,minorTickPosition:"outside",minorTicksPerMajor:5,minPadding:.01,offset:void 0,reversed:void 0,reversedStacks:!1,showEmpty:!0,showFirstLabel:!0,showLastLabel:!0,startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:"between",tickPosition:"outside",title:{align:"middle",useHTML:!1,x:0,y:0,style:{color:"#666666",fontSize:"0.8em"}},type:"linear",uniqueNames:!0,visible:!0,minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#333333",lineWidth:1,gridLineColor:"#e6e6e6",gridLineWidth:void 0,tickColor:"#333333"},a.yAxis={reversedStacks:!0,endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:void 0},startOnTick:!0,title:{text:"Values"},stackLabels:{animation:{},allowOverlap:!1,enabled:!1,crop:!0,overflow:"justify",formatter:function(){let{numberFormatter:l}=this.axis.chart;return l(this.total||0,-1)},style:{color:"#000000",fontSize:"0.7em",fontWeight:"bold",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},o}),n(r,"Core/Foundation.js",[r["Core/Utilities.js"]],function(o){var a;let{addEvent:l,isFunction:c,objectEach:u,removeEvent:g}=o;return(a||(a={})).registerEventOptions=function(b,x){b.eventOptions=b.eventOptions||{},u(x.events,function(S,$){b.eventOptions[$]!==S&&(b.eventOptions[$]&&(g(b,$,b.eventOptions[$]),delete b.eventOptions[$]),c(S)&&(b.eventOptions[$]=S,l(b,$,S,{order:0})))})},a}),n(r,"Core/Axis/Tick.js",[r["Core/Templating.js"],r["Core/Globals.js"],r["Core/Utilities.js"]],function(o,a,l){let{deg2rad:c}=a,{clamp:u,correctFloat:g,defined:b,destroyObjectProperties:x,extend:S,fireEvent:$,isNumber:k,merge:T,objectEach:D,pick:I}=l;return class{constructor(O,N,ee,ne,B){this.isNew=!0,this.isNewLabel=!0,this.axis=O,this.pos=N,this.type=ee||"",this.parameters=B||{},this.tickmarkOffset=this.parameters.tickmarkOffset,this.options=this.parameters.options,$(this,"init"),ee||ne||this.addLabel()}addLabel(){let O=this,N=O.axis,ee=N.options,ne=N.chart,B=N.categories,le=N.logarithmic,fe=N.names,xe=O.pos,we=I(O.options&&O.options.labels,ee.labels),he=N.tickPositions,_e=xe===he[0],ve=xe===he[he.length-1],ae=(!we.step||we.step===1)&&N.tickInterval===1,ie=he.info,pe=O.label,ue,ge,ye,Ae=this.parameters.category||(B?I(B[xe],fe[xe],xe):xe);le&&k(Ae)&&(Ae=g(le.lin2log(Ae))),N.dateTime&&(ie?ue=(ge=ne.time.resolveDTLFormat(ee.dateTimeLabelFormats[!ee.grid&&ie.higherRanks[xe]||ie.unitName])).main:k(Ae)&&(ue=N.dateTime.getXDateFormat(Ae,ee.dateTimeLabelFormats||{}))),O.isFirst=_e,O.isLast=ve;let Re={axis:N,chart:ne,dateTimeLabelFormat:ue,isFirst:_e,isLast:ve,pos:xe,tick:O,tickPositionInfo:ie,value:Ae};$(this,"labelFormat",Re);let We=Oe=>we.formatter?we.formatter.call(Oe,Oe):we.format?(Oe.text=N.defaultLabelFormatter.call(Oe),o.format(we.format,Oe,ne)):N.defaultLabelFormatter.call(Oe),Pe=We.call(Re,Re),Ue=ge&&ge.list;Ue?O.shortenLabel=function(){for(ye=0;ye0&&ne+_e*ve>xe&&(Ae=Math.round((B-ne)/Math.cos(he*c))):(ge=ne-_e*ve,ye=ne+(1-_e)*ve,gexe&&(pe=xe-O.x+pe*_e,ue=-1),(pe=Math.min(ae,pe))pe||N.autoRotation&&(we.styles||{}).width)&&(Ae=pe)),Ae&&(this.shortenLabel?this.shortenLabel():(ie.width=Math.floor(Ae)+"px",(ee.style||{}).textOverflow||(ie.textOverflow="ellipsis"),we.css(ie)))}moveLabel(O,N){let ee=this,ne=ee.label,B=ee.axis,le=!1,fe;ne&&ne.textStr===O?(ee.movedLabel=ne,le=!0,delete ee.label):D(B.ticks,function(xe){le||xe.isNew||xe===ee||!xe.label||xe.label.textStr!==O||(ee.movedLabel=xe.label,le=!0,xe.labelPos=ee.movedLabel.xy,delete xe.label)}),!le&&(ee.labelPos||ne)&&(fe=ee.labelPos||ne.xy,ee.movedLabel=ee.createLabel(O,N,fe),ee.movedLabel&&ee.movedLabel.attr({opacity:0}))}render(O,N,ee){let ne=this.axis,B=ne.horiz,le=this.pos,fe=I(this.tickmarkOffset,ne.tickmarkOffset),xe=this.getPosition(B,le,fe,N),we=xe.x,he=xe.y,_e=ne.pos,ve=_e+ne.len,ae=B?we:he;!ne.chart.polar&&this.isNew&&(g(ae)<_e||ae>ve)&&(ee=0);let ie=I(ee,this.label&&this.label.newOpacity,1);ee=I(ee,1),this.isActive=!0,this.renderGridLine(N,ee),this.renderMark(xe,ee),this.renderLabel(xe,N,ie,O),this.isNew=!1,$(this,"afterRender")}renderGridLine(O,N){let ee=this.axis,ne=ee.options,B={},le=this.pos,fe=this.type,xe=I(this.tickmarkOffset,ee.tickmarkOffset),we=ee.chart.renderer,he=this.gridLine,_e,ve=ne.gridLineWidth,ae=ne.gridLineColor,ie=ne.gridLineDashStyle;this.type==="minor"&&(ve=ne.minorGridLineWidth,ae=ne.minorGridLineColor,ie=ne.minorGridLineDashStyle),he||(ee.chart.styledMode||(B.stroke=ae,B["stroke-width"]=ve||0,B.dashstyle=ie),fe||(B.zIndex=1),O&&(N=0),this.gridLine=he=we.path().attr(B).addClass("highcharts-"+(fe?fe+"-":"")+"grid-line").add(ee.gridGroup)),he&&(_e=ee.getPlotLinePath({value:le+xe,lineWidth:he.strokeWidth(),force:"pass",old:O,acrossPanes:!1}))&&he[O||this.isNew?"attr":"animate"]({d:_e,opacity:N})}renderMark(O,N){let ee=this.axis,ne=ee.options,B=ee.chart.renderer,le=this.type,fe=ee.tickSize(le?le+"Tick":"tick"),xe=O.x,we=O.y,he=I(ne[le!=="minor"?"tickWidth":"minorTickWidth"],!le&&ee.isXAxis?1:0),_e=ne[le!=="minor"?"tickColor":"minorTickColor"],ve=this.mark,ae=!ve;fe&&(ee.opposite&&(fe[0]=-fe[0]),ve||(this.mark=ve=B.path().addClass("highcharts-"+(le?le+"-":"")+"tick").add(ee.axisGroup),ee.chart.styledMode||ve.attr({stroke:_e,"stroke-width":he})),ve[ae?"attr":"animate"]({d:this.getMarkPath(xe,we,fe[0],ve.strokeWidth(),ee.horiz,B),opacity:N}))}renderLabel(O,N,ee,ne){let B=this.axis,le=B.horiz,fe=B.options,xe=this.label,we=fe.labels,he=we.step,_e=I(this.tickmarkOffset,B.tickmarkOffset),ve=O.x,ae=O.y,ie=!0;xe&&k(ve)&&(xe.xy=O=this.getLabelPosition(ve,ae,xe,le,we,_e,ne,he),(!this.isFirst||this.isLast||fe.showFirstLabel)&&(!this.isLast||this.isFirst||fe.showLastLabel)?!le||we.step||we.rotation||N||ee===0||this.handleOverflow(O):ie=!1,he&&ne%he&&(ie=!1),ie&&k(O.y)?(O.opacity=ee,xe[this.isNewLabel?"attr":"animate"](O).show(!0),this.isNewLabel=!1):(xe.hide(),this.isNewLabel=!0))}replaceMovedLabel(){let O=this.label,N=this.axis;O&&!this.isNew&&(O.animate({opacity:0},void 0,O.destroy),delete this.label),N.isDirty=!0,this.label=this.movedLabel,delete this.movedLabel}}}),n(r,"Core/Axis/Axis.js",[r["Core/Animation/AnimationUtilities.js"],r["Core/Axis/AxisDefaults.js"],r["Core/Color/Color.js"],r["Core/Defaults.js"],r["Core/Foundation.js"],r["Core/Globals.js"],r["Core/Axis/Tick.js"],r["Core/Utilities.js"]],function(o,a,l,c,u,g,b,x){let{animObject:S}=o,{xAxis:$,yAxis:k}=a,{defaultOptions:T}=c,{registerEventOptions:D}=u,{deg2rad:I}=g,{arrayMax:O,arrayMin:N,clamp:ee,correctFloat:ne,defined:B,destroyObjectProperties:le,erase:fe,error:xe,extend:we,fireEvent:he,getClosestDistance:_e,insertItem:ve,isArray:ae,isNumber:ie,isString:pe,merge:ue,normalizeTickInterval:ge,objectEach:ye,pick:Ae,relativeLength:Re,removeEvent:We,splat:Pe,syncTimeout:Ue}=x,Oe=(Ye,Se)=>ge(Se,void 0,void 0,Ae(Ye.options.allowDecimals,Se<.5||Ye.tickAmount!==void 0),!!Ye.tickAmount);we(T,{xAxis:$,yAxis:ue($,k)});class Be{constructor(Se,Te,$e){this.init(Se,Te,$e)}init(Se,Te,$e=this.coll){let Ve=$e==="xAxis",oe=this.isZAxis||(Se.inverted?!Ve:Ve);this.chart=Se,this.horiz=oe,this.isXAxis=Ve,this.coll=$e,he(this,"init",{userOptions:Te}),this.opposite=Ae(Te.opposite,this.opposite),this.side=Ae(Te.side,this.side,oe?this.opposite?0:2:this.opposite?1:3),this.setOptions(Te);let te=this.options,se=te.labels,me=te.type;this.userOptions=Te,this.minPixelPadding=0,this.reversed=Ae(te.reversed,this.reversed),this.visible=te.visible,this.zoomEnabled=te.zoomEnabled,this.hasNames=me==="category"||te.categories===!0,this.categories=ae(te.categories)&&te.categories||(this.hasNames?[]:void 0),this.names||(this.names=[],this.names.keys={}),this.plotLinesAndBandsGroups={},this.positiveValuesOnly=!!this.logarithmic,this.isLinked=B(te.linkedTo),this.ticks={},this.labelEdge=[],this.minorTicks={},this.plotLinesAndBands=[],this.alternateBands={},this.len??(this.len=0),this.minRange=this.userMinRange=te.minRange||te.maxZoom,this.range=te.range,this.offset=te.offset||0,this.max=void 0,this.min=void 0;let Ee=Ae(te.crosshair,Pe(Se.options.tooltip.crosshairs)[Ve?0:1]);this.crosshair=Ee===!0?{}:Ee,Se.axes.indexOf(this)===-1&&(Ve?Se.axes.splice(Se.xAxis.length,0,this):Se.axes.push(this),ve(this,Se[this.coll])),Se.orderItems(this.coll),this.series=this.series||[],Se.inverted&&!this.isZAxis&&Ve&&!B(this.reversed)&&(this.reversed=!0),this.labelRotation=ie(se.rotation)?se.rotation:void 0,D(this,te),he(this,"afterInit")}setOptions(Se){let Te=this.horiz?{labels:{autoRotation:[-45],padding:4},margin:15}:{labels:{padding:1},title:{rotation:90*this.side}};this.options=ue(Te,T[this.coll],Se),he(this,"afterSetOptions",{userOptions:Se})}defaultLabelFormatter(){let Se=this.axis,{numberFormatter:Te}=this.chart,$e=ie(this.value)?this.value:NaN,Ve=Se.chart.time,oe=Se.categories,te=this.dateTimeLabelFormat,se=T.lang,me=se.numericSymbols,Ee=se.numericSymbolMagnitude||1e3,Le=Se.logarithmic?Math.abs($e):Se.tickInterval,He=me&&me.length,ze,Qe;if(oe)Qe=`${this.value}`;else if(te)Qe=Ve.dateFormat(te,$e);else if(He&&me&&Le>=1e3)for(;He--&&Qe===void 0;)Le>=(ze=Math.pow(Ee,He+1))&&10*$e%ze==0&&me[He]!==null&&$e!==0&&(Qe=Te($e/ze,-1)+me[He]);return Qe===void 0&&(Qe=Math.abs($e)>=1e4?Te($e,-1):Te($e,-1,void 0,"")),Qe}getSeriesExtremes(){let Se,Te=this;he(this,"getSeriesExtremes",null,function(){Te.hasVisibleSeries=!1,Te.dataMin=Te.dataMax=Te.threshold=void 0,Te.softThreshold=!Te.isXAxis,Te.series.forEach($e=>{if($e.reserveSpace()){let Ve=$e.options,oe,te=Ve.threshold,se,me;if(Te.hasVisibleSeries=!0,Te.positiveValuesOnly&&0>=(te||0)&&(te=void 0),Te.isXAxis)(oe=$e.xData)&&oe.length&&(oe=Te.logarithmic?oe.filter(Ee=>Ee>0):oe,se=(Se=$e.getXExtremes(oe)).min,me=Se.max,ie(se)||se instanceof Date||(oe=oe.filter(ie),se=(Se=$e.getXExtremes(oe)).min,me=Se.max),oe.length&&(Te.dataMin=Math.min(Ae(Te.dataMin,se),se),Te.dataMax=Math.max(Ae(Te.dataMax,me),me)));else{let Ee=$e.applyExtremes();ie(Ee.dataMin)&&(se=Ee.dataMin,Te.dataMin=Math.min(Ae(Te.dataMin,se),se)),ie(Ee.dataMax)&&(me=Ee.dataMax,Te.dataMax=Math.max(Ae(Te.dataMax,me),me)),B(te)&&(Te.threshold=te),(!Ve.softThreshold||Te.positiveValuesOnly)&&(Te.softThreshold=!1)}}})}),he(this,"afterGetSeriesExtremes")}translate(Se,Te,$e,Ve,oe,te){let se=this.linkedParent||this,me=Ve&&se.old?se.old.min:se.min;if(!ie(me))return NaN;let Ee=se.minPixelPadding,Le=(se.isOrdinal||se.brokenAxis?.hasBreaks||se.logarithmic&&oe)&&se.lin2val,He=1,ze=0,Qe=Ve&&se.old?se.old.transA:se.transA,rt=0;return Qe||(Qe=se.transA),$e&&(He*=-1,ze=se.len),se.reversed&&(He*=-1,ze-=He*(se.sector||se.len)),Te?(rt=(Se=Se*He+ze-Ee)/Qe+me,Le&&(rt=se.lin2val(rt))):(Le&&(Se=se.val2lin(Se)),rt=He*(Se-me)*Qe+ze+He*Ee+(ie(te)?Qe*te:0),se.isRadial||(rt=ne(rt))),rt}toPixels(Se,Te){return this.translate(Se,!1,!this.horiz,void 0,!0)+(Te?0:this.pos)}toValue(Se,Te){return this.translate(Se-(Te?0:this.pos),!0,!this.horiz,void 0,!0)}getPlotLinePath(Se){let Te=this,$e=Te.chart,Ve=Te.left,oe=Te.top,te=Se.old,se=Se.value,me=Se.lineWidth,Ee=te&&$e.oldChartHeight||$e.chartHeight,Le=te&&$e.oldChartWidth||$e.chartWidth,He=Te.transB,ze=Se.translatedValue,Qe=Se.force,rt,Ke,Ie,Fe,je;function Ze(ce,de,De){return Qe!=="pass"&&(ceDe)&&(Qe?ce=ee(ce,de,De):je=!0),ce}let Ce={value:se,lineWidth:me,old:te,force:Qe,acrossPanes:Se.acrossPanes,translatedValue:ze};return he(this,"getPlotLinePath",Ce,function(ce){rt=Ie=(ze=ee(ze=Ae(ze,Te.translate(se,void 0,void 0,te)),-1e5,1e5))+He,Ke=Fe=Ee-ze-He,ie(ze)?Te.horiz?(Ke=oe,Fe=Ee-Te.bottom+($e.scrollablePixelsY||0),rt=Ie=Ze(rt,Ve,Ve+Te.width)):(rt=Ve,Ie=Le-Te.right+($e.scrollablePixelsX||0),Ke=Fe=Ze(Ke,oe,oe+Te.height)):(je=!0,Qe=!1),ce.path=je&&!Qe?void 0:$e.renderer.crispLine([["M",rt,Ke],["L",Ie,Fe]],me||1)}),Ce.path}getLinearTickPositions(Se,Te,$e){let Ve,oe,te,se=ne(Math.floor(Te/Se)*Se),me=ne(Math.ceil($e/Se)*Se),Ee=[];if(ne(se+Se)===se&&(te=20),this.single)return[Te];for(Ve=se;Ve<=me&&(Ee.push(Ve),(Ve=ne(Ve+Se,te))!==oe);)oe=Ve;return Ee}getMinorTickInterval(){let{minorTicks:Se,minorTickInterval:Te}=this.options;return Se===!0?Ae(Te,"auto"):Se!==!1?Te:void 0}getMinorTickPositions(){let Se=this.options,Te=this.tickPositions,$e=this.minorTickInterval,Ve=this.pointRangePadding||0,oe=(this.min||0)-Ve,te=(this.max||0)+Ve,se=te-oe,me=[],Ee;if(se&&se/$e(Le.xIncrement?Le.xData?.slice(0,2):Le.xData)||[]))||0),this.dataMax-this.dataMin)),ie($e)&&ie(Ve)&&ie(oe)&&$e-Ve=oe,te=(oe-$e+Ve)/2,me=[Ve-te,Ae(Se.min,Ve-te)],se&&(me[2]=Te?Te.log2lin(this.dataMin):this.dataMin),Ee=[(Ve=O(me))+oe,Ae(Se.max,Ve+oe)],se&&(Ee[2]=Te?Te.log2lin(this.dataMax):this.dataMax),($e=N(Ee))-VeVe-oe),Se=_e([$e]))}return Se&&Te?Math.min(Se,Te):Se||Te}nameToX(Se){let Te=ae(this.options.categories),$e=Te?this.categories:this.names,Ve=Se.options.x,oe;return Se.series.requireSorting=!1,B(Ve)||(Ve=this.options.uniqueNames&&$e?Te?$e.indexOf(Se.name):Ae($e.keys[Se.name],-1):Se.series.autoIncrement()),Ve===-1?!Te&&$e&&(oe=$e.length):oe=Ve,oe!==void 0?(this.names[oe]=Se.name,this.names.keys[Se.name]=oe):Se.x&&(oe=Se.x),oe}updateNames(){let Se=this,Te=this.names;Te.length>0&&(Object.keys(Te.keys).forEach(function($e){delete Te.keys[$e]}),Te.length=0,this.minRange=this.userMinRange,(this.series||[]).forEach($e=>{$e.xIncrement=null,(!$e.points||$e.isDirtyData)&&(Se.max=Math.max(Se.max,$e.xData.length-1),$e.processData(),$e.generatePoints()),$e.data.forEach(function(Ve,oe){let te;Ve?.options&&Ve.name!==void 0&&(te=Se.nameToX(Ve))!==void 0&&te!==Ve.x&&(Ve.x=te,$e.xData[oe]=te)})}))}setAxisTranslation(){let Se=this,Te=Se.max-Se.min,$e=Se.linkedParent,Ve=!!Se.categories,oe=Se.isXAxis,te=Se.axisPointRange||0,se,me=0,Ee=0,Le,He=Se.transA;(oe||Ve||te)&&(se=Se.getClosest(),$e?(me=$e.minPointOffset,Ee=$e.pointRangePadding):Se.series.forEach(function(ze){let Qe=Ve?1:oe?Ae(ze.options.pointRange,se,0):Se.axisPointRange||0,rt=ze.options.pointPlacement;if(te=Math.max(te,Qe),!Se.single||Ve){let Ke=ze.is("xrange")?!oe:oe;me=Math.max(me,Ke&&pe(rt)?0:Qe/2),Ee=Math.max(Ee,Ke&&rt==="on"?0:Qe)}}),Le=Se.ordinal&&Se.ordinal.slope&&se?Se.ordinal.slope/se:1,Se.minPointOffset=me*=Le,Se.pointRangePadding=Ee*=Le,Se.pointRange=Math.min(te,Se.single&&Ve?1:Te),oe&&se&&(Se.closestPointRange=se)),Se.translationSlope=Se.transA=He=Se.staticScale||Se.len/(Te+Ee||1),Se.transB=Se.horiz?Se.left:Se.bottom,Se.minPixelPadding=He*me,he(this,"afterSetAxisTranslation")}minFromRange(){let{max:Se,min:Te}=this;return ie(Se)&&ie(Te)&&Se-Te||void 0}setTickInterval(Se){let{categories:Te,chart:$e,dataMax:Ve,dataMin:oe,dateTime:te,isXAxis:se,logarithmic:me,options:Ee,softThreshold:Le}=this,He=ie(this.threshold)?this.threshold:void 0,ze=this.minRange||0,{ceiling:Qe,floor:rt,linkedTo:Ke,softMax:Ie,softMin:Fe}=Ee,je=ie(Ke)&&$e[this.coll]?.[Ke],Ze=Ee.tickPixelInterval,Ce=Ee.maxPadding,ce=Ee.minPadding,de=0,De,qe=ie(Ee.tickInterval)&&Ee.tickInterval>=0?Ee.tickInterval:void 0,nt,lt,pt,bt;if(te||Te||je||this.getTickAmount(),pt=Ae(this.userMin,Ee.min),bt=Ae(this.userMax,Ee.max),je?(this.linkedParent=je,De=je.getExtremes(),this.min=Ae(De.min,De.dataMin),this.max=Ae(De.max,De.dataMax),Ee.type!==je.options.type&&xe(11,!0,$e)):(Le&&B(He)&&ie(Ve)&&ie(oe)&&(oe>=He?(nt=He,ce=0):Ve<=He&&(lt=He,Ce=0)),this.min=Ae(pt,nt,oe),this.max=Ae(bt,lt,Ve)),ie(this.max)&&ie(this.min)&&(me&&(this.positiveValuesOnly&&!Se&&0>=Math.min(this.min,Ae(oe,this.min))&&xe(10,!0,$e),this.min=ne(me.log2lin(this.min),16),this.max=ne(me.log2lin(this.max),16)),this.range&&ie(oe)&&(this.userMin=this.min=pt=Math.max(oe,this.minFromRange()||0),this.userMax=bt=this.max,this.range=void 0)),he(this,"foundExtremes"),this.adjustForMinRange(),ie(this.min)&&ie(this.max)){if(!ie(this.userMin)&&ie(Fe)&&Fethis.max&&(this.max=bt=Ie),Te||this.axisPointRange||this.stacking?.usePercentage||je||!(de=this.max-this.min)||(!B(pt)&&ce&&(this.min-=de*ce),B(bt)||!Ce||(this.max+=de*Ce)),!ie(this.userMin)&&ie(rt)&&(this.min=Math.max(this.min,rt)),!ie(this.userMax)&&ie(Qe)&&(this.max=Math.min(this.max,Qe)),Le&&ie(oe)&&ie(Ve)){let Et=He||0;!B(pt)&&this.min=Et?this.min=Ee.minRange?Math.min(Et,this.max-ze):Et:!B(bt)&&this.max>Et&&Ve<=Et&&(this.max=Ee.minRange?Math.max(Et,this.min+ze):Et)}!$e.polar&&this.min>this.max&&(B(Ee.min)?this.max=this.min:B(Ee.max)&&(this.min=this.max)),de=this.max-this.min}if(this.min!==this.max&&ie(this.min)&&ie(this.max)?je&&!qe&&Ze===je.options.tickPixelInterval?this.tickInterval=qe=je.tickInterval:this.tickInterval=Ae(qe,this.tickAmount?de/Math.max(this.tickAmount-1,1):void 0,Te?1:de*Ze/Math.max(this.len,Ze)):this.tickInterval=1,se&&!Se){let Et=this.min!==this.old?.min||this.max!==this.old?.max;this.series.forEach(function(vt){vt.forceCrop=vt.forceCropping?.(),vt.processData(Et)}),he(this,"postProcessData",{hasExtremesChanged:Et})}this.setAxisTranslation(),he(this,"initialAxisTranslation"),this.pointRange&&!qe&&(this.tickInterval=Math.max(this.pointRange,this.tickInterval));let St=Ae(Ee.minTickInterval,te&&!this.series.some(Et=>Et.noSharedTooltip)?this.closestPointRange:0);!qe&&this.tickIntervalMath.max(2*this.len,200))me=[this.min,this.max],xe(19,!1,this.chart);else if(this.dateTime)me=this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,Se.units),this.min,this.max,Se.startOfWeek,this.ordinal?.positions,this.closestPointRange,!0);else if(this.logarithmic)me=this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max);else{let Le=this.tickInterval,He=Le;for(;He<=2*Le&&(me=this.getLinearTickPositions(this.tickInterval,this.min,this.max),this.tickAmount&&me.length>this.tickAmount);)this.tickInterval=Oe(this,He*=1.1)}me.length>this.len&&(me=[me[0],me[me.length-1]])[0]===me[1]&&(me.length=1),$e&&(this.tickPositions=me,(Ee=$e.apply(this,[this.min,this.max]))&&(me=Ee))}this.tickPositions=me,this.paddedTicks=me.slice(0),this.trimTicks(me,te,se),!this.isLinked&&ie(this.min)&&ie(this.max)&&(this.single&&me.length<2&&!this.categories&&!this.series.some(Le=>Le.is("heatmap")&&Le.options.pointPlacement==="between")&&(this.min-=.5,this.max+=.5),Te||Ee||this.adjustTickAmount()),he(this,"afterSetTickPositions")}trimTicks(Se,Te,$e){let Ve=Se[0],oe=Se[Se.length-1],te=!this.isOrdinal&&this.minPointOffset||0;if(he(this,"trimTicks"),!this.isLinked){if(Te&&Ve!==-1/0)this.min=Ve;else for(;this.min-te>Se[0];)Se.shift();if($e)this.max=oe;else for(;this.max+te{let{horiz:ze,options:Qe}=He;return[ze?Qe.left:Qe.top,Qe.width,Qe.height,Qe.pane].join(",")},Le=Ee(this);$e[this.coll].forEach(function(He){let{series:ze}=He;ze.length&&ze.some(Qe=>Qe.visible)&&He!==Te&&Ee(He)===Le&&(Se=!0,Ve.push(He))})}if(Se&&se){Ve.forEach(Le=>{let He=Le.getThresholdAlignment(Te);ie(He)&&me.push(He)});let Ee=me.length>1?me.reduce((Le,He)=>Le+=He,0)/me.length:void 0;Ve.forEach(Le=>{Le.thresholdAlignment=Ee})}return Se}getThresholdAlignment(Se){if((!ie(this.dataMin)||this!==Se&&this.series.some(Te=>Te.isDirty||Te.isDirtyData))&&this.getSeriesExtremes(),ie(this.threshold)){let Te=ee((this.threshold-(this.dataMin||0))/((this.dataMax||0)-(this.dataMin||0)),0,1);return this.options.reversed&&(Te=1-Te),Te}}getTickAmount(){let Se=this.options,Te=Se.tickPixelInterval,$e=Se.tickAmount;B(Se.tickInterval)||$e||!(this.lente.push(ne(te[te.length-1]+Qe)),Ie=()=>te.unshift(ne(te[0]-Qe));if(ie(me)&&(rt=me<.5?Math.ceil(me*(se-1)):Math.floor(me*(se-1)),oe.reversed&&(rt=se-1-rt)),Se.hasData()&&ie(Ve)&&ie($e)){let Fe=()=>{Se.transA*=(Ee-1)/(se-1),Se.min=oe.startOnTick?te[0]:Math.min(Ve,te[0]),Se.max=oe.endOnTick?te[te.length-1]:Math.max($e,te[te.length-1])};if(ie(rt)&&ie(Se.threshold)){for(;te[rt]!==Le||te.length!==se||te[0]>Ve||te[te.length-1]<$e;){for(te.length=0,te.push(Se.threshold);te.lengthSe.threshold?Ie():Ke();if(Qe>8*Se.tickInterval)break;Qe*=2}Fe()}else if(Ee0&&ze{$e=$e||te.isDirtyData||te.isDirty,Ve=Ve||te.xAxis&&te.xAxis.isDirty||!1}),this.setAxisSize();let oe=this.len!==(this.old&&this.old.len);oe||$e||Ve||this.isLinked||this.forceRedraw||this.userMin!==(this.old&&this.old.userMin)||this.userMax!==(this.old&&this.old.userMax)||this.alignToOthers()?(Te&&Se==="yAxis"&&Te.buildStacks(),this.forceRedraw=!1,this.userMinRange||(this.minRange=void 0),this.getSeriesExtremes(),this.setTickInterval(),Te&&Se==="xAxis"&&Te.buildStacks(),this.isDirty||(this.isDirty=oe||this.min!==this.old?.min||this.max!==this.old?.max)):Te&&Te.cleanStacks(),$e&&delete this.allExtremes,he(this,"afterSetScale")}setExtremes(Se,Te,$e=!0,Ve,oe){this.series.forEach(te=>{delete te.kdTree}),he(this,"setExtremes",oe=we(oe,{min:Se,max:Te}),te=>{this.userMin=te.min,this.userMax=te.max,this.eventArgs=te,$e&&this.chart.redraw(Ve)})}setAxisSize(){let Se=this.chart,Te=this.options,$e=Te.offsets||[0,0,0,0],Ve=this.horiz,oe=this.width=Math.round(Re(Ae(Te.width,Se.plotWidth-$e[3]+$e[1]),Se.plotWidth)),te=this.height=Math.round(Re(Ae(Te.height,Se.plotHeight-$e[0]+$e[2]),Se.plotHeight)),se=this.top=Math.round(Re(Ae(Te.top,Se.plotTop+$e[0]),Se.plotHeight,Se.plotTop)),me=this.left=Math.round(Re(Ae(Te.left,Se.plotLeft+$e[3]),Se.plotWidth,Se.plotLeft));this.bottom=Se.chartHeight-te-se,this.right=Se.chartWidth-oe-me,this.len=Math.max(Ve?oe:te,0),this.pos=Ve?me:se}getExtremes(){let Se=this.logarithmic;return{min:Se?ne(Se.lin2log(this.min)):this.min,max:Se?ne(Se.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}}getThreshold(Se){let Te=this.logarithmic,$e=Te?Te.lin2log(this.min):this.min,Ve=Te?Te.lin2log(this.max):this.max;return Se===null||Se===-1/0?Se=$e:Se===1/0?Se=Ve:$e>Se?Se=$e:Ve15&&Te<165?Ve.align="right":Te>195&&Te<345&&(Ve.align="left")}),$e.align}tickSize(Se){let Te=this.options,$e=Ae(Te[Se==="tick"?"tickWidth":"minorTickWidth"],Se==="tick"&&this.isXAxis&&!this.categories?1:0),Ve=Te[Se==="tick"?"tickLength":"minorTickLength"],oe;$e&&Ve&&(Te[Se+"Position"]==="inside"&&(Ve=-Ve),oe=[Ve,$e]);let te={tickSize:oe};return he(this,"afterTickSize",te),te.tickSize}labelMetrics(){let Se=this.chart.renderer,Te=this.ticks,$e=Te[Object.keys(Te)[0]]||{};return this.chart.renderer.fontMetrics($e.label||$e.movedLabel||Se.box)}unsquish(){let Se=this.options.labels,Te=Se.padding||0,$e=this.horiz,Ve=this.tickInterval,oe=this.len/(((this.categories?1:0)+this.max-this.min)/Ve),te=Se.rotation,se=ne(.8*this.labelMetrics().h),me=Math.max(this.max-this.min,0),Ee=function(rt){let Ke=(rt+2*Te)/(oe||1);return(Ke=Ke>1?Math.ceil(Ke):1)*Ve>me&&rt!==1/0&&oe!==1/0&&me&&(Ke=Math.ceil(me/Ve)),ne(Ke*Ve)},Le=Ve,He,ze=Number.MAX_VALUE,Qe;if($e){if(!Se.staggerLines&&(ie(te)?Qe=[te]:oe=-90&&Ie<=90)&&(Ke=(rt=Ee(Math.abs(se/Math.sin(I*Ie))))+Math.abs(Ie/360))Ke&&(Ke=Ze.label.textPxLength)}),this.maxLabelLength=Ke,this.autoRotation)Ke>Ee&&Ke>He.h?Le.rotation=this.labelRotation:this.labelRotation=0;else if(me&&(Qe=Ee,!ze))for(rt="clip",Fe=$e.length;!se&&Fe--;)(Ie=Ve[$e[Fe]].label)&&(Ie.styles.textOverflow==="ellipsis"?Ie.css({textOverflow:"clip"}):Ie.textPxLength>me&&Ie.css({width:me+"px"}),Ie.getBBox().height>this.len/$e.length-(He.h-He.f)&&(Ie.specificTextOverflow="ellipsis"));Le.rotation&&(Qe=Ke>.5*Se.chartHeight?.33*Se.chartHeight:Ke,ze||(rt="ellipsis")),this.labelAlign=oe.align||this.autoLabelAlign(this.labelRotation),this.labelAlign&&(Le.align=this.labelAlign),$e.forEach(function(je){let Ze=Ve[je],Ce=Ze&&Ze.label,ce=te.width,de={};Ce&&(Ce.attr(Le),Ze.shortenLabel?Ze.shortenLabel():Qe&&!ce&&te.whiteSpace!=="nowrap"&&(Qeoe.g(se).attr({zIndex:Ee}).addClass(`highcharts-${$e.toLowerCase()}${me} `+(this.isRadial?`highcharts-radial-axis${me} `:"")+(Ve.className||"")).add(Se);this.axisGroup||(this.gridGroup=te("grid","-grid",Ve.gridZIndex),this.axisGroup=te("axis","",Ve.zIndex),this.labelGroup=te("axis-labels","-labels",Ve.labels.zIndex))}getOffset(){let Se=this,{chart:Te,horiz:$e,options:Ve,side:oe,ticks:te,tickPositions:se,coll:me}=Se,Ee=Te.inverted&&!Se.isZAxis?[1,0,3,2][oe]:oe,Le=Se.hasData(),He=Ve.title,ze=Ve.labels,Qe=ie(Ve.crossing),rt=Te.axisOffset,Ke=Te.clipOffset,Ie=[-1,1,1,-1][oe],Fe,je=0,Ze,Ce=0,ce=0,de,De;if(Se.showAxis=Fe=Le||Ve.showEmpty,Se.staggerLines=Se.horiz&&ze.staggerLines||void 0,Se.createGroups(),Le||Se.isLinked?(se.forEach(function(qe){Se.generateTick(qe)}),Se.renderUnsquish(),Se.reserveSpaceDefault=oe===0||oe===2||{1:"left",3:"right"}[oe]===Se.labelAlign,Ae(ze.reserveSpace,!Qe&&null,Se.labelAlign==="center"||null,Se.reserveSpaceDefault)&&se.forEach(function(qe){ce=Math.max(te[qe].getLabelSize(),ce)}),Se.staggerLines&&(ce*=Se.staggerLines),Se.labelOffset=ce*(Se.opposite?-1:1)):ye(te,function(qe,nt){qe.destroy(),delete te[nt]}),He?.text&&He.enabled!==!1&&(Se.addTitle(Fe),Fe&&!Qe&&He.reserveSpace!==!1&&(Se.titleOffset=je=Se.axisTitle.getBBox()[$e?"height":"width"],Ce=B(Ze=He.offset)?0:Ae(He.margin,$e?5:10))),Se.renderLine(),Se.offset=Ie*Ae(Ve.offset,rt[oe]?rt[oe]+(Ve.margin||0):0),Se.tickRotCorr=Se.tickRotCorr||{x:0,y:0},De=oe===0?-Se.labelMetrics().h:oe===2?Se.tickRotCorr.y:0,de=Math.abs(ce)+Ce,ce&&(de-=De,de+=Ie*($e?Ae(ze.y,Se.tickRotCorr.y+Ie*ze.distance):Ae(ze.x,Ie*ze.distance))),Se.axisTitleMargin=Ae(Ze,de),Se.getMaxLabelDimensions&&(Se.maxLabelDimensions=Se.getMaxLabelDimensions(te,se)),me!=="colorAxis"&&Ke){let qe=this.tickSize("tick");rt[oe]=Math.max(rt[oe],(Se.axisTitleMargin||0)+je+Ie*Se.offset,de,se&&se.length&&qe?qe[0]+Ie*Se.offset:0);let nt=!Se.axisLine||Ve.offset?0:Se.axisLine.strokeWidth()/2;Ke[Ee]=Math.max(Ke[Ee],nt)}he(this,"afterGetOffset")}getLinePath(Se){let Te=this.chart,$e=this.opposite,Ve=this.offset,oe=this.horiz,te=this.left+($e?this.width:0)+Ve,se=Te.chartHeight-this.bottom-($e?this.height:0)+Ve;return $e&&(Se*=-1),Te.renderer.crispLine([["M",oe?this.left:te,oe?se:this.top],["L",oe?Te.chartWidth-this.right:te,oe?se:Te.chartHeight-this.bottom]],Se)}renderLine(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup),this.chart.styledMode||this.axisLine.attr({stroke:this.options.lineColor,"stroke-width":this.options.lineWidth,zIndex:7}))}getTitlePosition(Se){let Te=this.horiz,$e=this.left,Ve=this.top,oe=this.len,te=this.options.title,se=Te?$e:Ve,me=this.opposite,Ee=this.offset,Le=te.x,He=te.y,ze=this.chart.renderer.fontMetrics(Se),Qe=Se?Math.max(Se.getBBox(!1,0).height-ze.h-1,0):0,rt={low:se+(Te?0:oe),middle:se+oe/2,high:se+(Te?oe:0)}[te.align],Ke=(Te?Ve+this.height:$e)+(Te?1:-1)*(me?-1:1)*(this.axisTitleMargin||0)+[-Qe,Qe,ze.f,-Qe][this.side],Ie={x:Te?rt+Le:Ke+(me?this.width:0)+Ee+Le,y:Te?Ke+He-(me?this.height:0)+Ee:rt+He};return he(this,"afterGetTitlePosition",{titlePosition:Ie}),Ie}renderMinorTick(Se,Te){let $e=this.minorTicks;$e[Se]||($e[Se]=new b(this,Se,"minor")),Te&&$e[Se].isNew&&$e[Se].render(null,!0),$e[Se].render(null,!1,1)}renderTick(Se,Te,$e){let Ve=this.isLinked,oe=this.ticks;(!Ve||Se>=this.min&&Se<=this.max||this.grid&&this.grid.isColumn)&&(oe[Se]||(oe[Se]=new b(this,Se)),$e&&oe[Se].isNew&&oe[Se].render(Te,!0,-1),oe[Se].render(Te))}render(){let Se,Te,$e=this,Ve=$e.chart,oe=$e.logarithmic,te=Ve.renderer,se=$e.options,me=$e.isLinked,Ee=$e.tickPositions,Le=$e.axisTitle,He=$e.ticks,ze=$e.minorTicks,Qe=$e.alternateBands,rt=se.stackLabels,Ke=se.alternateGridColor,Ie=se.crossing,Fe=$e.tickmarkOffset,je=$e.axisLine,Ze=$e.showAxis,Ce=S(te.globalAnimation);if($e.labelEdge.length=0,$e.overlap=!1,[He,ze,Qe].forEach(function(ce){ye(ce,function(de){de.isActive=!1})}),ie(Ie)){let ce=this.isXAxis?Ve.yAxis[0]:Ve.xAxis[0],de=[1,-1,-1,1][this.side];if(ce){let De=ce.toPixels(Ie,!0);$e.horiz&&(De=ce.len-De),$e.offset=de*De}}if($e.hasData()||me){let ce=$e.chart.hasRendered&&$e.old&&ie($e.old.min);$e.minorTickInterval&&!$e.categories&&$e.getMinorTickPositions().forEach(function(de){$e.renderMinorTick(de,ce)}),Ee.length&&(Ee.forEach(function(de,De){$e.renderTick(de,De,ce)}),Fe&&($e.min===0||$e.single)&&(He[-1]||(He[-1]=new b($e,-1,null,!0)),He[-1].render(-1))),Ke&&Ee.forEach(function(de,De){Te=Ee[De+1]!==void 0?Ee[De+1]+Fe:$e.max-Fe,De%2==0&&de<$e.max&&Te<=$e.max+(Ve.polar?-Fe:Fe)&&(Qe[de]||(Qe[de]=new g.PlotLineOrBand($e,{})),Se=de+Fe,Qe[de].options={from:oe?oe.lin2log(Se):Se,to:oe?oe.lin2log(Te):Te,color:Ke,className:"highcharts-alternate-grid"},Qe[de].render(),Qe[de].isActive=!0)}),$e._addedPlotLB||($e._addedPlotLB=!0,(se.plotLines||[]).concat(se.plotBands||[]).forEach(function(de){$e.addPlotBandOrLine(de)}))}[He,ze,Qe].forEach(function(ce){let de=[],De=Ce.duration;ye(ce,function(qe,nt){qe.isActive||(qe.render(nt,!1,0),qe.isActive=!1,de.push(nt))}),Ue(function(){let qe=de.length;for(;qe--;)ce[de[qe]]&&!ce[de[qe]].isActive&&(ce[de[qe]].destroy(),delete ce[de[qe]])},ce!==Qe&&Ve.hasRendered&&De?De:0)}),je&&(je[je.isPlaced?"animate":"attr"]({d:this.getLinePath(je.strokeWidth())}),je.isPlaced=!0,je[Ze?"show":"hide"](Ze)),Le&&Ze&&(Le[Le.isNew?"attr":"animate"]($e.getTitlePosition(Le)),Le.isNew=!1),rt&&rt.enabled&&$e.stacking&&$e.stacking.renderStackTotals(),$e.old={len:$e.len,max:$e.max,min:$e.min,transA:$e.transA,userMax:$e.userMax,userMin:$e.userMin},$e.isDirty=!1,he(this,"afterRender")}redraw(){this.visible&&(this.render(),this.plotLinesAndBands.forEach(function(Se){Se.render()})),this.series.forEach(function(Se){Se.isDirty=!0})}getKeepProps(){return this.keepProps||Be.keepProps}destroy(Se){let Te=this,$e=Te.plotLinesAndBands,Ve=this.eventOptions;if(he(this,"destroy",{keepEvents:Se}),Se||We(Te),[Te.ticks,Te.minorTicks,Te.alternateBands].forEach(function(oe){le(oe)}),$e){let oe=$e.length;for(;oe--;)$e[oe].destroy()}for(let oe in["axisLine","axisTitle","axisGroup","gridGroup","labelGroup","cross","scrollbar"].forEach(function(te){Te[te]&&(Te[te]=Te[te].destroy())}),Te.plotLinesAndBandsGroups)Te.plotLinesAndBandsGroups[oe]=Te.plotLinesAndBandsGroups[oe].destroy();ye(Te,function(oe,te){Te.getKeepProps().indexOf(te)===-1&&delete Te[te]}),this.eventOptions=Ve}drawCrosshair(Se,Te){let $e=this.crosshair,Ve=Ae($e&&$e.snap,!0),oe=this.chart,te,se,me,Ee=this.cross,Le;if(he(this,"drawCrosshair",{e:Se,point:Te}),Se||(Se=this.cross&&this.cross.e),$e&&(B(Te)||!Ve)!==!1){if(Ve?B(Te)&&(se=Ae(this.coll!=="colorAxis"?Te.crosshairPos:null,this.isXAxis?Te.plotX:this.len-Te.plotY)):se=Se&&(this.horiz?Se.chartX-this.pos:this.len-Se.chartY+this.pos),B(se)&&(Le={value:Te&&(this.isXAxis?Te.x:Ae(Te.stackY,Te.y)),translatedValue:se},oe.polar&&we(Le,{isCrosshair:!0,chartX:Se&&Se.chartX,chartY:Se&&Se.chartY,point:Te}),te=this.getPlotLinePath(Le)||null),!B(te)){this.hideCrosshair();return}me=this.categories&&!this.isRadial,Ee||(this.cross=Ee=oe.renderer.path().addClass("highcharts-crosshair highcharts-crosshair-"+(me?"category ":"thin ")+($e.className||"")).attr({zIndex:Ae($e.zIndex,2)}).add(),!oe.styledMode&&(Ee.attr({stroke:$e.color||(me?l.parse("#ccd3ff").setOpacity(.25).get():"#cccccc"),"stroke-width":Ae($e.width,1)}).css({"pointer-events":"none"}),$e.dashStyle&&Ee.attr({dashstyle:$e.dashStyle}))),Ee.show().attr({d:te}),me&&!$e.width&&Ee.attr({"stroke-width":this.transA}),this.cross.e=Se}else this.hideCrosshair();he(this,"afterDrawCrosshair",{e:Se,point:Te})}hideCrosshair(){this.cross&&this.cross.hide(),he(this,"afterHideCrosshair")}update(Se,Te){let $e=this.chart;Se=ue(this.userOptions,Se),this.destroy(!0),this.init($e,Se),$e.isDirtyBox=!0,Ae(Te,!0)&&$e.redraw()}remove(Se){let Te=this.chart,$e=this.coll,Ve=this.series,oe=Ve.length;for(;oe--;)Ve[oe]&&Ve[oe].remove(!1);fe(Te.axes,this),fe(Te[$e]||[],this),Te.orderItems($e),this.destroy(),Te.isDirtyBox=!0,Ae(Se,!0)&&Te.redraw()}setTitle(Se,Te){this.update({title:Se},Te)}setCategories(Se,Te){this.update({categories:Se},Te)}}return Be.keepProps=["coll","extKey","hcEvents","len","names","series","userMax","userMin"],Be}),n(r,"Core/Axis/DateTimeAxis.js",[r["Core/Utilities.js"]],function(o){var a;let{addEvent:l,getMagnitude:c,normalizeTickInterval:u,timeUnits:g}=o;return function(b){function x(){return this.chart.time.getTimeTicks.apply(this.chart.time,arguments)}function S(){if(this.options.type!=="datetime"){this.dateTime=void 0;return}this.dateTime||(this.dateTime=new $(this))}b.compose=function(k){return k.keepProps.includes("dateTime")||(k.keepProps.push("dateTime"),k.prototype.getTimeTicks=x,l(k,"afterSetOptions",S)),k};class ${constructor(T){this.axis=T}normalizeTimeTickInterval(T,D){let I=D||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],O=I[I.length-1],N=g[O[0]],ee=O[1],ne;for(ne=0;ne=.5)k=Math.round(k),ne=O.getLinearTickPositions(k,T,D);else if(k>=.08){let B,le,fe,xe,we,he,_e,ve=Math.floor(T);for(B=k>.3?[1,2,4]:k>.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9],le=ve;leT&&(!I||he<=D)&&he!==void 0&&ne.push(he),he>D&&(_e=!0),he=we}else{let B=this.lin2log(T),le=this.lin2log(D),fe=I?O.getMinorTickInterval():ee.tickInterval,xe=ee.tickPixelInterval/(I?5:1),we=I?N/O.tickPositions.length:N;k=c(k=u(fe==="auto"?null:fe,this.minorAutoInterval,(le-B)*xe/(we||1))),ne=O.getLinearTickPositions(k,B,le).map(this.log2lin),I||(this.minorAutoInterval=k/5)}return I||(O.tickInterval=k),ne}lin2log(k){return Math.pow(10,k)}log2lin(k){return Math.log(k)/Math.LN10}}g.Additions=S}(a||(a={})),a}),n(r,"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js",[r["Core/Utilities.js"]],function(o){var a;let{erase:l,extend:c,isNumber:u}=o;return function(g){let b;function x(O){return this.addPlotBandOrLine(O,"plotBands")}function S(O,N){let ee=this.userOptions,ne=new b(this,O);if(this.visible&&(ne=ne.render()),ne){if(this._addedPlotLB||(this._addedPlotLB=!0,(ee.plotLines||[]).concat(ee.plotBands||[]).forEach(B=>{this.addPlotBandOrLine(B)})),N){let B=ee[N]||[];B.push(O),ee[N]=B}this.plotLinesAndBands.push(ne)}return ne}function $(O){return this.addPlotBandOrLine(O,"plotLines")}function k(O,N,ee){ee=ee||this.options;let ne=this.getPlotLinePath({value:N,force:!0,acrossPanes:ee.acrossPanes}),B=[],le=this.horiz,fe=!u(this.min)||!u(this.max)||Othis.max&&N>this.max,xe=this.getPlotLinePath({value:O,force:!0,acrossPanes:ee.acrossPanes}),we,he=1,_e;if(xe&&ne)for(fe&&(_e=xe.toString()===ne.toString(),he=0),we=0;we{pe?.on(Oe,Be=>{B[Oe].apply(this,[Be])})}),this.eventsAdded=!0),(Re||!pe.d)&&ue?.length?pe.attr({d:ue}):pe&&(ue?(pe.show(),pe.animate({d:ue})):pe.d&&(pe.hide(),ie&&(this.label=ie=ie.destroy()))),ae&&(u(ae.text)||u(ae.formatter))&&ue?.length&&I.width>0&&I.height>0&&!ue.isFlat?(ae=S({align:N&&ye?"center":void 0,x:N?!ye&&4:10,verticalAlign:!N&&ye?"middle":void 0,y:N?ye?16:10:ye?6:-4,rotation:N&&!ye?90:0},ae),this.renderLabel(ae,ue,ye,le)):ie&&ie.hide(),this}renderLabel(I,O,N,ee){let ne=this.axis,B=ne.chart.renderer,le=this.label;le||(this.label=le=B.text(this.getLabelText(I),0,0,I.useHTML).attr({align:I.textAlign||I.align,rotation:I.rotation,class:"highcharts-plot-"+(N?"band":"line")+"-label "+(I.className||""),zIndex:ee}),ne.chart.styledMode||le.css(S({fontSize:"0.8em",textOverflow:"ellipsis"},I.style)),le.add());let fe=O.xBounds||[O[0][1],O[1][1],N?O[2][1]:O[0][1]],xe=O.yBounds||[O[0][2],O[1][2],N?O[2][2]:O[0][2]],we=c(fe),he=c(xe);if(le.align(I,!1,{x:we,y:he,width:l(fe)-we,height:l(xe)-he}),!le.alignValue||le.alignValue==="left"){let _e=I.clip?ne.width:ne.chart.chartWidth;le.css({width:(le.rotation===90?ne.height-(le.alignAttr.y-ne.top):_e-(le.alignAttr.x-ne.left))+"px"})}le.show(!0)}getLabelText(I){return u(I.formatter)?I.formatter.call(this):I.text}destroy(){b(this.axis.plotLinesAndBands,this),delete this.axis,g(this)}}return T}),n(r,"Core/Tooltip.js",[r["Core/Animation/AnimationUtilities.js"],r["Core/Templating.js"],r["Core/Globals.js"],r["Core/Renderer/RendererUtilities.js"],r["Core/Renderer/RendererRegistry.js"],r["Core/Utilities.js"]],function(o,a,l,c,u,g){var b;let{animObject:x}=o,{format:S}=a,{composed:$,doc:k,isSafari:T}=l,{distribute:D}=c,{addEvent:I,clamp:O,css:N,discardElement:ee,extend:ne,fireEvent:B,isArray:le,isNumber:fe,isString:xe,merge:we,pick:he,pushUnique:_e,splat:ve,syncTimeout:ae}=g;class ie{constructor(ue,ge,ye){this.allowShared=!0,this.crosshairs=[],this.distance=0,this.isHidden=!0,this.isSticky=!1,this.options={},this.outside=!1,this.chart=ue,this.init(ue,ge),this.pointer=ye}bodyFormatter(ue){return ue.map(function(ge){let ye=ge.series.tooltipOptions;return(ye[(ge.point.formatPrefix||"point")+"Formatter"]||ge.point.tooltipFormatter).call(ge.point,ye[(ge.point.formatPrefix||"point")+"Format"]||"")})}cleanSplit(ue){this.chart.series.forEach(function(ge){let ye=ge&&ge.tt;ye&&(!ye.isActive||ue?ge.tt=ye.destroy():ye.isActive=!1)})}defaultFormatter(ue){let ge,ye=this.points||ve(this);return(ge=(ge=[ue.tooltipFooterHeaderFormatter(ye[0])]).concat(ue.bodyFormatter(ye))).push(ue.tooltipFooterHeaderFormatter(ye[0],!0)),ge}destroy(){this.label&&(this.label=this.label.destroy()),this.split&&(this.cleanSplit(!0),this.tt&&(this.tt=this.tt.destroy())),this.renderer&&(this.renderer=this.renderer.destroy(),ee(this.container)),g.clearTimeout(this.hideTimer)}getAnchor(ue,ge){let ye,{chart:Ae,pointer:Re}=this,We=Ae.inverted,Pe=Ae.plotTop,Ue=Ae.plotLeft;if((ue=ve(ue))[0].series&&ue[0].series.yAxis&&!ue[0].series.yAxis.options.reversedStacks&&(ue=ue.slice().reverse()),this.followPointer&&ge)ge.chartX===void 0&&(ge=Re.normalize(ge)),ye=[ge.chartX-Ue,ge.chartY-Pe];else if(ue[0].tooltipPos)ye=ue[0].tooltipPos;else{let Oe=0,Be=0;ue.forEach(function(Ye){let Se=Ye.pos(!0);Se&&(Oe+=Se[0],Be+=Se[1])}),Oe/=ue.length,Be/=ue.length,this.shared&&ue.length>1&&ge&&(We?Oe=ge.chartX:Be=ge.chartY),ye=[Oe-Ue,Be-Pe]}return ye.map(Math.round)}getClassName(ue,ge,ye){let Ae=this.options,Re=ue.series,We=Re.options;return[Ae.className,"highcharts-label",ye&&"highcharts-tooltip-header",ge?"highcharts-tooltip-box":"highcharts-tooltip",!ye&&"highcharts-color-"+he(ue.colorIndex,Re.colorIndex),We&&We.className].filter(xe).join(" ")}getLabel(){let ue=this,ge=this.chart.styledMode,ye=this.options,Ae=this.split&&this.allowShared,Re=this.container,We=this.chart.renderer;if(this.label){let Pe=!this.label.hasClass("highcharts-label");(!Ae&&Pe||Ae&&!Pe)&&this.destroy()}if(!this.label){if(this.outside){let Pe=this.chart.options.chart.style,Ue=u.getRendererType();this.container=Re=l.doc.createElement("div"),Re.className="highcharts-tooltip-container",N(Re,{position:"absolute",top:"1px",pointerEvents:"none",zIndex:Math.max(this.options.style.zIndex||0,(Pe&&Pe.zIndex||0)+3)}),this.renderer=We=new Ue(Re,0,0,Pe,void 0,void 0,We.styledMode)}if(Ae?this.label=We.g("tooltip"):(this.label=We.label("",0,0,ye.shape,void 0,void 0,ye.useHTML,void 0,"tooltip").attr({padding:ye.padding,r:ye.borderRadius}),ge||this.label.attr({fill:ye.backgroundColor,"stroke-width":ye.borderWidth||0}).css(ye.style).css({pointerEvents:ye.style.pointerEvents||(this.shouldStickOnContact()?"auto":"none")})),ue.outside){let Pe=this.label;[Pe.xSetter,Pe.ySetter].forEach((Ue,Oe)=>{Pe[Oe?"ySetter":"xSetter"]=Be=>{Ue.call(Pe,ue.distance),Pe[Oe?"y":"x"]=Be,Re&&(Re.style[Oe?"top":"left"]=`${Be}px`)}})}this.label.attr({zIndex:8}).shadow(ye.shadow).add()}return Re&&!Re.parentElement&&l.doc.body.appendChild(Re),this.label}getPlayingField(){let{body:ue,documentElement:ge}=k,{chart:ye,distance:Ae,outside:Re}=this;return{width:Re?Math.max(ue.scrollWidth,ge.scrollWidth,ue.offsetWidth,ge.offsetWidth,ge.clientWidth)-2*Ae:ye.chartWidth,height:Re?Math.max(ue.scrollHeight,ge.scrollHeight,ue.offsetHeight,ge.offsetHeight,ge.clientHeight):ye.chartHeight}}getPosition(ue,ge,ye){let{distance:Ae,chart:Re,outside:We,pointer:Pe}=this,{inverted:Ue,plotLeft:Oe,plotTop:Be,polar:Ye}=Re,{plotX:Se=0,plotY:Te=0}=ye,$e={},Ve=Ue&&ye.h||0,{height:oe,width:te}=this.getPlayingField(),se=Pe.getChartPosition(),me=Ce=>Ce*se.scaleX,Ee=Ce=>Ce*se.scaleY,Le=Ce=>{let ce=Ce==="x";return[Ce,ce?te:oe,ce?ue:ge].concat(We?[ce?me(ue):Ee(ge),ce?se.left-Ae+me(Se+Oe):se.top-Ae+Ee(Te+Be),0,ce?te:oe]:[ce?ue:ge,ce?Se+Oe:Te+Be,ce?Oe:Be,ce?Oe+Re.plotWidth:Be+Re.plotHeight])},He=Le("y"),ze=Le("x"),Qe,rt=!!ye.negative;!Ye&&Re.hoverSeries?.yAxis?.reversed&&(rt=!rt);let Ke=!this.followPointer&&he(ye.ttBelow,!Ye&&!Ue===rt),Ie=function(Ce,ce,de,De,qe,nt,lt){let pt=We?Ce==="y"?Ee(Ae):me(Ae):Ae,bt=(de-De)/2,St=Dece?Nt:Nt+Ve)}},Fe=function(Ce,ce,de,De,qe){if(qece-Ae)return!1;qece-De/2?$e[Ce]=ce-De-2:$e[Ce]=qe-de/2},je=function(Ce){[He,ze]=[ze,He],Qe=Ce},Ze=()=>{Ie.apply(0,He)!==!1?Fe.apply(0,ze)!==!1||Qe||(je(!0),Ze()):Qe?$e.x=$e.y=0:(je(!0),Ze())};return(Ue&&!Ye||this.len>1)&&je(),Ze(),$e}hide(ue){let ge=this;g.clearTimeout(this.hideTimer),ue=he(ue,this.options.hideDelay),this.isHidden||(this.hideTimer=ae(function(){let ye=ge.getLabel();ge.getLabel().animate({opacity:0},{duration:ue&&150,complete:()=>{ye.hide(),ge.container&&ge.container.remove()}}),ge.isHidden=!0},ue))}init(ue,ge){this.chart=ue,this.options=ge,this.crosshairs=[],this.isHidden=!0,this.split=ge.split&&!ue.inverted&&!ue.polar,this.shared=ge.shared||this.split,this.outside=he(ge.outside,!!(ue.scrollablePixelsX||ue.scrollablePixelsY))}shouldStickOnContact(ue){return!!(!this.followPointer&&this.options.stickOnContact&&(!ue||this.pointer.inClass(ue.target,"highcharts-tooltip")))}move(ue,ge,ye,Ae){let Re=this,We=x(!Re.isHidden&&Re.options.animation),Pe=Re.followPointer||(Re.len||0)>1,Ue={x:ue,y:ge};Pe||(Ue.anchorX=ye,Ue.anchorY=Ae),We.step=()=>Re.drawTracker(),Re.getLabel().animate(Ue,We)}refresh(ue,ge){let{chart:ye,options:Ae,pointer:Re,shared:We}=this,Pe=ve(ue),Ue=Pe[0],Oe=[],Be=Ae.format,Ye=Ae.formatter||this.defaultFormatter,Se=ye.styledMode,Te={};if(!Ae.enabled||!Ue.series)return;g.clearTimeout(this.hideTimer),this.allowShared=!(!le(ue)&&ue.series&&ue.series.noSharedTooltip),this.followPointer=!this.split&&Ue.series.tooltipOptions.followPointer;let $e=this.getAnchor(ue,ge),Ve=$e[0],oe=$e[1];We&&this.allowShared?(Re.applyInactiveState(Pe),Pe.forEach(function(me){me.setState("hover"),Oe.push(me.getLabelConfig())}),(Te=Ue.getLabelConfig()).points=Oe):Te=Ue.getLabelConfig(),this.len=Oe.length;let te=xe(Be)?S(Be,Te,ye):Ye.call(Te,this),se=Ue.series;if(this.distance=he(se.tooltipOptions.distance,16),te===!1)this.hide();else{if(this.split&&this.allowShared)this.renderSplit(te,Pe);else{let me=Ve,Ee=oe;if(ge&&Re.isDirectTouch&&(me=ge.chartX-ye.plotLeft,Ee=ge.chartY-ye.plotTop),ye.polar||se.options.clip===!1||Pe.some(Le=>Re.isDirectTouch||Le.series.shouldShowTooltip(me,Ee))){let Le=this.getLabel();(!Ae.style.width||Se)&&Le.css({width:(this.outside?this.getPlayingField():ye.spacingBox).width+"px"}),Le.attr({text:te&&te.join?te.join(""):te}),Le.addClass(this.getClassName(Ue),!0),Se||Le.attr({stroke:Ae.borderColor||Ue.color||se.color||"#666666"}),this.updatePosition({plotX:Ve,plotY:oe,negative:Ue.negative,ttBelow:Ue.ttBelow,h:$e[2]||0})}else{this.hide();return}}this.isHidden&&this.label&&this.label.attr({opacity:1}).show(),this.isHidden=!1}B(this,"refresh")}renderSplit(ue,ge){let ye=this,{chart:Ae,chart:{chartWidth:Re,chartHeight:We,plotHeight:Pe,plotLeft:Ue,plotTop:Oe,scrollablePixelsY:Be=0,scrollablePixelsX:Ye,styledMode:Se},distance:Te,options:$e,options:{positioner:Ve},pointer:oe}=ye,{scrollLeft:te=0,scrollTop:se=0}=Ae.scrollablePlotArea?.scrollingContainer||{},me=ye.outside&&typeof Ye!="number"?k.documentElement.getBoundingClientRect():{left:te,right:te+Re,top:se,bottom:se+We},Ee=ye.getLabel(),Le=this.renderer||Ae.renderer,He=!!(Ae.xAxis[0]&&Ae.xAxis[0].opposite),{left:ze,top:Qe}=oe.getChartPosition(),rt=Oe+se,Ke=0,Ie=Pe-Be;function Fe(De,qe,nt,lt,pt=!0){let bt,St;return nt?(bt=He?0:Ie,St=O(De-lt/2,me.left,me.right-lt-(ye.outside?ze:0))):(bt=qe-rt,St=O(St=pt?De-lt-Te:De+Te,pt?St:me.left,me.right)),{x:St,y:bt}}xe(ue)&&(ue=[!1,ue]);let je=ue.slice(0,ge.length+1).reduce(function(De,qe,nt){if(qe!==!1&&qe!==""){let lt=ge[nt-1]||{isHeader:!0,plotX:ge[0].plotX,plotY:Pe,series:{}},pt=lt.isHeader,bt=pt?ye:lt.series,St=bt.tt=function(qt,Zt,mr){let nr=qt,{isHeader:ur,series:Mr}=Zt;if(!nr){let Pr={padding:$e.padding,r:$e.borderRadius};Se||(Pr.fill=$e.backgroundColor,Pr["stroke-width"]=$e.borderWidth??1),nr=Le.label("",0,0,$e[ur?"headerShape":"shape"],void 0,void 0,$e.useHTML).addClass(ye.getClassName(Zt,!0,ur)).attr(Pr).add(Ee)}return nr.isActive=!0,nr.attr({text:mr}),Se||nr.css($e.style).attr({stroke:$e.borderColor||Zt.color||Mr.color||"#333333"}),nr}(bt.tt,lt,qe.toString()),Et=St.getBBox(),vt=Et.width+St.strokeWidth();pt&&(Ke=Et.height,Ie+=Ke,He&&(rt-=Ke));let{anchorX:Nt,anchorY:Ft}=function(qt){let Zt,mr,{isHeader:nr,plotX:ur=0,plotY:Mr=0,series:Pr}=qt;if(nr)Zt=Math.max(Ue+ur,Ue),mr=Oe+Pe/2;else{let{xAxis:fr,yAxis:hr}=Pr;Zt=fr.pos+O(ur,-Te,fr.len+Te),Pr.shouldShowTooltip(0,hr.pos-Oe+Mr,{ignoreX:!0})&&(mr=hr.pos+Mr)}return{anchorX:Zt=O(Zt,me.left-Te,me.right+Te),anchorY:mr}}(lt);if(typeof Ft=="number"){let qt=Et.height+1,Zt=Ve?Ve.call(ye,vt,qt,lt):Fe(Nt,Ft,pt,vt);De.push({align:Ve?0:void 0,anchorX:Nt,anchorY:Ft,boxWidth:vt,point:lt,rank:he(Zt.rank,pt?1:0),size:qt,target:Zt.y,tt:St,x:Zt.x})}else St.isActive=!1}return De},[]);!Ve&&je.some(De=>{let{outside:qe}=ye,nt=(qe?ze:0)+De.anchorX;return ntnt})&&(je=je.map(De=>{let{x:qe,y:nt}=Fe(De.anchorX,De.anchorY,De.point.isHeader,De.boxWidth,!1);return ne(De,{target:nt,x:qe})})),ye.cleanSplit(),D(je,Ie);let Ze={left:ze,right:ze};je.forEach(function(De){let{x:qe,boxWidth:nt,isHeader:lt}=De;!lt&&(ye.outside&&ze+qeZe.right&&(Ze.right=ze+qe))}),je.forEach(function(De){let{x:qe,anchorX:nt,anchorY:lt,pos:pt,point:{isHeader:bt}}=De,St={visibility:pt===void 0?"hidden":"inherit",x:qe,y:(pt||0)+rt,anchorX:nt,anchorY:lt};if(ye.outside&&qe0&&(bt||(St.x=qe+Et,St.anchorX=nt+Et),bt&&(St.x=(Ze.right-Ze.left)/2,St.anchorX=nt+Et))}De.tt.attr(St)});let{container:Ce,outside:ce,renderer:de}=ye;if(ce&&Ce&&de){let{width:De,height:qe,x:nt,y:lt}=Ee.getBBox();de.setSize(De+nt,qe+lt,!1),Ce.style.left=Ze.left+"px",Ce.style.top=Qe+"px"}T&&Ee.attr({opacity:Ee.opacity===1?.999:1})}drawTracker(){if(!this.shouldStickOnContact()){this.tracker&&(this.tracker=this.tracker.destroy());return}let ue=this.chart,ge=this.label,ye=this.shared?ue.hoverPoints:ue.hoverPoint;if(!ge||!ye)return;let Ae={x:0,y:0,width:0,height:0},Re=this.getAnchor(ye),We=ge.getBBox();Re[0]+=ue.plotLeft-(ge.translateX||0),Re[1]+=ue.plotTop-(ge.translateY||0),Ae.x=Math.min(0,Re[0]),Ae.y=Math.min(0,Re[1]),Ae.width=Re[0]<0?Math.max(Math.abs(Re[0]),We.width-Re[0]):Math.max(Math.abs(Re[0]),We.width),Ae.height=Re[1]<0?Math.max(Math.abs(Re[1]),We.height-Math.abs(Re[1])):Math.max(Math.abs(Re[1]),We.height),this.tracker?this.tracker.attr(Ae):(this.tracker=ge.renderer.rect(Ae).addClass("highcharts-tracker").add(ge),ue.styledMode||this.tracker.attr({fill:"rgba(0,0,0,0)"}))}styledModeFormat(ue){return ue.replace('style="font-size: 0.8em"','class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g,'class="highcharts-color-{$1.colorIndex} {series.options.className} {point.options.className}"')}tooltipFooterHeaderFormatter(ue,ge){let ye=ue.series,Ae=ye.tooltipOptions,Re=ye.xAxis,We=Re&&Re.dateTime,Pe={isFooter:ge,labelConfig:ue},Ue=Ae.xDateFormat,Oe=Ae[ge?"footerFormat":"headerFormat"];return B(this,"headerFormatter",Pe,function(Be){We&&!Ue&&fe(ue.key)&&(Ue=We.getXDateFormat(ue.key,Ae.dateTimeLabelFormats)),We&&Ue&&(ue.point&&ue.point.tooltipDateKeys||["key"]).forEach(function(Ye){Oe=Oe.replace("{point."+Ye+"}","{point."+Ye+":"+Ue+"}")}),ye.chart.styledMode&&(Oe=this.styledModeFormat(Oe)),Be.text=S(Oe,{point:ue,series:ye},this.chart)}),Pe.text}update(ue){this.destroy(),this.init(this.chart,we(!0,this.options,ue))}updatePosition(ue){let{chart:ge,container:ye,distance:Ae,options:Re,pointer:We,renderer:Pe}=this,{height:Ue=0,width:Oe=0}=this.getLabel(),{left:Be,top:Ye,scaleX:Se,scaleY:Te}=We.getChartPosition(),$e=(Re.positioner||this.getPosition).call(this,Oe,Ue,ue),Ve=(ue.plotX||0)+ge.plotLeft,oe=(ue.plotY||0)+ge.plotTop,te;Pe&&ye&&(Re.positioner&&($e.x+=Be-Ae,$e.y+=Ye-Ae),te=(Re.borderWidth||0)+2*Ae+2,Pe.setSize(Oe+te,Ue+te,!1),(Se!==1||Te!==1)&&(N(ye,{transform:`scale(${Se}, ${Te})`}),Ve*=Se,oe*=Te),Ve+=Be-$e.x,oe+=Ye-$e.y),this.move(Math.round($e.x),Math.round($e.y||0),Ve,oe)}}return(b=ie||(ie={})).compose=function(pe){_e($,"Core.Tooltip")&&I(pe,"afterInit",function(){let ue=this.chart;ue.options.tooltip&&(ue.tooltip=new b(ue,ue.options.tooltip,this))})},ie}),n(r,"Core/Series/Point.js",[r["Core/Renderer/HTML/AST.js"],r["Core/Animation/AnimationUtilities.js"],r["Core/Defaults.js"],r["Core/Templating.js"],r["Core/Utilities.js"]],function(o,a,l,c,u){let{animObject:g}=a,{defaultOptions:b}=l,{format:x}=c,{addEvent:S,crisp:$,erase:k,extend:T,fireEvent:D,getNestedProperty:I,isArray:O,isFunction:N,isNumber:ee,isObject:ne,merge:B,pick:le,syncTimeout:fe,removeEvent:xe,uniqueKey:we}=u;class he{animateBeforeDestroy(){let ve=this,ae={x:ve.startXPos,opacity:0},ie=ve.getGraphicalProps();ie.singular.forEach(function(pe){ve[pe]=ve[pe].animate(pe==="dataLabel"?{x:ve[pe].startXPos,y:ve[pe].startYPos,opacity:0}:ae)}),ie.plural.forEach(function(pe){ve[pe].forEach(function(ue){ue.element&&ue.animate(T({x:ve.startXPos},ue.startYPos?{x:ue.startXPos,y:ue.startYPos}:{}))})})}applyOptions(ve,ae){let ie=this.series,pe=ie.options.pointValKey||ie.pointValKey;return T(this,ve=he.prototype.optionsToObject.call(this,ve)),this.options=this.options?T(this.options,ve):ve,ve.group&&delete this.group,ve.dataLabels&&delete this.dataLabels,pe&&(this.y=he.prototype.getNestedProperty.call(this,pe)),this.selected&&(this.state="select"),"name"in this&&ae===void 0&&ie.xAxis&&ie.xAxis.hasNames&&(this.x=ie.xAxis.nameToX(this)),this.x===void 0&&ie?ae===void 0?this.x=ie.autoIncrement():this.x=ae:ee(ve.x)&&ie.options.relativeXValue&&(this.x=ie.autoIncrement(ve.x)),this.isNull=this.isValid&&!this.isValid(),this.formatPrefix=this.isNull?"null":"point",this}destroy(){if(!this.destroyed){let ve=this,ae=ve.series,ie=ae.chart,pe=ae.options.dataSorting,ue=ie.hoverPoints,ge=g(ve.series.chart.renderer.globalAnimation),ye=()=>{for(let Ae in(ve.graphic||ve.graphics||ve.dataLabel||ve.dataLabels)&&(xe(ve),ve.destroyElements()),ve)delete ve[Ae]};ve.legendItem&&ie.legend.destroyItem(ve),ue&&(ve.setState(),k(ue,ve),ue.length||(ie.hoverPoints=null)),ve===ie.hoverPoint&&ve.onMouseOut(),pe&&pe.enabled?(this.animateBeforeDestroy(),fe(ye,ge.duration)):ye(),ie.pointCount--}this.destroyed=!0}destroyElements(ve){let ae=this,ie=ae.getGraphicalProps(ve);ie.singular.forEach(function(pe){ae[pe]=ae[pe].destroy()}),ie.plural.forEach(function(pe){ae[pe].forEach(function(ue){ue&&ue.element&&ue.destroy()}),delete ae[pe]})}firePointEvent(ve,ae,ie){let pe=this,ue=this.series.options;pe.manageEvent(ve),ve==="click"&&ue.allowPointSelect&&(ie=function(ge){!pe.destroyed&&pe.select&&pe.select(null,ge.ctrlKey||ge.metaKey||ge.shiftKey)}),D(pe,ve,ae,ie)}getClassName(){return"highcharts-point"+(this.selected?" highcharts-point-select":"")+(this.negative?" highcharts-negative":"")+(this.isNull?" highcharts-null-point":"")+(this.colorIndex!==void 0?" highcharts-color-"+this.colorIndex:"")+(this.options.className?" "+this.options.className:"")+(this.zone&&this.zone.className?" "+this.zone.className.replace("highcharts-negative",""):"")}getGraphicalProps(ve){let ae,ie,pe=this,ue=[],ge={singular:[],plural:[]};for((ve=ve||{graphic:1,dataLabel:1}).graphic&&ue.push("graphic","connector"),ve.dataLabel&&ue.push("dataLabel","dataLabelPath","dataLabelUpper"),ie=ue.length;ie--;)pe[ae=ue[ie]]&&ge.singular.push(ae);return["graphic","dataLabel"].forEach(function(ye){let Ae=ye+"s";ve[ye]&&pe[Ae]&&ge.plural.push(Ae)}),ge}getLabelConfig(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}}getNestedProperty(ve){return ve?ve.indexOf("custom.")===0?I(ve,this.options):this[ve]:void 0}getZone(){let ve=this.series,ae=ve.zones,ie=ve.zoneAxis||"y",pe,ue=0;for(pe=ae[0];this[ie]>=pe.value;)pe=ae[++ue];return this.nonZonedColor||(this.nonZonedColor=this.color),pe&&pe.color&&!this.options.color?this.color=pe.color:this.color=this.nonZonedColor,pe}hasNewShapeType(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType}constructor(ve,ae,ie){this.formatPrefix="point",this.visible=!0,this.series=ve,this.applyOptions(ae,ie),this.id??(this.id=we()),this.resolveColor(),ve.chart.pointCount++,D(this,"afterInit")}isValid(){return(ee(this.x)||this.x instanceof Date)&&ee(this.y)}optionsToObject(ve){let ae=this.series,ie=ae.options.keys,pe=ie||ae.pointArrayMap||["y"],ue=pe.length,ge={},ye,Ae=0,Re=0;if(ee(ve)||ve===null)ge[pe[0]]=ve;else if(O(ve))for(!ie&&ve.length>ue&&((ye=typeof ve[0])=="string"?ge.name=ve[0]:ye==="number"&&(ge.x=ve[0]),Ae++);Re0?he.prototype.setNestedProperty(ge,ve[Ae],pe[Re]):ge[pe[Re]]=ve[Ae]),Ae++,Re++;else typeof ve=="object"&&(ge=ve,ve.dataLabels&&(ae.hasDataLabels=()=>!0),ve.marker&&(ae._hasPointMarkers=!0));return ge}pos(ve,ae=this.plotY){if(!this.destroyed){let{plotX:ie,series:pe}=this,{chart:ue,xAxis:ge,yAxis:ye}=pe,Ae=0,Re=0;if(ee(ie)&&ee(ae))return ve&&(Ae=ge?ge.pos:ue.plotLeft,Re=ye?ye.pos:ue.plotTop),ue.inverted&&ge&&ye?[ye.len-ae+Re,ge.len-ie+Ae]:[ie+Ae,ae+Re]}}resolveColor(){let ve=this.series,ae=ve.chart.options.chart,ie=ve.chart.styledMode,pe,ue,ge=ae.colorCount,ye;delete this.nonZonedColor,ve.options.colorByPoint?(ie||(pe=(ue=ve.options.colors||ve.chart.options.colors)[ve.colorCounter],ge=ue.length),ye=ve.colorCounter,ve.colorCounter++,ve.colorCounter===ge&&(ve.colorCounter=0)):(ie||(pe=ve.color),ye=ve.colorIndex),this.colorIndex=le(this.options.colorIndex,ye),this.color=le(this.options.color,pe)}setNestedProperty(ve,ae,ie){return ie.split(".").reduce(function(pe,ue,ge,ye){let Ae=ye.length-1===ge;return pe[ue]=Ae?ae:ne(pe[ue],!0)?pe[ue]:{},pe[ue]},ve),ve}shouldDraw(){return!this.isNull}tooltipFormatter(ve){let ae=this.series,ie=ae.tooltipOptions,pe=le(ie.valueDecimals,""),ue=ie.valuePrefix||"",ge=ie.valueSuffix||"";return ae.chart.styledMode&&(ve=ae.chart.tooltip.styledModeFormat(ve)),(ae.pointArrayMap||["y"]).forEach(function(ye){ye="{point."+ye,(ue||ge)&&(ve=ve.replace(RegExp(ye+"}","g"),ue+ye+"}"+ge)),ve=ve.replace(RegExp(ye+"}","g"),ye+":,."+pe+"f}")}),x(ve,{point:this,series:this.series},ae.chart)}update(ve,ae,ie,pe){let ue,ge=this,ye=ge.series,Ae=ge.graphic,Re=ye.chart,We=ye.options;function Pe(){ge.applyOptions(ve);let Ue=Ae&&ge.hasMockGraphic,Oe=ge.y===null?!Ue:Ue;Ae&&Oe&&(ge.graphic=Ae.destroy(),delete ge.hasMockGraphic),ne(ve,!0)&&(Ae&&Ae.element&&ve&&ve.marker&&ve.marker.symbol!==void 0&&(ge.graphic=Ae.destroy()),ve?.dataLabels&&ge.dataLabel&&(ge.dataLabel=ge.dataLabel.destroy())),ue=ge.index,ye.updateParallelArrays(ge,ue),We.data[ue]=ne(We.data[ue],!0)||ne(ve,!0)?ge.options:le(ve,We.data[ue]),ye.isDirty=ye.isDirtyData=!0,!ye.fixedBox&&ye.hasCartesianSeries&&(Re.isDirtyBox=!0),We.legendType==="point"&&(Re.isDirtyLegend=!0),ae&&Re.redraw(ie)}ae=le(ae,!0),pe===!1?Pe():ge.firePointEvent("update",{options:ve},Pe)}remove(ve,ae){this.series.removePoint(this.series.data.indexOf(this),ve,ae)}select(ve,ae){let ie=this,pe=ie.series,ue=pe.chart;ve=le(ve,!ie.selected),this.selectedStaging=ve,ie.firePointEvent(ve?"select":"unselect",{accumulate:ae},function(){ie.selected=ie.options.selected=ve,pe.options.data[pe.data.indexOf(ie)]=ie.options,ie.setState(ve&&"select"),ae||ue.getSelectedPoints().forEach(function(ge){let ye=ge.series;ge.selected&&ge!==ie&&(ge.selected=ge.options.selected=!1,ye.options.data[ye.data.indexOf(ge)]=ge.options,ge.setState(ue.hoverPoints&&ye.options.inactiveOtherPoints?"inactive":""),ge.firePointEvent("unselect"))})}),delete this.selectedStaging}onMouseOver(ve){let{inverted:ae,pointer:ie}=this.series.chart;ie&&(ve=ve?ie.normalize(ve):ie.getChartCoordinatesFromPoint(this,ae),ie.runPointActions(ve,this))}onMouseOut(){let ve=this.series.chart;this.firePointEvent("mouseOut"),this.series.options.inactiveOtherPoints||(ve.hoverPoints||[]).forEach(function(ae){ae.setState()}),ve.hoverPoints=ve.hoverPoint=null}manageEvent(ve){let ae=B(this.series.options.point,this.options),ie=ae.events?.[ve];N(ie)&&(!this.hcEvents?.[ve]||this.hcEvents?.[ve]?.map(pe=>pe.fn).indexOf(ie)===-1)?(S(this,ve,ie),this.hasImportedEvents=!0):this.hasImportedEvents&&!ie&&this.hcEvents?.[ve]&&(xe(this,ve),delete this.hcEvents[ve],Object.keys(this.hcEvents)||(this.hasImportedEvents=!1))}setState(ve,ae){let ie=this.series,pe=this.state,ue=ie.options.states[ve||"normal"]||{},ge=b.plotOptions[ie.type].marker&&ie.options.marker,ye=ge&&ge.enabled===!1,Ae=ge&&ge.states&&ge.states[ve||"normal"]||{},Re=Ae.enabled===!1,We=this.marker||{},Pe=ie.chart,Ue=ge&&ie.markerAttribs,Oe=ie.halo,Be,Ye,Se,Te=ie.stateMarkerGraphic,$e;if((ve=ve||"")===this.state&&!ae||this.selected&&ve!=="select"||ue.enabled===!1||ve&&(Re||ye&&Ae.enabled===!1)||ve&&We.states&&We.states[ve]&&We.states[ve].enabled===!1)return;if(this.state=ve,Ue&&(Be=ie.markerAttribs(this,ve)),this.graphic&&!this.hasMockGraphic){if(pe&&this.graphic.removeClass("highcharts-point-"+pe),ve&&this.graphic.addClass("highcharts-point-"+ve),!Pe.styledMode){Ye=ie.pointAttribs(this,ve),Se=le(Pe.options.chart.animation,ue.animation);let se=Ye.opacity;ie.options.inactiveOtherPoints&&ee(se)&&(this.dataLabels||[]).forEach(function(me){me&&!me.hasClass("highcharts-data-label-hidden")&&(me.animate({opacity:se},Se),me.connector&&me.connector.animate({opacity:se},Se))}),this.graphic.animate(Ye,Se)}Be&&this.graphic.animate(Be,le(Pe.options.chart.animation,Ae.animation,ge.animation)),Te&&Te.hide()}else ve&&Ae&&($e=We.symbol||ie.symbol,Te&&Te.currentSymbol!==$e&&(Te=Te.destroy()),Be&&(Te?Te[ae?"animate":"attr"]({x:Be.x,y:Be.y}):$e&&(ie.stateMarkerGraphic=Te=Pe.renderer.symbol($e,Be.x,Be.y,Be.width,Be.height).add(ie.markerGroup),Te.currentSymbol=$e)),!Pe.styledMode&&Te&&this.state!=="inactive"&&Te.attr(ie.pointAttribs(this,ve))),Te&&(Te[ve&&this.isInside?"show":"hide"](),Te.element.point=this,Te.addClass(this.getClassName(),!0));let Ve=ue.halo,oe=this.graphic||Te,te=oe&&oe.visibility||"inherit";Ve&&Ve.size&&oe&&te!=="hidden"&&!this.isCluster?(Oe||(ie.halo=Oe=Pe.renderer.path().add(oe.parentGroup)),Oe.show()[ae?"animate":"attr"]({d:this.haloPath(Ve.size)}),Oe.attr({class:"highcharts-halo highcharts-color-"+le(this.colorIndex,ie.colorIndex)+(this.className?" "+this.className:""),visibility:te,zIndex:-1}),Oe.point=this,Pe.styledMode||Oe.attr(T({fill:this.color||ie.color,"fill-opacity":Ve.opacity},o.filterUserAttributes(Ve.attributes||{})))):Oe?.point?.haloPath&&!Oe.point.destroyed&&Oe.animate({d:Oe.point.haloPath(0)},null,Oe.hide),D(this,"afterSetState",{state:ve})}haloPath(ve){let ae=this.pos();return ae?this.series.chart.renderer.symbols.circle($(ae[0],1)-ve,ae[1]-ve,2*ve,2*ve):[]}}return he}),n(r,"Core/Pointer.js",[r["Core/Color/Color.js"],r["Core/Globals.js"],r["Core/Utilities.js"]],function(o,a,l){var c;let{parse:u}=o,{charts:g,composed:b,isTouchDevice:x}=a,{addEvent:S,attr:$,css:k,extend:T,find:D,fireEvent:I,isNumber:O,isObject:N,objectEach:ee,offset:ne,pick:B,pushUnique:le,splat:fe}=l;class xe{applyInactiveState(he){let _e=[],ve;(he||[]).forEach(function(ae){ve=ae.series,_e.push(ve),ve.linkedParent&&_e.push(ve.linkedParent),ve.linkedSeries&&(_e=_e.concat(ve.linkedSeries)),ve.navigatorSeries&&_e.push(ve.navigatorSeries)}),this.chart.series.forEach(function(ae){_e.indexOf(ae)===-1?ae.setState("inactive",!0):ae.options.inactiveOtherPoints&&ae.setAllPointsToState("inactive")})}destroy(){let he=this;this.eventsToUnbind.forEach(_e=>_e()),this.eventsToUnbind=[],!a.chartCount&&(xe.unbindDocumentMouseUp&&(xe.unbindDocumentMouseUp=xe.unbindDocumentMouseUp()),xe.unbindDocumentTouchEnd&&(xe.unbindDocumentTouchEnd=xe.unbindDocumentTouchEnd())),clearInterval(he.tooltipTimeout),ee(he,function(_e,ve){he[ve]=void 0})}getSelectionMarkerAttrs(he,_e){let ve={args:{chartX:he,chartY:_e},attrs:{},shapeType:"rect"};return I(this,"getSelectionMarkerAttrs",ve,ae=>{let ie,{chart:pe,zoomHor:ue,zoomVert:ge}=this,{mouseDownX:ye=0,mouseDownY:Ae=0}=pe,Re=ae.attrs;Re.x=pe.plotLeft,Re.y=pe.plotTop,Re.width=ue?1:pe.plotWidth,Re.height=ge?1:pe.plotHeight,ue&&(ie=he-ye,Re.width=Math.max(1,Math.abs(ie)),Re.x=(ie>0?0:ie)+ye),ge&&(ie=_e-Ae,Re.height=Math.max(1,Math.abs(ie)),Re.y=(ie>0?0:ie)+Ae)}),ve}drag(he){let{chart:_e}=this,{mouseDownX:ve=0,mouseDownY:ae=0}=_e,{panning:ie,panKey:pe,selectionMarkerFill:ue}=_e.options.chart,ge=_e.plotLeft,ye=_e.plotTop,Ae=_e.plotWidth,Re=_e.plotHeight,We=N(ie)?ie.enabled:ie,Pe=pe&&he[`${pe}Key`],Ue=he.chartX,Oe=he.chartY,Be,Ye=this.selectionMarker;if((!Ye||!Ye.touch)&&(Uege+Ae&&(Ue=ge+Ae),Oeye+Re&&(Oe=ye+Re),this.hasDragged=Math.sqrt(Math.pow(ve-Ue,2)+Math.pow(ae-Oe,2)),this.hasDragged>10)){Be=_e.isInsidePlot(ve-ge,ae-ye,{visiblePlotOnly:!0});let{shapeType:Se,attrs:Te}=this.getSelectionMarkerAttrs(Ue,Oe);(_e.hasCartesianSeries||_e.mapView)&&this.hasZoom&&Be&&!Pe&&!Ye&&(this.selectionMarker=Ye=_e.renderer[Se](),Ye.attr({class:"highcharts-selection-marker",zIndex:7}).add(),_e.styledMode||Ye.attr({fill:ue||u("#334eff").setOpacity(.25).get()})),Ye&&Ye.attr(Te),Be&&!Ye&&We&&_e.pan(he,ie)}}dragStart(he){let _e=this.chart;_e.mouseIsDown=he.type,_e.cancelClick=!1,_e.mouseDownX=he.chartX,_e.mouseDownY=he.chartY}getSelectionBox(he){let _e={args:{marker:he},result:he.getBBox()};return I(this,"getSelectionBox",_e),_e.result}drop(he){let _e,{chart:ve,selectionMarker:ae}=this;for(let ie of ve.axes)ie.isPanning&&(ie.isPanning=!1,(ie.options.startOnTick||ie.options.endOnTick||ie.series.some(pe=>pe.boosted))&&(ie.forceRedraw=!0,ie.setExtremes(ie.userMin,ie.userMax,!1),_e=!0));if(_e&&ve.redraw(),ae&&he){if(this.hasDragged){let ie=this.getSelectionBox(ae);ve.transform({axes:ve.axes.filter(pe=>pe.zoomEnabled&&(pe.coll==="xAxis"&&this.zoomX||pe.coll==="yAxis"&&this.zoomY)),selection:{originalEvent:he,xAxis:[],yAxis:[],...ie},from:ie})}O(ve.index)&&(this.selectionMarker=ae.destroy())}ve&&O(ve.index)&&(k(ve.container,{cursor:ve._cursor}),ve.cancelClick=this.hasDragged>10,ve.mouseIsDown=!1,this.hasDragged=0,this.pinchDown=[])}findNearestKDPoint(he,_e,ve){let ae;return he.forEach(function(ie){let pe=!(ie.noSharedTooltip&&_e)&&0>ie.options.findNearestPointBy.indexOf("y"),ue=ie.searchPoint(ve,pe);N(ue,!0)&&ue.series&&(!N(ae,!0)||function(ge,ye){let Ae=ge.distX-ye.distX,Re=ge.dist-ye.dist,We=ye.series.group?.zIndex-ge.series.group?.zIndex;return Ae!==0&&_e?Ae:Re!==0?Re:We!==0?We:ge.series.index>ye.series.index?-1:1}(ae,ue)>0)&&(ae=ue)}),ae}getChartCoordinatesFromPoint(he,_e){let{xAxis:ve,yAxis:ae}=he.series,ie=he.shapeArgs;if(ve&&ae){let pe=he.clientX??he.plotX??0,ue=he.plotY||0;return he.isNode&&ie&&O(ie.x)&&O(ie.y)&&(pe=ie.x,ue=ie.y),_e?{chartX:ae.len+ae.pos-ue,chartY:ve.len+ve.pos-pe}:{chartX:pe+ve.pos,chartY:ue+ae.pos}}if(ie&&ie.x&&ie.y)return{chartX:ie.x,chartY:ie.y}}getChartPosition(){if(this.chartPosition)return this.chartPosition;let{container:he}=this.chart,_e=ne(he);this.chartPosition={left:_e.left,top:_e.top,scaleX:1,scaleY:1};let{offsetHeight:ve,offsetWidth:ae}=he;return ae>2&&ve>2&&(this.chartPosition.scaleX=_e.width/ae,this.chartPosition.scaleY=_e.height/ve),this.chartPosition}getCoordinates(he){let _e={xAxis:[],yAxis:[]};for(let ve of this.chart.axes)_e[ve.isXAxis?"xAxis":"yAxis"].push({axis:ve,value:ve.toValue(he[ve.horiz?"chartX":"chartY"])});return _e}getHoverData(he,_e,ve,ae,ie,pe){let ue=[],ge=function(Pe){return Pe.visible&&!(!ie&&Pe.directTouch)&&B(Pe.options.enableMouseTracking,!0)},ye=_e,Ae,Re={chartX:pe?pe.chartX:void 0,chartY:pe?pe.chartY:void 0,shared:ie};I(this,"beforeGetHoverData",Re),Ae=ye&&!ye.stickyTracking?[ye]:ve.filter(Pe=>Pe.stickyTracking&&(Re.filter||ge)(Pe));let We=ae&&he||!pe?he:this.findNearestKDPoint(Ae,ie,pe);return ye=We&&We.series,We&&(ie&&!ye.noSharedTooltip?(Ae=ve.filter(function(Pe){return Re.filter?Re.filter(Pe):ge(Pe)&&!Pe.noSharedTooltip})).forEach(function(Pe){let Ue=D(Pe.points,function(Oe){return Oe.x===We.x&&!Oe.isNull});N(Ue)&&(Pe.boosted&&Pe.boost&&(Ue=Pe.boost.getPoint(Ue)),ue.push(Ue))}):ue.push(We)),I(this,"afterGetHoverData",Re={hoverPoint:We}),{hoverPoint:Re.hoverPoint,hoverSeries:ye,hoverPoints:ue}}getPointFromEvent(he){let _e=he.target,ve;for(;_e&&!ve;)ve=_e.point,_e=_e.parentNode;return ve}onTrackerMouseOut(he){let _e=this.chart,ve=he.relatedTarget,ae=_e.hoverSeries;this.isDirectTouch=!1,!ae||!ve||ae.stickyTracking||this.inClass(ve,"highcharts-tooltip")||this.inClass(ve,"highcharts-series-"+ae.index)&&this.inClass(ve,"highcharts-tracker")||ae.onMouseOut()}inClass(he,_e){let ve=he,ae;for(;ve;){if(ae=$(ve,"class")){if(ae.indexOf(_e)!==-1)return!0;if(ae.indexOf("highcharts-container")!==-1)return!1}ve=ve.parentElement}}constructor(he,_e){this.hasDragged=0,this.pointerCaptureEventsToUnbind=[],this.eventsToUnbind=[],this.options=_e,this.chart=he,this.runChartClick=!!_e.chart.events?.click,this.pinchDown=[],this.setDOMEvents(),I(this,"afterInit")}normalize(he,_e){let ve=he.touches,ae=ve?ve.length?ve.item(0):B(ve.changedTouches,he.changedTouches)[0]:he;_e||(_e=this.getChartPosition());let ie=ae.pageX-_e.left,pe=ae.pageY-_e.top;return T(he,{chartX:Math.round(ie/=_e.scaleX),chartY:Math.round(pe/=_e.scaleY)})}onContainerClick(he){let _e=this.chart,ve=_e.hoverPoint,ae=this.normalize(he),ie=_e.plotLeft,pe=_e.plotTop;!_e.cancelClick&&(ve&&this.inClass(ae.target,"highcharts-tracker")?(I(ve.series,"click",T(ae,{point:ve})),_e.hoverPoint&&ve.firePointEvent("click",ae)):(T(ae,this.getCoordinates(ae)),_e.isInsidePlot(ae.chartX-ie,ae.chartY-pe,{visiblePlotOnly:!0})&&I(_e,"click",ae)))}onContainerMouseDown(he){let _e=(1&(he.buttons||he.button))==1;he=this.normalize(he),a.isFirefox&&he.button!==0&&this.onContainerMouseMove(he),(he.button===void 0||_e)&&(this.zoomOption(he),_e&&he.preventDefault?.(),this.dragStart(he))}onContainerMouseLeave(he){let{pointer:_e}=g[B(xe.hoverChartIndex,-1)]||{};he=this.normalize(he),this.onContainerMouseMove(he),_e&&he.relatedTarget&&!this.inClass(he.relatedTarget,"highcharts-tooltip")&&(_e.reset(),_e.chartPosition=void 0)}onContainerMouseEnter(){delete this.chartPosition}onContainerMouseMove(he){let _e=this.chart,ve=_e.tooltip,ae=this.normalize(he);this.setHoverChartIndex(he),(_e.mouseIsDown==="mousedown"||this.touchSelect(ae))&&this.drag(ae),!_e.openMenu&&(this.inClass(ae.target,"highcharts-tracker")||_e.isInsidePlot(ae.chartX-_e.plotLeft,ae.chartY-_e.plotTop,{visiblePlotOnly:!0}))&&!(ve&&ve.shouldStickOnContact(ae))&&(this.inClass(ae.target,"highcharts-no-tooltip")?this.reset(!1,0):this.runPointActions(ae))}onDocumentTouchEnd(he){this.onDocumentMouseUp(he)}onContainerTouchMove(he){this.touchSelect(he)?this.onContainerMouseMove(he):this.touch(he)}onContainerTouchStart(he){this.touchSelect(he)?this.onContainerMouseDown(he):(this.zoomOption(he),this.touch(he,!0))}onDocumentMouseMove(he){let _e=this.chart,ve=_e.tooltip,ae=this.chartPosition,ie=this.normalize(he,ae);!ae||_e.isInsidePlot(ie.chartX-_e.plotLeft,ie.chartY-_e.plotTop,{visiblePlotOnly:!0})||ve&&ve.shouldStickOnContact(ie)||this.inClass(ie.target,"highcharts-tracker")||this.reset()}onDocumentMouseUp(he){g[B(xe.hoverChartIndex,-1)]?.pointer?.drop(he)}pinch(he){let _e=this,{chart:ve,hasZoom:ae,lastTouches:ie}=_e,pe=[].map.call(he.touches||[],Re=>_e.normalize(Re)),ue=pe.length,ge=ue===1&&(_e.inClass(he.target,"highcharts-tracker")&&ve.runTrackerClick||_e.runChartClick),ye=ve.tooltip,Ae=ue===1&&B(ye?.options.followTouchMove,!0);ue>1?_e.initiated=!0:Ae&&(_e.initiated=!1),ae&&_e.initiated&&!ge&&he.cancelable!==!1&&he.preventDefault(),he.type==="touchstart"?(_e.pinchDown=pe,_e.res=!0):Ae?this.runPointActions(_e.normalize(he)):ie&&(I(ve,"touchpan",{originalEvent:he,touches:pe},()=>{let Re=We=>{let Pe=We[0],Ue=We[1]||Pe;return{x:Pe.chartX,y:Pe.chartY,width:Ue.chartX-Pe.chartX,height:Ue.chartY-Pe.chartY}};ve.transform({axes:ve.axes.filter(We=>We.zoomEnabled&&(this.zoomHor&&We.horiz||this.zoomVert&&!We.horiz)),to:Re(pe),from:Re(ie),trigger:he.type})}),_e.res&&(_e.res=!1,this.reset(!1,0))),_e.lastTouches=pe}reset(he,_e){let ve=this.chart,ae=ve.hoverSeries,ie=ve.hoverPoint,pe=ve.hoverPoints,ue=ve.tooltip,ge=ue&&ue.shared?pe:ie;he&&ge&&fe(ge).forEach(function(ye){ye.series.isCartesian&&ye.plotX===void 0&&(he=!1)}),he?ue&&ge&&fe(ge).length&&(ue.refresh(ge),ue.shared&&pe?pe.forEach(function(ye){ye.setState(ye.state,!0),ye.series.isCartesian&&(ye.series.xAxis.crosshair&&ye.series.xAxis.drawCrosshair(null,ye),ye.series.yAxis.crosshair&&ye.series.yAxis.drawCrosshair(null,ye))}):ie&&(ie.setState(ie.state,!0),ve.axes.forEach(function(ye){ye.crosshair&&ie.series[ye.coll]===ye&&ye.drawCrosshair(null,ie)}))):(ie&&ie.onMouseOut(),pe&&pe.forEach(function(ye){ye.setState()}),ae&&ae.onMouseOut(),ue&&ue.hide(_e),this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove()),ve.axes.forEach(function(ye){ye.hideCrosshair()}),ve.hoverPoints=ve.hoverPoint=void 0)}runPointActions(he,_e,ve){let ae=this.chart,ie=ae.series,pe=ae.tooltip&&ae.tooltip.options.enabled?ae.tooltip:void 0,ue=!!pe&&pe.shared,ge=_e||ae.hoverPoint,ye=ge&&ge.series||ae.hoverSeries,Ae=(!he||he.type!=="touchmove")&&(!!_e||ye&&ye.directTouch&&this.isDirectTouch),Re=this.getHoverData(ge,ye,ie,Ae,ue,he);ge=Re.hoverPoint,ye=Re.hoverSeries;let We=Re.hoverPoints,Pe=ye&&ye.tooltipOptions.followPointer&&!ye.tooltipOptions.split,Ue=ue&&ye&&!ye.noSharedTooltip;if(ge&&(ve||ge!==ae.hoverPoint||pe&&pe.isHidden)){if((ae.hoverPoints||[]).forEach(function(Oe){We.indexOf(Oe)===-1&&Oe.setState()}),ae.hoverSeries!==ye&&ye.onMouseOver(),this.applyInactiveState(We),(We||[]).forEach(function(Oe){Oe.setState("hover")}),ae.hoverPoint&&ae.hoverPoint.firePointEvent("mouseOut"),!ge.series)return;ae.hoverPoints=We,ae.hoverPoint=ge,ge.firePointEvent("mouseOver",void 0,()=>{pe&&ge&&pe.refresh(Ue?We:ge,he)})}else if(Pe&&pe&&!pe.isHidden){let Oe=pe.getAnchor([{}],he);ae.isInsidePlot(Oe[0],Oe[1],{visiblePlotOnly:!0})&&pe.updatePosition({plotX:Oe[0],plotY:Oe[1]})}this.unDocMouseMove||(this.unDocMouseMove=S(ae.container.ownerDocument,"mousemove",Oe=>g[xe.hoverChartIndex??-1]?.pointer?.onDocumentMouseMove(Oe)),this.eventsToUnbind.push(this.unDocMouseMove)),ae.axes.forEach(function(Oe){let Be,Ye=B((Oe.crosshair||{}).snap,!0);!Ye||(Be=ae.hoverPoint)&&Be.series[Oe.coll]===Oe||(Be=D(We,Se=>Se.series&&Se.series[Oe.coll]===Oe)),Be||!Ye?Oe.drawCrosshair(he,Be):Oe.hideCrosshair()})}setDOMEvents(){let he=this.chart.container,_e=he.ownerDocument;he.onmousedown=this.onContainerMouseDown.bind(this),he.onmousemove=this.onContainerMouseMove.bind(this),he.onclick=this.onContainerClick.bind(this),this.eventsToUnbind.push(S(he,"mouseenter",this.onContainerMouseEnter.bind(this)),S(he,"mouseleave",this.onContainerMouseLeave.bind(this))),xe.unbindDocumentMouseUp||(xe.unbindDocumentMouseUp=S(_e,"mouseup",this.onDocumentMouseUp.bind(this)));let ve=this.chart.renderTo.parentElement;for(;ve&&ve.tagName!=="BODY";)this.eventsToUnbind.push(S(ve,"scroll",()=>{delete this.chartPosition})),ve=ve.parentElement;this.eventsToUnbind.push(S(he,"touchstart",this.onContainerTouchStart.bind(this),{passive:!1}),S(he,"touchmove",this.onContainerTouchMove.bind(this),{passive:!1})),xe.unbindDocumentTouchEnd||(xe.unbindDocumentTouchEnd=S(_e,"touchend",this.onDocumentTouchEnd.bind(this),{passive:!1})),this.setPointerCapture(),S(this.chart,"redraw",this.setPointerCapture.bind(this))}setPointerCapture(){if(!x)return;let he=this.pointerCaptureEventsToUnbind,_e=this.chart,ve=_e.container,ae=B(_e.options.tooltip?.followTouchMove,!0)&&_e.series.some(ie=>ie.options.findNearestPointBy.indexOf("y")>-1);!this.hasPointerCapture&&ae?(he.push(S(ve,"pointerdown",ie=>{ie.target?.hasPointerCapture(ie.pointerId)&&ie.target?.releasePointerCapture(ie.pointerId)}),S(ve,"pointermove",ie=>{_e.pointer?.getPointFromEvent(ie)?.onMouseOver(ie)})),_e.styledMode||k(ve,{"touch-action":"none"}),ve.className+=" highcharts-no-touch-action",this.hasPointerCapture=!0):this.hasPointerCapture&&!ae&&(he.forEach(ie=>ie()),he.length=0,_e.styledMode||k(ve,{"touch-action":B(_e.options.chart.style?.["touch-action"],"manipulation")}),ve.className=ve.className.replace(" highcharts-no-touch-action",""),this.hasPointerCapture=!1)}setHoverChartIndex(he){let _e=this.chart,ve=a.charts[B(xe.hoverChartIndex,-1)];ve&&ve!==_e&&ve.pointer?.onContainerMouseLeave(he||{relatedTarget:_e.container}),ve&&ve.mouseIsDown||(xe.hoverChartIndex=_e.index)}touch(he,_e){let ve,{chart:ae,pinchDown:ie=[]}=this;this.setHoverChartIndex(),he.touches.length===1?(he=this.normalize(he),ae.isInsidePlot(he.chartX-ae.plotLeft,he.chartY-ae.plotTop,{visiblePlotOnly:!0})&&!ae.openMenu?(_e&&this.runPointActions(he),he.type==="touchmove"&&(ve=!!ie[0]&&Math.pow(ie[0].chartX-he.chartX,2)+Math.pow(ie[0].chartY-he.chartY,2)>=16),B(ve,!0)&&this.pinch(he)):_e&&this.reset()):he.touches.length===2&&this.pinch(he)}touchSelect(he){return!!(this.chart.zooming.singleTouch&&he.touches&&he.touches.length===1)}zoomOption(he){let _e=this.chart,ve=_e.inverted,ae=_e.zooming.type||"",ie,pe;/touch/.test(he.type)&&(ae=B(_e.zooming.pinchType,ae)),this.zoomX=ie=/x/.test(ae),this.zoomY=pe=/y/.test(ae),this.zoomHor=ie&&!ve||pe&&ve,this.zoomVert=pe&&!ve||ie&&ve,this.hasZoom=ie||pe}}return(c=xe||(xe={})).compose=function(we){le(b,"Core.Pointer")&&S(we,"beforeRender",function(){this.pointer=new c(this,this.options)})},xe}),n(r,"Core/Legend/Legend.js",[r["Core/Animation/AnimationUtilities.js"],r["Core/Templating.js"],r["Core/Globals.js"],r["Core/Series/Point.js"],r["Core/Renderer/RendererUtilities.js"],r["Core/Utilities.js"]],function(o,a,l,c,u,g){var b;let{animObject:x,setAnimation:S}=o,{format:$}=a,{composed:k,marginNames:T}=l,{distribute:D}=u,{addEvent:I,createElement:O,css:N,defined:ee,discardElement:ne,find:B,fireEvent:le,isNumber:fe,merge:xe,pick:we,pushUnique:he,relativeLength:_e,stableSort:ve,syncTimeout:ae}=g;class ie{constructor(ue,ge){this.allItems=[],this.initialItemY=0,this.itemHeight=0,this.itemMarginBottom=0,this.itemMarginTop=0,this.itemX=0,this.itemY=0,this.lastItemY=0,this.lastLineHeight=0,this.legendHeight=0,this.legendWidth=0,this.maxItemWidth=0,this.maxLegendWidth=0,this.offsetWidth=0,this.padding=0,this.pages=[],this.symbolHeight=0,this.symbolWidth=0,this.titleHeight=0,this.totalItemWidth=0,this.widthOption=0,this.chart=ue,this.setOptions(ge),ge.enabled&&(this.render(),I(this.chart,"endResize",function(){this.legend.positionCheckboxes()})),I(this.chart,"render",()=>{this.options.enabled&&this.proximate&&(this.proximatePositions(),this.positionItems())})}setOptions(ue){let ge=we(ue.padding,8);this.options=ue,this.chart.styledMode||(this.itemStyle=ue.itemStyle,this.itemHiddenStyle=xe(this.itemStyle,ue.itemHiddenStyle)),this.itemMarginTop=ue.itemMarginTop,this.itemMarginBottom=ue.itemMarginBottom,this.padding=ge,this.initialItemY=ge-5,this.symbolWidth=we(ue.symbolWidth,16),this.pages=[],this.proximate=ue.layout==="proximate"&&!this.chart.inverted,this.baseline=void 0}update(ue,ge){let ye=this.chart;this.setOptions(xe(!0,this.options,ue)),this.destroy(),ye.isDirtyLegend=ye.isDirtyBox=!0,we(ge,!0)&&ye.redraw(),le(this,"afterUpdate",{redraw:ge})}colorizeItem(ue,ge){let{area:ye,group:Ae,label:Re,line:We,symbol:Pe}=ue.legendItem||{};if(Ae?.[ge?"removeClass":"addClass"]("highcharts-legend-item-hidden"),!this.chart.styledMode){let{itemHiddenStyle:Ue={}}=this,Oe=Ue.color,{fillColor:Be,fillOpacity:Ye,lineColor:Se,marker:Te}=ue.options,$e=Ve=>(!ge&&(Ve.fill&&(Ve.fill=Oe),Ve.stroke&&(Ve.stroke=Oe)),Ve);Re?.css(xe(ge?this.itemStyle:Ue)),We?.attr($e({stroke:Se||ue.color})),Pe&&Pe.attr($e(Te&&Pe.isMarker?ue.pointAttribs():{fill:ue.color})),ye?.attr($e({fill:Be||ue.color,"fill-opacity":Be?1:Ye??.75}))}le(this,"afterColorizeItem",{item:ue,visible:ge})}positionItems(){this.allItems.forEach(this.positionItem,this),this.chart.isResizing||this.positionCheckboxes()}positionItem(ue){let{group:ge,x:ye=0,y:Ae=0}=ue.legendItem||{},Re=this.options,We=Re.symbolPadding,Pe=!Re.rtl,Ue=ue.checkbox;if(ge&&ge.element){let Oe={translateX:Pe?ye:this.legendWidth-ye-2*We-4,translateY:Ae};ge[ee(ge.translateY)?"animate":"attr"](Oe,void 0,()=>{le(this,"afterPositionItem",{item:ue})})}Ue&&(Ue.x=ye,Ue.y=Ae)}destroyItem(ue){let ge=ue.checkbox,ye=ue.legendItem||{};for(let Ae of["group","label","line","symbol"])ye[Ae]&&(ye[Ae]=ye[Ae].destroy());ge&&ne(ge),ue.legendItem=void 0}destroy(){for(let ue of this.getAllItems())this.destroyItem(ue);for(let ue of["clipRect","up","down","pager","nav","box","title","group"])this[ue]&&(this[ue]=this[ue].destroy());this.display=null}positionCheckboxes(){let ue,ge=this.group&&this.group.alignAttr,ye=this.clipHeight||this.legendHeight,Ae=this.titleHeight;ge&&(ue=ge.translateY,this.allItems.forEach(function(Re){let We,Pe=Re.checkbox;Pe&&(We=ue+Ae+Pe.y+(this.scrollOffset||0)+3,N(Pe,{left:ge.translateX+Re.checkboxOffset+Pe.x-20+"px",top:We+"px",display:this.proximate||We>ue-6&&We1.5*He?Le.height:He))}layoutItem(ue){let ge=this.options,ye=this.padding,Ae=ge.layout==="horizontal",Re=ue.itemHeight,We=this.itemMarginBottom,Pe=this.itemMarginTop,Ue=Ae?we(ge.itemDistance,20):0,Oe=this.maxLegendWidth,Be=ge.alignColumns&&this.totalItemWidth>Oe?this.maxItemWidth:ue.itemWidth,Ye=ue.legendItem||{};Ae&&this.itemX-ye+Be>Oe&&(this.itemX=ye,this.lastLineHeight&&(this.itemY+=Pe+this.lastLineHeight+We),this.lastLineHeight=0),this.lastItemY=Pe+this.itemY+We,this.lastLineHeight=Math.max(Re,this.lastLineHeight),Ye.x=this.itemX,Ye.y=this.itemY,Ae?this.itemX+=Be:(this.itemY+=Pe+Re+We,this.lastLineHeight=Re),this.offsetWidth=this.widthOption||Math.max((Ae?this.itemX-ye-(ue.checkbox?0:Ue):Be)+ye,this.offsetWidth)}getAllItems(){let ue=[];return this.chart.series.forEach(function(ge){let ye=ge&&ge.options;ge&&we(ye.showInLegend,!ee(ye.linkedTo)&&void 0,!0)&&(ue=ue.concat((ge.legendItem||{}).labels||(ye.legendType==="point"?ge.data:ge)))}),le(this,"afterGetAllItems",{allItems:ue}),ue}getAlignment(){let ue=this.options;return this.proximate?ue.align.charAt(0)+"tv":ue.floating?"":ue.align.charAt(0)+ue.verticalAlign.charAt(0)+ue.layout.charAt(0)}adjustMargins(ue,ge){let ye=this.chart,Ae=this.options,Re=this.getAlignment();Re&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(We,Pe){We.test(Re)&&!ee(ue[Pe])&&(ye[T[Pe]]=Math.max(ye[T[Pe]],ye.legend[(Pe+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][Pe]*Ae[Pe%2?"x":"y"]+we(Ae.margin,12)+ge[Pe]+(ye.titleOffset[Pe]||0)))})}proximatePositions(){let ue,ge=this.chart,ye=[],Ae=this.options.align==="left";for(let Re of(this.allItems.forEach(function(We){let Pe,Ue,Oe=Ae,Be,Ye;We.yAxis&&(We.xAxis.options.reversed&&(Oe=!Oe),We.points&&(Pe=B(Oe?We.points:We.points.slice(0).reverse(),function(Se){return fe(Se.plotY)})),Ue=this.itemMarginTop+We.legendItem.label.getBBox().height+this.itemMarginBottom,Ye=We.yAxis.top-ge.plotTop,Be=We.visible?(Pe?Pe.plotY:We.yAxis.height)+(Ye-.3*Ue):Ye+We.yAxis.height,ye.push({target:Be,size:Ue,item:We}))},this),D(ye,ge.plotHeight)))ue=Re.item.legendItem||{},fe(Re.pos)&&(ue.y=ge.plotTop-ge.spacing[0]+Re.pos)}render(){let ue=this.chart,ge=ue.renderer,ye=this.options,Ae=this.padding,Re=this.getAllItems(),We,Pe,Ue,Oe=this.group,Be,Ye=this.box;this.itemX=Ae,this.itemY=this.initialItemY,this.offsetWidth=0,this.lastItemY=0,this.widthOption=_e(ye.width,ue.spacingBox.width-Ae),Be=ue.spacingBox.width-2*Ae-ye.x,["rm","lm"].indexOf(this.getAlignment().substring(0,2))>-1&&(Be/=2),this.maxLegendWidth=this.widthOption||Be,Oe||(this.group=Oe=ge.g("legend").addClass(ye.className||"").attr({zIndex:7}).add(),this.contentGroup=ge.g().attr({zIndex:1}).add(Oe),this.scrollGroup=ge.g().add(this.contentGroup)),this.renderTitle(),ve(Re,(Se,Te)=>(Se.options&&Se.options.legendIndex||0)-(Te.options&&Te.options.legendIndex||0)),ye.reversed&&Re.reverse(),this.allItems=Re,this.display=We=!!Re.length,this.lastLineHeight=0,this.maxItemWidth=0,this.totalItemWidth=0,this.itemHeight=0,Re.forEach(this.renderItem,this),Re.forEach(this.layoutItem,this),Pe=(this.widthOption||this.offsetWidth)+Ae,Ue=this.lastItemY+this.lastLineHeight+this.titleHeight,Ue=this.handleOverflow(Ue)+Ae,Ye||(this.box=Ye=ge.rect().addClass("highcharts-legend-box").attr({r:ye.borderRadius}).add(Oe)),ue.styledMode||Ye.attr({stroke:ye.borderColor,"stroke-width":ye.borderWidth||0,fill:ye.backgroundColor||"none"}).shadow(ye.shadow),Pe>0&&Ue>0&&Ye[Ye.placed?"animate":"attr"](Ye.crisp.call({},{x:0,y:0,width:Pe,height:Ue},Ye.strokeWidth())),Oe[We?"show":"hide"](),ue.styledMode&&Oe.getStyle("display")==="none"&&(Pe=Ue=0),this.legendWidth=Pe,this.legendHeight=Ue,We&&this.align(),this.proximate||this.positionItems(),le(this,"afterRender")}align(ue=this.chart.spacingBox){let ge=this.chart,ye=this.options,Ae=ue.y;/(lth|ct|rth)/.test(this.getAlignment())&&ge.titleOffset[0]>0?Ae+=ge.titleOffset[0]:/(lbh|cb|rbh)/.test(this.getAlignment())&&ge.titleOffset[2]>0&&(Ae-=ge.titleOffset[2]),Ae!==ue.y&&(ue=xe(ue,{y:Ae})),ge.hasRendered||(this.group.placed=!1),this.group.align(xe(ye,{width:this.legendWidth,height:this.legendHeight,verticalAlign:this.proximate?"top":ye.verticalAlign}),!0,ue)}handleOverflow(ue){let ge=this,ye=this.chart,Ae=ye.renderer,Re=this.options,We=Re.y,Pe=Re.verticalAlign==="top",Ue=this.padding,Oe=Re.maxHeight,Be=Re.navigation,Ye=we(Be.animation,!0),Se=Be.arrowSize||12,Te=this.pages,$e=this.allItems,Ve=function(ze){typeof ze=="number"?He.attr({height:ze}):He&&(ge.clipRect=He.destroy(),ge.contentGroup.clip()),ge.contentGroup.div&&(ge.contentGroup.div.style.clip=ze?"rect("+Ue+"px,9999px,"+(Ue+ze)+"px,0)":"auto")},oe=function(ze){return ge[ze]=Ae.circle(0,0,1.3*Se).translate(Se/2,Se/2).add(Le),ye.styledMode||ge[ze].attr("fill","rgba(0,0,0,0.0001)"),ge[ze]},te,se,me,Ee=ye.spacingBox.height+(Pe?-We:We)-Ue,Le=this.nav,He=this.clipRect;return Re.layout!=="horizontal"||Re.verticalAlign==="middle"||Re.floating||(Ee/=2),Oe&&(Ee=Math.min(Ee,Oe)),Te.length=0,ue&&Ee>0&&ue>Ee&&Be.enabled!==!1?(this.clipHeight=te=Math.max(Ee-20-this.titleHeight-Ue,0),this.currentPage=we(this.currentPage,1),this.fullHeight=ue,$e.forEach((ze,Qe)=>{let rt=(me=ze.legendItem||{}).y||0,Ke=Math.round(me.label.getBBox().height),Ie=Te.length;(!Ie||rt-Te[Ie-1]>te&&(se||rt)!==Te[Ie-1])&&(Te.push(se||rt),Ie++),me.pageIx=Ie-1,se&&(($e[Qe-1].legendItem||{}).pageIx=Ie-1),Qe===$e.length-1&&rt+Ke-Te[Ie-1]>te&&rt>Te[Ie-1]&&(Te.push(rt),me.pageIx=Ie),rt!==se&&(se=rt)}),He||(He=ge.clipRect=Ae.clipRect(0,Ue-2,9999,0),ge.contentGroup.clip(He)),Ve(te),Le||(this.nav=Le=Ae.g().attr({zIndex:1}).add(this.group),this.up=Ae.symbol("triangle",0,0,Se,Se).add(Le),oe("upTracker").on("click",function(){ge.scroll(-1,Ye)}),this.pager=Ae.text("",15,10).addClass("highcharts-legend-navigation"),!ye.styledMode&&Be.style&&this.pager.css(Be.style),this.pager.add(Le),this.down=Ae.symbol("triangle-down",0,0,Se,Se).add(Le),oe("downTracker").on("click",function(){ge.scroll(1,Ye)})),ge.scroll(0),ue=Ee):Le&&(Ve(),this.nav=Le.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0),ue}scroll(ue,ge){let ye=this.chart,Ae=this.pages,Re=Ae.length,We=this.clipHeight,Pe=this.options.navigation,Ue=this.pager,Oe=this.padding,Be=this.currentPage+ue;Be>Re&&(Be=Re),Be>0&&(ge!==void 0&&S(ge,ye),this.nav.attr({translateX:Oe,translateY:We+this.padding+7+this.titleHeight,visibility:"inherit"}),[this.up,this.upTracker].forEach(function(Ye){Ye.attr({class:Be===1?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"})}),Ue.attr({text:Be+"/"+Re}),[this.down,this.downTracker].forEach(function(Ye){Ye.attr({x:18+this.pager.getBBox().width,class:Be===Re?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"})},this),ye.styledMode||(this.up.attr({fill:Be===1?Pe.inactiveColor:Pe.activeColor}),this.upTracker.css({cursor:Be===1?"default":"pointer"}),this.down.attr({fill:Be===Re?Pe.inactiveColor:Pe.activeColor}),this.downTracker.css({cursor:Be===Re?"default":"pointer"})),this.scrollOffset=-Ae[Be-1]+this.initialItemY,this.scrollGroup.animate({translateY:this.scrollOffset}),this.currentPage=Be,this.positionCheckboxes(),ae(()=>{le(this,"afterScroll",{currentPage:Be})},x(we(ge,ye.renderer.globalAnimation,!0)).duration))}setItemEvents(ue,ge,ye){let Ae=this,Re=ue.legendItem||{},We=Ae.chart.renderer.boxWrapper,Pe=ue instanceof c,Ue="highcharts-legend-"+(Pe?"point":"series")+"-active",Oe=Ae.chart.styledMode,Be=ye?[ge,Re.symbol]:[Re.group],Ye=Se=>{Ae.allItems.forEach(Te=>{ue!==Te&&[Te].concat(Te.linkedSeries||[]).forEach($e=>{$e.setState(Se,!Pe)})})};for(let Se of Be)Se&&Se.on("mouseover",function(){ue.visible&&Ye("inactive"),ue.setState("hover"),ue.visible&&We.addClass(Ue),Oe||ge.css(Ae.options.itemHoverStyle)}).on("mouseout",function(){Ae.chart.styledMode||ge.css(xe(ue.visible?Ae.itemStyle:Ae.itemHiddenStyle)),Ye(""),We.removeClass(Ue),ue.setState()}).on("click",function(Te){let $e="legendItemClick",Ve=function(){ue.setVisible&&ue.setVisible(),Ye(ue.visible?"inactive":"")};We.removeClass(Ue),Te={browserEvent:Te},ue.firePointEvent?ue.firePointEvent($e,Te,Ve):le(ue,$e,Te,Ve)})}createCheckboxForItem(ue){ue.checkbox=O("input",{type:"checkbox",className:"highcharts-legend-checkbox",checked:ue.selected,defaultChecked:ue.selected},this.options.itemCheckboxStyle,this.chart.container),I(ue.checkbox,"click",function(ge){let ye=ge.target;le(ue.series||ue,"checkboxClick",{checked:ye.checked,item:ue},function(){ue.select()})})}}return(b=ie||(ie={})).compose=function(pe){he(k,"Core.Legend")&&I(pe,"beforeMargins",function(){this.legend=new b(this,this.options.legend)})},ie}),n(r,"Core/Legend/LegendSymbol.js",[r["Core/Utilities.js"]],function(o){var a;let{extend:l,merge:c,pick:u}=o;return function(g){function b(x,S,$){let k=this.legendItem=this.legendItem||{},{chart:T,options:D}=this,{baseline:I=0,symbolWidth:O,symbolHeight:N}=x,ee=this.symbol||"circle",ne=N/2,B=T.renderer,le=k.group,fe=I-Math.round(N*($?.4:.3)),xe={},we,he=D.marker,_e=0;if(T.styledMode||(xe["stroke-width"]=Math.min(D.lineWidth||0,24),D.dashStyle?xe.dashstyle=D.dashStyle:D.linecap==="square"||(xe["stroke-linecap"]="round")),k.line=B.path().addClass("highcharts-graph").attr(xe).add(le),$&&(k.area=B.path().addClass("highcharts-area").add(le)),xe["stroke-linecap"]&&(_e=Math.min(k.line.strokeWidth(),O)/2),O){let ve=[["M",_e,fe],["L",O-_e,fe]];k.line.attr({d:ve}),k.area?.attr({d:[...ve,["L",O-_e,I],["L",_e,I]]})}if(he&&he.enabled!==!1&&O){let ve=Math.min(u(he.radius,ne),ne);ee.indexOf("url")===0&&(he=c(he,{width:N,height:N}),ve=0),k.symbol=we=B.symbol(ee,O/2-ve,fe-ve,2*ve,2*ve,l({context:"legend"},he)).addClass("highcharts-point").add(le),we.isMarker=!0}}g.areaMarker=function(x,S){b.call(this,x,S,!0)},g.lineMarker=b,g.rectangle=function(x,S){let $=S.legendItem||{},k=x.options,T=x.symbolHeight,D=k.squareSymbol,I=D?T:x.symbolWidth;$.symbol=this.chart.renderer.rect(D?(x.symbolWidth-T)/2:0,x.baseline-T+1,I,T,u(x.options.symbolRadius,T/2)).addClass("highcharts-point").attr({zIndex:3}).add($.group)}}(a||(a={})),a}),n(r,"Core/Series/SeriesDefaults.js",[],function(){return{lineWidth:2,allowPointSelect:!1,crisp:!0,showCheckbox:!1,animation:{duration:1e3},enableMouseTracking:!0,events:{},marker:{enabledThreshold:2,lineColor:"#ffffff",lineWidth:0,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:150},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{animation:{},align:"center",borderWidth:0,defer:!0,formatter:function(){let{numberFormatter:o}=this.series.chart;return typeof this.y!="number"?"":o(this.y,-1)},padding:5,style:{fontSize:"0.7em",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},hover:{animation:{duration:150},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:150},opacity:.2}},stickyTracking:!0,turboThreshold:1e3,findNearestPointBy:"x"}}),n(r,"Core/Series/SeriesRegistry.js",[r["Core/Globals.js"],r["Core/Defaults.js"],r["Core/Series/Point.js"],r["Core/Utilities.js"]],function(o,a,l,c){var u;let{defaultOptions:g}=a,{extend:b,extendClass:x,merge:S}=c;return function($){function k(T,D){let I=g.plotOptions||{},O=D.defaultOptions,N=D.prototype;return N.type=T,N.pointClass||(N.pointClass=l),!$.seriesTypes[T]&&(O&&(I[T]=O),$.seriesTypes[T]=D,!0)}$.seriesTypes=o.seriesTypes,$.registerSeriesType=k,$.seriesType=function(T,D,I,O,N){let ee=g.plotOptions||{};if(D=D||"",ee[T]=S(ee[D],I),delete $.seriesTypes[T],k(T,x($.seriesTypes[D]||function(){},O)),$.seriesTypes[T].prototype.type=T,N){class ne extends l{}b(ne.prototype,N),$.seriesTypes[T].prototype.pointClass=ne}return $.seriesTypes[T]}}(u||(u={})),u}),n(r,"Core/Series/Series.js",[r["Core/Animation/AnimationUtilities.js"],r["Core/Defaults.js"],r["Core/Foundation.js"],r["Core/Globals.js"],r["Core/Legend/LegendSymbol.js"],r["Core/Series/Point.js"],r["Core/Series/SeriesDefaults.js"],r["Core/Series/SeriesRegistry.js"],r["Core/Renderer/SVG/SVGElement.js"],r["Core/Utilities.js"]],function(o,a,l,c,u,g,b,x,S,$){let{animObject:k,setAnimation:T}=o,{defaultOptions:D}=a,{registerEventOptions:I}=l,{svg:O,win:N}=c,{seriesTypes:ee}=x,{arrayMax:ne,arrayMin:B,clamp:le,correctFloat:fe,crisp:xe,defined:we,destroyObjectProperties:he,diffObjects:_e,erase:ve,error:ae,extend:ie,find:pe,fireEvent:ue,getClosestDistance:ge,getNestedProperty:ye,insertItem:Ae,isArray:Re,isNumber:We,isString:Pe,merge:Ue,objectEach:Oe,pick:Be,removeEvent:Ye,splat:Se,syncTimeout:Te}=$;class $e{constructor(){this.zoneAxis="y"}init(oe,te){let se;ue(this,"init",{options:te});let me=this,Ee=oe.series;this.eventsToUnbind=[],me.chart=oe,me.options=me.setOptions(te);let Le=me.options,He=Le.visible!==!1;me.linkedSeries=[],me.bindAxes(),ie(me,{name:Le.name,state:"",visible:He,selected:Le.selected===!0}),I(this,Le);let ze=Le.events;(ze&&ze.click||Le.point&&Le.point.events&&Le.point.events.click||Le.allowPointSelect)&&(oe.runTrackerClick=!0),me.getColor(),me.getSymbol(),me.parallelArrays.forEach(function(Qe){me[Qe+"Data"]||(me[Qe+"Data"]=[])}),me.isCartesian&&(oe.hasCartesianSeries=!0),Ee.length&&(se=Ee[Ee.length-1]),me._i=Be(se&&se._i,-1)+1,me.opacity=me.options.opacity,oe.orderItems("series",Ae(this,Ee)),Le.dataSorting&&Le.dataSorting.enabled?me.setDataSortingOptions():me.points||me.data||me.setData(Le.data,!1),ue(this,"afterInit")}is(oe){return ee[oe]&&this instanceof ee[oe]}bindAxes(){let oe,te=this,se=te.options,me=te.chart;ue(this,"bindAxes",null,function(){(te.axisTypes||[]).forEach(function(Ee){(me[Ee]||[]).forEach(function(Le){oe=Le.options,(Be(se[Ee],0)===Le.index||se[Ee]!==void 0&&se[Ee]===oe.id)&&(Ae(te,Le.series),te[Ee]=Le,Le.isDirty=!0)}),te[Ee]||te.optionalAxis===Ee||ae(18,!0,me)})}),ue(this,"afterBindAxes")}updateParallelArrays(oe,te,se){let me=oe.series,Ee=We(te)?function(Le){let He=Le==="y"&&me.toYData?me.toYData(oe):oe[Le];me[Le+"Data"][te]=He}:function(Le){Array.prototype[te].apply(me[Le+"Data"],se)};me.parallelArrays.forEach(Ee)}hasData(){return this.visible&&this.dataMax!==void 0&&this.dataMin!==void 0||this.visible&&this.yData&&this.yData.length>0}hasMarkerChanged(oe,te){let se=oe.marker,me=te.marker||{};return se&&(me.enabled&&!se.enabled||me.symbol!==se.symbol||me.height!==se.height||me.width!==se.width)}autoIncrement(oe){let te=this.options,se=te.pointIntervalUnit,me=te.relativeXValue,Ee=this.chart.time,Le=this.xIncrement,He,ze;return Le=Be(Le,te.pointStart,0),this.pointInterval=ze=Be(this.pointInterval,te.pointInterval,1),me&&We(oe)&&(ze*=oe),se&&(He=new Ee.Date(Le),se==="day"?Ee.set("Date",He,Ee.get("Date",He)+ze):se==="month"?Ee.set("Month",He,Ee.get("Month",He)+ze):se==="year"&&Ee.set("FullYear",He,Ee.get("FullYear",He)+ze),ze=He.getTime()-Le),me&&We(oe)?Le+ze:(this.xIncrement=Le+ze,Le)}setDataSortingOptions(){let oe=this.options;ie(this,{requireSorting:!1,sorted:!1,enabledDataSorting:!0,allowDG:!1}),we(oe.pointRange)||(oe.pointRange=1)}setOptions(oe){let te,se=this.chart,me=se.options.plotOptions,Ee=se.userOptions||{},Le=Ue(oe),He=se.styledMode,ze={plotOptions:me,userOptions:Le};ue(this,"setOptions",ze);let Qe=ze.plotOptions[this.type],rt=Ee.plotOptions||{},Ke=rt.series||{},Ie=D.plotOptions[this.type]||{},Fe=rt[this.type]||{};this.userOptions=ze.userOptions;let je=Ue(Qe,me.series,Fe,Le);this.tooltipOptions=Ue(D.tooltip,D.plotOptions.series?.tooltip,Ie?.tooltip,se.userOptions.tooltip,rt.series?.tooltip,Fe.tooltip,Le.tooltip),this.stickyTracking=Be(Le.stickyTracking,Fe.stickyTracking,Ke.stickyTracking,!!this.tooltipOptions.shared&&!this.noSharedTooltip||je.stickyTracking),Qe.marker===null&&delete je.marker,this.zoneAxis=je.zoneAxis||"y";let Ze=this.zones=(je.zones||[]).map(Ce=>({...Ce}));return(je.negativeColor||je.negativeFillColor)&&!je.zones&&(te={value:je[this.zoneAxis+"Threshold"]||je.threshold||0,className:"highcharts-negative"},He||(te.color=je.negativeColor,te.fillColor=je.negativeFillColor),Ze.push(te)),Ze.length&&we(Ze[Ze.length-1].value)&&Ze.push(He?{}:{color:this.color,fillColor:this.fillColor}),ue(this,"afterSetOptions",{options:je}),je}getName(){return Be(this.options.name,"Series "+(this.index+1))}getCyclic(oe,te,se){let me,Ee,Le=this.chart,He=`${oe}Index`,ze=`${oe}Counter`,Qe=se?.length||Le.options.chart.colorCount;!te&&(we(Ee=Be(oe==="color"?this.options.colorIndex:void 0,this[He]))?me=Ee:(Le.series.length||(Le[ze]=0),me=Le[ze]%Qe,Le[ze]+=1),se&&(te=se[me])),me!==void 0&&(this[He]=me),this[oe]=te}getColor(){this.chart.styledMode?this.getCyclic("color"):this.options.colorByPoint?this.color="#cccccc":this.getCyclic("color",this.options.color||D.plotOptions[this.type].color,this.chart.options.colors)}getPointsCollection(){return(this.hasGroupedData?this.points:this.data)||[]}getSymbol(){let oe=this.options.marker;this.getCyclic("symbol",oe.symbol,this.chart.options.symbols)}findPointIndex(oe,te){let se,me,Ee,Le=oe.id,He=oe.x,ze=this.points,Qe=this.options.dataSorting;if(Le){let rt=this.chart.get(Le);rt instanceof g&&(se=rt)}else if(this.linkedParent||this.enabledDataSorting||this.options.relativeXValue){let rt=Ke=>!Ke.touched&&Ke.index===oe.index;if(Qe&&Qe.matchByName?rt=Ke=>!Ke.touched&&Ke.name===oe.name:this.options.relativeXValue&&(rt=Ke=>!Ke.touched&&Ke.options.x===oe.x),!(se=pe(ze,rt)))return}return se&&(Ee=se&&se.index)!==void 0&&(me=!0),Ee===void 0&&We(He)&&(Ee=this.xData.indexOf(He,te)),Ee!==-1&&Ee!==void 0&&this.cropped&&(Ee=Ee>=this.cropStart?Ee-this.cropStart:Ee),!me&&We(Ee)&&ze[Ee]&&ze[Ee].touched&&(Ee=void 0),Ee}updateData(oe,te){let se=this.options,me=se.dataSorting,Ee=this.points,Le=[],He=this.requireSorting,ze=oe.length===Ee.length,Qe,rt,Ke,Ie,Fe=!0;if(this.xIncrement=null,oe.forEach(function(je,Ze){let Ce,ce=we(je)&&this.pointClass.prototype.optionsToObject.call({series:this},je)||{},de=ce.x;ce.id||We(de)?((Ce=this.findPointIndex(ce,Ie))===-1||Ce===void 0?Le.push(je):Ee[Ce]&&je!==se.data[Ce]?(Ee[Ce].update(je,!1,null,!1),Ee[Ce].touched=!0,He&&(Ie=Ce+1)):Ee[Ce]&&(Ee[Ce].touched=!0),(!ze||Ze!==Ce||me&&me.enabled||this.hasDerivedData)&&(Qe=!0)):Le.push(je)},this),Qe)for(rt=Ee.length;rt--;)(Ke=Ee[rt])&&!Ke.touched&&Ke.remove&&Ke.remove(!1,te);else!ze||me&&me.enabled?Fe=!1:(oe.forEach(function(je,Ze){je===Ee[Ze].y||Ee[Ze].destroyed||Ee[Ze].update(je,!1,null,!1)}),Le.length=0);return Ee.forEach(function(je){je&&(je.touched=!1)}),!!Fe&&(Le.forEach(function(je){this.addPoint(je,!1,null,null,!1)},this),this.xIncrement===null&&this.xData&&this.xData.length&&(this.xIncrement=ne(this.xData),this.autoIncrement()),!0)}setData(oe,te=!0,se,me){let Ee=this,Le=Ee.points,He=Le&&Le.length||0,ze=Ee.options,Qe=Ee.chart,rt=ze.dataSorting,Ke=Ee.xAxis,Ie=ze.turboThreshold,Fe=this.xData,je=this.yData,Ze=Ee.pointArrayMap,Ce=Ze&&Ze.length,ce=ze.keys,de,De,qe,nt=0,lt=1,pt=null,bt;Qe.options.chart.allowMutatingData||(ze.data&&delete Ee.options.data,Ee.userOptions.data&&delete Ee.userOptions.data,bt=Ue(!0,oe));let St=(oe=bt||oe||[]).length;if(rt&&rt.enabled&&(oe=this.sortData(oe)),Qe.options.chart.allowMutatingData&&me!==!1&&St&&He&&!Ee.cropped&&!Ee.hasGroupedData&&Ee.visible&&!Ee.boosted&&(qe=this.updateData(oe,se)),!qe){if(Ee.xIncrement=null,Ee.colorCounter=0,this.parallelArrays.forEach(function(Et){Ee[Et+"Data"].length=0}),Ie&&St>Ie)if(We(pt=Ee.getFirstValidPoint(oe)))for(de=0;de=0?nt:0,lt=lt>=0?lt:1),pt.length===1&&(lt=0),nt===lt)for(de=0;de{let He=ye(se,Ee),ze=ye(se,Le);return zeHe?1:0}).forEach(function(Ee,Le){Ee.x=Le},this),te.linkedSeries&&te.linkedSeries.forEach(function(Ee){let Le=Ee.options,He=Le.data;Le.dataSorting&&Le.dataSorting.enabled||!He||(He.forEach(function(ze,Qe){He[Qe]=me(Ee,ze),oe[Qe]&&(He[Qe].x=oe[Qe].x,He[Qe].index=Qe)}),Ee.setData(He,!1))}),oe}getProcessedData(oe){let te=this,se=te.xAxis,me=te.options.cropThreshold,Ee=se?.logarithmic,Le=te.isCartesian,He,ze,Qe=0,rt,Ke,Ie,Fe=te.xData,je=te.yData,Ze=!1,Ce=Fe.length;se&&(Ke=(rt=se.getExtremes()).min,Ie=rt.max,Ze=!!(se.categories&&!se.names.length)),Le&&te.sorted&&!oe&&(!me||Ce>me||te.forceCrop)&&(Fe[Ce-1]Ie?(Fe=[],je=[]):te.yData&&(Fe[0]Ie)&&(Fe=(He=this.cropData(te.xData,te.yData,Ke,Ie)).xData,je=He.yData,Qe=He.start,ze=!0));let ce=ge([Ee?Fe.map(Ee.log2lin):Fe],()=>te.requireSorting&&!Ze&&ae(15,!1,te.chart));return{xData:Fe,yData:je,cropped:ze,cropStart:Qe,closestPointRange:ce}}processData(oe){let te=this.xAxis;if(this.isCartesian&&!this.isDirty&&!te.isDirty&&!this.yAxis.isDirty&&!oe)return!1;let se=this.getProcessedData();this.cropped=se.cropped,this.cropStart=se.cropStart,this.processedXData=se.xData,this.processedYData=se.yData,this.closestPointRange=this.basePointRange=se.closestPointRange,ue(this,"afterProcessData")}cropData(oe,te,se,me){let Ee=oe.length,Le,He,ze=0,Qe=Ee;for(Le=0;Le=se){ze=Math.max(0,Le-1);break}for(He=Le;Heme){Qe=He+1;break}return{xData:oe.slice(ze,Qe),yData:te.slice(ze,Qe),start:ze,end:Qe}}generatePoints(){let oe=this.options,te=this.processedData||oe.data,se=this.processedXData,me=this.processedYData,Ee=this.pointClass,Le=se.length,He=this.cropStart||0,ze=this.hasGroupedData,Qe=oe.keys,rt=[],Ke=oe.dataGrouping&&oe.dataGrouping.groupAll?He:0,Ie,Fe,je,Ze,Ce=this.data;if(!Ce&&!ze){let ce=[];ce.length=te.length,Ce=this.data=ce}for(Qe&&ze&&(this.options.keys=!1),Ze=0;Ze0:Ze.length)||!He),Fe=te||this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||!se||(lt[Ce+Le]||je)>=de&&(lt[Ce-Le]||je)<=De,Ie&&Fe)if(ce=Ze.length)for(;ce--;)We(Ze[ce])&&(Ee[qe++]=Ze[ce]);else Ee[qe++]=Ze;let pt={activeYData:Ee,dataMin:B(Ee),dataMax:ne(Ee)};return ue(this,"afterGetExtremes",{dataExtremes:pt}),pt}applyExtremes(){let oe=this.getExtremes();return this.dataMin=oe.dataMin,this.dataMax=oe.dataMax,oe}getFirstValidPoint(oe){let te=oe.length,se=0,me=null;for(;me===null&&se1)&&(Le.step=function(Ie,Fe){Ke&&Ke.apply(Fe,arguments),Fe.prop==="width"&&Qe?.element&&Qe.attr(Ee?"height":"width",Ie+99)}),ze.addClass("highcharts-animating").animate(rt,Le)}}afterAnimate(){this.setClip(),Oe(this.chart.sharedClips,(oe,te,se)=>{oe&&!this.chart.container.querySelector(`[clip-path="url(#${oe.id})"]`)&&(oe.destroy(),delete se[te])}),this.finishedAnimating=!0,ue(this,"afterAnimate")}drawPoints(oe=this.points){let te,se,me,Ee,Le,He,ze,Qe=this.chart,rt=Qe.styledMode,{colorAxis:Ke,options:Ie}=this,Fe=Ie.marker,je=this[this.specialGroup||"markerGroup"],Ze=this.xAxis,Ce=Be(Fe.enabled,!Ze||!!Ze.isRadial||null,this.closestPointRangePx>=Fe.enabledThreshold*Fe.radius);if(Fe.enabled!==!1||this._hasPointMarkers)for(te=0;te0||se.hasImage)&&(se.graphic=me=Qe.renderer.symbol(ce,ze.x,ze.y,ze.width,ze.height,He?Le:Fe).add(je),this.enabledDataSorting&&Qe.hasRendered&&(me.attr({x:se.startXPos}),Ee="animate")),me&&Ee==="animate"&&me[de?"show":"hide"](de).animate(ze),me){let De=this.pointAttribs(se,rt||!se.selected?void 0:"select");rt?Ke&&me.css({fill:De.fill}):me[Ee](De)}me&&me.addClass(se.getClassName(),!0)}else me&&(se.graphic=me.destroy())}markerAttribs(oe,te){let se=this.options,me=se.marker,Ee=oe.marker||{},Le=Ee.symbol||me.symbol,He={},ze,Qe,rt=Be(Ee.radius,me&&me.radius);te&&(ze=me.states[te],rt=Be((Qe=Ee.states&&Ee.states[te])&&Qe.radius,ze&&ze.radius,rt&&rt+(ze&&ze.radiusPlus||0))),oe.hasImage=Le&&Le.indexOf("url")===0,oe.hasImage&&(rt=0);let Ke=oe.pos();return We(rt)&&Ke&&(se.crisp&&(Ke[0]=xe(Ke[0],oe.hasImage?0:Le==="rect"?me?.lineWidth||0:1)),He.x=Ke[0]-rt,He.y=Ke[1]-rt),rt&&(He.width=He.height=2*rt),He}pointAttribs(oe,te){let se=this.options.marker,me=oe&&oe.options,Ee=me&&me.marker||{},Le=me&&me.color,He=oe&&oe.color,ze=oe&&oe.zone&&oe.zone.color,Qe,rt,Ke=this.color,Ie,Fe,je=Be(Ee.lineWidth,se.lineWidth),Ze=1;return Ke=Le||ze||He||Ke,Ie=Ee.fillColor||se.fillColor||Ke,Fe=Ee.lineColor||se.lineColor||Ke,te=te||"normal",Qe=se.states[te]||{},je=Be((rt=Ee.states&&Ee.states[te]||{}).lineWidth,Qe.lineWidth,je+Be(rt.lineWidthPlus,Qe.lineWidthPlus,0)),Ie=rt.fillColor||Qe.fillColor||Ie,{stroke:Fe=rt.lineColor||Qe.lineColor||Fe,"stroke-width":je,fill:Ie,opacity:Ze=Be(rt.opacity,Qe.opacity,Ze)}}destroy(oe){let te,se,me,Ee=this,Le=Ee.chart,He=/AppleWebKit\/533/.test(N.navigator.userAgent),ze=Ee.data||[];for(ue(Ee,"destroy",{keepEventsForUpdate:oe}),this.removeEvents(oe),(Ee.axisTypes||[]).forEach(function(Qe){(me=Ee[Qe])&&me.series&&(ve(me.series,Ee),me.isDirty=me.forceRedraw=!0)}),Ee.legendItem&&Ee.chart.legend.destroyItem(Ee),te=ze.length;te--;)(se=ze[te])&&se.destroy&&se.destroy();for(let Qe of Ee.zones)he(Qe,void 0,!0);$.clearTimeout(Ee.animationTimeout),Oe(Ee,function(Qe,rt){Qe instanceof S&&!Qe.survive&&Qe[He&&rt==="group"?"hide":"destroy"]()}),Le.hoverSeries===Ee&&(Le.hoverSeries=void 0),ve(Le.series,Ee),Le.orderItems("series"),Oe(Ee,function(Qe,rt){oe&&rt==="hcEvents"||delete Ee[rt]})}applyZones(){let{area:oe,chart:te,graph:se,zones:me,points:Ee,xAxis:Le,yAxis:He,zoneAxis:ze}=this,{inverted:Qe,renderer:rt}=te,Ke=this[`${ze}Axis`],{isXAxis:Ie,len:Fe=0}=Ke||{},je=(se?.strokeWidth()||0)/2+1,Ze=(Ce,ce=0,de=0)=>{Qe&&(de=Fe-de);let{translated:De=0,lineClip:qe}=Ce,nt=de-De;qe?.push(["L",ce,Math.abs(nt){qe.forEach((nt,lt)=>{(nt[0]==="M"||nt[0]==="L")&&(qe[lt]=[nt[0],Ie?Fe-nt[1]:nt[1],Ie?nt[2]:Fe-nt[2]])})};if(me.forEach(qe=>{qe.lineClip=[],qe.translated=le(Ke.toPixels(Be(qe.value,Ce),!0)||0,0,Fe)}),se&&!this.showLine&&se.hide(),oe&&oe.hide(),ze==="y"&&Ee.length{let nt=qe.lineClip||[],lt=Math.round(qe.translated||0);Le.reversed&&nt.reverse();let{clip:pt,simpleClip:bt}=qe,St=0,Et=0,vt=Le.len,Nt=He.len;Ie?(St=lt,vt=De):(Et=lt,Nt=De);let Ft=[["M",St,Et],["L",vt,Et],["L",vt,Nt],["L",St,Nt],["Z"]],qt=[Ft[0],...nt,Ft[1],Ft[2],...de,Ft[3],Ft[4]];de=nt.reverse(),De=lt,Qe&&(ce(qt),oe&&ce(Ft)),pt?(pt.animate({d:qt}),bt?.animate({d:Ft})):(pt=qe.clip=rt.path(qt),oe&&(bt=qe.simpleClip=rt.path(Ft))),se&&qe.graph?.clip(pt),oe&&qe.area?.clip(bt)})}else this.visible&&(se&&se.show(),oe&&oe.show())}plotGroup(oe,te,se,me,Ee){let Le=this[oe],He=!Le,ze={visibility:se,zIndex:me||.1};return we(this.opacity)&&!this.chart.styledMode&&this.state!=="inactive"&&(ze.opacity=this.opacity),Le||(this[oe]=Le=this.chart.renderer.g().add(Ee)),Le.addClass("highcharts-"+te+" highcharts-series-"+this.index+" highcharts-"+this.type+"-series "+(we(this.colorIndex)?"highcharts-color-"+this.colorIndex+" ":"")+(this.options.className||"")+(Le.hasClass("highcharts-tracker")?" highcharts-tracker":""),!0),Le.attr(ze)[He?"attr":"animate"](this.getPlotBox(te)),Le}getPlotBox(oe){let te=this.xAxis,se=this.yAxis,me=this.chart,Ee=me.inverted&&!me.polar&&te&&this.invertible&&oe==="series";return me.inverted&&(te=se,se=this.xAxis),{translateX:te?te.left:me.plotLeft,translateY:se?se.top:me.plotTop,rotation:Ee?90:0,rotationOriginX:Ee?(te.len-se.len)/2:0,rotationOriginY:Ee?(te.len+se.len)/2:0,scaleX:Ee?-1:1,scaleY:1}}removeEvents(oe){let{eventsToUnbind:te}=this;oe||Ye(this),te.length&&(te.forEach(se=>{se()}),te.length=0)}render(){let oe=this,{chart:te,options:se,hasRendered:me}=oe,Ee=k(se.animation),Le=oe.visible?"inherit":"hidden",He=se.zIndex,ze=te.seriesGroup,Qe=oe.finishedAnimating?0:Ee.duration;ue(this,"render"),oe.plotGroup("group","series",Le,He,ze),oe.markerGroup=oe.plotGroup("markerGroup","markers",Le,He,ze),se.clip!==!1&&oe.setClip(),Qe&&oe.animate?.(!0),oe.drawGraph&&(oe.drawGraph(),oe.applyZones()),oe.visible&&oe.drawPoints(),oe.drawDataLabels?.(),oe.redrawPoints?.(),se.enableMouseTracking&&oe.drawTracker?.(),Qe&&oe.animate?.(),me||(Qe&&Ee.defer&&(Qe+=Ee.defer),oe.animationTimeout=Te(()=>{oe.afterAnimate()},Qe||0)),oe.isDirty=!1,oe.hasRendered=!0,ue(oe,"afterRender")}redraw(){let oe=this.isDirty||this.isDirtyData;this.translate(),this.render(),oe&&delete this.kdTree}reserveSpace(){return this.visible||!this.chart.options.chart.ignoreHiddenSeries}searchPoint(oe,te){let{xAxis:se,yAxis:me}=this,Ee=this.chart.inverted;return this.searchKDTree({clientX:Ee?se.len-oe.chartY+se.pos:oe.chartX-se.pos,plotY:Ee?me.len-oe.chartX+me.pos:oe.chartY-me.pos},te,oe)}buildKDTree(oe){this.buildingKdTree=!0;let te=this,se=te.options.findNearestPointBy.indexOf("y")>-1?2:1;delete te.kdTree,Te(function(){te.kdTree=function me(Ee,Le,He){let ze,Qe,rt=Ee?.length;if(rt)return ze=te.kdAxisArray[Le%He],Ee.sort((Ke,Ie)=>(Ke[ze]||0)-(Ie[ze]||0)),{point:Ee[Qe=Math.floor(rt/2)],left:me(Ee.slice(0,Qe),Le+1,He),right:me(Ee.slice(Qe+1),Le+1,He)}}(te.getValidPoints(void 0,!te.directTouch),se,se),te.buildingKdTree=!1},te.options.kdNow||oe?.type==="touchstart"?0:1)}searchKDTree(oe,te,se){let me=this,[Ee,Le]=this.kdAxisArray,He=te?"distX":"dist",ze=(me.options.findNearestPointBy||"").indexOf("y")>-1?2:1,Qe=!!me.isBubble;if(this.kdTree||this.buildingKdTree||this.buildKDTree(se),this.kdTree)return function rt(Ke,Ie,Fe,je){let Ze=Ie.point,Ce=me.kdAxisArray[Fe%je],ce,de,De=Ze;(function(pt,bt){let St=pt[Ee],Et=bt[Ee],vt=we(St)&&we(Et)?St-Et:null,Nt=pt[Le],Ft=bt[Le],qt=we(Nt)&&we(Ft)?Nt-Ft:0,Zt=Qe&&bt.marker?.radius||0;bt.dist=Math.sqrt((vt&&vt*vt||0)+qt*qt)-Zt,bt.distX=we(vt)?Math.abs(vt)-Zt:Number.MAX_VALUE})(Ke,Ze);let qe=(Ke[Ce]||0)-(Ze[Ce]||0)+(Qe&&Ze.marker?.radius||0),nt=qe<0?"left":"right",lt=qe<0?"right":"left";return Ie[nt]&&(De=(ce=rt(Ke,Ie[nt],Fe+1,je))[He]=0&&Le<=(me?me.len:te.plotHeight)&&Ee>=0&&Ee<=(se?se.len:te.plotWidth)}drawTracker(){let oe=this,te=oe.options,se=te.trackByArea,me=[].concat((se?oe.areaPath:oe.graphPath)||[]),Ee=oe.chart,Le=Ee.pointer,He=Ee.renderer,ze=Ee.options.tooltip?.snap||0,Qe=()=>{te.enableMouseTracking&&Ee.hoverSeries!==oe&&oe.onMouseOver()},rt="rgba(192,192,192,"+(O?1e-4:.002)+")",Ke=oe.tracker;Ke?Ke.attr({d:me}):oe.graph&&(oe.tracker=Ke=He.path(me).attr({visibility:oe.visible?"inherit":"hidden",zIndex:2}).addClass(se?"highcharts-tracker-area":"highcharts-tracker-line").add(oe.group),Ee.styledMode||Ke.attr({"stroke-linecap":"round","stroke-linejoin":"round",stroke:rt,fill:se?rt:"none","stroke-width":oe.graph.strokeWidth()+(se?0:2*ze)}),[oe.tracker,oe.markerGroup,oe.dataLabelsGroup].forEach(Ie=>{Ie&&(Ie.addClass("highcharts-tracker").on("mouseover",Qe).on("mouseout",Fe=>{Le?.onTrackerMouseOut(Fe)}),te.cursor&&!Ee.styledMode&&Ie.css({cursor:te.cursor}),Ie.on("touchstart",Qe))})),ue(this,"afterDrawTracker")}addPoint(oe,te,se,me,Ee){let Le,He,ze=this.options,Qe=this.data,rt=this.chart,Ke=this.xAxis,Ie=Ke&&Ke.hasNames&&Ke.names,Fe=ze.data,je=this.xData;te=Be(te,!0);let Ze={series:this};this.pointClass.prototype.applyOptions.apply(Ze,[oe]);let Ce=Ze.x;if(He=je.length,this.requireSorting&&CeCe;)He--;this.updateParallelArrays(Ze,"splice",[He,0,0]),this.updateParallelArrays(Ze,He),Ie&&Ze.name&&(Ie[Ce]=Ze.name),Fe.splice(He,0,oe),(Le||this.processedData)&&(this.data.splice(He,0,null),this.processData()),ze.legendType==="point"&&this.generatePoints(),se&&(Qe[0]&&Qe[0].remove?Qe[0].remove(!1):(Qe.shift(),this.updateParallelArrays(Ze,"shift"),Fe.shift())),Ee!==!1&&ue(this,"addPoint",{point:Ze}),this.isDirty=!0,this.isDirtyData=!0,te&&rt.redraw(me)}removePoint(oe,te,se){let me=this,Ee=me.data,Le=Ee[oe],He=me.points,ze=me.chart,Qe=function(){He&&He.length===Ee.length&&He.splice(oe,1),Ee.splice(oe,1),me.options.data.splice(oe,1),me.updateParallelArrays(Le||{series:me},"splice",[oe,1]),Le&&Le.destroy(),me.isDirty=!0,me.isDirtyData=!0,te&&ze.redraw()};T(se,ze),te=Be(te,!0),Le?Le.firePointEvent("remove",null,Qe):Qe()}remove(oe,te,se,me){let Ee=this,Le=Ee.chart;function He(){Ee.destroy(me),Le.isDirtyLegend=Le.isDirtyBox=!0,Le.linkSeries(me),Be(oe,!0)&&Le.redraw(te)}se!==!1?ue(Ee,"remove",null,He):He()}update(oe,te){ue(this,"update",{options:oe=_e(oe,this.userOptions)});let se=this,me=se.chart,Ee=se.userOptions,Le=se.initialType||se.type,He=me.options.plotOptions,ze=ee[Le].prototype,Qe=se.finishedAnimating&&{animation:!1},rt={},Ke,Ie,Fe=["colorIndex","eventOptions","navigatorSeries","symbolIndex","baseSeries"],je=oe.type||Ee.type||me.options.chart.type,Ze=!(this.hasDerivedData||je&&je!==this.type||oe.pointStart!==void 0||oe.pointInterval!==void 0||oe.relativeXValue!==void 0||oe.joinBy||oe.mapData||["dataGrouping","pointStart","pointInterval","pointIntervalUnit","keys"].some(ce=>se.hasOptionChanged(ce)));je=je||Le,Ze&&(Fe.push("data","isDirtyData","isDirtyCanvas","points","processedData","processedXData","processedYData","xIncrement","cropped","_hasPointMarkers","hasDataLabels","nodes","layout","level","mapMap","mapData","minY","maxY","minX","maxX","transformGroups"),oe.visible!==!1&&Fe.push("area","graph"),se.parallelArrays.forEach(function(ce){Fe.push(ce+"Data")}),oe.data&&(oe.dataSorting&&ie(se.options.dataSorting,oe.dataSorting),this.setData(oe.data,!1))),oe=Ue(Ee,{index:Ee.index===void 0?se.index:Ee.index,pointStart:He?.series?.pointStart??Ee.pointStart??se.xData?.[0]},!Ze&&{data:se.options.data},oe,Qe),Ze&&oe.data&&(oe.data=se.options.data),(Fe=["group","markerGroup","dataLabelsGroup","transformGroup"].concat(Fe)).forEach(function(ce){Fe[ce]=se[ce],delete se[ce]});let Ce=!1;if(ee[je]){if(Ce=je!==se.type,se.remove(!1,!1,!1,!0),Ce)if(me.propFromSeries(),Object.setPrototypeOf)Object.setPrototypeOf(se,ee[je].prototype);else{let ce=Object.hasOwnProperty.call(se,"hcEvents")&&se.hcEvents;for(Ie in ze)se[Ie]=void 0;ie(se,ee[je].prototype),ce?se.hcEvents=ce:delete se.hcEvents}}else ae(17,!0,me,{missingModuleFor:je});if(Fe.forEach(function(ce){se[ce]=Fe[ce]}),se.init(me,oe),Ze&&this.points)for(let ce of((Ke=se.options).visible===!1?(rt.graphic=1,rt.dataLabel=1):(this.hasMarkerChanged(Ke,Ee)&&(rt.graphic=1),se.hasDataLabels?.()||(rt.dataLabel=1)),this.points))ce&&ce.series&&(ce.resolveColor(),Object.keys(rt).length&&ce.destroyElements(rt),Ke.showInLegend===!1&&ce.legendItem&&me.legend.destroyItem(ce));se.initialType=Le,me.linkSeries(),me.setSortedData(),Ce&&se.linkedSeries.length&&(se.isDirtyData=!0),ue(this,"afterUpdate"),Be(te,!0)&&me.redraw(!!Ze&&void 0)}setName(oe){this.name=this.options.name=this.userOptions.name=oe,this.chart.isDirtyLegend=!0}hasOptionChanged(oe){let te=this.chart,se=this.options[oe],me=te.options.plotOptions,Ee=this.userOptions[oe],Le=Be(me?.[this.type]?.[oe],me?.series?.[oe]);return Ee&&!we(Le)?se!==Ee:se!==Be(Le,se)}onMouseOver(){let oe=this.chart,te=oe.hoverSeries;oe.pointer?.setHoverChartIndex(),te&&te!==this&&te.onMouseOut(),this.options.events.mouseOver&&ue(this,"mouseOver"),this.setState("hover"),oe.hoverSeries=this}onMouseOut(){let oe=this.options,te=this.chart,se=te.tooltip,me=te.hoverPoint;te.hoverSeries=null,me&&me.onMouseOut(),this&&oe.events.mouseOut&&ue(this,"mouseOut"),se&&!this.stickyTracking&&(!se.shared||this.noSharedTooltip)&&se.hide(),te.series.forEach(function(Ee){Ee.setState("",!0)})}setState(oe,te){let se=this,me=se.options,Ee=se.graph,Le=me.inactiveOtherPoints,He=me.states,ze=Be(He[oe||"normal"]&&He[oe||"normal"].animation,se.chart.options.chart.animation),Qe=me.lineWidth,rt=me.opacity;if(oe=oe||"",se.state!==oe&&([se.group,se.markerGroup,se.dataLabelsGroup].forEach(function(Ke){Ke&&(se.state&&Ke.removeClass("highcharts-series-"+se.state),oe&&Ke.addClass("highcharts-series-"+oe))}),se.state=oe,!se.chart.styledMode)){if(He[oe]&&He[oe].enabled===!1)return;if(oe&&(Qe=He[oe].lineWidth||Qe+(He[oe].lineWidthPlus||0),rt=Be(He[oe].opacity,rt)),Ee&&!Ee.dashstyle&&We(Qe))for(let Ke of[Ee,...this.zones.map(Ie=>Ie.graph)])Ke?.animate({"stroke-width":Qe},ze);Le||[se.group,se.markerGroup,se.dataLabelsGroup,se.labelBySeries].forEach(function(Ke){Ke&&Ke.animate({opacity:rt},ze)})}te&&Le&&se.points&&se.setAllPointsToState(oe||void 0)}setAllPointsToState(oe){this.points.forEach(function(te){te.setState&&te.setState(oe)})}setVisible(oe,te){let se=this,me=se.chart,Ee=me.options.chart.ignoreHiddenSeries,Le=se.visible;se.visible=oe=se.options.visible=se.userOptions.visible=oe===void 0?!Le:oe;let He=oe?"show":"hide";["group","dataLabelsGroup","markerGroup","tracker","tt"].forEach(ze=>{se[ze]?.[He]()}),(me.hoverSeries===se||me.hoverPoint?.series===se)&&se.onMouseOut(),se.legendItem&&me.legend.colorizeItem(se,oe),se.isDirty=!0,se.options.stacking&&me.series.forEach(ze=>{ze.options.stacking&&ze.visible&&(ze.isDirty=!0)}),se.linkedSeries.forEach(ze=>{ze.setVisible(oe,!1)}),Ee&&(me.isDirtyBox=!0),ue(se,He),te!==!1&&me.redraw()}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}select(oe){this.selected=oe=this.options.selected=oe===void 0?!this.selected:oe,this.checkbox&&(this.checkbox.checked=oe),ue(this,oe?"select":"unselect")}shouldShowTooltip(oe,te,se={}){return se.series=this,se.visiblePlotOnly=!0,this.chart.isInsidePlot(oe,te,se)}drawLegendSymbol(oe,te){u[this.options.legendSymbol||"rectangle"]?.call(this,oe,te)}}return $e.defaultOptions=b,$e.types=x.seriesTypes,$e.registerType=x.registerSeriesType,ie($e.prototype,{axisTypes:["xAxis","yAxis"],coll:"series",colorCounter:0,directTouch:!1,invertible:!0,isCartesian:!0,kdAxisArray:["clientX","plotY"],parallelArrays:["x","y"],pointClass:g,requireSorting:!0,sorted:!0}),x.series=$e,$e}),n(r,"Core/Chart/Chart.js",[r["Core/Animation/AnimationUtilities.js"],r["Core/Axis/Axis.js"],r["Core/Defaults.js"],r["Core/Templating.js"],r["Core/Foundation.js"],r["Core/Globals.js"],r["Core/Renderer/RendererRegistry.js"],r["Core/Series/Series.js"],r["Core/Series/SeriesRegistry.js"],r["Core/Renderer/SVG/SVGRenderer.js"],r["Core/Time.js"],r["Core/Utilities.js"],r["Core/Renderer/HTML/AST.js"],r["Core/Axis/Tick.js"]],function(o,a,l,c,u,g,b,x,S,$,k,T,D,I){let{animate:O,animObject:N,setAnimation:ee}=o,{defaultOptions:ne,defaultTime:B}=l,{numberFormat:le}=c,{registerEventOptions:fe}=u,{charts:xe,doc:we,marginNames:he,svg:_e,win:ve}=g,{seriesTypes:ae}=S,{addEvent:ie,attr:pe,createElement:ue,css:ge,defined:ye,diffObjects:Ae,discardElement:Re,erase:We,error:Pe,extend:Ue,find:Oe,fireEvent:Be,getStyle:Ye,isArray:Se,isNumber:Te,isObject:$e,isString:Ve,merge:oe,objectEach:te,pick:se,pInt:me,relativeLength:Ee,removeEvent:Le,splat:He,syncTimeout:ze,uniqueKey:Qe}=T;class rt{static chart(Ie,Fe,je){return new rt(Ie,Fe,je)}constructor(Ie,Fe,je){this.sharedClips={};let Ze=[...arguments];(Ve(Ie)||Ie.nodeName)&&(this.renderTo=Ze.shift()),this.init(Ze[0],Ze[1])}setZoomOptions(){let Ie=this.options.chart,Fe=Ie.zooming;this.zooming={...Fe,type:se(Ie.zoomType,Fe.type),key:se(Ie.zoomKey,Fe.key),pinchType:se(Ie.pinchType,Fe.pinchType),singleTouch:se(Ie.zoomBySingleTouch,Fe.singleTouch,!1),resetButton:oe(Fe.resetButton,Ie.resetZoomButton)}}init(Ie,Fe){Be(this,"init",{args:arguments},function(){let je=oe(ne,Ie),Ze=je.chart;this.userOptions=Ue({},Ie),this.margin=[],this.spacing=[],this.labelCollectors=[],this.callback=Fe,this.isResizing=0,this.options=je,this.axes=[],this.series=[],this.time=Ie.time&&Object.keys(Ie.time).length?new k(Ie.time):g.time,this.numberFormatter=Ze.numberFormatter||le,this.styledMode=Ze.styledMode,this.hasCartesianSeries=Ze.showAxes,this.index=xe.length,xe.push(this),g.chartCount++,fe(this,Ze),this.xAxis=[],this.yAxis=[],this.pointCount=this.colorCounter=this.symbolCounter=0,this.setZoomOptions(),Be(this,"afterInit"),this.firstRender()})}initSeries(Ie){let Fe=this.options.chart,je=Ie.type||Fe.type,Ze=ae[je];Ze||Pe(17,!0,this,{missingModuleFor:je});let Ce=new Ze;return typeof Ce.init=="function"&&Ce.init(this,Ie),Ce}setSortedData(){this.getSeriesOrderByLinks().forEach(function(Ie){Ie.points||Ie.data||!Ie.enabledDataSorting||Ie.setData(Ie.options.data,!1)})}getSeriesOrderByLinks(){return this.series.concat().sort(function(Ie,Fe){return Ie.linkedSeries.length||Fe.linkedSeries.length?Fe.linkedSeries.length-Ie.linkedSeries.length:0})}orderItems(Ie,Fe=0){let je=this[Ie],Ze=this.options[Ie]=He(this.options[Ie]).slice(),Ce=this.userOptions[Ie]=this.userOptions[Ie]?He(this.userOptions[Ie]).slice():[];if(this.hasRendered&&(Ze.splice(Fe),Ce.splice(Fe)),je)for(let ce=Fe,de=je.length;ce=Math.max(qe+ce,vt.pos)&&Nt<=Math.min(qe+ce+pt.width,vt.pos+vt.len)||(Et.isInsidePlot=!1)}if(!je.ignoreY&&Et.isInsidePlot){let vt=!Ze&&je.axis&&!je.axis.isXAxis&&je.axis||lt&&(Ze?lt.xAxis:lt.yAxis)||{pos:de,len:1/0},Nt=je.paneCoordinates?vt.pos+St:de+St;Nt>=Math.max(nt+de,vt.pos)&&Nt<=Math.min(nt+de+pt.height,vt.pos+vt.len)||(Et.isInsidePlot=!1)}return Be(this,"afterIsInsidePlot",Et),Et.isInsidePlot}redraw(Ie){Be(this,"beforeRedraw");let Fe=this.hasCartesianSeries?this.axes:this.colorAxis||[],je=this.series,Ze=this.pointer,Ce=this.legend,ce=this.userOptions.legend,de=this.renderer,De=de.isHidden(),qe=[],nt,lt,pt,bt=this.isDirtyBox,St=this.isDirtyLegend,Et;for(de.rootFontSize=de.boxWrapper.getStyle("font-size"),this.setResponsive&&this.setResponsive(!1),ee(!!this.hasRendered&&Ie,this),De&&this.temporaryDisplay(),this.layOutTitles(!1),pt=je.length;pt--;)if(((Et=je[pt]).options.stacking||Et.options.centerInCategory)&&(lt=!0,Et.isDirty)){nt=!0;break}if(nt)for(pt=je.length;pt--;)(Et=je[pt]).options.stacking&&(Et.isDirty=!0);je.forEach(function(vt){vt.isDirty&&(vt.options.legendType==="point"?(typeof vt.updateTotals=="function"&&vt.updateTotals(),St=!0):ce&&(ce.labelFormatter||ce.labelFormat)&&(St=!0)),vt.isDirtyData&&Be(vt,"updatedData")}),St&&Ce&&Ce.options.enabled&&(Ce.render(),this.isDirtyLegend=!1),lt&&this.getStacks(),Fe.forEach(function(vt){vt.updateNames(),vt.setScale()}),this.getMargins(),Fe.forEach(function(vt){vt.isDirty&&(bt=!0)}),Fe.forEach(function(vt){let Nt=vt.min+","+vt.max;vt.extKey!==Nt&&(vt.extKey=Nt,qe.push(function(){Be(vt,"afterSetExtremes",Ue(vt.eventArgs,vt.getExtremes())),delete vt.eventArgs})),(bt||lt)&&vt.redraw()}),bt&&this.drawChartBox(),Be(this,"predraw"),je.forEach(function(vt){(bt||vt.isDirty)&&vt.visible&&vt.redraw(),vt.isDirtyData=!1}),Ze&&Ze.reset(!0),de.draw(),Be(this,"redraw"),Be(this,"render"),De&&this.temporaryDisplay(!0),qe.forEach(function(vt){vt.call()})}get(Ie){let Fe=this.series;function je(Ce){return Ce.id===Ie||Ce.options&&Ce.options.id===Ie}let Ze=Oe(this.axes,je)||Oe(this.series,je);for(let Ce=0;!Ze&&Ce(Fe.getPointsCollection().forEach(je=>{se(je.selectedStaging,je.selected)&&Ie.push(je)}),Ie),[])}getSelectedSeries(){return this.series.filter(function(Ie){return Ie.selected})}setTitle(Ie,Fe,je){this.applyDescription("title",Ie),this.applyDescription("subtitle",Fe),this.applyDescription("caption",void 0),this.layOutTitles(je)}applyDescription(Ie,Fe){let je=this,Ze=this.options[Ie]=oe(this.options[Ie],Fe),Ce=this[Ie];Ce&&Fe&&(this[Ie]=Ce=Ce.destroy()),Ze&&!Ce&&((Ce=this.renderer.text(Ze.text,0,0,Ze.useHTML).attr({align:Ze.align,class:"highcharts-"+Ie,zIndex:Ze.zIndex||4}).add()).update=function(ce,de){je.applyDescription(Ie,ce),je.layOutTitles(de)},this.styledMode||Ce.css(Ue(Ie==="title"?{fontSize:this.options.isStock?"1em":"1.2em"}:{},Ze.style)),this[Ie]=Ce)}layOutTitles(Ie=!0){let Fe=[0,0,0],je=this.renderer,Ze=this.spacingBox;["title","subtitle","caption"].forEach(function(ce){let de=this[ce],De=this.options[ce],qe=De.verticalAlign||"top",nt=ce==="title"?qe==="top"?-3:0:qe==="top"?Fe[0]+2:0;if(de){de.css({width:(De.width||Ze.width+(De.widthAdjust||0))+"px"});let lt=je.fontMetrics(de).b,pt=Math.round(de.getBBox(De.useHTML).height);de.align(Ue({y:qe==="bottom"?lt:nt+lt,height:pt},De),!1,"spacingBox"),De.floating||(qe==="top"?Fe[0]=Math.ceil(Fe[0]+pt):qe==="bottom"&&(Fe[2]=Math.ceil(Fe[2]+pt)))}},this),Fe[0]&&(this.options.title.verticalAlign||"top")==="top"&&(Fe[0]+=this.options.title.margin),Fe[2]&&this.options.caption.verticalAlign==="bottom"&&(Fe[2]+=this.options.caption.margin);let Ce=!this.titleOffset||this.titleOffset.join(",")!==Fe.join(",");this.titleOffset=Fe,Be(this,"afterLayOutTitles"),!this.isDirtyBox&&Ce&&(this.isDirtyBox=this.isDirtyLegend=Ce,this.hasRendered&&Ie&&this.isDirtyBox&&this.redraw())}getContainerBox(){return{width:Ye(this.renderTo,"width",!0)||0,height:Ye(this.renderTo,"height",!0)||0}}getChartSize(){let Ie=this.options.chart,Fe=Ie.width,je=Ie.height,Ze=this.getContainerBox();this.chartWidth=Math.max(0,Fe||Ze.width||600),this.chartHeight=Math.max(0,Ee(je,this.chartWidth)||(Ze.height>1?Ze.height:400)),this.containerBox=Ze}temporaryDisplay(Ie){let Fe=this.renderTo,je;if(Ie)for(;Fe&&Fe.style;)Fe.hcOrigStyle&&(ge(Fe,Fe.hcOrigStyle),delete Fe.hcOrigStyle),Fe.hcOrigDetached&&(we.body.removeChild(Fe),Fe.hcOrigDetached=!1),Fe=Fe.parentNode;else for(;Fe&&Fe.style&&(we.body.contains(Fe)||Fe.parentNode||(Fe.hcOrigDetached=!0,we.body.appendChild(Fe)),(Ye(Fe,"display",!1)==="none"||Fe.hcOricDetached)&&(Fe.hcOrigStyle={display:Fe.style.display,height:Fe.style.height,overflow:Fe.style.overflow},je={display:"block",overflow:"hidden"},Fe!==this.renderTo&&(je.height=0),ge(Fe,je),Fe.offsetWidth||Fe.style.setProperty("display","block","important")),(Fe=Fe.parentNode)!==we.body););}setClassName(Ie){this.container.className="highcharts-container "+(Ie||"")}getContainer(){let Ie=this.options,Fe=Ie.chart,je="data-highcharts-chart",Ze=Qe(),Ce,ce=this.renderTo;ce||(this.renderTo=ce=Fe.renderTo),Ve(ce)&&(this.renderTo=ce=we.getElementById(ce)),ce||Pe(13,!0,this);let de=me(pe(ce,je));Te(de)&&xe[de]&&xe[de].hasRendered&&xe[de].destroy(),pe(ce,je,this.index),ce.innerHTML=D.emptyHTML,Fe.skipClone||ce.offsetWidth||this.temporaryDisplay(),this.getChartSize();let De=this.chartHeight,qe=this.chartWidth;ge(ce,{overflow:"hidden"}),this.styledMode||(Ce=Ue({position:"relative",overflow:"hidden",width:qe+"px",height:De+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)",userSelect:"none","touch-action":"manipulation",outline:"none"},Fe.style||{}));let nt=ue("div",{id:Ze},Ce,ce);this.container=nt,this.getChartSize(),qe===this.chartWidth||(qe=this.chartWidth,this.styledMode||ge(nt,{width:se(Fe.style?.width,qe+"px")})),this.containerBox=this.getContainerBox(),this._cursor=nt.style.cursor;let lt=Fe.renderer||!_e?b.getRendererType(Fe.renderer):$;if(this.renderer=new lt(nt,qe,De,void 0,Fe.forExport,Ie.exporting&&Ie.exporting.allowHTML,this.styledMode),ee(void 0,this),this.setClassName(Fe.className),this.styledMode)for(let pt in Ie.defs)this.renderer.definition(Ie.defs[pt]);else this.renderer.setStyle(Fe.style);this.renderer.chartIndex=this.index,Be(this,"afterGetContainer")}getMargins(Ie){let{spacing:Fe,margin:je,titleOffset:Ze}=this;this.resetMargins(),Ze[0]&&!ye(je[0])&&(this.plotTop=Math.max(this.plotTop,Ze[0]+Fe[0])),Ze[2]&&!ye(je[2])&&(this.marginBottom=Math.max(this.marginBottom,Ze[2]+Fe[2])),this.legend&&this.legend.display&&this.legend.adjustMargins(je,Fe),Be(this,"getMargins"),Ie||this.getAxisMargins()}getAxisMargins(){let Ie=this,Fe=Ie.axisOffset=[0,0,0,0],je=Ie.colorAxis,Ze=Ie.margin,Ce=function(ce){ce.forEach(function(de){de.visible&&de.getOffset()})};Ie.hasCartesianSeries?Ce(Ie.axes):je&&je.length&&Ce(je),he.forEach(function(ce,de){ye(Ze[de])||(Ie[ce]+=Fe[de])}),Ie.setChartSize()}getOptions(){return Ae(this.userOptions,ne)}reflow(Ie){let Fe=this,je=Fe.containerBox,Ze=Fe.getContainerBox();delete Fe.pointer?.chartPosition,!Fe.isPrinting&&!Fe.isResizing&&je&&Ze.width&&((Ze.width!==je.width||Ze.height!==je.height)&&(T.clearTimeout(Fe.reflowTimeout),Fe.reflowTimeout=ze(function(){Fe.container&&Fe.setSize(void 0,void 0,!1)},Ie?100:0)),Fe.containerBox=Ze)}setReflow(){let Ie=this,Fe=je=>{Ie.options?.chart.reflow&&Ie.hasLoaded&&Ie.reflow(je)};if(typeof ResizeObserver=="function")new ResizeObserver(Fe).observe(Ie.renderTo);else{let je=ie(ve,"resize",Fe);ie(this,"destroy",je)}}setSize(Ie,Fe,je){let Ze=this,Ce=Ze.renderer;Ze.isResizing+=1,ee(je,Ze);let ce=Ce.globalAnimation;Ze.oldChartHeight=Ze.chartHeight,Ze.oldChartWidth=Ze.chartWidth,Ie!==void 0&&(Ze.options.chart.width=Ie),Fe!==void 0&&(Ze.options.chart.height=Fe),Ze.getChartSize();let{chartWidth:de,chartHeight:De,scrollablePixelsX:qe=0,scrollablePixelsY:nt=0}=Ze;(Ze.isDirtyBox||de!==Ze.oldChartWidth||De!==Ze.oldChartHeight)&&(Ze.styledMode||(ce?O:ge)(Ze.container,{width:`${de+qe}px`,height:`${De+nt}px`},ce),Ze.setChartSize(!0),Ce.setSize(de,De,ce),Ze.axes.forEach(function(lt){lt.isDirty=!0,lt.setScale()}),Ze.isDirtyLegend=!0,Ze.isDirtyBox=!0,Ze.layOutTitles(),Ze.getMargins(),Ze.redraw(ce),Ze.oldChartHeight=void 0,Be(Ze,"resize"),setTimeout(()=>{Ze&&Be(Ze,"endResize")},N(ce).duration)),Ze.isResizing-=1}setChartSize(Ie){let Fe,je,Ze,Ce,{chartHeight:ce,chartWidth:de,inverted:De,spacing:qe,renderer:nt}=this,lt=this.clipOffset,pt=Math[De?"floor":"round"];this.plotLeft=Fe=Math.round(this.plotLeft),this.plotTop=je=Math.round(this.plotTop),this.plotWidth=Ze=Math.max(0,Math.round(de-Fe-this.marginRight)),this.plotHeight=Ce=Math.max(0,Math.round(ce-je-this.marginBottom)),this.plotSizeX=De?Ce:Ze,this.plotSizeY=De?Ze:Ce,this.spacingBox=nt.spacingBox={x:qe[3],y:qe[0],width:de-qe[3]-qe[1],height:ce-qe[0]-qe[2]},this.plotBox=nt.plotBox={x:Fe,y:je,width:Ze,height:Ce},lt&&(this.clipBox={x:pt(lt[3]),y:pt(lt[0]),width:pt(this.plotSizeX-lt[1]-lt[3]),height:pt(this.plotSizeY-lt[0]-lt[2])}),Ie||(this.axes.forEach(function(bt){bt.setAxisSize(),bt.setAxisTranslation()}),nt.alignElements()),Be(this,"afterSetChartSize",{skipAxes:Ie})}resetMargins(){Be(this,"resetMargins");let Ie=this,Fe=Ie.options.chart,je=Fe.plotBorderWidth||0,Ze=je/2;["margin","spacing"].forEach(function(Ce){let ce=Fe[Ce],de=$e(ce)?ce:[ce,ce,ce,ce];["Top","Right","Bottom","Left"].forEach(function(De,qe){Ie[Ce][qe]=se(Fe[Ce+De],de[qe])})}),he.forEach(function(Ce,ce){Ie[Ce]=se(Ie.margin[ce],Ie.spacing[ce])}),Ie.axisOffset=[0,0,0,0],Ie.clipOffset=[Ze,Ze,Ze,Ze],Ie.plotBorderWidth=je}drawChartBox(){let Ie=this.options.chart,Fe=this.renderer,je=this.chartWidth,Ze=this.chartHeight,Ce=this.styledMode,ce=this.plotBGImage,de=Ie.backgroundColor,De=Ie.plotBackgroundColor,qe=Ie.plotBackgroundImage,nt=this.plotLeft,lt=this.plotTop,pt=this.plotWidth,bt=this.plotHeight,St=this.plotBox,Et=this.clipRect,vt=this.clipBox,Nt=this.chartBackground,Ft=this.plotBackground,qt=this.plotBorder,Zt,mr,nr,ur="animate";Nt||(this.chartBackground=Nt=Fe.rect().addClass("highcharts-background").add(),ur="attr"),Ce?Zt=mr=Nt.strokeWidth():(mr=(Zt=Ie.borderWidth||0)+(Ie.shadow?8:0),nr={fill:de||"none"},(Zt||Nt["stroke-width"])&&(nr.stroke=Ie.borderColor,nr["stroke-width"]=Zt),Nt.attr(nr).shadow(Ie.shadow)),Nt[ur]({x:mr/2,y:mr/2,width:je-mr-Zt%2,height:Ze-mr-Zt%2,r:Ie.borderRadius}),ur="animate",Ft||(ur="attr",this.plotBackground=Ft=Fe.rect().addClass("highcharts-plot-background").add()),Ft[ur](St),!Ce&&(Ft.attr({fill:De||"none"}).shadow(Ie.plotShadow),qe&&(ce?(qe!==ce.attr("href")&&ce.attr("href",qe),ce.animate(St)):this.plotBGImage=Fe.image(qe,nt,lt,pt,bt).add())),Et?Et.animate({width:vt.width,height:vt.height}):this.clipRect=Fe.clipRect(vt),ur="animate",qt||(ur="attr",this.plotBorder=qt=Fe.rect().addClass("highcharts-plot-border").attr({zIndex:1}).add()),Ce||qt.attr({stroke:Ie.plotBorderColor,"stroke-width":Ie.plotBorderWidth||0,fill:"none"}),qt[ur](qt.crisp({x:nt,y:lt,width:pt,height:bt},-qt.strokeWidth())),this.isDirtyBox=!1,Be(this,"afterDrawChartBox")}propFromSeries(){let Ie,Fe,je,Ze=this,Ce=Ze.options.chart,ce=Ze.options.series;["inverted","angular","polar"].forEach(function(de){for(Fe=ae[Ce.type],je=Ce[de]||Fe&&Fe.prototype[de],Ie=ce&&ce.length;!je&&Ie--;)(Fe=ae[ce[Ie].type])&&Fe.prototype[de]&&(je=!0);Ze[de]=je})}linkSeries(Ie){let Fe=this,je=Fe.series;je.forEach(function(Ze){Ze.linkedSeries.length=0}),je.forEach(function(Ze){let{linkedTo:Ce}=Ze.options;if(Ve(Ce)){let ce;(ce=Ce===":previous"?Fe.series[Ze.index-1]:Fe.get(Ce))&&ce.linkedParent!==Ze&&(ce.linkedSeries.push(Ze),Ze.linkedParent=ce,ce.enabledDataSorting&&Ze.setDataSortingOptions(),Ze.visible=se(Ze.options.visible,ce.options.visible,Ze.visible))}}),Be(this,"afterLinkSeries",{isUpdating:Ie})}renderSeries(){this.series.forEach(function(Ie){Ie.translate(),Ie.render()})}render(){let Ie=this.axes,Fe=this.colorAxis,je=this.renderer,Ze=this.options.chart.axisLayoutRuns||2,Ce=nt=>{nt.forEach(lt=>{lt.visible&<.render()})},ce=0,de=!0,De,qe=0;for(let nt of(this.setTitle(),Be(this,"beforeMargins"),this.getStacks?.(),this.getMargins(!0),this.setChartSize(),Ie)){let{options:lt}=nt,{labels:pt}=lt;if(this.hasCartesianSeries&&nt.horiz&&nt.visible&&pt.enabled&&nt.series.length&&nt.coll!=="colorAxis"&&!this.polar){ce=lt.tickLength,nt.createGroups();let bt=new I(nt,0,"",!0),St=bt.createLabel("x",pt);if(bt.destroy(),St&&se(pt.reserveSpace,!Te(lt.crossing))&&(ce=St.getBBox().height+pt.distance+Math.max(lt.offset||0,0)),ce){St?.destroy();break}}}for(this.plotHeight=Math.max(this.plotHeight-ce,0);(de||De||Ze>1)&&qe(qe?1:1.1),De=lt/this.plotHeight>(qe?1:1.05),qe++}this.drawChartBox(),this.hasCartesianSeries?Ce(Ie):Fe&&Fe.length&&Ce(Fe),this.seriesGroup||(this.seriesGroup=je.g("series-group").attr({zIndex:3}).shadow(this.options.chart.seriesGroupShadow).add()),this.renderSeries(),this.addCredits(),this.setResponsive&&this.setResponsive(),this.hasRendered=!0}addCredits(Ie){let Fe=this,je=oe(!0,this.options.credits,Ie);je.enabled&&!this.credits&&(this.credits=this.renderer.text(je.text+(this.mapCredits||""),0,0).addClass("highcharts-credits").on("click",function(){je.href&&(ve.location.href=je.href)}).attr({align:je.position.align,zIndex:8}),Fe.styledMode||this.credits.css(je.style),this.credits.add().align(je.position),this.credits.update=function(Ze){Fe.credits=Fe.credits.destroy(),Fe.addCredits(Ze)})}destroy(){let Ie,Fe=this,je=Fe.axes,Ze=Fe.series,Ce=Fe.container,ce=Ce&&Ce.parentNode;for(Be(Fe,"destroy"),Fe.renderer.forExport?We(xe,Fe):xe[Fe.index]=void 0,g.chartCount--,Fe.renderTo.removeAttribute("data-highcharts-chart"),Le(Fe),Ie=je.length;Ie--;)je[Ie]=je[Ie].destroy();for(this.scroller&&this.scroller.destroy&&this.scroller.destroy(),Ie=Ze.length;Ie--;)Ze[Ie]=Ze[Ie].destroy();["title","subtitle","chartBackground","plotBackground","plotBGImage","plotBorder","seriesGroup","clipRect","credits","pointer","rangeSelector","legend","resetZoomButton","tooltip","renderer"].forEach(function(de){let De=Fe[de];De&&De.destroy&&(Fe[de]=De.destroy())}),Ce&&(Ce.innerHTML=D.emptyHTML,Le(Ce),ce&&Re(Ce)),te(Fe,function(de,De){delete Fe[De]})}firstRender(){let Ie=this,Fe=Ie.options;Ie.getContainer(),Ie.resetMargins(),Ie.setChartSize(),Ie.propFromSeries(),Ie.getAxes();let je=Se(Fe.series)?Fe.series:[];Fe.series=[],je.forEach(function(Ze){Ie.initSeries(Ze)}),Ie.linkSeries(),Ie.setSortedData(),Be(Ie,"beforeRender"),Ie.render(),Ie.pointer?.getChartPosition(),Ie.renderer.imgCount||Ie.hasLoaded||Ie.onload(),Ie.temporaryDisplay(!0)}onload(){this.callbacks.concat([this.callback]).forEach(function(Ie){Ie&&this.index!==void 0&&Ie.apply(this,[this])},this),Be(this,"load"),Be(this,"render"),ye(this.index)&&this.setReflow(),this.warnIfA11yModuleNotLoaded(),this.hasLoaded=!0}warnIfA11yModuleNotLoaded(){let{options:Ie,title:Fe}=this;!Ie||this.accessibility||(this.renderer.boxWrapper.attr({role:"img","aria-label":(Fe&&Fe.element.textContent||"").replace(/this.transform({reset:!0,trigger:"zoom"}))}pan(Ie,Fe){let je=this,Ze=typeof Fe=="object"?Fe:{enabled:Fe,type:"x"},Ce=Ze.type,ce=Ce&&je[{x:"xAxis",xy:"axes",y:"yAxis"}[Ce]].filter(De=>De.options.panningEnabled&&!De.options.isInternal),de=je.options.chart;de?.panning&&(de.panning=Ze),Be(this,"pan",{originalEvent:Ie},()=>{je.transform({axes:ce,event:Ie,to:{x:Ie.chartX-(je.mouseDownX||0),y:Ie.chartY-(je.mouseDownY||0)},trigger:"pan"}),ge(je.container,{cursor:"move"})})}transform(Ie){let{axes:Fe=this.axes,event:je,from:Ze={},reset:Ce,selection:ce,to:de={},trigger:De}=Ie,{inverted:qe}=this,nt=!1,lt;for(let pt of(this.hoverPoints?.forEach(bt=>bt.setState()),Fe)){let{horiz:bt,len:St,minPointOffset:Et=0,options:vt,reversed:Nt}=pt,Ft=bt?"width":"height",qt=bt?"x":"y",Zt=se(de[Ft],pt.len),mr=se(Ze[Ft],pt.len),nr=10>Math.abs(Zt)?1:Zt/mr,ur=(Ze[qt]||0)+mr/2-pt.pos,Mr=ur-((de[qt]??pt.pos)+Zt/2-pt.pos)/nr,Pr=Nt&&!qe||!Nt&&qe?-1:1;if(!Ce&&(ur<0||ur>pt.len))continue;let fr=pt.toValue(Mr,!0)+(ce?0:Et*Pr),hr=pt.toValue(Mr+St/nr,!0)-(ce?0:Et*Pr||0),$r=pt.allExtremes;if(fr>hr&&([fr,hr]=[hr,fr]),nr===1&&!Ce&&pt.coll==="yAxis"&&!$r){for(let ci of pt.series){let nn=ci.getExtremes(ci.getProcessedData(!0).yData,!0);$r??($r={dataMin:Number.MAX_VALUE,dataMax:-Number.MAX_VALUE}),Te(nn.dataMin)&&Te(nn.dataMax)&&($r.dataMin=Math.min(nn.dataMin,$r.dataMin),$r.dataMax=Math.max(nn.dataMax,$r.dataMax))}pt.allExtremes=$r}let{dataMin:Bi,dataMax:li,min:Mn,max:Sr}=Ue(pt.getExtremes(),$r||{}),Lt=Bi??vt.min,On=li??vt.max,Ur=hr-fr,Dn=pt.categories?0:Math.min(Ur,On-Lt),tn=Lt-Dn*(ye(vt.min)?0:vt.minPadding),rn=On+Dn*(ye(vt.max)?0:vt.maxPadding),Nn=pt.allowZoomOutside||nr===1||De!=="zoom"&&nr>1,Ir=Math.min(vt.min??tn,tn,Nn?Mn:tn),qr=Math.max(vt.max??rn,rn,Nn?Sr:rn);(!pt.isOrdinal||nr!==1||Ce)&&(fr=1&&(hr=fr+Ur)),hr>qr&&(hr=qr,nr>=1&&(fr=hr-Ur)),(Ce||pt.series.length&&(fr!==Mn||hr!==Sr)&&fr>=Ir&&hr<=qr)&&(ce?ce[pt.coll].push({axis:pt,min:fr,max:hr}):(pt.isPanning=De!=="zoom",pt.setExtremes(Ce?void 0:fr,Ce?void 0:hr,!1,!1,{move:Mr,trigger:De,scale:nr}),!Ce&&(fr>Ir||hr{delete Ie.selection,Ie.trigger="zoom",this.transform(Ie)}):(lt&&!this.resetZoomButton?this.showResetZoom():!lt&&this.resetZoomButton&&(this.resetZoomButton=this.resetZoomButton.destroy()),this.redraw(De==="zoom"&&(this.options.chart.animation??this.pointCount<100)))),nt}}return Ue(rt.prototype,{callbacks:[],collectionsWithInit:{xAxis:[rt.prototype.addAxis,[!0]],yAxis:[rt.prototype.addAxis,[!1]],series:[rt.prototype.addSeries]},collectionsWithUpdate:["xAxis","yAxis","series"],propsRequireDirtyBox:["backgroundColor","borderColor","borderWidth","borderRadius","plotBackgroundColor","plotBackgroundImage","plotBorderColor","plotBorderWidth","plotShadow","shadow"],propsRequireReflow:["margin","marginTop","marginRight","marginBottom","marginLeft","spacing","spacingTop","spacingRight","spacingBottom","spacingLeft"],propsRequireUpdateSeries:["chart.inverted","chart.polar","chart.ignoreHiddenSeries","chart.type","colors","plotOptions","time","tooltip"]}),rt}),n(r,"Extensions/ScrollablePlotArea.js",[r["Core/Animation/AnimationUtilities.js"],r["Core/Globals.js"],r["Core/Renderer/RendererRegistry.js"],r["Core/Utilities.js"]],function(o,a,l,c){let{stop:u}=o,{composed:g}=a,{addEvent:b,createElement:x,css:S,defined:$,merge:k,pushUnique:T}=c;function D(){let N=this.scrollablePlotArea;(this.scrollablePixelsX||this.scrollablePixelsY)&&!N&&(this.scrollablePlotArea=N=new O(this)),N?.applyFixed()}function I(){this.chart.scrollablePlotArea&&(this.chart.scrollablePlotArea.isDirty=!0)}class O{static compose(ee,ne,B){T(g,this.compose)&&(b(ee,"afterInit",I),b(ne,"afterSetChartSize",le=>this.afterSetSize(le.target,le)),b(ne,"render",D),b(B,"show",I))}static afterSetSize(ee,ne){let B,le,fe,{minWidth:xe,minHeight:we}=ee.options.chart.scrollablePlotArea||{},{clipBox:he,plotBox:_e,inverted:ve,renderer:ae}=ee;if(!ae.forExport&&(xe?(ee.scrollablePixelsX=B=Math.max(0,xe-ee.chartWidth),B&&(ee.scrollablePlotBox=k(ee.plotBox),_e.width=ee.plotWidth+=B,he[ve?"height":"width"]+=B,fe=!0)):we&&(ee.scrollablePixelsY=le=Math.max(0,we-ee.chartHeight),$(le)&&(ee.scrollablePlotBox=k(ee.plotBox),_e.height=ee.plotHeight+=le,he[ve?"width":"height"]+=le,fe=!1)),$(fe)&&!ne.skipAxes))for(let ie of ee.axes)ie.horiz===fe&&(ie.setAxisSize(),ie.setAxisTranslation())}constructor(ee){let ne,B=ee.options.chart,le=l.getRendererType(),fe=B.scrollablePlotArea||{},xe=this.moveFixedElements.bind(this),we={WebkitOverflowScrolling:"touch",overflowX:"hidden",overflowY:"hidden"};ee.scrollablePixelsX&&(we.overflowX="auto"),ee.scrollablePixelsY&&(we.overflowY="auto"),this.chart=ee;let he=this.parentDiv=x("div",{className:"highcharts-scrolling-parent"},{position:"relative"},ee.renderTo),_e=this.scrollingContainer=x("div",{className:"highcharts-scrolling"},we,he),ve=this.innerContainer=x("div",{className:"highcharts-inner-container"},void 0,_e),ae=this.fixedDiv=x("div",{className:"highcharts-fixed"},{position:"absolute",overflow:"hidden",pointerEvents:"none",zIndex:(B.style?.zIndex||0)+2,top:0},void 0,!0),ie=this.fixedRenderer=new le(ae,ee.chartWidth,ee.chartHeight,B.style);this.mask=ie.path().attr({fill:B.backgroundColor||"#fff","fill-opacity":fe.opacity??.85,zIndex:-1}).addClass("highcharts-scrollable-mask").add(),_e.parentNode.insertBefore(ae,_e),S(ee.renderTo,{overflow:"visible"}),b(ee,"afterShowResetZoom",xe),b(ee,"afterApplyDrilldown",xe),b(ee,"afterLayOutTitles",xe),b(_e,"scroll",()=>{let{pointer:pe,hoverPoint:ue}=ee;pe&&(delete pe.chartPosition,ue&&(ne=ue),pe.runPointActions(void 0,ne,!0))}),ve.appendChild(ee.container)}applyFixed(){let{chart:ee,fixedRenderer:ne,isDirty:B,scrollingContainer:le}=this,{axisOffset:fe,chartWidth:xe,chartHeight:we,container:he,plotHeight:_e,plotLeft:ve,plotTop:ae,plotWidth:ie,scrollablePixelsX:pe=0,scrollablePixelsY:ue=0}=ee,{scrollPositionX:ge=0,scrollPositionY:ye=0}=ee.options.chart.scrollablePlotArea||{},Ae=xe+pe,Re=we+ue;ne.setSize(xe,we),(B??!0)&&(this.isDirty=!1,this.moveFixedElements()),u(ee.container),S(he,{width:`${Ae}px`,height:`${Re}px`}),ee.renderer.boxWrapper.attr({width:Ae,height:Re,viewBox:[0,0,Ae,Re].join(" ")}),ee.chartBackground?.attr({width:Ae,height:Re}),S(le,{width:`${xe}px`,height:`${we}px`}),$(B)||(le.scrollLeft=pe*ge,le.scrollTop=ue*ye);let We=ae-fe[0]-1,Pe=ve-fe[3]-1,Ue=ae+_e+fe[2]+1,Oe=ve+ie+fe[1]+1,Be=ve+ie-pe,Ye=ae+_e-ue,Se=[["M",0,0]];pe?Se=[["M",0,We],["L",ve-1,We],["L",ve-1,Ue],["L",0,Ue],["Z"],["M",Be,We],["L",xe,We],["L",xe,Ue],["L",Be,Ue],["Z"]]:ue&&(Se=[["M",Pe,0],["L",Pe,ae-1],["L",Oe,ae-1],["L",Oe,0],["Z"],["M",Pe,Ye],["L",Pe,we],["L",Oe,we],["L",Oe,Ye],["Z"]]),ee.redrawTrigger!=="adjustHeight"&&this.mask.attr({d:Se})}moveFixedElements(){let ee,{container:ne,inverted:B,scrollablePixelsX:le,scrollablePixelsY:fe}=this.chart,xe=this.fixedRenderer,we=O.fixedSelectors;for(let he of(le&&!B?ee=".highcharts-yaxis":le&&B||fe&&!B?ee=".highcharts-xaxis":fe&&B&&(ee=".highcharts-yaxis"),ee&&we.push(`${ee}:not(.highcharts-radial-axis)`,`${ee}-labels:not(.highcharts-radial-axis-labels)`),we))[].forEach.call(ne.querySelectorAll(he),_e=>{(_e.namespaceURI===xe.SVG_NS?xe.box:xe.box.parentNode).appendChild(_e),_e.style.pointerEvents="auto"})}}return O.fixedSelectors=[".highcharts-breadcrumbs-group",".highcharts-contextbutton",".highcharts-caption",".highcharts-credits",".highcharts-drillup-button",".highcharts-legend",".highcharts-legend-checkbox",".highcharts-navigator-series",".highcharts-navigator-xaxis",".highcharts-navigator-yaxis",".highcharts-navigator",".highcharts-range-selector-group",".highcharts-reset-zoom",".highcharts-scrollbar",".highcharts-subtitle",".highcharts-title"],O}),n(r,"Core/Axis/Stacking/StackItem.js",[r["Core/Templating.js"],r["Core/Series/SeriesRegistry.js"],r["Core/Utilities.js"]],function(o,a,l){let{format:c}=o,{series:u}=a,{destroyObjectProperties:g,fireEvent:b,isNumber:x,pick:S}=l;return class{constructor($,k,T,D,I){let O=$.chart.inverted,N=$.reversed;this.axis=$;let ee=this.isNegative=!!T!=!!N;this.options=k=k||{},this.x=D,this.total=null,this.cumulative=null,this.points={},this.hasValidPoints=!1,this.stack=I,this.leftCliff=0,this.rightCliff=0,this.alignOptions={align:k.align||(O?ee?"left":"right":"center"),verticalAlign:k.verticalAlign||(O?"middle":ee?"bottom":"top"),y:k.y,x:k.x},this.textAlign=k.textAlign||(O?ee?"right":"left":"center")}destroy(){g(this,this.axis)}render($){let k=this.axis.chart,T=this.options,D=T.format,I=D?c(D,this,k):T.formatter.call(this);if(this.label)this.label.attr({text:I,visibility:"hidden"});else{this.label=k.renderer.label(I,null,void 0,T.shape,void 0,void 0,T.useHTML,!1,"stack-labels");let O={r:T.borderRadius||0,text:I,padding:S(T.padding,5),visibility:"hidden"};k.styledMode||(O.fill=T.backgroundColor,O.stroke=T.borderColor,O["stroke-width"]=T.borderWidth,this.label.css(T.style||{})),this.label.attr(O),this.label.added||this.label.add($)}this.label.labelrank=k.plotSizeY,b(this,"afterRender")}setOffset($,k,T,D,I,O){let{alignOptions:N,axis:ee,label:ne,options:B,textAlign:le}=this,fe=ee.chart,xe=this.getStackBox({xOffset:$,width:k,boxBottom:T,boxTop:D,defaultX:I,xAxis:O}),{verticalAlign:we}=N;if(ne&&xe){let he=ne.getBBox(void 0,0),_e=ne.padding,ve=S(B.overflow,"justify")==="justify",ae;N.x=B.x||0,N.y=B.y||0;let{x:ie,y:pe}=this.adjustStackPosition({labelBox:he,verticalAlign:we,textAlign:le});xe.x-=ie,xe.y-=pe,ne.align(N,!1,xe),(ae=fe.isInsidePlot(ne.alignAttr.x+N.x+ie,ne.alignAttr.y+N.y+pe))||(ve=!1),ve&&u.prototype.justifyDataLabel.call(ee,ne,N,ne.alignAttr,he,xe),ne.attr({x:ne.alignAttr.x,y:ne.alignAttr.y,rotation:B.rotation,rotationOriginX:he.width*{left:0,center:.5,right:1}[B.textAlign||"center"],rotationOriginY:he.height/2}),S(!ve&&B.crop,!0)&&(ae=x(ne.x)&&x(ne.y)&&fe.isInsidePlot(ne.x-_e+(ne.width||0),ne.y)&&fe.isInsidePlot(ne.x+_e,ne.y)),ne[ae?"show":"hide"]()}b(this,"afterSetOffset",{xOffset:$,width:k})}adjustStackPosition({labelBox:$,verticalAlign:k,textAlign:T}){let D={bottom:0,middle:1,top:2,right:1,center:0,left:-1},I=D[k],O=D[T];return{x:$.width/2+$.width/2*O,y:$.height/2*I}}getStackBox($){let k=this.axis,T=k.chart,{boxTop:D,defaultX:I,xOffset:O,width:N,boxBottom:ee}=$,ne=k.stacking.usePercentage?100:S(D,this.total,0),B=k.toPixels(ne),le=$.xAxis||T.xAxis[0],fe=S(I,le.translate(this.x))+O,xe=Math.abs(B-k.toPixels(ee||x(k.min)&&k.logarithmic&&k.logarithmic.lin2log(k.min)||0)),we=T.inverted,he=this.isNegative;return we?{x:(he?B:B-xe)-T.plotLeft,y:le.height-fe-N,width:xe,height:N}:{x:fe+le.transB-T.plotLeft,y:(he?B-xe:B)-T.plotTop,width:N,height:xe}}}}),n(r,"Core/Axis/Stacking/StackingAxis.js",[r["Core/Animation/AnimationUtilities.js"],r["Core/Axis/Axis.js"],r["Core/Series/SeriesRegistry.js"],r["Core/Axis/Stacking/StackItem.js"],r["Core/Utilities.js"]],function(o,a,l,c,u){var g;let{getDeferredAnimation:b}=o,{series:{prototype:x}}=l,{addEvent:S,correctFloat:$,defined:k,destroyObjectProperties:T,fireEvent:D,isArray:I,isNumber:O,objectEach:N,pick:ee}=u;function ne(){let ae=this.inverted;this.axes.forEach(ie=>{ie.stacking&&ie.stacking.stacks&&ie.hasVisibleSeries&&(ie.stacking.oldStacks=ie.stacking.stacks)}),this.series.forEach(ie=>{let pe=ie.xAxis&&ie.xAxis.options||{};ie.options.stacking&&ie.reserveSpace()&&(ie.stackKey=[ie.type,ee(ie.options.stack,""),ae?pe.top:pe.left,ae?pe.height:pe.width].join(","))})}function B(){let ae=this.stacking;if(ae){let ie=ae.stacks;N(ie,(pe,ue)=>{T(pe),delete ie[ue]}),ae.stackTotalGroup?.destroy()}}function le(){this.stacking||(this.stacking=new ve(this))}function fe(ae,ie,pe,ue){return!k(ae)||ae.x!==ie||ue&&ae.stackKey!==ue?ae={x:ie,index:0,key:ue,stackKey:ue}:ae.index++,ae.key=[pe,ie,ae.index].join(","),ae}function xe(){let ae,ie=this,pe=ie.yAxis,ue=ie.stackKey||"",ge=pe.stacking.stacks,ye=ie.processedXData,Ae=ie.options.stacking,Re=ie[Ae+"Stacker"];Re&&[ue,"-"+ue].forEach(We=>{let Pe=ye.length,Ue,Oe,Be;for(;Pe--;)Ue=ye[Pe],ae=ie.getStackIndicator(ae,Ue,ie.index,We),Oe=ge[We]?.[Ue],(Be=Oe?.points[ae.key||""])&&Re.call(ie,Be,Oe,Pe)})}function we(ae,ie,pe){let ue=ie.total?100/ie.total:0;ae[0]=$(ae[0]*ue),ae[1]=$(ae[1]*ue),this.stackedYData[pe]=ae[1]}function he(ae){(this.is("column")||this.is("columnrange"))&&(this.options.centerInCategory&&!this.options.stacking&&this.chart.series.length>1?x.setStackedPoints.call(this,ae,"group"):ae.stacking.resetStacks())}function _e(ae,ie){let pe,ue,ge,ye,Ae,Re,We,Pe,Ue,Oe=ie||this.options.stacking;if(!Oe||!this.reserveSpace()||({group:"xAxis"}[Oe]||"yAxis")!==ae.coll)return;let Be=this.processedXData,Ye=this.processedYData,Se=[],Te=Ye.length,$e=this.options,Ve=$e.threshold||0,oe=$e.startFromThreshold?Ve:0,te=$e.stack,se=ie?`${this.type},${Oe}`:this.stackKey||"",me="-"+se,Ee=this.negStacks,Le=ae.stacking,He=Le.stacks,ze=Le.oldStacks;for(Le.stacksTouched+=1,We=0;We0&&this.singleStacks===!1&&(ge.points[Re][0]=ge.points[this.index+","+Pe+",0"][0])):(delete ge.points[Re],delete ge.points[this.index]);let Qe=ge.total||0;Oe==="percent"?(ye=ue?se:me,Qe=Ee&&He[ye]?.[Pe]?(ye=He[ye][Pe]).total=Math.max(ye.total||0,Qe)+Math.abs(Ue)||0:$(Qe+(Math.abs(Ue)||0))):Oe==="group"?(I(Ue)&&(Ue=Ue[0]),Ue!==null&&Qe++):Qe=$(Qe+(Ue||0)),Oe==="group"?ge.cumulative=(Qe||1)-1:ge.cumulative=$(ee(ge.cumulative,oe)+(Ue||0)),ge.total=Qe,Ue!==null&&(ge.points[Re].push(ge.cumulative),Se[We]=ge.cumulative,ge.hasValidPoints=!0)}Oe==="percent"&&(Le.usePercentage=!0),Oe!=="group"&&(this.stackedYData=Se),Le.oldStacks={}}class ve{constructor(ie){this.oldStacks={},this.stacks={},this.stacksTouched=0,this.axis=ie}buildStacks(){let ie,pe,ue=this.axis,ge=ue.series,ye=ue.coll==="xAxis",Ae=ue.options.reversedStacks,Re=ge.length;for(this.resetStacks(),this.usePercentage=!1,pe=Re;pe--;)ie=ge[Ae?pe:Re-pe-1],ye&&ie.setGroupedPoints(ue),ie.setStackedPoints(ue);if(!ye)for(pe=0;pe{N(ie,pe=>{pe.cumulative=pe.total})}))}resetStacks(){N(this.stacks,ie=>{N(ie,(pe,ue)=>{O(pe.touched)&&pe.touched{N(Re,We=>{We.render(Ae)})}),Ae.animate({opacity:1},ye)}}return(g||(g={})).compose=function(ae,ie,pe){let ue=ie.prototype,ge=pe.prototype;ue.getStacks||(S(ae,"init",le),S(ae,"destroy",B),ue.getStacks=ne,ge.getStackIndicator=fe,ge.modifyStacks=xe,ge.percentStacker=we,ge.setGroupedPoints=he,ge.setStackedPoints=_e)},g}),n(r,"Series/Line/LineSeries.js",[r["Core/Series/Series.js"],r["Core/Series/SeriesRegistry.js"],r["Core/Utilities.js"]],function(o,a,l){let{defined:c,merge:u,isObject:g}=l;class b extends o{drawGraph(){let S=this.options,$=(this.gappedPath||this.getGraphPath).call(this),k=this.chart.styledMode;[this,...this.zones].forEach((T,D)=>{let I,O=T.graph,N=O?"animate":"attr",ee=T.dashStyle||S.dashStyle;O?(O.endX=this.preventGraphAnimation?null:$.xMap,O.animate({d:$})):$.length&&(T.graph=O=this.chart.renderer.path($).addClass("highcharts-graph"+(D?` highcharts-zone-graph-${D-1} `:" ")+(D&&T.className||"")).attr({zIndex:1}).add(this.group)),O&&!k&&(I={stroke:!D&&S.lineColor||T.color||this.color||"#cccccc","stroke-width":S.lineWidth||0,fill:this.fillGraph&&this.color||"none"},ee?I.dashstyle=ee:S.linecap!=="square"&&(I["stroke-linecap"]=I["stroke-linejoin"]="round"),O[N](I).shadow(D<2&&S.shadow&&u({filterUnits:"userSpaceOnUse"},g(S.shadow)?S.shadow:{}))),O&&(O.startX=$.xMap,O.isArea=$.isArea)})}getGraphPath(S,$,k){let T=this,D=T.options,I=[],O=[],N,ee=D.step,ne=(S=S||T.points).reversed;return ne&&S.reverse(),(ee={right:1,center:2}[ee]||ee&&3)&&ne&&(ee=4-ee),(S=this.getValidPoints(S,!1,!(D.connectNulls&&!$&&!k))).forEach(function(B,le){let fe,xe=B.plotX,we=B.plotY,he=S[le-1],_e=B.isNull||typeof we!="number";(B.leftCliff||he&&he.rightCliff)&&!k&&(N=!0),_e&&!c($)&&le>0?N=!D.connectNulls:_e&&!$?N=!0:(le===0||N?fe=[["M",B.plotX,B.plotY]]:T.getPointSpline?fe=[T.getPointSpline(S,B,le)]:ee?(fe=ee===1?[["L",he.plotX,we]]:ee===2?[["L",(he.plotX+xe)/2,he.plotY],["L",(he.plotX+xe)/2,we]]:[["L",xe,he.plotY]]).push(["L",xe,we]):fe=[["L",xe,we]],O.push(B.x),ee&&(O.push(B.x),ee===2&&O.push(B.x)),I.push.apply(I,fe),N=!1)}),I.xMap=O,T.graphPath=I,I}}return b.defaultOptions=u(o.defaultOptions,{legendSymbol:"lineMarker"}),a.registerSeriesType("line",b),b}),n(r,"Series/Area/AreaSeriesDefaults.js",[],function(){return{threshold:0,legendSymbol:"areaMarker"}}),n(r,"Series/Area/AreaSeries.js",[r["Series/Area/AreaSeriesDefaults.js"],r["Core/Series/SeriesRegistry.js"],r["Core/Utilities.js"]],function(o,a,l){let{seriesTypes:{line:c}}=a,{extend:u,merge:g,objectEach:b,pick:x}=l;class S extends c{drawGraph(){this.areaPath=[],super.drawGraph.apply(this);let{areaPath:k,options:T}=this;[this,...this.zones].forEach((D,I)=>{let O={},N=D.fillColor||T.fillColor,ee=D.area,ne=ee?"animate":"attr";ee?(ee.endX=this.preventGraphAnimation?null:k.xMap,ee.animate({d:k})):(O.zIndex=0,(ee=D.area=this.chart.renderer.path(k).addClass("highcharts-area"+(I?` highcharts-zone-area-${I-1} `:" ")+(I&&D.className||"")).add(this.group)).isArea=!0),this.chart.styledMode||(O.fill=N||D.color||this.color,O["fill-opacity"]=N?1:T.fillOpacity??.75,ee.css({pointerEvents:this.stickyTracking?"none":"auto"})),ee[ne](O),ee.startX=k.xMap,ee.shiftUnit=T.step?2:1})}getGraphPath(k){let T,D,I,O=c.prototype.getGraphPath,N=this.options,ee=N.stacking,ne=this.yAxis,B=[],le=[],fe=this.index,xe=ne.stacking.stacks[this.stackKey],we=N.threshold,he=Math.round(ne.getThreshold(N.threshold)),_e=x(N.connectNulls,ee==="percent"),ve=function(ye,Ae,Re){let We=k[ye],Pe=ee&&xe[We.x].points[fe],Ue=We[Re+"Null"]||0,Oe=We[Re+"Cliff"]||0,Be,Ye,Se=!0;Oe||Ue?(Be=(Ue?Pe[0]:Pe[1])+Oe,Ye=Pe[0]+Oe,Se=!!Ue):!ee&&k[Ae]&&k[Ae].isNull&&(Be=Ye=we),Be!==void 0&&(le.push({plotX:T,plotY:Be===null?he:ne.getThreshold(Be),isNull:Se,isCliff:!0}),B.push({plotX:T,plotY:Ye===null?he:ne.getThreshold(Ye),doCurve:!1}))};k=k||this.points,ee&&(k=this.getStackPoints(k));for(let ye=0,Ae=k.length;yehe.visible);I.forEach(function(he,_e){let ve=0,ae,ie;if(ne[he]&&!ne[he].isNull)D.push(ne[he]),[-1,1].forEach(function(pe){let ue=pe===1?"rightNull":"leftNull",ge=ee[I[_e+pe]],ye=0;if(ge){let Ae=xe;for(;Ae>=0&&Ae