@devexperts/dxcharts-lite 2.0.2 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +1 -1
  2. package/dist/chart/__tests__/chart.test.d.ts +6 -0
  3. package/dist/chart/__tests__/chart.test.js +51 -0
  4. package/dist/chart/__tests__/env.d.ts +5 -0
  5. package/dist/chart/__tests__/env.js +28 -0
  6. package/dist/chart/bootstrap.js +2 -2
  7. package/dist/chart/chart.config.d.ts +4 -1
  8. package/dist/chart/chart.config.js +1 -1
  9. package/dist/chart/components/chart/chart-base.model.d.ts +1 -1
  10. package/dist/chart/components/chart/chart.component.js +13 -3
  11. package/dist/chart/components/chart/chart.model.d.ts +2 -2
  12. package/dist/chart/components/chart/chart.model.js +9 -7
  13. package/dist/chart/components/cross_tool/cross-tool.component.d.ts +2 -1
  14. package/dist/chart/components/cross_tool/cross-tool.component.js +4 -3
  15. package/dist/chart/components/cross_tool/cross-tool.model.js +1 -0
  16. package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.d.ts +3 -1
  17. package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.js +3 -2
  18. package/dist/chart/components/dynamic-objects/dynamic-objects.component.js +1 -1
  19. package/dist/chart/components/dynamic-objects/dynamic-objects.model.d.ts +30 -10
  20. package/dist/chart/components/dynamic-objects/dynamic-objects.model.js +119 -57
  21. package/dist/chart/components/grid/grid.drawer.js +3 -1
  22. package/dist/chart/components/pane/extent/y-extent-component.js +2 -1
  23. package/dist/chart/components/pane/pane-hit-test.controller.js +2 -2
  24. package/dist/chart/components/volumes/volumes.component.d.ts +3 -0
  25. package/dist/chart/components/volumes/volumes.component.js +21 -4
  26. package/dist/chart/components/volumes/volumes.model.d.ts +2 -0
  27. package/dist/chart/components/volumes/volumes.model.js +2 -0
  28. package/dist/chart/components/x_axis/x-axis.component.js +2 -2
  29. package/dist/chart/components/y_axis/label-color.functions.d.ts +2 -1
  30. package/dist/chart/components/y_axis/label-color.functions.js +17 -0
  31. package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.d.ts +2 -2
  32. package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.js +27 -25
  33. package/dist/chart/components/y_axis/price_labels/labels-positions-calculator.js +24 -13
  34. package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.d.ts +3 -3
  35. package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.js +58 -40
  36. package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.d.ts +3 -3
  37. package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.js +15 -13
  38. package/dist/chart/components/y_axis/y-axis-scale.handler.js +1 -1
  39. package/dist/chart/components/y_axis/y-axis.component.d.ts +2 -1
  40. package/dist/chart/components/y_axis/y-axis.component.js +6 -2
  41. package/dist/chart/drawers/ht-data-series.drawer.js +1 -1
  42. package/dist/chart/inputhandlers/cross-event-producer.component.js +2 -1
  43. package/dist/chart/inputhandlers/hover-producer.component.d.ts +1 -1
  44. package/dist/chart/inputhandlers/hover-producer.component.js +8 -8
  45. package/dist/chart/inputlisteners/canvas-input-listener.component.d.ts +12 -5
  46. package/dist/chart/inputlisteners/canvas-input-listener.component.js +74 -62
  47. package/dist/chart/model/candle-series.model.d.ts +1 -1
  48. package/dist/chart/model/candle-series.model.js +2 -2
  49. package/dist/chart/model/compare-series-hover.d.ts +2 -1
  50. package/dist/chart/model/compare-series-hover.js +1 -0
  51. package/dist/chart/model/data-series.model.d.ts +3 -2
  52. package/dist/chart/model/data-series.model.js +2 -1
  53. package/dist/chart/model/main-candle-series.model.d.ts +1 -1
  54. package/dist/chart/model/main-candle-series.model.js +2 -2
  55. package/dist/chart/model/scale.model.d.ts +2 -0
  56. package/dist/chart/model/scale.model.js +11 -2
  57. package/dist/chart/utils/dom.utils.d.ts +7 -0
  58. package/dist/chart/utils/dom.utils.js +12 -0
  59. package/dist/chart/utils/linkedList.utils.d.ts +3 -3
  60. package/dist/chart/utils/linkedList.utils.js +55 -57
  61. package/dist/dxchart.min.js +4 -4
  62. package/dist/index.d.ts +2 -1
  63. package/dist/index.js +2 -8
  64. package/package.json +10 -4
@@ -3,10 +3,10 @@
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
6
- (()=>{var mt=Math.pow;var ug;(()=>{var Ia={8168:(I,S,y)=>{const P=y(8874),L={};for(const g of Object.keys(P))L[P[g]]=g;const _={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};I.exports=_;for(const g of Object.keys(_)){if(!("channels"in _[g]))throw new Error("missing channels property: "+g);if(!("labels"in _[g]))throw new Error("missing channel labels property: "+g);if(_[g].labels.length!==_[g].channels)throw new Error("channel and label counts mismatch: "+g);const{channels:f,labels:u}=_[g];delete _[g].channels,delete _[g].labels,Object.defineProperty(_[g],"channels",{value:f}),Object.defineProperty(_[g],"labels",{value:u})}_.rgb.hsl=function(g){const f=g[0]/255,u=g[1]/255,m=g[2]/255,d=Math.min(f,u,m),w=Math.max(f,u,m),D=w-d;let E,b;w===d?E=0:f===w?E=(u-m)/D:u===w?E=2+(m-f)/D:m===w&&(E=4+(f-u)/D),E=Math.min(E*60,360),E<0&&(E+=360);const M=(d+w)/2;return w===d?b=0:M<=.5?b=D/(w+d):b=D/(2-w-d),[E,b*100,M*100]},_.rgb.hsv=function(g){let f,u,m,d,w;const D=g[0]/255,E=g[1]/255,b=g[2]/255,M=Math.max(D,E,b),T=M-Math.min(D,E,b),x=function(A){return(M-A)/6/T+1/2};return T===0?(d=0,w=0):(w=T/M,f=x(D),u=x(E),m=x(b),D===M?d=m-u:E===M?d=.3333333333333333+f-m:b===M&&(d=.6666666666666666+u-f),d<0?d+=1:d>1&&(d-=1)),[d*360,w*100,M*100]},_.rgb.hwb=function(g){const f=g[0],u=g[1];let m=g[2];const d=_.rgb.hsl(g)[0],w=1/255*Math.min(f,Math.min(u,m));return m=1-.00392156862745098*Math.max(f,Math.max(u,m)),[d,w*100,m*100]},_.rgb.cmyk=function(g){const f=g[0]/255,u=g[1]/255,m=g[2]/255,d=Math.min(1-f,1-u,1-m),w=(1-f-d)/(1-d)||0,D=(1-u-d)/(1-d)||0,E=(1-m-d)/(1-d)||0;return[w*100,D*100,E*100,d*100]};function N(g,f){return mt(g[0]-f[0],2)+mt(g[1]-f[1],2)+mt(g[2]-f[2],2)}_.rgb.keyword=function(g){const f=L[g];if(f)return f;let u=1/0,m;for(const d of Object.keys(P)){const w=P[d],D=N(g,w);D<u&&(u=D,m=d)}return m},_.keyword.rgb=function(g){return P[g]},_.rgb.xyz=function(g){let f=g[0]/255,u=g[1]/255,m=g[2]/255;f=f>.04045?mt((f+.055)/1.055,2.4):f/12.92,u=u>.04045?mt((u+.055)/1.055,2.4):u/12.92,m=m>.04045?mt((m+.055)/1.055,2.4):m/12.92;const d=f*.4124+u*.3576+m*.1805,w=f*.2126+u*.7152+m*.0722,D=f*.0193+u*.1192+m*.9505;return[d*100,w*100,D*100]},_.rgb.lab=function(g){const f=_.rgb.xyz(g);let u=f[0],m=f[1],d=f[2];u/=95.047,m/=100,d/=108.883,u=u>.008856?mt(u,.3333333333333333):7.787*u+.13793103448275862,m=m>.008856?mt(m,.3333333333333333):7.787*m+.13793103448275862,d=d>.008856?mt(d,.3333333333333333):7.787*d+.13793103448275862;const w=116*m-16,D=500*(u-m),E=200*(m-d);return[w,D,E]},_.hsl.rgb=function(g){const f=g[0]/360,u=g[1]/100,m=g[2]/100;let d,w,D;if(u===0)return D=m*255,[D,D,D];m<.5?d=m*(1+u):d=m+u-m*u;const E=2*m-d,b=[0,0,0];for(let M=0;M<3;M++)w=f+.3333333333333333*-(M-1),w<0&&w++,w>1&&w--,6*w<1?D=E+(d-E)*6*w:2*w<1?D=d:3*w<2?D=E+(d-E)*(.6666666666666666-w)*6:D=E,b[M]=D*255;return b},_.hsl.hsv=function(g){const f=g[0];let u=g[1]/100,m=g[2]/100,d=u;const w=Math.max(m,.01);m*=2,u*=m<=1?m:2-m,d*=w<=1?w:2-w;const D=(m+u)/2,E=m===0?2*d/(w+d):2*u/(m+u);return[f,E*100,D*100]},_.hsv.rgb=function(g){const f=g[0]/60,u=g[1]/100;let m=g[2]/100;const d=Math.floor(f)%6,w=f-Math.floor(f),D=255*m*(1-u),E=255*m*(1-u*w),b=255*m*(1-u*(1-w));switch(m*=255,d){case 0:return[m,b,D];case 1:return[E,m,D];case 2:return[D,m,b];case 3:return[D,E,m];case 4:return[b,D,m];case 5:return[m,D,E]}},_.hsv.hsl=function(g){const f=g[0],u=g[1]/100,m=g[2]/100,d=Math.max(m,.01);let w,D;D=(2-u)*m;const E=(2-u)*d;return w=u*d,w/=E<=1?E:2-E,w=w||0,D/=2,[f,w*100,D*100]},_.hwb.rgb=function(g){const f=g[0]/360;let u=g[1]/100,m=g[2]/100;const d=u+m;let w;d>1&&(u/=d,m/=d);const D=Math.floor(6*f),E=1-m;w=6*f-D,D&1&&(w=1-w);const b=u+w*(E-u);let M,T,x;switch(D){default:case 6:case 0:M=E,T=b,x=u;break;case 1:M=b,T=E,x=u;break;case 2:M=u,T=E,x=b;break;case 3:M=u,T=b,x=E;break;case 4:M=b,T=u,x=E;break;case 5:M=E,T=u,x=b;break}return[M*255,T*255,x*255]},_.cmyk.rgb=function(g){const f=g[0]/100,u=g[1]/100,m=g[2]/100,d=g[3]/100,w=1-Math.min(1,f*(1-d)+d),D=1-Math.min(1,u*(1-d)+d),E=1-Math.min(1,m*(1-d)+d);return[w*255,D*255,E*255]},_.xyz.rgb=function(g){const f=g[0]/100,u=g[1]/100,m=g[2]/100;let d,w,D;return d=f*3.2406+u*-1.5372+m*-.4986,w=f*-.9689+u*1.8758+m*.0415,D=f*.0557+u*-.204+m*1.057,d=d>.0031308?1.055*mt(d,.4166666666666667)-.055:d*12.92,w=w>.0031308?1.055*mt(w,.4166666666666667)-.055:w*12.92,D=D>.0031308?1.055*mt(D,.4166666666666667)-.055:D*12.92,d=Math.min(Math.max(0,d),1),w=Math.min(Math.max(0,w),1),D=Math.min(Math.max(0,D),1),[d*255,w*255,D*255]},_.xyz.lab=function(g){let f=g[0],u=g[1],m=g[2];f/=95.047,u/=100,m/=108.883,f=f>.008856?mt(f,.3333333333333333):7.787*f+.13793103448275862,u=u>.008856?mt(u,.3333333333333333):7.787*u+.13793103448275862,m=m>.008856?mt(m,.3333333333333333):7.787*m+.13793103448275862;const d=116*u-16,w=500*(f-u),D=200*(u-m);return[d,w,D]},_.lab.xyz=function(g){const f=g[0],u=g[1],m=g[2];let d,w,D;w=(f+16)/116,d=u/500+w,D=w-m/200;const E=mt(w,3),b=mt(d,3),M=mt(D,3);return w=E>.008856?E:(w-.13793103448275862)/7.787,d=b>.008856?b:(d-.13793103448275862)/7.787,D=M>.008856?M:(D-.13793103448275862)/7.787,d*=95.047,w*=100,D*=108.883,[d,w,D]},_.lab.lch=function(g){const f=g[0],u=g[1],m=g[2];let d;d=Math.atan2(m,u)*360/2/Math.PI,d<0&&(d+=360);const D=Math.sqrt(u*u+m*m);return[f,D,d]},_.lch.lab=function(g){const f=g[0],u=g[1],d=g[2]/360*2*Math.PI,w=u*Math.cos(d),D=u*Math.sin(d);return[f,w,D]},_.rgb.ansi16=function(g,f=null){const[u,m,d]=g;let w=f===null?_.rgb.hsv(g)[2]:f;if(w=Math.round(w/50),w===0)return 30;let D=30+(Math.round(d/255)<<2|Math.round(m/255)<<1|Math.round(u/255));return w===2&&(D+=60),D},_.hsv.ansi16=function(g){return _.rgb.ansi16(_.hsv.rgb(g),g[2])},_.rgb.ansi256=function(g){const f=g[0],u=g[1],m=g[2];return f===u&&u===m?f<8?16:f>248?231:Math.round((f-8)/247*24)+232:16+36*Math.round(f/255*5)+6*Math.round(u/255*5)+Math.round(m/255*5)},_.ansi16.rgb=function(g){let f=g%10;if(f===0||f===7)return g>50&&(f+=3.5),f=f/10.5*255,[f,f,f];const u=(~~(g>50)+1)*.5,m=(f&1)*u*255,d=(f>>1&1)*u*255,w=(f>>2&1)*u*255;return[m,d,w]},_.ansi256.rgb=function(g){if(g>=232){const w=(g-232)*10+8;return[w,w,w]}g-=16;let f;const u=Math.floor(g/36)/5*255,m=Math.floor((f=g%36)/6)/5*255,d=f%6/5*255;return[u,m,d]},_.rgb.hex=function(g){const u=(((Math.round(g[0])&255)<<16)+((Math.round(g[1])&255)<<8)+(Math.round(g[2])&255)).toString(16).toUpperCase();return"000000".substring(u.length)+u},_.hex.rgb=function(g){const f=g.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!f)return[0,0,0];let u=f[0];f[0].length===3&&(u=u.split("").map(E=>E+E).join(""));const m=parseInt(u,16),d=m>>16&255,w=m>>8&255,D=m&255;return[d,w,D]},_.rgb.hcg=function(g){const f=g[0]/255,u=g[1]/255,m=g[2]/255,d=Math.max(Math.max(f,u),m),w=Math.min(Math.min(f,u),m),D=d-w;let E,b;return D<1?E=w/(1-D):E=0,D<=0?b=0:d===f?b=(u-m)/D%6:d===u?b=2+(m-f)/D:b=4+(f-u)/D,b/=6,b%=1,[b*360,D*100,E*100]},_.hsl.hcg=function(g){const f=g[1]/100,u=g[2]/100,m=u<.5?2*f*u:2*f*(1-u);let d=0;return m<1&&(d=(u-.5*m)/(1-m)),[g[0],m*100,d*100]},_.hsv.hcg=function(g){const f=g[1]/100,u=g[2]/100,m=f*u;let d=0;return m<1&&(d=(u-m)/(1-m)),[g[0],m*100,d*100]},_.hcg.rgb=function(g){const f=g[0]/360,u=g[1]/100,m=g[2]/100;if(u===0)return[m*255,m*255,m*255];const d=[0,0,0],w=f%1*6,D=w%1,E=1-D;let b=0;switch(Math.floor(w)){case 0:d[0]=1,d[1]=D,d[2]=0;break;case 1:d[0]=E,d[1]=1,d[2]=0;break;case 2:d[0]=0,d[1]=1,d[2]=D;break;case 3:d[0]=0,d[1]=E,d[2]=1;break;case 4:d[0]=D,d[1]=0,d[2]=1;break;default:d[0]=1,d[1]=0,d[2]=E}return b=(1-u)*m,[(u*d[0]+b)*255,(u*d[1]+b)*255,(u*d[2]+b)*255]},_.hcg.hsv=function(g){const f=g[1]/100,u=g[2]/100,m=f+u*(1-f);let d=0;return m>0&&(d=f/m),[g[0],d*100,m*100]},_.hcg.hsl=function(g){const f=g[1]/100,m=g[2]/100*(1-f)+.5*f;let d=0;return m>0&&m<.5?d=f/(2*m):m>=.5&&m<1&&(d=f/(2*(1-m))),[g[0],d*100,m*100]},_.hcg.hwb=function(g){const f=g[1]/100,u=g[2]/100,m=f+u*(1-f);return[g[0],(m-f)*100,(1-m)*100]},_.hwb.hcg=function(g){const f=g[1]/100,m=1-g[2]/100,d=m-f;let w=0;return d<1&&(w=(m-d)/(1-d)),[g[0],d*100,w*100]},_.apple.rgb=function(g){return[g[0]/65535*255,g[1]/65535*255,g[2]/65535*255]},_.rgb.apple=function(g){return[g[0]/255*65535,g[1]/255*65535,g[2]/255*65535]},_.gray.rgb=function(g){return[g[0]/100*255,g[0]/100*255,g[0]/100*255]},_.gray.hsl=function(g){return[0,0,g[0]]},_.gray.hsv=_.gray.hsl,_.gray.hwb=function(g){return[0,100,g[0]]},_.gray.cmyk=function(g){return[0,0,0,g[0]]},_.gray.lab=function(g){return[g[0],0,0]},_.gray.hex=function(g){const f=Math.round(g[0]/100*255)&255,m=((f<<16)+(f<<8)+f).toString(16).toUpperCase();return"000000".substring(m.length)+m},_.rgb.gray=function(g){return[(g[0]+g[1]+g[2])/3/255*100]}},2085:(I,S,y)=>{const P=y(8168),L=y(4111),_={},N=Object.keys(P);function g(u){const m=function(...d){const w=d[0];return w==null?w:(w.length>1&&(d=w),u(d))};return"conversion"in u&&(m.conversion=u.conversion),m}function f(u){const m=function(...d){const w=d[0];if(w==null)return w;w.length>1&&(d=w);const D=u(d);if(typeof D=="object")for(let E=D.length,b=0;b<E;b++)D[b]=Math.round(D[b]);return D};return"conversion"in u&&(m.conversion=u.conversion),m}N.forEach(u=>{_[u]={},Object.defineProperty(_[u],"channels",{value:P[u].channels}),Object.defineProperty(_[u],"labels",{value:P[u].labels});const m=L(u);Object.keys(m).forEach(w=>{const D=m[w];_[u][w]=f(D),_[u][w].raw=g(D)})}),I.exports=_},4111:(I,S,y)=>{const P=y(8168);function L(){const f={},u=Object.keys(P);for(let m=u.length,d=0;d<m;d++)f[u[d]]={distance:-1,parent:null};return f}function _(f){const u=L(),m=[f];for(u[f].distance=0;m.length;){const d=m.pop(),w=Object.keys(P[d]);for(let D=w.length,E=0;E<D;E++){const b=w[E],M=u[b];M.distance===-1&&(M.distance=u[d].distance+1,M.parent=d,m.unshift(b))}}return u}function N(f,u){return function(m){return u(f(m))}}function g(f,u){const m=[u[f].parent,f];let d=P[u[f].parent][f],w=u[f].parent;for(;u[w].parent;)m.unshift(u[w].parent),d=N(P[u[w].parent][w],d),w=u[w].parent;return d.conversion=m,d}I.exports=function(f){const u=_(f),m={},d=Object.keys(u);for(let w=d.length,D=0;D<w;D++){const E=d[D];u[E].parent!==null&&(m[E]=g(E,u))}return m}},8874:I=>{"use strict";I.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9818:(I,S,y)=>{var P=y(8874),L=y(6851),_=Object.hasOwnProperty,N=Object.create(null);for(var g in P)_.call(P,g)&&(N[P[g]]=g);var f=I.exports={to:{},get:{}};f.get=function(d){var w=d.substring(0,3).toLowerCase(),D,E;switch(w){case"hsl":D=f.get.hsl(d),E="hsl";break;case"hwb":D=f.get.hwb(d),E="hwb";break;default:D=f.get.rgb(d),E="rgb";break}return D?{model:E,value:D}:null},f.get.rgb=function(d){if(!d)return null;var w=/^#([a-f0-9]{3,4})$/i,D=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,E=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,b=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,M=/^(\w+)$/,T=[0,0,0,1],x,A,R;if(x=d.match(D)){for(R=x[2],x=x[1],A=0;A<3;A++){var F=A*2;T[A]=parseInt(x.slice(F,F+2),16)}R&&(T[3]=parseInt(R,16)/255)}else if(x=d.match(w)){for(x=x[1],R=x[3],A=0;A<3;A++)T[A]=parseInt(x[A]+x[A],16);R&&(T[3]=parseInt(R+R,16)/255)}else if(x=d.match(E)){for(A=0;A<3;A++)T[A]=parseInt(x[A+1],0);x[4]&&(x[5]?T[3]=parseFloat(x[4])*.01:T[3]=parseFloat(x[4]))}else if(x=d.match(b)){for(A=0;A<3;A++)T[A]=Math.round(parseFloat(x[A+1])*2.55);x[4]&&(x[5]?T[3]=parseFloat(x[4])*.01:T[3]=parseFloat(x[4]))}else return(x=d.match(M))?x[1]==="transparent"?[0,0,0,0]:_.call(P,x[1])?(T=P[x[1]],T[3]=1,T):null:null;for(A=0;A<3;A++)T[A]=u(T[A],0,255);return T[3]=u(T[3],0,1),T},f.get.hsl=function(d){if(!d)return null;var w=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,D=d.match(w);if(D){var E=parseFloat(D[4]),b=(parseFloat(D[1])%360+360)%360,M=u(parseFloat(D[2]),0,100),T=u(parseFloat(D[3]),0,100),x=u(isNaN(E)?1:E,0,1);return[b,M,T,x]}return null},f.get.hwb=function(d){if(!d)return null;var w=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,D=d.match(w);if(D){var E=parseFloat(D[4]),b=(parseFloat(D[1])%360+360)%360,M=u(parseFloat(D[2]),0,100),T=u(parseFloat(D[3]),0,100),x=u(isNaN(E)?1:E,0,1);return[b,M,T,x]}return null},f.to.hex=function(){var d=L(arguments);return"#"+m(d[0])+m(d[1])+m(d[2])+(d[3]<1?m(Math.round(d[3]*255)):"")},f.to.rgb=function(){var d=L(arguments);return d.length<4||d[3]===1?"rgb("+Math.round(d[0])+", "+Math.round(d[1])+", "+Math.round(d[2])+")":"rgba("+Math.round(d[0])+", "+Math.round(d[1])+", "+Math.round(d[2])+", "+d[3]+")"},f.to.rgb.percent=function(){var d=L(arguments),w=Math.round(d[0]/255*100),D=Math.round(d[1]/255*100),E=Math.round(d[2]/255*100);return d.length<4||d[3]===1?"rgb("+w+"%, "+D+"%, "+E+"%)":"rgba("+w+"%, "+D+"%, "+E+"%, "+d[3]+")"},f.to.hsl=function(){var d=L(arguments);return d.length<4||d[3]===1?"hsl("+d[0]+", "+d[1]+"%, "+d[2]+"%)":"hsla("+d[0]+", "+d[1]+"%, "+d[2]+"%, "+d[3]+")"},f.to.hwb=function(){var d=L(arguments),w="";return d.length>=4&&d[3]!==1&&(w=", "+d[3]),"hwb("+d[0]+", "+d[1]+"%, "+d[2]+"%"+w+")"},f.to.keyword=function(d){return N[d.slice(0,3)]};function u(d,w,D){return Math.min(Math.max(w,d),D)}function m(d){var w=Math.round(d).toString(16).toUpperCase();return w.length<2?"0"+w:w}},6767:(I,S,y)=>{const P=y(9818),L=y(2085),_=["keyword","gray","hex"],N={};for(const b of Object.keys(L))N[[...L[b].labels].sort().join("")]=b;const g={};function f(b,M){if(!(this instanceof f))return new f(b,M);if(M&&M in _&&(M=null),M&&!(M in L))throw new Error("Unknown model: "+M);let T,x;if(b==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(b instanceof f)this.model=b.model,this.color=[...b.color],this.valpha=b.valpha;else if(typeof b=="string"){const A=P.get(b);if(A===null)throw new Error("Unable to parse color from string: "+b);this.model=A.model,x=L[this.model].channels,this.color=A.value.slice(0,x),this.valpha=typeof A.value[x]=="number"?A.value[x]:1}else if(b.length>0){this.model=M||"rgb",x=L[this.model].channels;const A=Array.prototype.slice.call(b,0,x);this.color=E(A,x),this.valpha=typeof b[x]=="number"?b[x]:1}else if(typeof b=="number")this.model="rgb",this.color=[b>>16&255,b>>8&255,b&255],this.valpha=1;else{this.valpha=1;const A=Object.keys(b);"alpha"in b&&(A.splice(A.indexOf("alpha"),1),this.valpha=typeof b.alpha=="number"?b.alpha:0);const R=A.sort().join("");if(!(R in N))throw new Error("Unable to parse color from object: "+JSON.stringify(b));this.model=N[R];const{labels:F}=L[this.model],j=[];for(T=0;T<F.length;T++)j.push(b[F[T]]);this.color=E(j)}if(g[this.model])for(x=L[this.model].channels,T=0;T<x;T++){const A=g[this.model][T];A&&(this.color[T]=A(this.color[T]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}f.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(b){let M=this.model in P.to?this:this.rgb();M=M.round(typeof b=="number"?b:1);const T=M.valpha===1?M.color:[...M.color,this.valpha];return P.to[M.model](T)},percentString(b){const M=this.rgb().round(typeof b=="number"?b:1),T=M.valpha===1?M.color:[...M.color,this.valpha];return P.to.rgb.percent(T)},array(){return this.valpha===1?[...this.color]:[...this.color,this.valpha]},object(){const b={},{channels:M}=L[this.model],{labels:T}=L[this.model];for(let x=0;x<M;x++)b[T[x]]=this.color[x];return this.valpha!==1&&(b.alpha=this.valpha),b},unitArray(){const b=this.rgb().color;return b[0]/=255,b[1]/=255,b[2]/=255,this.valpha!==1&&b.push(this.valpha),b},unitObject(){const b=this.rgb().object();return b.r/=255,b.g/=255,b.b/=255,this.valpha!==1&&(b.alpha=this.valpha),b},round(b){return b=Math.max(b||0,0),new f([...this.color.map(m(b)),this.valpha],this.model)},alpha(b){return b!==void 0?new f([...this.color,Math.max(0,Math.min(1,b))],this.model):this.valpha},red:d("rgb",0,w(255)),green:d("rgb",1,w(255)),blue:d("rgb",2,w(255)),hue:d(["hsl","hsv","hsl","hwb","hcg"],0,b=>(b%360+360)%360),saturationl:d("hsl",1,w(100)),lightness:d("hsl",2,w(100)),saturationv:d("hsv",1,w(100)),value:d("hsv",2,w(100)),chroma:d("hcg",1,w(100)),gray:d("hcg",2,w(100)),white:d("hwb",1,w(100)),wblack:d("hwb",2,w(100)),cyan:d("cmyk",0,w(100)),magenta:d("cmyk",1,w(100)),yellow:d("cmyk",2,w(100)),black:d("cmyk",3,w(100)),x:d("xyz",0,w(95.047)),y:d("xyz",1,w(100)),z:d("xyz",2,w(108.833)),l:d("lab",0,w(100)),a:d("lab",1),b:d("lab",2),keyword(b){return b!==void 0?new f(b):L[this.model].keyword(this.color)},hex(b){return b!==void 0?new f(b):P.to.hex(this.rgb().round().color)},hexa(b){if(b!==void 0)return new f(b);const M=this.rgb().round().color;let T=Math.round(this.valpha*255).toString(16).toUpperCase();return T.length===1&&(T="0"+T),P.to.hex(M)+T},rgbNumber(){const b=this.rgb().color;return(b[0]&255)<<16|(b[1]&255)<<8|b[2]&255},luminosity(){const b=this.rgb().color,M=[];for(const[T,x]of b.entries()){const A=x/255;M[T]=A<=.04045?A/12.92:mt((A+.055)/1.055,2.4)}return .2126*M[0]+.7152*M[1]+.0722*M[2]},contrast(b){const M=this.luminosity(),T=b.luminosity();return M>T?(M+.05)/(T+.05):(T+.05)/(M+.05)},level(b){const M=this.contrast(b);return M>=7?"AAA":M>=4.5?"AA":""},isDark(){const b=this.rgb().color;return(b[0]*2126+b[1]*7152+b[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const b=this.rgb();for(let M=0;M<3;M++)b.color[M]=255-b.color[M];return b},lighten(b){const M=this.hsl();return M.color[2]+=M.color[2]*b,M},darken(b){const M=this.hsl();return M.color[2]-=M.color[2]*b,M},saturate(b){const M=this.hsl();return M.color[1]+=M.color[1]*b,M},desaturate(b){const M=this.hsl();return M.color[1]-=M.color[1]*b,M},whiten(b){const M=this.hwb();return M.color[1]+=M.color[1]*b,M},blacken(b){const M=this.hwb();return M.color[2]+=M.color[2]*b,M},grayscale(){const b=this.rgb().color,M=b[0]*.3+b[1]*.59+b[2]*.11;return f.rgb(M,M,M)},fade(b){return this.alpha(this.valpha-this.valpha*b)},opaquer(b){return this.alpha(this.valpha+this.valpha*b)},rotate(b){const M=this.hsl();let T=M.color[0];return T=(T+b)%360,T=T<0?360+T:T,M.color[0]=T,M},mix(b,M){if(!b||!b.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof b);const T=b.rgb(),x=this.rgb(),A=M===void 0?.5:M,R=2*A-1,F=T.alpha()-x.alpha(),j=((R*F===-1?R:(R+F)/(1+R*F))+1)/2,G=1-j;return f.rgb(j*T.red()+G*x.red(),j*T.green()+G*x.green(),j*T.blue()+G*x.blue(),T.alpha()*A+x.alpha()*(1-A))}};for(const b of Object.keys(L)){if(_.includes(b))continue;const{channels:M}=L[b];f.prototype[b]=function(...T){return this.model===b?new f(this):T.length>0?new f(T,b):new f([...D(L[this.model][b].raw(this.color)),this.valpha],b)},f[b]=function(...T){let x=T[0];return typeof x=="number"&&(x=E(T,M)),new f(x,b)}}function u(b,M){return Number(b.toFixed(M))}function m(b){return function(M){return u(M,b)}}function d(b,M,T){b=Array.isArray(b)?b:[b];for(const x of b)(g[x]||(g[x]=[]))[M]=T;return b=b[0],function(x){let A;return x!==void 0?(T&&(x=T(x)),A=this[b](),A.color[M]=x,A):(A=this[b]().color[M],T&&(A=T(A)),A)}}function w(b){return function(M){return Math.max(0,Math.min(b,M))}}function D(b){return Array.isArray(b)?b:[b]}function E(b,M){for(let T=0;T<M;T++)typeof b[T]!="number"&&(b[T]=0);return b}I.exports=f},7394:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P,L){for(var _=P<0?"-":"",N=Math.abs(P).toString();N.length<L;)N="0"+N;return _+N}I.exports=S.default},8609:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P,L){if(P==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var _ in L)Object.prototype.hasOwnProperty.call(L,_)&&(P[_]=L[_]);return P}I.exports=S.default},6420:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=_;var L=P(y(8609));function _(N){return(0,L.default)({},N)}I.exports=S.default},7561:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var L=P(y(2512)),_=L.default;S.default=_,I.exports=S.default},8729:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.getDefaultOptions=P,S.setDefaultOptions=L;var y={};function P(){return y}function L(_){y=_}},7100:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var L=P(y(1603)),_=P(y(1354)),N=P(y(1370)),g=P(y(623)),f=P(y(6226)),u=P(y(7394)),m=P(y(2699)),d={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},w={G:function(x,A,R){var F=x.getUTCFullYear()>0?1:0;switch(A){case"G":case"GG":case"GGG":return R.era(F,{width:"abbreviated"});case"GGGGG":return R.era(F,{width:"narrow"});case"GGGG":default:return R.era(F,{width:"wide"})}},y:function(x,A,R){if(A==="yo"){var F=x.getUTCFullYear(),j=F>0?F:1-F;return R.ordinalNumber(j,{unit:"year"})}return m.default.y(x,A)},Y:function(x,A,R,F){var j=(0,f.default)(x,F),G=j>0?j:1-j;if(A==="YY"){var et=G%100;return(0,u.default)(et,2)}return A==="Yo"?R.ordinalNumber(G,{unit:"year"}):(0,u.default)(G,A.length)},R:function(x,A){var R=(0,N.default)(x);return(0,u.default)(R,A.length)},u:function(x,A){var R=x.getUTCFullYear();return(0,u.default)(R,A.length)},Q:function(x,A,R){var F=Math.ceil((x.getUTCMonth()+1)/3);switch(A){case"Q":return String(F);case"QQ":return(0,u.default)(F,2);case"Qo":return R.ordinalNumber(F,{unit:"quarter"});case"QQQ":return R.quarter(F,{width:"abbreviated",context:"formatting"});case"QQQQQ":return R.quarter(F,{width:"narrow",context:"formatting"});case"QQQQ":default:return R.quarter(F,{width:"wide",context:"formatting"})}},q:function(x,A,R){var F=Math.ceil((x.getUTCMonth()+1)/3);switch(A){case"q":return String(F);case"qq":return(0,u.default)(F,2);case"qo":return R.ordinalNumber(F,{unit:"quarter"});case"qqq":return R.quarter(F,{width:"abbreviated",context:"standalone"});case"qqqqq":return R.quarter(F,{width:"narrow",context:"standalone"});case"qqqq":default:return R.quarter(F,{width:"wide",context:"standalone"})}},M:function(x,A,R){var F=x.getUTCMonth();switch(A){case"M":case"MM":return m.default.M(x,A);case"Mo":return R.ordinalNumber(F+1,{unit:"month"});case"MMM":return R.month(F,{width:"abbreviated",context:"formatting"});case"MMMMM":return R.month(F,{width:"narrow",context:"formatting"});case"MMMM":default:return R.month(F,{width:"wide",context:"formatting"})}},L:function(x,A,R){var F=x.getUTCMonth();switch(A){case"L":return String(F+1);case"LL":return(0,u.default)(F+1,2);case"Lo":return R.ordinalNumber(F+1,{unit:"month"});case"LLL":return R.month(F,{width:"abbreviated",context:"standalone"});case"LLLLL":return R.month(F,{width:"narrow",context:"standalone"});case"LLLL":default:return R.month(F,{width:"wide",context:"standalone"})}},w:function(x,A,R,F){var j=(0,g.default)(x,F);return A==="wo"?R.ordinalNumber(j,{unit:"week"}):(0,u.default)(j,A.length)},I:function(x,A,R){var F=(0,_.default)(x);return A==="Io"?R.ordinalNumber(F,{unit:"week"}):(0,u.default)(F,A.length)},d:function(x,A,R){return A==="do"?R.ordinalNumber(x.getUTCDate(),{unit:"date"}):m.default.d(x,A)},D:function(x,A,R){var F=(0,L.default)(x);return A==="Do"?R.ordinalNumber(F,{unit:"dayOfYear"}):(0,u.default)(F,A.length)},E:function(x,A,R){var F=x.getUTCDay();switch(A){case"E":case"EE":case"EEE":return R.day(F,{width:"abbreviated",context:"formatting"});case"EEEEE":return R.day(F,{width:"narrow",context:"formatting"});case"EEEEEE":return R.day(F,{width:"short",context:"formatting"});case"EEEE":default:return R.day(F,{width:"wide",context:"formatting"})}},e:function(x,A,R,F){var j=x.getUTCDay(),G=(j-F.weekStartsOn+8)%7||7;switch(A){case"e":return String(G);case"ee":return(0,u.default)(G,2);case"eo":return R.ordinalNumber(G,{unit:"day"});case"eee":return R.day(j,{width:"abbreviated",context:"formatting"});case"eeeee":return R.day(j,{width:"narrow",context:"formatting"});case"eeeeee":return R.day(j,{width:"short",context:"formatting"});case"eeee":default:return R.day(j,{width:"wide",context:"formatting"})}},c:function(x,A,R,F){var j=x.getUTCDay(),G=(j-F.weekStartsOn+8)%7||7;switch(A){case"c":return String(G);case"cc":return(0,u.default)(G,A.length);case"co":return R.ordinalNumber(G,{unit:"day"});case"ccc":return R.day(j,{width:"abbreviated",context:"standalone"});case"ccccc":return R.day(j,{width:"narrow",context:"standalone"});case"cccccc":return R.day(j,{width:"short",context:"standalone"});case"cccc":default:return R.day(j,{width:"wide",context:"standalone"})}},i:function(x,A,R){var F=x.getUTCDay(),j=F===0?7:F;switch(A){case"i":return String(j);case"ii":return(0,u.default)(j,A.length);case"io":return R.ordinalNumber(j,{unit:"day"});case"iii":return R.day(F,{width:"abbreviated",context:"formatting"});case"iiiii":return R.day(F,{width:"narrow",context:"formatting"});case"iiiiii":return R.day(F,{width:"short",context:"formatting"});case"iiii":default:return R.day(F,{width:"wide",context:"formatting"})}},a:function(x,A,R){var F=x.getUTCHours(),j=F/12>=1?"pm":"am";switch(A){case"a":case"aa":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"});case"aaa":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return R.dayPeriod(j,{width:"narrow",context:"formatting"});case"aaaa":default:return R.dayPeriod(j,{width:"wide",context:"formatting"})}},b:function(x,A,R){var F=x.getUTCHours(),j;switch(F===12?j=d.noon:F===0?j=d.midnight:j=F/12>=1?"pm":"am",A){case"b":case"bb":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"});case"bbb":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return R.dayPeriod(j,{width:"narrow",context:"formatting"});case"bbbb":default:return R.dayPeriod(j,{width:"wide",context:"formatting"})}},B:function(x,A,R){var F=x.getUTCHours(),j;switch(F>=17?j=d.evening:F>=12?j=d.afternoon:F>=4?j=d.morning:j=d.night,A){case"B":case"BB":case"BBB":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"});case"BBBBB":return R.dayPeriod(j,{width:"narrow",context:"formatting"});case"BBBB":default:return R.dayPeriod(j,{width:"wide",context:"formatting"})}},h:function(x,A,R){if(A==="ho"){var F=x.getUTCHours()%12;return F===0&&(F=12),R.ordinalNumber(F,{unit:"hour"})}return m.default.h(x,A)},H:function(x,A,R){return A==="Ho"?R.ordinalNumber(x.getUTCHours(),{unit:"hour"}):m.default.H(x,A)},K:function(x,A,R){var F=x.getUTCHours()%12;return A==="Ko"?R.ordinalNumber(F,{unit:"hour"}):(0,u.default)(F,A.length)},k:function(x,A,R){var F=x.getUTCHours();return F===0&&(F=24),A==="ko"?R.ordinalNumber(F,{unit:"hour"}):(0,u.default)(F,A.length)},m:function(x,A,R){return A==="mo"?R.ordinalNumber(x.getUTCMinutes(),{unit:"minute"}):m.default.m(x,A)},s:function(x,A,R){return A==="so"?R.ordinalNumber(x.getUTCSeconds(),{unit:"second"}):m.default.s(x,A)},S:function(x,A){return m.default.S(x,A)},X:function(x,A,R,F){var j=F._originalDate||x,G=j.getTimezoneOffset();if(G===0)return"Z";switch(A){case"X":return E(G);case"XXXX":case"XX":return b(G);case"XXXXX":case"XXX":default:return b(G,":")}},x:function(x,A,R,F){var j=F._originalDate||x,G=j.getTimezoneOffset();switch(A){case"x":return E(G);case"xxxx":case"xx":return b(G);case"xxxxx":case"xxx":default:return b(G,":")}},O:function(x,A,R,F){var j=F._originalDate||x,G=j.getTimezoneOffset();switch(A){case"O":case"OO":case"OOO":return"GMT"+D(G,":");case"OOOO":default:return"GMT"+b(G,":")}},z:function(x,A,R,F){var j=F._originalDate||x,G=j.getTimezoneOffset();switch(A){case"z":case"zz":case"zzz":return"GMT"+D(G,":");case"zzzz":default:return"GMT"+b(G,":")}},t:function(x,A,R,F){var j=F._originalDate||x,G=Math.floor(j.getTime()/1e3);return(0,u.default)(G,A.length)},T:function(x,A,R,F){var j=F._originalDate||x,G=j.getTime();return(0,u.default)(G,A.length)}};function D(T,x){var A=T>0?"-":"+",R=Math.abs(T),F=Math.floor(R/60),j=R%60;if(j===0)return A+String(F);var G=x||"";return A+String(F)+G+(0,u.default)(j,2)}function E(T,x){if(T%60===0){var A=T>0?"-":"+";return A+(0,u.default)(Math.abs(T)/60,2)}return b(T,x)}function b(T,x){var A=x||"",R=T>0?"-":"+",F=Math.abs(T),j=(0,u.default)(Math.floor(F/60),2),G=(0,u.default)(F%60,2);return R+j+A+G}var M=w;S.default=M,I.exports=S.default},2699:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var L=P(y(7394)),_={y:function(f,u){var m=f.getUTCFullYear(),d=m>0?m:1-m;return(0,L.default)(u==="yy"?d%100:d,u.length)},M:function(f,u){var m=f.getUTCMonth();return u==="M"?String(m+1):(0,L.default)(m+1,2)},d:function(f,u){return(0,L.default)(f.getUTCDate(),u.length)},a:function(f,u){var m=f.getUTCHours()/12>=1?"pm":"am";switch(u){case"a":case"aa":return m.toUpperCase();case"aaa":return m;case"aaaaa":return m[0];case"aaaa":default:return m==="am"?"a.m.":"p.m."}},h:function(f,u){return(0,L.default)(f.getUTCHours()%12||12,u.length)},H:function(f,u){return(0,L.default)(f.getUTCHours(),u.length)},m:function(f,u){return(0,L.default)(f.getUTCMinutes(),u.length)},s:function(f,u){return(0,L.default)(f.getUTCSeconds(),u.length)},S:function(f,u){var m=u.length,d=f.getUTCMilliseconds(),w=Math.floor(d*Math.pow(10,m-3));return(0,L.default)(w,u.length)}},N=_;S.default=N,I.exports=S.default},5209:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var y=function(f,u){switch(f){case"P":return u.date({width:"short"});case"PP":return u.date({width:"medium"});case"PPP":return u.date({width:"long"});case"PPPP":default:return u.date({width:"full"})}},P=function(f,u){switch(f){case"p":return u.time({width:"short"});case"pp":return u.time({width:"medium"});case"ppp":return u.time({width:"long"});case"pppp":default:return u.time({width:"full"})}},L=function(f,u){var m=f.match(/(P+)(p+)?/)||[],d=m[1],w=m[2];if(!w)return y(f,u);var D;switch(d){case"P":D=u.dateTime({width:"short"});break;case"PP":D=u.dateTime({width:"medium"});break;case"PPP":D=u.dateTime({width:"long"});break;case"PPPP":default:D=u.dateTime({width:"full"});break}return D.replace("{{date}}",y(d,u)).replace("{{time}}",P(w,u))},_={p:P,P:L},N=_;S.default=N,I.exports=S.default},3561:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){var L=new Date(Date.UTC(P.getFullYear(),P.getMonth(),P.getDate(),P.getHours(),P.getMinutes(),P.getSeconds(),P.getMilliseconds()));return L.setUTCFullYear(P.getFullYear()),P.getTime()-L.getTime()}I.exports=S.default},1603:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=g;var L=P(y(1171)),_=P(y(8734)),N=864e5;function g(f){(0,_.default)(1,arguments);var u=(0,L.default)(f),m=u.getTime();u.setUTCMonth(0,1),u.setUTCHours(0,0,0,0);var d=u.getTime(),w=m-d;return Math.floor(w/N)+1}I.exports=S.default},1354:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var L=P(y(1171)),_=P(y(79)),N=P(y(4275)),g=P(y(8734)),f=6048e5;function u(m){(0,g.default)(1,arguments);var d=(0,L.default)(m),w=(0,_.default)(d).getTime()-(0,N.default)(d).getTime();return Math.round(w/f)+1}I.exports=S.default},1370:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=g;var L=P(y(1171)),_=P(y(8734)),N=P(y(79));function g(f){(0,_.default)(1,arguments);var u=(0,L.default)(f),m=u.getUTCFullYear(),d=new Date(0);d.setUTCFullYear(m+1,0,4),d.setUTCHours(0,0,0,0);var w=(0,N.default)(d),D=new Date(0);D.setUTCFullYear(m,0,4),D.setUTCHours(0,0,0,0);var E=(0,N.default)(D);return u.getTime()>=w.getTime()?m+1:u.getTime()>=E.getTime()?m:m-1}I.exports=S.default},623:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var L=P(y(1171)),_=P(y(9209)),N=P(y(4118)),g=P(y(8734)),f=6048e5;function u(m,d){(0,g.default)(1,arguments);var w=(0,L.default)(m),D=(0,_.default)(w,d).getTime()-(0,N.default)(w,d).getTime();return Math.round(D/f)+1}I.exports=S.default},6226:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var L=P(y(1171)),_=P(y(8734)),N=P(y(9209)),g=P(y(2084)),f=y(8729);function u(m,d){var w,D,E,b,M,T,x,A;(0,_.default)(1,arguments);var R=(0,L.default)(m),F=R.getUTCFullYear(),j=(0,f.getDefaultOptions)(),G=(0,g.default)((w=(D=(E=(b=d==null?void 0:d.firstWeekContainsDate)!==null&&b!==void 0?b:d==null||(M=d.locale)===null||M===void 0||(T=M.options)===null||T===void 0?void 0:T.firstWeekContainsDate)!==null&&E!==void 0?E:j.firstWeekContainsDate)!==null&&D!==void 0?D:(x=j.locale)===null||x===void 0||(A=x.options)===null||A===void 0?void 0:A.firstWeekContainsDate)!==null&&w!==void 0?w:1);if(!(G>=1&&G<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var et=new Date(0);et.setUTCFullYear(F+1,0,G),et.setUTCHours(0,0,0,0);var $=(0,N.default)(et,d),X=new Date(0);X.setUTCFullYear(F,0,G),X.setUTCHours(0,0,0,0);var W=(0,N.default)(X,d);return R.getTime()>=$.getTime()?F+1:R.getTime()>=W.getTime()?F:F-1}I.exports=S.default},6736:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.isProtectedDayOfYearToken=L,S.isProtectedWeekYearToken=_,S.throwProtectedError=N;var y=["D","DD"],P=["YY","YYYY"];function L(g){return y.indexOf(g)!==-1}function _(g){return P.indexOf(g)!==-1}function N(g,f,u){if(g==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(f,"`) for formatting years to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(g==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(f,"`) for formatting years to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(g==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(f,"`) for formatting days of the month to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(g==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(f,"`) for formatting days of the month to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}},8734:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P,L){if(L.length<P)throw new TypeError(P+" argument"+(P>1?"s":"")+" required, but only "+L.length+" present")}I.exports=S.default},79:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=N;var L=P(y(1171)),_=P(y(8734));function N(g){(0,_.default)(1,arguments);var f=1,u=(0,L.default)(g),m=u.getUTCDay(),d=(m<f?7:0)+m-f;return u.setUTCDate(u.getUTCDate()-d),u.setUTCHours(0,0,0,0),u}I.exports=S.default},4275:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=g;var L=P(y(1370)),_=P(y(79)),N=P(y(8734));function g(f){(0,N.default)(1,arguments);var u=(0,L.default)(f),m=new Date(0);m.setUTCFullYear(u,0,4),m.setUTCHours(0,0,0,0);var d=(0,_.default)(m);return d}I.exports=S.default},9209:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=f;var L=P(y(1171)),_=P(y(8734)),N=P(y(2084)),g=y(8729);function f(u,m){var d,w,D,E,b,M,T,x;(0,_.default)(1,arguments);var A=(0,g.getDefaultOptions)(),R=(0,N.default)((d=(w=(D=(E=m==null?void 0:m.weekStartsOn)!==null&&E!==void 0?E:m==null||(b=m.locale)===null||b===void 0||(M=b.options)===null||M===void 0?void 0:M.weekStartsOn)!==null&&D!==void 0?D:A.weekStartsOn)!==null&&w!==void 0?w:(T=A.locale)===null||T===void 0||(x=T.options)===null||x===void 0?void 0:x.weekStartsOn)!==null&&d!==void 0?d:0);if(!(R>=0&&R<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var F=(0,L.default)(u),j=F.getUTCDay(),G=(j<R?7:0)+j-R;return F.setUTCDate(F.getUTCDate()-G),F.setUTCHours(0,0,0,0),F}I.exports=S.default},4118:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var L=P(y(6226)),_=P(y(8734)),N=P(y(9209)),g=P(y(2084)),f=y(8729);function u(m,d){var w,D,E,b,M,T,x,A;(0,_.default)(1,arguments);var R=(0,f.getDefaultOptions)(),F=(0,g.default)((w=(D=(E=(b=d==null?void 0:d.firstWeekContainsDate)!==null&&b!==void 0?b:d==null||(M=d.locale)===null||M===void 0||(T=M.options)===null||T===void 0?void 0:T.firstWeekContainsDate)!==null&&E!==void 0?E:R.firstWeekContainsDate)!==null&&D!==void 0?D:(x=R.locale)===null||x===void 0||(A=x.options)===null||A===void 0?void 0:A.firstWeekContainsDate)!==null&&w!==void 0?w:1),j=(0,L.default)(m,d),G=new Date(0);G.setUTCFullYear(j,0,F),G.setUTCHours(0,0,0,0);var et=(0,N.default)(G,d);return et}I.exports=S.default},2084:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){if(P===null||P===!0||P===!1)return NaN;var L=Number(P);return isNaN(L)?L:L<0?Math.ceil(L):Math.floor(L)}I.exports=S.default},5065:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=g;var L=P(y(2084)),_=P(y(1171)),N=P(y(8734));function g(f,u){(0,N.default)(2,arguments);var m=(0,_.default)(f).getTime(),d=(0,L.default)(u);return new Date(m+d)}I.exports=S.default},5616:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=R;var L=P(y(9989)),_=P(y(3239)),N=P(y(1171)),g=P(y(7100)),f=P(y(5209)),u=P(y(3561)),m=y(6736),d=P(y(2084)),w=P(y(8734)),D=y(8729),E=P(y(7561)),b=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,M=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,T=/^'([^]*?)'?$/,x=/''/g,A=/[a-zA-Z]/;function R(j,G,et){var $,X,W,q,it,ft,xt,At,Ct,jt,Dt,Et,Ut,oe,xe,Pe,Oe,Le;(0,w.default)(2,arguments);var Mn=String(G),Jt=(0,D.getDefaultOptions)(),Ot=($=(X=et==null?void 0:et.locale)!==null&&X!==void 0?X:Jt.locale)!==null&&$!==void 0?$:E.default,le=(0,d.default)((W=(q=(it=(ft=et==null?void 0:et.firstWeekContainsDate)!==null&&ft!==void 0?ft:et==null||(xt=et.locale)===null||xt===void 0||(At=xt.options)===null||At===void 0?void 0:At.firstWeekContainsDate)!==null&&it!==void 0?it:Jt.firstWeekContainsDate)!==null&&q!==void 0?q:(Ct=Jt.locale)===null||Ct===void 0||(jt=Ct.options)===null||jt===void 0?void 0:jt.firstWeekContainsDate)!==null&&W!==void 0?W:1);if(!(le>=1&&le<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var Ie=(0,d.default)((Dt=(Et=(Ut=(oe=et==null?void 0:et.weekStartsOn)!==null&&oe!==void 0?oe:et==null||(xe=et.locale)===null||xe===void 0||(Pe=xe.options)===null||Pe===void 0?void 0:Pe.weekStartsOn)!==null&&Ut!==void 0?Ut:Jt.weekStartsOn)!==null&&Et!==void 0?Et:(Oe=Jt.locale)===null||Oe===void 0||(Le=Oe.options)===null||Le===void 0?void 0:Le.weekStartsOn)!==null&&Dt!==void 0?Dt:0);if(!(Ie>=0&&Ie<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!Ot.localize)throw new RangeError("locale must contain localize property");if(!Ot.formatLong)throw new RangeError("locale must contain formatLong property");var ce=(0,N.default)(j);if(!(0,L.default)(ce))throw new RangeError("Invalid time value");var _n=(0,u.default)(ce),Be=(0,_.default)(ce,_n),An={firstWeekContainsDate:le,weekStartsOn:Ie,locale:Ot,_originalDate:ce},me=Mn.match(M).map(function(bt){var Xt=bt[0];if(Xt==="p"||Xt==="P"){var he=f.default[Xt];return he(bt,Ot.formatLong)}return bt}).join("").match(b).map(function(bt){if(bt==="''")return"'";var Xt=bt[0];if(Xt==="'")return F(bt);var he=g.default[Xt];if(he)return!(et!=null&&et.useAdditionalWeekYearTokens)&&(0,m.isProtectedWeekYearToken)(bt)&&(0,m.throwProtectedError)(bt,G,String(j)),!(et!=null&&et.useAdditionalDayOfYearTokens)&&(0,m.isProtectedDayOfYearToken)(bt)&&(0,m.throwProtectedError)(bt,G,String(j)),he(Be,bt,Ot.localize,An);if(Xt.match(A))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Xt+"`");return bt}).join("");return me}function F(j){var G=j.match(T);return G?G[1].replace(x,"'"):j}I.exports=S.default},2382:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=N;var L=P(y(8698)),_=P(y(8734));function N(g){return(0,_.default)(1,arguments),g instanceof Date||(0,L.default)(g)==="object"&&Object.prototype.toString.call(g)==="[object Date]"}I.exports=S.default},9989:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=g;var L=P(y(2382)),_=P(y(1171)),N=P(y(8734));function g(f){if((0,N.default)(1,arguments),!(0,L.default)(f)&&typeof f!="number")return!1;var u=(0,_.default)(f);return!isNaN(Number(u))}I.exports=S.default},289:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){return function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_=L.width?String(L.width):P.defaultWidth,N=P.formats[_]||P.formats[P.defaultWidth];return N}}I.exports=S.default},6245:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){return function(L,_){var N=_!=null&&_.context?String(_.context):"standalone",g;if(N==="formatting"&&P.formattingValues){var f=P.defaultFormattingWidth||P.defaultWidth,u=_!=null&&_.width?String(_.width):f;g=P.formattingValues[u]||P.formattingValues[f]}else{var m=P.defaultWidth,d=_!=null&&_.width?String(_.width):P.defaultWidth;g=P.values[d]||P.values[m]}var w=P.argumentCallback?P.argumentCallback(L):L;return g[w]}}I.exports=S.default},3421:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(_){return function(N){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},f=g.width,u=f&&_.matchPatterns[f]||_.matchPatterns[_.defaultMatchWidth],m=N.match(u);if(!m)return null;var d=m[0],w=f&&_.parsePatterns[f]||_.parsePatterns[_.defaultParseWidth],D=Array.isArray(w)?L(w,function(M){return M.test(d)}):P(w,function(M){return M.test(d)}),E;E=_.valueCallback?_.valueCallback(D):D,E=g.valueCallback?g.valueCallback(E):E;var b=N.slice(d.length);return{value:E,rest:b}}}function P(_,N){for(var g in _)if(_.hasOwnProperty(g)&&N(_[g]))return g}function L(_,N){for(var g=0;g<_.length;g++)if(N(_[g]))return g}I.exports=S.default},8926:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){return function(L){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},N=L.match(P.matchPattern);if(!N)return null;var g=N[0],f=L.match(P.parsePattern);if(!f)return null;var u=P.valueCallback?P.valueCallback(f[0]):f[0];u=_.valueCallback?_.valueCallback(u):u;var m=L.slice(g.length);return{value:u,rest:m}}}I.exports=S.default},1924:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var y={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},P=function(N,g,f){var u,m=y[N];return typeof m=="string"?u=m:g===1?u=m.one:u=m.other.replace("{{count}}",g.toString()),f!=null&&f.addSuffix?f.comparison&&f.comparison>0?"in "+u:u+" ago":u},L=P;S.default=L,I.exports=S.default},5062:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var L=P(y(289)),_={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},N={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},g={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},f={date:(0,L.default)({formats:_,defaultWidth:"full"}),time:(0,L.default)({formats:N,defaultWidth:"full"}),dateTime:(0,L.default)({formats:g,defaultWidth:"full"})},u=f;S.default=u,I.exports=S.default},5102:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var y={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},P=function(N,g,f,u){return y[N]},L=P;S.default=L,I.exports=S.default},7839:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var L=P(y(6245)),_={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},N={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},g={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},f={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},u={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},m={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},d=function(b,M){var T=Number(b),x=T%100;if(x>20||x<10)switch(x%10){case 1:return T+"st";case 2:return T+"nd";case 3:return T+"rd"}return T+"th"},w={ordinalNumber:d,era:(0,L.default)({values:_,defaultWidth:"wide"}),quarter:(0,L.default)({values:N,defaultWidth:"wide",argumentCallback:function(b){return b-1}}),month:(0,L.default)({values:g,defaultWidth:"wide"}),day:(0,L.default)({values:f,defaultWidth:"wide"}),dayPeriod:(0,L.default)({values:u,defaultWidth:"wide",formattingValues:m,defaultFormattingWidth:"wide"})},D=w;S.default=D,I.exports=S.default},9796:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var L=P(y(3421)),_=P(y(8926)),N=/^(\d+)(th|st|nd|rd)?/i,g=/\d+/i,f={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},u={any:[/^b/i,/^(a|c)/i]},m={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},d={any:[/1/i,/2/i,/3/i,/4/i]},w={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},D={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},E={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},b={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},M={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},T={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},x={ordinalNumber:(0,_.default)({matchPattern:N,parsePattern:g,valueCallback:function(F){return parseInt(F,10)}}),era:(0,L.default)({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:u,defaultParseWidth:"any"}),quarter:(0,L.default)({matchPatterns:m,defaultMatchWidth:"wide",parsePatterns:d,defaultParseWidth:"any",valueCallback:function(F){return F+1}}),month:(0,L.default)({matchPatterns:w,defaultMatchWidth:"wide",parsePatterns:D,defaultParseWidth:"any"}),day:(0,L.default)({matchPatterns:E,defaultMatchWidth:"wide",parsePatterns:b,defaultParseWidth:"any"}),dayPeriod:(0,L.default)({matchPatterns:M,defaultMatchWidth:"any",parsePatterns:T,defaultParseWidth:"any"})},A=x;S.default=A,I.exports=S.default},2512:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var L=P(y(1924)),_=P(y(5062)),N=P(y(5102)),g=P(y(7839)),f=P(y(9796)),u={code:"en-US",formatDistance:L.default,formatLong:_.default,formatRelative:N.default,localize:g.default,match:f.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},m=u;S.default=m,I.exports=S.default},3239:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=g;var L=P(y(5065)),_=P(y(8734)),N=P(y(2084));function g(f,u){(0,_.default)(2,arguments);var m=(0,N.default)(u);return(0,L.default)(f,-m)}I.exports=S.default},1171:(I,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=N;var L=P(y(8698)),_=P(y(8734));function N(g){(0,_.default)(1,arguments);var f=Object.prototype.toString.call(g);return g instanceof Date||(0,L.default)(g)==="object"&&f==="[object Date]"?new Date(g.getTime()):typeof g=="number"||f==="[object Number]"?new Date(g):((typeof g=="string"||f==="[object String]")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}I.exports=S.default},5171:I=>{I.exports=function(y){return!y||typeof y=="string"?!1:y instanceof Array||Array.isArray(y)||y.length>=0&&(y.splice instanceof Function||Object.getOwnPropertyDescriptor(y,y.length-1)&&y.constructor.name!=="String")}},6851:(I,S,y)=>{"use strict";var P=y(5171),L=Array.prototype.concat,_=Array.prototype.slice,N=I.exports=function(f){for(var u=[],m=0,d=f.length;m<d;m++){var w=f[m];P(w)?u=L.call(u,_.call(w)):u.push(w)}return u};N.wrap=function(g){return function(){return g(N(arguments))}}},4836:I=>{function S(y){return y&&y.__esModule?y:{default:y}}I.exports=S,I.exports.__esModule=!0,I.exports.default=I.exports},8698:I=>{function S(y){"@babel/helpers - typeof";return I.exports=S=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(P){return typeof P}:function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},I.exports.__esModule=!0,I.exports.default=I.exports,S(y)}I.exports=S,I.exports.__esModule=!0,I.exports.default=I.exports},5721:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P,L,_,N,g,f,u){var m=new Date(0);return m.setUTCFullYear(P,L,_),m.setUTCHours(N,g,f,u),m}I.exports=S.default},5855:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(N,g,f){var u=_(N,f.timeZone,f.locale);return u.formatToParts?P(u,g):L(u,g)}function P(N,g){for(var f=N.formatToParts(g),u=f.length-1;u>=0;--u)if(f[u].type==="timeZoneName")return f[u].value}function L(N,g){var f=N.format(g).replace(/\u200E/g,""),u=/ [\w-+ ]+$/.exec(f);return u?u[0].substr(1):""}function _(N,g,f){if(f&&!f.code)throw new Error("date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`");return new Intl.DateTimeFormat(f?[f.code,"en-US"]:void 0,{timeZone:g,timeZoneName:N})}I.exports=S.default},2734:(I,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var P=_(y(2712)),L=_(y(5721));function _(M){return M&&M.__esModule?M:{default:M}}var N=36e5,g=6e4,f={timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-]\d{2})$/,timezoneHHMM:/^([+-]\d{2}):?(\d{2})$/};function u(M,T,x){var A,R;if(!M||(A=f.timezoneZ.exec(M),A))return 0;var F;if(A=f.timezoneHH.exec(M),A)return F=parseInt(A[1],10),D(F)?-(F*N):NaN;if(A=f.timezoneHHMM.exec(M),A){F=parseInt(A[1],10);var j=parseInt(A[2],10);return D(F,j)?(R=Math.abs(F)*N+j*g,F>0?-R:R):NaN}if(b(M)){T=new Date(T||Date.now());var G=x?T:m(T),et=d(G,M),$=x?et:w(T,et,M);return-$}return NaN}function m(M){return(0,L.default)(M.getFullYear(),M.getMonth(),M.getDate(),M.getHours(),M.getMinutes(),M.getSeconds(),M.getMilliseconds())}function d(M,T){var x=(0,P.default)(M,T),A=(0,L.default)(x[0],x[1]-1,x[2],x[3]%24,x[4],x[5],0).getTime(),R=M.getTime(),F=R%1e3;return R-=F>=0?F:1e3+F,A-R}function w(M,T,x){var A=M.getTime(),R=A-T,F=d(new Date(R),x);if(T===F)return T;R-=F-T;var j=d(new Date(R),x);return F===j?F:Math.max(F,j)}function D(M,T){return-23<=M&&M<=23&&(T==null||0<=T&&T<=59)}var E={};function b(M){if(E[M])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:M}),E[M]=!0,!0}catch(T){return!1}}I.exports=S.default},7048:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var y=/(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/,P=y;S.default=P,I.exports=S.default},2712:(I,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(f,u){var m=g(u);return m.formatToParts?L(m,f):_(m,f)}var P={year:0,month:1,day:2,hour:3,minute:4,second:5};function L(f,u){try{for(var m=f.formatToParts(u),d=[],w=0;w<m.length;w++){var D=P[m[w].type];D>=0&&(d[D]=parseInt(m[w].value,10))}return d}catch(E){if(E instanceof RangeError)return[NaN];throw E}}function _(f,u){var m=f.format(u).replace(/\u200E/g,""),d=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(m);return[d[3],d[1],d[2],d[4],d[5],d[6]]}var N={};function g(f){if(!N[f]){var u=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:"America/New_York",year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z")),m=u==="06/25/2014, 00:00:00"||u==="\u200E06\u200E/\u200E25\u200E/\u200E2014\u200E \u200E00\u200E:\u200E00\u200E:\u200E00";N[f]=m?new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:f,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:f,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return N[f]}I.exports=S.default},3826:(I,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var P=_(y(5855)),L=_(y(2734));function _(E){return E&&E.__esModule?E:{default:E}}var N=60*1e3,g={X:function(E,b,M,T){var x=f(T.timeZone,T._originalDate||E);if(x===0)return"Z";switch(b){case"X":return d(x);case"XXXX":case"XX":return m(x);case"XXXXX":case"XXX":default:return m(x,":")}},x:function(E,b,M,T){var x=f(T.timeZone,T._originalDate||E);switch(b){case"x":return d(x);case"xxxx":case"xx":return m(x);case"xxxxx":case"xxx":default:return m(x,":")}},O:function(E,b,M,T){var x=f(T.timeZone,T._originalDate||E);switch(b){case"O":case"OO":case"OOO":return"GMT"+w(x,":");case"OOOO":default:return"GMT"+m(x,":")}},z:function(E,b,M,T){var x=T._originalDate||E;switch(b){case"z":case"zz":case"zzz":return(0,P.default)("short",x,T);case"zzzz":default:return(0,P.default)("long",x,T)}}};function f(E,b){var M=E?(0,L.default)(E,b,!0)/N:b.getTimezoneOffset();if(Number.isNaN(M))throw new RangeError("Invalid time zone specified: "+E);return M}function u(E,b){for(var M=E<0?"-":"",T=Math.abs(E).toString();T.length<b;)T="0"+T;return M+T}function m(E,b){var M=b||"",T=E>0?"-":"+",x=Math.abs(E),A=u(Math.floor(x/60),2),R=u(Math.floor(x%60),2);return T+A+M+R}function d(E,b){if(E%60===0){var M=E>0?"-":"+";return M+u(Math.abs(E)/60,2)}return m(E,b)}function w(E,b){var M=E>0?"-":"+",T=Math.abs(E),x=Math.floor(T/60),A=T%60;if(A===0)return M+String(x);var R=b||"";return M+String(x)+R+u(A,2)}var D=g;S.default=D,I.exports=S.default},6558:(I,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=f;var P=N(y(5616)),L=N(y(3826)),_=N(y(1476));function N(u){return u&&u.__esModule?u:{default:u}}var g=/([xXOz]+)|''|'(''|[^'])+('|$)/g;function f(u,m,d){var w=String(m),D=d||{},E=w.match(g);if(E){var b=(0,_.default)(u,D);w=E.reduce(function(M,T){if(T[0]==="'")return M;var x=M.indexOf(T),A=M[x-1]==="'",R=M.replace(T,"'"+L.default[T[0]](b,T,null,D)+"'");return A?R.substring(0,x-1)+R.substring(x+1):R},w)}return(0,P.default)(u,w,D)}I.exports=S.default},6645:(I,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=g;var P=N(y(6420)),L=N(y(6558)),_=N(y(1132));function N(f){return f&&f.__esModule?f:{default:f}}function g(f,u,m,d){var w=(0,P.default)(d);return w.timeZone=u,(0,L.default)((0,_.default)(f,u),m,w)}I.exports=S.default},4992:(I,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=_;var P=L(y(2734));function L(N){return N&&N.__esModule?N:{default:N}}function _(N,g){return-(0,P.default)(N,g)}I.exports=S.default},722:(I,S,y)=>{"use strict";I.exports={format:y(6558),formatInTimeZone:y(6645),getTimezoneOffset:y(4992),toDate:y(1476),utcToZonedTime:y(1132),zonedTimeToUtc:y(8516)}},1476:(I,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=w;var P=g(y(2084)),L=g(y(3561)),_=g(y(2734)),N=g(y(7048));function g($){return $&&$.__esModule?$:{default:$}}var f=36e5,u=6e4,m=2,d={dateTimePattern:/^([0-9W+-]+)(T| )(.*)/,datePattern:/^([0-9W+-]+)(.*)/,plainTime:/:/,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timeZone:N.default};function w($,X){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if($===null)return new Date(NaN);var W=X||{},q=W.additionalDigits==null?m:(0,P.default)(W.additionalDigits);if(q!==2&&q!==1&&q!==0)throw new RangeError("additionalDigits must be 0, 1 or 2");if($ instanceof Date||typeof $=="object"&&Object.prototype.toString.call($)==="[object Date]")return new Date($.getTime());if(typeof $=="number"||Object.prototype.toString.call($)==="[object Number]")return new Date($);if(!(typeof $=="string"||Object.prototype.toString.call($)==="[object String]"))return new Date(NaN);var it=D($),ft=E(it.date,q),xt=ft.year,At=ft.restDateString,Ct=b(At,xt);if(isNaN(Ct))return new Date(NaN);if(Ct){var jt=Ct.getTime(),Dt=0,Et;if(it.time&&(Dt=M(it.time),isNaN(Dt)))return new Date(NaN);if(it.timeZone||W.timeZone){if(Et=(0,_.default)(it.timeZone||W.timeZone,new Date(jt+Dt)),isNaN(Et))return new Date(NaN)}else Et=(0,L.default)(new Date(jt+Dt)),Et=(0,L.default)(new Date(jt+Dt+Et));return new Date(jt+Dt+Et)}else return new Date(NaN)}function D($){var X={},W=d.dateTimePattern.exec($),q;if(W?(X.date=W[1],q=W[3]):(W=d.datePattern.exec($),W?(X.date=W[1],q=W[2]):(X.date=null,q=$)),q){var it=d.timeZone.exec(q);it?(X.time=q.replace(it[1],""),X.timeZone=it[1].trim()):X.time=q}return X}function E($,X){var W=d.YYY[X],q=d.YYYYY[X],it;if(it=d.YYYY.exec($)||q.exec($),it){var ft=it[1];return{year:parseInt(ft,10),restDateString:$.slice(ft.length)}}if(it=d.YY.exec($)||W.exec($),it){var xt=it[1];return{year:parseInt(xt,10)*100,restDateString:$.slice(xt.length)}}return{year:null}}function b($,X){if(X===null)return null;var W,q,it,ft;if($.length===0)return q=new Date(0),q.setUTCFullYear(X),q;if(W=d.MM.exec($),W)return q=new Date(0),it=parseInt(W[1],10)-1,F(X,it)?(q.setUTCFullYear(X,it),q):new Date(NaN);if(W=d.DDD.exec($),W){q=new Date(0);var xt=parseInt(W[1],10);return j(X,xt)?(q.setUTCFullYear(X,0,xt),q):new Date(NaN)}if(W=d.MMDD.exec($),W){q=new Date(0),it=parseInt(W[1],10)-1;var At=parseInt(W[2],10);return F(X,it,At)?(q.setUTCFullYear(X,it,At),q):new Date(NaN)}if(W=d.Www.exec($),W)return ft=parseInt(W[1],10)-1,G(X,ft)?T(X,ft):new Date(NaN);if(W=d.WwwD.exec($),W){ft=parseInt(W[1],10)-1;var Ct=parseInt(W[2],10)-1;return G(X,ft,Ct)?T(X,ft,Ct):new Date(NaN)}return null}function M($){var X,W,q;if(X=d.HH.exec($),X)return W=parseFloat(X[1].replace(",",".")),et(W)?W%24*f:NaN;if(X=d.HHMM.exec($),X)return W=parseInt(X[1],10),q=parseFloat(X[2].replace(",",".")),et(W,q)?W%24*f+q*u:NaN;if(X=d.HHMMSS.exec($),X){W=parseInt(X[1],10),q=parseInt(X[2],10);var it=parseFloat(X[3].replace(",","."));return et(W,q,it)?W%24*f+q*u+it*1e3:NaN}return null}function T($,X,W){X=X||0,W=W||0;var q=new Date(0);q.setUTCFullYear($,0,4);var it=q.getUTCDay()||7,ft=X*7+W+1-it;return q.setUTCDate(q.getUTCDate()+ft),q}var x=[31,28,31,30,31,30,31,31,30,31,30,31],A=[31,29,31,30,31,30,31,31,30,31,30,31];function R($){return $%400===0||$%4===0&&$%100!==0}function F($,X,W){if(X<0||X>11)return!1;if(W!=null){if(W<1)return!1;var q=R($);if(q&&W>A[X]||!q&&W>x[X])return!1}return!0}function j($,X){if(X<1)return!1;var W=R($);return!(W&&X>366||!W&&X>365)}function G($,X,W){return!(X<0||X>52||W!=null&&(W<0||W>6))}function et($,X,W){return!($!=null&&($<0||$>=25)||X!=null&&(X<0||X>=60)||W!=null&&(W<0||W>=60))}I.exports=S.default},1132:(I,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=N;var P=_(y(2734)),L=_(y(1476));function _(g){return g&&g.__esModule?g:{default:g}}function N(g,f,u){var m=(0,L.default)(g,u),d=(0,P.default)(f,m,!0),w=new Date(m.getTime()-d),D=new Date(0);return D.setFullYear(w.getUTCFullYear(),w.getUTCMonth(),w.getUTCDate()),D.setHours(w.getUTCHours(),w.getUTCMinutes(),w.getUTCSeconds(),w.getUTCMilliseconds()),D}I.exports=S.default},8516:(I,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var P=f(y(6420)),L=f(y(1476)),_=f(y(7048)),N=f(y(2734)),g=f(y(5721));function f(m){return m&&m.__esModule?m:{default:m}}function u(m,d,w){if(typeof m=="string"&&!m.match(_.default)){var D=(0,P.default)(w);return D.timeZone=d,(0,L.default)(m,D)}var E=(0,L.default)(m,w),b=(0,g.default)(E.getFullYear(),E.getMonth(),E.getDate(),E.getHours(),E.getMinutes(),E.getSeconds(),E.getMilliseconds()).getTime(),M=(0,N.default)(d,new Date(b));return new Date(b+M)}I.exports=S.default}},Ps={};function _t(I){var S=Ps[I];if(S!==void 0)return S.exports;var y=Ps[I]={exports:{}};return Ia[I](y,y.exports,_t),y.exports}_t.n=I=>{var S=I&&I.__esModule?()=>I.default:()=>I;return _t.d(S,{a:S}),S},_t.d=(I,S)=>{for(var y in S)_t.o(S,y)&&!_t.o(I,y)&&Object.defineProperty(I,y,{enumerable:!0,get:S[y]})},_t.o=(I,S)=>Object.prototype.hasOwnProperty.call(I,S),_t.r=I=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(I,"__esModule",{value:!0})};var Tn={};(()=>{"use strict";_t.r(Tn),_t.d(Tn,{Chart:()=>xs,createChart:()=>La});function I(n){return typeof n=="function"}function S(n){return I(n==null?void 0:n.lift)}function y(n){return function(t){if(S(t))return t.lift(function(e){try{return n(e,this)}catch(s){this.error(s)}});throw new TypeError("Unable to lift unknown Observable type")}}var P=function(n,t){return P=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,s){e.__proto__=s}||function(e,s){for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r])},P(n,t)};function L(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");P(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var _=function(){return _=Object.assign||function(t){for(var e,s=1,r=arguments.length;s<r;s++){e=arguments[s];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t},_.apply(this,arguments)};function N(n,t){var e={};for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&t.indexOf(s)<0&&(e[s]=n[s]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,s=Object.getOwnPropertySymbols(n);r<s.length;r++)t.indexOf(s[r])<0&&Object.prototype.propertyIsEnumerable.call(n,s[r])&&(e[s[r]]=n[s[r]]);return e}function g(n,t,e,s){var r=arguments.length,i=r<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,s);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(r<3?a(i):r>3?a(t,e,i):a(t,e))||i);return r>3&&i&&Object.defineProperty(t,e,i),i}function f(n,t){return function(e,s){t(e,s,n)}}function u(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}function m(n,t,e,s){function r(i){return i instanceof e?i:new e(function(a){a(i)})}return new(e||(e=Promise))(function(i,a){function o(h){try{c(s.next(h))}catch(v){a(v)}}function l(h){try{c(s.throw(h))}catch(v){a(v)}}function c(h){h.done?i(h.value):r(h.value).then(o,l)}c((s=s.apply(n,t||[])).next())})}function d(n,t){var e={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},s,r,i,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(c){return function(h){return l([c,h])}}function l(c){if(s)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(e=0)),e;)try{if(s=1,r&&(i=c[0]&2?r.return:c[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,c[1])).done)return i;switch(r=0,i&&(c=[c[0]&2,i.value]),c[0]){case 0:case 1:i=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,r=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(i=e.trys,!(i=i.length>0&&i[i.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]<i[3])){e.label=c[1];break}if(c[0]===6&&e.label<i[1]){e.label=i[1],i=c;break}if(i&&e.label<i[2]){e.label=i[2],e.ops.push(c);break}i[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(n,e)}catch(h){c=[6,h],r=0}finally{s=i=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}var w=Object.create?function(n,t,e,s){s===void 0&&(s=e);var r=Object.getOwnPropertyDescriptor(t,e);(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[e]}}),Object.defineProperty(n,s,r)}:function(n,t,e,s){s===void 0&&(s=e),n[s]=t[e]};function D(n,t){for(var e in n)e!=="default"&&!Object.prototype.hasOwnProperty.call(t,e)&&w(t,n,e)}function E(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],s=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&s>=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function b(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var s=e.call(n),r,i=[],a;try{for(;(t===void 0||t-- >0)&&!(r=s.next()).done;)i.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=s.return)&&e.call(s)}finally{if(a)throw a.error}}return i}function M(){for(var n=[],t=0;t<arguments.length;t++)n=n.concat(b(arguments[t]));return n}function T(){for(var n=0,t=0,e=arguments.length;t<e;t++)n+=arguments[t].length;for(var s=Array(n),r=0,t=0;t<e;t++)for(var i=arguments[t],a=0,o=i.length;a<o;a++,r++)s[r]=i[a];return s}function x(n,t,e){if(e||arguments.length===2)for(var s=0,r=t.length,i;s<r;s++)(i||!(s in t))&&(i||(i=Array.prototype.slice.call(t,0,s)),i[s]=t[s]);return n.concat(i||Array.prototype.slice.call(t))}function A(n){return this instanceof A?(this.v=n,this):new A(n)}function R(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s=e.apply(n,t||[]),r,i=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(p){s[p]&&(r[p]=function(C){return new Promise(function(O,B){i.push([p,C,O,B])>1||o(p,C)})})}function o(p,C){try{l(s[p](C))}catch(O){v(i[0][3],O)}}function l(p){p.value instanceof A?Promise.resolve(p.value.v).then(c,h):v(i[0][2],p)}function c(p){o("next",p)}function h(p){o("throw",p)}function v(p,C){p(C),i.shift(),i.length&&o(i[0][0],i[0][1])}}function F(n){var t,e;return t={},s("next"),s("throw",function(r){throw r}),s("return"),t[Symbol.iterator]=function(){return this},t;function s(r,i){t[r]=n[r]?function(a){return(e=!e)?{value:A(n[r](a)),done:r==="return"}:i?i(a):a}:i}}function j(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=n[Symbol.asyncIterator],e;return t?t.call(n):(n=typeof E=="function"?E(n):n[Symbol.iterator](),e={},s("next"),s("throw"),s("return"),e[Symbol.asyncIterator]=function(){return this},e);function s(i){e[i]=n[i]&&function(a){return new Promise(function(o,l){a=n[i](a),r(o,l,a.done,a.value)})}}function r(i,a,o,l){Promise.resolve(l).then(function(c){i({value:c,done:o})},a)}}function G(n,t){return Object.defineProperty?Object.defineProperty(n,"raw",{value:t}):n.raw=t,n}var et=Object.create?function(n,t){Object.defineProperty(n,"default",{enumerable:!0,value:t})}:function(n,t){n.default=t};function $(n){if(n&&n.__esModule)return n;var t={};if(n!=null)for(var e in n)e!=="default"&&Object.prototype.hasOwnProperty.call(n,e)&&w(t,n,e);return et(t,n),t}function X(n){return n&&n.__esModule?n:{default:n}}function W(n,t,e,s){if(e==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?n!==t||!s:!t.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?s:e==="a"?s.call(n):s?s.value:t.get(n)}function q(n,t,e,s,r){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?n!==t||!r:!t.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?r.call(n,e):r?r.value=e:t.set(n,e),e}function it(n,t){if(t===null||typeof t!="object"&&typeof t!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof n=="function"?t===n:n.has(t)}function ft(n){var t=function(s){Error.call(s),s.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var xt=ft(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
6
+ (()=>{var mt=Math.pow;(()=>{var Na={8168:(L,S,y)=>{const P=y(8874),O={};for(const v of Object.keys(P))O[P[v]]=v;const _={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};L.exports=_;for(const v of Object.keys(_)){if(!("channels"in _[v]))throw new Error("missing channels property: "+v);if(!("labels"in _[v]))throw new Error("missing channel labels property: "+v);if(_[v].labels.length!==_[v].channels)throw new Error("channel and label counts mismatch: "+v);const{channels:f,labels:u}=_[v];delete _[v].channels,delete _[v].labels,Object.defineProperty(_[v],"channels",{value:f}),Object.defineProperty(_[v],"labels",{value:u})}_.rgb.hsl=function(v){const f=v[0]/255,u=v[1]/255,m=v[2]/255,d=Math.min(f,u,m),w=Math.max(f,u,m),D=w-d;let I,C;w===d?I=0:f===w?I=(u-m)/D:u===w?I=2+(m-f)/D:m===w&&(I=4+(f-u)/D),I=Math.min(I*60,360),I<0&&(I+=360);const M=(d+w)/2;return w===d?C=0:M<=.5?C=D/(w+d):C=D/(2-w-d),[I,C*100,M*100]},_.rgb.hsv=function(v){let f,u,m,d,w;const D=v[0]/255,I=v[1]/255,C=v[2]/255,M=Math.max(D,I,C),T=M-Math.min(D,I,C),x=function(A){return(M-A)/6/T+1/2};return T===0?(d=0,w=0):(w=T/M,f=x(D),u=x(I),m=x(C),D===M?d=m-u:I===M?d=.3333333333333333+f-m:C===M&&(d=.6666666666666666+u-f),d<0?d+=1:d>1&&(d-=1)),[d*360,w*100,M*100]},_.rgb.hwb=function(v){const f=v[0],u=v[1];let m=v[2];const d=_.rgb.hsl(v)[0],w=1/255*Math.min(f,Math.min(u,m));return m=1-.00392156862745098*Math.max(f,Math.max(u,m)),[d,w*100,m*100]},_.rgb.cmyk=function(v){const f=v[0]/255,u=v[1]/255,m=v[2]/255,d=Math.min(1-f,1-u,1-m),w=(1-f-d)/(1-d)||0,D=(1-u-d)/(1-d)||0,I=(1-m-d)/(1-d)||0;return[w*100,D*100,I*100,d*100]};function H(v,f){return mt(v[0]-f[0],2)+mt(v[1]-f[1],2)+mt(v[2]-f[2],2)}_.rgb.keyword=function(v){const f=O[v];if(f)return f;let u=1/0,m;for(const d of Object.keys(P)){const w=P[d],D=H(v,w);D<u&&(u=D,m=d)}return m},_.keyword.rgb=function(v){return P[v]},_.rgb.xyz=function(v){let f=v[0]/255,u=v[1]/255,m=v[2]/255;f=f>.04045?mt((f+.055)/1.055,2.4):f/12.92,u=u>.04045?mt((u+.055)/1.055,2.4):u/12.92,m=m>.04045?mt((m+.055)/1.055,2.4):m/12.92;const d=f*.4124+u*.3576+m*.1805,w=f*.2126+u*.7152+m*.0722,D=f*.0193+u*.1192+m*.9505;return[d*100,w*100,D*100]},_.rgb.lab=function(v){const f=_.rgb.xyz(v);let u=f[0],m=f[1],d=f[2];u/=95.047,m/=100,d/=108.883,u=u>.008856?mt(u,.3333333333333333):7.787*u+.13793103448275862,m=m>.008856?mt(m,.3333333333333333):7.787*m+.13793103448275862,d=d>.008856?mt(d,.3333333333333333):7.787*d+.13793103448275862;const w=116*m-16,D=500*(u-m),I=200*(m-d);return[w,D,I]},_.hsl.rgb=function(v){const f=v[0]/360,u=v[1]/100,m=v[2]/100;let d,w,D;if(u===0)return D=m*255,[D,D,D];m<.5?d=m*(1+u):d=m+u-m*u;const I=2*m-d,C=[0,0,0];for(let M=0;M<3;M++)w=f+.3333333333333333*-(M-1),w<0&&w++,w>1&&w--,6*w<1?D=I+(d-I)*6*w:2*w<1?D=d:3*w<2?D=I+(d-I)*(.6666666666666666-w)*6:D=I,C[M]=D*255;return C},_.hsl.hsv=function(v){const f=v[0];let u=v[1]/100,m=v[2]/100,d=u;const w=Math.max(m,.01);m*=2,u*=m<=1?m:2-m,d*=w<=1?w:2-w;const D=(m+u)/2,I=m===0?2*d/(w+d):2*u/(m+u);return[f,I*100,D*100]},_.hsv.rgb=function(v){const f=v[0]/60,u=v[1]/100;let m=v[2]/100;const d=Math.floor(f)%6,w=f-Math.floor(f),D=255*m*(1-u),I=255*m*(1-u*w),C=255*m*(1-u*(1-w));switch(m*=255,d){case 0:return[m,C,D];case 1:return[I,m,D];case 2:return[D,m,C];case 3:return[D,I,m];case 4:return[C,D,m];case 5:return[m,D,I]}},_.hsv.hsl=function(v){const f=v[0],u=v[1]/100,m=v[2]/100,d=Math.max(m,.01);let w,D;D=(2-u)*m;const I=(2-u)*d;return w=u*d,w/=I<=1?I:2-I,w=w||0,D/=2,[f,w*100,D*100]},_.hwb.rgb=function(v){const f=v[0]/360;let u=v[1]/100,m=v[2]/100;const d=u+m;let w;d>1&&(u/=d,m/=d);const D=Math.floor(6*f),I=1-m;w=6*f-D,D&1&&(w=1-w);const C=u+w*(I-u);let M,T,x;switch(D){default:case 6:case 0:M=I,T=C,x=u;break;case 1:M=C,T=I,x=u;break;case 2:M=u,T=I,x=C;break;case 3:M=u,T=C,x=I;break;case 4:M=C,T=u,x=I;break;case 5:M=I,T=u,x=C;break}return[M*255,T*255,x*255]},_.cmyk.rgb=function(v){const f=v[0]/100,u=v[1]/100,m=v[2]/100,d=v[3]/100,w=1-Math.min(1,f*(1-d)+d),D=1-Math.min(1,u*(1-d)+d),I=1-Math.min(1,m*(1-d)+d);return[w*255,D*255,I*255]},_.xyz.rgb=function(v){const f=v[0]/100,u=v[1]/100,m=v[2]/100;let d,w,D;return d=f*3.2406+u*-1.5372+m*-.4986,w=f*-.9689+u*1.8758+m*.0415,D=f*.0557+u*-.204+m*1.057,d=d>.0031308?1.055*mt(d,.4166666666666667)-.055:d*12.92,w=w>.0031308?1.055*mt(w,.4166666666666667)-.055:w*12.92,D=D>.0031308?1.055*mt(D,.4166666666666667)-.055:D*12.92,d=Math.min(Math.max(0,d),1),w=Math.min(Math.max(0,w),1),D=Math.min(Math.max(0,D),1),[d*255,w*255,D*255]},_.xyz.lab=function(v){let f=v[0],u=v[1],m=v[2];f/=95.047,u/=100,m/=108.883,f=f>.008856?mt(f,.3333333333333333):7.787*f+.13793103448275862,u=u>.008856?mt(u,.3333333333333333):7.787*u+.13793103448275862,m=m>.008856?mt(m,.3333333333333333):7.787*m+.13793103448275862;const d=116*u-16,w=500*(f-u),D=200*(u-m);return[d,w,D]},_.lab.xyz=function(v){const f=v[0],u=v[1],m=v[2];let d,w,D;w=(f+16)/116,d=u/500+w,D=w-m/200;const I=mt(w,3),C=mt(d,3),M=mt(D,3);return w=I>.008856?I:(w-.13793103448275862)/7.787,d=C>.008856?C:(d-.13793103448275862)/7.787,D=M>.008856?M:(D-.13793103448275862)/7.787,d*=95.047,w*=100,D*=108.883,[d,w,D]},_.lab.lch=function(v){const f=v[0],u=v[1],m=v[2];let d;d=Math.atan2(m,u)*360/2/Math.PI,d<0&&(d+=360);const D=Math.sqrt(u*u+m*m);return[f,D,d]},_.lch.lab=function(v){const f=v[0],u=v[1],d=v[2]/360*2*Math.PI,w=u*Math.cos(d),D=u*Math.sin(d);return[f,w,D]},_.rgb.ansi16=function(v,f=null){const[u,m,d]=v;let w=f===null?_.rgb.hsv(v)[2]:f;if(w=Math.round(w/50),w===0)return 30;let D=30+(Math.round(d/255)<<2|Math.round(m/255)<<1|Math.round(u/255));return w===2&&(D+=60),D},_.hsv.ansi16=function(v){return _.rgb.ansi16(_.hsv.rgb(v),v[2])},_.rgb.ansi256=function(v){const f=v[0],u=v[1],m=v[2];return f===u&&u===m?f<8?16:f>248?231:Math.round((f-8)/247*24)+232:16+36*Math.round(f/255*5)+6*Math.round(u/255*5)+Math.round(m/255*5)},_.ansi16.rgb=function(v){let f=v%10;if(f===0||f===7)return v>50&&(f+=3.5),f=f/10.5*255,[f,f,f];const u=(~~(v>50)+1)*.5,m=(f&1)*u*255,d=(f>>1&1)*u*255,w=(f>>2&1)*u*255;return[m,d,w]},_.ansi256.rgb=function(v){if(v>=232){const w=(v-232)*10+8;return[w,w,w]}v-=16;let f;const u=Math.floor(v/36)/5*255,m=Math.floor((f=v%36)/6)/5*255,d=f%6/5*255;return[u,m,d]},_.rgb.hex=function(v){const u=(((Math.round(v[0])&255)<<16)+((Math.round(v[1])&255)<<8)+(Math.round(v[2])&255)).toString(16).toUpperCase();return"000000".substring(u.length)+u},_.hex.rgb=function(v){const f=v.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!f)return[0,0,0];let u=f[0];f[0].length===3&&(u=u.split("").map(I=>I+I).join(""));const m=parseInt(u,16),d=m>>16&255,w=m>>8&255,D=m&255;return[d,w,D]},_.rgb.hcg=function(v){const f=v[0]/255,u=v[1]/255,m=v[2]/255,d=Math.max(Math.max(f,u),m),w=Math.min(Math.min(f,u),m),D=d-w;let I,C;return D<1?I=w/(1-D):I=0,D<=0?C=0:d===f?C=(u-m)/D%6:d===u?C=2+(m-f)/D:C=4+(f-u)/D,C/=6,C%=1,[C*360,D*100,I*100]},_.hsl.hcg=function(v){const f=v[1]/100,u=v[2]/100,m=u<.5?2*f*u:2*f*(1-u);let d=0;return m<1&&(d=(u-.5*m)/(1-m)),[v[0],m*100,d*100]},_.hsv.hcg=function(v){const f=v[1]/100,u=v[2]/100,m=f*u;let d=0;return m<1&&(d=(u-m)/(1-m)),[v[0],m*100,d*100]},_.hcg.rgb=function(v){const f=v[0]/360,u=v[1]/100,m=v[2]/100;if(u===0)return[m*255,m*255,m*255];const d=[0,0,0],w=f%1*6,D=w%1,I=1-D;let C=0;switch(Math.floor(w)){case 0:d[0]=1,d[1]=D,d[2]=0;break;case 1:d[0]=I,d[1]=1,d[2]=0;break;case 2:d[0]=0,d[1]=1,d[2]=D;break;case 3:d[0]=0,d[1]=I,d[2]=1;break;case 4:d[0]=D,d[1]=0,d[2]=1;break;default:d[0]=1,d[1]=0,d[2]=I}return C=(1-u)*m,[(u*d[0]+C)*255,(u*d[1]+C)*255,(u*d[2]+C)*255]},_.hcg.hsv=function(v){const f=v[1]/100,u=v[2]/100,m=f+u*(1-f);let d=0;return m>0&&(d=f/m),[v[0],d*100,m*100]},_.hcg.hsl=function(v){const f=v[1]/100,m=v[2]/100*(1-f)+.5*f;let d=0;return m>0&&m<.5?d=f/(2*m):m>=.5&&m<1&&(d=f/(2*(1-m))),[v[0],d*100,m*100]},_.hcg.hwb=function(v){const f=v[1]/100,u=v[2]/100,m=f+u*(1-f);return[v[0],(m-f)*100,(1-m)*100]},_.hwb.hcg=function(v){const f=v[1]/100,m=1-v[2]/100,d=m-f;let w=0;return d<1&&(w=(m-d)/(1-d)),[v[0],d*100,w*100]},_.apple.rgb=function(v){return[v[0]/65535*255,v[1]/65535*255,v[2]/65535*255]},_.rgb.apple=function(v){return[v[0]/255*65535,v[1]/255*65535,v[2]/255*65535]},_.gray.rgb=function(v){return[v[0]/100*255,v[0]/100*255,v[0]/100*255]},_.gray.hsl=function(v){return[0,0,v[0]]},_.gray.hsv=_.gray.hsl,_.gray.hwb=function(v){return[0,100,v[0]]},_.gray.cmyk=function(v){return[0,0,0,v[0]]},_.gray.lab=function(v){return[v[0],0,0]},_.gray.hex=function(v){const f=Math.round(v[0]/100*255)&255,m=((f<<16)+(f<<8)+f).toString(16).toUpperCase();return"000000".substring(m.length)+m},_.rgb.gray=function(v){return[(v[0]+v[1]+v[2])/3/255*100]}},2085:(L,S,y)=>{const P=y(8168),O=y(4111),_={},H=Object.keys(P);function v(u){const m=function(...d){const w=d[0];return w==null?w:(w.length>1&&(d=w),u(d))};return"conversion"in u&&(m.conversion=u.conversion),m}function f(u){const m=function(...d){const w=d[0];if(w==null)return w;w.length>1&&(d=w);const D=u(d);if(typeof D=="object")for(let I=D.length,C=0;C<I;C++)D[C]=Math.round(D[C]);return D};return"conversion"in u&&(m.conversion=u.conversion),m}H.forEach(u=>{_[u]={},Object.defineProperty(_[u],"channels",{value:P[u].channels}),Object.defineProperty(_[u],"labels",{value:P[u].labels});const m=O(u);Object.keys(m).forEach(w=>{const D=m[w];_[u][w]=f(D),_[u][w].raw=v(D)})}),L.exports=_},4111:(L,S,y)=>{const P=y(8168);function O(){const f={},u=Object.keys(P);for(let m=u.length,d=0;d<m;d++)f[u[d]]={distance:-1,parent:null};return f}function _(f){const u=O(),m=[f];for(u[f].distance=0;m.length;){const d=m.pop(),w=Object.keys(P[d]);for(let D=w.length,I=0;I<D;I++){const C=w[I],M=u[C];M.distance===-1&&(M.distance=u[d].distance+1,M.parent=d,m.unshift(C))}}return u}function H(f,u){return function(m){return u(f(m))}}function v(f,u){const m=[u[f].parent,f];let d=P[u[f].parent][f],w=u[f].parent;for(;u[w].parent;)m.unshift(u[w].parent),d=H(P[u[w].parent][w],d),w=u[w].parent;return d.conversion=m,d}L.exports=function(f){const u=_(f),m={},d=Object.keys(u);for(let w=d.length,D=0;D<w;D++){const I=d[D];u[I].parent!==null&&(m[I]=v(I,u))}return m}},8874:L=>{"use strict";L.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9818:(L,S,y)=>{var P=y(8874),O=y(6851),_=Object.hasOwnProperty,H=Object.create(null);for(var v in P)_.call(P,v)&&(H[P[v]]=v);var f=L.exports={to:{},get:{}};f.get=function(d){var w=d.substring(0,3).toLowerCase(),D,I;switch(w){case"hsl":D=f.get.hsl(d),I="hsl";break;case"hwb":D=f.get.hwb(d),I="hwb";break;default:D=f.get.rgb(d),I="rgb";break}return D?{model:I,value:D}:null},f.get.rgb=function(d){if(!d)return null;var w=/^#([a-f0-9]{3,4})$/i,D=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,I=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,C=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,M=/^(\w+)$/,T=[0,0,0,1],x,A,R;if(x=d.match(D)){for(R=x[2],x=x[1],A=0;A<3;A++){var F=A*2;T[A]=parseInt(x.slice(F,F+2),16)}R&&(T[3]=parseInt(R,16)/255)}else if(x=d.match(w)){for(x=x[1],R=x[3],A=0;A<3;A++)T[A]=parseInt(x[A]+x[A],16);R&&(T[3]=parseInt(R+R,16)/255)}else if(x=d.match(I)){for(A=0;A<3;A++)T[A]=parseInt(x[A+1],0);x[4]&&(x[5]?T[3]=parseFloat(x[4])*.01:T[3]=parseFloat(x[4]))}else if(x=d.match(C)){for(A=0;A<3;A++)T[A]=Math.round(parseFloat(x[A+1])*2.55);x[4]&&(x[5]?T[3]=parseFloat(x[4])*.01:T[3]=parseFloat(x[4]))}else return(x=d.match(M))?x[1]==="transparent"?[0,0,0,0]:_.call(P,x[1])?(T=P[x[1]],T[3]=1,T):null:null;for(A=0;A<3;A++)T[A]=u(T[A],0,255);return T[3]=u(T[3],0,1),T},f.get.hsl=function(d){if(!d)return null;var w=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,D=d.match(w);if(D){var I=parseFloat(D[4]),C=(parseFloat(D[1])%360+360)%360,M=u(parseFloat(D[2]),0,100),T=u(parseFloat(D[3]),0,100),x=u(isNaN(I)?1:I,0,1);return[C,M,T,x]}return null},f.get.hwb=function(d){if(!d)return null;var w=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,D=d.match(w);if(D){var I=parseFloat(D[4]),C=(parseFloat(D[1])%360+360)%360,M=u(parseFloat(D[2]),0,100),T=u(parseFloat(D[3]),0,100),x=u(isNaN(I)?1:I,0,1);return[C,M,T,x]}return null},f.to.hex=function(){var d=O(arguments);return"#"+m(d[0])+m(d[1])+m(d[2])+(d[3]<1?m(Math.round(d[3]*255)):"")},f.to.rgb=function(){var d=O(arguments);return d.length<4||d[3]===1?"rgb("+Math.round(d[0])+", "+Math.round(d[1])+", "+Math.round(d[2])+")":"rgba("+Math.round(d[0])+", "+Math.round(d[1])+", "+Math.round(d[2])+", "+d[3]+")"},f.to.rgb.percent=function(){var d=O(arguments),w=Math.round(d[0]/255*100),D=Math.round(d[1]/255*100),I=Math.round(d[2]/255*100);return d.length<4||d[3]===1?"rgb("+w+"%, "+D+"%, "+I+"%)":"rgba("+w+"%, "+D+"%, "+I+"%, "+d[3]+")"},f.to.hsl=function(){var d=O(arguments);return d.length<4||d[3]===1?"hsl("+d[0]+", "+d[1]+"%, "+d[2]+"%)":"hsla("+d[0]+", "+d[1]+"%, "+d[2]+"%, "+d[3]+")"},f.to.hwb=function(){var d=O(arguments),w="";return d.length>=4&&d[3]!==1&&(w=", "+d[3]),"hwb("+d[0]+", "+d[1]+"%, "+d[2]+"%"+w+")"},f.to.keyword=function(d){return H[d.slice(0,3)]};function u(d,w,D){return Math.min(Math.max(w,d),D)}function m(d){var w=Math.round(d).toString(16).toUpperCase();return w.length<2?"0"+w:w}},6767:(L,S,y)=>{const P=y(9818),O=y(2085),_=["keyword","gray","hex"],H={};for(const C of Object.keys(O))H[[...O[C].labels].sort().join("")]=C;const v={};function f(C,M){if(!(this instanceof f))return new f(C,M);if(M&&M in _&&(M=null),M&&!(M in O))throw new Error("Unknown model: "+M);let T,x;if(C==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(C instanceof f)this.model=C.model,this.color=[...C.color],this.valpha=C.valpha;else if(typeof C=="string"){const A=P.get(C);if(A===null)throw new Error("Unable to parse color from string: "+C);this.model=A.model,x=O[this.model].channels,this.color=A.value.slice(0,x),this.valpha=typeof A.value[x]=="number"?A.value[x]:1}else if(C.length>0){this.model=M||"rgb",x=O[this.model].channels;const A=Array.prototype.slice.call(C,0,x);this.color=I(A,x),this.valpha=typeof C[x]=="number"?C[x]:1}else if(typeof C=="number")this.model="rgb",this.color=[C>>16&255,C>>8&255,C&255],this.valpha=1;else{this.valpha=1;const A=Object.keys(C);"alpha"in C&&(A.splice(A.indexOf("alpha"),1),this.valpha=typeof C.alpha=="number"?C.alpha:0);const R=A.sort().join("");if(!(R in H))throw new Error("Unable to parse color from object: "+JSON.stringify(C));this.model=H[R];const{labels:F}=O[this.model],j=[];for(T=0;T<F.length;T++)j.push(C[F[T]]);this.color=I(j)}if(v[this.model])for(x=O[this.model].channels,T=0;T<x;T++){const A=v[this.model][T];A&&(this.color[T]=A(this.color[T]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}f.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(C){let M=this.model in P.to?this:this.rgb();M=M.round(typeof C=="number"?C:1);const T=M.valpha===1?M.color:[...M.color,this.valpha];return P.to[M.model](T)},percentString(C){const M=this.rgb().round(typeof C=="number"?C:1),T=M.valpha===1?M.color:[...M.color,this.valpha];return P.to.rgb.percent(T)},array(){return this.valpha===1?[...this.color]:[...this.color,this.valpha]},object(){const C={},{channels:M}=O[this.model],{labels:T}=O[this.model];for(let x=0;x<M;x++)C[T[x]]=this.color[x];return this.valpha!==1&&(C.alpha=this.valpha),C},unitArray(){const C=this.rgb().color;return C[0]/=255,C[1]/=255,C[2]/=255,this.valpha!==1&&C.push(this.valpha),C},unitObject(){const C=this.rgb().object();return C.r/=255,C.g/=255,C.b/=255,this.valpha!==1&&(C.alpha=this.valpha),C},round(C){return C=Math.max(C||0,0),new f([...this.color.map(m(C)),this.valpha],this.model)},alpha(C){return C!==void 0?new f([...this.color,Math.max(0,Math.min(1,C))],this.model):this.valpha},red:d("rgb",0,w(255)),green:d("rgb",1,w(255)),blue:d("rgb",2,w(255)),hue:d(["hsl","hsv","hsl","hwb","hcg"],0,C=>(C%360+360)%360),saturationl:d("hsl",1,w(100)),lightness:d("hsl",2,w(100)),saturationv:d("hsv",1,w(100)),value:d("hsv",2,w(100)),chroma:d("hcg",1,w(100)),gray:d("hcg",2,w(100)),white:d("hwb",1,w(100)),wblack:d("hwb",2,w(100)),cyan:d("cmyk",0,w(100)),magenta:d("cmyk",1,w(100)),yellow:d("cmyk",2,w(100)),black:d("cmyk",3,w(100)),x:d("xyz",0,w(95.047)),y:d("xyz",1,w(100)),z:d("xyz",2,w(108.833)),l:d("lab",0,w(100)),a:d("lab",1),b:d("lab",2),keyword(C){return C!==void 0?new f(C):O[this.model].keyword(this.color)},hex(C){return C!==void 0?new f(C):P.to.hex(this.rgb().round().color)},hexa(C){if(C!==void 0)return new f(C);const M=this.rgb().round().color;let T=Math.round(this.valpha*255).toString(16).toUpperCase();return T.length===1&&(T="0"+T),P.to.hex(M)+T},rgbNumber(){const C=this.rgb().color;return(C[0]&255)<<16|(C[1]&255)<<8|C[2]&255},luminosity(){const C=this.rgb().color,M=[];for(const[T,x]of C.entries()){const A=x/255;M[T]=A<=.04045?A/12.92:mt((A+.055)/1.055,2.4)}return .2126*M[0]+.7152*M[1]+.0722*M[2]},contrast(C){const M=this.luminosity(),T=C.luminosity();return M>T?(M+.05)/(T+.05):(T+.05)/(M+.05)},level(C){const M=this.contrast(C);return M>=7?"AAA":M>=4.5?"AA":""},isDark(){const C=this.rgb().color;return(C[0]*2126+C[1]*7152+C[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const C=this.rgb();for(let M=0;M<3;M++)C.color[M]=255-C.color[M];return C},lighten(C){const M=this.hsl();return M.color[2]+=M.color[2]*C,M},darken(C){const M=this.hsl();return M.color[2]-=M.color[2]*C,M},saturate(C){const M=this.hsl();return M.color[1]+=M.color[1]*C,M},desaturate(C){const M=this.hsl();return M.color[1]-=M.color[1]*C,M},whiten(C){const M=this.hwb();return M.color[1]+=M.color[1]*C,M},blacken(C){const M=this.hwb();return M.color[2]+=M.color[2]*C,M},grayscale(){const C=this.rgb().color,M=C[0]*.3+C[1]*.59+C[2]*.11;return f.rgb(M,M,M)},fade(C){return this.alpha(this.valpha-this.valpha*C)},opaquer(C){return this.alpha(this.valpha+this.valpha*C)},rotate(C){const M=this.hsl();let T=M.color[0];return T=(T+C)%360,T=T<0?360+T:T,M.color[0]=T,M},mix(C,M){if(!C||!C.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof C);const T=C.rgb(),x=this.rgb(),A=M===void 0?.5:M,R=2*A-1,F=T.alpha()-x.alpha(),j=((R*F===-1?R:(R+F)/(1+R*F))+1)/2,G=1-j;return f.rgb(j*T.red()+G*x.red(),j*T.green()+G*x.green(),j*T.blue()+G*x.blue(),T.alpha()*A+x.alpha()*(1-A))}};for(const C of Object.keys(O)){if(_.includes(C))continue;const{channels:M}=O[C];f.prototype[C]=function(...T){return this.model===C?new f(this):T.length>0?new f(T,C):new f([...D(O[this.model][C].raw(this.color)),this.valpha],C)},f[C]=function(...T){let x=T[0];return typeof x=="number"&&(x=I(T,M)),new f(x,C)}}function u(C,M){return Number(C.toFixed(M))}function m(C){return function(M){return u(M,C)}}function d(C,M,T){C=Array.isArray(C)?C:[C];for(const x of C)(v[x]||(v[x]=[]))[M]=T;return C=C[0],function(x){let A;return x!==void 0?(T&&(x=T(x)),A=this[C](),A.color[M]=x,A):(A=this[C]().color[M],T&&(A=T(A)),A)}}function w(C){return function(M){return Math.max(0,Math.min(C,M))}}function D(C){return Array.isArray(C)?C:[C]}function I(C,M){for(let T=0;T<M;T++)typeof C[T]!="number"&&(C[T]=0);return C}L.exports=f},7394:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P,O){for(var _=P<0?"-":"",H=Math.abs(P).toString();H.length<O;)H="0"+H;return _+H}L.exports=S.default},8609:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P,O){if(P==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var _ in O)Object.prototype.hasOwnProperty.call(O,_)&&(P[_]=O[_]);return P}L.exports=S.default},6420:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=_;var O=P(y(8609));function _(H){return(0,O.default)({},H)}L.exports=S.default},7561:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var O=P(y(2512)),_=O.default;S.default=_,L.exports=S.default},8729:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.getDefaultOptions=P,S.setDefaultOptions=O;var y={};function P(){return y}function O(_){y=_}},7100:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var O=P(y(1603)),_=P(y(1354)),H=P(y(1370)),v=P(y(623)),f=P(y(6226)),u=P(y(7394)),m=P(y(2699)),d={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},w={G:function(x,A,R){var F=x.getUTCFullYear()>0?1:0;switch(A){case"G":case"GG":case"GGG":return R.era(F,{width:"abbreviated"});case"GGGGG":return R.era(F,{width:"narrow"});case"GGGG":default:return R.era(F,{width:"wide"})}},y:function(x,A,R){if(A==="yo"){var F=x.getUTCFullYear(),j=F>0?F:1-F;return R.ordinalNumber(j,{unit:"year"})}return m.default.y(x,A)},Y:function(x,A,R,F){var j=(0,f.default)(x,F),G=j>0?j:1-j;if(A==="YY"){var et=G%100;return(0,u.default)(et,2)}return A==="Yo"?R.ordinalNumber(G,{unit:"year"}):(0,u.default)(G,A.length)},R:function(x,A){var R=(0,H.default)(x);return(0,u.default)(R,A.length)},u:function(x,A){var R=x.getUTCFullYear();return(0,u.default)(R,A.length)},Q:function(x,A,R){var F=Math.ceil((x.getUTCMonth()+1)/3);switch(A){case"Q":return String(F);case"QQ":return(0,u.default)(F,2);case"Qo":return R.ordinalNumber(F,{unit:"quarter"});case"QQQ":return R.quarter(F,{width:"abbreviated",context:"formatting"});case"QQQQQ":return R.quarter(F,{width:"narrow",context:"formatting"});case"QQQQ":default:return R.quarter(F,{width:"wide",context:"formatting"})}},q:function(x,A,R){var F=Math.ceil((x.getUTCMonth()+1)/3);switch(A){case"q":return String(F);case"qq":return(0,u.default)(F,2);case"qo":return R.ordinalNumber(F,{unit:"quarter"});case"qqq":return R.quarter(F,{width:"abbreviated",context:"standalone"});case"qqqqq":return R.quarter(F,{width:"narrow",context:"standalone"});case"qqqq":default:return R.quarter(F,{width:"wide",context:"standalone"})}},M:function(x,A,R){var F=x.getUTCMonth();switch(A){case"M":case"MM":return m.default.M(x,A);case"Mo":return R.ordinalNumber(F+1,{unit:"month"});case"MMM":return R.month(F,{width:"abbreviated",context:"formatting"});case"MMMMM":return R.month(F,{width:"narrow",context:"formatting"});case"MMMM":default:return R.month(F,{width:"wide",context:"formatting"})}},L:function(x,A,R){var F=x.getUTCMonth();switch(A){case"L":return String(F+1);case"LL":return(0,u.default)(F+1,2);case"Lo":return R.ordinalNumber(F+1,{unit:"month"});case"LLL":return R.month(F,{width:"abbreviated",context:"standalone"});case"LLLLL":return R.month(F,{width:"narrow",context:"standalone"});case"LLLL":default:return R.month(F,{width:"wide",context:"standalone"})}},w:function(x,A,R,F){var j=(0,v.default)(x,F);return A==="wo"?R.ordinalNumber(j,{unit:"week"}):(0,u.default)(j,A.length)},I:function(x,A,R){var F=(0,_.default)(x);return A==="Io"?R.ordinalNumber(F,{unit:"week"}):(0,u.default)(F,A.length)},d:function(x,A,R){return A==="do"?R.ordinalNumber(x.getUTCDate(),{unit:"date"}):m.default.d(x,A)},D:function(x,A,R){var F=(0,O.default)(x);return A==="Do"?R.ordinalNumber(F,{unit:"dayOfYear"}):(0,u.default)(F,A.length)},E:function(x,A,R){var F=x.getUTCDay();switch(A){case"E":case"EE":case"EEE":return R.day(F,{width:"abbreviated",context:"formatting"});case"EEEEE":return R.day(F,{width:"narrow",context:"formatting"});case"EEEEEE":return R.day(F,{width:"short",context:"formatting"});case"EEEE":default:return R.day(F,{width:"wide",context:"formatting"})}},e:function(x,A,R,F){var j=x.getUTCDay(),G=(j-F.weekStartsOn+8)%7||7;switch(A){case"e":return String(G);case"ee":return(0,u.default)(G,2);case"eo":return R.ordinalNumber(G,{unit:"day"});case"eee":return R.day(j,{width:"abbreviated",context:"formatting"});case"eeeee":return R.day(j,{width:"narrow",context:"formatting"});case"eeeeee":return R.day(j,{width:"short",context:"formatting"});case"eeee":default:return R.day(j,{width:"wide",context:"formatting"})}},c:function(x,A,R,F){var j=x.getUTCDay(),G=(j-F.weekStartsOn+8)%7||7;switch(A){case"c":return String(G);case"cc":return(0,u.default)(G,A.length);case"co":return R.ordinalNumber(G,{unit:"day"});case"ccc":return R.day(j,{width:"abbreviated",context:"standalone"});case"ccccc":return R.day(j,{width:"narrow",context:"standalone"});case"cccccc":return R.day(j,{width:"short",context:"standalone"});case"cccc":default:return R.day(j,{width:"wide",context:"standalone"})}},i:function(x,A,R){var F=x.getUTCDay(),j=F===0?7:F;switch(A){case"i":return String(j);case"ii":return(0,u.default)(j,A.length);case"io":return R.ordinalNumber(j,{unit:"day"});case"iii":return R.day(F,{width:"abbreviated",context:"formatting"});case"iiiii":return R.day(F,{width:"narrow",context:"formatting"});case"iiiiii":return R.day(F,{width:"short",context:"formatting"});case"iiii":default:return R.day(F,{width:"wide",context:"formatting"})}},a:function(x,A,R){var F=x.getUTCHours(),j=F/12>=1?"pm":"am";switch(A){case"a":case"aa":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"});case"aaa":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return R.dayPeriod(j,{width:"narrow",context:"formatting"});case"aaaa":default:return R.dayPeriod(j,{width:"wide",context:"formatting"})}},b:function(x,A,R){var F=x.getUTCHours(),j;switch(F===12?j=d.noon:F===0?j=d.midnight:j=F/12>=1?"pm":"am",A){case"b":case"bb":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"});case"bbb":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return R.dayPeriod(j,{width:"narrow",context:"formatting"});case"bbbb":default:return R.dayPeriod(j,{width:"wide",context:"formatting"})}},B:function(x,A,R){var F=x.getUTCHours(),j;switch(F>=17?j=d.evening:F>=12?j=d.afternoon:F>=4?j=d.morning:j=d.night,A){case"B":case"BB":case"BBB":return R.dayPeriod(j,{width:"abbreviated",context:"formatting"});case"BBBBB":return R.dayPeriod(j,{width:"narrow",context:"formatting"});case"BBBB":default:return R.dayPeriod(j,{width:"wide",context:"formatting"})}},h:function(x,A,R){if(A==="ho"){var F=x.getUTCHours()%12;return F===0&&(F=12),R.ordinalNumber(F,{unit:"hour"})}return m.default.h(x,A)},H:function(x,A,R){return A==="Ho"?R.ordinalNumber(x.getUTCHours(),{unit:"hour"}):m.default.H(x,A)},K:function(x,A,R){var F=x.getUTCHours()%12;return A==="Ko"?R.ordinalNumber(F,{unit:"hour"}):(0,u.default)(F,A.length)},k:function(x,A,R){var F=x.getUTCHours();return F===0&&(F=24),A==="ko"?R.ordinalNumber(F,{unit:"hour"}):(0,u.default)(F,A.length)},m:function(x,A,R){return A==="mo"?R.ordinalNumber(x.getUTCMinutes(),{unit:"minute"}):m.default.m(x,A)},s:function(x,A,R){return A==="so"?R.ordinalNumber(x.getUTCSeconds(),{unit:"second"}):m.default.s(x,A)},S:function(x,A){return m.default.S(x,A)},X:function(x,A,R,F){var j=F._originalDate||x,G=j.getTimezoneOffset();if(G===0)return"Z";switch(A){case"X":return I(G);case"XXXX":case"XX":return C(G);case"XXXXX":case"XXX":default:return C(G,":")}},x:function(x,A,R,F){var j=F._originalDate||x,G=j.getTimezoneOffset();switch(A){case"x":return I(G);case"xxxx":case"xx":return C(G);case"xxxxx":case"xxx":default:return C(G,":")}},O:function(x,A,R,F){var j=F._originalDate||x,G=j.getTimezoneOffset();switch(A){case"O":case"OO":case"OOO":return"GMT"+D(G,":");case"OOOO":default:return"GMT"+C(G,":")}},z:function(x,A,R,F){var j=F._originalDate||x,G=j.getTimezoneOffset();switch(A){case"z":case"zz":case"zzz":return"GMT"+D(G,":");case"zzzz":default:return"GMT"+C(G,":")}},t:function(x,A,R,F){var j=F._originalDate||x,G=Math.floor(j.getTime()/1e3);return(0,u.default)(G,A.length)},T:function(x,A,R,F){var j=F._originalDate||x,G=j.getTime();return(0,u.default)(G,A.length)}};function D(T,x){var A=T>0?"-":"+",R=Math.abs(T),F=Math.floor(R/60),j=R%60;if(j===0)return A+String(F);var G=x||"";return A+String(F)+G+(0,u.default)(j,2)}function I(T,x){if(T%60===0){var A=T>0?"-":"+";return A+(0,u.default)(Math.abs(T)/60,2)}return C(T,x)}function C(T,x){var A=x||"",R=T>0?"-":"+",F=Math.abs(T),j=(0,u.default)(Math.floor(F/60),2),G=(0,u.default)(F%60,2);return R+j+A+G}var M=w;S.default=M,L.exports=S.default},2699:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var O=P(y(7394)),_={y:function(f,u){var m=f.getUTCFullYear(),d=m>0?m:1-m;return(0,O.default)(u==="yy"?d%100:d,u.length)},M:function(f,u){var m=f.getUTCMonth();return u==="M"?String(m+1):(0,O.default)(m+1,2)},d:function(f,u){return(0,O.default)(f.getUTCDate(),u.length)},a:function(f,u){var m=f.getUTCHours()/12>=1?"pm":"am";switch(u){case"a":case"aa":return m.toUpperCase();case"aaa":return m;case"aaaaa":return m[0];case"aaaa":default:return m==="am"?"a.m.":"p.m."}},h:function(f,u){return(0,O.default)(f.getUTCHours()%12||12,u.length)},H:function(f,u){return(0,O.default)(f.getUTCHours(),u.length)},m:function(f,u){return(0,O.default)(f.getUTCMinutes(),u.length)},s:function(f,u){return(0,O.default)(f.getUTCSeconds(),u.length)},S:function(f,u){var m=u.length,d=f.getUTCMilliseconds(),w=Math.floor(d*Math.pow(10,m-3));return(0,O.default)(w,u.length)}},H=_;S.default=H,L.exports=S.default},5209:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var y=function(f,u){switch(f){case"P":return u.date({width:"short"});case"PP":return u.date({width:"medium"});case"PPP":return u.date({width:"long"});case"PPPP":default:return u.date({width:"full"})}},P=function(f,u){switch(f){case"p":return u.time({width:"short"});case"pp":return u.time({width:"medium"});case"ppp":return u.time({width:"long"});case"pppp":default:return u.time({width:"full"})}},O=function(f,u){var m=f.match(/(P+)(p+)?/)||[],d=m[1],w=m[2];if(!w)return y(f,u);var D;switch(d){case"P":D=u.dateTime({width:"short"});break;case"PP":D=u.dateTime({width:"medium"});break;case"PPP":D=u.dateTime({width:"long"});break;case"PPPP":default:D=u.dateTime({width:"full"});break}return D.replace("{{date}}",y(d,u)).replace("{{time}}",P(w,u))},_={p:P,P:O},H=_;S.default=H,L.exports=S.default},3561:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){var O=new Date(Date.UTC(P.getFullYear(),P.getMonth(),P.getDate(),P.getHours(),P.getMinutes(),P.getSeconds(),P.getMilliseconds()));return O.setUTCFullYear(P.getFullYear()),P.getTime()-O.getTime()}L.exports=S.default},1603:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=v;var O=P(y(1171)),_=P(y(8734)),H=864e5;function v(f){(0,_.default)(1,arguments);var u=(0,O.default)(f),m=u.getTime();u.setUTCMonth(0,1),u.setUTCHours(0,0,0,0);var d=u.getTime(),w=m-d;return Math.floor(w/H)+1}L.exports=S.default},1354:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var O=P(y(1171)),_=P(y(79)),H=P(y(4275)),v=P(y(8734)),f=6048e5;function u(m){(0,v.default)(1,arguments);var d=(0,O.default)(m),w=(0,_.default)(d).getTime()-(0,H.default)(d).getTime();return Math.round(w/f)+1}L.exports=S.default},1370:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=v;var O=P(y(1171)),_=P(y(8734)),H=P(y(79));function v(f){(0,_.default)(1,arguments);var u=(0,O.default)(f),m=u.getUTCFullYear(),d=new Date(0);d.setUTCFullYear(m+1,0,4),d.setUTCHours(0,0,0,0);var w=(0,H.default)(d),D=new Date(0);D.setUTCFullYear(m,0,4),D.setUTCHours(0,0,0,0);var I=(0,H.default)(D);return u.getTime()>=w.getTime()?m+1:u.getTime()>=I.getTime()?m:m-1}L.exports=S.default},623:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var O=P(y(1171)),_=P(y(9209)),H=P(y(4118)),v=P(y(8734)),f=6048e5;function u(m,d){(0,v.default)(1,arguments);var w=(0,O.default)(m),D=(0,_.default)(w,d).getTime()-(0,H.default)(w,d).getTime();return Math.round(D/f)+1}L.exports=S.default},6226:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var O=P(y(1171)),_=P(y(8734)),H=P(y(9209)),v=P(y(2084)),f=y(8729);function u(m,d){var w,D,I,C,M,T,x,A;(0,_.default)(1,arguments);var R=(0,O.default)(m),F=R.getUTCFullYear(),j=(0,f.getDefaultOptions)(),G=(0,v.default)((w=(D=(I=(C=d==null?void 0:d.firstWeekContainsDate)!==null&&C!==void 0?C:d==null||(M=d.locale)===null||M===void 0||(T=M.options)===null||T===void 0?void 0:T.firstWeekContainsDate)!==null&&I!==void 0?I:j.firstWeekContainsDate)!==null&&D!==void 0?D:(x=j.locale)===null||x===void 0||(A=x.options)===null||A===void 0?void 0:A.firstWeekContainsDate)!==null&&w!==void 0?w:1);if(!(G>=1&&G<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var et=new Date(0);et.setUTCFullYear(F+1,0,G),et.setUTCHours(0,0,0,0);var $=(0,H.default)(et,d),z=new Date(0);z.setUTCFullYear(F,0,G),z.setUTCHours(0,0,0,0);var W=(0,H.default)(z,d);return R.getTime()>=$.getTime()?F+1:R.getTime()>=W.getTime()?F:F-1}L.exports=S.default},6736:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.isProtectedDayOfYearToken=O,S.isProtectedWeekYearToken=_,S.throwProtectedError=H;var y=["D","DD"],P=["YY","YYYY"];function O(v){return y.indexOf(v)!==-1}function _(v){return P.indexOf(v)!==-1}function H(v,f,u){if(v==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(f,"`) for formatting years to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(v==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(f,"`) for formatting years to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(v==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(f,"`) for formatting days of the month to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(v==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(f,"`) for formatting days of the month to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}},8734:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P,O){if(O.length<P)throw new TypeError(P+" argument"+(P>1?"s":"")+" required, but only "+O.length+" present")}L.exports=S.default},79:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=H;var O=P(y(1171)),_=P(y(8734));function H(v){(0,_.default)(1,arguments);var f=1,u=(0,O.default)(v),m=u.getUTCDay(),d=(m<f?7:0)+m-f;return u.setUTCDate(u.getUTCDate()-d),u.setUTCHours(0,0,0,0),u}L.exports=S.default},4275:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=v;var O=P(y(1370)),_=P(y(79)),H=P(y(8734));function v(f){(0,H.default)(1,arguments);var u=(0,O.default)(f),m=new Date(0);m.setUTCFullYear(u,0,4),m.setUTCHours(0,0,0,0);var d=(0,_.default)(m);return d}L.exports=S.default},9209:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=f;var O=P(y(1171)),_=P(y(8734)),H=P(y(2084)),v=y(8729);function f(u,m){var d,w,D,I,C,M,T,x;(0,_.default)(1,arguments);var A=(0,v.getDefaultOptions)(),R=(0,H.default)((d=(w=(D=(I=m==null?void 0:m.weekStartsOn)!==null&&I!==void 0?I:m==null||(C=m.locale)===null||C===void 0||(M=C.options)===null||M===void 0?void 0:M.weekStartsOn)!==null&&D!==void 0?D:A.weekStartsOn)!==null&&w!==void 0?w:(T=A.locale)===null||T===void 0||(x=T.options)===null||x===void 0?void 0:x.weekStartsOn)!==null&&d!==void 0?d:0);if(!(R>=0&&R<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var F=(0,O.default)(u),j=F.getUTCDay(),G=(j<R?7:0)+j-R;return F.setUTCDate(F.getUTCDate()-G),F.setUTCHours(0,0,0,0),F}L.exports=S.default},4118:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var O=P(y(6226)),_=P(y(8734)),H=P(y(9209)),v=P(y(2084)),f=y(8729);function u(m,d){var w,D,I,C,M,T,x,A;(0,_.default)(1,arguments);var R=(0,f.getDefaultOptions)(),F=(0,v.default)((w=(D=(I=(C=d==null?void 0:d.firstWeekContainsDate)!==null&&C!==void 0?C:d==null||(M=d.locale)===null||M===void 0||(T=M.options)===null||T===void 0?void 0:T.firstWeekContainsDate)!==null&&I!==void 0?I:R.firstWeekContainsDate)!==null&&D!==void 0?D:(x=R.locale)===null||x===void 0||(A=x.options)===null||A===void 0?void 0:A.firstWeekContainsDate)!==null&&w!==void 0?w:1),j=(0,O.default)(m,d),G=new Date(0);G.setUTCFullYear(j,0,F),G.setUTCHours(0,0,0,0);var et=(0,H.default)(G,d);return et}L.exports=S.default},2084:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){if(P===null||P===!0||P===!1)return NaN;var O=Number(P);return isNaN(O)?O:O<0?Math.ceil(O):Math.floor(O)}L.exports=S.default},5065:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=v;var O=P(y(2084)),_=P(y(1171)),H=P(y(8734));function v(f,u){(0,H.default)(2,arguments);var m=(0,_.default)(f).getTime(),d=(0,O.default)(u);return new Date(m+d)}L.exports=S.default},5616:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=R;var O=P(y(9989)),_=P(y(3239)),H=P(y(1171)),v=P(y(7100)),f=P(y(5209)),u=P(y(3561)),m=y(6736),d=P(y(2084)),w=P(y(8734)),D=y(8729),I=P(y(7561)),C=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,M=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,T=/^'([^]*?)'?$/,x=/''/g,A=/[a-zA-Z]/;function R(j,G,et){var $,z,W,Q,it,ft,xt,At,Ct,Ut,Dt,Et,Wt,le,Te,Me,Be,Re;(0,w.default)(2,arguments);var An=String(G),Qt=(0,D.getDefaultOptions)(),It=($=(z=et==null?void 0:et.locale)!==null&&z!==void 0?z:Qt.locale)!==null&&$!==void 0?$:I.default,ce=(0,d.default)((W=(Q=(it=(ft=et==null?void 0:et.firstWeekContainsDate)!==null&&ft!==void 0?ft:et==null||(xt=et.locale)===null||xt===void 0||(At=xt.options)===null||At===void 0?void 0:At.firstWeekContainsDate)!==null&&it!==void 0?it:Qt.firstWeekContainsDate)!==null&&Q!==void 0?Q:(Ct=Qt.locale)===null||Ct===void 0||(Ut=Ct.options)===null||Ut===void 0?void 0:Ut.firstWeekContainsDate)!==null&&W!==void 0?W:1);if(!(ce>=1&&ce<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var Fe=(0,d.default)((Dt=(Et=(Wt=(le=et==null?void 0:et.weekStartsOn)!==null&&le!==void 0?le:et==null||(Te=et.locale)===null||Te===void 0||(Me=Te.options)===null||Me===void 0?void 0:Me.weekStartsOn)!==null&&Wt!==void 0?Wt:Qt.weekStartsOn)!==null&&Et!==void 0?Et:(Be=Qt.locale)===null||Be===void 0||(Re=Be.options)===null||Re===void 0?void 0:Re.weekStartsOn)!==null&&Dt!==void 0?Dt:0);if(!(Fe>=0&&Fe<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!It.localize)throw new RangeError("locale must contain localize property");if(!It.formatLong)throw new RangeError("locale must contain formatLong property");var he=(0,H.default)(j);if(!(0,O.default)(he))throw new RangeError("Invalid time value");var Dn=(0,u.default)(he),Ye=(0,_.default)(he,Dn),En={firstWeekContainsDate:ce,weekStartsOn:Fe,locale:It,_originalDate:he},be=An.match(M).map(function(bt){var Vt=bt[0];if(Vt==="p"||Vt==="P"){var de=f.default[Vt];return de(bt,It.formatLong)}return bt}).join("").match(C).map(function(bt){if(bt==="''")return"'";var Vt=bt[0];if(Vt==="'")return F(bt);var de=v.default[Vt];if(de)return!(et!=null&&et.useAdditionalWeekYearTokens)&&(0,m.isProtectedWeekYearToken)(bt)&&(0,m.throwProtectedError)(bt,G,String(j)),!(et!=null&&et.useAdditionalDayOfYearTokens)&&(0,m.isProtectedDayOfYearToken)(bt)&&(0,m.throwProtectedError)(bt,G,String(j)),de(Ye,bt,It.localize,En);if(Vt.match(A))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Vt+"`");return bt}).join("");return be}function F(j){var G=j.match(T);return G?G[1].replace(x,"'"):j}L.exports=S.default},2382:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=H;var O=P(y(8698)),_=P(y(8734));function H(v){return(0,_.default)(1,arguments),v instanceof Date||(0,O.default)(v)==="object"&&Object.prototype.toString.call(v)==="[object Date]"}L.exports=S.default},9989:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=v;var O=P(y(2382)),_=P(y(1171)),H=P(y(8734));function v(f){if((0,H.default)(1,arguments),!(0,O.default)(f)&&typeof f!="number")return!1;var u=(0,_.default)(f);return!isNaN(Number(u))}L.exports=S.default},289:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){return function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_=O.width?String(O.width):P.defaultWidth,H=P.formats[_]||P.formats[P.defaultWidth];return H}}L.exports=S.default},6245:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){return function(O,_){var H=_!=null&&_.context?String(_.context):"standalone",v;if(H==="formatting"&&P.formattingValues){var f=P.defaultFormattingWidth||P.defaultWidth,u=_!=null&&_.width?String(_.width):f;v=P.formattingValues[u]||P.formattingValues[f]}else{var m=P.defaultWidth,d=_!=null&&_.width?String(_.width):P.defaultWidth;v=P.values[d]||P.values[m]}var w=P.argumentCallback?P.argumentCallback(O):O;return v[w]}}L.exports=S.default},3421:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(_){return function(H){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},f=v.width,u=f&&_.matchPatterns[f]||_.matchPatterns[_.defaultMatchWidth],m=H.match(u);if(!m)return null;var d=m[0],w=f&&_.parsePatterns[f]||_.parsePatterns[_.defaultParseWidth],D=Array.isArray(w)?O(w,function(M){return M.test(d)}):P(w,function(M){return M.test(d)}),I;I=_.valueCallback?_.valueCallback(D):D,I=v.valueCallback?v.valueCallback(I):I;var C=H.slice(d.length);return{value:I,rest:C}}}function P(_,H){for(var v in _)if(_.hasOwnProperty(v)&&H(_[v]))return v}function O(_,H){for(var v=0;v<_.length;v++)if(H(_[v]))return v}L.exports=S.default},8926:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P){return function(O){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},H=O.match(P.matchPattern);if(!H)return null;var v=H[0],f=O.match(P.parsePattern);if(!f)return null;var u=P.valueCallback?P.valueCallback(f[0]):f[0];u=_.valueCallback?_.valueCallback(u):u;var m=O.slice(v.length);return{value:u,rest:m}}}L.exports=S.default},1924:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var y={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},P=function(H,v,f){var u,m=y[H];return typeof m=="string"?u=m:v===1?u=m.one:u=m.other.replace("{{count}}",v.toString()),f!=null&&f.addSuffix?f.comparison&&f.comparison>0?"in "+u:u+" ago":u},O=P;S.default=O,L.exports=S.default},5062:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var O=P(y(289)),_={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},H={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},v={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},f={date:(0,O.default)({formats:_,defaultWidth:"full"}),time:(0,O.default)({formats:H,defaultWidth:"full"}),dateTime:(0,O.default)({formats:v,defaultWidth:"full"})},u=f;S.default=u,L.exports=S.default},5102:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var y={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},P=function(H,v,f,u){return y[H]},O=P;S.default=O,L.exports=S.default},7839:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var O=P(y(6245)),_={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},H={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},v={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},f={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},u={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},m={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},d=function(C,M){var T=Number(C),x=T%100;if(x>20||x<10)switch(x%10){case 1:return T+"st";case 2:return T+"nd";case 3:return T+"rd"}return T+"th"},w={ordinalNumber:d,era:(0,O.default)({values:_,defaultWidth:"wide"}),quarter:(0,O.default)({values:H,defaultWidth:"wide",argumentCallback:function(C){return C-1}}),month:(0,O.default)({values:v,defaultWidth:"wide"}),day:(0,O.default)({values:f,defaultWidth:"wide"}),dayPeriod:(0,O.default)({values:u,defaultWidth:"wide",formattingValues:m,defaultFormattingWidth:"wide"})},D=w;S.default=D,L.exports=S.default},9796:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var O=P(y(3421)),_=P(y(8926)),H=/^(\d+)(th|st|nd|rd)?/i,v=/\d+/i,f={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},u={any:[/^b/i,/^(a|c)/i]},m={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},d={any:[/1/i,/2/i,/3/i,/4/i]},w={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},D={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},I={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},C={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},M={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},T={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},x={ordinalNumber:(0,_.default)({matchPattern:H,parsePattern:v,valueCallback:function(F){return parseInt(F,10)}}),era:(0,O.default)({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:u,defaultParseWidth:"any"}),quarter:(0,O.default)({matchPatterns:m,defaultMatchWidth:"wide",parsePatterns:d,defaultParseWidth:"any",valueCallback:function(F){return F+1}}),month:(0,O.default)({matchPatterns:w,defaultMatchWidth:"wide",parsePatterns:D,defaultParseWidth:"any"}),day:(0,O.default)({matchPatterns:I,defaultMatchWidth:"wide",parsePatterns:C,defaultParseWidth:"any"}),dayPeriod:(0,O.default)({matchPatterns:M,defaultMatchWidth:"any",parsePatterns:T,defaultParseWidth:"any"})},A=x;S.default=A,L.exports=S.default},2512:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var O=P(y(1924)),_=P(y(5062)),H=P(y(5102)),v=P(y(7839)),f=P(y(9796)),u={code:"en-US",formatDistance:O.default,formatLong:_.default,formatRelative:H.default,localize:v.default,match:f.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},m=u;S.default=m,L.exports=S.default},3239:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=v;var O=P(y(5065)),_=P(y(8734)),H=P(y(2084));function v(f,u){(0,_.default)(2,arguments);var m=(0,H.default)(u);return(0,O.default)(f,-m)}L.exports=S.default},1171:(L,S,y)=>{"use strict";var P=y(4836).default;Object.defineProperty(S,"__esModule",{value:!0}),S.default=H;var O=P(y(8698)),_=P(y(8734));function H(v){(0,_.default)(1,arguments);var f=Object.prototype.toString.call(v);return v instanceof Date||(0,O.default)(v)==="object"&&f==="[object Date]"?new Date(v.getTime()):typeof v=="number"||f==="[object Number]"?new Date(v):((typeof v=="string"||f==="[object String]")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}L.exports=S.default},5171:L=>{L.exports=function(y){return!y||typeof y=="string"?!1:y instanceof Array||Array.isArray(y)||y.length>=0&&(y.splice instanceof Function||Object.getOwnPropertyDescriptor(y,y.length-1)&&y.constructor.name!=="String")}},6851:(L,S,y)=>{"use strict";var P=y(5171),O=Array.prototype.concat,_=Array.prototype.slice,H=L.exports=function(f){for(var u=[],m=0,d=f.length;m<d;m++){var w=f[m];P(w)?u=O.call(u,_.call(w)):u.push(w)}return u};H.wrap=function(v){return function(){return v(H(arguments))}}},4836:L=>{function S(y){return y&&y.__esModule?y:{default:y}}L.exports=S,L.exports.__esModule=!0,L.exports.default=L.exports},8698:L=>{function S(y){"@babel/helpers - typeof";return L.exports=S=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(P){return typeof P}:function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},L.exports.__esModule=!0,L.exports.default=L.exports,S(y)}L.exports=S,L.exports.__esModule=!0,L.exports.default=L.exports},5721:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(P,O,_,H,v,f,u){var m=new Date(0);return m.setUTCFullYear(P,O,_),m.setUTCHours(H,v,f,u),m}L.exports=S.default},5855:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(H,v,f){var u=_(H,f.timeZone,f.locale);return u.formatToParts?P(u,v):O(u,v)}function P(H,v){for(var f=H.formatToParts(v),u=f.length-1;u>=0;--u)if(f[u].type==="timeZoneName")return f[u].value}function O(H,v){var f=H.format(v).replace(/\u200E/g,""),u=/ [\w-+ ]+$/.exec(f);return u?u[0].substr(1):""}function _(H,v,f){if(f&&!f.code)throw new Error("date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`");return new Intl.DateTimeFormat(f?[f.code,"en-US"]:void 0,{timeZone:v,timeZoneName:H})}L.exports=S.default},2734:(L,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var P=_(y(2712)),O=_(y(5721));function _(M){return M&&M.__esModule?M:{default:M}}var H=36e5,v=6e4,f={timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-]\d{2})$/,timezoneHHMM:/^([+-]\d{2}):?(\d{2})$/};function u(M,T,x){var A,R;if(!M||(A=f.timezoneZ.exec(M),A))return 0;var F;if(A=f.timezoneHH.exec(M),A)return F=parseInt(A[1],10),D(F)?-(F*H):NaN;if(A=f.timezoneHHMM.exec(M),A){F=parseInt(A[1],10);var j=parseInt(A[2],10);return D(F,j)?(R=Math.abs(F)*H+j*v,F>0?-R:R):NaN}if(C(M)){T=new Date(T||Date.now());var G=x?T:m(T),et=d(G,M),$=x?et:w(T,et,M);return-$}return NaN}function m(M){return(0,O.default)(M.getFullYear(),M.getMonth(),M.getDate(),M.getHours(),M.getMinutes(),M.getSeconds(),M.getMilliseconds())}function d(M,T){var x=(0,P.default)(M,T),A=(0,O.default)(x[0],x[1]-1,x[2],x[3]%24,x[4],x[5],0).getTime(),R=M.getTime(),F=R%1e3;return R-=F>=0?F:1e3+F,A-R}function w(M,T,x){var A=M.getTime(),R=A-T,F=d(new Date(R),x);if(T===F)return T;R-=F-T;var j=d(new Date(R),x);return F===j?F:Math.max(F,j)}function D(M,T){return-23<=M&&M<=23&&(T==null||0<=T&&T<=59)}var I={};function C(M){if(I[M])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:M}),I[M]=!0,!0}catch(T){return!1}}L.exports=S.default},7048:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var y=/(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/,P=y;S.default=P,L.exports=S.default},2712:(L,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=y;function y(f,u){var m=v(u);return m.formatToParts?O(m,f):_(m,f)}var P={year:0,month:1,day:2,hour:3,minute:4,second:5};function O(f,u){try{for(var m=f.formatToParts(u),d=[],w=0;w<m.length;w++){var D=P[m[w].type];D>=0&&(d[D]=parseInt(m[w].value,10))}return d}catch(I){if(I instanceof RangeError)return[NaN];throw I}}function _(f,u){var m=f.format(u).replace(/\u200E/g,""),d=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(m);return[d[3],d[1],d[2],d[4],d[5],d[6]]}var H={};function v(f){if(!H[f]){var u=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:"America/New_York",year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z")),m=u==="06/25/2014, 00:00:00"||u==="\u200E06\u200E/\u200E25\u200E/\u200E2014\u200E \u200E00\u200E:\u200E00\u200E:\u200E00";H[f]=m?new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:f,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:f,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return H[f]}L.exports=S.default},3826:(L,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=void 0;var P=_(y(5855)),O=_(y(2734));function _(I){return I&&I.__esModule?I:{default:I}}var H=60*1e3,v={X:function(I,C,M,T){var x=f(T.timeZone,T._originalDate||I);if(x===0)return"Z";switch(C){case"X":return d(x);case"XXXX":case"XX":return m(x);case"XXXXX":case"XXX":default:return m(x,":")}},x:function(I,C,M,T){var x=f(T.timeZone,T._originalDate||I);switch(C){case"x":return d(x);case"xxxx":case"xx":return m(x);case"xxxxx":case"xxx":default:return m(x,":")}},O:function(I,C,M,T){var x=f(T.timeZone,T._originalDate||I);switch(C){case"O":case"OO":case"OOO":return"GMT"+w(x,":");case"OOOO":default:return"GMT"+m(x,":")}},z:function(I,C,M,T){var x=T._originalDate||I;switch(C){case"z":case"zz":case"zzz":return(0,P.default)("short",x,T);case"zzzz":default:return(0,P.default)("long",x,T)}}};function f(I,C){var M=I?(0,O.default)(I,C,!0)/H:C.getTimezoneOffset();if(Number.isNaN(M))throw new RangeError("Invalid time zone specified: "+I);return M}function u(I,C){for(var M=I<0?"-":"",T=Math.abs(I).toString();T.length<C;)T="0"+T;return M+T}function m(I,C){var M=C||"",T=I>0?"-":"+",x=Math.abs(I),A=u(Math.floor(x/60),2),R=u(Math.floor(x%60),2);return T+A+M+R}function d(I,C){if(I%60===0){var M=I>0?"-":"+";return M+u(Math.abs(I)/60,2)}return m(I,C)}function w(I,C){var M=I>0?"-":"+",T=Math.abs(I),x=Math.floor(T/60),A=T%60;if(A===0)return M+String(x);var R=C||"";return M+String(x)+R+u(A,2)}var D=v;S.default=D,L.exports=S.default},6558:(L,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=f;var P=H(y(5616)),O=H(y(3826)),_=H(y(1476));function H(u){return u&&u.__esModule?u:{default:u}}var v=/([xXOz]+)|''|'(''|[^'])+('|$)/g;function f(u,m,d){var w=String(m),D=d||{},I=w.match(v);if(I){var C=(0,_.default)(u,D);w=I.reduce(function(M,T){if(T[0]==="'")return M;var x=M.indexOf(T),A=M[x-1]==="'",R=M.replace(T,"'"+O.default[T[0]](C,T,null,D)+"'");return A?R.substring(0,x-1)+R.substring(x+1):R},w)}return(0,P.default)(u,w,D)}L.exports=S.default},6645:(L,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=v;var P=H(y(6420)),O=H(y(6558)),_=H(y(1132));function H(f){return f&&f.__esModule?f:{default:f}}function v(f,u,m,d){var w=(0,P.default)(d);return w.timeZone=u,(0,O.default)((0,_.default)(f,u),m,w)}L.exports=S.default},4992:(L,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=_;var P=O(y(2734));function O(H){return H&&H.__esModule?H:{default:H}}function _(H,v){return-(0,P.default)(H,v)}L.exports=S.default},722:(L,S,y)=>{"use strict";L.exports={format:y(6558),formatInTimeZone:y(6645),getTimezoneOffset:y(4992),toDate:y(1476),utcToZonedTime:y(1132),zonedTimeToUtc:y(8516)}},1476:(L,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=w;var P=v(y(2084)),O=v(y(3561)),_=v(y(2734)),H=v(y(7048));function v($){return $&&$.__esModule?$:{default:$}}var f=36e5,u=6e4,m=2,d={dateTimePattern:/^([0-9W+-]+)(T| )(.*)/,datePattern:/^([0-9W+-]+)(.*)/,plainTime:/:/,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timeZone:H.default};function w($,z){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if($===null)return new Date(NaN);var W=z||{},Q=W.additionalDigits==null?m:(0,P.default)(W.additionalDigits);if(Q!==2&&Q!==1&&Q!==0)throw new RangeError("additionalDigits must be 0, 1 or 2");if($ instanceof Date||typeof $=="object"&&Object.prototype.toString.call($)==="[object Date]")return new Date($.getTime());if(typeof $=="number"||Object.prototype.toString.call($)==="[object Number]")return new Date($);if(!(typeof $=="string"||Object.prototype.toString.call($)==="[object String]"))return new Date(NaN);var it=D($),ft=I(it.date,Q),xt=ft.year,At=ft.restDateString,Ct=C(At,xt);if(isNaN(Ct))return new Date(NaN);if(Ct){var Ut=Ct.getTime(),Dt=0,Et;if(it.time&&(Dt=M(it.time),isNaN(Dt)))return new Date(NaN);if(it.timeZone||W.timeZone){if(Et=(0,_.default)(it.timeZone||W.timeZone,new Date(Ut+Dt)),isNaN(Et))return new Date(NaN)}else Et=(0,O.default)(new Date(Ut+Dt)),Et=(0,O.default)(new Date(Ut+Dt+Et));return new Date(Ut+Dt+Et)}else return new Date(NaN)}function D($){var z={},W=d.dateTimePattern.exec($),Q;if(W?(z.date=W[1],Q=W[3]):(W=d.datePattern.exec($),W?(z.date=W[1],Q=W[2]):(z.date=null,Q=$)),Q){var it=d.timeZone.exec(Q);it?(z.time=Q.replace(it[1],""),z.timeZone=it[1].trim()):z.time=Q}return z}function I($,z){var W=d.YYY[z],Q=d.YYYYY[z],it;if(it=d.YYYY.exec($)||Q.exec($),it){var ft=it[1];return{year:parseInt(ft,10),restDateString:$.slice(ft.length)}}if(it=d.YY.exec($)||W.exec($),it){var xt=it[1];return{year:parseInt(xt,10)*100,restDateString:$.slice(xt.length)}}return{year:null}}function C($,z){if(z===null)return null;var W,Q,it,ft;if($.length===0)return Q=new Date(0),Q.setUTCFullYear(z),Q;if(W=d.MM.exec($),W)return Q=new Date(0),it=parseInt(W[1],10)-1,F(z,it)?(Q.setUTCFullYear(z,it),Q):new Date(NaN);if(W=d.DDD.exec($),W){Q=new Date(0);var xt=parseInt(W[1],10);return j(z,xt)?(Q.setUTCFullYear(z,0,xt),Q):new Date(NaN)}if(W=d.MMDD.exec($),W){Q=new Date(0),it=parseInt(W[1],10)-1;var At=parseInt(W[2],10);return F(z,it,At)?(Q.setUTCFullYear(z,it,At),Q):new Date(NaN)}if(W=d.Www.exec($),W)return ft=parseInt(W[1],10)-1,G(z,ft)?T(z,ft):new Date(NaN);if(W=d.WwwD.exec($),W){ft=parseInt(W[1],10)-1;var Ct=parseInt(W[2],10)-1;return G(z,ft,Ct)?T(z,ft,Ct):new Date(NaN)}return null}function M($){var z,W,Q;if(z=d.HH.exec($),z)return W=parseFloat(z[1].replace(",",".")),et(W)?W%24*f:NaN;if(z=d.HHMM.exec($),z)return W=parseInt(z[1],10),Q=parseFloat(z[2].replace(",",".")),et(W,Q)?W%24*f+Q*u:NaN;if(z=d.HHMMSS.exec($),z){W=parseInt(z[1],10),Q=parseInt(z[2],10);var it=parseFloat(z[3].replace(",","."));return et(W,Q,it)?W%24*f+Q*u+it*1e3:NaN}return null}function T($,z,W){z=z||0,W=W||0;var Q=new Date(0);Q.setUTCFullYear($,0,4);var it=Q.getUTCDay()||7,ft=z*7+W+1-it;return Q.setUTCDate(Q.getUTCDate()+ft),Q}var x=[31,28,31,30,31,30,31,31,30,31,30,31],A=[31,29,31,30,31,30,31,31,30,31,30,31];function R($){return $%400===0||$%4===0&&$%100!==0}function F($,z,W){if(z<0||z>11)return!1;if(W!=null){if(W<1)return!1;var Q=R($);if(Q&&W>A[z]||!Q&&W>x[z])return!1}return!0}function j($,z){if(z<1)return!1;var W=R($);return!(W&&z>366||!W&&z>365)}function G($,z,W){return!(z<0||z>52||W!=null&&(W<0||W>6))}function et($,z,W){return!($!=null&&($<0||$>=25)||z!=null&&(z<0||z>=60)||W!=null&&(W<0||W>=60))}L.exports=S.default},1132:(L,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=H;var P=_(y(2734)),O=_(y(1476));function _(v){return v&&v.__esModule?v:{default:v}}function H(v,f,u){var m=(0,O.default)(v,u),d=(0,P.default)(f,m,!0),w=new Date(m.getTime()-d),D=new Date(0);return D.setFullYear(w.getUTCFullYear(),w.getUTCMonth(),w.getUTCDate()),D.setHours(w.getUTCHours(),w.getUTCMinutes(),w.getUTCSeconds(),w.getUTCMilliseconds()),D}L.exports=S.default},8516:(L,S,y)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=u;var P=f(y(6420)),O=f(y(1476)),_=f(y(7048)),H=f(y(2734)),v=f(y(5721));function f(m){return m&&m.__esModule?m:{default:m}}function u(m,d,w){if(typeof m=="string"&&!m.match(_.default)){var D=(0,P.default)(w);return D.timeZone=d,(0,O.default)(m,D)}var I=(0,O.default)(m,w),C=(0,v.default)(I.getFullYear(),I.getMonth(),I.getDate(),I.getHours(),I.getMinutes(),I.getSeconds(),I.getMilliseconds()).getTime(),M=(0,H.default)(d,new Date(C));return new Date(C+M)}L.exports=S.default}},Ps={};function _t(L){var S=Ps[L];if(S!==void 0)return S.exports;var y=Ps[L]={exports:{}};return Na[L](y,y.exports,_t),y.exports}_t.n=L=>{var S=L&&L.__esModule?()=>L.default:()=>L;return _t.d(S,{a:S}),S},_t.d=(L,S)=>{for(var y in S)_t.o(S,y)&&!_t.o(L,y)&&Object.defineProperty(L,y,{enumerable:!0,get:S[y]})},_t.o=(L,S)=>Object.prototype.hasOwnProperty.call(L,S),_t.r=L=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(L,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(L,"__esModule",{value:!0})};var _n={};(()=>{"use strict";_t.r(_n),_t.d(_n,{Chart:()=>Ba,createChart:()=>Cg,generateCandlesData:()=>bg});function L(n){return typeof n=="function"}function S(n){return L(n==null?void 0:n.lift)}function y(n){return function(t){if(S(t))return t.lift(function(e){try{return n(e,this)}catch(s){this.error(s)}});throw new TypeError("Unable to lift unknown Observable type")}}var P=function(n,t){return P=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,s){e.__proto__=s}||function(e,s){for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r])},P(n,t)};function O(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");P(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var _=function(){return _=Object.assign||function(t){for(var e,s=1,r=arguments.length;s<r;s++){e=arguments[s];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t},_.apply(this,arguments)};function H(n,t){var e={};for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&t.indexOf(s)<0&&(e[s]=n[s]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,s=Object.getOwnPropertySymbols(n);r<s.length;r++)t.indexOf(s[r])<0&&Object.prototype.propertyIsEnumerable.call(n,s[r])&&(e[s[r]]=n[s[r]]);return e}function v(n,t,e,s){var r=arguments.length,i=r<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,s);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(r<3?a(i):r>3?a(t,e,i):a(t,e))||i);return r>3&&i&&Object.defineProperty(t,e,i),i}function f(n,t){return function(e,s){t(e,s,n)}}function u(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}function m(n,t,e,s){function r(i){return i instanceof e?i:new e(function(a){a(i)})}return new(e||(e=Promise))(function(i,a){function o(h){try{c(s.next(h))}catch(g){a(g)}}function l(h){try{c(s.throw(h))}catch(g){a(g)}}function c(h){h.done?i(h.value):r(h.value).then(o,l)}c((s=s.apply(n,t||[])).next())})}function d(n,t){var e={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},s,r,i,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(c){return function(h){return l([c,h])}}function l(c){if(s)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(e=0)),e;)try{if(s=1,r&&(i=c[0]&2?r.return:c[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,c[1])).done)return i;switch(r=0,i&&(c=[c[0]&2,i.value]),c[0]){case 0:case 1:i=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,r=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(i=e.trys,!(i=i.length>0&&i[i.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]<i[3])){e.label=c[1];break}if(c[0]===6&&e.label<i[1]){e.label=i[1],i=c;break}if(i&&e.label<i[2]){e.label=i[2],e.ops.push(c);break}i[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(n,e)}catch(h){c=[6,h],r=0}finally{s=i=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}var w=Object.create?function(n,t,e,s){s===void 0&&(s=e);var r=Object.getOwnPropertyDescriptor(t,e);(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[e]}}),Object.defineProperty(n,s,r)}:function(n,t,e,s){s===void 0&&(s=e),n[s]=t[e]};function D(n,t){for(var e in n)e!=="default"&&!Object.prototype.hasOwnProperty.call(t,e)&&w(t,n,e)}function I(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],s=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&s>=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function C(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var s=e.call(n),r,i=[],a;try{for(;(t===void 0||t-- >0)&&!(r=s.next()).done;)i.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=s.return)&&e.call(s)}finally{if(a)throw a.error}}return i}function M(){for(var n=[],t=0;t<arguments.length;t++)n=n.concat(C(arguments[t]));return n}function T(){for(var n=0,t=0,e=arguments.length;t<e;t++)n+=arguments[t].length;for(var s=Array(n),r=0,t=0;t<e;t++)for(var i=arguments[t],a=0,o=i.length;a<o;a++,r++)s[r]=i[a];return s}function x(n,t,e){if(e||arguments.length===2)for(var s=0,r=t.length,i;s<r;s++)(i||!(s in t))&&(i||(i=Array.prototype.slice.call(t,0,s)),i[s]=t[s]);return n.concat(i||Array.prototype.slice.call(t))}function A(n){return this instanceof A?(this.v=n,this):new A(n)}function R(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s=e.apply(n,t||[]),r,i=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(p){s[p]&&(r[p]=function(b){return new Promise(function(E,B){i.push([p,b,E,B])>1||o(p,b)})})}function o(p,b){try{l(s[p](b))}catch(E){g(i[0][3],E)}}function l(p){p.value instanceof A?Promise.resolve(p.value.v).then(c,h):g(i[0][2],p)}function c(p){o("next",p)}function h(p){o("throw",p)}function g(p,b){p(b),i.shift(),i.length&&o(i[0][0],i[0][1])}}function F(n){var t,e;return t={},s("next"),s("throw",function(r){throw r}),s("return"),t[Symbol.iterator]=function(){return this},t;function s(r,i){t[r]=n[r]?function(a){return(e=!e)?{value:A(n[r](a)),done:r==="return"}:i?i(a):a}:i}}function j(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=n[Symbol.asyncIterator],e;return t?t.call(n):(n=typeof I=="function"?I(n):n[Symbol.iterator](),e={},s("next"),s("throw"),s("return"),e[Symbol.asyncIterator]=function(){return this},e);function s(i){e[i]=n[i]&&function(a){return new Promise(function(o,l){a=n[i](a),r(o,l,a.done,a.value)})}}function r(i,a,o,l){Promise.resolve(l).then(function(c){i({value:c,done:o})},a)}}function G(n,t){return Object.defineProperty?Object.defineProperty(n,"raw",{value:t}):n.raw=t,n}var et=Object.create?function(n,t){Object.defineProperty(n,"default",{enumerable:!0,value:t})}:function(n,t){n.default=t};function $(n){if(n&&n.__esModule)return n;var t={};if(n!=null)for(var e in n)e!=="default"&&Object.prototype.hasOwnProperty.call(n,e)&&w(t,n,e);return et(t,n),t}function z(n){return n&&n.__esModule?n:{default:n}}function W(n,t,e,s){if(e==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?n!==t||!s:!t.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?s:e==="a"?s.call(n):s?s.value:t.get(n)}function Q(n,t,e,s,r){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?n!==t||!r:!t.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?r.call(n,e):r?r.value=e:t.set(n,e),e}function it(n,t){if(t===null||typeof t!="object"&&typeof t!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof n=="function"?t===n:n.has(t)}function ft(n){var t=function(s){Error.call(s),s.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var xt=ft(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
7
7
  `+e.map(function(s,r){return r+1+") "+s.toString()}).join(`
8
- `):"",this.name="UnsubscriptionError",this.errors=e}});function At(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var Ct=function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,s,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var o=E(a),l=o.next();!l.done;l=o.next()){var c=l.value;c.remove(this)}}catch(B){t={error:B}}finally{try{l&&!l.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}else a.remove(this);var h=this.initialTeardown;if(I(h))try{h()}catch(B){i=B instanceof xt?B.errors:[B]}var v=this._finalizers;if(v){this._finalizers=null;try{for(var p=E(v),C=p.next();!C.done;C=p.next()){var O=C.value;try{Et(O)}catch(B){i=i!=null?i:[],B instanceof xt?i=x(x([],b(i)),b(B.errors)):i.push(B)}}}catch(B){s={error:B}}finally{try{C&&!C.done&&(r=p.return)&&r.call(p)}finally{if(s)throw s.error}}}if(i)throw new xt(i)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)Et(t);else{if(t instanceof n){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(t)}},n.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},n.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},n.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&At(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&At(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=function(){var t=new n;return t.closed=!0,t}(),n}(),jt=Ct.EMPTY;function Dt(n){return n instanceof Ct||n&&"closed"in n&&I(n.remove)&&I(n.add)&&I(n.unsubscribe)}function Et(n){I(n)?n():n.unsubscribe()}var Ut={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},oe={setTimeout:function(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];var r=oe.delegate;return r!=null&&r.setTimeout?r.setTimeout.apply(r,x([n,t],b(e))):setTimeout.apply(void 0,x([n,t],b(e)))},clearTimeout:function(n){var t=oe.delegate;return((t==null?void 0:t.clearTimeout)||clearTimeout)(n)},delegate:void 0};function xe(n){oe.setTimeout(function(){var t=Ut.onUnhandledError;if(t)t(n);else throw n})}function Pe(){}var Oe=function(){return Jt("C",void 0,void 0)}();function Le(n){return Jt("E",void 0,n)}function Mn(n){return Jt("N",n,void 0)}function Jt(n,t,e){return{kind:n,value:t,error:e}}var Ot=null;function le(n){if(Ut.useDeprecatedSynchronousErrorHandling){var t=!Ot;if(t&&(Ot={errorThrown:!1,error:null}),n(),t){var e=Ot,s=e.errorThrown,r=e.error;if(Ot=null,s)throw r}}else n()}function Ie(n){Ut.useDeprecatedSynchronousErrorHandling&&Ot&&(Ot.errorThrown=!0,Ot.error=n)}var ce=function(n){L(t,n);function t(e){var s=n.call(this)||this;return s.isStopped=!1,e?(s.destination=e,Dt(e)&&e.add(s)):s.destination=Ba,s}return t.create=function(e,s,r){return new me(e,s,r)},t.prototype.next=function(e){this.isStopped?he(Mn(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?he(Le(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?he(Oe,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Ct),_n=Function.prototype.bind;function Be(n,t){return _n.call(n,t)}var An=function(){function n(t){this.partialObserver=t}return n.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(s){bt(s)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(s){bt(s)}else bt(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){bt(e)}},n}(),me=function(n){L(t,n);function t(e,s,r){var i=n.call(this)||this,a;if(I(e)||!e)a={next:e!=null?e:void 0,error:s!=null?s:void 0,complete:r!=null?r:void 0};else{var o;i&&Ut.useDeprecatedNextContext?(o=Object.create(e),o.unsubscribe=function(){return i.unsubscribe()},a={next:e.next&&Be(e.next,o),error:e.error&&Be(e.error,o),complete:e.complete&&Be(e.complete,o)}):a=e}return i.destination=new An(a),i}return t}(ce);function bt(n){Ut.useDeprecatedSynchronousErrorHandling?Ie(n):xe(n)}function Xt(n){throw n}function he(n,t){var e=Ut.onStoppedNotification;e&&oe.setTimeout(function(){return e(n,t)})}var Ba={closed:!0,next:Pe,error:Xt,complete:Pe};function Wt(n,t,e,s,r){return new Ra(n,t,e,s,r)}var Ra=function(n){L(t,n);function t(e,s,r,i,a,o){var l=n.call(this,e)||this;return l.onFinalize=a,l.shouldUnsubscribe=o,l._next=s?function(c){try{s(c)}catch(h){e.error(h)}}:n.prototype._next,l._error=i?function(c){try{i(c)}catch(h){e.error(h)}finally{this.unsubscribe()}}:n.prototype._error,l._complete=r?function(){try{r()}catch(c){e.error(c)}finally{this.unsubscribe()}}:n.prototype._complete,l}return t.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var s=this.closed;n.prototype.unsubscribe.call(this),!s&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t}(ce);function yt(n,t){return y(function(e,s){var r=0;e.subscribe(Wt(s,function(i){s.next(n.call(t,i,r++))}))})}var Ts=function(n){return n&&typeof n.length=="number"&&typeof n!="function"};function Ms(n){return I(n==null?void 0:n.then)}var Dn=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function Te(n){return n}function fg(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return _s(n)}function _s(n){return n.length===0?Te:n.length===1?n[0]:function(e){return n.reduce(function(s,r){return r(s)},e)}}var Pt=function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,s){var r=this,i=Ya(t)?t:new me(t,e,s);return le(function(){var a=r,o=a.operator,l=a.source;i.add(o?o.call(i,l):l?r._subscribe(i):r._trySubscribe(i))}),i},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var s=this;return e=As(e),new e(function(r,i){var a=new me({next:function(o){try{t(o)}catch(l){i(l),a.unsubscribe()}},error:i,complete:r});s.subscribe(a)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[Dn]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return _s(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=As(t),new t(function(s,r){var i;e.subscribe(function(a){return i=a},function(a){return r(a)},function(){return s(i)})})},n.create=function(t){return new n(t)},n}();function As(n){var t;return(t=n!=null?n:Ut.Promise)!==null&&t!==void 0?t:Promise}function Fa(n){return n&&I(n.next)&&I(n.error)&&I(n.complete)}function Ya(n){return n&&n instanceof ce||Fa(n)&&Dt(n)}function Ds(n){return I(n[Dn])}function Es(n){return Symbol.asyncIterator&&I(n==null?void 0:n[Symbol.asyncIterator])}function Os(n){return new TypeError("You provided "+(n!==null&&typeof n=="object"?"an invalid object":"'"+n+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ha(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Ls=Ha();function Is(n){return I(n==null?void 0:n[Ls])}function Bs(n){return R(this,arguments,function(){var e,s,r,i;return d(this,function(a){switch(a.label){case 0:e=n.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,A(e.read())];case 3:return s=a.sent(),r=s.value,i=s.done,i?[4,A(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,A(r)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function Rs(n){return I(n==null?void 0:n.getReader)}function Qt(n){if(n instanceof Pt)return n;if(n!=null){if(Ds(n))return Na(n);if(Ts(n))return ka(n);if(Ms(n))return ja(n);if(Es(n))return Fs(n);if(Is(n))return Ua(n);if(Rs(n))return Wa(n)}throw Os(n)}function Na(n){return new Pt(function(t){var e=n[Dn]();if(I(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function ka(n){return new Pt(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function ja(n){return new Pt(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,xe)})}function Ua(n){return new Pt(function(t){var e,s;try{for(var r=E(n),i=r.next();!i.done;i=r.next()){var a=i.value;if(t.next(a),t.closed)return}}catch(o){e={error:o}}finally{try{i&&!i.done&&(s=r.return)&&s.call(r)}finally{if(e)throw e.error}}t.complete()})}function Fs(n){return new Pt(function(t){za(n,t).catch(function(e){return t.error(e)})})}function Wa(n){return Fs(Bs(n))}function za(n,t){var e,s,r,i;return m(this,void 0,void 0,function(){var a,o;return d(this,function(l){switch(l.label){case 0:l.trys.push([0,5,6,11]),e=j(n),l.label=1;case 1:return[4,e.next()];case 2:if(s=l.sent(),!!s.done)return[3,4];if(a=s.value,t.next(a),t.closed)return[2];l.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return o=l.sent(),r={error:o},[3,11];case 6:return l.trys.push([6,,9,10]),s&&!s.done&&(i=e.return)?[4,i.call(e)]:[3,8];case 7:l.sent(),l.label=8;case 8:return[3,10];case 9:if(r)throw r.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function qt(n,t,e,s,r){s===void 0&&(s=0),r===void 0&&(r=!1);var i=t.schedule(function(){e(),r?n.add(this.schedule(null,s)):this.unsubscribe()},s);if(n.add(i),!r)return i}function Xa(n,t,e,s,r,i,a,o){var l=[],c=0,h=0,v=!1,p=function(){v&&!l.length&&!c&&t.complete()},C=function(B){return c<s?O(B):l.push(B)},O=function(B){i&&t.next(B),c++;var H=!1;Qt(e(B,h++)).subscribe(Wt(t,function(k){r==null||r(k),i?C(k):t.next(k)},function(){H=!0},void 0,function(){if(H)try{c--;for(var k=function(){var z=l.shift();a?qt(t,a,function(){return O(z)}):O(z)};l.length&&c<s;)k();p()}catch(z){t.error(z)}}))};return n.subscribe(Wt(t,C,function(){v=!0,p()})),function(){o==null||o()}}function Ys(n,t,e){return e===void 0&&(e=1/0),I(t)?Ys(function(s,r){return yt(function(i,a){return t(s,i,r,a)})(Qt(n(s,r)))},e):(typeof t=="number"&&(e=t),y(function(s,r){return Xa(s,r,n,e)}))}function Hs(n){return n===void 0&&(n=1/0),Ys(Te,n)}var Ns=new Pt(function(n){return n.complete()});function gg(n){return n?Va(n):Ns}function Va(n){return new Observable(function(t){return n.schedule(function(){return t.complete()})})}function ks(n){return n&&I(n.schedule)}function En(n){return n[n.length-1]}function Ga(n){return I(En(n))?n.pop():void 0}function Ze(n){return ks(En(n))?n.pop():void 0}function $a(n,t){return typeof En(n)=="number"?n.pop():t}function js(n,t){return t===void 0&&(t=0),y(function(e,s){e.subscribe(Wt(s,function(r){return qt(s,n,function(){return s.next(r)},t)},function(){return qt(s,n,function(){return s.complete()},t)},function(r){return qt(s,n,function(){return s.error(r)},t)}))})}function Us(n,t){return t===void 0&&(t=0),y(function(e,s){s.add(n.schedule(function(){return e.subscribe(s)},t))})}function Za(n,t){return Qt(n).pipe(Us(t),js(t))}function Ka(n,t){return Qt(n).pipe(Us(t),js(t))}function Ja(n,t){return new Pt(function(e){var s=0;return t.schedule(function(){s===n.length?e.complete():(e.next(n[s++]),e.closed||this.schedule())})})}function Qa(n,t){return new Pt(function(e){var s;return qt(e,t,function(){s=n[Ls](),qt(e,t,function(){var r,i,a;try{r=s.next(),i=r.value,a=r.done}catch(o){e.error(o);return}a?e.complete():e.next(i)},0,!0)}),function(){return I(s==null?void 0:s.return)&&s.return()}})}function Ws(n,t){if(!n)throw new Error("Iterable cannot be null");return new Pt(function(e){qt(e,t,function(){var s=n[Symbol.asyncIterator]();qt(e,t,function(){s.next().then(function(r){r.done?e.complete():e.next(r.value)})},0,!0)})})}function qa(n,t){return Ws(Bs(n),t)}function to(n,t){if(n!=null){if(Ds(n))return Za(n,t);if(Ts(n))return Ja(n,t);if(Ms(n))return Ka(n,t);if(Es(n))return Ws(n,t);if(Is(n))return Qa(n,t);if(Rs(n))return qa(n,t)}throw Os(n)}function Ke(n,t){return t?to(n,t):Qt(n)}function Lt(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Ze(n),s=$a(n,1/0),r=n;return r.length?r.length===1?Qt(r[0]):Hs(s)(Ke(r,e)):Ns}class On{constructor(t,e){this.onTickFunction=e,this.animationTimeLeft=0,this.animationInProgress=!1,this.animationTime=t.duration,this.animationTimeLeft=t.timeLeft===void 0?t.duration:t.timeLeft,this.animationInProgress=!0}tick(){this.animationTimeLeft<=0?this.animationInProgress=!1:this.animationTimeLeft--,this.onTickFunction&&this.onTickFunction()}getProgress(){return 1-this.animationTimeLeft/this.animationTime}finishAnimation(){this.animationInProgress=!1,this.animationTimeLeft=0}}var eo=_t(6767),Vt=_t.n(eo);class no extends On{constructor(t,e,s=()=>{}){super(t,s),this.colorConfigs=e,e.forEach(r=>{r.rgbColor=Vt().rgb(r.color),r.initialAlpha=r.rgbColor.valpha,r.currentAnimationColor=r.rgbColor})}tick(){super.tick(),this.animationInProgress&&this.colorConfigs.forEach(t=>{t.initialAlpha===void 0||t.rgbColor===void 0||(t.type==="fading"?t.currentAnimationColor=t.rgbColor.alpha(t.initialAlpha*this.animationTimeLeft/this.animationTime):t.type==="appearing"&&(t.currentAnimationColor=t.rgbColor.alpha(t.initialAlpha*(1-this.animationTimeLeft/this.animationTime))))})}getColor(t){var e,s;return(s=(e=this.colorConfigs[t].currentAnimationColor)==null?void 0:e.toString())!=null?s:"#FFFFFF"}revert(){this.animationTimeLeft=Math.max(this.animationTime-this.animationTimeLeft,1),this.colorConfigs.forEach(t=>{t.type==="fading"?t.type="appearing":t.type="fading"})}}class so extends On{constructor(t,e,s=()=>{}){super(t,s),this.colorConfigs=e,e.forEach(r=>{r.rgbStartColor=Vt().rgb(r.startColor),r.rgbEndColor=Vt().rgb(r.endColor),r.currentAnimationColor=r.type==="appearing"?r.rgbStartColor:r.rgbEndColor})}tick(){super.tick(),this.animationInProgress&&this.colorConfigs.forEach(t=>{const e=1-this.animationTimeLeft/this.animationTime;!t.rgbStartColor||!t.rgbEndColor||(t.type==="fading"?t.currentAnimationColor=this.calculateTransitionColor(t.rgbEndColor,t.rgbStartColor,e):t.type==="appearing"&&(t.currentAnimationColor=this.calculateTransitionColor(t.rgbStartColor,t.rgbEndColor,e)))})}getColor(t){var e,s;return(s=(e=this.colorConfigs[t].currentAnimationColor)==null?void 0:e.toString())!=null?s:"#FFFFFF"}revert(){this.animationTimeLeft=Math.max(this.animationTime-this.animationTimeLeft,1),this.colorConfigs.forEach(t=>{t.type==="fading"?t.type="appearing":t.type="fading"})}moveToLastTick(){this.animationTimeLeft=1}calculateTransitionColor(t,e,s){const r=t.red()-(t.red()-e.red())*s,i=t.green()-(t.green()-e.green())*s,a=t.blue()-(t.blue()-e.blue())*s;return Vt().rgb(r,i,a)}}var ro=Math.pow;const Je=14,Qe=[];for(let n=0;n<Je+1;n++)Qe.push(ro(10,n));const Ln=5e-13;class wt{static roundToNearest(t,e){return isFinite(t)?wt.isZero(t)?0:(t>0?t+=Ln:t<0&&(t-=Ln),wt.roundDecimal(Math.round(wt.roundDecimal(t/e))*e)):t}static roundUpToNearest(t,e){return wt.roundDecimal(Math.ceil(t/e))*e}static roundDecimal(t){if(isNaN(t)||t===Math.floor(t))return t;const e=Math.sign(t),s=Math.abs(t),r=Math.min(Je,Je-1-Math.floor(Math.log10(s)));for(let i=r;i>=0;i--){const a=Math.floor(Qe[i]*s+.5);if(a<Qe[Je])return e*a/Qe[i]}return Math.round(t)}static makeDecimal(t,e,s){if(isFinite(t)){const r=t.toFixed(e);return s?r.replace(".",s):r}else return""}static compare(t,e,s){return t>e+s?1:t<e-s?-1:(isNaN(t)?1:0)-(isNaN(e)?1:0)}static isZero(t){return wt.compare(t,0,Ln)===0}static cutNumber(t,e,s=0){return{K:i=>i/1e3,M:i=>i/1e6}[e](t).toFixed(s)+e}}function io(n,t,e){const s=n/t;return s>=e||s<=1/e}function zs(n,t,e){return Math.max(t,Math.min(n,e))}function ao(n){return 1-(Math.pow(2,-10*n)-.0009765625)*1.0009775171065494}function Re(...n){for(const t of n)if(t!==void 0&&isFinite(t))return t;return NaN}const gt=n=>~~n,oo=n=>~~(n+1),pe=n=>~~(n+.5),lo=(n,t)=>n>>t;function te(){const n=()=>Math.random().toString(16).slice(-4);return`${n()+n()}-${n()}-${n()}-${n()}-${n()+n()+n()}`}class co extends On{constructor(t,e,s){var r;super(e,s),this.viewportModel=t,this.animationConfig=e,this.id=te(),this.xStart=t.xStart,this.xEnd=t.xEnd,this.yStart=t.yStart,this.yEnd=t.yEnd,this.zoomX=t.zoomX,this.zoomY=t.zoomY,this.easingFn=(r=e.easingFn)!=null?r:ao}tick(){if(super.tick(),this.animationInProgress){const t=this.easingFn(this.getProgress()),e=this.xStart+(this.animationConfig.targetXStart-this.xStart)*t,s=this.xEnd+(this.animationConfig.targetXEnd-this.xEnd)*t,r=this.yStart+(this.animationConfig.targetYStart-this.yStart)*t,i=this.yEnd+(this.animationConfig.targetYEnd-this.yEnd)*t,a=this.zoomX+(this.animationConfig.targetZoomX-this.zoomX)*t,o=this.zoomY+(this.animationConfig.targetZoomY-this.zoomY)*t;this.viewportModel.apply({xStart:e,xEnd:s,yStart:r,yEnd:i,zoomX:a,zoomY:o,inverseY:this.viewportModel.inverseY})}}finishAnimation(){super.finishAnimation(),this.viewportModel.apply({xStart:this.animationConfig.targetXStart,xEnd:this.animationConfig.targetXEnd,yStart:this.animationConfig.targetYStart,yEnd:this.animationConfig.targetYEnd,zoomX:this.animationConfig.targetZoomX,zoomY:this.animationConfig.targetZoomY,inverseY:this.viewportModel.inverseY})}}var ho=Object.defineProperty,uo=Object.defineProperties,fo=Object.getOwnPropertyDescriptors,Xs=Object.getOwnPropertySymbols,go=Object.prototype.hasOwnProperty,vo=Object.prototype.propertyIsEnumerable,Vs=(n,t,e)=>t in n?ho(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,mo=(n,t)=>{for(var e in t||(t={}))go.call(t,e)&&Vs(n,e,t[e]);if(Xs)for(var e of Xs(t))vo.call(t,e)&&Vs(n,e,t[e]);return n},po=(n,t)=>uo(n,fo(t));const Gs=10,In="VIEWPORT_ANIMATION";class bo{constructor(t){this.eventBus=t,this.animations={}}startViewportMovementAnimation(t,e,s=In,r){const i=new co(t,e,r);return this.animations[s]=i,this.ensureIntervalStarted(),i}startColorAlphaAnimation(t,e,s,r){const i=new no(po(mo({},r),{duration:r&&r.duration||Gs}),e,s);return this.animations[t]=i,this.ensureIntervalStarted(),i}startColorTransitionAnimation(t,e,s=Gs,r){const i=new so({duration:s},e,r);return this.animations[t]=i,this.ensureIntervalStarted(),i}getAnimation(t){return this.animations[t]}getColorAlphaAnimation(t){return this.getAnimation(t)}getColorTransitionAnimation(t){return this.getAnimation(t)}forceStopAnimation(t){const e=this.animations[t];e&&(e.animationTimeLeft=-1,e.animationInProgress=!1)}ensureIntervalStarted(){this.animationIntervalId||(this.animationIntervalId=window.setInterval(()=>this.tick(),20))}tick(){let t=!0;for(const e of Object.keys(this.animations)){const s=this.animations[e];s.tick(),s.animationInProgress&&(t=!1)}t?this.stopInterval():this.eventBus.fireDraw()}stopInterval(){clearInterval(this.animationIntervalId),this.animationIntervalId=void 0}}var Co=ft(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),V=function(n){L(t,n);function t(){var e=n.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return t.prototype.lift=function(e){var s=new $s(this,this);return s.operator=e,s},t.prototype._throwIfClosed=function(){if(this.closed)throw new Co},t.prototype.next=function(e){var s=this;le(function(){var r,i;if(s._throwIfClosed(),!s.isStopped){s.currentObservers||(s.currentObservers=Array.from(s.observers));try{for(var a=E(s.currentObservers),o=a.next();!o.done;o=a.next()){var l=o.value;l.next(e)}}catch(c){r={error:c}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}}})},t.prototype.error=function(e){var s=this;le(function(){if(s._throwIfClosed(),!s.isStopped){s.hasError=s.isStopped=!0,s.thrownError=e;for(var r=s.observers;r.length;)r.shift().error(e)}})},t.prototype.complete=function(){var e=this;le(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var s=e.observers;s.length;)s.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return((e=this.observers)===null||e===void 0?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(e){return this._throwIfClosed(),n.prototype._trySubscribe.call(this,e)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var s=this,r=this,i=r.hasError,a=r.isStopped,o=r.observers;return i||a?jt:(this.currentObservers=null,o.push(e),new Ct(function(){s.currentObservers=null,At(o,e)}))},t.prototype._checkFinalizedStatuses=function(e){var s=this,r=s.hasError,i=s.thrownError,a=s.isStopped;r?e.error(i):a&&e.complete()},t.prototype.asObservable=function(){var e=new Pt;return e.source=this,e},t.create=function(e,s){return new $s(e,s)},t}(Pt),$s=function(n){L(t,n);function t(e,s){var r=n.call(this)||this;return r.destination=e,r.source=s,r}return t.prototype.next=function(e){var s,r;(r=(s=this.destination)===null||s===void 0?void 0:s.next)===null||r===void 0||r.call(s,e)},t.prototype.error=function(e){var s,r;(r=(s=this.destination)===null||s===void 0?void 0:s.error)===null||r===void 0||r.call(s,e)},t.prototype.complete=function(){var e,s;(s=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||s===void 0||s.call(e)},t.prototype._subscribe=function(e){var s,r;return(r=(s=this.source)===null||s===void 0?void 0:s.subscribe(e))!==null&&r!==void 0?r:jt},t}(V),ee=function(n){L(t,n);function t(e){var s=n.call(this)||this;return s._value=e,s}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(e){var s=n.prototype._subscribe.call(this,e);return!s.closed&&e.next(this._value),s},t.prototype.getValue=function(){var e=this,s=e.hasError,r=e.thrownError,i=e._value;if(s)throw r;return this._throwIfClosed(),i},t.prototype.next=function(e){n.prototype.next.call(this,this._value=e)},t}(V);function Gt(n,t){return t===void 0&&(t=Te),n=n!=null?n:yo,y(function(e,s){var r,i=!0;e.subscribe(Wt(s,function(a){var o=t(a);(i||!n(r,o))&&(i=!1,r=o,s.next(a))}))})}function yo(n,t){return n===t}function wo(n){return function(){n.forEach(e=>typeof e=="function"&&e()),n.length=0}}function Bn(n){return n}function Zs(n){return n!=null}const vg=()=>{};function mg(n){return n!=null}function So(n,t,e=xo,s=!0){const r=n.filter(i=>t.some(a=>e(i,a)));return s?r.filter((i,a,o)=>o.indexOf(i)===a):r}const Ks=(n,t)=>{const e=t.slice().filter(s=>n.find(r=>r===s));return n.map(s=>{var r;return t.indexOf(s)>=0&&(r=e.shift())!=null?r:s})},xo=(n,t)=>n===t,pg=(n,t,e)=>n.filter(s=>t.filter(r=>e(s,r)).length===0),Po=(n,t)=>n===t,Js=(n,t,e=Po)=>n.length===t.length&&n.every((s,r)=>e(s,t[r]));function bg(n,t,e){const s=n.slice(),r=s[t];return s.splice(t,1),s.splice(e,0,r),s}function Rn(n,t,e){const s=n.length,r=zs(t,0,s-1),i=zs(e,0,s-1),a=n[r];return n.splice(r,1),n.splice(i,0,a),n}function Cg(n,t,e){const s=n.slice(),r=s.findIndex(t);return r!==-1&&(s.splice(r,1),s.splice(r,0,e)),s}const yg=n=>{const t={};return n.filter(e=>t[e]?!1:t[e]=!0)},wg=(n,t)=>n.reduce((e,s)=>((e[s[t]]=e[s[t]]||[]).push(s),e),{}),Sg=(n,t)=>[].concat(...n.map(e=>[e,t])).slice(0,-1),xg=n=>Array.isArray(n[0]),Qs=n=>Array.isArray(n[0])?n:[n],To=(n,t,e)=>{const s=[];let r=0;for(const i of n){const a=Math.max(t-r,0),o=Math.max(e-r,-1),l=i.slice(a,o+1);l.length>0&&s.push(l),r+=i.length}return s},Mo=(n,t)=>n>=0?t[n]:t[t.length+n],It=n=>Array.prototype.flat?n.flat():Fe(n,Bn),Fe=(n,t)=>{if(Array.prototype.flatMap)return n.flatMap(t);const e=[];for(let s=0;s<n.length;s++){const r=n[s];e.push(...t(r,s,n))}return e};function de(n,t,e){const s=e!=null?e:Bn;return!n.length||t!==t?{index:-1,exact:!0}:Fn(n,t,0,n.length,s)}function Fn(n,t,e,s,r){const i=lo(e+s,1),a=r(n[i]);return t===a?{index:i,exact:!0}:e===i?{index:e,exact:!1}:t<a?Fn(n,t,e,i,r):Fn(n,t,i,s,r)}function Ft(n){if(n&&n.length)return n[n.length-1]}function _o(n){const t=this.indexOf(n);return t!==-1&&this.splice(t,1),this}function Ao(n,t){if(!n)return;const e=n.indexOf(t);e!==-1&&n.splice(e,1)}function Ye(n){if(n)return n[0]}function Do(n){function t(e,s){const r=n(s);return r==null||!isFinite(r)?e:[Math.max(e[0],r),Math.min(e[1],r)]}return function(e){const s=[Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY];return e?e.reduce(t,s):s}}function Eo(n,t,e,s=()=>0){const r=(a,o)=>{let l=0,c=a.length-1;for(;c>=l;){const h=Math.ceil((l+c)/2);s(a[h])<=o?l=h+1:c=h-1}return c},i=(a,o)=>{let l=0,c=a.length-1;for(;c>=l;){const h=Math.ceil((l+c)/2);s(a[h])>=o?c=h-1:l=h+1}return l};return n.slice(i(n,t),r(n,e)+1)}let Yn;const Hn=()=>(Yn||(Yn=!!navigator.userAgent.match(/Android|iPhone|Opera Mini/)||!1),Yn);function qs(n,t){let e="";t.textStyle&&(t.textStyle.italic&&(e+="italic "),t.textStyle.bold&&(e+="bold ")),n.font=e+(t.textSize||12)+" "+(t.textFontFamily||"monospace"),n.fillStyle=t.textFill||"#FFFFFF",t.rtl?n.textAlign="right":n.textAlign="start"}function Nn(n){const t=n.font.match(/(\d+.)?\d+(px|pt)/gi);let e="10px";return t&&t.length&&(t[0].includes("pt")?e=+t[0].slice(0,t[0].indexOf("pt"))*96/72+"px":e=t[0]),parseInt(e,10)*1.33}function tr(n,t,e){n.save(),qs(n,e);const s=Math.ceil(Math.max.apply(Math,t.map(a=>n.measureText(a).width))),r=Nn(n),i=r*t.length;return n.restore(),[s,i,r]}function er(n){return(n||"").split(/\r\n|\r|\n/)}function Oo(n,t,e,s,r){n.save();const[i,,a]=tr(n,t,r);t.forEach((o,l)=>{var c,h,v;const p=n.measureText(o).width,C=Lo(e,i,p,(c=r.textAlign)!=null?c:"left");r.textStyle&&r.textStyle.underline&&Io(n,o,C,s+a*l,(h=r.textFill)!=null?h:"",(v=r.textSize)!=null?v:""),n.fillText(o,C,s+a*l)}),n.restore()}function Lo(n,t,e,s){switch(s){case"left":return n;case"right":return n+t-e;default:return n}}function Io(n,t,e,s,r,i){n.save();const a=n.measureText(t).width,o=e,l=e+a,c=s+2,h=c;let v=parseInt(i,10)/15;v<1&&(v=1),n.beginPath(),n.strokeStyle=r,n.lineWidth=v,n.moveTo(o,c),n.lineTo(l,h),n.stroke(),n.restore()}function Pg(n){return`${n}px`}function He(n,t,e){const s=Vt().rgb(n).array(),r=s[0],i=s[1],a=s[2];return(r*299+i*587+a*114)/1e3<128?t:e}function Bo(n,t,e,s){const r=s.components.navigationMap.timeLabels,i=r.padding,a=nr(t,r.dateFormat,e),o=er(a),l={textFontFamily:r.fontFamily,textSize:`${r.fontSize}px`},[c,h]=tr(n,o,l);return[c+i.x*2,h+i.y*2]}function nr(n,t,e){return e(t)(n).split(" ").join(`
9
- `)}const sr={};function ne(n,t){let e=sr[n];return e!==void 0||(t.save(),t.font=n,e=t.measureText("M").width,sr[n]=e,t.restore()),e}const rr=new Map;function Yt(n,t,e){const s=e+n;let r=rr.get(s);return r||(t.save(),t.font=e,r=t.measureText(n).width,rr.set(s,r),t.restore()),r}function $t(n,t,e=ir){function s(r,i){for(const a in i)a in r?typeof r[a]=="object"&&r[a]!==null&&!Array.isArray(r[a])?s(r[a],i[a]):e!=null&&e.overrideExisting&&(r[a]=i[a]):e!=null&&e.addIfMissing&&(r[a]=i[a]);return r}return s(n,t)}function Tg(n,t,e,s=!1){!n||!t||t.length===0||t.forEach(r=>{const i=e(r),a=n.findIndex(o=>e(o)===i);a===-1?n.push(r):s?$t(n[a],r,{overrideExisting:!0,addIfMissing:!0}):n.splice(a,1,r)})}const ir={overrideExisting:!1,addIfMissing:!0};var Ro=Object.defineProperty,ar=Object.getOwnPropertySymbols,Fo=Object.prototype.hasOwnProperty,Yo=Object.prototype.propertyIsEnumerable,or=(n,t,e)=>t in n?Ro(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Ho=(n,t)=>{for(var e in t||(t={}))Fo.call(t,e)&&or(n,e,t[e]);if(ar)for(var e of ar(t))Yo.call(t,e)&&or(n,e,t[e]);return n};const lr="Open Sans Semibold, sans-serif",No=null,ko=["candle","line","area","bar","scatterPlot","trend","hollow","histogram","baseline"],Mg=n=>No.find(t=>t===n)!==void 0,qe=()=>({devexpertsPromoLink:!0,useUTCTimeOverride:!1,shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],rtl:!1,scale:{keepZoomXOnYAxisChange:!0,auto:!0,zoomToCursor:!1,lockPriceToBarRatio:!1,autoScaleOnCandles:!0,autoScaleDisableOnDrag:{enabled:!0,edgeAngle:Math.PI/15,yDiff:80},inverse:!1,zoomSensitivity:.25,defaultViewportItems:100},timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,components:{chart:{type:"candle",showCandlesBorder:!0,showActiveCandlesBorder:!0,showWicks:!0,candleLineWidth:1,lineWidth:1,areaLineWidth:1,barLineWidth:1,minWidth:.5,minCandles:10,candlePaddingPercent:.25,highlightActiveCandle:!0,cursor:"default",selectedWidth:3,minCandlesOffset:2,defaultZoomCandleWidth:7,zoomStep:0,histogram:{barCapSize:1}},yAxis:{type:"regular",visible:!0,labelHeight:23,zeroPercentLine:!0,customScale:!0,customScaleDblClick:!0,align:"right",fontSize:12,fontFamily:lr,cursor:"ns-resize",resizeDisabledCursor:"default",labelBoxMargin:{top:4,bottom:4,end:8,start:10},typeConfig:{badge:{rounded:!0,paddings:{top:4,bottom:4,end:4,start:4}},plain:{},rectangle:{rounded:!1,paddings:{top:4,bottom:4,end:4,start:4}}},labels:{descriptions:!1,settings:{lastPrice:{mode:"label",type:"badge"},countdownToBarClose:{mode:"none",type:"rectangle"}}}},xAxis:{visible:!0,formatsForLabelsConfig:{lessThanSecond:"HH:mm:ss",second_1:"HH:mm:ss",minute_1:"HH:mm",minute_5:"HH:mm",minute_30:"HH:mm",hour_1:"HH:mm",day_1:"dd.MM",month_1:"MMM",year_1:"YYYY"},fontSize:12,fontFamily:lr,cursor:"ew-resize",padding:{top:8,bottom:16},fontStyle:""},events:{visible:!1,eventsVisibility:{"conference-calls":!0,dividends:!0,splits:!0,earnings:!0},height:20,cursor:"default",xAxisLabelFormat:[{format:"d MMM"}],icons:{earnings:{normal:'<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.06066 6.5L6.5 1.06066L11.9393 6.5L6.5 11.9393L1.06066 6.5Z" stroke="#D92C40" stroke-width="1.5"/></svg>',hover:'<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.06066 6.5L6.5 1.06066L11.9393 6.5L6.5 11.9393L1.06066 6.5Z" fill="#D92C40" stroke="#D92C40" stroke-width="1.5"/></svg>'}}},offsets:{visible:!0,right:10,top:10,bottom:20,left:0},waterMark:{visible:!1,fontFamily:"Open Sans, sans-serif",firstRowFontSize:80,firstRowBottomPadding:10,secondRowFontSize:40,secondRowBottomPadding:25,thirdRowFontSize:40,thirdRowBottomPadding:15,position:"center",offsetX:20,offsetY:20,logoWidth:20,logoHeight:20},highLow:{visible:!1,font:"12px sans-serif"},highlights:{visible:!1,fontFamily:"Open Sans",fontSize:13,border:{width:1,dash:[8,4]}},crossTool:{type:"cross-and-labels",discrete:!1,magnetTarget:"none",lineDash:[4,6],xAxisLabelFormat:[{format:"dd.MM.YYYY",showWhen:{periodMoreThen:846e5}},{format:"dd.MM.YYYY HH:mm",showWhen:{periodLessThen:846e5,periodMoreThen:6e3}},{format:"dd.MM.YYYY HH:mm:ss",showWhen:{periodLessThen:6e3}}],xLabel:{padding:{top:4,bottom:4,right:8,left:8},margin:{top:4}},yLabel:{padding:{top:4,bottom:4,end:4,start:4},type:"badge"}},grid:{visible:!0,horizontal:!1,vertical:!0,width:1,dash:[0,0],color:"#FFFFFF"},volumes:{visible:!0,showSeparately:!1,valueLines:15,barCapSize:1,volumeBarSpace:0,volumeFillColor:"#FFFFFF"},navigationMap:{visible:!1,allCandlesHistory:!0,timeLabels:{visible:!1,dateFormat:"dd.MM.YYYY HH:mm",fontFamily:"Open Sans",fontSize:13,padding:{x:10,y:1}},minSliderWindowWidth:10,cursors:{chart:"default",buttonLeft:"pointer",buttonRight:"pointer",leftResizer:"ew-resize",rightResizer:"ew-resize",slider:"grab"},knots:{height:35,width:7,border:0,lineWidth:1}},baseline:{cursor:"ns-resize",dragZone:3,height:1},paneResizer:{cursor:"ns-resize",height:1,visible:!0,fixedMode:!1,dragZone:3}},colors:{candleTheme:{upColor:"rgba(77,153,83,1)",downColor:"rgba(217,44,64,1)",noneColor:"rgba(255,255,255,1)",upWickColor:"rgba(77,153,83,1)",downWickColor:"rgba(217,44,64,1)",noneWickColor:"rgba(255,255,255,1)",borderOpacity:1},barTheme:{upColor:"rgba(77,153,83,1)",downColor:"rgba(217,44,64,1)",noneColor:"rgba(255,255,255,1)"},lineTheme:{upColor:"rgba(77,153,83,1)",downColor:"rgba(217,44,64,1)",noneColor:"rgba(255,255,255,1)"},chartAreaTheme:{backgroundMode:"regular",backgroundColor:"rgba(20,20,19,1)",backgroundGradientTopColor:"red",backgroundGradientBottomColor:"blue",gridColor:"rgba(37,37,36,1)"},scatterPlot:{mainColor:"rgba(255,255,255,1)"},areaTheme:{lineColor:"rgba(127,120,214,1)",startColor:"rgba(169,38,251,1)",stopColor:"rgba(169,38,251,0.8)"},baseLineTheme:{lowerSectionStrokeColor:"rgba(217,44,64,1)",upperSectionStrokeColor:"rgba(77,153,83,1)",lowerSectionFillColor:"rgba(217, 44, 64, 0.07)",upperSectionFillColor:"rgba(77, 153, 83, 0.07)",baselineColor:"rgba(55,55,54,1)"},histogram:{upCap:"rgba(77,153,83,1)",upBottom:"rgba(77,153,83,0.1)",upBright:"rgba(77,153,83,0.4)",downCap:"rgba(217,44,64,1)",downBottom:"rgba(217,44,64,0.1)",downBright:"rgba(217,44,64,0.4)",noneCap:"rgba(255,255,255,1)",noneBottom:"rgba(255,255,255,0.1)",noneBright:"rgba(255,255,255,0.4)"},crossTool:{lineColor:"rgba(107,96,86,1)",labelBoxColor:"rgba(107,96,86,1)",labelTextColor:"rgba(255,255,255,1)"},waterMarkTheme:{firstRowColor:"rgba(255,255,255,0.2)",secondRowColor:"rgba(255,255,255,0.2)",thirdRowColor:"rgba(255,255,255,0.2)"},highlights:{NO_TRADING:{border:"rgba(107,96,86,1)",background:"transparent",label:"transparent"},AFTER_MARKET:{border:"rgba(107,96,86,1)",background:"rgba(38, 251, 149, 0.05)",label:"transparent"},PRE_MARKET:{border:"rgba(107,96,86,1)",background:"rgba(255, 170, 0, 0.05)",label:"transparent"},REGULAR:{border:"rgba(107,96,86,1)",background:"transparent",label:"transparent"}},activeCandleTheme:{upColor:"rgba(98,201,93,1)",downColor:"rgba(255,47,47,1)",noneColor:"rgba(255,255,255,1)",upWickColor:"rgba(98,201,93,1)",downWickColor:"rgba(255,47,47,1)",noneWickColor:"rgba(255,255,255,1)",borderOpacity:.5},volume:{downBarColor:"rgba(99,30,37,1)",upBarColor:"rgba(42,72,44,1)",noneBarColor:"rgba(255,255,255,0.4)",upCapColor:"rgba(42,72,44,1)",downCapColor:"rgba(99,30,37,1)",noneCapColor:"rgba(255,255,255,0.4)"},highLowTheme:{highColor:"rgba(223,222,223,1)",lowColor:"rgba(223,222,223,1)"},instrumentInfo:{textColor:"#aeb1b3"},paneResizer:{lineColor:"rgba(55,55,54,1)",bgColor:"rgba(20,20,19,1)",bgHoverColor:"rgba(55,55,54,0.6)"},events:{earnings:{color:"rgba(217,44,64,1)"},dividends:{color:"rgba(169,38,251,1)"},splits:{color:"rgba(244,187,63,1)"},"conference-calls":{color:"rgba(48,194,97,1)"}},secondaryChartTheme:[{lineTheme:{upColor:"rgba(226,61,25,1)",downColor:"rgba(226,61,25,1)",noneColor:"rgba(226,61,25,1)"},areaTheme:{lineColor:"rgba(226,61,25,1)",startColor:"rgba(226,61,25,0.8)",stopColor:"rgba(226,61,25,0)"}},{lineTheme:{upColor:"rgba(250,191,64,1)",downColor:"rgba(250,191,64,1)",noneColor:"rgba(250,191,64,1)"},areaTheme:{lineColor:"rgba(250,191,64,1)",startColor:"rgba(250,191,64,0.8)",stopColor:"rgba(250,191,64,0)"}},{lineTheme:{upColor:"rgba(169,38,251,1)",downColor:"rgba(169,38,251,1)",noneColor:"rgba(169,38,251,1)"},areaTheme:{lineColor:"rgba(169,38,251,1)",startColor:"rgba(169,38,251,0.8)",stopColor:"rgba(169,38,251,0)"}},{lineTheme:{upColor:"rgba(77,211,240,1)",downColor:"rgba(77,211,240,1)",noneColor:"rgba(77,211,240,1)"},areaTheme:{lineColor:"rgba(77,211,240,1)",startColor:"rgba(77,211,240,0.8)",stopColor:"rgba(77,211,240,0)"}},{lineTheme:{upColor:"rgba(59,203,91,1)",downColor:"rgba(59,203,91,1)",noneColor:"rgba(59,203,91,1)"},areaTheme:{lineColor:"rgba(59,203,91,1)",startColor:"rgba(59,203,91,0.8)",stopColor:"rgba(59,203,91,0)"}}],yAxis:{backgroundColor:"transparent",backgroundHoverColor:"rgba(20,20,19,1)",labelBoxColor:"rgba(20,20,19,1)",labelTextColor:"rgba(128,128,128,1)",labelInvertedTextColor:"rgba(20,20,19,1)",rectLabelTextColor:"rgba(255,255,255,1)",rectLabelInvertedTextColor:"rgba(20,20,19,1)",zeroPercentLine:"rgba(55,55,54,1)"},labels:{lastPrice:{textNegative:"rgba(255,255,255,1)",textPositive:"rgba(255,255,255,1)",textSelected:"rgba(0,0,0,1)",boxNegative:"rgba(217,44,64,1)",boxPositive:"rgba(77,153,83,1)",boxSelected:"rgba(255,255,255,1)"},countdownToBarClose:{textNegative:"rgba(255,255,255,1)",textPositive:"rgba(255,255,255,1)",textSelected:"rgba(255,255,255,1)",boxNegative:"rgba(217,44,64,1)",boxPositive:"rgba(77,153,83,1)",boxSelected:"rgba(255,255,255,1)"},highLow:{high:{boxColor:"rgba(107,96,86,1)",textColor:"rgba(255,255,255,1)",descriptionText:"High"},low:{boxColor:"rgba(107,96,86,1)",textColor:"rgba(255,255,255,1)",descriptionText:"Low"}},bidAsk:{bid:{boxColor:"rgba(77,153,83,1)",textColor:"rgba(255,255,255,1)",descriptionText:"Bid"},ask:{boxColor:"rgba(217,44,64,1)",textColor:"rgba(255,255,255,1)",descriptionText:"Ask"}},prePostMarket:{post:{boxColor:"rgba(38,251,149,1)",textColor:"rgba(20,20,19,1)",descriptionText:"Post"},pre:{boxColor:"rgba(255,170,0,1)",textColor:"rgba(20,20,19,1)",descriptionText:"Pre"}},prevDayClose:{boxColor:"rgba(107,96,86,1)",textColor:"rgba(255,255,255,1)"}},xAxis:{backgroundColor:"transparent",labelTextColor:"rgba(128,128,128,1)"},navigationMap:{backgroundColor:"transparent",buttonColor:"rgba(255,255,255,0.1)",buttonArrowColor:"rgba(212,212,211,1)",knotColor:"rgba(255,255,255,0.1)",knotLineColor:"rgba(212,212,211,1)",sliderColor:"rgba(255,255,255,0.08)",knotBorderColor:"#0b0d1a",timeLabelsTextColor:"rgba(128,128,128,1)",mapColor:"rgba(255,255,255,0.1)",mapFillColor:"rgba(255,255,255,0.1)",mapGradientTopColor:"rgba(255,255,255,0.1)",mapGradientBottomColor:"rgba(255,255,255,0.1)"}},animation:{moveDuration:1e3,candleDuration:200,paneResizer:{bgMode:!0,enabled:!0,duration:40},yAxis:{background:{enabled:!1,duration:40}}},drawingOrder:["OVER_SERIES_CLEAR","MAIN_CLEAR","SERIES_CLEAR","GRID","X_AXIS","Y_AXIS","UNDERLAY_VOLUMES_AREA","DYNAMIC_OBJECTS","WATERMARK","N_MAP_CHART","EVENTS"]});function jo(n,t=qe()){return $t(n,t,ir),n}function _g(n,t=qe()){const e=Ho({},n);return merge(e,t,DEFAULT_MERGE_OPTIONS),e}function Ag(n,t){Object.keys(n).forEach(e=>delete n[e]),Object.keys(t).forEach(e=>n[e]=t[e])}function cr(n){return typeof n=="object"&&n!==null}function hr(n,t){return[...n].map(s=>kn(s,t))}const Uo=n=>Array.isArray(n);function kn(n,t){if(!cr(n))return n;if(Uo(n))return hr(n,t);{const e=dr({},n,t);return Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}}function dr(n,t,e){if(!cr(n))return e.overrideExisting?t:n;if(Array.isArray(n)&&Array.isArray(t)){const r=e.overrideExisting?t:n;return hr(r,e)}const s=Object.create(Object.getPrototypeOf(n));return Object.keys(n).forEach(r=>s[r]=kn(n[r],e)),Object.keys(t).forEach(r=>{r in n?s[r]=dr(n[r],t[r],e):e.addIfMissing&&(s[r]=kn(t[r],e))}),s}const be=n=>`${n.fontSize}px ${n.fontFamily}`;class Wo{constructor(t,e){this.config=t,this.mainCanvasModel=e,this.extentsOrder=new Map,this.yAxisWidthContributors=[]}registerYAxisWidthContributor(t){this.yAxisWidthContributors.push(t)}removeYAxisWidthContributor(t){this.yAxisWidthContributors=this.yAxisWidthContributors.filter(e=>e!==t)}getTextWidth(t){const e=be(this.config.components.yAxis);return Yt(t,this.mainCanvasModel.ctx,e)}getYAxisWidths(){this.extentsOrder.clear();const t=[],e=[];return this.yAxisWidthContributors.forEach(s=>{var r,i,a;const o=s.getYAxisState(),l=o.labelBoxMargin.start+o.labelBoxMargin.end,c=this.getTextWidth(s.getLargestLabel())+l,h=s.getYAxisIndex(),v=s.getPaneUUID(),p=(r=this.extentsOrder.get(v))!=null?r:{left:[],right:[]};if(o.align==="left"){const C=p.left.length;t[C]=Math.max((i=t[C])!=null?i:0,c),p.left.push(h)}else{const C=p.right.length;e[C]=Math.max((a=e[C])!=null?a:0,c),p.right.push(h)}this.extentsOrder.set(v,p)}),{left:t,right:e}}}var zo=Object.defineProperty,Xo=Object.defineProperties,Vo=Object.getOwnPropertyDescriptors,ur=Object.getOwnPropertySymbols,Go=Object.prototype.hasOwnProperty,$o=Object.prototype.propertyIsEnumerable,fr=(n,t,e)=>t in n?zo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,se=(n,t)=>{for(var e in t||(t={}))Go.call(t,e)&&fr(n,e,t[e]);if(ur)for(var e of ur(t))$o.call(t,e)&&fr(n,e,t[e]);return n},gr=(n,t)=>Xo(n,Vo(t));const ht="CHART",jn=class{};let Y=jn;Y.CANVAS="CANVAS",Y.N_MAP="N_MAP",Y.X_AXIS="X_AXIS",Y.N_MAP_KNOT_L="N_MAP_KNOT_L",Y.N_MAP_KNOT_R="N_MAP_KNOT_R",Y.N_MAP_BTN_L="N_MAP_BTN_L",Y.N_MAP_BTN_R="N_MAP_BTN_R",Y.N_MAP_SLIDER_WINDOW="N_MAP_SLIDER_WINDOW",Y.N_MAP_CHART="N_MAP_CHART",Y.N_MAP_LABEL_R="N_MAP_LABEL_R",Y.N_MAP_LABEL_L="N_MAP_LABEL_L",Y.PANE_UUID=n=>"PANE_"+n,Y.PANE_UUID_Y_AXIS=(n,t=0)=>"PANE_"+n+"_Y_AXIS_"+t,Y.PANE_UUID_RESIZER=n=>"PANE_"+n+"_RESIZER",Y.ALL_PANES="ALL_PANES",Y.CHART_WITH_Y_AXIS="CHART_WITH_Y_AXIS",Y.EVENTS="EVENTS",Y.CHART=jn.PANE_UUID(ht),Y.Y_AXIS=jn.PANE_UUID_Y_AXIS(ht);const vr={x:0,y:0,pageX:0,pageY:0,width:0,height:0},Zo=20,mr=35,Un=15,pr=1.5,Wn=Hn()?8*pr:8,Ko=1e-6;class zn{constructor(t,e,s,r,i){this.config=t,this.eventBus=e,this.canvasModel=s,this.formatterFactory=r,this.bounds={},this.canvasOnPageLocation={x:0,y:0,pageX:0,pageY:0,width:0,height:0},this.panesOrder=[],this.panesOrderChangedSubject=new V,this.xAxisHeight=void 0,this.yAxisWidths={right:[0],left:[0]},this.leftRatio=0,this.rightRatio=0,this.boundsChangedSubject=new V,this.barResizerChangedSubject=new V,this._graphsHeightRatio={chart:1},this.graphsHeightRatioChangedSubject=new V,this.boundsChangedSubscriptions={},i.canvasResized.subscribe(a=>{let o=a;o||(o=this.canvasModel.canvas.getBoundingClientRect()),this.updateCanvasOnPageLocation(o),this.recalculateBounds()}),this.yAxisBoundsContainer=new Wo(this.config,this.canvasModel)}get graphsHeightRatio(){return this._graphsHeightRatio}updateYAxisWidths(){const t=this.yAxisBoundsContainer.getYAxisWidths();this.setYAxisWidths(t)}addPaneBounds(t,e){if(this.panesOrder.indexOf(t)===-1){if(this.panesOrder.push(t),e!==void 0){const s=this.panesOrder.indexOf(t);Rn(this.panesOrder,s,e)}this.recalculatePanesHeightRatios(),this.panesOrderChangedSubject.next(this.panesOrder)}}overrideChartHeightRatios(t){const e=se(se({},this.graphsHeightRatio),t),s=Object.values(e).reduce((r,i)=>r+i,0);Math.abs(s-1)<Ko?(this._graphsHeightRatio=e,this.recalculateBounds()):console.error(`Result ratio should be equal 1, but equal ${s}`)}movePaneUp(t){const e=this.panesOrder.indexOf(t);e!==-1&&(Rn(this.panesOrder,e,e-1),this.recalculateBounds(),this.eventBus.fireDraw(),this.panesOrderChangedSubject.next(this.panesOrder))}movePaneDown(t){const e=this.panesOrder.indexOf(t);e!==-1&&(Rn(this.panesOrder,e,e+1),this.recalculateBounds(),this.eventBus.fireDraw(),this.panesOrderChangedSubject.next(this.panesOrder))}reorderPanes(t){this.panesOrder=Ks(this.panesOrder,t),this.recalculateBounds(),this.panesOrderChangedSubject.next(this.panesOrder)}removedPaneBounds(t){Ao(this.panesOrder,t),delete this.graphsHeightRatio[t],delete this.bounds[Y.PANE_UUID(t)],this.yAxisWidths.left.concat(this.yAxisWidths.right).forEach((e,s)=>delete this.bounds[Y.PANE_UUID_Y_AXIS(t,s)]),delete this.bounds[Y.PANE_UUID_RESIZER(t)],this.recalculatePanesHeightRatios(),this.panesOrderChangedSubject.next(this.panesOrder)}recalculateBounds(){const t=this.canvasOnPageLocation.width,e=this.canvasOnPageLocation.height,s=this.config.components.paneResizer.height,r=this.getBounds(Y.CANVAS);r.x=0,r.y=0,r.width=t,r.height=e;const i=this.yAxisWidths,a=this.getNavMapBounds(r),o=this.getXAxisBounds(a,r),l=e-o.height-a.height,c=i.left.reduce((J,K)=>J+K,0),h=i.right.reduce((J,K)=>J+K,0),v=0,p=r.width-h,C=v+c,O=0,B=r.width-c-h;let H=O;this.panesOrder.forEach((J,K)=>{var U;const Q=this.graphsHeightRatio[this.panesOrder[K]],at=this.config.components.paneResizer.visible;at&&(K!==0?Me(this.bounds,Y.PANE_UUID_RESIZER(J),0,H,r.width,s,this.canvasOnPageLocation):Me(this.bounds,Y.PANE_UUID_RESIZER(J),0,0,0,0,this.canvasOnPageLocation));const ot=Me(this.bounds,Y.PANE_UUID(J),C,at?H+s:H,B,at?l*Q-this.config.components.paneResizer.height:l*Q,this.canvasOnPageLocation);if(this.config.components.yAxis.visible){const nt=this.yAxisBoundsContainer.extentsOrder.get(J);if(nt===void 0)return;const rt=at?H+s:H,dt=at?l*Q-s:l*Q;let ct=C-((U=i.left[0])!=null?U:0),St=p;nt.left.forEach((ut,vt)=>{var pt;Me(this.bounds,Y.PANE_UUID_Y_AXIS(J,ut),ct,rt,i.left[vt],dt,this.canvasOnPageLocation),ct-=(pt=i.left[vt+1])!=null?pt:0}),nt.right.forEach((ut,vt)=>{Me(this.bounds,Y.PANE_UUID_Y_AXIS(J,ut),St,rt,i.right[vt],dt,this.canvasOnPageLocation),St+=i.right[vt]})}else Me(this.bounds,Y.PANE_UUID_Y_AXIS(J),0,0,0,0,this.canvasOnPageLocation);H=ot.y+ot.height});const k=this.getBounds(Y.ALL_PANES);k.x=C,k.y=O,k.width=B,k.height=H;const z=this.getBounds(Y.CHART_WITH_Y_AXIS),Z=this.getBounds(Y.PANE_UUID(ht));this.getEventsBounds(Z),this.copyBounds(Z,z),z.width=r.width,this.recalculateNavigationMapElementBounds(),this.updateAllBoundsPageCoordinates(),this.notifyBoundsSubscribers()}updateCanvasOnPageLocation(t){this.canvasOnPageLocation=gr(se({},this.canvasOnPageLocation),{x:t.x,y:t.y,width:t.width,height:t.height})}updateAllBoundsPageCoordinates(){for(const t of Object.keys(this.bounds)){const e=this.bounds[t];e.pageX=e.x+this.canvasOnPageLocation.x,e.pageY=e.y+this.canvasOnPageLocation.y}}getEventsBounds(t){const e=this.getBounds(Y.EVENTS);return this.config.components.events.visible?(e.x=0,e.y=t.y+t.height-this.config.components.events.height,e.width=t.width,e.height=this.config.components.events.height):this.applyDefaultBounds(e),e}getNavMapBounds(t){const e=this.getBounds(Y.N_MAP);return this.config.components.navigationMap.visible?(e.x=0,e.y=t.height-mr,e.width=t.width,e.height=mr):this.applyDefaultBounds(e),e}getXAxisBounds(t,e){const s=this.getBounds(Y.X_AXIS);return this.config.components.xAxis.visible?(s.x=0,s.y=e.height-this.getXAxisHeight()-t.height,s.width=e.width,s.height=this.getXAxisHeight()):this.applyDefaultBounds(s),s}getXAxisHeight(){var t,e;if(!this.xAxisHeight){const s=this.config.components.xAxis.fontSize+"px "+this.config.components.xAxis.fontFamily,r=ne(s,this.canvasModel.ctx);this.xAxisHeight=r+((t=this.config.components.xAxis.padding.top)!=null?t:0)+((e=this.config.components.xAxis.padding.bottom)!=null?e:0)}return this.xAxisHeight}setYAxisWidths(t){(!Js(this.yAxisWidths.left,t.left)||!Js(this.yAxisWidths.right,t.right))&&(this.yAxisWidths=t,this.recalculateBounds())}setXAxisHeight(t){t!==this.xAxisHeight&&(this.xAxisHeight=t,this.recalculateBounds())}setPanesOrder(t){this.panesOrder=t,this.recalculateBounds()}recalculatePanesHeightRatios(){this.calculateGraphsHeightRatios(),this.recalculateBounds()}calculateGraphsHeightRatios(){let t=this.graphsHeightRatio[ht];const e=[];e.push(...this.panesOrder.filter(v=>v!==ht)),this.panesOrder.forEach(v=>{this.graphsHeightRatio[v]===0&&delete this.graphsHeightRatio[v]});const s=e.map(v=>this.graphsHeightRatio[v]===void 0?void 0:this.graphsHeightRatio[v]),r=s.filter(v=>v!==void 0).length,i=s.filter(v=>v===void 0).length;let a=0,o=0,l=1,c=0;i>0&&([l,c]=Qo(e.length),t*=l),r===0&&(t=1-c*i),o=1-t-c*i,s.forEach(v=>{v&&(o-=v*l)}),a=o/(e.length+1);const h=s.map(v=>v?v*l+a:c+a);t+=a,this._graphsHeightRatio={},this.graphsHeightRatio[ht]=t,h.forEach((v,p)=>{const C=e[p];this.graphsHeightRatio[C]=v})}recalculateNavigationMapElementBounds(){var t,e,s,r;if(this.config.components.navigationMap.visible){const i=this.getBounds(Y.N_MAP),{height:a,width:o}=this.config.components.navigationMap.knots,l=a!=null?a:0,c=Hn()?o*pr:o!=null?o:0,h=l?i.y+(i.height-l)/2:i.y,v=(e=(t=this.config.components.navigationMap)==null?void 0:t.timeLabels)==null?void 0:e.visible,p=Q=>Bo(this.canvasModel.ctx,Q,this.formatterFactory,this.config)[0],C=It((r=(s=this.mainCandleSeries)==null?void 0:s.getSeriesInViewport())!=null?r:[]),O=v&&C.length?p(C[0].candle.timestamp):0,B=v&&C.length?p(C[C.length-1].candle.timestamp):0,H=Math.max(O,B);if(v){const Q=this.getBounds(Y.N_MAP_LABEL_L);Q.x=i.x,Q.y=i.y,Q.width=H,Q.height=i.height;const at=this.getBounds(Y.N_MAP_LABEL_R);at.x=i.x+i.width-H,at.y=i.y,at.width=H,at.height=i.height}const k=this.getBounds(Y.N_MAP_BTN_L);k.x=i.x+H,k.y=i.y,k.width=Un,k.height=i.height;const z=this.getBounds(Y.N_MAP_BTN_R);z.x=i.x+i.width-Un-H,z.y=i.y,z.width=Un,z.height=i.height;const Z=this.getBounds(Y.N_MAP_KNOT_L);Z.x=(z.x-k.x-k.width)*this.leftRatio+k.x+k.width,Z.y=h,Z.width=c!=null?c:Wn,Z.height=l!=null?l:i.height;const J=this.getBounds(Y.N_MAP_KNOT_R);J.x=(z.x-k.x-k.width)*this.rightRatio+k.x+k.width-Wn,J.y=h,J.width=c!=null?c:Wn,J.height=l!=null?l:i.height;const K=this.getBounds(Y.N_MAP_SLIDER_WINDOW);K.x=Z.x+Z.width,K.y=i.y,K.width=J.x-K.x,K.height=i.height;const U=this.getBounds(Y.N_MAP_CHART);U.x=k.x+k.width,U.y=i.y,U.width=z.x-U.x,U.height=i.height}}isVolumesInSeparatePane(){return this.config.components.volumes.visible&&this.config.components.volumes.showSeparately}getBounds(t){return this.bounds[t]===void 0&&(this.bounds[t]=this.copyOf(vr)),this.bounds[t]}getCanvasOnPageLocation(){return this.canvasOnPageLocation}getBoundsPanes(){return this.panesOrder.reduce((t,e)=>gr(se({},t),{[e]:this.bounds[Y.PANE_UUID(e)]}),{})}getBoundsHitTest(t,e=tn){const{extensionX:s,extensionY:r,wholePage:i}=se(se({},tn),e);return i?(a,o)=>{const l=this.getBounds(t);return a>l.pageX-s&&a<l.pageX+l.width+s&&o>l.pageY-r&&o<l.pageY+l.height+r}:(a,o)=>{const l=this.getBounds(t);return a>l.x-s&&a<l.x+l.width+s&&o>l.y-r&&o<l.y+l.height+r}}static hitTestOf(t,e=tn){const{extensionX:s,extensionY:r,wholePage:i}=se(se({},tn),e);return i?(a,o)=>a>t.pageX-s&&a<t.pageX+t.width+s&&o>t.pageY-r&&o<t.pageY+t.height+r:(a,o)=>a>t.x-s&&a<t.x+t.width+s&&o>t.y-r&&o<t.y+t.height+r}isChartBoundsAvailable(){const t=this.getBounds(Y.CANVAS);return t.width>0&&t.height>0}resizePaneVertically(t,e){const s=this.panesOrder.indexOf(t),r=this.getBounds(Y.PANE_UUID_RESIZER(t));this.doResizePaneVertically(s,r.y-e),this.barResizerChangedSubject.next()}doResizePaneVertically(t,e){const s=t-1,r=this.getBounds(Y.ALL_PANES).height,i=this.config.components.paneResizer.height+Zo,a=r*this.graphsHeightRatio[this.panesOrder[t]],o=r*this.graphsHeightRatio[this.panesOrder[s]],l=a+e>i,c=o-e>i;if(l&&c){const h=e/r;this.graphsHeightRatio[this.panesOrder[t]]+=h,this.graphsHeightRatio[this.panesOrder[s]]-=h,this.recalculateBounds()}}notifyBoundsSubscribers(){Object.keys(this.boundsChangedSubscriptions).forEach(t=>{this.boundsChangedSubscriptions[t].next(this.getBounds(t))}),this.boundsChangedSubject.next()}observeBoundsChanged(t){let e=this.boundsChangedSubscriptions[t];return e||(e=new ee(this.getBounds(t)),this.boundsChangedSubscriptions[t]=e),e.pipe(yt(s=>this.copyOf(s)),Gt((s,r)=>this.sameBounds(s,r)))}observeAnyBoundsChanged(){return this.boundsChangedSubject.asObservable()}copyOf(t){return se({},t)}copyBounds(t,e){e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height}sameBounds(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}applyDefaultBounds(t){this.copyBounds(vr,t)}setMainCandleSeries(t){this.mainCandleSeries=t}}const Jo={0:1,1:.8,2:.6,3:.5,4:.4,5:.2},Qo=n=>{var t;const e=(t=Jo[n])!=null?t:.4,s=(1-e)/n;return[e,s]},Dg=(n,t)=>n.x>t.x&&n.x<t.x+t.width&&n.y>t.y&&n.y<t.y+t.height,qo=(n,t)=>n>t.y&&n<t.y+t.height,Me=(n,t,e,s,r,i,a)=>{const o=n[t];if(o)return o.x=e,o.y=s,o.pageX=e+a.x,o.pageY=s+a.y,o.width=r,o.height=i,o;const l={x:e,y:s,pageX:e+a.x,pageY:s+a.y,width:r,height:i};return n[t]=l,l},br=(n,t)=>Math.min(Math.max(n,t.y),t.y+t.height),tn={extensionX:0,extensionY:0,wholePage:!1},Cr=(n,t)=>n.width===t.width&&n.height===t.height;var tl=function(n){L(t,n);function t(e,s){return n.call(this)||this}return t.prototype.schedule=function(e,s){return s===void 0&&(s=0),this},t}(Ct),en={setInterval:function(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];var r=en.delegate;return r!=null&&r.setInterval?r.setInterval.apply(r,x([n,t],b(e))):setInterval.apply(void 0,x([n,t],b(e)))},clearInterval:function(n){var t=en.delegate;return((t==null?void 0:t.clearInterval)||clearInterval)(n)},delegate:void 0},el=function(n){L(t,n);function t(e,s){var r=n.call(this,e,s)||this;return r.scheduler=e,r.work=s,r.pending=!1,r}return t.prototype.schedule=function(e,s){var r;if(s===void 0&&(s=0),this.closed)return this;this.state=e;var i=this.id,a=this.scheduler;return i!=null&&(this.id=this.recycleAsyncId(a,i,s)),this.pending=!0,this.delay=s,this.id=(r=this.id)!==null&&r!==void 0?r:this.requestAsyncId(a,this.id,s),this},t.prototype.requestAsyncId=function(e,s,r){return r===void 0&&(r=0),en.setInterval(e.flush.bind(e,this),r)},t.prototype.recycleAsyncId=function(e,s,r){if(r===void 0&&(r=0),r!=null&&this.delay===r&&this.pending===!1)return s;s!=null&&en.clearInterval(s)},t.prototype.execute=function(e,s){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var r=this._execute(e,s);if(r)return r;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,s){var r=!1,i;try{this.work(e)}catch(a){r=!0,i=a||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),i},t.prototype.unsubscribe=function(){if(!this.closed){var e=this,s=e.id,r=e.scheduler,i=r.actions;this.work=this.state=this.scheduler=null,this.pending=!1,At(i,this),s!=null&&(this.id=this.recycleAsyncId(r,s,null)),this.delay=null,n.prototype.unsubscribe.call(this)}},t}(tl),Xn={now:function(){return(Xn.delegate||Date).now()},delegate:void 0},yr=function(){function n(t,e){e===void 0&&(e=n.now),this.schedulerActionCtor=t,this.now=e}return n.prototype.schedule=function(t,e,s){return e===void 0&&(e=0),new this.schedulerActionCtor(this,t).schedule(s,e)},n.now=Xn.now,n}(),nl=function(n){L(t,n);function t(e,s){s===void 0&&(s=yr.now);var r=n.call(this,e,s)||this;return r.actions=[],r._active=!1,r}return t.prototype.flush=function(e){var s=this.actions;if(this._active){s.push(e);return}var r;this._active=!0;do if(r=e.execute(e.state,e.delay))break;while(e=s.shift());if(this._active=!1,r){for(;e=s.shift();)e.unsubscribe();throw r}},t}(yr),wr=new nl(el),sl=wr;function rl(n,t){return y(function(e,s){var r=t!=null?t:{},i=r.leading,a=i===void 0?!0:i,o=r.trailing,l=o===void 0?!1:o,c=!1,h=null,v=null,p=!1,C=function(){v==null||v.unsubscribe(),v=null,l&&(H(),p&&s.complete())},O=function(){v=null,p&&s.complete()},B=function(k){return v=Qt(n(k)).subscribe(Wt(s,C,O))},H=function(){if(c){c=!1;var k=h;h=null,s.next(k),!p&&B(k)}};e.subscribe(Wt(s,function(k){c=!0,h=k,!(v&&!v.closed)&&(a?H():B(k))},function(){p=!0,!(l&&c&&v&&!v.closed)&&s.complete()}))})}function il(n){return n instanceof Date&&!isNaN(n)}function al(n,t,e){n===void 0&&(n=0),e===void 0&&(e=sl);var s=-1;return t!=null&&(ks(t)?e=t:s=t),new Pt(function(r){var i=il(n)?+n-e.now():n;i<0&&(i=0);var a=0;return e.schedule(function(){r.closed||(r.next(a++),0<=s?this.schedule(void 0,s):r.complete())},i)})}function Ne(n,t,e){t===void 0&&(t=wr);var s=al(n,t);return rl(function(){return s},e)}class tt{constructor(){this.subscriptions=[],this._state="initial",this.entities=[]}doActivate(){}doDeactivate(){this.subscriptions.forEach(t=>t()),this.subscriptions=[]}enable(){this._state!=="active"&&(this._state="deactivated",this.activate())}disable(){this._state!=="disabled"&&(this.deactivate(),this._state="disabled")}activate(){this._state!=="disabled"&&(this._state!=="active"&&(this.doActivate(),this._state="active"),this.entities.forEach(t=>t.activate()))}deactivate(){this._state!=="disabled"&&(this._state!=="deactivated"&&(this.doDeactivate(),this._state="deactivated"),this.entities.forEach(t=>t.deactivate()))}getState(){return this._state}addSubscription(t){this.subscriptions.push(t)}addRxSubscription(t){t&&this.subscriptions.push(t.unsubscribe.bind(t))}addChildEntity(t){this.entities.push(t),this._state==="active"&&t.activate()}removeChildEntity(t){this.entities=this.entities.filter(e=>e!==t)}}class ol extends tt{constructor(t,e,s,r){super(),this.element=t,this.canvasInputListener=e,this.canvasBoundsContainer=s,this.hitTestCanvasModel=r,this.normalLayer=new Map,this.extensionLayer=new Map,this.cursorChangedSubject=new V}doActivate(){super.doActivate(),this.canvasInputListener.observeMouseMoveNoDrag().pipe(Ne(100,void 0,{trailing:!0})).subscribe(t=>{const e=this.hitTestCanvasModel.resolveCursor(t);if(e!==void 0){this.updateCursor(e);return}t&&(this.normalLayer.forEach(s=>{s.hitTest(t.x,t.y)&&this.updateCursor(s.cursor)}),this.extensionLayer.forEach(s=>{s.hitTest(t.x,t.y)&&this.updateCursor(s.cursor)}))})}setCursorForBounds(t,e,s,r=0){const i=zn.hitTestOf(e,{extensionY:r});r?this.extensionLayer.set(t,{cursor:s,hitTest:i}):this.normalLayer.set(t,{cursor:s,hitTest:i})}setCursorForCanvasEl(t,e,s){this.observeCursorType(t,e,s)}removeCursorForCanvasEl(t){this.normalLayer.delete(t),this.extensionLayer.delete(t)}observeCursorChanged(){return this.cursorChangedSubject.pipe(Gt())}observeCursorType(t,e,s){const r=s?this.canvasBoundsContainer.getBoundsHitTest(t,{extensionY:s}):this.canvasBoundsContainer.getBoundsHitTest(t);s?this.extensionLayer.set(t,{cursor:e,hitTest:r}):this.normalLayer.set(t,{cursor:e,hitTest:r})}updateCursor(t){this.element.style.cursor!==t&&(this.element.style.cursor=t,this.cursorChangedSubject.next(t))}}const ll=n=>{const t=n.canvasArea!==null,e=n.snapshotCanvas!==null,s=n.backgroundCanvas!==null,r=n.mainCanvas!==null,i=n.yAxisLabelsCanvas!==null,a=n.crossToolCanvas!==null,o=n.hitTestCanvas!==null,l=n.chartResizer!==null,c=n.chartContainer!==null,h=n.dynamicObjectsCanvas!==null;return t&&e&&s&&r&&i&&a&&o&&l&&c&&h},cl=n=>`<div data-element="chartResizer" style="position: relative; min-height: 20px; height: 100%; width: 100%; touch-action: manipulation; z-index: 0;">
8
+ `):"",this.name="UnsubscriptionError",this.errors=e}});function At(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var Ct=function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,s,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var o=I(a),l=o.next();!l.done;l=o.next()){var c=l.value;c.remove(this)}}catch(B){t={error:B}}finally{try{l&&!l.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}else a.remove(this);var h=this.initialTeardown;if(L(h))try{h()}catch(B){i=B instanceof xt?B.errors:[B]}var g=this._finalizers;if(g){this._finalizers=null;try{for(var p=I(g),b=p.next();!b.done;b=p.next()){var E=b.value;try{Et(E)}catch(B){i=i!=null?i:[],B instanceof xt?i=x(x([],C(i)),C(B.errors)):i.push(B)}}}catch(B){s={error:B}}finally{try{b&&!b.done&&(r=p.return)&&r.call(p)}finally{if(s)throw s.error}}}if(i)throw new xt(i)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)Et(t);else{if(t instanceof n){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(t)}},n.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},n.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},n.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&At(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&At(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=function(){var t=new n;return t.closed=!0,t}(),n}(),Ut=Ct.EMPTY;function Dt(n){return n instanceof Ct||n&&"closed"in n&&L(n.remove)&&L(n.add)&&L(n.unsubscribe)}function Et(n){L(n)?n():n.unsubscribe()}var Wt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},le={setTimeout:function(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];var r=le.delegate;return r!=null&&r.setTimeout?r.setTimeout.apply(r,x([n,t],C(e))):setTimeout.apply(void 0,x([n,t],C(e)))},clearTimeout:function(n){var t=le.delegate;return((t==null?void 0:t.clearTimeout)||clearTimeout)(n)},delegate:void 0};function Te(n){le.setTimeout(function(){var t=Wt.onUnhandledError;if(t)t(n);else throw n})}function Me(){}var Be=function(){return Qt("C",void 0,void 0)}();function Re(n){return Qt("E",void 0,n)}function An(n){return Qt("N",n,void 0)}function Qt(n,t,e){return{kind:n,value:t,error:e}}var It=null;function ce(n){if(Wt.useDeprecatedSynchronousErrorHandling){var t=!It;if(t&&(It={errorThrown:!1,error:null}),n(),t){var e=It,s=e.errorThrown,r=e.error;if(It=null,s)throw r}}else n()}function Fe(n){Wt.useDeprecatedSynchronousErrorHandling&&It&&(It.errorThrown=!0,It.error=n)}var he=function(n){O(t,n);function t(e){var s=n.call(this)||this;return s.isStopped=!1,e?(s.destination=e,Dt(e)&&e.add(s)):s.destination=Ha,s}return t.create=function(e,s,r){return new be(e,s,r)},t.prototype.next=function(e){this.isStopped?de(An(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?de(Re(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?de(Be,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Ct),Dn=Function.prototype.bind;function Ye(n,t){return Dn.call(n,t)}var En=function(){function n(t){this.partialObserver=t}return n.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(s){bt(s)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(s){bt(s)}else bt(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){bt(e)}},n}(),be=function(n){O(t,n);function t(e,s,r){var i=n.call(this)||this,a;if(L(e)||!e)a={next:e!=null?e:void 0,error:s!=null?s:void 0,complete:r!=null?r:void 0};else{var o;i&&Wt.useDeprecatedNextContext?(o=Object.create(e),o.unsubscribe=function(){return i.unsubscribe()},a={next:e.next&&Ye(e.next,o),error:e.error&&Ye(e.error,o),complete:e.complete&&Ye(e.complete,o)}):a=e}return i.destination=new En(a),i}return t}(he);function bt(n){Wt.useDeprecatedSynchronousErrorHandling?Fe(n):Te(n)}function Vt(n){throw n}function de(n,t){var e=Wt.onStoppedNotification;e&&le.setTimeout(function(){return e(n,t)})}var Ha={closed:!0,next:Me,error:Vt,complete:Me};function Xt(n,t,e,s,r){return new ka(n,t,e,s,r)}var ka=function(n){O(t,n);function t(e,s,r,i,a,o){var l=n.call(this,e)||this;return l.onFinalize=a,l.shouldUnsubscribe=o,l._next=s?function(c){try{s(c)}catch(h){e.error(h)}}:n.prototype._next,l._error=i?function(c){try{i(c)}catch(h){e.error(h)}finally{this.unsubscribe()}}:n.prototype._error,l._complete=r?function(){try{r()}catch(c){e.error(c)}finally{this.unsubscribe()}}:n.prototype._complete,l}return t.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var s=this.closed;n.prototype.unsubscribe.call(this),!s&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t}(he);function yt(n,t){return y(function(e,s){var r=0;e.subscribe(Xt(s,function(i){s.next(n.call(t,i,r++))}))})}var Ts=function(n){return n&&typeof n.length=="number"&&typeof n!="function"};function Ms(n){return L(n==null?void 0:n.then)}var In=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function _e(n){return n}function wg(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return _s(n)}function _s(n){return n.length===0?_e:n.length===1?n[0]:function(e){return n.reduce(function(s,r){return r(s)},e)}}var Pt=function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,s){var r=this,i=Ua(t)?t:new be(t,e,s);return ce(function(){var a=r,o=a.operator,l=a.source;i.add(o?o.call(i,l):l?r._subscribe(i):r._trySubscribe(i))}),i},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var s=this;return e=As(e),new e(function(r,i){var a=new be({next:function(o){try{t(o)}catch(l){i(l),a.unsubscribe()}},error:i,complete:r});s.subscribe(a)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[In]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return _s(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=As(t),new t(function(s,r){var i;e.subscribe(function(a){return i=a},function(a){return r(a)},function(){return s(i)})})},n.create=function(t){return new n(t)},n}();function As(n){var t;return(t=n!=null?n:Wt.Promise)!==null&&t!==void 0?t:Promise}function ja(n){return n&&L(n.next)&&L(n.error)&&L(n.complete)}function Ua(n){return n&&n instanceof he||ja(n)&&Dt(n)}function Ds(n){return L(n[In])}function Es(n){return Symbol.asyncIterator&&L(n==null?void 0:n[Symbol.asyncIterator])}function Is(n){return new TypeError("You provided "+(n!==null&&typeof n=="object"?"an invalid object":"'"+n+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Wa(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Os=Wa();function Ls(n){return L(n==null?void 0:n[Os])}function Bs(n){return R(this,arguments,function(){var e,s,r,i;return d(this,function(a){switch(a.label){case 0:e=n.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,A(e.read())];case 3:return s=a.sent(),r=s.value,i=s.done,i?[4,A(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,A(r)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function Rs(n){return L(n==null?void 0:n.getReader)}function te(n){if(n instanceof Pt)return n;if(n!=null){if(Ds(n))return Xa(n);if(Ts(n))return za(n);if(Ms(n))return Va(n);if(Es(n))return Fs(n);if(Ls(n))return Ga(n);if(Rs(n))return $a(n)}throw Is(n)}function Xa(n){return new Pt(function(t){var e=n[In]();if(L(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function za(n){return new Pt(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function Va(n){return new Pt(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,Te)})}function Ga(n){return new Pt(function(t){var e,s;try{for(var r=I(n),i=r.next();!i.done;i=r.next()){var a=i.value;if(t.next(a),t.closed)return}}catch(o){e={error:o}}finally{try{i&&!i.done&&(s=r.return)&&s.call(r)}finally{if(e)throw e.error}}t.complete()})}function Fs(n){return new Pt(function(t){Za(n,t).catch(function(e){return t.error(e)})})}function $a(n){return Fs(Bs(n))}function Za(n,t){var e,s,r,i;return m(this,void 0,void 0,function(){var a,o;return d(this,function(l){switch(l.label){case 0:l.trys.push([0,5,6,11]),e=j(n),l.label=1;case 1:return[4,e.next()];case 2:if(s=l.sent(),!!s.done)return[3,4];if(a=s.value,t.next(a),t.closed)return[2];l.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return o=l.sent(),r={error:o},[3,11];case 6:return l.trys.push([6,,9,10]),s&&!s.done&&(i=e.return)?[4,i.call(e)]:[3,8];case 7:l.sent(),l.label=8;case 8:return[3,10];case 9:if(r)throw r.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function ee(n,t,e,s,r){s===void 0&&(s=0),r===void 0&&(r=!1);var i=t.schedule(function(){e(),r?n.add(this.schedule(null,s)):this.unsubscribe()},s);if(n.add(i),!r)return i}function Ka(n,t,e,s,r,i,a,o){var l=[],c=0,h=0,g=!1,p=function(){g&&!l.length&&!c&&t.complete()},b=function(B){return c<s?E(B):l.push(B)},E=function(B){i&&t.next(B),c++;var N=!1;te(e(B,h++)).subscribe(Xt(t,function(k){r==null||r(k),i?b(k):t.next(k)},function(){N=!0},void 0,function(){if(N)try{c--;for(var k=function(){var X=l.shift();a?ee(t,a,function(){return E(X)}):E(X)};l.length&&c<s;)k();p()}catch(X){t.error(X)}}))};return n.subscribe(Xt(t,b,function(){g=!0,p()})),function(){o==null||o()}}function Ys(n,t,e){return e===void 0&&(e=1/0),L(t)?Ys(function(s,r){return yt(function(i,a){return t(s,i,r,a)})(te(n(s,r)))},e):(typeof t=="number"&&(e=t),y(function(s,r){return Ka(s,r,n,e)}))}function Ns(n){return n===void 0&&(n=1/0),Ys(_e,n)}var Hs=new Pt(function(n){return n.complete()});function Sg(n){return n?Ja(n):Hs}function Ja(n){return new Observable(function(t){return n.schedule(function(){return t.complete()})})}function ks(n){return n&&L(n.schedule)}function On(n){return n[n.length-1]}function qa(n){return L(On(n))?n.pop():void 0}function Je(n){return ks(On(n))?n.pop():void 0}function Qa(n,t){return typeof On(n)=="number"?n.pop():t}function js(n,t){return t===void 0&&(t=0),y(function(e,s){e.subscribe(Xt(s,function(r){return ee(s,n,function(){return s.next(r)},t)},function(){return ee(s,n,function(){return s.complete()},t)},function(r){return ee(s,n,function(){return s.error(r)},t)}))})}function Us(n,t){return t===void 0&&(t=0),y(function(e,s){s.add(n.schedule(function(){return e.subscribe(s)},t))})}function to(n,t){return te(n).pipe(Us(t),js(t))}function eo(n,t){return te(n).pipe(Us(t),js(t))}function no(n,t){return new Pt(function(e){var s=0;return t.schedule(function(){s===n.length?e.complete():(e.next(n[s++]),e.closed||this.schedule())})})}function so(n,t){return new Pt(function(e){var s;return ee(e,t,function(){s=n[Os](),ee(e,t,function(){var r,i,a;try{r=s.next(),i=r.value,a=r.done}catch(o){e.error(o);return}a?e.complete():e.next(i)},0,!0)}),function(){return L(s==null?void 0:s.return)&&s.return()}})}function Ws(n,t){if(!n)throw new Error("Iterable cannot be null");return new Pt(function(e){ee(e,t,function(){var s=n[Symbol.asyncIterator]();ee(e,t,function(){s.next().then(function(r){r.done?e.complete():e.next(r.value)})},0,!0)})})}function ro(n,t){return Ws(Bs(n),t)}function io(n,t){if(n!=null){if(Ds(n))return to(n,t);if(Ts(n))return no(n,t);if(Ms(n))return eo(n,t);if(Es(n))return Ws(n,t);if(Ls(n))return so(n,t);if(Rs(n))return ro(n,t)}throw Is(n)}function qe(n,t){return t?io(n,t):te(n)}function Ot(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Je(n),s=Qa(n,1/0),r=n;return r.length?r.length===1?te(r[0]):Ns(s)(qe(r,e)):Hs}class Ln{constructor(t,e){this.onTickFunction=e,this.animationTimeLeft=0,this.animationInProgress=!1,this.animationTime=t.duration,this.animationTimeLeft=t.timeLeft===void 0?t.duration:t.timeLeft,this.animationInProgress=!0}tick(){this.animationTimeLeft<=0?this.animationInProgress=!1:this.animationTimeLeft--,this.onTickFunction&&this.onTickFunction()}getProgress(){return 1-this.animationTimeLeft/this.animationTime}finishAnimation(){this.animationInProgress=!1,this.animationTimeLeft=0}}var ao=_t(6767),Gt=_t.n(ao);class oo extends Ln{constructor(t,e,s=()=>{}){super(t,s),this.colorConfigs=e,e.forEach(r=>{r.rgbColor=Gt().rgb(r.color),r.initialAlpha=r.rgbColor.valpha,r.currentAnimationColor=r.rgbColor})}tick(){super.tick(),this.animationInProgress&&this.colorConfigs.forEach(t=>{t.initialAlpha===void 0||t.rgbColor===void 0||(t.type==="fading"?t.currentAnimationColor=t.rgbColor.alpha(t.initialAlpha*this.animationTimeLeft/this.animationTime):t.type==="appearing"&&(t.currentAnimationColor=t.rgbColor.alpha(t.initialAlpha*(1-this.animationTimeLeft/this.animationTime))))})}getColor(t){var e,s;return(s=(e=this.colorConfigs[t].currentAnimationColor)==null?void 0:e.toString())!=null?s:"#FFFFFF"}revert(){this.animationTimeLeft=Math.max(this.animationTime-this.animationTimeLeft,1),this.colorConfigs.forEach(t=>{t.type==="fading"?t.type="appearing":t.type="fading"})}}class lo extends Ln{constructor(t,e,s=()=>{}){super(t,s),this.colorConfigs=e,e.forEach(r=>{r.rgbStartColor=Gt().rgb(r.startColor),r.rgbEndColor=Gt().rgb(r.endColor),r.currentAnimationColor=r.type==="appearing"?r.rgbStartColor:r.rgbEndColor})}tick(){super.tick(),this.animationInProgress&&this.colorConfigs.forEach(t=>{const e=1-this.animationTimeLeft/this.animationTime;!t.rgbStartColor||!t.rgbEndColor||(t.type==="fading"?t.currentAnimationColor=this.calculateTransitionColor(t.rgbEndColor,t.rgbStartColor,e):t.type==="appearing"&&(t.currentAnimationColor=this.calculateTransitionColor(t.rgbStartColor,t.rgbEndColor,e)))})}getColor(t){var e,s;return(s=(e=this.colorConfigs[t].currentAnimationColor)==null?void 0:e.toString())!=null?s:"#FFFFFF"}revert(){this.animationTimeLeft=Math.max(this.animationTime-this.animationTimeLeft,1),this.colorConfigs.forEach(t=>{t.type==="fading"?t.type="appearing":t.type="fading"})}moveToLastTick(){this.animationTimeLeft=1}calculateTransitionColor(t,e,s){const r=t.red()-(t.red()-e.red())*s,i=t.green()-(t.green()-e.green())*s,a=t.blue()-(t.blue()-e.blue())*s;return Gt().rgb(r,i,a)}}var co=Math.pow;const Qe=14,tn=[];for(let n=0;n<Qe+1;n++)tn.push(co(10,n));const Bn=5e-13;class wt{static roundToNearest(t,e){return isFinite(t)?wt.isZero(t)?0:(t>0?t+=Bn:t<0&&(t-=Bn),wt.roundDecimal(Math.round(wt.roundDecimal(t/e))*e)):t}static roundUpToNearest(t,e){return wt.roundDecimal(Math.ceil(t/e))*e}static roundDecimal(t){if(isNaN(t)||t===Math.floor(t))return t;const e=Math.sign(t),s=Math.abs(t),r=Math.min(Qe,Qe-1-Math.floor(Math.log10(s)));for(let i=r;i>=0;i--){const a=Math.floor(tn[i]*s+.5);if(a<tn[Qe])return e*a/tn[i]}return Math.round(t)}static makeDecimal(t,e,s){if(isFinite(t)){const r=t.toFixed(e);return s?r.replace(".",s):r}else return""}static compare(t,e,s){return t>e+s?1:t<e-s?-1:(isNaN(t)?1:0)-(isNaN(e)?1:0)}static isZero(t){return wt.compare(t,0,Bn)===0}static cutNumber(t,e,s=0){return{K:i=>i/1e3,M:i=>i/1e6}[e](t).toFixed(s)+e}}function ho(n,t,e){const s=n/t;return s>=e||s<=1/e}function Xs(n,t,e){return Math.max(t,Math.min(n,e))}function uo(n){return 1-(Math.pow(2,-10*n)-.0009765625)*1.0009775171065494}function Ne(...n){for(const t of n)if(t!==void 0&&isFinite(t))return t;return NaN}const gt=n=>~~n,fo=n=>~~(n+1),Ce=n=>~~(n+.5),go=(n,t)=>n>>t;function Ft(){const n=()=>Math.random().toString(16).slice(-4);return`${n()+n()}-${n()}-${n()}-${n()}-${n()+n()+n()}`}class vo extends Ln{constructor(t,e,s){var r;super(e,s),this.viewportModel=t,this.animationConfig=e,this.id=Ft(),this.xStart=t.xStart,this.xEnd=t.xEnd,this.yStart=t.yStart,this.yEnd=t.yEnd,this.zoomX=t.zoomX,this.zoomY=t.zoomY,this.easingFn=(r=e.easingFn)!=null?r:uo}tick(){if(super.tick(),this.animationInProgress){const t=this.easingFn(this.getProgress()),e=this.xStart+(this.animationConfig.targetXStart-this.xStart)*t,s=this.xEnd+(this.animationConfig.targetXEnd-this.xEnd)*t,r=this.yStart+(this.animationConfig.targetYStart-this.yStart)*t,i=this.yEnd+(this.animationConfig.targetYEnd-this.yEnd)*t,a=this.zoomX+(this.animationConfig.targetZoomX-this.zoomX)*t,o=this.zoomY+(this.animationConfig.targetZoomY-this.zoomY)*t;this.viewportModel.apply({xStart:e,xEnd:s,yStart:r,yEnd:i,zoomX:a,zoomY:o,inverseY:this.viewportModel.inverseY})}}finishAnimation(){super.finishAnimation(),this.viewportModel.apply({xStart:this.animationConfig.targetXStart,xEnd:this.animationConfig.targetXEnd,yStart:this.animationConfig.targetYStart,yEnd:this.animationConfig.targetYEnd,zoomX:this.animationConfig.targetZoomX,zoomY:this.animationConfig.targetZoomY,inverseY:this.viewportModel.inverseY})}}var mo=Object.defineProperty,po=Object.defineProperties,bo=Object.getOwnPropertyDescriptors,zs=Object.getOwnPropertySymbols,Co=Object.prototype.hasOwnProperty,yo=Object.prototype.propertyIsEnumerable,Vs=(n,t,e)=>t in n?mo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,wo=(n,t)=>{for(var e in t||(t={}))Co.call(t,e)&&Vs(n,e,t[e]);if(zs)for(var e of zs(t))yo.call(t,e)&&Vs(n,e,t[e]);return n},So=(n,t)=>po(n,bo(t));const Gs=10,Rn="VIEWPORT_ANIMATION";class xo{constructor(t){this.eventBus=t,this.animations={}}startViewportMovementAnimation(t,e,s=Rn,r){const i=new vo(t,e,r);return this.animations[s]=i,this.ensureIntervalStarted(),i}startColorAlphaAnimation(t,e,s,r){const i=new oo(So(wo({},r),{duration:r&&r.duration||Gs}),e,s);return this.animations[t]=i,this.ensureIntervalStarted(),i}startColorTransitionAnimation(t,e,s=Gs,r){const i=new lo({duration:s},e,r);return this.animations[t]=i,this.ensureIntervalStarted(),i}getAnimation(t){return this.animations[t]}getColorAlphaAnimation(t){return this.getAnimation(t)}getColorTransitionAnimation(t){return this.getAnimation(t)}forceStopAnimation(t){const e=this.animations[t];e&&(e.animationTimeLeft=-1,e.animationInProgress=!1)}ensureIntervalStarted(){this.animationIntervalId||(this.animationIntervalId=window.setInterval(()=>this.tick(),20))}tick(){let t=!0;for(const e of Object.keys(this.animations)){const s=this.animations[e];s.tick(),s.animationInProgress&&(t=!1)}t?this.stopInterval():this.eventBus.fireDraw()}stopInterval(){clearInterval(this.animationIntervalId),this.animationIntervalId=void 0}}var Po=ft(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),V=function(n){O(t,n);function t(){var e=n.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return t.prototype.lift=function(e){var s=new $s(this,this);return s.operator=e,s},t.prototype._throwIfClosed=function(){if(this.closed)throw new Po},t.prototype.next=function(e){var s=this;ce(function(){var r,i;if(s._throwIfClosed(),!s.isStopped){s.currentObservers||(s.currentObservers=Array.from(s.observers));try{for(var a=I(s.currentObservers),o=a.next();!o.done;o=a.next()){var l=o.value;l.next(e)}}catch(c){r={error:c}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}}})},t.prototype.error=function(e){var s=this;ce(function(){if(s._throwIfClosed(),!s.isStopped){s.hasError=s.isStopped=!0,s.thrownError=e;for(var r=s.observers;r.length;)r.shift().error(e)}})},t.prototype.complete=function(){var e=this;ce(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var s=e.observers;s.length;)s.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return((e=this.observers)===null||e===void 0?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(e){return this._throwIfClosed(),n.prototype._trySubscribe.call(this,e)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var s=this,r=this,i=r.hasError,a=r.isStopped,o=r.observers;return i||a?Ut:(this.currentObservers=null,o.push(e),new Ct(function(){s.currentObservers=null,At(o,e)}))},t.prototype._checkFinalizedStatuses=function(e){var s=this,r=s.hasError,i=s.thrownError,a=s.isStopped;r?e.error(i):a&&e.complete()},t.prototype.asObservable=function(){var e=new Pt;return e.source=this,e},t.create=function(e,s){return new $s(e,s)},t}(Pt),$s=function(n){O(t,n);function t(e,s){var r=n.call(this)||this;return r.destination=e,r.source=s,r}return t.prototype.next=function(e){var s,r;(r=(s=this.destination)===null||s===void 0?void 0:s.next)===null||r===void 0||r.call(s,e)},t.prototype.error=function(e){var s,r;(r=(s=this.destination)===null||s===void 0?void 0:s.error)===null||r===void 0||r.call(s,e)},t.prototype.complete=function(){var e,s;(s=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||s===void 0||s.call(e)},t.prototype._subscribe=function(e){var s,r;return(r=(s=this.source)===null||s===void 0?void 0:s.subscribe(e))!==null&&r!==void 0?r:Ut},t}(V),$t=function(n){O(t,n);function t(e){var s=n.call(this)||this;return s._value=e,s}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(e){var s=n.prototype._subscribe.call(this,e);return!s.closed&&e.next(this._value),s},t.prototype.getValue=function(){var e=this,s=e.hasError,r=e.thrownError,i=e._value;if(s)throw r;return this._throwIfClosed(),i},t.prototype.next=function(e){n.prototype.next.call(this,this._value=e)},t}(V);function Zt(n,t){return t===void 0&&(t=_e),n=n!=null?n:To,y(function(e,s){var r,i=!0;e.subscribe(Xt(s,function(a){var o=t(a);(i||!n(r,o))&&(i=!1,r=o,s.next(a))}))})}function To(n,t){return n===t}function Mo(n){return function(){n.forEach(e=>typeof e=="function"&&e()),n.length=0}}function Fn(n){return n}function Zs(n){return n!=null}const xg=()=>{};function Pg(n){return n!=null}function _o(n,t,e=Ao,s=!0){const r=n.filter(i=>t.some(a=>e(i,a)));return s?r.filter((i,a,o)=>o.indexOf(i)===a):r}const Ks=(n,t)=>{const e=t.slice().filter(s=>n.find(r=>r===s));return n.map(s=>{var r;return t.indexOf(s)>=0&&(r=e.shift())!=null?r:s})},Ao=(n,t)=>n===t,Tg=(n,t,e)=>n.filter(s=>t.filter(r=>e(s,r)).length===0),Do=(n,t)=>n===t,Js=(n,t,e=Do)=>n.length===t.length&&n.every((s,r)=>e(s,t[r]));function Mg(n,t,e){const s=n.slice(),r=s[t];return s.splice(t,1),s.splice(e,0,r),s}function Yn(n,t,e){const s=n.length,r=Xs(t,0,s-1),i=Xs(e,0,s-1),a=n[r];return n.splice(r,1),n.splice(i,0,a),n}function _g(n,t,e){const s=n.slice(),r=s.findIndex(t);return r!==-1&&(s.splice(r,1),s.splice(r,0,e)),s}const Ag=n=>{const t={};return n.filter(e=>t[e]?!1:t[e]=!0)},Dg=(n,t)=>n.reduce((e,s)=>((e[s[t]]=e[s[t]]||[]).push(s),e),{}),Eg=(n,t)=>[].concat(...n.map(e=>[e,t])).slice(0,-1),Ig=n=>Array.isArray(n[0]),qs=n=>Array.isArray(n[0])?n:[n],Eo=(n,t,e)=>{const s=[];let r=0;for(const i of n){const a=Math.max(t-r,0),o=Math.max(e-r,-1),l=i.slice(a,o+1);l.length>0&&s.push(l),r+=i.length}return s},Io=(n,t)=>n>=0?t[n]:t[t.length+n],Lt=n=>Array.prototype.flat?n.flat():He(n,Fn),He=(n,t)=>{if(Array.prototype.flatMap)return n.flatMap(t);const e=[];for(let s=0;s<n.length;s++){const r=n[s];e.push(...t(r,s,n))}return e};function ue(n,t,e){const s=e!=null?e:Fn;return!n.length||t!==t?{index:-1,exact:!0}:Nn(n,t,0,n.length,s)}function Nn(n,t,e,s,r){const i=go(e+s,1),a=r(n[i]);return t===a?{index:i,exact:!0}:e===i?{index:e,exact:!1}:t<a?Nn(n,t,e,i,r):Nn(n,t,i,s,r)}function Yt(n){if(n&&n.length)return n[n.length-1]}function Oo(n){const t=this.indexOf(n);return t!==-1&&this.splice(t,1),this}function Lo(n,t){if(!n)return;const e=n.indexOf(t);e!==-1&&n.splice(e,1)}function ke(n){if(n)return n[0]}function Bo(n){function t(e,s){const r=n(s);return r==null||!isFinite(r)?e:[Math.max(e[0],r),Math.min(e[1],r)]}return function(e){const s=[Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY];return e?e.reduce(t,s):s}}function Ro(n,t,e,s=()=>0){const r=(a,o)=>{let l=0,c=a.length-1;for(;c>=l;){const h=Math.ceil((l+c)/2);s(a[h])<=o?l=h+1:c=h-1}return c},i=(a,o)=>{let l=0,c=a.length-1;for(;c>=l;){const h=Math.ceil((l+c)/2);s(a[h])>=o?c=h-1:l=h+1}return l};return n.slice(i(n,t),r(n,e)+1)}let Hn;const kn=()=>(Hn||(Hn=!!navigator.userAgent.match(/Android|iPhone|Opera Mini/)||!1),Hn);function Qs(n,t){let e="";t.textStyle&&(t.textStyle.italic&&(e+="italic "),t.textStyle.bold&&(e+="bold ")),n.font=e+(t.textSize||12)+" "+(t.textFontFamily||"monospace"),n.fillStyle=t.textFill||"#FFFFFF",t.rtl?n.textAlign="right":n.textAlign="start"}function jn(n){const t=n.font.match(/(\d+.)?\d+(px|pt)/gi);let e="10px";return t&&t.length&&(t[0].includes("pt")?e=+t[0].slice(0,t[0].indexOf("pt"))*96/72+"px":e=t[0]),parseInt(e,10)*1.33}function tr(n,t,e){n.save(),Qs(n,e);const s=Math.ceil(Math.max.apply(Math,t.map(a=>n.measureText(a).width))),r=jn(n),i=r*t.length;return n.restore(),[s,i,r]}function er(n){return(n||"").split(/\r\n|\r|\n/)}function Fo(n,t,e,s,r){n.save();const[i,,a]=tr(n,t,r);t.forEach((o,l)=>{var c,h,g;const p=n.measureText(o).width,b=Yo(e,i,p,(c=r.textAlign)!=null?c:"left");r.textStyle&&r.textStyle.underline&&No(n,o,b,s+a*l,(h=r.textFill)!=null?h:"",(g=r.textSize)!=null?g:""),n.fillText(o,b,s+a*l)}),n.restore()}function Yo(n,t,e,s){switch(s){case"left":return n;case"right":return n+t-e;default:return n}}function No(n,t,e,s,r,i){n.save();const a=n.measureText(t).width,o=e,l=e+a,c=s+2,h=c;let g=parseInt(i,10)/15;g<1&&(g=1),n.beginPath(),n.strokeStyle=r,n.lineWidth=g,n.moveTo(o,c),n.lineTo(l,h),n.stroke(),n.restore()}function Og(n){return`${n}px`}function fe(n,t,e){const s=Gt().rgb(n).array(),r=s[0],i=s[1],a=s[2];return(r*299+i*587+a*114)/1e3<128?t:e}function Ho(n,t,e,s){const r=s.components.navigationMap.timeLabels,i=r.padding,a=nr(t,r.dateFormat,e),o=er(a),l={textFontFamily:r.fontFamily,textSize:`${r.fontSize}px`},[c,h]=tr(n,o,l);return[c+i.x*2,h+i.y*2]}function nr(n,t,e){return e(t)(n).split(" ").join(`
9
+ `)}const sr={};function ne(n,t){let e=sr[n];return e!==void 0||(t.save(),t.font=n,e=t.measureText("M").width,sr[n]=e,t.restore()),e}const rr=new Map;function Nt(n,t,e){const s=e+n;let r=rr.get(s);return r||(t.save(),t.font=e,r=t.measureText(n).width,rr.set(s,r),t.restore()),r}function Kt(n,t,e=ir){function s(r,i){for(const a in i)a in r?typeof r[a]=="object"&&r[a]!==null&&!Array.isArray(r[a])?s(r[a],i[a]):e!=null&&e.overrideExisting&&(r[a]=i[a]):e!=null&&e.addIfMissing&&(r[a]=i[a]);return r}return s(n,t)}function Lg(n,t,e,s=!1){!n||!t||t.length===0||t.forEach(r=>{const i=e(r),a=n.findIndex(o=>e(o)===i);a===-1?n.push(r):s?Kt(n[a],r,{overrideExisting:!0,addIfMissing:!0}):n.splice(a,1,r)})}const ir={overrideExisting:!1,addIfMissing:!0};var ko=Object.defineProperty,ar=Object.getOwnPropertySymbols,jo=Object.prototype.hasOwnProperty,Uo=Object.prototype.propertyIsEnumerable,or=(n,t,e)=>t in n?ko(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Wo=(n,t)=>{for(var e in t||(t={}))jo.call(t,e)&&or(n,e,t[e]);if(ar)for(var e of ar(t))Uo.call(t,e)&&or(n,e,t[e]);return n};const lr="Open Sans Semibold, sans-serif",Xo=null,zo=["candle","line","area","bar","scatterPlot","trend","hollow","histogram","baseline"],Bg=n=>Xo.find(t=>t===n)!==void 0,en=()=>({devexpertsPromoLink:!0,useUTCTimeOverride:!1,shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],rtl:!1,scale:{keepZoomXOnYAxisChange:!0,auto:!0,zoomToCursor:!1,lockPriceToBarRatio:!1,autoScaleOnCandles:!0,autoScaleDisableOnDrag:{enabled:!0,edgeAngle:Math.PI/15,yDiff:80},inverse:!1,zoomSensitivity:.25,defaultViewportItems:100,disableAnimations:!1},timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,components:{chart:{type:"candle",showCandlesBorder:!0,showActiveCandlesBorder:!0,showWicks:!0,candleLineWidth:1,lineWidth:1,areaLineWidth:1,barLineWidth:1,minWidth:.5,minCandles:10,candlePaddingPercent:.25,highlightActiveCandle:!0,cursor:"default",selectedWidth:3,minCandlesOffset:2,defaultZoomCandleWidth:7,zoomStep:0,histogram:{barCapSize:1}},yAxis:{type:"regular",visible:!0,labelHeight:23,zeroPercentLine:!0,customScale:!0,customScaleDblClick:!0,align:"right",fontSize:12,fontFamily:lr,cursor:"ns-resize",resizeDisabledCursor:"default",labelBoxMargin:{top:4,bottom:4,end:8,start:10},typeConfig:{badge:{rounded:!0,paddings:{top:4,bottom:4,end:4,start:4}},plain:{},rectangle:{rounded:!1,paddings:{top:4,bottom:4,end:4,start:4}}},labels:{descriptions:!1,settings:{lastPrice:{mode:"label",type:"badge"},countdownToBarClose:{mode:"none",type:"rectangle"}}}},xAxis:{visible:!0,formatsForLabelsConfig:{lessThanSecond:"HH:mm:ss",second_1:"HH:mm:ss",minute_1:"HH:mm",minute_5:"HH:mm",minute_30:"HH:mm",hour_1:"HH:mm",day_1:"dd.MM",month_1:"MMM",year_1:"YYYY"},fontSize:12,fontFamily:lr,cursor:"ew-resize",padding:{top:8,bottom:16},fontStyle:""},events:{visible:!1,eventsVisibility:{"conference-calls":!0,dividends:!0,splits:!0,earnings:!0},height:20,cursor:"default",xAxisLabelFormat:[{format:"d MMM"}],icons:{earnings:{normal:'<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.06066 6.5L6.5 1.06066L11.9393 6.5L6.5 11.9393L1.06066 6.5Z" stroke="#D92C40" stroke-width="1.5"/></svg>',hover:'<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.06066 6.5L6.5 1.06066L11.9393 6.5L6.5 11.9393L1.06066 6.5Z" fill="#D92C40" stroke="#D92C40" stroke-width="1.5"/></svg>'}}},offsets:{visible:!0,right:10,top:10,bottom:20,left:0},waterMark:{visible:!1,fontFamily:"Open Sans, sans-serif",firstRowFontSize:80,firstRowBottomPadding:10,secondRowFontSize:40,secondRowBottomPadding:25,thirdRowFontSize:40,thirdRowBottomPadding:15,position:"center",offsetX:20,offsetY:20,logoWidth:20,logoHeight:20},highLow:{visible:!1,font:"12px sans-serif"},highlights:{visible:!1,fontFamily:"Open Sans",fontSize:13,border:{width:1,dash:[8,4]}},crossTool:{type:"cross-and-labels",discrete:!1,magnetTarget:"none",lineDash:[4,6],xAxisLabelFormat:[{format:"dd.MM.YYYY",showWhen:{periodMoreThen:846e5}},{format:"dd.MM.YYYY HH:mm",showWhen:{periodLessThen:846e5,periodMoreThen:6e3}},{format:"dd.MM.YYYY HH:mm:ss",showWhen:{periodLessThen:6e3}}],xLabel:{padding:{top:4,bottom:4,right:8,left:8},margin:{top:4}},yLabel:{padding:{top:4,bottom:4,end:4,start:4},type:"badge"}},grid:{visible:!0,horizontal:!1,vertical:!0,width:1,dash:[0,0],color:"#FFFFFF"},volumes:{visible:!0,showSeparately:!1,valueLines:15,barCapSize:1,volumeBarSpace:0,volumeFillColor:"#FFFFFF"},navigationMap:{visible:!1,allCandlesHistory:!0,timeLabels:{visible:!1,dateFormat:"dd.MM.YYYY HH:mm",fontFamily:"Open Sans",fontSize:13,padding:{x:10,y:1}},minSliderWindowWidth:10,cursors:{chart:"default",buttonLeft:"pointer",buttonRight:"pointer",leftResizer:"ew-resize",rightResizer:"ew-resize",slider:"grab"},knots:{height:35,width:7,border:0,lineWidth:1}},baseline:{cursor:"ns-resize",dragZone:3,height:1},paneResizer:{cursor:"ns-resize",height:1,visible:!0,fixedMode:!1,dragZone:3}},colors:{candleTheme:{upColor:"rgba(77,153,83,1)",downColor:"rgba(217,44,64,1)",noneColor:"rgba(255,255,255,1)",upWickColor:"rgba(77,153,83,1)",downWickColor:"rgba(217,44,64,1)",noneWickColor:"rgba(255,255,255,1)",borderOpacity:1},barTheme:{upColor:"rgba(77,153,83,1)",downColor:"rgba(217,44,64,1)",noneColor:"rgba(255,255,255,1)"},lineTheme:{upColor:"rgba(77,153,83,1)",downColor:"rgba(217,44,64,1)",noneColor:"rgba(255,255,255,1)"},chartAreaTheme:{backgroundMode:"regular",backgroundColor:"rgba(20,20,19,1)",backgroundGradientTopColor:"red",backgroundGradientBottomColor:"blue",gridColor:"rgba(37,37,36,1)"},scatterPlot:{mainColor:"rgba(255,255,255,1)"},areaTheme:{lineColor:"rgba(127,120,214,1)",startColor:"rgba(169,38,251,1)",stopColor:"rgba(169,38,251,0.8)"},baseLineTheme:{lowerSectionStrokeColor:"rgba(217,44,64,1)",upperSectionStrokeColor:"rgba(77,153,83,1)",lowerSectionFillColor:"rgba(217, 44, 64, 0.07)",upperSectionFillColor:"rgba(77, 153, 83, 0.07)",baselineColor:"rgba(55,55,54,1)"},histogram:{upCap:"rgba(77,153,83,1)",upBottom:"rgba(77,153,83,0.1)",upBright:"rgba(77,153,83,0.4)",downCap:"rgba(217,44,64,1)",downBottom:"rgba(217,44,64,0.1)",downBright:"rgba(217,44,64,0.4)",noneCap:"rgba(255,255,255,1)",noneBottom:"rgba(255,255,255,0.1)",noneBright:"rgba(255,255,255,0.4)"},crossTool:{lineColor:"rgba(107,96,86,1)",labelBoxColor:"rgba(107,96,86,1)",labelTextColor:"rgba(255,255,255,1)"},waterMarkTheme:{firstRowColor:"rgba(255,255,255,0.2)",secondRowColor:"rgba(255,255,255,0.2)",thirdRowColor:"rgba(255,255,255,0.2)"},highlights:{NO_TRADING:{border:"rgba(107,96,86,1)",background:"transparent",label:"transparent"},AFTER_MARKET:{border:"rgba(107,96,86,1)",background:"rgba(38, 251, 149, 0.05)",label:"transparent"},PRE_MARKET:{border:"rgba(107,96,86,1)",background:"rgba(255, 170, 0, 0.05)",label:"transparent"},REGULAR:{border:"rgba(107,96,86,1)",background:"transparent",label:"transparent"}},activeCandleTheme:{upColor:"rgba(98,201,93,1)",downColor:"rgba(255,47,47,1)",noneColor:"rgba(255,255,255,1)",upWickColor:"rgba(98,201,93,1)",downWickColor:"rgba(255,47,47,1)",noneWickColor:"rgba(255,255,255,1)",borderOpacity:.5},volume:{downBarColor:"rgba(99,30,37,1)",upBarColor:"rgba(42,72,44,1)",noneBarColor:"rgba(255,255,255,0.4)",upCapColor:"rgba(42,72,44,1)",downCapColor:"rgba(99,30,37,1)",noneCapColor:"rgba(255,255,255,0.4)"},highLowTheme:{highColor:"rgba(223,222,223,1)",lowColor:"rgba(223,222,223,1)"},instrumentInfo:{textColor:"#aeb1b3"},paneResizer:{lineColor:"rgba(55,55,54,1)",bgColor:"rgba(20,20,19,1)",bgHoverColor:"rgba(55,55,54,0.6)"},events:{earnings:{color:"rgba(217,44,64,1)"},dividends:{color:"rgba(169,38,251,1)"},splits:{color:"rgba(244,187,63,1)"},"conference-calls":{color:"rgba(48,194,97,1)"}},secondaryChartTheme:[{lineTheme:{upColor:"rgba(226,61,25,1)",downColor:"rgba(226,61,25,1)",noneColor:"rgba(226,61,25,1)"},areaTheme:{lineColor:"rgba(226,61,25,1)",startColor:"rgba(226,61,25,0.8)",stopColor:"rgba(226,61,25,0)"}},{lineTheme:{upColor:"rgba(250,191,64,1)",downColor:"rgba(250,191,64,1)",noneColor:"rgba(250,191,64,1)"},areaTheme:{lineColor:"rgba(250,191,64,1)",startColor:"rgba(250,191,64,0.8)",stopColor:"rgba(250,191,64,0)"}},{lineTheme:{upColor:"rgba(169,38,251,1)",downColor:"rgba(169,38,251,1)",noneColor:"rgba(169,38,251,1)"},areaTheme:{lineColor:"rgba(169,38,251,1)",startColor:"rgba(169,38,251,0.8)",stopColor:"rgba(169,38,251,0)"}},{lineTheme:{upColor:"rgba(77,211,240,1)",downColor:"rgba(77,211,240,1)",noneColor:"rgba(77,211,240,1)"},areaTheme:{lineColor:"rgba(77,211,240,1)",startColor:"rgba(77,211,240,0.8)",stopColor:"rgba(77,211,240,0)"}},{lineTheme:{upColor:"rgba(59,203,91,1)",downColor:"rgba(59,203,91,1)",noneColor:"rgba(59,203,91,1)"},areaTheme:{lineColor:"rgba(59,203,91,1)",startColor:"rgba(59,203,91,0.8)",stopColor:"rgba(59,203,91,0)"}}],yAxis:{backgroundColor:"transparent",labelBoxColor:"rgba(20,20,19,1)",labelTextColor:"rgba(128,128,128,1)",labelInvertedTextColor:"rgba(20,20,19,1)",rectLabelTextColor:"rgba(255,255,255,1)",rectLabelInvertedTextColor:"rgba(20,20,19,1)",zeroPercentLine:"rgba(55,55,54,1)"},labels:{lastPrice:{textNegative:"rgba(255,255,255,1)",textPositive:"rgba(255,255,255,1)",textSelected:"rgba(0,0,0,1)",boxNegative:"rgba(217,44,64,1)",boxPositive:"rgba(77,153,83,1)",boxSelected:"rgba(255,255,255,1)"},countdownToBarClose:{textNegative:"rgba(255,255,255,1)",textPositive:"rgba(255,255,255,1)",textSelected:"rgba(255,255,255,1)",boxNegative:"rgba(217,44,64,1)",boxPositive:"rgba(77,153,83,1)",boxSelected:"rgba(255,255,255,1)"},highLow:{high:{boxColor:"rgba(107,96,86,1)",textColor:"rgba(255,255,255,1)",descriptionText:"High"},low:{boxColor:"rgba(107,96,86,1)",textColor:"rgba(255,255,255,1)",descriptionText:"Low"}},bidAsk:{bid:{boxColor:"rgba(77,153,83,1)",textColor:"rgba(255,255,255,1)",descriptionText:"Bid"},ask:{boxColor:"rgba(217,44,64,1)",textColor:"rgba(255,255,255,1)",descriptionText:"Ask"}},prePostMarket:{post:{boxColor:"rgba(38,251,149,1)",textColor:"rgba(20,20,19,1)",descriptionText:"Post"},pre:{boxColor:"rgba(255,170,0,1)",textColor:"rgba(20,20,19,1)",descriptionText:"Pre"}},prevDayClose:{boxColor:"rgba(107,96,86,1)",textColor:"rgba(255,255,255,1)"}},xAxis:{backgroundColor:"transparent",labelTextColor:"rgba(128,128,128,1)"},navigationMap:{backgroundColor:"transparent",buttonColor:"rgba(255,255,255,0.1)",buttonArrowColor:"rgba(212,212,211,1)",knotColor:"rgba(255,255,255,0.1)",knotLineColor:"rgba(212,212,211,1)",sliderColor:"rgba(255,255,255,0.08)",knotBorderColor:"#0b0d1a",timeLabelsTextColor:"rgba(128,128,128,1)",mapColor:"rgba(255,255,255,0.1)",mapFillColor:"rgba(255,255,255,0.1)",mapGradientTopColor:"rgba(255,255,255,0.1)",mapGradientBottomColor:"rgba(255,255,255,0.1)"}},animation:{moveDuration:1e3,candleDuration:200,paneResizer:{bgMode:!0,enabled:!0,duration:40},yAxis:{background:{enabled:!1,duration:40}}},drawingOrder:["OVER_SERIES_CLEAR","MAIN_CLEAR","SERIES_CLEAR","GRID","X_AXIS","Y_AXIS","UNDERLAY_VOLUMES_AREA","DYNAMIC_OBJECTS","WATERMARK","N_MAP_CHART","EVENTS"]});function Vo(n,t=en()){return Kt(n,t,ir),n}function Rg(n,t=en()){const e=Wo({},n);return merge(e,t,DEFAULT_MERGE_OPTIONS),e}function Fg(n,t){Object.keys(n).forEach(e=>delete n[e]),Object.keys(t).forEach(e=>n[e]=t[e])}function cr(n){return typeof n=="object"&&n!==null}function hr(n,t){return[...n].map(s=>Un(s,t))}const Go=n=>Array.isArray(n);function Un(n,t){if(!cr(n))return n;if(Go(n))return hr(n,t);{const e=dr({},n,t);return Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}}function dr(n,t,e){if(!cr(n))return e.overrideExisting?t:n;if(Array.isArray(n)&&Array.isArray(t)){const r=e.overrideExisting?t:n;return hr(r,e)}const s=Object.create(Object.getPrototypeOf(n));return Object.keys(n).forEach(r=>s[r]=Un(n[r],e)),Object.keys(t).forEach(r=>{r in n?s[r]=dr(n[r],t[r],e):e.addIfMissing&&(s[r]=Un(t[r],e))}),s}const ye=n=>`${n.fontSize}px ${n.fontFamily}`;class $o{constructor(t,e){this.config=t,this.mainCanvasModel=e,this.extentsOrder=new Map,this.yAxisWidthContributors=[]}registerYAxisWidthContributor(t){this.yAxisWidthContributors.push(t)}removeYAxisWidthContributor(t){this.yAxisWidthContributors=this.yAxisWidthContributors.filter(e=>e!==t)}getTextWidth(t){const e=ye(this.config.components.yAxis);return Nt(t,this.mainCanvasModel.ctx,e)}getYAxisWidths(){this.extentsOrder.clear();const t=[],e=[];return this.yAxisWidthContributors.forEach(s=>{var r,i,a;const o=s.getYAxisState(),l=o.labelBoxMargin.start+o.labelBoxMargin.end,c=this.getTextWidth(s.getLargestLabel())+l,h=s.getYAxisIndex(),g=s.getPaneUUID(),p=(r=this.extentsOrder.get(g))!=null?r:{left:[],right:[]};if(o.align==="left"){const b=p.left.length;t[b]=Math.max((i=t[b])!=null?i:0,c),p.left.push(h)}else{const b=p.right.length;e[b]=Math.max((a=e[b])!=null?a:0,c),p.right.push(h)}this.extentsOrder.set(g,p)}),{left:t,right:e}}}var Zo=Object.defineProperty,Ko=Object.defineProperties,Jo=Object.getOwnPropertyDescriptors,ur=Object.getOwnPropertySymbols,qo=Object.prototype.hasOwnProperty,Qo=Object.prototype.propertyIsEnumerable,fr=(n,t,e)=>t in n?Zo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,se=(n,t)=>{for(var e in t||(t={}))qo.call(t,e)&&fr(n,e,t[e]);if(ur)for(var e of ur(t))Qo.call(t,e)&&fr(n,e,t[e]);return n},gr=(n,t)=>Ko(n,Jo(t));const ct="CHART",Wn=class{};let Y=Wn;Y.CANVAS="CANVAS",Y.N_MAP="N_MAP",Y.X_AXIS="X_AXIS",Y.N_MAP_KNOT_L="N_MAP_KNOT_L",Y.N_MAP_KNOT_R="N_MAP_KNOT_R",Y.N_MAP_BTN_L="N_MAP_BTN_L",Y.N_MAP_BTN_R="N_MAP_BTN_R",Y.N_MAP_SLIDER_WINDOW="N_MAP_SLIDER_WINDOW",Y.N_MAP_CHART="N_MAP_CHART",Y.N_MAP_LABEL_R="N_MAP_LABEL_R",Y.N_MAP_LABEL_L="N_MAP_LABEL_L",Y.PANE_UUID=n=>"PANE_"+n,Y.PANE_UUID_Y_AXIS=(n,t=0)=>"PANE_"+n+"_Y_AXIS_"+t,Y.PANE_UUID_RESIZER=n=>"PANE_"+n+"_RESIZER",Y.ALL_PANES="ALL_PANES",Y.CHART_WITH_Y_AXIS="CHART_WITH_Y_AXIS",Y.EVENTS="EVENTS",Y.CHART=Wn.PANE_UUID(ct),Y.Y_AXIS=Wn.PANE_UUID_Y_AXIS(ct);const vr={x:0,y:0,pageX:0,pageY:0,width:0,height:0},tl=20,mr=35,Xn=15,pr=1.5,zn=kn()?8*pr:8,el=1e-6;class Vn{constructor(t,e,s,r,i){this.config=t,this.eventBus=e,this.canvasModel=s,this.formatterFactory=r,this.bounds={},this.canvasOnPageLocation={x:0,y:0,pageX:0,pageY:0,width:0,height:0},this.panesOrder=[],this.panesOrderChangedSubject=new V,this.xAxisHeight=void 0,this.yAxisWidths={right:[0],left:[0]},this.leftRatio=0,this.rightRatio=0,this.boundsChangedSubject=new V,this.barResizerChangedSubject=new V,this._graphsHeightRatio={chart:1},this.graphsHeightRatioChangedSubject=new V,this.boundsChangedSubscriptions={},i.canvasResized.subscribe(a=>{let o=a;o||(o=this.canvasModel.canvas.getBoundingClientRect()),this.updateCanvasOnPageLocation(o),this.recalculateBounds()}),this.yAxisBoundsContainer=new $o(this.config,this.canvasModel)}get graphsHeightRatio(){return this._graphsHeightRatio}updateYAxisWidths(){const t=this.yAxisBoundsContainer.getYAxisWidths();this.setYAxisWidths(t)}addPaneBounds(t,e){if(this.panesOrder.indexOf(t)===-1){if(this.panesOrder.push(t),e!==void 0){const s=this.panesOrder.indexOf(t);Yn(this.panesOrder,s,e)}this.recalculatePanesHeightRatios(),this.panesOrderChangedSubject.next(this.panesOrder)}}overrideChartHeightRatios(t){const e=se(se({},this.graphsHeightRatio),t),s=Object.values(e).reduce((r,i)=>r+i,0);Math.abs(s-1)<el?(this._graphsHeightRatio=e,this.recalculateBounds()):console.error(`Result ratio should be equal 1, but equal ${s}`)}movePaneUp(t){const e=this.panesOrder.indexOf(t);e!==-1&&(Yn(this.panesOrder,e,e-1),this.recalculateBounds(),this.eventBus.fireDraw(),this.panesOrderChangedSubject.next(this.panesOrder))}movePaneDown(t){const e=this.panesOrder.indexOf(t);e!==-1&&(Yn(this.panesOrder,e,e+1),this.recalculateBounds(),this.eventBus.fireDraw(),this.panesOrderChangedSubject.next(this.panesOrder))}reorderPanes(t){this.panesOrder=Ks(this.panesOrder,t),this.recalculateBounds(),this.panesOrderChangedSubject.next(this.panesOrder)}removedPaneBounds(t){Lo(this.panesOrder,t),delete this.graphsHeightRatio[t],delete this.bounds[Y.PANE_UUID(t)],this.yAxisWidths.left.concat(this.yAxisWidths.right).forEach((e,s)=>delete this.bounds[Y.PANE_UUID_Y_AXIS(t,s)]),delete this.bounds[Y.PANE_UUID_RESIZER(t)],this.recalculatePanesHeightRatios(),this.panesOrderChangedSubject.next(this.panesOrder)}recalculateBounds(){const t=this.canvasOnPageLocation.width,e=this.canvasOnPageLocation.height,s=this.config.components.paneResizer.height,r=this.getBounds(Y.CANVAS);r.x=0,r.y=0,r.width=t,r.height=e;const i=this.yAxisWidths,a=this.getNavMapBounds(r),o=this.getXAxisBounds(a,r),l=e-o.height-a.height,c=i.left.reduce((J,K)=>J+K,0),h=i.right.reduce((J,K)=>J+K,0),g=0,p=r.width-h,b=g+c,E=0,B=r.width-c-h;let N=E;this.panesOrder.forEach((J,K)=>{var U;const q=this.graphsHeightRatio[this.panesOrder[K]],at=this.config.components.paneResizer.visible;at&&(K!==0?Ae(this.bounds,Y.PANE_UUID_RESIZER(J),0,N,r.width,s,this.canvasOnPageLocation):Ae(this.bounds,Y.PANE_UUID_RESIZER(J),0,0,0,0,this.canvasOnPageLocation));const ot=Ae(this.bounds,Y.PANE_UUID(J),b,at?N+s:N,B,at?l*q-this.config.components.paneResizer.height:l*q,this.canvasOnPageLocation);if(this.config.components.yAxis.visible){const nt=this.yAxisBoundsContainer.extentsOrder.get(J);if(nt===void 0)return;const rt=at?N+s:N,dt=at?l*q-s:l*q;let ht=b-((U=i.left[0])!=null?U:0),St=p;nt.left.forEach((ut,vt)=>{var pt;Ae(this.bounds,Y.PANE_UUID_Y_AXIS(J,ut),ht,rt,i.left[vt],dt,this.canvasOnPageLocation),ht-=(pt=i.left[vt+1])!=null?pt:0}),nt.right.forEach((ut,vt)=>{Ae(this.bounds,Y.PANE_UUID_Y_AXIS(J,ut),St,rt,i.right[vt],dt,this.canvasOnPageLocation),St+=i.right[vt]})}else Ae(this.bounds,Y.PANE_UUID_Y_AXIS(J),0,0,0,0,this.canvasOnPageLocation);N=ot.y+ot.height});const k=this.getBounds(Y.ALL_PANES);k.x=b,k.y=E,k.width=B,k.height=N;const X=this.getBounds(Y.CHART_WITH_Y_AXIS),Z=this.getBounds(Y.PANE_UUID(ct));this.getEventsBounds(Z),this.copyBounds(Z,X),X.width=r.width,this.recalculateNavigationMapElementBounds(),this.updateAllBoundsPageCoordinates(),this.notifyBoundsSubscribers()}updateCanvasOnPageLocation(t){this.canvasOnPageLocation=gr(se({},this.canvasOnPageLocation),{x:t.x,y:t.y,width:t.width,height:t.height})}updateAllBoundsPageCoordinates(){for(const t of Object.keys(this.bounds)){const e=this.bounds[t];e.pageX=e.x+this.canvasOnPageLocation.x,e.pageY=e.y+this.canvasOnPageLocation.y}}getEventsBounds(t){const e=this.getBounds(Y.EVENTS);return this.config.components.events.visible?(e.x=0,e.y=t.y+t.height-this.config.components.events.height,e.width=t.width,e.height=this.config.components.events.height):this.applyDefaultBounds(e),e}getNavMapBounds(t){const e=this.getBounds(Y.N_MAP);return this.config.components.navigationMap.visible?(e.x=0,e.y=t.height-mr,e.width=t.width,e.height=mr):this.applyDefaultBounds(e),e}getXAxisBounds(t,e){const s=this.getBounds(Y.X_AXIS);return this.config.components.xAxis.visible?(s.x=0,s.y=e.height-this.getXAxisHeight()-t.height,s.width=e.width,s.height=this.getXAxisHeight()):this.applyDefaultBounds(s),s}getXAxisHeight(){var t,e;if(!this.xAxisHeight){const s=this.config.components.xAxis.fontSize+"px "+this.config.components.xAxis.fontFamily,r=ne(s,this.canvasModel.ctx);this.xAxisHeight=r+((t=this.config.components.xAxis.padding.top)!=null?t:0)+((e=this.config.components.xAxis.padding.bottom)!=null?e:0)}return this.xAxisHeight}setYAxisWidths(t){(!Js(this.yAxisWidths.left,t.left)||!Js(this.yAxisWidths.right,t.right))&&(this.yAxisWidths=t,this.recalculateBounds())}setXAxisHeight(t){t!==this.xAxisHeight&&(this.xAxisHeight=t,this.recalculateBounds())}setPanesOrder(t){this.panesOrder=t,this.recalculateBounds()}recalculatePanesHeightRatios(){this.calculateGraphsHeightRatios(),this.recalculateBounds()}calculateGraphsHeightRatios(){let t=this.graphsHeightRatio[ct];const e=[];e.push(...this.panesOrder.filter(g=>g!==ct)),this.panesOrder.forEach(g=>{this.graphsHeightRatio[g]===0&&delete this.graphsHeightRatio[g]});const s=e.map(g=>this.graphsHeightRatio[g]===void 0?void 0:this.graphsHeightRatio[g]),r=s.filter(g=>g!==void 0).length,i=s.filter(g=>g===void 0).length;let a=0,o=0,l=1,c=0;i>0&&([l,c]=sl(e.length),t*=l),r===0&&(t=1-c*i),o=1-t-c*i,s.forEach(g=>{g&&(o-=g*l)}),a=o/(e.length+1);const h=s.map(g=>g?g*l+a:c+a);t+=a,this._graphsHeightRatio={},this.graphsHeightRatio[ct]=t,h.forEach((g,p)=>{const b=e[p];this.graphsHeightRatio[b]=g})}recalculateNavigationMapElementBounds(){var t,e,s,r;if(this.config.components.navigationMap.visible){const i=this.getBounds(Y.N_MAP),{height:a,width:o}=this.config.components.navigationMap.knots,l=a!=null?a:0,c=kn()?o*pr:o!=null?o:0,h=l?i.y+(i.height-l)/2:i.y,g=(e=(t=this.config.components.navigationMap)==null?void 0:t.timeLabels)==null?void 0:e.visible,p=q=>Ho(this.canvasModel.ctx,q,this.formatterFactory,this.config)[0],b=Lt((r=(s=this.mainCandleSeries)==null?void 0:s.getSeriesInViewport())!=null?r:[]),E=g&&b.length?p(b[0].candle.timestamp):0,B=g&&b.length?p(b[b.length-1].candle.timestamp):0,N=Math.max(E,B);if(g){const q=this.getBounds(Y.N_MAP_LABEL_L);q.x=i.x,q.y=i.y,q.width=N,q.height=i.height;const at=this.getBounds(Y.N_MAP_LABEL_R);at.x=i.x+i.width-N,at.y=i.y,at.width=N,at.height=i.height}const k=this.getBounds(Y.N_MAP_BTN_L);k.x=i.x+N,k.y=i.y,k.width=Xn,k.height=i.height;const X=this.getBounds(Y.N_MAP_BTN_R);X.x=i.x+i.width-Xn-N,X.y=i.y,X.width=Xn,X.height=i.height;const Z=this.getBounds(Y.N_MAP_KNOT_L);Z.x=(X.x-k.x-k.width)*this.leftRatio+k.x+k.width,Z.y=h,Z.width=c!=null?c:zn,Z.height=l!=null?l:i.height;const J=this.getBounds(Y.N_MAP_KNOT_R);J.x=(X.x-k.x-k.width)*this.rightRatio+k.x+k.width-zn,J.y=h,J.width=c!=null?c:zn,J.height=l!=null?l:i.height;const K=this.getBounds(Y.N_MAP_SLIDER_WINDOW);K.x=Z.x+Z.width,K.y=i.y,K.width=J.x-K.x,K.height=i.height;const U=this.getBounds(Y.N_MAP_CHART);U.x=k.x+k.width,U.y=i.y,U.width=X.x-U.x,U.height=i.height}}isVolumesInSeparatePane(){return this.config.components.volumes.visible&&this.config.components.volumes.showSeparately}getBounds(t){return this.bounds[t]===void 0&&(this.bounds[t]=this.copyOf(vr)),this.bounds[t]}getCanvasOnPageLocation(){return this.canvasOnPageLocation}getBoundsPanes(){return this.panesOrder.reduce((t,e)=>gr(se({},t),{[e]:this.bounds[Y.PANE_UUID(e)]}),{})}getBoundsHitTest(t,e=nn){const{extensionX:s,extensionY:r,wholePage:i}=se(se({},nn),e);return i?(a,o)=>{const l=this.getBounds(t);return a>l.pageX-s&&a<l.pageX+l.width+s&&o>l.pageY-r&&o<l.pageY+l.height+r}:(a,o)=>{const l=this.getBounds(t);return a>l.x-s&&a<l.x+l.width+s&&o>l.y-r&&o<l.y+l.height+r}}static hitTestOf(t,e=nn){const{extensionX:s,extensionY:r,wholePage:i}=se(se({},nn),e);return i?(a,o)=>a>t.pageX-s&&a<t.pageX+t.width+s&&o>t.pageY-r&&o<t.pageY+t.height+r:(a,o)=>a>t.x-s&&a<t.x+t.width+s&&o>t.y-r&&o<t.y+t.height+r}isChartBoundsAvailable(){const t=this.getBounds(Y.CANVAS);return t.width>0&&t.height>0}resizePaneVertically(t,e){const s=this.panesOrder.indexOf(t),r=this.getBounds(Y.PANE_UUID_RESIZER(t));this.doResizePaneVertically(s,r.y-e),this.barResizerChangedSubject.next()}doResizePaneVertically(t,e){const s=t-1,r=this.getBounds(Y.ALL_PANES).height,i=this.config.components.paneResizer.height+tl,a=r*this.graphsHeightRatio[this.panesOrder[t]],o=r*this.graphsHeightRatio[this.panesOrder[s]],l=a+e>i,c=o-e>i;if(l&&c){const h=e/r;this.graphsHeightRatio[this.panesOrder[t]]+=h,this.graphsHeightRatio[this.panesOrder[s]]-=h,this.recalculateBounds()}}notifyBoundsSubscribers(){Object.keys(this.boundsChangedSubscriptions).forEach(t=>{this.boundsChangedSubscriptions[t].next(this.getBounds(t))}),this.boundsChangedSubject.next()}observeBoundsChanged(t){let e=this.boundsChangedSubscriptions[t];return e||(e=new $t(this.getBounds(t)),this.boundsChangedSubscriptions[t]=e),e.pipe(yt(s=>this.copyOf(s)),Zt((s,r)=>this.sameBounds(s,r)))}observeAnyBoundsChanged(){return this.boundsChangedSubject.asObservable()}copyOf(t){return se({},t)}copyBounds(t,e){e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height}sameBounds(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}applyDefaultBounds(t){this.copyBounds(vr,t)}setMainCandleSeries(t){this.mainCandleSeries=t}}const nl={0:1,1:.8,2:.6,3:.5,4:.4,5:.2},sl=n=>{var t;const e=(t=nl[n])!=null?t:.4,s=(1-e)/n;return[e,s]},Yg=(n,t)=>n.x>t.x&&n.x<t.x+t.width&&n.y>t.y&&n.y<t.y+t.height,rl=(n,t)=>n>t.y&&n<t.y+t.height,Ae=(n,t,e,s,r,i,a)=>{const o=n[t];if(o)return o.x=e,o.y=s,o.pageX=e+a.x,o.pageY=s+a.y,o.width=r,o.height=i,o;const l={x:e,y:s,pageX:e+a.x,pageY:s+a.y,width:r,height:i};return n[t]=l,l},br=(n,t)=>Math.min(Math.max(n,t.y),t.y+t.height),nn={extensionX:0,extensionY:0,wholePage:!1},Cr=(n,t)=>n.width===t.width&&n.height===t.height;var il=function(n){O(t,n);function t(e,s){return n.call(this)||this}return t.prototype.schedule=function(e,s){return s===void 0&&(s=0),this},t}(Ct),sn={setInterval:function(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];var r=sn.delegate;return r!=null&&r.setInterval?r.setInterval.apply(r,x([n,t],C(e))):setInterval.apply(void 0,x([n,t],C(e)))},clearInterval:function(n){var t=sn.delegate;return((t==null?void 0:t.clearInterval)||clearInterval)(n)},delegate:void 0},al=function(n){O(t,n);function t(e,s){var r=n.call(this,e,s)||this;return r.scheduler=e,r.work=s,r.pending=!1,r}return t.prototype.schedule=function(e,s){var r;if(s===void 0&&(s=0),this.closed)return this;this.state=e;var i=this.id,a=this.scheduler;return i!=null&&(this.id=this.recycleAsyncId(a,i,s)),this.pending=!0,this.delay=s,this.id=(r=this.id)!==null&&r!==void 0?r:this.requestAsyncId(a,this.id,s),this},t.prototype.requestAsyncId=function(e,s,r){return r===void 0&&(r=0),sn.setInterval(e.flush.bind(e,this),r)},t.prototype.recycleAsyncId=function(e,s,r){if(r===void 0&&(r=0),r!=null&&this.delay===r&&this.pending===!1)return s;s!=null&&sn.clearInterval(s)},t.prototype.execute=function(e,s){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var r=this._execute(e,s);if(r)return r;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,s){var r=!1,i;try{this.work(e)}catch(a){r=!0,i=a||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),i},t.prototype.unsubscribe=function(){if(!this.closed){var e=this,s=e.id,r=e.scheduler,i=r.actions;this.work=this.state=this.scheduler=null,this.pending=!1,At(i,this),s!=null&&(this.id=this.recycleAsyncId(r,s,null)),this.delay=null,n.prototype.unsubscribe.call(this)}},t}(il),Gn={now:function(){return(Gn.delegate||Date).now()},delegate:void 0},yr=function(){function n(t,e){e===void 0&&(e=n.now),this.schedulerActionCtor=t,this.now=e}return n.prototype.schedule=function(t,e,s){return e===void 0&&(e=0),new this.schedulerActionCtor(this,t).schedule(s,e)},n.now=Gn.now,n}(),ol=function(n){O(t,n);function t(e,s){s===void 0&&(s=yr.now);var r=n.call(this,e,s)||this;return r.actions=[],r._active=!1,r}return t.prototype.flush=function(e){var s=this.actions;if(this._active){s.push(e);return}var r;this._active=!0;do if(r=e.execute(e.state,e.delay))break;while(e=s.shift());if(this._active=!1,r){for(;e=s.shift();)e.unsubscribe();throw r}},t}(yr),wr=new ol(al),ll=wr;function cl(n,t){return y(function(e,s){var r=t!=null?t:{},i=r.leading,a=i===void 0?!0:i,o=r.trailing,l=o===void 0?!1:o,c=!1,h=null,g=null,p=!1,b=function(){g==null||g.unsubscribe(),g=null,l&&(N(),p&&s.complete())},E=function(){g=null,p&&s.complete()},B=function(k){return g=te(n(k)).subscribe(Xt(s,b,E))},N=function(){if(c){c=!1;var k=h;h=null,s.next(k),!p&&B(k)}};e.subscribe(Xt(s,function(k){c=!0,h=k,!(g&&!g.closed)&&(a?N():B(k))},function(){p=!0,!(l&&c&&g&&!g.closed)&&s.complete()}))})}function hl(n){return n instanceof Date&&!isNaN(n)}function dl(n,t,e){n===void 0&&(n=0),e===void 0&&(e=ll);var s=-1;return t!=null&&(ks(t)?e=t:s=t),new Pt(function(r){var i=hl(n)?+n-e.now():n;i<0&&(i=0);var a=0;return e.schedule(function(){r.closed||(r.next(a++),0<=s?this.schedule(void 0,s):r.complete())},i)})}function je(n,t,e){t===void 0&&(t=wr);var s=dl(n,t);return cl(function(){return s},e)}class tt{constructor(){this.subscriptions=[],this._state="initial",this.entities=[]}doActivate(){}doDeactivate(){this.subscriptions.forEach(t=>t()),this.subscriptions=[]}enable(){this._state!=="active"&&(this._state="deactivated",this.activate())}disable(){this._state!=="disabled"&&(this.deactivate(),this._state="disabled")}activate(){this._state!=="disabled"&&(this._state!=="active"&&(this.doActivate(),this._state="active"),this.entities.forEach(t=>t.activate()))}deactivate(){this._state!=="disabled"&&(this._state!=="deactivated"&&(this.doDeactivate(),this._state="deactivated"),this.entities.forEach(t=>t.deactivate()))}getState(){return this._state}addSubscription(t){this.subscriptions.push(t)}addRxSubscription(t){t&&this.subscriptions.push(t.unsubscribe.bind(t))}addChildEntity(t){this.entities.push(t),this._state==="active"&&t.activate()}removeChildEntity(t){this.entities=this.entities.filter(e=>e!==t)}}class ul extends tt{constructor(t,e,s,r){super(),this.element=t,this.canvasInputListener=e,this.canvasBoundsContainer=s,this.hitTestCanvasModel=r,this.normalLayer=new Map,this.extensionLayer=new Map,this.cursorChangedSubject=new V}doActivate(){super.doActivate(),this.canvasInputListener.observeMouseMoveNoDrag().pipe(je(100,void 0,{trailing:!0})).subscribe(t=>{const e=this.hitTestCanvasModel.resolveCursor(t);if(e!==void 0){this.updateCursor(e);return}t&&(this.normalLayer.forEach(s=>{s.hitTest(t.x,t.y)&&this.updateCursor(s.cursor)}),this.extensionLayer.forEach(s=>{s.hitTest(t.x,t.y)&&this.updateCursor(s.cursor)}))})}setCursorForBounds(t,e,s,r=0){const i=Vn.hitTestOf(e,{extensionY:r});r?this.extensionLayer.set(t,{cursor:s,hitTest:i}):this.normalLayer.set(t,{cursor:s,hitTest:i})}setCursorForCanvasEl(t,e,s){this.observeCursorType(t,e,s)}removeCursorForCanvasEl(t){this.normalLayer.delete(t),this.extensionLayer.delete(t)}observeCursorChanged(){return this.cursorChangedSubject.pipe(Zt())}observeCursorType(t,e,s){const r=s?this.canvasBoundsContainer.getBoundsHitTest(t,{extensionY:s}):this.canvasBoundsContainer.getBoundsHitTest(t);s?this.extensionLayer.set(t,{cursor:e,hitTest:r}):this.normalLayer.set(t,{cursor:e,hitTest:r})}updateCursor(t){this.element.style.cursor!==t&&(this.element.style.cursor=t,this.cursorChangedSubject.next(t))}}const fl=n=>{const t=n.canvasArea!==null,e=n.snapshotCanvas!==null,s=n.backgroundCanvas!==null,r=n.mainCanvas!==null,i=n.yAxisLabelsCanvas!==null,a=n.crossToolCanvas!==null,o=n.hitTestCanvas!==null,l=n.chartResizer!==null,c=n.chartContainer!==null,h=n.dynamicObjectsCanvas!==null;return t&&e&&s&&r&&i&&a&&o&&l&&c&&h},gl=n=>`<div data-element="chartResizer" style="position: relative; min-height: 20px; height: 100%; width: 100%; touch-action: manipulation; z-index: 0;">
10
10
  <div data-element="chartContainer" style="position: absolute; height: 100%; width: 100%;" class="chart chartArea--graph">
11
11
  <div data-element="canvasArea" style="position: relative; height: 100%; width: 100%; touch-action: manipulation;">
12
12
  <canvas data-element="snapshotCanvas" style="z-index: 0"></canvas>
@@ -20,4 +20,4 @@ ${n?` <p style="position: absolute; visibility: hidden;">If you have any sugge
20
20
  `:""} </div>
21
21
  </div>
22
22
  </div>
23
- `;function hl(n){const t=document.createElement("template");return t.innerHTML=cl(n.devexpertsPromoLink),t}function dl(n){const t={},e=Array.from(n.querySelectorAll("[data-element]"));if(e.length!==0&&e.forEach(s=>{var r;t[(r=s.getAttribute("data-element"))!=null?r:""]=s}),ll(t))return t;throw new Error("Some chart elements are missing")}function ul(n){if(n.length>1){const t=n.reduce((r,i,a)=>{if(a!==n.length-1){const o=n[a+1].timestamp-i.timestamp;r[o]?r[o]++:r[o]=1}return r},{});let e=0,s;for(const r of Object.keys(t)){const i=parseInt(r,10),a=t[i];a>e&&i>0&&(e=a,s=i)}if(s)return s}}const ke=(n,t,e,s=1e3)=>{var r,i,a,o;const l=(i=(r=Ye(e))==null?void 0:r.timestamp)!=null?i:0,c=(o=(a=Ft(e))==null?void 0:a.timestamp)!=null?o:0;return n>c?t?{index:e.length-1+Math.ceil((n-c)/s),exact:!0}:{index:e.length-1,exact:!0}:n<l?t?{index:gt((n-l)/s),exact:!0}:{index:-1,exact:!0}:de(e,n,h=>h.timestamp)},Vn=1;function nn(n,t){return t===n?"none":t>n?"up":"down"}function fl(n,t){return t>n?"up":"down"}function gl(n,t,e=!1){const{expansion:s,impVolatility:r,vwap:i,volume:a,timestamp:o}=n;let l=n.hi,c=n.lo,h=n.open;const v=n.close;e&&(l=v,c=v,h=v);let p=n.idx;return t!==void 0&&(p=t),{hi:l,lo:c,open:h,close:v,timestamp:o,volume:a,expansion:s,idx:p,impVolatility:r,vwap:i}}const Sr={color:"#FF00FF",lineWidth:1,hoveredLineWidth:2},xr={paintConfig:[Sr],type:"LINEAR",highLowActive:!0,visible:!0,labelLastValue:"viewport",labelMode:"label",labelAppearanceType:"badge"};var vl=Object.defineProperty,Pr=Object.getOwnPropertySymbols,ml=Object.prototype.hasOwnProperty,pl=Object.prototype.propertyIsEnumerable,Tr=(n,t,e)=>t in n?vl(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,bl=(n,t)=>{for(var e in t||(t={}))ml.call(t,e)&&Tr(n,e,t[e]);if(Pr)for(var e of Pr(t))pl.call(t,e)&&Tr(n,e,t[e]);return n};class Cl{constructor(t,e,s,r){this.series=t,this.config=e,this.yAxisBoundsProvider=s,this.axisState=r}getUnorderedLabels(){if(this.config.visible){const e=this.config.labelLastValue==="series"?this.series.getLastDataSeriesPoint:this.series.getLastVisualSeriesPoint,s=this.yAxisBoundsProvider(),r=this.config.labelMode,i=this.config.labelAppearanceType,a=e();if(a!==void 0){const o=this.series.view.toY(a.close);if(isFinite(o)){const l=this.series.valueFormatter(a.close),c=this.getLabelDrawConfig();return[{labels:[bl({y:o,description:this.series.name,mode:r,labelType:i,labelText:l},c)],axisState:this.axisState,bounds:s}]}}}return[]}getLabelDrawConfig(){var t;const e=this.series.config,r=((t=e.paintConfig[0])!=null?t:Sr).color;return{textColor:He(r,"white","black"),bgColor:r,paddingBottom:e.labelPaddingBottom,paddingEnd:e.labelPaddingEnd,paddingTop:e.labelPaddingTop}}}let Zt=window.devicePixelRatio,sn=window.matchMedia(`screen and (resolution: ${window.devicePixelRatio}dppx)`);const Gn=()=>{sn.removeEventListener("change",Gn),Zt=window.devicePixelRatio,sn=window.matchMedia(`screen and (resolution: ${window.devicePixelRatio}dppx)`),sn.addEventListener("change",Gn)};sn.addEventListener("change",Gn);const yl=()=>Zt,wl=n=>pe(Zt*n)/Zt,st=n=>gt(Zt*n)/Zt,Mr=n=>oo(Zt*n)/Zt,je=n=>JSON.parse(JSON.stringify(n));function $n(n){return Object.entries(n)}const _r=(n,t)=>{for(const[e,s]of Array.from(n.entries()))if(s===t)return e};function Ar(n){return Object.keys(n)}function Dr(n,t){if(Object.is(n,t))return!0;if(typeof n!="object"||n===null||typeof t!="object"||t===null)return!1;const e=Object.keys(n),s=Object.keys(t);if(e.length!==s.length)return!1;for(let r=0,i=e.length;r<i;r++)if(!hasOwnProperty.call(t,e[r])||!Dr(n[e[r]],t[e[r]]))return!1;return!0}function Er(n){n===void 0&&(n={});var t=n.connector,e=t===void 0?function(){return new V}:t,s=n.resetOnError,r=s===void 0?!0:s,i=n.resetOnComplete,a=i===void 0?!0:i,o=n.resetOnRefCountZero,l=o===void 0?!0:o;return function(c){var h,v,p,C=0,O=!1,B=!1,H=function(){v==null||v.unsubscribe(),v=void 0},k=function(){H(),h=p=void 0,O=B=!1},z=function(){var Z=h;k(),Z==null||Z.unsubscribe()};return y(function(Z,J){C++,!B&&!O&&H();var K=p=p!=null?p:e();J.add(function(){C--,C===0&&!B&&!O&&(v=Zn(z,l))}),K.subscribe(J),!h&&C>0&&(h=new me({next:function(U){return K.next(U)},error:function(U){B=!0,H(),v=Zn(k,r,U),K.error(U)},complete:function(){O=!0,H(),v=Zn(k,a),K.complete()}}),Qt(Z).subscribe(h))})(c)}}function Zn(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];if(t===!0){n();return}if(t!==!1){var r=new me({next:function(){r.unsubscribe(),n()}});return Qt(t.apply(void 0,x([],b(e)))).subscribe(r)}}const rn=(n,t)=>n/t,Tt=(n,t)=>n/t,re=(n,t)=>n*t,Or=(n,t)=>(n-t)*100/t,Lr=(n,t)=>n*t/100+t,Ir=n=>Math.log2(n),Kn=n=>Math.pow(2,n);class Sl extends tt{constructor(){super(...arguments),this._xStart=0,this._xEnd=0,this._yStart=0,this._yEnd=0,this._zoomX=1,this._zoomY=1,this._inverseY=!1,this.changed=new V,this.xChanged=this.changed.pipe(yt(()=>({start:this.xStart,end:this.xEnd})),Gt((t,e)=>t.start===e.start&&t.end===e.end),Er()),this.yChanged=this.changed.pipe(yt(()=>({start:this.yStart,end:this.yEnd})),Gt((t,e)=>t.start===e.start&&t.end===e.end),Er())}toX(t){return this.getBounds().x+Tt(t-this.xStart,this.zoomX)}xPixels(t){return Tt(t,this.zoomX)}toY(t){return this.inverseY?this.getBounds().y+Tt(t-this.yStart,this.zoomY):this.getBounds().y+this.getBounds().height-Tt(t-this.yStart,this.zoomY)}yPixels(t){return Tt(t,this.zoomY)}fromX(t){const e=t-this.getBounds().x;return re(e+Tt(this.xStart,this.zoomX),this.zoomX)}fromY(t){const e=t-this.getBounds().y;return this.inverseY?re(e+Tt(this.yStart,this.zoomY),this.zoomY):re(this.getBounds().height-e+Tt(this.yStart,this.zoomY),this.zoomY)}recalculateZoomX(){this.zoomX=this.calculateZoomX(this.xStart,this.xEnd)}recalculateZoomY(){this.zoomY=this.calculateZoomY(this.yStart,this.yEnd)}calculateZoomX(t,e){return rn(e-t,this.getBounds().width)}calculateZoomY(t,e){return rn(e-t,this.getBounds().height)}recalculateZoom(t=!0){this.recalculateZoomX(),this.recalculateZoomY(),t&&this.fireChanged()}setXScale(t,e,s=!0){this.xStart=t,this.xEnd=e,this.recalculateZoomX(),s&&this.fireChanged()}setYScale(t,e,s=!0){this.yStart=t,this.yEnd=e,this.recalculateZoomY(),s&&this.fireChanged()}export(){return{xStart:this.xStart,xEnd:this.xEnd,yStart:this.yStart,yEnd:this.yEnd,zoomX:this.zoomX,zoomY:this.zoomY,inverseY:this.inverseY}}apply(t){this.xStart=t.xStart,this.xEnd=t.xEnd,this.yStart=t.yStart,this.yEnd=t.yEnd,this.zoomX=t.zoomX,this.zoomY=t.zoomY,this.inverseY=t.inverseY,this.fireChanged()}fireChanged(){this.changed.next()}get xStart(){return this._xStart}set xStart(t){this._xStart=t}get xEnd(){return this._xEnd}set xEnd(t){this._xEnd=t}get yStart(){return this._yStart}set yStart(t){this._yStart=t}get yEnd(){return this._yEnd}set yEnd(t){this._yEnd=t}get zoomX(){return this._zoomX}set zoomX(t){this._zoomX=t}get zoomY(){return this._zoomY}set zoomY(t){this._zoomY=t}get inverseY(){return this._inverseY}set inverseY(t){this._inverseY=t}isViewportValid(){return this.xStart!==this.xEnd&&this.yStart!==this.yEnd&&isFinite(this.yStart)&&isFinite(this.yEnd)}}const xl=(n,t)=>!Ar(n).some(e=>n[e]!==t[e]);class Pl{constructor(t,e){this.scale=t,this.dataSeries=e,this.prevAnimationId=""}getBaselineForPercent(t){const e=this.scale.currentAnimation;let s;if(e!=null&&e.animationInProgress){e.id!==this.prevAnimationId&&(this.initialBaseline=void 0,this.targetBaseline=void 0,this.prevAnimationId=e.id);const r=e.easingFn(e.getProgress());this.initialBaseline===void 0&&(this.initialBaseline=t(de(this.dataSeries.visualPoints,e.xStart,i=>i.centerUnit).index)),this.targetBaseline===void 0&&(this.targetBaseline=t(de(this.dataSeries.visualPoints,e.animationConfig.targetXStart,i=>i.centerUnit).index)),s=this.initialBaseline+(this.targetBaseline-this.initialBaseline)*r}else s=t();return s}}class Br{constructor(t,e,s,r){this.dataSeries=t,this.scale=e,this.getAxisType=s,this.getBaseline=r,this.toY=i=>this.scale.toY(this.toAxisUnits(i)),this.toX=i=>this.scale.toX(i),this.xPixels=i=>this.scale.xPixels(i),this.yPixels=i=>this.scale.yPixels(i),this.percentAnimationHandler=new Pl(this.scale,this.dataSeries)}toAxisUnits(t,e=this.getBaseline){switch(this.getAxisType()){case"percent":const s=this.percentAnimationHandler.getBaselineForPercent(e);return Or(t,s);case"logarithmic":return Ir(t);case"regular":return t}}priceFromY(t){const e=this.scale.fromY(t);return this.fromAxisUnits(e)}fromAxisUnits(t){switch(this.getAxisType()){case"percent":return Lr(t,this.getBaseline());case"logarithmic":return Kn(t);case"regular":return t}}}var Tl=Object.defineProperty,Ml=Object.defineProperties,_l=Object.getOwnPropertyDescriptors,Rr=Object.getOwnPropertySymbols,Al=Object.prototype.hasOwnProperty,Dl=Object.prototype.propertyIsEnumerable,Fr=(n,t,e)=>t in n?Tl(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,El=(n,t)=>{for(var e in t||(t={}))Al.call(t,e)&&Fr(n,e,t[e]);if(Rr)for(var e of Rr(t))Dl.call(t,e)&&Fr(n,e,t[e]);return n},Ol=(n,t)=>Ml(n,_l(t));class Ue{constructor(t,e){this.centerUnit=t,this.close=e}y(t){return st(t.toY(this.close))}x(t){return st(t.toX(this.centerUnit))}clone(){return new Ue(this.centerUnit,this.close)}}class Yr extends tt{constructor(t,e,s=je(xr)){var r;super(),this.extentComponent=t,this.id=e,this.name="",this.hovered=!1,this._dataPoints=[],this.pricePrecisions=[2],this.linkedDataSeriesModels=[],this._dataPointsFlat=[],this._visualPoints=[],this._visualPointsFlat=[],this.dataIdxStart=0,this.dataIdxEnd=0,this.getPaintConfig=i=>{var a;return(a=this.config.paintConfig[i])!=null?a:this.config.paintConfig[0]},this.getBaseline=(i=this.dataIdxStart)=>{var a,o;return(o=(a=this.visualPoints[i])==null?void 0:a.close)!=null?o:1},this.getTextForPoint=i=>`${i.close}`,this.getLastVisualSeriesPoint=()=>{const i=this.visualPoints,a=de(i,this.scale.xEnd,o=>o.centerUnit).index;return i[a]},this.getLastDataSeriesPoint=()=>{const i=this.visualPoints;return Ft(i)},this.config=$t(s,xr),this.scale=t.scale,this.view=new Br(this,this.scale,()=>this.extentComponent.yAxis.getAxisType(),this.getBaseline),this.yAxisLabelProvider=new Cl(this,this.config,t.getYAxisBounds,(r=t.yAxis)==null?void 0:r.state),this.highLowProvider=Il(this),t.addDataSeries(this),this.activate()}get dataPoints2D(){return this._dataPoints}get dataPoints(){return this._dataPointsFlat}set dataPoints(t){this._dataPoints=Qs(t),this._dataPointsFlat=this._dataPoints.flat(),this.visualPoints=this._toVisualPoints(this._dataPoints)}get visualPoints(){return this._visualPointsFlat}get visualPoints2D(){return this._visualPoints}set visualPoints(t){this._visualPoints=Qs(t),this._visualPointsFlat=this._visualPoints.flat()}doActivate(){this.addRxSubscription(this.scale.xChanged.subscribe(()=>this.recalculateDataViewportIndexes())),this.addRxSubscription(this.scale.scaleInversedSubject.subscribe(()=>this.recalculateVisualPoints()))}setDataPoints(t){this.dataPoints=t,this.extentComponent.paneComponent.updateView()}_toVisualPoints(t){return t.map(e=>this.toVisualPoints(e))}moveToExtent(t){var e;this.extentComponent.removeDataSeries(this),this.extentComponent=t,this.scale=t.scale,this.view=new Br(this,this.scale,()=>this.extentComponent.yAxis.getAxisType(),this.getBaseline),this.yAxisLabelProvider.yAxisBoundsProvider=t.getYAxisBounds,this.yAxisLabelProvider.axisState=(e=t.yAxis)==null?void 0:e.state,this.deactivate(),this.activate(),t.addDataSeries(this)}toVisualPoints(t){return t.map((e,s)=>({centerUnit:s,close:e.close}))}setType(t){this.config.type=t,this.extentComponent.dynamicObjectsCanvasModel.fireDraw()}recalculateVisualPoints(){this.visualPoints=this._toVisualPoints(this.dataPoints2D)}recalculateDataViewportIndexes(t=this.scale.xStart,e=this.scale.xEnd){const{dataIdxStart:s,dataIdxEnd:r}=this.calculateDataViewportIndexes(t,e);this.dataIdxStart=s,this.dataIdxEnd=r}calculateDataViewportIndexes(t,e){const s=de(this.visualPoints,t,i=>i.centerUnit).index,r=de(this.visualPoints,e,i=>i.centerUnit).index;return{dataIdxStart:s,dataIdxEnd:r}}valueFormatter(t){return Hr(t)}getSeriesInViewport(t,e){let s=this.dataIdxStart,r=this.dataIdxEnd;if(e!==void 0&&t!==void 0){const i=this.calculateDataViewportIndexes(t,e);s=i.dataIdxStart,r=i.dataIdxEnd}return To(this.visualPoints2D,s,r)}}const Ll=n=>{const t={high:Number.MIN_SAFE_INTEGER,low:Number.MAX_SAFE_INTEGER,highIdx:0,lowIdx:0};for(let e=0;e<n.length;e++){const s=n[e];s.close>t.high&&(t.high=s.close,t.highIdx=e),s.close<t.low&&(t.low=s.close,t.lowIdx=e)}return t},Il=n=>({isHighLowActive:()=>n.config.highLowActive,calculateHighLow:t=>{const e=Ll(n.getSeriesInViewport(t==null?void 0:t.xStart,t==null?void 0:t.xEnd).flat());return Ol(El({},e),{high:n.view.toAxisUnits(e.high),low:n.view.toAxisUnits(e.low)})}}),Hr=n=>{const e=i=>Math.ceil(Math.log(Math.abs(i))*Math.LOG10E),r=((i,a=5)=>Math.max(0,a-Math.max(0,e(i))))(n);return wt.makeDecimal(n,r)};class an extends Ue{constructor(t,e,s,r,i,a,o,l,c=!1,h=!1,v=!1){super(t,r),this.startUnit=t-e/2,this.width=e,this.open=s,this.high=i,this.low=a,this.name=o,this.candle=l,this.hasBorder=c,this.isActive=h,this.isHollow=v}bodyHeight(t){return st(Math.abs(t.toY(this.open)-t.toY(this.close)))}candleHeight(t){return st(Math.abs(t.toY(this.high)-t.toY(this.low)))}bodyAsVLine(t){if(this.width<2)return[this.centerUnit,this.yLineStart(t),this.width,this.candleHeight(t)]}bodyRect(t){return[this.startUnit,this.yBodyStart(t),this.width,this.bodyHeight(t)]}getCandle(){return this.candle}yBodyKeyPoints(t){const e=st(t.toY(this.high)),s=st(t.toY(this.low)),r=st(t.toY(this.open)),i=st(t.toY(this.close)),[a,o]=r>i?[i,r]:[r,i],[l,c]=e>s?[s,e]:[e,s];return[l,a,o,c]}yLineEnd(t){return st(Math.max(t.toY(this.high),t.toY(this.low)))}yLineStart(t){return st(Math.min(t.toY(this.high),t.toY(this.low)))}yBodyStart(t){return st(Math.min(t.toY(this.open),t.toY(this.close)))}yBodyEnd(t){return st(Math.max(t.toY(this.open),t.toY(this.close)))}xCenter(t){return this.x(t)}xStart(t){return wl(t.toX(this.startUnit))}}const _e=60,Nr=(n,t,e,s,r=_e)=>{const i=We(n,s,r);i.volume=e;let a;if(t.length===0)a=0;else if(s>=t.length){const o=t[t.length-1],c=(s-(t.length-1))*e;a=o.centerUnit+c}else{const o=t[0],c=-s*e;a=o.centerUnit-c}return new an(a,e,i.open,i.close,i.lo,i.hi,nn(i.open,i.close),i)},Bl=(n,t,e,s,r=_e)=>{const i=Rl(n,s,r);let a;if(t.length===0)a=0;else if(s>=t.length){const o=t[t.length-1],c=(s-(t.length-1))*e;a=o.centerUnit+c}else{const o=t[0],c=-s*e;a=o.centerUnit-c}return new Ue(a,i.close)},We=(n,t,e=_e)=>({hi:NaN,lo:NaN,open:NaN,close:NaN,timestamp:kr(n,t,e),volume:NaN,expansion:!0,idx:t}),Rl=(n,t,e=_e)=>({close:NaN,timestamp:kr(n,t,e)});function kr(n,t,e=_e){var s,r;const i=pe(t);if(n.length===0)return 0;const a=Ft(n);if(i>=n.length&&a)return jr(a,n.length-1,i,e);const o=Ye(n);return i<0&&o?jr(o,0,i,e):(r=(s=n[i])==null?void 0:s.timestamp)!=null?r:0}const jr=(n,t,e,s=_e)=>n.timestamp+(e-(t!=null?t:0))*s;class Fl{constructor(t){this.type=t,this.mainDataPoints=[],this.mainVisualPoints=[],this.dataUpdatedSubject=new V,this.dataSetSubject=new V,this.dataRemovedSubject=new V,this.dataPrependSubject=new V,this.meanDataWidth=1,this.period=1}dataFromTimestamp(t,e=!0,s=this.mainDataPoints){const r=ke(t,e,s,this.period);return this.dataFromIdx(r.index)}recalculatePeriod(){const t=ul(this.mainDataPoints);t&&(this.period=t)}dataFromIdx(t){const e=this.mainVisualPoints[t];return e||(this.type==="candle"?Nr(this.mainDataPoints,this.mainVisualPoints,this.meanDataWidth,t,this.period):Bl(this.mainDataPoints,this.mainVisualPoints,this.meanDataWidth,t,this.period))}}var Yl=Object.defineProperty,Ur=Object.getOwnPropertySymbols,Hl=Object.prototype.hasOwnProperty,Nl=Object.prototype.propertyIsEnumerable,Wr=(n,t,e)=>t in n?Yl(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,kl=(n,t)=>{for(var e in t||(t={}))Hl.call(t,e)&&Wr(n,e,t[e]);if(Ur)for(var e of Ur(t))Nl.call(t,e)&&Wr(n,e,t[e]);return n};class jl{constructor(t,e){this.canvasModel=t,this.config=e,this.prevState={},this.prevWidth=0,this.prevHeight=0}draw(){if(Dr(this.config.colors.chartAreaTheme,this.prevState)&&this.prevHeight===this.canvasModel.height&&this.prevWidth===this.canvasModel.width)return;this.canvasModel.clear();const t=this.canvasModel.ctx;if(this.config.colors.chartAreaTheme.backgroundMode==="gradient"){const e=t.createLinearGradient(0,0,this.canvasModel.width,this.canvasModel.height);e.addColorStop(0,this.config.colors.chartAreaTheme.backgroundGradientTopColor),e.addColorStop(1,this.config.colors.chartAreaTheme.backgroundGradientBottomColor),t.fillStyle=e}else t.fillStyle=this.config.colors.chartAreaTheme.backgroundColor;t.fillRect(0,0,this.canvasModel.width,this.canvasModel.height),this.prevState=kl({},this.config.colors.chartAreaTheme),this.prevWidth=this.canvasModel.width,this.prevHeight=this.canvasModel.height}getCanvasIds(){return[this.canvasModel.canvasId]}}const on=(n,t,e,s,r,i,a)=>{const o=yl(),l=[e*o,s*o,r*o,i*o];let c=n.getImageData(...l);if(a!==void 0){const h=c.data[3]/255;if(h===1)for(let v=3;v<c.data.length;v+=4)c.data[v]=gt(c.data[v]*a);else for(let v=0;v<c.data.length;v++){const p=c.data[v];c.data[v]=v%4===3?gt(p*a):gt(h*p)}c=new ImageData(c.data,c.width,c.height,{colorSpace:c.colorSpace})}t.putImageData(c,l[0],l[1])},zr=(n,{x:t,width:e,activeCandle:s})=>new an(t,e,n.open,n.close,n.hi,n.lo,nn(n.open,n.close),n,!0,Jn(n,s)),Ul=(n,{x:t,width:e,activeCandle:s,prevCandle:r})=>{var i;return new an(t,e,n.open,n.close,n.hi,n.lo,fl((i=r==null?void 0:r.close)!=null?i:n.close,n.close),n,!0,Jn(n,s),n.close>n.open)},Xr=(n,{x:t,width:e,activeCandle:s,prevCandle:r})=>{var i;return new an(t,e,n.open,n.close,n.hi,n.lo,nn((i=r==null?void 0:r.close)!=null?i:n.close,n.close),n,!0,Jn(n,s),n.close>n.open)},Wl=Xr,Jn=(n,t)=>{const e=t&&t.idx===n.idx;return e!=null?e:!1},Vr=()=>Vn,Ce=class{static autoDetectIncrementOfValueRange(n){const t=this.getDigitsInNumber(n);return n===0?.01:Math.pow(10,t-3)}static getDigitsInNumber(n){const t=s=>gt(Math.log10((s^s>>31)-(s>>31)))+1;let e=t(n);return e===1&&n<1&&(e=t(n*1e9)-9),e}static getPriceIncrement(n,t=[]){if(!this.validatePriceIncrementsOrPrecisions(t))return this.DEFAULT_INCREMENT;if(isNaN(n))return Math.round(t[0]);n=Math.abs(n);let e=1;const s=1e-6;for(;e<t.length&&n>t[e]+Math.min(t[e-1],t[e+1])*s;)e+=2;return e>=t.length||n<t[e]-Math.min(t[e-1],t[e+1])*s?t[e-1]:Math.min(t[e-1],t[e+1])}static getPricePrecision(n,t){if(!this.validatePriceIncrementsOrPrecisions(t))return 0;if(isNaN(n))return Math.round(t[0]);n=Math.abs(n);let e=1;for(;e<t.length&&n>t[e];)e+=2;return Math.round(t[e-1])}static roundPriceToIncrement(n,t,e){const s=Ce.getPriceIncrement(e||n,t);return wt.roundToNearest(n,s)}static computePrecisions(n){const t=[...n];for(let e=0;e<n.length;e+=2)t[e]=Ce.calculatePrecision(n[e]);for(let e=1;e<n.length;e+=2)t[e]=n[e]+Math.min(n[e-1],n[e+1])*Ce.RELATIVE_EPS;return t}static calculatePrecision(n){let t=n>1?Math.abs(Math.floor(n)-n):n;for(let e=0;e<Ce.MAXIMUM_PRECISION;e++){const s=Math.floor(t+.5),r=Math.abs(t*Ce.RELATIVE_EPS);if(s>=t-r&&s<=t+r)return e;t*=10}return Ce.MAXIMUM_PRECISION}static validatePriceIncrementsOrPrecisions(n){return!(n.length===0||!Array.isArray(n)||n.findIndex(t=>t!==0)===-1)}};let Kt=Ce;Kt.DEFAULT_INCREMENT=.01,Kt.DEFAULT_PRECISION=2,Kt.RELATIVE_EPS=1e-8,Kt.MAXIMUM_PRECISION=10;const zl=(n,t)=>{var e;const s=(e=Ft(t))!=null?e:1;return Math.pow(10,-s)};var Xl=Object.defineProperty,Vl=Object.defineProperties,Gl=Object.getOwnPropertyDescriptors,Gr=Object.getOwnPropertySymbols,$l=Object.prototype.hasOwnProperty,Zl=Object.prototype.propertyIsEnumerable,$r=(n,t,e)=>t in n?Xl(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Kl=(n,t)=>{for(var e in t||(t={}))$l.call(t,e)&&$r(n,e,t[e]);if(Gr)for(var e of Gr(t))Zl.call(t,e)&&$r(n,e,t[e]);return n},Jl=(n,t)=>Vl(n,Gl(t));const Ql=n=>({isHighLowActive:()=>!0,calculateHighLow:t=>{const e=t?t.xStart:n.scale.xStart,s=t?t.xEnd:n.scale.xEnd,{dataIdxStart:r,dataIdxEnd:i}=n.calculateDataViewportIndexes(e,s),a=n.visualPoints.slice(r,i+1),o=Zr(a),l=()=>{var c,h;return(h=(c=n.visualPoints[r])==null?void 0:c.close)!=null?h:1};return Jl(Kl({},o),{low:n.view.toAxisUnits(o.low,l),high:n.view.toAxisUnits(o.high,l)})}}),Zr=n=>{const t={high:Number.MIN_SAFE_INTEGER,low:Number.MAX_SAFE_INTEGER,highIdx:0,lowIdx:0};for(let e=0;e<n.length;e++){const s=n[e];s.high>t.high&&(t.high=s.high,t.highIdx=e),s.low<t.low&&(t.low=s.low,t.lowIdx=e)}return t},ql=30,tc=(n,t,e)=>{const s=n.startViewportMovementAnimation(t,{duration:ql,targetXStart:e.xStart,targetXEnd:e.xEnd,targetYStart:e.yStart,targetYEnd:e.yEnd,targetZoomX:e.zoomX,targetZoomY:e.zoomY});t.currentAnimation=s};class ec{constructor(t,e){this.delegate=t,this.highLowPostProcessor={},this.highLowProviders=e!=null?e:{}}setHighLowProvider(t,e){this.highLowProviders[t]=e}deleteHighLowProvider(t){delete this.highLowProviders[t]}setHighLowPostProcessor(t,e){this.highLowPostProcessor[t]=e}doAutoYScale(t){nc(this.delegate,t,Object.values(this.highLowProviders),Object.values(this.highLowPostProcessor))}}const nc=(n,t,e,s)=>{const r=e.filter(o=>o.isHighLowActive()).map(o=>o.calculateHighLow(t)),i=Kr(r),a=s.reduce((o,l)=>l(o),i);t.yStart=a.low,t.yEnd=a.high,t.zoomY=n.calculateZoomY(t.yStart,t.yEnd)};function Kr(n){if(n.length===0)return sc();let t=n[0].high,e=n[0].low;return n.forEach(s=>{isFinite(s.high)&&s.high>=t&&(t=s.high),isFinite(s.low)&&s.low<=e&&(e=s.low)}),{low:e,high:t}}const sc=()=>({high:Number.MIN_SAFE_INTEGER,low:Number.MAX_SAFE_INTEGER});var rc=Object.defineProperty,Jr=Object.getOwnPropertySymbols,ic=Object.prototype.hasOwnProperty,ac=Object.prototype.propertyIsEnumerable,Qr=(n,t,e)=>t in n?rc(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,qr=(n,t)=>{for(var e in t||(t={}))ic.call(t,e)&&Qr(n,e,t[e]);if(Jr)for(var e of Jr(t))ac.call(t,e)&&Qr(n,e,t[e]);return n};const oc=(n,t,e,s)=>{var r,i,a,o;const l=qr({},n),c=(i=(r=t[e])==null?void 0:r.startUnit)!=null?i:0,h=(o=(a=Mo(-e,t))==null?void 0:a.startUnit)!=null?o:0;let v=n.xStart,p=n.xEnd;return l.xStart>=h&&(v=h,p=p-(l.xStart-h)),l.xEnd<c&&(v=c-re(s.width,l.zoomX),p=c),l.xStart=v,l.xEnd=p,l},lc=(n,t,e,s)=>{const r=qr({},t),i=s(),a=r.xEnd-r.xStart,o=a<e.minCandles,l=i.width/e.minWidth,c=a>l;if(i.width>0){if(c)return r.xStart=r.xEnd-l,r.zoomX=rn(r.xEnd-r.xStart,i.width),r;if(o)return r.xEnd=n.xEnd,r.xStart=r.xEnd-e.minCandles,r.zoomX=rn(r.xEnd-r.xStart,i.width),r}return r},cc=(n,t)=>n/t,hc=(n,t)=>n/t,Eg=(n,t)=>n*t,ti=(n,t)=>{const e=n.zoomY;n.zoomY=hc(n.zoomX,t);const s=n.zoomY/e,r=n.yEnd-n.yStart,a=r*s-r;n.yEnd=n.yEnd+a},dc=(n,t)=>{const e=n.xStart;n.xStart=t,n.xEnd=n.xEnd+(t-e)},uc=(n,t)=>{const e=n.yStart;n.yStart=t,n.yEnd=n.yEnd+(t-e)},ei=(n,t,e,s,r)=>{const i=(t.xEnd-t.xStart)*s,a=i*e,o=i*(1-e);return r?(t.xStart=t.xStart+a,t.xEnd=t.xEnd-o):(t.xStart=t.xStart-a,t.xEnd=t.xEnd+o),t.zoomX=n.calculateZoomX(t.xStart,t.xEnd),t},fc=(n,t,e,s)=>ei(n,t,1,e,s);var gc=Object.defineProperty,ni=Object.getOwnPropertySymbols,vc=Object.prototype.hasOwnProperty,mc=Object.prototype.propertyIsEnumerable,si=(n,t,e)=>t in n?gc(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ln=(n,t)=>{for(var e in t||(t={}))vc.call(t,e)&&si(n,e,t[e]);if(ni)for(var e of ni(t))mc.call(t,e)&&si(n,e,t[e]);return n};const pc=()=>({high:Number.NEGATIVE_INFINITY,low:Number.POSITIVE_INFINITY,highIdx:0,lowIdx:0});class ri extends Sl{constructor(t,e,s){super(),this.config=t,this.getBounds=e,this.canvasAnimation=s,this.scaleInversedSubject=new V,this.beforeStartAnimationSubject=new V,this.history=[],this.zoomXYRatio=0,this.xConstraints=[],this.scalePostProcessor=(r,i)=>this.xConstraints.reduce((a,o)=>o(r,a),i),this.state=je(t.scale),this.autoScaleModel=new ec(this),this.offsets=this.config.components.offsets,this.addXConstraint((r,i)=>lc(r,i,this.config.components.chart,this.getBounds))}addXConstraint(t){this.xConstraints=[...this.xConstraints,t]}updateOffsets(t){this.offsets=ln(ln({},this.offsets),t),this.doAutoScale(!0)}getOffsets(){return this.offsets}zoomXToPercent(t,e,s=!1,r=this.config.scale.zoomSensitivity){this.beforeStartAnimationSubject.next();const i=this.export();ei(this,i,t,r,e),this.zoomXTo(i,s)}zoomXToEnd(t,e=this.config.scale.zoomSensitivity){this.beforeStartAnimationSubject.next();const s=this.export();fc(this,s,e,t),this.zoomXTo(s)}haltAnimation(){var t;(t=this.currentAnimation)!=null&&t.animationInProgress&&(this.currentAnimation.finishAnimation(),this.doAutoScale())}zoomXTo(t,e){const s=ln({},t),r=this.scalePostProcessor(s,t);this.state.lockPriceToBarRatio&&ti(r,this.zoomXYRatio),this.state.auto&&this.autoScaleModel.doAutoYScale(r),e?this.apply(r):tc(this.canvasAnimation,this,r)}setXScale(t,e){const s=this.export();super.setXScale(t,e,!1);const r=this.export(),i=this.scalePostProcessor(s,r);this.state.lockPriceToBarRatio&&ti(i,this.zoomXYRatio),this.state.auto&&this.autoScaleModel.doAutoYScale(i),this.apply(i)}moveXStart(t){const e=this.export(),s=ln({},e);this.haltAnimation(),dc(e,t);const r=this.scalePostProcessor(s,e);this.state.auto&&this.autoScaleModel.doAutoYScale(r),this.apply(r)}moveYStart(t){if(this.haltAnimation(),!this.state.auto){const e=this.export();uc(e,t),this.apply(e)}}doAutoScale(t=!1){if(!this.isViewportAnimationInProgress()&&this.state.auto||t){const e=this.export();this.autoScaleModel.doAutoYScale(e),xl(e,this.export())||this.apply(e)}}isViewportAnimationInProgress(){const t=this.currentAnimation;return t==null?void 0:t.animationInProgress}pushToHistory(t){this.history.push(t)}popFromHistory(){return this.history.pop()}clearHistory(){this.history=[]}isDefaultXBounds(){return this.xStart===0&&this.xEnd===0}isDefaultYBounds(){return this.yStart===0&&this.yEnd===0}isScaleReady(){return!this.isDefaultXBounds()&&!this.isDefaultYBounds()}autoScale(t=!0){this.config.components.yAxis.type==="percent"?this.state.auto=!0:this.state.auto=t,t&&(this.clearHistory(),this.doAutoScale())}setLockPriceToBarRatio(t=!1){const{type:e}=this.config.components.yAxis;if(e==="percent"||e==="logarithmic"){this.state.lockPriceToBarRatio=!1;return}t&&this.recalculateZoomXYRatio(),this.state.lockPriceToBarRatio=t}recalculateZoomXYRatio(){this.zoomXYRatio=cc(this.zoomX,this.zoomY)}}class bc extends ri{constructor(t,e,s,r){super(e,s,r),this.delegate=t,this.config=e,this.getBounds=s}doActivate(){this.addRxSubscription(this.delegate.xChanged.subscribe(()=>this.doAutoScale(this.state.auto)))}get xStart(){return this.delegate.xStart}set xStart(t){this.delegate.xStart=t}get xEnd(){return this.delegate.xEnd}set xEnd(t){this.delegate.xEnd=t}get zoomX(){return this.delegate.zoomX}set zoomX(t){this.delegate.zoomX=t}observeXChanged(){return this.delegate.xChanged}fireChanged(){this.delegate.changed.next(),this.changed.next()}}const Cc=qe().colors;class ue extends Yr{constructor(t,e,s,r,i,a,o,l=Cc){super(t,e),this.eventBus=s,this.candlesTransformersByChartType=a,this.candleWidthByChartType=o,this.colors=l,this.zippedHighLow=pc(),this.lastPriceMovement="none",this.lastVisualCandleChangedSubject=new V,this.meanCandleWidth=Vn,this._instrument=i,this.instrument=i,this.highLowProvider=Ql(this),this.scale=r,this.name=i.symbol}get dataPoints(){return super.dataPoints}set dataPoints(t){super.dataPoints=t,this.applyPriceMovement()}get instrument(){return this._instrument}set instrument(t){var e;this._instrument=t,this.pricePrecisions=Kt.computePrecisions((e=t.priceIncrements)!=null?e:[.01])}recalculateDataViewportIndexes(t=this.scale.xStart,e=this.scale.xEnd){super.recalculateDataViewportIndexes(t,e),this.recalculateZippedHighLow(),this.eventBus.fireDraw()}applyPriceMovement(){const t=Ft(this.dataPoints);t&&(this.lastPriceMovement=nn(t.open,t.close))}recalculateVisualPoints(){super.recalculateVisualPoints(),this.recalculateMeanCandleWidth(this.visualPoints)}recalculateZippedHighLow(){return this.zippedHighLow=Zr(this.visualPoints.slice(this.dataIdxStart,this.dataIdxEnd))}updateCurrentPrice(t){this.previousPrice=this.currentPrice||t,this.currentPrice=t,this.currentPrice!==this.previousPrice&&(this.lastPriceMovement=this.currentPrice>this.previousPrice?"up":"down")}updateCandleSeriesColors(t){this.colors=$t(t,this.colors),this.recalculateVisualPoints()}observeLastVisualCandleChanged(){return this.lastVisualCandleChangedSubject.asObservable()}doDeactivate(){super.doDeactivate()}toVisualPoints(t,e=0){var s,r;if(t.length===0)return[];const i=this.config.type,a=[];let o=e;const l=(s=this.candleWidthByChartType[i])!=null?s:Vr;for(let c=0;c<t.length;c++){const h=t[c],v=t[c-1],p=l(h),C=o+p/2,O=(r=this.candlesTransformersByChartType[i])!=null?r:zr;a.push(O(h,{x:C,width:p,prevCandle:v,activeCandle:this.activeCandle})),o+=p}return a}recalculateMeanCandleWidth(t){t.length!==0?this.meanCandleWidth=t.reduce((e,s)=>e+s.width,0)/t.length:this.meanCandleWidth=Vn}setActiveCandle(t){this.activeCandle=t,this.recalculateVisualPoints()}clearData(){this.dataPoints=[],this.clearVisualCandles(),this.clearPrices()}clearPrices(){this.previousPrice=void 0,this.currentPrice=void 0,this.lastPriceMovement="none"}clearVisualCandles(){this.visualPoints=[]}}function Og(n){switch(n){case"line":case"area":return!0;default:return!1}}class yc{constructor(t){this.config=t}draw(t,e,s,r){if(s instanceof ue){const i=It(e);if(i.length===0)return;r.singleColor?t.strokeStyle=r.singleColor:t.strokeStyle=s.colors.areaTheme.lineColor,s.hovered?t.lineWidth=this.config.selectedWidth:t.lineWidth=this.config.areaLineWidth;const a=s.extentComponent.getBounds(),o=i[0],l=s.view.toX(o.centerUnit);for(let c=0;c<i.length;c++){const h=i[c-1],v=i[c+1],p=i[c],C=s.view.toX(p.centerUnit),O=s.view.toY(p.close),B=a.y+a.height;if(h===void 0)t.beginPath(),t.lineTo(gt(C),B),t.moveTo(gt(C),O);else if(v===void 0){t.lineTo(gt(C),O),t.stroke(),t.lineTo(gt(C),B),t.lineTo(gt(l),B),t.closePath();let H;r.singleColor?t.fillStyle=r.singleColor:t.fillStyle=s.colors.areaTheme.startColor&&s.colors.areaTheme.stopColor?(H=t.createLinearGradient(0,0,0,a.height),H.addColorStop(0,s.colors.areaTheme.startColor),H.addColorStop(1,s.colors.areaTheme.stopColor),H):"",t.fill()}else t.lineTo(gt(C),O)}}}}function ii(n,t,e,s,r,i=4,a=!0,o=!1){n.save(),n.beginPath(),n.moveTo(t+i,e),n.lineTo(t+s-i,e),n.quadraticCurveTo(t+s,e,t+s,e+i),n.lineTo(t+s,e+r-i),n.quadraticCurveTo(t+s,e+r,t+s-i,e+r),n.lineTo(t+i,e+r),n.quadraticCurveTo(t,e+r,t,e+r-i),n.lineTo(t,e+i),n.quadraticCurveTo(t,e,t+i,e),n.closePath(),a&&n.fill(),o&&n.stroke(),n.restore()}function wc(n,t,e,s,r,i,a,o,l,c,h=4,v=!0,p=!1){const C=c==="right"?o:-o,O=c==="right"?h:-h,B=h;n.save(),n.beginPath(),l?n.moveTo(i+O,a):n.moveTo(i,a),l?(n.lineTo(i+C-O,a),n.quadraticCurveTo(i+C,a,i+C,a-B),n.lineTo(i+C,e+B),n.quadraticCurveTo(i+C,e,i+C-O,e),n.lineTo(t+O,e)):(n.lineTo(i+C,a),n.lineTo(i+C,e),n.lineTo(t,e)),l?(n.quadraticCurveTo(t,e,t-O/3,e+B/3),n.lineTo(s+O/3,r-B/3),n.quadraticCurveTo(s,r,s+O/3,r+B/3),n.lineTo(i-O/3,a-B/3),n.quadraticCurveTo(i,a,i+O/3,a)):(n.lineTo(s,r),n.lineTo(i,a)),n.closePath(),v&&n.fill(),p&&n.stroke(),n.restore()}function Sc(n,t,e,s,r,i=1){n.save(),n.lineWidth=i,n.beginPath(),n.moveTo(t,e),n.lineTo(s,r),n.stroke(),n.closePath(),n.restore()}function ye(n,t){n.save(),n.lineWidth%2&&n.translate(.5,.5),t(),n.restore()}function ai(n,t,e){const s=Math.min(t.x,e.x)+.5,r=Math.min(t.y,e.y),i=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);n.fillRect(s,r,i,a)}const Lg=n=>Array.isArray(n[0])?n:[n];class xc{constructor(t,e){this.paneManager=t,this.seriesDrawers=e}draw(t,e,s){const r=t.ctx,i=s&&this.paneManager.panes[s];e&&(r.save(),i&&we(r,i.getBounds()),this.drawSeries(r,e),r.restore())}drawSeries(t,e){if(e.config.visible){const s=e.config.type,r=this.seriesDrawers[s];if(r){const i=e.getSeriesInViewport(e.scale.xStart-1,e.scale.xEnd+1);i&&i.length>=1&&r.draw(t,i,e,{})}else console.error(`Data series drawer with type ${s} isn't registered!`)}}}const we=(n,t)=>{n.beginPath(),n.rect(t.x,t.y,t.width,t.height),n.clip(),n.closePath()},Ae=(n,t,e,s,r=t)=>{s.forceBold?n.lineWidth=s.forceBold:e.hovered?n.lineWidth=r:n.lineWidth=t};class Pc{constructor(t){this.config=t}setFillStyle(t,e,s,r){if(e.singleColor)t.strokeStyle=e.singleColor;else{const i=s.colors.barTheme;i&&(t.strokeStyle=i[`${r.name}Color`])}}draw(t,e,s,r){if(s instanceof ue){const i=It(e);Ae(t,this.config.barLineWidth,s,r),ye(t,()=>{for(const a of i){this.setFillStyle(t,r,s,a),t.beginPath();const o=st(s.view.toX(a.centerUnit)),l=st(s.view.toX(a.startUnit)),[c,h,v,p]=a.yBodyKeyPoints(s.view),C=st(s.view.xPixels(a.width)/2),O=st(s.view.toY(a.close)),B=st(s.view.toY(a.open));this.config.showWicks?(t.moveTo(o,c),t.lineTo(o,p)):(t.moveTo(o,h),t.lineTo(o,v)),t.moveTo(o,O),t.lineTo(o+C,O),t.moveTo(l,B),t.lineTo(o,B),t.stroke()}})}}}class Tc{constructor(t,e){this.baseLineModel=t,this.canvasBoundContainer=e}draw(t,e,s,r){if(r!==void 0&&s instanceof ue){const i=It(e),a=this.baseLineModel.baselineYPercents,o=this.canvasBoundContainer.getBounds(Y.CHART),l=o.y+o.height*(a/100),c=i[0];for(let h=0;h<i.length;h++){const v=i[h],p=i[h-1],C=i[h+1],O=s.view.toX(c.centerUnit),B=s.view.toX(v.centerUnit),H=s.view.toY(v.close),k=p?s.view.toY(p.close)<l:!1,z=H<l;if(p!==void 0&&k!==z){oi(t,s,r,k);const Z=s.view.toX(p.centerUnit),J=s.view.toY(p.close),K=B-Z,U=H-J,Q=K/U,at=H-l,ot=Q*at,nt=Z+(K-ot);t.lineTo(nt,l),t.stroke(),t.lineTo(O,l),t.closePath(),t.fill(),t.beginPath(),t.moveTo(nt,l)}p===void 0?(t.beginPath(),t.moveTo(B,H)):C===void 0?(oi(t,s,r,z),t.lineTo(B,H),t.stroke(),t.lineTo(B,l),t.lineTo(O,l),t.closePath(),t.fill(),t.beginPath(),t.moveTo(O,l),t.lineTo(B,l),t.strokeStyle=s.colors.baseLineTheme.baselineColor,t.stroke()):t.lineTo(B,H)}}}}const oi=(n,t,e,s)=>{e.singleColor?(n.fillStyle=e.singleColor,n.strokeStyle=e.singleColor):(n.fillStyle=s?t.colors.baseLineTheme.upperSectionFillColor:t.colors.baseLineTheme.lowerSectionFillColor,n.strokeStyle=s?t.colors.baseLineTheme.upperSectionStrokeColor:t.colors.baseLineTheme.lowerSectionStrokeColor)};class Mc{constructor(t){this.config=t,this.pixelLength=1,this.lineWidthCU=1,this.halfLineWidthCU=1}draw(t,e,s,r){if(s instanceof ue){const i=It(e);Ae(t,this.config.candleLineWidth,s,r,this.config.candleLineWidth),ye(t,()=>{this.pixelLength=1/Zt,this.halfLineWidthCU=t.lineWidth/2,this.lineWidthCU=t.lineWidth;for(const a of i){const{candleTheme:o,activeCandleTheme:l}=s.colors;o&&l&&this.drawCandle(t,r,s,a)}})}}drawCandle(t,e,s,r){const{candleTheme:i,activeCandleTheme:a}=s.colors,o=r.name,l=r.isActive?a:i,c=r.isHollow;e.singleColor?t.fillStyle=e.singleColor:c?t.fillStyle=l[`${o}WickColor`]:t.fillStyle=l[`${o}Color`];const h=st(s.view.toX(r.startUnit)),v=st(s.view.xPixels(r.width)),p=r.bodyHeight(s.view),[C,O,B,H]=r.yBodyKeyPoints(s.view),k=O===B?O+1:B,z=C===H?C+1:H,Z=l[`${o}Color`],J=o==="none"?Z:l[`${o}WickColor`];t.fillStyle=Z,e.singleColor?t.strokeStyle=e.singleColor:t.strokeStyle=J;const K=c||(r.hasBorder&&r.isActive?this.config.showActiveCandlesBorder:this.config.showCandlesBorder),U=this.config.showWicks;if(v<2)t.beginPath(),t.moveTo(h,U?C:O),t.lineTo(h,U?z:k),t.stroke();else if(v<3)t.beginPath(),t.moveTo(h,U?C:O),t.lineTo(h,U?z:k),t.moveTo(h+1,O),t.lineTo(h+1,k),t.stroke();else if(v===3){const Q=v/Zt;this.drawCandlesWicks(t,h+Q,C,z,O,k),c||(t.beginPath(),t.moveTo(h+Q,O),t.lineTo(h+Q,k),t.stroke()),this.drawCandleBorder(t,e,l,r,h+this.halfLineWidthCU,O+this.halfLineWidthCU,v-this.lineWidthCU,p-this.lineWidthCU)}else{const Q=r.x(s.view);this.drawCandlesWicks(t,Q,C,z,O,k-1);const at=this.config.candlePaddingPercent,ot=Math.max(st(v*at/2),this.pixelLength),nt=h+ot,rt=v-ot*2;c||(e.singleColor&&(t.fillStyle=e.singleColor),t.fillRect(nt,O,rt,p)),K&&this.drawCandleBorder(t,e,l,r,nt+this.halfLineWidthCU,O+this.halfLineWidthCU,rt-this.lineWidthCU,p-this.lineWidthCU)}}drawCandlesWicks(t,e,s,r,i,a){this.config.showWicks&&(t.beginPath(),t.moveTo(e,s),t.lineTo(e,i),t.moveTo(e,a),t.lineTo(e,r),t.stroke())}drawCandleBorder(t,e,s,r,i,a,o,l){if(e.singleColor)t.strokeStyle=e.singleColor;else{const c=r.name;t.strokeStyle=c==="none"?s[`${c}Color`]:s[`${c}WickColor`]}t.strokeRect(i,a,o,l)}}class _c{constructor(t){this.config=t}draw(t,e,s,r){if(s instanceof ue){const i=e.flat(),a=s.scale.getBounds(),o=a.y+a.height;for(const l of i){t.beginPath();const c=l.name,h=this.config.barCapSize,v=s.colors.histogram;if(v===void 0)return;r.singleColor?t.fillStyle=r.singleColor:t.fillStyle=v[`${c}Bright`];const p=l.xStart(s.view),C=st(s.view.toY(l.close)),O=st(s.view.xPixels(l.width));t.fillRect(p,C,O,h);const B=t.createLinearGradient(0,C+h,0,o);r.singleColor?t.fillStyle=r.singleColor:(B.addColorStop(0,v[`${c}Cap`]),B.addColorStop(1,v[`${c}Bottom`]),t.fillStyle=B),O===0?(t.beginPath(),t.strokeStyle=B,t.moveTo(p,C+h),t.lineTo(p,o),t.stroke(),t.closePath()):t.fillRect(p,C+h,O,o-C-h)}}}}class Ac{constructor(t){this.config=t}draw(t,e,s,r){if(s instanceof ue){const i=It(e);Ae(t,this.config.lineWidth,s,r,this.config.selectedWidth);const a=s.colors.lineTheme;t.lineCap="round",r.singleColor&&(t.strokeStyle=r.singleColor);for(let o=1;o<i.length;o++){const l=i[o-1],c=i[o],h=c.name;r.singleColor||(t.strokeStyle=a[`${h}Color`]);const v=s.view.toX(l.centerUnit),p=s.view.toY(l.close),C=s.view.toX(c.centerUnit),O=s.view.toY(c.close);t.beginPath(),t.moveTo(v,p),t.lineTo(C,O),t.stroke()}}}}const Dc=1.5;class Ec{constructor(t){this.config=t}draw(t,e,s,r){var i;t.fillStyle=(i=r.singleColor)!=null?i:this.config.mainColor;for(const a of It(e)){t.beginPath();const o=st(s.view.toX(a.centerUnit)),l=st(s.view.toY(a.close));t.arc(o,l,Dc,0,Math.PI*2,!0),t.fill()}}}const Oc=["candle","bar","line","area","scatterPlot","hollow","histogram","baseline","trend"];class Lc{constructor(t,e,s){this.drawer=t,this.config=e,this.chartBounds=s}draw(t,e,s,r){this.isChartTypeAllowed()&&(this.beforeDraw(t),this.drawer.draw(t,e,s,r),this.afterDraw(t,s))}beforeDraw(t){t.restore(),t.save(),we(t,this.chartBounds())}isChartTypeAllowed(){return Oc.includes(this.config.components.chart.type)}afterDraw(t,e){t.restore(),t.save(),we(t,e.scale.getBounds())}}class Ic{constructor(t){this.chartModel=t}draw(t,e,s,r){e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);t.fillStyle=(o=r.singleColor)!=null?o:l.color,i.forEach(c=>{const h=this.chartModel.getVisualCandle(pe(c.centerUnit)),v=c.close;if(h&&v===1){const p=this.chartModel.scale.zoomX,C=st(Tt(h.width,p)),O=st(h.bodyHeight(this.chartModel.scale)),B=h.xCenter(this.chartModel.scale)-C/2,H=h.yBodyStart(this.chartModel.scale),k=this.chartModel.config.components.chart.candlePaddingPercent,z=st(C*k/2),Z=B+z,J=C-z*2;t.fillRect(Z,H,J,O)}})})}}const li=(n,t,e)=>{n.length!==0&&n.forEach((s,r)=>{const{centerUnit:i,close:a}=s,o=e.toX(i),l=e.toY(a);r===0?t.moveTo(o,l):t.lineTo(o,l)})},Bc=/^(#)([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i,Rc=/^\s*(rgba?)\s*[(]\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*[\d.]+\s*)?[)]\s*$/i;function Fc(n){const t=Bc.exec(n)||Rc.exec(n);let e=[];return t&&(e=t.slice(2,5),t[1]==="#")?e.map(function(s){return parseInt(s,16)}):e}const ci={};function Yc(n,t){let e=ci[n+t];if(!e){const s=Fc(n);e=s&&"rgba("+s.join(",")+","+t+")",ci[n+t]=e}return e}class Hc{constructor(){}draw(t,e,s,r){s.config.visible&&(e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);Ae(t,l.lineWidth,s,r,l.hoveredLineWidth);const c=(o=r.singleColor)!=null?o:l.color;t.strokeStyle=c,this.drawLine(t,i,s.view)}),s.linkedDataSeriesModels.forEach((i,a)=>{if(di(i.config.type)&&di(s.config.type)&&i.config.visible){const o=[],l=s,c=l.getSeriesInViewport(l.scale.xStart-1,l.scale.xEnd+1),h=i.getSeriesInViewport(i.scale.xStart-1,i.scale.xEnd+1);c.forEach((v,p)=>{const C=Math.min(v.length,h[p].length);for(let H=0;H<C;H++){const k=[v[H].clone(),h[p][H].clone()];o.push({diffPoints:k})}const O=l.getPaintConfig(p).color,B=i.getPaintConfig(a).color;this.drawDifference(t,O,B,o,l,i,r)})}}))}drawLine(t,e,s){t.beginPath(),li(e,t,s),t.stroke()}drawDifference(t,e,s,r,i,a,o){const[l,c]=[[],[]];r.forEach(p=>{const[C,O]=p.diffPoints;l.push(C),c.push(O)});const h=hi(l,i.view),v=hi(c,a.view);this.fillCloud(t,s,h,v,o),this.fillCloud(t,e,v,h,o)}fillCloud(t,e,s,r,i){var a,o,l,c;t.save(),t.beginPath();const h=(o=(a=Ye(s))==null?void 0:a.x)!=null?o:0,v=(c=(l=Ft(s))==null?void 0:l.x)!=null?c:0;t.lineTo(h,0),s.forEach(p=>{t.lineTo(p.x,p.y)}),t.lineTo(v,0),t.closePath(),t.clip(),t.beginPath(),s.forEach((p,C)=>{C===0?t.moveTo(p.x,p.y):t.lineTo(p.x,p.y)}),r.slice().reverse().forEach(p=>{t.lineTo(p.x,p.y)}),t.closePath(),t.fillStyle=i.singleColor?i.singleColor:Yc(e||"#383838",.3),t.fill(),t.restore()}}const hi=(n,t)=>n.map(e=>{const{centerUnit:s,close:r}=e,i=t.toX(s),a=t.toY(r);return{x:i,y:a}}),di=n=>n==="DIFFERENCE";class Nc{constructor(){}draw(t,e,s,r){const i=s.view.toY(0);e.forEach((a,o)=>{var l;const c=s.getPaintConfig(o);Ae(t,c.lineWidth,s,r,c.hoveredLineWidth),t.strokeStyle=(l=r.singleColor)!=null?l:c.color,t.beginPath(),a.forEach(h=>{const v=s.view.toX(h.centerUnit),p=s.view.toY(h.close);t.moveTo(v,gt(i)),t.lineTo(v,gt(p))}),t.stroke()})}}class kc{constructor(){}draw(t,e,s,r){e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);Ae(t,l.lineWidth,s,r,l.hoveredLineWidth),t.strokeStyle=(o=r.singleColor)!=null?o:l.color,this.drawLinePath(t,i,s.view)})}drawLinePath(t,e,s){t.beginPath(),li(e,t,s),t.stroke()}}class jc{constructor(){}draw(t,e,s,r){e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a),c=l.lineWidth;t.fillStyle=(o=r.singleColor)!=null?o:l.color,t.lineWidth=1,i.forEach(h=>{t.beginPath();const v=s.view.toX(h.centerUnit),p=s.view.toY(h.close);t.arc(v,p,c,0,Math.PI*2),t.fill()})})}}class Uc{constructor(t){this.config=t}draw(t,e,s,r){t.save(),e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);t.fillStyle=(o=r.singleColor)!=null?o:l.color;const c=l.lineWidth+"px "+this.config.components.yAxis.fontFamily;t.font=c,i.forEach(h=>{const v=s.getTextForPoint(h),p=Yt(v,t,c),C=ne(c,t),O=s.view.toX(h.centerUnit)-p/2,B=s.view.toY(h.close)+C;t.fillText(v,O,B)})}),t.restore()}}class Wc{constructor(){}draw(t,e,s,r){e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);t.fillStyle=(o=r.singleColor)!=null?o:l.color,i.forEach(c=>{const h=s.view.toX(c.centerUnit),v=s.view.toY(c.close);this.drawCandleTriangle(t,h,v,l.lineWidth)})})}drawCandleTriangle(t,e,s,r){t.beginPath(),t.moveTo(e-r/2,s),t.lineTo(e,s-r),t.lineTo(e+r/2,s),t.fill()}}const Qn="resized_local",cn="draw",Ig="draw_last_candle",De={width:20,height:20};class ui{constructor(t,e,s,r,i,a={}){this.eventBus=t,this.canvas=e,this.drawingManager=s,this.resizer=i,this.width=0,this.height=0,this.prevHeight=0,this.prevWidth=0,this.type=qn;var o;r.push(this),this.parent=Vc(e);const l=e.getContext("2d",a);if(l===null)throw new Error("Couldn't get 2d context????");this.context=l,this._canvasId=(o=e.getAttribute("data-element"))!=null?o:"",this.updateCanvasWidthHeight(e,this.getChartResizerElement().getBoundingClientRect())}updateDPR(t){const{width:e,height:s}=t,r=window.devicePixelRatio;this.canvas.style.height=s+"px",this.canvas.style.width=e+"px",this.canvas.width=e*r,this.canvas.height=s*r,this.width=e,this.height=s,this.ctx.scale(r,r)}get canvasId(){return this._canvasId}get ctx(){return this.context}clear(){this.context.clearRect(0,0,this.width,this.height)}isLinked(){var t,e;return(e=(t=this.type)==null?void 0:t.linked)!=null?e:!1}fireDraw(){this.eventBus.fireDraw([this.canvasId])}updateCanvasWidthHeight(t,e=this.getChartResizerElement().getBoundingClientRect()){t.clientWidth!==this.width&&(t.width=t.clientWidth,this.width=t.clientWidth);const s=e.height;s!==this.height&&(t.style.height=s+"px",this.height=s,t.height=s,this.prevHeight=s)}getChartResizerElement(){var t;return(t=this.resizer)!=null?t:this.parent}isReady(){return this.width>De.width&&this.height>De.height}}const qn={name:"candle"},zc={candle:qn,bar:{name:"candle"},line:{name:"line",linked:!0},area:{name:"area",linked:!0}};function Xc(n,t,e,s,r,i,a){var o;const l=Ee(n,t,r,i,a,e);return l.type=(o=zc[s])!=null?o:qn,l}function Ee(n,t,e,s,r,i,a){const o=new ui(n,t,s,r,i,a);return fi(o,e),o}function fi(n,t){const e=n.canvas;t.fixedSize&&(e.width=t.fixedSize.width,e.height=t.fixedSize.height,e.style.width=t.fixedSize.width+"px",e.style.height=t.fixedSize.height+"px",n.width=t.fixedSize.width,n.height=t.fixedSize.height),e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.direction="ltr"}function Vc(n){let t=n;for(;t;){if(t.nodeType===1&&t.hasAttribute("data-chart-container"))return t;if(t.parentElement!==null)t=t.parentElement;else break}return t}let ts=!1,es=0;const hn=new Map,ns=new Map,gi=()=>{ts||(ts=!0,es=requestAnimationFrame(()=>{ns.forEach((n,t)=>{n(),ns.delete(t)}),hn.forEach((n,t)=>{n(),hn.delete(t)}),ts=!1}))},vi=(n,t)=>{hn.set(n,t),gi()},Yg=n=>{hn.delete(n)},ss=(n,t)=>{ns.set(n,t),gi()},dn="HIT_TEST_",Hg=null;class Gc{constructor(t,e){this.chartResizeHandler=e,this.drawingOrder=[],this.drawersMap={},this.canvasIdsList=[],this.animFrameId=`draw_${te()}`,this.drawHitTestCanvas=()=>{this.drawingOrder.forEach(s=>{s.indexOf(dn)!==-1&&this.drawersMap[s].draw()})},t.on(cn,s=>{e.wasResized()&&(this.canvasIdsList&&(s&&s.length!==0?this.canvasIdsList=this.canvasIdsList.concat(s):this.canvasIdsList=void 0),vi(this.animFrameId,()=>{this.forceDraw(this.canvasIdsList),this.canvasIdsList=[],this.drawHitTestCanvas()}))})}redrawCanvasesImmediate(){this.chartResizeHandler.fireUpdates(),this.forceDraw()}drawLastBar(){this.drawingOrder.forEach(t=>{if(t.indexOf(dn)===-1){const e=this.drawersMap[t];e.drawLastBar&&e.drawLastBar()}})}forceDraw(t){this.isDrawable()&&this.drawingOrder.forEach(e=>{if(e.indexOf(dn)===-1){const s=this.drawersMap[e];if(!t||t.length===0){s.draw();return}So(t,s.getCanvasIds()).length&&s.draw()}})}isDrawable(){var t,e,s,r;return((e=(t=this.chartResizeHandler.previousBCR)==null?void 0:t.height)!=null?e:0)>De.width&&((r=(s=this.chartResizeHandler.previousBCR)==null?void 0:s.width)!=null?r:0)>De.height}drawHitTestOnly(){this.drawHitTestCanvas()}addDrawer(t,e=te()){this.drawingOrder.indexOf(e)===-1&&this.drawingOrder.push(e),this.drawersMap[e]=t}addDrawerAfter(t,e,s){this.addDrawer(t,e);const r=this.drawingOrder.indexOf(e);this.drawingOrder.splice(r,1);const i=this.drawingOrder.indexOf(s);this.drawingOrder.splice(i+1,0,e),this.reorderDrawers(this.drawingOrder)}addDrawerBefore(t,e,s){this.addDrawer(t,e);const r=this.drawingOrder.indexOf(s);if(r!==-1){const i=this.drawingOrder.indexOf(e);return this.drawingOrder.splice(i,1),this.drawingOrder.splice(r,0,e),this.reorderDrawers(this.drawingOrder),!0}return!1}getDrawerByName(t){return this.drawersMap[t]}getNameByDrawer(t){for(const e in this.drawersMap)if(this.drawersMap[e]===t)return e}removeDrawerByName(t){const e=this.drawersMap[t];this.removeDrawer(e)}removeDrawer(t){Object.keys(this.drawersMap).forEach(e=>{if(this.drawersMap[e]===t){delete this.drawersMap[e];const s=this.drawingOrder.indexOf(e);s!==-1&&this.drawingOrder.splice(s,1)}})}reorderDrawers(t){this.drawingOrder=Ks(this.drawingOrder,t)}}class mi{static paneResizer(t){return`PANE_RESIZER_${t}`}}class $c{constructor(t,e,s){this.seriesDrawers=t,this.canvasModel=e,this.paneManager=s}draw(){const t=this.canvasModel.ctx;this.paneManager.yExtents.forEach(e=>{t.save(),we(t,e.getBounds()),e.dataSeries.forEach(s=>this.drawSeries(t,s)),t.restore()})}drawSeries(t,e){if(e.config.visible){const s=e.config.type,r=this.seriesDrawers[s];if(r){const i={singleColor:this.canvasModel.idToColor(e.id),forceBold:7};r.draw(t,e.getSeriesInViewport(e.scale.xStart-1,e.scale.xEnd+1),e,i)}}}getCanvasIds(){return[this.canvasModel.canvasId]}}const pi={disableChartPanning:!0};class bi extends tt{constructor(t,e,s,r,i){super(),this.hitTest=t,this.dragCallbacks=e,this.canvasInputListener=s,this.chartPanComponent=r,this.dragComponentOptions=i,this.dragging=!1,this.draggedPixels=0,this.onDragStart=a=>{this.dragging=!0,this.draggedPixels=0,this.dragCallbacks.onDragStart&&this.dragCallbacks.onDragStart(a),this.dragComponentOptions.disableChartPanning&&this.chartPanComponent.deactivatePanHandlers()},this.onDragTick=a=>{this.dragging&&(this.draggedPixels+=a,this.dragCallbacks.onDragTick({delta:a,draggedPixels:this.draggedPixels}))},this.onDragEnd=()=>{this.dragging&&(this.dragging=!1,this.dragCallbacks.onDragEnd&&this.dragCallbacks.onDragEnd(this.draggedPixels),this.dragComponentOptions.disableChartPanning&&this.chartPanComponent.activateChartPanHandlers())}}doActivate(){super.doActivate()}doDeactivate(){super.doDeactivate()}}class un extends bi{constructor(t,e,s,r,i=pi){super(t,e,s,r,i)}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasInputListener.observeYDragStart(this.hitTest).subscribe(this.onDragStart)),this.addRxSubscription(this.canvasInputListener.observeYDrag().subscribe(this.onDragTick)),this.addRxSubscription(this.canvasInputListener.observeYDragEnd().subscribe(this.onDragEnd))}doDeactivate(){super.doDeactivate()}}const Zc="BASELINE_RESIZER";class Kc extends tt{constructor(t,e,s,r,i,a,o){super(),this.chartModel=t,this.canvasModel=s,this.canvasInputListener=r,this.config=i,this.canvasBoundContainer=a,this.cursorHandler=o,this.resizerBounds={x:0,y:0,pageX:0,pageY:0,height:0,width:0},this.baselineYPercents=50,this.ht=zn.hitTestOf(this.resizerBounds,{extensionY:this.config.components.paneResizer.dragZone}),this.dragTickCb=c=>{const{delta:h}=c,v=this.canvasBoundContainer.getBounds(Y.CHART),p=this.canvasInputListener.getCurrentPoint().y;h!==0&&qo(p,v)&&(this.moveBaseLine(p),this.canvasModel.fireDraw())};const l=new un(this.ht,{onDragTick:this.dragTickCb},r,e);this.addChildEntity(l)}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasBoundContainer.observeBoundsChanged(Y.CHART).subscribe(()=>this.recalculateBounds())),this.chartModel.chartTypeChanged.subscribe(t=>{t==="baseline"?this.cursorHandler.setCursorForBounds("BASELINE_RESIZER",this.resizerBounds,this.config.components.baseline.cursor,this.config.components.baseline.dragZone):this.cursorHandler.removeCursorForCanvasEl("BASELINE_RESIZER")})}recalculateBounds(){const t=this.canvasBoundContainer.getBounds(Y.CHART),e=this.canvasBoundContainer.getBounds(Y.Y_AXIS);this.resizerBounds.x=t.x,this.resizerBounds.width=t.width+e.width,this.resizerBounds.height=this.config.components.baseline.height;const s=t.y+t.height*(this.baselineYPercents/100);this.resizerBounds.y=s,this.canvasBoundContainer.bounds[Zc]=this.resizerBounds}moveBaseLine(t){const e=this.canvasBoundContainer.getBounds(Y.CHART);this.baselineYPercents=(t-e.y)*100/e.height,this.resizerBounds.y=t}doDeactivate(){super.doDeactivate()}}const fn=n=>{var t;const e=Re(n.close,n.open,n.hi,n.lo);if(!isFinite(e))throw new Error("Received candle without any price");const s=Re(n.hi,Math.max(n.open,n.close),e),r=Re(n.lo,Math.min(n.open,n.close),e),i=Re(n.open,n.lo,e),a=Re(n.close,n.hi,e);return{hi:s,lo:r,open:i,close:a,timestamp:n.timestamp,volume:(t=n.volume)!=null?t:0,expansion:n.expansion,idx:n.idx,impVolatility:n.impVolatility}},rs=n=>{for(let t=0;t<n.length;++t)n[t].idx=t},Ci=n=>{n.forEach(t=>{t.idx=void 0})};class Jc{constructor(){}draw(t,e,s){const r=s.view.toY(0),i=It(e),a=[[],[]];i.forEach((o,l,c)=>{a[o.close<this.previousValue(c,l)?1:0].push(o)}),a.forEach((o,l)=>{const c=s.getPaintConfig(l);t.strokeStyle=l===0?c.color:c.aditionalColor||"#FF00FF",t.lineWidth=c.lineWidth,t.beginPath(),o.forEach(h=>{const v=s.view.toX(h.centerUnit),p=s.view.toY(h.close);t.moveTo(v,gt(r)),t.lineTo(v,gt(p))}),t.stroke()})}previousValue(t,e){do e--;while(e>=0&&!isFinite(t[e]&&t[e].close));return t[e]?t[e].close:Number.NaN}}var Qc=Object.defineProperty,yi=Object.getOwnPropertySymbols,qc=Object.prototype.hasOwnProperty,th=Object.prototype.propertyIsEnumerable,wi=(n,t,e)=>t in n?Qc(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,eh=(n,t)=>{for(var e in t||(t={}))qc.call(t,e)&&wi(n,e,t[e]);if(yi)for(var e of yi(t))th.call(t,e)&&wi(n,e,t[e]);return n};class nh{constructor(){this.symbol="MOCK",this.priceIncrements=[.01]}}class sh extends tt{constructor(t,e,s,r,i,a,o,l,c,h,v,p,C){super(),this.chartModel=t,this.canvasModel=e,this.config=s,this.scale=r,this.canvasBoundsContainer=i,this.drawingManager=a,this.hitTestCanvasModel=o,this.canvasInputListener=l,this.paneManager=v,this.dynamicObjects=C,this._dataSeriesDrawers={},this.strToBarType=B=>{var H;return(H=this.barTypeValues.find(k=>k===B))!=null?H:"candle"},this.addChildEntity(this.chartModel),this.registerDefaultCandlesTransformers(),this.baselineModel=new Kc(this.chartModel,h,this.canvasModel,this.canvasInputListener,this.config,this.canvasBoundsContainer,p),this.addChildEntity(this.baselineModel);const O=new $c(this._dataSeriesDrawers,this.hitTestCanvasModel,v);this.drawingManager.addDrawerBefore(O,dn+"DATA_SERIES","HIT_TEST_EVENTS"),this.registerDefaultDataSeriesDrawers(),this.backgroundDrawer=new jl(c,this.config),a.addDrawer(this.backgroundDrawer,"MAIN_BACKGROUND"),p.setCursorForCanvasEl(Y.PANE_UUID(ht),s.components.chart.cursor),this.dataSeriesDrawer=new xc(v,this.dataSeriesDrawers)}doActivate(){super.doActivate(),this.dynamicObjects.model.addObject({model:this.chartModel.mainCandleSeries,drawer:this.dataSeriesDrawer},this.chartModel.mainCandleSeries.extentComponent.paneUUID),this.addRxSubscription(this.paneManager.dataSeriesAddedSubject.subscribe(t=>{this.dynamicObjects.model.addObject({model:t,drawer:this.dataSeriesDrawer},t.extentComponent.paneUUID)})),this.addRxSubscription(this.paneManager.dataSeriesRemovedSubject.subscribe(t=>{this.dynamicObjects.model.removeObject(t,t.extentComponent.paneUUID)}))}registerDefaultCandlesTransformers(){this.registerCandlesTransformer("candle",zr),this.registerCandlesTransformer("trend",Xr),this.registerCandlesTransformer("hollow",Ul),this.registerCandlesTransformer("line",Wl)}get barTypeValues(){return Ar(this._dataSeriesDrawers)}get dataSeriesDrawers(){return this._dataSeriesDrawers}registerCandlesTransformer(t,e){this.chartModel.registerCandlesTransformer(t,e)}registerLastCandleLabelHandler(t,e){this.chartModel.registerLastCandleLabelHandler(t,e)}registerCandlesWidthCalculator(t,e){this.chartModel.registerCandlesWidthCalculator(t,e)}registerDefaultDataSeriesDrawers(){const t=new Mc(this.config.components.chart);this.registerDataSeriesTypeDrawer("candle",t),this.registerDataSeriesTypeDrawer("trend",t),this.registerDataSeriesTypeDrawer("hollow",t),this.registerDataSeriesTypeDrawer("bar",new Pc(this.config.components.chart)),this.registerDataSeriesTypeDrawer("line",new Ac(this.config.components.chart)),this.registerDataSeriesTypeDrawer("scatterPlot",new Ec(this.config.colors.scatterPlot)),this.registerDataSeriesTypeDrawer("area",new yc(this.config.components.chart)),this.registerDataSeriesTypeDrawer("baseline",new Tc(this.baselineModel,this.canvasBoundsContainer)),this.registerDataSeriesTypeDrawer("histogram",new _c(this.config.components.chart.histogram));const e=()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ht));this.registerDataSeriesTypeDrawer("LINEAR",new kc),this.registerDataSeriesTypeDrawer("HISTOGRAM",new Nc),this.registerDataSeriesTypeDrawer("TREND_HISTOGRAM",new Jc),this.registerDataSeriesTypeDrawer("POINTS",new jc),this.registerDataSeriesTypeDrawer("COLOR_CANDLE",new Lc(new Ic(this.chartModel),this.config,e)),this.registerDataSeriesTypeDrawer("TEXT",new Uc(this.config)),this.registerDataSeriesTypeDrawer("TRIANGLE",new Wc),this.registerDataSeriesTypeDrawer("DIFFERENCE",new Hc)}setChartType(t){this.config.components.chart.type=t,this.chartModel.rememberCurrentTimeframe(),this.chartModel.mainCandleSeries.setType(t),this.chartModel.mainCandleSeries.updateCandleSeriesColors(eh({},this.config.colors)),this.chartModel.mainCandleSeries.recalculateVisualPoints(),this.chartModel.chartTypeChanged.next(t)}resetChartScale(){this.chartModel.doBasicScale()}setTimestampRange(t,e){return this.chartModel.setTimestampRange(t,e)}setXScale(t,e){return this.scale.setXScale(t,e)}setShowWicks(t){this.config.components.chart.showWicks=t,this.canvasModel.fireDraw()}setMainSeries(t){var e;const s=(e=t.instrument)!=null?e:this.chartModel.mainCandleSeries.instrument;this.chartModel.mainCandleSeries.instrument=s,this.chartModel.setAllSeries({candles:t.candles,instrument:s},this.chartModel.getSecondarySeries().map(r=>{var i;const a=(i=r.instrument)!=null?i:this.chartModel.mainCandleSeries.instrument,o=r.dataPoints;return Ci(o),{candles:o,instrument:a}})),this.updatePriceIncrementsIfNeeded(s)}setSecondarySeries(t){var e;const s=(e=t.instrument)!=null?e:this.chartModel.mainCandleSeries.instrument,r=this.chartModel.setSecondaryCandleSeries(t.candles,s);if(this.updatePriceIncrementsIfNeeded(s),r)return r}setAllSeries(t,e=[]){var s;const r=(s=t.instrument)!=null?s:this.chartModel.mainCandleSeries.instrument;this.updatePriceIncrementsIfNeeded(r),e.forEach(i=>{var a;const o=(a=i.instrument)!=null?a:this.chartModel.mainCandleSeries.instrument;this.updatePriceIncrementsIfNeeded(o)}),this.chartModel.setAllSeries(t,e)}toXFromCandleIndex(t){return this.chartModel.toX(t)}toXFromTimestamp(t){return this.chartModel.candleFromTimestamp(t).xCenter(this.chartModel.scale)}toY(t){return this.chartModel.toY(t)}updateAllSeries(t,e=[]){this.chartModel.updateAllSeries(t,e),this.canvasModel.fireDraw()}removeDataFrom(t){this.chartModel.removeDataFrom(t)}removeSecondarySeries(t){this.chartModel.removeSecondaryCandleSeries(t)}prependCandles(t,e){this.chartModel.prependCandles(t,e)}addLastCandle(t,e){this.chartModel.addLastCandle(t,e)}removeCandleByIdx(t,e){this.chartModel.removeCandleByIdx(t,e)}updateLastCandle(t,e){this.chartModel.updateLastCandle(t,e)}updateCandles(t,e){this.chartModel.updateCandles(t,e)}setOffsets(t){this.chartModel.setOffsets(t)}getDataSeriesDrawer(t){return this._dataSeriesDrawers[t]}registerDataSeriesTypeDrawer(t,e){this._dataSeriesDrawers[t]=e}updatePriceIncrementsIfNeeded(t){(!t.priceIncrements||!Kt.validatePriceIncrementsOrPrecisions(t.priceIncrements))&&(t.priceIncrements=[Kt.autoDetectIncrementOfValueRange(this.scale.yEnd-this.scale.yStart)])}observeOffsetsChanged(){return this.chartModel.offsetsChanged}observeChartTypeChanged(){return this.chartModel.chartTypeChanged}observeCandlesChanged(){return this.chartModel.observeCandlesChanged()}observeCandlesUpdated(){return this.chartModel.candlesUpdatedSubject}observeCandlesPrepended(){return this.chartModel.candlesPrependSubject}}class rh extends ue{constructor(t,e,s,r,i,a,o,l,c){super(e,s,r,i,a,o,l,c),this.baseModel=t}set visualPoints(t){super.visualPoints=t,this.baseModel.mainVisualPoints=super.visualPoints}get visualPoints(){return super.visualPoints}set dataPoints(t){super.dataPoints=t,this.baseModel.mainDataPoints=super.dataPoints}get dataPoints(){return super.dataPoints}recalculateMeanCandleWidth(t){super.recalculateMeanCandleWidth(t),this.baseModel.meanDataWidth=this.meanCandleWidth}}const ih=n=>t=>{if(t.length!==0){const e=t.slice(Math.max(t.length-n.state.defaultViewportItems,0)),s=e[0],r=e[e.length-1];n.setXScale(s.startUnit,r.startUnit+r.width+n.offsets.right),n.doAutoScale(!0),n.recalculateZoomXYRatio(),n.fireChanged()}},ah=(n,t)=>(e,s=null)=>{const[r,i]=e,a=t.candleFromTimestamp(r).startUnit,o=t.candleFromTimestamp(i).startUnit,l=s===null?0:t.mainCandleSeries.meanCandleWidth*2,c=s?a-l:a+l,h=s?o+l:o-l;n.setXScale(c,h)};var oh=Object.defineProperty,lh=Object.defineProperties,ch=Object.getOwnPropertyDescriptors,Si=Object.getOwnPropertySymbols,hh=Object.prototype.hasOwnProperty,dh=Object.prototype.propertyIsEnumerable,xi=(n,t,e)=>t in n?oh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ze=(n,t)=>{for(var e in t||(t={}))hh.call(t,e)&&xi(n,e,t[e]);if(Si)for(var e of Si(t))dh.call(t,e)&&xi(n,e,t[e]);return n},is=(n,t)=>lh(n,ch(t));class uh{constructor(t){this.config=t,this.usedChartColors={},this.symbolsToColorKeys={},this.secondaryChartColorsPool=this.createColorPool(this.config.colors.secondaryChartTheme),this.usedChartColors=Object.keys(this.secondaryChartColorsPool).reduce((e,s)=>is(ze({},e),{[s]:0}),{})}createColorPool(t){return t.reduce((e,s,r)=>(e[`color${r}`]=is(ze({},je(this.config.colors)),{lineTheme:ze({},s.lineTheme),areaTheme:ze({},s.areaTheme)}),e),{})}takeColorFromPool(t){let e=Number.MAX_SAFE_INTEGER,s="";for(const[r,i]of Object.entries(this.usedChartColors))i<e&&(e=i,s=r);return this.usedChartColors[s]=this.usedChartColors[s]+1,this.symbolsToColorKeys[t]=s,this.secondaryChartColorsPool[s]}addColorToPool(t){const e=this.symbolsToColorKeys[t];this.usedChartColors[e]&&(this.usedChartColors[e]=this.usedChartColors[e]-1)}updateColorConfig(t,e){var s,r;const i=this.secondaryChartColorsPool[this.usedChartColors[t]];if(i){const a=e;this.secondaryChartColorsPool[this.usedChartColors[t]]=is(ze({},e),{lineTheme:Object.assign(i.lineTheme,(s=a.lineTheme)!=null?s:{}),areaTheme:Object.assign(i.areaTheme,(r=a.areaTheme)!=null?r:{})})}}}var fh=Object.defineProperty,Pi=Object.getOwnPropertySymbols,gh=Object.prototype.hasOwnProperty,vh=Object.prototype.propertyIsEnumerable,Ti=(n,t,e)=>t in n?fh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,gn=(n,t)=>{for(var e in t||(t={}))gh.call(t,e)&&Ti(n,e,t[e]);if(Pi)for(var e of Pi(t))vh.call(t,e)&&Ti(n,e,t[e]);return n};class mh extends tt{constructor(t,e,s,r,i,a,o,l,c,h){super(),this.chartBaseModel=t,this.paneManager=e,this.bus=s,this.canvasModel=r,this.config=i,this.scale=a,this.formatterFactory=o,this.mainCanvasParent=l,this.canvasBoundsContainer=c,this.chartResizeHandler=h,this.prevChartWidth=0,this.prevYWidth=0,this.candleSeries=[],this.nextCandleTimeStampSubject=new V,this.chartTypeChanged=new V,this.mainInstrumentChangedSubject=new V,this.scaleInversedSubject=new V,this.offsetsChanged=new V,this.candlesTransformersByChartType={},this.lastCandleLabelsByChartType={},this.candleWidthByChartType={},this.lastTimeFrame=[0,0],this.FAKE_CANDLES_DEFAULT=100,this.toY=p=>this.mainCandleSeries.view.toY(p),this.chartTypeChanged.next(this.config.components.chart.type),this.secondaryChartColors=new uh(this.config);const v=new rh(this.chartBaseModel,this.paneManager.panes[ht].mainExtent,this.paneManager.hitTestController.getNewDataSeriesHitTestId(),this.bus,this.scale,new nh,this.candlesTransformersByChartType,this.candleWidthByChartType,gn({},this.config.colors));v.config.type=this.config.components.chart.type,this.candleSeries.push(v),a.addXConstraint((p,C)=>oc(C,this.mainCandleSeries.visualPoints,this.config.components.chart.minCandlesOffset,a.getBounds())),this.basicScaleViewportTransformer=ih(a),this.timeFrameViewportTransformer=ah(a,this),this.pane=this.paneManager.panes[ht]}get mainCandleSeries(){return this.candleSeries[0]}get secondaryCandleSeries(){return this.candleSeries.filter(t=>t!==this.mainCandleSeries)}get candlesUpdatedSubject(){return this.chartBaseModel.dataUpdatedSubject}get candlesSetSubject(){return this.chartBaseModel.dataSetSubject}get candlesRemovedSubject(){return this.chartBaseModel.dataRemovedSubject}get candlesPrependSubject(){return this.chartBaseModel.dataPrependSubject}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasBoundsContainer.observeBoundsChanged(Y.PANE_UUID(ht)).pipe(Gt(Cr)).subscribe(t=>{this.handleChartResize(t)}))}handleChartResize(t){if(t.width>De.width&&t.height>De.height){const e=this.getEffectiveChartWidth(),s=this.getEffectiveYAxisWidth();if(this.prevChartWidth===0){this.scale.isViewportValid()?this.scale.recalculateZoom():this.doBasicScale(),this.prevChartWidth=e,this.prevYWidth=s;return}if(s!==this.prevYWidth){if(this.config.scale.keepZoomXOnYAxisChange){const i=re(s-this.prevYWidth,this.scale.zoomX);this.scale.setXScale(this.scale.xStart,this.scale.xEnd-i)}else this.scale.recalculateZoomX();this.prevYWidth=s,this.prevChartWidth=e;return}const r=re(e-this.prevChartWidth,this.scale.zoomX);this.scale.setXScale(this.scale.xStart-r,this.scale.xEnd),this.scale.recalculateZoomY(),this.prevYWidth=s,this.prevChartWidth=e}}setMainCandleSeries(t,e){this.mainCandleSeries.instrument=e,this.setAllSeries({candles:t,instrument:e},this.getSecondarySeries().map(s=>{const r=s.dataPoints;return Ci(r),{candles:r,instrument:s.instrument}}))}setSecondaryCandleSeries(t,e=this.mainCandleSeries.instrument,s=!0){const r=vn(t.map(fn)),i=this.reindexCandlesBasedOnSeries(this.mainCandleSeries.dataPoints,r),a=this.secondarySeriesAdjustments(this.mainCandleSeries.dataPoints,i),l=this.secondaryCandleSeries.some(c=>c.instrument.symbol===e.symbol)?this.secondaryCandleSeries.find(c=>c.instrument.symbol===e.symbol):this.createSecondaryCandleSeriesModel(e);if(l)return l.dataPoints=a,s&&(this.scale.doAutoScale(),l.recalculateVisualPoints(),this.candlesSetSubject.next(),this.canvasModel.fireDraw()),l}setAllSeries(t,e=[]){var s;this.mainCandleSeries.instrument=(s=t.instrument)!=null?s:this.mainCandleSeries.instrument,t.instrument&&this.mainInstrumentChangedSubject.next(t.instrument),this.rememberCurrentTimeframe();const r=vn(t.candles.map(fn));this.mainCandleSeries.clearData(),rs(r),this.mainCandleSeries.dataPoints=r,this.secondaryCandleSeries.filter(i=>e.filter(a=>{var o;return((o=a.instrument)==null?void 0:o.symbol)===i.instrument.symbol}).length===0).forEach(i=>this.removeSecondaryCandleSeries(i)),e.map(i=>this.setSecondaryCandleSeries(i.candles,i.instrument,!1)),this.candleSeries.forEach(i=>{i.recalculateDataViewportIndexes(),i.recalculateVisualPoints()}),this.chartBaseModel.recalculatePeriod(),this.autoScaleOnCandles(),this.scale.doAutoScale(),this.candlesSetSubject.next(),this.canvasModel.fireDraw()}autoScaleOnCandles(){this.scale.state.autoScaleOnCandles&&(this.doBasicScale(),this.scale.autoScale(!0))}doBasicScale(){this.basicScaleViewportTransformer(this.mainCandleSeries.visualPoints),this.bus.fireDraw()}doPreviousTimeFrameScale(t=null){this.timeFrameViewportTransformer(this.lastTimeFrame,t),this.scale.state.autoScaleOnCandles&&this.scale.doAutoScale(!0),this.bus.fireDraw()}rememberCurrentTimeframe(){this.mainCandleSeries.visualPoints.length!==0&&(this.lastTimeFrame=[this.candleFromX(this.scale.toX(this.scale.xStart),!0).timestamp,this.candleFromX(this.scale.toX(this.scale.xEnd),!0).timestamp])}updateAllSeries(t,e=[]){t=gn({},t),t.instrument||(t.instrument=this.mainCandleSeries.instrument);const s=[t,...e];if(!this.candleSeries.every(l=>s.find(c=>{var h;return((h=c.instrument)==null?void 0:h.symbol)===l.instrument.symbol}))||e.length!==this.secondaryCandleSeries.length){console.error("All series update failed. Instruments for series are different.");return}const r=vn(t.candles.map(fn)),i=_i(this.mainCandleSeries.dataPoints,r),a=i.candles;rs(a),this.mainCandleSeries.dataPoints=a,e.map(l=>{var c,h,v,p;const C=vn(l.candles.map(fn)),O=_i((p=(v=this.findSecondarySeriesBySymbol((h=(c=l.instrument)==null?void 0:c.symbol)!=null?h:""))==null?void 0:v.dataPoints)!=null?p:[],C).candles;return this.setSecondaryCandleSeries(O,l.instrument,!1)}),this.candleSeries.forEach(l=>{l.recalculateVisualPoints(),l.recalculateDataViewportIndexes()});const o=this.chartBaseModel.mainVisualPoints.slice(0,i.prepended).reduce((l,c)=>l+c.width,0);this.scale.moveXStart(this.scale.xStart+o),this.candlesPrependSubject.next({prependedCandlesWidth:o,preparedCandles:r}),this.chartBaseModel.recalculatePeriod(),this.candlesUpdatedSubject.next(),this.bus.fireDraw()}removeDataFrom(t){Object.values(this.paneManager.panes).forEach(e=>{e.dataSeries.forEach(s=>{const r=de(s.dataPoints,t,a=>a.timestamp),i=r.exact?r.index:r.index+1;s.dataPoints=s.dataPoints.slice(0,i)})}),this.candlesRemovedSubject.next(),this.candlesUpdatedSubject.next(),this.canvasModel.fireDraw()}createSecondaryCandleSeriesModel(t){const e=gn(gn({},this.config.colors),this.secondaryChartColors.takeColorFromPool(t.symbol));return this.createCandleSeriesModel(t,e)}createCandleSeriesModel(t,e){const s=new ue(this.paneManager.panes[ht].mainExtent,this.paneManager.hitTestController.getNewDataSeriesHitTestId(),this.bus,this.scale,t,this.candlesTransformersByChartType,this.candleWidthByChartType,e);return s.config.type="line",this.candleSeries.push(s),s}removeSecondaryCandleSeries(t){return this.secondaryChartColors.addColorToPool(t.instrument.symbol),this.candleSeries=this.candleSeries.filter(e=>e!==t),t.deactivate(),this.paneManager.panes[ht].removeDataSeries(t),this.scale.doAutoScale(),t.colors}secondarySeriesAdjustments(t,e){const s=[];return t.forEach(r=>{var i;const a=(i=r.idx)!=null?i:0,o=e[a];if(o)s.push(o);else{let l=Mi(e,a,-1);if(l||(l=Mi(e,a,1)),l){const c=gl(l,a,!0);s.push(c)}}}),s}updateSecondaryCandleSeriesConfig(t,e,s){const r=$t(t,qe().colors);this.secondaryChartColors.updateColorConfig(e,r);const i=this.findSecondarySeriesBySymbol(e);i&&(i.config.type=s,i.updateCandleSeriesColors(r)),this.bus.fireDraw([this.canvasModel.canvasId])}setAutoScale(t){this.scale.autoScale(t)}getEffectiveYAxisWidth(){return this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(ht)).width}getEffectiveChartWidth(){return this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ht)).width}getEffectiveChartHeight(){return this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ht)).height}setOffsets(t){this.scale.updateOffsets(t);const e=this.getCandlesCountWithRightOffset(),s=this.mainCandleSeries.visualPoints;this.hasCandles()&&e>=s.length&&this.scale.setXScale(this.scale.xStart,this.candleFromIdx(e).startUnit),this.offsetsChanged.next(),this.bus.fireDraw()}getOffsets(){return this.scale.getOffsets()}fromY(t){return this.scale.fromY(t)}priceFromY(t,e){return(e!=null?e:this.mainCandleSeries).view.priceFromY(t)}fromX(t){return this.scale.fromX(t)}toX(t){const e=this.candleFromIdx(t);return this.scale.toX(e.centerUnit)}candleFromX(t,e=!1,s=this.mainCandleSeries){const r=this.scale.fromX(t);return this.candleFromUnit(r,e,s)}candleFromUnit(t,e=!1,s=this.mainCandleSeries){var r,i;const a=de(s.visualPoints,t,v=>v.startUnit),o=s.visualPoints,l=this.getLastVisualCandle();o[a.index]!==void 0&&(t<0||l&&t>l.startUnit+l.width)&&(a.index+=pe((t-o[a.index].centerUnit)/this.mainCandleSeries.meanCandleWidth));const c=a.index,h=Math.max(Math.min(o.length-1,c),0);return(c<0||c>=o.length)&&e?We(this.mainCandleSeries.dataPoints,c,this.chartBaseModel.period):(i=(r=o[h])==null?void 0:r.candle)!=null?i:We(this.mainCandleSeries.dataPoints,h,this.chartBaseModel.period)}candleFromTimestamp(t,e=!0,s=this.mainCandleSeries){const r=s.dataPoints;return this.chartBaseModel.dataFromTimestamp(t,e,r)}candleFromIdx(t){return this.chartBaseModel.dataFromIdx(t)}isReady(){return this.canvasModel.isReady()&&this.hasCandles()}registerCandlesTransformer(t,e){this.candlesTransformersByChartType[t]=e}registerCandlesWidthCalculator(t,e){this.candleWidthByChartType[t]=e}registerLastCandleLabelHandler(t,e){this.lastCandleLabelsByChartType[t]=e}hasCandles(){return this.mainCandleSeries.visualPoints.length!==0}getVisualCandle(t){var e,s,r;const i=t-((r=(s=(e=this.mainCandleSeries.visualPoints[0])==null?void 0:e.candle)==null?void 0:s.idx)!=null?r:0);return this.mainCandleSeries.visualPoints[i]}getFirstIdx(){return this.mainCandleSeries.dataIdxStart}getLastIdx(){return this.mainCandleSeries.dataIdxEnd}getFirstTimestamp(t=!0){return t?this.candleFromIdx(this.getFirstIdx()).candle.timestamp:this.candleFromUnit(this.scale.xStart,!0).timestamp}getLastTimestamp(t=!0){return t?this.candleFromIdx(this.getLastIdx()).candle.timestamp:this.candleFromUnit(this.scale.xEnd,!0).timestamp}setTimestampRange(t,e){const s=this.candleFromTimestamp(t).startUnit,r=this.candleFromTimestamp(e),i=r.startUnit+r.width;return this.scale.setXScale(s,i)}getLastCandle(){const t=this.mainCandleSeries.dataPoints;return Ft(t)}getLastVisualCandle(){const t=this.mainCandleSeries.visualPoints;return Ft(t)}getMaxCandlesFitLength(){return gt(this.getEffectiveChartWidth()/this.config.components.chart.minWidth)}getSecondarySeries(){return this.secondaryCandleSeries}isSeriesInstrument(t,e){return t.instrument.symbol===e}findSeriesBySymbol(t){return this.candleSeries.filter(e=>this.isSeriesInstrument(e,t))}findSecondarySeriesBySymbol(t){return this.secondaryCandleSeries.find(e=>this.isSeriesInstrument(e,t))}reindexCandlesBasedOnSeries(t,e){return e.reduce((s,r)=>{const i=r.timestamp,a=ke(i,!1,t,this.chartBaseModel.period);return a.index>=0&&a.index<t.length&&(r.idx=a.index,s[a.index]=r),s},[])}getPeriod(){return this.chartBaseModel.period}isCandleInViewport(t){return this.getFirstIdx()<=t&&t<=this.getLastIdx()}updateCandles(t,e=this.mainCandleSeries.instrument.symbol){const s=this.mainCandleSeries.instrument.symbol===e,r=this.findSeriesBySymbol(e);if(r.length===0){console.warn("updateCandles failed. Can't find series",e);return}r.forEach(i=>{const a=i.dataPoints;let o=!1,l=!1,c;t.forEach(h=>{var v;if(!h)return;const p=ke(h.timestamp,!0,a,this.getPeriod()),C=Math.min(p.index,a.length);o=o||C===a.length,a[C]=h,h.idx=C,i.dataPoints=a,i.recalculateDataViewportIndexes(),l=l||this.isCandleInViewport(C);const O=C>=a.length-1,B=c&&h.timestamp<c.timestamp;if(O&&!B&&(c=h),o&&c&&s&&l){const H=(v=this.candleWidthByChartType[this.config.components.chart.type])!=null?v:Vr;this.scale.moveXStart(this.scale.xStart+H(c))}}),c&&i.updateCurrentPrice(c.close),l&&c&&t.length===1?this.canvasModel.fireDraw():i.recalculateVisualPoints()}),this.scale.doAutoScale(),this.candlesUpdatedSubject.next()}observeCandlesChanged(){return Lt(this.candlesSetSubject,this.candlesUpdatedSubject)}getCandles(){return this.mainCandleSeries.dataPoints}getCandlesWithFake(t=0,e){let s=this.getCandles().slice();const r=this.getCandlesCount(),i=e!=null?e:r+this.FAKE_CANDLES_DEFAULT;s=s.slice(Math.max(0,t),Math.min(r,i));const a=[],o=[];for(let c=r;c<i;c++)a.push(We(this.mainCandleSeries.dataPoints,c,this.getPeriod()));const l=Math.min(0,i);for(let c=t;c<l;c++)o.push(We(this.mainCandleSeries.dataPoints,c,this.getPeriod()));return[...o,...s,...a]}getCandlesCount(){return this.mainCandleSeries.dataPoints.length}getCandlesCountWithRightOffset(){return this.getCandlesCount()+this.getOffsets().right}clearData(){this.candleSeries.forEach(t=>t.clearData())}prependCandles(t,e){const s=t.slice(),r=[];return e.forEach(i=>{const o=ke(i.timestamp,!1,t).index;o<0?r.push(i):t[o].timestamp===i.timestamp?s[o]=i:console.warn(`Couldn't update candle with timestamp ${i.timestamp}`)}),{prepended:r.length,candles:[...r,...s]}}addLastCandle(t,e=this.mainCandleSeries.instrument.symbol){this.updateCandles([t],e)}updateLastCandle(t,e=this.mainCandleSeries.instrument.symbol){this.updateCandles([t],e)}removeCandleByIdx(t,e=this.mainCandleSeries.instrument.symbol){const s=this.findSeriesBySymbol(e);if(s.length===0){console.warn("removeCandle by id failed. Can't find series",e);return}s.forEach(r=>{r.dataPoints=r.dataPoints.slice(0,t).concat(r.dataPoints.slice(t+1)),rs(r.dataPoints),r.recalculateVisualPoints()}),this.candlesRemovedSubject.next(),this.candlesUpdatedSubject.next(),this.canvasModel.fireDraw()}}const vn=n=>n.slice().sort((t,e)=>t.timestamp===e.timestamp?0:t.timestamp>e.timestamp?1:-1),Mi=(n,t,e)=>{if(t>=n.length)return n[n.length-1];for(let s=t;s<n.length&&s>=0;s+=e){const r=n[s];if(r)return r}},_i=(n,t)=>{const e=n.slice(),s=[],r=[];return t.forEach(i=>{const o=ke(i.timestamp,!0,n).index;o<0?s.push(i):o>=n.length?r.push(i):n[o].timestamp===i.timestamp?e[o]=i:console.warn(`Couldn't update candle with timestamp ${i.timestamp}`)}),{prepended:s.length,appended:r.length,candles:[...s,...e,...r]}};class Xe{constructor(t){this.canvasModel=t}draw(){this.canvasModel.clear()}getCanvasIds(){return[this.canvasModel.canvasId]}}class as{constructor(t){this.drawers=t!=null?t:new Map}draw(){this.drawers.forEach(t=>t.draw())}addDrawer(t,e){const s=e!=null?e:"drawer"+this.drawers.size;this.drawers.set(s,t)}drawLastBar(){this.drawers.forEach(t=>t.drawLastBar&&t.drawLastBar())}removeDrawer(t){const e=_r(this.drawers,t);e?this.drawers.delete(e):console.warn("Couldn't find drawer type")}removeDrawerByName(t){this.drawers.delete(t)}getDrawer(t){return this.drawers.get(t)}moveTop(t){const e=_r(this.drawers,t);e?this.moveTopByName(e):console.warn("Couldn't find drawer type")}moveTopByName(t){if(this.drawers.size===1)return;const e=this.drawers.get(t);this.drawers.delete(t),e&&this.drawers.set(t,e)}getSize(){return this.drawers.size}getAll(){return this.drawers}getCanvasIds(){const t=It(Array.from(this.drawers).map(([,s])=>s.getCanvasIds())),e=new Set([...t]);return Array.from(e)}}class ph{constructor(t,e,s){this.model=t,this.crossToolCanvasModel=e,this.crossToolTypeDrawers=s}draw(){const t=this.crossToolTypeDrawers[this.model.type];t?this.model.currentHover&&t.draw(this.crossToolCanvasModel.ctx,this.model.currentHover):console.error(`No cross tool drawer type registered for drawer type ${this.model.type}`)}getCanvasIds(){return[this.crossToolCanvasModel.canvasId]}}class bh extends tt{constructor(t,e,s,r){super(),this.config=t,this.crossToolCanvasModel=e,this.crossEventProducer=s,this.hoverProducer=r,this.currentHoverSubject=new ee(null),this.type="cross-and-labels",this.type=t.type}get currentHover(){return this.currentHoverSubject.getValue()}set currentHover(t){this.currentHoverSubject.next(t)}setType(t){this.type=t}doActivate(){super.doActivate(),this.addRxSubscription(this.hoverProducer.hoverSubject.subscribe(t=>{this.crossEventProducer.crossSubject.getValue()!==null&&t!==null?this.updateHover(t):this.currentHover=null,this.fireDraw()}))}fireDraw(){this.type!=="none"&&this.crossToolCanvasModel.fireDraw()}updateHover(t,e=this.config.magnetTarget){if(this.currentHover===null?this.currentHover={x:t.x,y:0,time:t.timeFormatted,paneId:t.paneId}:(this.currentHover.x=t.x,this.currentHover.time=t.timeFormatted),t.candleHover&&t.paneId===ht)switch(e){case"O":this.currentHover.y=t.candleHover.openY;break;case"C":this.currentHover.y=t.candleHover.closeY;break;case"H":this.currentHover.y=t.candleHover.highY;break;case"L":this.currentHover.y=t.candleHover.lowY;break;case"OHLC":this.currentHover.y=t.candleHover.closestOHLCY;break;case"none":this.currentHover.y=t.y;break}else this.currentHover.y=t.y;this.currentHoverSubject.next(this.currentHover)}}const zt=4;function Ch(n,t,e,s,r,i,a,o=!1){var l,c,h,v,p,C,O;const B=i.align,H=(l=r.textFont)!=null?l:be(i),k=r.bgColor,z=(c=r.textColor)!=null?c:He(k,a.labelTextColor,a.labelInvertedTextColor),Z=(h=r.paddingTop)!=null?h:zt,J=(v=r.paddingBottom)!=null?v:zt,K=(p=r.paddingEnd)!=null?p:zt,U=pe(ne(H,n)/2),Q=s-U-Z,ot=s+U+J-Q;if((s<t.y+ot/2||s>t.y+t.height-ot/2)&&!o)return;n.save(),n.fillStyle=k,n.strokeStyle=k;const nt=pe(t.width/6),rt=B==="right"?t.x:t.x+t.width,dt=B==="right"?rt+nt:rt-nt,ct=i.labelBoxMargin.end,St=ct-K,ut=t.width-nt-St;wc(n,dt,Q,rt,Q+pe(ot/2),dt,Q+ot,ut,(O=(C=i.typeConfig.badge)==null?void 0:C.rounded)!=null?O:!1,B),n.fillStyle=z,n.font=H;const vt=B==="right"?t.x+t.width-Yt(e,n,H)-ct:t.x+ct;n.fillText(e,vt,s+U-1),n.restore()}function yh(n,t,e,s,r,i,a,o=!1){var l,c,h,v,p,C,O,B,H,k,z;const Z=i.align,J=(l=r.textFont)!=null?l:be(i),K=r.bgColor,U=(c=r.textColor)!=null?c:He(K,a.labelTextColor,a.labelInvertedTextColor),Q=(h=i.typeConfig.rectangle)==null?void 0:h.paddings,at=(p=(v=r.paddingTop)!=null?v:Q==null?void 0:Q.top)!=null?p:zt,ot=(O=(C=r.paddingBottom)!=null?C:Q==null?void 0:Q.bottom)!=null?O:zt,nt=(H=(B=r.paddingEnd)!=null?B:Q==null?void 0:Q.end)!=null?H:zt,rt=r.paddingStart,dt=ne(J,n),ct=s-dt/2-at,ut=s+dt/2+ot-ct,vt=(z=r.rounded)!=null?z:(k=i.typeConfig.rectangle)==null?void 0:k.rounded;if((s<t.y+ut/2||s>t.y+t.height-ut/2)&&!o)return;n.save(),n.fillStyle=K,n.strokeStyle=K;const pt=i.labelBoxMargin.end;n.font=J;const Ht=Yt(e,n,J),Nt=pt-nt,kt=rt!==void 0?Ht+rt+nt:t.width-Nt,ve=Z==="right"?t.x+t.width-Nt-kt:t.x+Nt,Pn=Z==="right"?t.x+t.width-Ht-pt:pt;vt?ii(n,ve,ct,kt,ut,4,!0):n.fillRect(ve,ct,kt,ut),n.fillStyle=U,n.fillText(e,Pn,s+dt/2-1),n.restore()}function wh(n,t,e,s,r,i,a,o=!1,l){var c,h,v,p,C,O,B,H,k;const z=i.align,Z=(c=r.textFont)!=null?c:be(i),J=r.bgColor,K=(h=r.textColor)!=null?h:He(J,a.labelTextColor,a.labelInvertedTextColor),U=(v=i.typeConfig.rectangle)==null?void 0:v.paddings,Q=(C=(p=r.paddingTop)!=null?p:U==null?void 0:U.top)!=null?C:zt,at=(B=(O=r.paddingBottom)!=null?O:U==null?void 0:U.bottom)!=null?B:zt,ot=(k=(H=r.paddingEnd)!=null?H:U==null?void 0:U.end)!=null?k:zt,nt=r.paddingStart,rt=ne(Z,n),dt=s-rt/2-Q,St=s+rt/2+at-dt;if((s<t.y+St/2||s>t.y+t.height-St/2)&&!o)return;n.save(),n.fillStyle=J,n.strokeStyle=J;const ut=i.labelBoxMargin.end;n.font=Z;const vt=Yt(e,n,Z),pt=ut-ot,Ht=nt!==void 0?vt+nt+ot:t.width-pt,Nt=z==="right"?t.x+t.width-pt-Ht:t.x+pt,kt=z==="right"?t.x+t.width-vt-ut:ut;l&&on(l,n,Nt,dt,Ht,St),n.fillStyle=K,n.fillText(e,kt,s+rt/2-1),n.restore()}function Sh(n,t,e=zt){return ne(n,t)/2+e}const xh="badge",Ai=4,Di={badge:Ch,rectangle:yh,plain:wh};function Ei(n,t,e,s,r,i,a,o){var l,c,h,v,p;const C=r.y,O=r.labelText,B=(l=r.mode)!=null?l:"label",H=(c=r.labelType)!=null?c:xh,k=r.description,z=(h=r.textFont)!=null?h:be(a),Z=r.bgColor,J=(v=r.lineColor)!=null?v:Z,K=Yt(k!=null?k:"",n,z)+8,U=gt(r.y),Q=ne(z,n),at=C-Q/2,nt=C+Q/2-at;n.save(),n.fillStyle=Z,n.strokeStyle=J;const rt=i.getBounds(Y.PANE_UUID(ht)),dt=Di[H],ct=a.labels.descriptions,St=Ph(e,U,nt),ut=()=>ct&&Th(t,n,e,s,r,a.align,a);let vt,pt;const Ht=2;a.align==="right"?(vt=rt.x,pt=ct?rt.x+rt.width-K:rt.x+rt.width+Ht):(vt=ct?rt.x+K:rt.x-Ht,pt=rt.x+rt.width);const Nt=(p=r.lineY)!=null?p:r.y,kt=()=>St&&ye(n,()=>Sc(n,vt,Nt,pt,Nt,1)),ve=()=>dt(n,e,O,C,r,a,o,!1,t);switch(B){case"line":kt(),ut();break;case"line-label":kt(),ut(),ve();break;case"label":ut(),ve();break;case"none":break}n.restore()}const Ph=(n,t,e)=>t>n.y+e/2&&t<n.y+n.height-e/2;function Th(n,t,e,s,r,i="right",a){var o,l,c;const h=r.description;if(!h||h.length===0)return;const v=r.y,p=be(a),C=Yt(h,t,p),O=ne(p,t),B=(o=r.paddingTop)!=null?o:Ai,H=(l=r.paddingBottom)!=null?l:Ai,k=v-O/2-B,Z=v+O/2+H-k;if(v<e.y+Z/2||v>e.y+e.height-Z/2)return;t.save();const J=C+5,K=4,U=C+K*2,Q=s.x+s.width,at=i==="right"?Q-U:s.x+K;on(n,t,at,k,J,Z,.8),t.fillStyle=(c=r.descColor)!=null?c:r.bgColor,t.font=p;const ot=i==="right"?Q-C-K*2:s.x+K*2;t.fillText(h,ot,v+O/2-1),t.restore()}class Oi{constructor(t,e,s,r=()=>!0,i){this.config=t,this.canvasBoundsContainer=e,this.paneManager=s,this.crossDrawPredicate=r,this.noLines=i}draw(t,e){this.crossDrawPredicate()&&ye(t,()=>this.drawCrossTool(t,e))}drawCrossTool(t,e){var s,r,i,a,o;const l=this.canvasBoundsContainer.getBounds(Y.ALL_PANES),c=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES,{extensionY:1e-4}),h=(s=this.config.components.xAxis.padding.top)!=null?s:0,v=(i=this.config.components.yAxis.typeConfig[(r=this.config.components.crossTool.yLabel.type)!=null?r:"badge"])==null?void 0:i.paddings,p=(a=v==null?void 0:v.start)!=null?a:0,C=(o=this.paneManager.panes[e.paneId])==null?void 0:o.ht;if(c(e.x,l.y)){const O={start:[l.x,e.y],end:[l.x+l.width+p,e.y]},B={start:[e.x,l.y],end:[e.x,l.y+l.height+h]},H=C==null?void 0:C(e.x,e.y);this.noLines||(t.strokeStyle=this.config.colors.crossTool.lineColor,t.setLineDash(this.config.components.crossTool.lineDash),t.beginPath(),H&&(t.moveTo(...O.start),t.lineTo(...O.end)),t.moveTo(...B.start),t.lineTo(...B.end),t.stroke()),H&&this.drawYLabel(t,e),this.drawXLabel(t,e)}}drawXLabel(t,e){var s,r,i,a,o;const l=this.config.components.crossTool.xLabel.padding,c=this.config.components.crossTool.xLabel.margin,h=this.config.colors.crossTool;if(this.config.components.xAxis.visible){t.font=this.config.components.xAxis.fontSize+"px "+this.config.components.xAxis.fontFamily;const v=e.x,p=e.time,C=t.measureText(p).width,O=this.config.components.xAxis.fontSize,B=this.canvasBoundsContainer.getBounds(Y.X_AXIS);t.save(),t.fillStyle=h.labelBoxColor;const H=(s=l==null?void 0:l.left)!=null?s:0,k=(r=l==null?void 0:l.right)!=null?r:0,z=(i=l==null?void 0:l.top)!=null?i:0,Z=(a=l==null?void 0:l.bottom)!=null?a:0,J=(o=c==null?void 0:c.top)!=null?o:0,K=C+H+k,U=O+z+Z,Q=Math.max(v-K/2,0),at=B.y+J;ii(t,Q,at,K,U),t.fillStyle=h.labelTextColor;const ot=Math.max(v-C/2,H),nt=B.y+J+O+z-1;t.fillText(p,ot,nt),t.restore()}}drawYLabel(t,e){const s=this.config.components.crossTool.yLabel.padding,r=this.config.colors.crossTool;if(this.config.components.yAxis.visible){const i=this.paneManager.panes[e.paneId],a=e.y;if(!i)return;for(const o of i.yExtentComponents){const l=o.regularValueFromY(a),c=o.valueFormatter(l),h=this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(i.uuid,o.idx)),v=Di[this.config.components.crossTool.yLabel.type];v(t,h,c,a,{textColor:r.labelTextColor,bgColor:r.labelBoxColor,paddingBottom:s==null?void 0:s.bottom,paddingEnd:s==null?void 0:s.end,paddingTop:s==null?void 0:s.top},o.yAxis.state,this.config.colors.yAxis,!0)}}}}class Mh{draw(){}}class _h extends tt{constructor(t,e,s,r,i,a,o){super(),this.config=t,this.crossToolCanvasModel=e,this.canvasBoundsContainer=s,this.drawingManager=r,this.paneManager=i,this.crossToolTypeDrawers={},this.model=new bh(t.components.crossTool,this.crossToolCanvasModel,a,o),this.addChildEntity(this.model);const l=new Xe(this.crossToolCanvasModel);this.registerDefaultDrawerTypes();const c=new ph(this.model,this.crossToolCanvasModel,this.crossToolTypeDrawers),h=new as;h.addDrawer(l,"CLEAR_CANVAS"),h.addDrawer(c,"CROSS_TOOL_DRAWER"),this.drawingManager.addDrawer(h,"CROSS_TOOL")}registerDefaultDrawerTypes(){this.registerCrossToolTypeDrawer("cross-and-labels",new Oi(this.config,this.canvasBoundsContainer,this.paneManager,()=>!0)),this.registerCrossToolTypeDrawer("just-labels",new Oi(this.config,this.canvasBoundsContainer,this.paneManager,()=>!0,!0)),this.registerCrossToolTypeDrawer("none",new Mh)}setVisible(t){this.model.setType(t?"cross-and-labels":"none")}setType(t){this.model.setType(t)}observeCrossToolChanged(){return this.model.currentHoverSubject}setMagnetTarget(t){this.config.components.crossTool.magnetTarget=t}registerCrossToolTypeDrawer(t,e){this.crossToolTypeDrawers[t]=e}}class Ah{constructor(t,e){this.dynamicObjectsModel=t,this.canvasModel=e}draw(){const t=this.dynamicObjectsModel.objects;Object.entries(t).forEach(([e,s])=>{for(const r of s){const{model:i,drawer:a}=r;a.draw(this.canvasModel,i,e)}})}getCanvasIds(){return[this.canvasModel.canvasId]}}class mn{constructor(t){this.data=t,this.next=null}}class Dh{constructor(t){if(this._head=null,this._tail=null,this.length=0,this._head=t!=null?t:null,this.head!==null){let e;for(e=this.head;e.next;)e=e.next;this._tail=e}}insertAtEnd(t){const e=new mn(t);let s;if(this.head===null)this._head=e;else{for(s=this.head;s.next;)s=s.next;s.next=e}return this._tail=e,this.length++,e}insertAt(t,e){if(t>-1&&t<this.length&&this.head){let s=this.head,r=0,i=null;const a=new mn(e);if(t===this.length-1&&(this._tail=a),t===0)a.next=s,this._head=a;else{for(;r<t&&s.next;)r++,i=s,s=s.next;a.next=s,i&&(i.next=a)}return this.length++,s}else return this._head=new mn(e),this.length++,this.head}removeAt(t){if(t>-1&&t<this.length&&this.head){let e=this.head,s=null,r=0;if(t===0)this._head=e.next;else{for(;r<t&&e.next;)r++,s=e,e=e.next;s&&(s.next=e.next),t===this.length-1&&(this._tail=e)}return this.length--,e}else return null}getNodePosition(t){let e=0,s=this.head;for(;t;){if((s==null?void 0:s.data)===t.data)return e;s=s&&s.next,e++}return-1}size(){return this.length}get head(){return this._head}get tail(){return this._tail}*[Symbol.iterator](){let t=this.head;for(;t;)yield t.data,t=t.next}}class Eh extends tt{constructor(){super(),this.modelToObjectMap=new Map,this._objects=new ee({})}addObject(t,e){var s;const r=this.objects,i=(s=r[e])!=null?s:new Dh;Object.keys(r).find(a=>a===e)||(r[e]=i),i.insertAtEnd(t),this.modelToObjectMap.set(t.model,t),this.setDynamicObjects(r)}removeObject(t,e){const s=this.objects,r=s[e],i=this.modelToObjectMap.get(t);if(r&&i){const a=new mn(i),o=r.getNodePosition(a);r.removeAt(o),this.modelToObjectMap.delete(t),r.size()===0&&delete s[e],this.setDynamicObjects(s)}}bringToFront(t,e){const s=this.objects[t];if(s){const r=s.getNodePosition(e);if(r>=0&&r<s.size()){const i=s.removeAt(r);i&&s.insertAtEnd(i.data)}this.setDynamicObjects(this.objects)}}bringToBack(t,e){const s=this.objects[t];if(s){const r=s.getNodePosition(e);if(r>0&&r<=s.size()){const i=s.removeAt(r);i&&s.insertAt(0,i==null?void 0:i.data)}this.setDynamicObjects(this.objects)}}moveForward(t,e){const s=this.objects[t];if(s){const r=s.getNodePosition(e);if(r>=0&&r<s.size()){const i=s.removeAt(r);i&&s.insertAt(r+1,i.data)}this.setDynamicObjects(this.objects)}}moveBackwards(t,e){const s=this.objects[t];if(s){const r=s.getNodePosition(e);if(r>0&&r<=s.size()){const i=s.removeAt(r);i&&s.insertAt(r-1,i==null?void 0:i.data)}this.setDynamicObjects(this.objects)}}get objects(){return this._objects.getValue()}setDynamicObjects(t){this._objects.next(t)}}class Oh extends tt{constructor(t,e){super();const s=new Eh;this.model=s,this.addChildEntity(s);const r=new Ah(s,t);e.addDrawer(r,"DYNAMIC_OBJECTS")}}const Lh=()=>n=>n.toString(),Ih=(n,t)=>{var e;const s="date.get"+(t((e=n.timezone)!=null?e:"")?"":"UTC"),r={YYYY:a("FullYear"),YY:a("FullYear")+" % 100",MMM:o("shortMonths","Month"),MMMM:l(o("shortMonths","Month")),M:"1+"+a("Month"),d:a("Date"),H:a("Hours"),m:a("Minutes"),s:a("Seconds"),sss:a("Milliseconds"),EEE:o("shortDays","Day"),SSS:"this.addTwoZeros("+a("Milliseconds")+")",T:"date.getTime()"};["s","m","H","d","M"].forEach(function(h){r[h+h]="this.addZero("+r[h]+")"});const i=new RegExp(Object.keys(r).sort().reverse().join("|"),"g");function a(h){return s+h+"()"}function o(h,v){return"this."+h+"["+a(v)+"]"}function l(h){return h+".toUpperCase()"}function c(h){return"' + ("+r[h]+") + '"}return function(h){var v;const p={shortDays:Bh(n),shortMonths:Rh(n),addZero(C){return C<10?"0"+C:C},addTwoZeros(C){return(C<100?"0":"")+(C<10?"0":"")+C},tzDate:t((v=n.timezone)!=null?v:"")||function(C){return C instanceof Date?C:new Date(+C)}};return new Function("date","date=this.tzDate(date); return '"+h.replace(i,c)+"'").bind(p)}};function Bh(n){var t;return(t=n.shortDays)!=null?t:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}function Rh(n){var t;return(t=n.shortMonths)!=null?t:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}const Li=(n,t,e)=>{if(n){if(typeof n=="string")return e(n);if(Array.isArray(n)){const s=n.filter(r=>{if(r.showWhen){const i=[];return r.showWhen.periodLessThen&&i.push(()=>{var a,o;return t<((o=(a=r.showWhen)==null?void 0:a.periodLessThen)!=null?o:0)}),r.showWhen.periodMoreThen&&i.push(()=>{var a,o;return t>=((o=(a=r.showWhen)==null?void 0:a.periodMoreThen)!=null?o:0)}),i.every(a=>a())}else return!0});if(s.length>0){const r=s[0];if(r.format)return e(r.format);if(r.customFormatter)return r.customFormatter}}}return Lh()},Fh={"rhombus-small":4,rhombus:6,"rhombus-large":8},Ve=(n,t)=>`${n}_${t}`;class Yh{constructor(t,e,s,r,i,a,o){this.backgroundCanvas=t,this.canvasModel=e,this.chartModel=s,this.config=r,this.canvasBoundsContainer=i,this.model=a,this.formatterProvider=o,this.customIcons={};const l=this.config.components.events.icons;l&&(this.createCustomIcon("earnings",l.earnings),this.createCustomIcon("dividends",l.dividends),this.createCustomIcon("splits",l.splits),this.createCustomIcon("conference-calls",l.conferenceCalls))}createCustomIcon(t,e){if(e){const s=this.createIconImage(e.normal),r=this.createIconImage(e.hover);this.customIcons[Ve(t,"normal")]=s,this.customIcons[Ve(t,"hover")]=r}}createIconImage(t){var e;const r=new DOMParser().parseFromString(t,"text/html").querySelector("svg");let i=0;r&&(i=parseInt((e=r.getAttribute("height"))!=null?e:"",10));const l="data:image/svg+xml;base64,"+btoa(t),c=new Image;return c.src=l,{img:c,svgHeight:i}}draw(){if(!this.config.components.events.visible)return;const t=this.canvasBoundsContainer.getBounds(Y.EVENTS),e=this.canvasBoundsContainer.getBounds(Y.ALL_PANES),s=this.canvasModel.ctx;s.save(),this.model.events.filter(r=>this.config.components.events.eventsVisibility[r.type]).forEach(r=>{const i=this.chartModel.candleFromTimestamp(r.timestamp).xCenter(this.chartModel.scale);if(i>e.x&&i<e.x+e.width){const a=this.config.colors.events[r.type].color;s.strokeStyle=a,this.customIcons[Ve(r.type,"hover")]!==void 0?this.drawCustomSvgEvent(s,i,t,r):this.drawDefaultEvent(s,i,t,r,a),this.model.hoveredEvent.getValue()===r&&(s.beginPath(),s.moveTo(i,e.y),s.lineTo(i,t.y+t.height/2),s.stroke(),s.closePath(),this.config.components.xAxis.visible&&this.drawLabel(i,r))}}),s.restore()}drawCustomSvgEvent(t,e,s,r){const i=s.y+s.height/2,a=this.customIcons[Ve(r.type,"normal")],o=this.customIcons[Ve(r.type,"hover")];this.model.hoveredEvent.getValue()===r?t.drawImage(o.img,e-o.svgHeight/2,i-o.svgHeight/2):t.drawImage(a.img,e-a.svgHeight/2,i-a.svgHeight/2)}drawDefaultEvent(t,e,s,r,i){const a=s.y+s.height/2;t.fillStyle=i,t.lineWidth=1.5;const o=os(r);t.beginPath(),t.moveTo(e-o,a),t.lineTo(e,a-o),t.lineTo(e+o,a),t.lineTo(e,a+o),t.closePath(),this.model.hoveredEvent.getValue()===r?t.fill():t.stroke()}drawLabel(t,e){var s;const r=this.canvasModel.ctx,i=this.canvasBoundsContainer.getBounds(Y.X_AXIS),a=this.config.components.xAxis.fontFamily,o=this.config.components.xAxis.fontSize,l=(s=this.config.components.xAxis.padding.top)!=null?s:0,c=i.y+o-1+l;r.font=`${o}px ${a}`;const h=this.formatterProvider()(e.timestamp),v=r.measureText(h).width;on(this.backgroundCanvas.ctx,r,t-v/2,i.y+1,v,i.height-1),r.fillStyle=this.config.colors.events[e.type].color,r.fillText(h,t-v/2,c)}getCanvasIds(){return[this.canvasModel.canvasId]}}function os(n){return Fh[n.style]}const pn=5;class Hh{constructor(t,e,s,r,i){this.hitTestCanvasModel=t,this.chartModel=e,this.config=s,this.canvasBoundsContainer=r,this.model=i}draw(){const t=this.hitTestCanvasModel.ctx,e=this.canvasBoundsContainer.getBounds(Y.EVENTS);t.save(),this.model.events.forEach((s,r)=>{const i=this.model.events[r-1],a=i&&this.chartModel.candleFromTimestamp(i.timestamp).xCenter(this.chartModel.scale),o=this.chartModel.candleFromTimestamp(s.timestamp).xCenter(this.chartModel.scale);if(o>e.x&&o<e.x+e.width){const l=this.config.colors.events[s.type].color;t.strokeStyle=l,t.fillStyle=l;const c=os(s);t.fillStyle=this.hitTestCanvasModel.idToColor(s.id);const h=(c+pn)*2;if(a!==void 0){const v=os(i);if(a+v>o-h/2){const C=c*2+pn;t.fillRect(a+v,e.y,C,e.height)}else t.fillRect(o-c-pn,e.y,h,e.height)}else t.fillRect(o-c-pn,e.y,h,e.height)}}),t.restore()}getCanvasIds(){return[this.hitTestCanvasModel.canvasId]}}var Nh=Object.defineProperty,Ii=Object.getOwnPropertySymbols,kh=Object.prototype.hasOwnProperty,jh=Object.prototype.propertyIsEnumerable,Bi=(n,t,e)=>t in n?Nh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Uh=(n,t)=>{for(var e in t||(t={}))kh.call(t,e)&&Bi(n,e,t[e]);if(Ii)for(var e of Ii(t))jh.call(t,e)&&Bi(n,e,t[e]);return n};const Ri=317,ls={DRAWINGS:[1,199],NEWS:[200,299],DATA_SERIES:[300,2999],EVENTS:[3e3,4e3],EXECUTED_ORDERS:[4001,5e3]};class Wh extends ui{constructor(t,e,s,r,i,a,o,l){super(t,e,i,o,l,{willReadFrequently:!0,desynchronized:!0}),this.canvasInputListener=s,this.canvasBoundsContainer=r,this.hitTestSubscribers=[],this.eventsSubscriptions=[],this.hoverSubject=new V,this.touchStartSubject=new V,this.dblClickSubject=new V,this.rightClickSubject=new V,this.curImgData=new Uint8ClampedArray(4),this.prevAnimationFrameId=-1,fi(this,a),e.style.visibility="hidden",this.enableUserControls()}enableUserControls(){if(this.eventsSubscriptions.length===0){const t=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES),e=this.canvasInputListener.observeMouseMove().pipe(Ne(100,void 0,{trailing:!0})).subscribe(c=>this.eventHandler(c,"hover")),s=this.canvasInputListener.observeTouchStart().pipe(yt(()=>this.canvasInputListener.currentPoint)).subscribe(c=>this.eventHandler(c,"touchstart")),r=Lt(this.canvasInputListener.observeMouseDown(t),this.canvasInputListener.observeTouchStart().pipe(yt(()=>this.canvasInputListener.currentPoint))).subscribe(c=>this.eventHandler(c,"mousedown")),i=Lt(this.canvasInputListener.observeMouseUp(t),this.canvasInputListener.observeTouchEndDocument().pipe(yt(()=>this.canvasInputListener.currentPoint))).subscribe(c=>this.eventHandler(c,"mouseup")),a=this.canvasInputListener.observeDbClick(t).subscribe(c=>this.eventHandler(c,"dblclick")),o=this.canvasInputListener.observeContextMenu(t).pipe(yt(()=>Uh({},this.canvasInputListener.currentPoint))).subscribe(c=>{this.eventHandler(c,"contextmenu")}),l=this.canvasInputListener.observeWheel(t).subscribe(c=>setTimeout(()=>this.eventHandler(c,"zoom"),0));this.eventsSubscriptions.push(e,r,a,o,l,s,i)}}disableUserControls(){this.eventsSubscriptions.forEach(t=>t.unsubscribe()),this.eventsSubscriptions=[]}addSubscriber(t){this.hitTestSubscribers.push(t)}removeSubscriber(t){this.hitTestSubscribers=this.hitTestSubscribers.filter(e=>e===t)}idToColor(t){const e=(t*Ri).toString(16);return"#000000".substr(0,7-e.length)+e}colorToId(t){return t/Ri}observeHoverOnElement(){return this.hoverSubject.asObservable()}observeTouchStartOnElement(){return this.touchStartSubject.asObservable()}observeDblClickOnElement(){return this.dblClickSubject.asObservable()}observeRightClickOnElement(){return this.rightClickSubject.asObservable()}getPixel(t,e){const s=window.devicePixelRatio;return this.prevAnimationFrameId!==es&&(this.curImgData=this.ctx.getImageData(t*s,e*s,1,1).data,this.prevAnimationFrameId=es),this.curImgData}resolveModel(t){const e=this.getPixel(t.x,t.y),s=this.colorToId(e[0]*65536+e[1]*256+e[2]),r=Number(s),[i]=cs(this.hitTestSubscribers,r);return i==null?void 0:i.lookup(s)}resolveCursor(t){var e;if(!this.hitTestSubscribers.some(l=>l.resolveCursor!==void 0))return;const s=this.getPixel(t.x,t.y),r=this.colorToId(s[0]*65536+s[1]*256+s[2]),i=Number(r),[a]=cs(this.hitTestSubscribers,i),o=a==null?void 0:a.lookup(r);return(e=a==null?void 0:a.resolveCursor)==null?void 0:e.call(a,t,o)}eventHandler(t,e){var s,r,i,a,o,l,c;const h=this.getPixel(t.x,t.y),v=this.colorToId(h[0]*65536+h[1]*256+h[2]),p=Number(v),[C,O]=cs(this.hitTestSubscribers,p),B=C==null?void 0:C.lookup(v),H={point:t,model:B};switch(e){case"mousedown":B&&((s=C==null?void 0:C.onMouseDown)==null||s.call(C,B,t)),O.forEach(k=>k.onMouseDown&&k.onMouseDown(null,t));break;case"mouseup":B&&((r=C==null?void 0:C.onMouseUp)==null||r.call(C,B,t)),O.forEach(k=>k.onMouseUp&&k.onMouseUp(null,t));break;case"hover":B&&((i=C==null?void 0:C.onHover)==null||i.call(C,B,t)),O.forEach(k=>k.onHover&&k.onHover(null,t)),this.hoverSubject.next(H);break;case"touchstart":B&&((a=C==null?void 0:C.onTouchStart)==null||a.call(C,B,t)),O.forEach(k=>k.onTouchStart&&k.onTouchStart(null,t)),this.touchStartSubject.next(H);break;case"dblclick":B&&((o=C==null?void 0:C.onDblClick)==null||o.call(C,B,t)),this.dblClickSubject.next(H);break;case"contextmenu":B&&((l=C==null?void 0:C.onRightClick)==null||l.call(C,B,t)),this.rightClickSubject.next(H);break;case"zoom":B&&((c=C==null?void 0:C.onZoom)==null||c.call(C,B,t)),O.forEach(k=>k.onZoom&&k.onZoom(null,t));break;default:break}}}const cs=(n,t)=>{let e;const s=[];return n.forEach(r=>{const[i,a]=r.getIdRange();t>=i&&t<=a?e=r:s.push(r)}),[e,s]};var zh=Object.defineProperty,Xh=Object.defineProperties,Vh=Object.getOwnPropertyDescriptors,Fi=Object.getOwnPropertySymbols,Gh=Object.prototype.hasOwnProperty,$h=Object.prototype.propertyIsEnumerable,Yi=(n,t,e)=>t in n?zh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Zh=(n,t)=>{for(var e in t||(t={}))Gh.call(t,e)&&Yi(n,e,t[e]);if(Fi)for(var e of Fi(t))$h.call(t,e)&&Yi(n,e,t[e]);return n},Kh=(n,t)=>Xh(n,Vh(t));class Jh extends tt{constructor(t){super(),this.canvasModel=t,this.events=[],this.hoveredEvent=new ee(null)}setEvents(t){this.events=this.indexEvents(t)}indexEvents(t){const e=this.getIdRange()[0];return t.map((s,r)=>Kh(Zh({},s),{id:r+e})).sort((s,r)=>s.timestamp-r.timestamp)}getIdRange(){return ls.EVENTS}lookup(t){return this.events.filter(e=>e.id===t)[0]}onHover(t,e){this.hoveredEvent.getValue()!==t&&(t&&(t.point=e),this.hoveredEvent.next(t),this.canvasModel.fireDraw())}onTouchStart(t,e){this.onHover(t,e)}}class Qh extends tt{constructor(t,e,s,r,i,a,o,l,c){super(),this.config=t,this.canvasModel=e,this.canvasBoundsContainer=i,this.drawingManager=a,this.formatterFactory=o,this.eventsXAxisLabelFormatterProvider=()=>Li(this.config.components.events.xAxisLabelFormat,r.getPeriod(),this.formatterFactory);const h=new Jh(e);this.eventsModel=h,this.addChildEntity(h),s.addSubscriber(h);const v=new Yh(c,e,r,t,i,h,this.eventsXAxisLabelFormatterProvider);this.drawingManager.addDrawer(v,"EVENTS");const p=new Hh(s,r,t,i,h);this.drawingManager.addDrawerBefore(p,"HIT_TEST_EVENTS","HIT_TEST_DRAWINGS"),l.setCursorForCanvasEl(Y.EVENTS,t.components.events.cursor)}setEvents(t){this.eventsModel.setEvents(t),this.canvasModel.fireDraw()}setVisible(t){this.config.components.events.visible=t,this.canvasBoundsContainer.recalculateBounds(),this.canvasModel.fireDraw()}setEventTypeVisible(t){$t(this.config.components.events.eventsVisibility,t,{overrideExisting:!0,addIfMissing:!1}),this.canvasModel.fireDraw()}observeEventHovered(){return this.eventsModel.hoveredEvent.asObservable()}}class qh{constructor(t,e,s,r,i,a,o,l,c=()=>!0,h){this.canvasModel=t,this.viewportModel=e,this.config=s,this.yAxisState=r,this.xBoundsProvider=i,this.yBoundsProvider=a,this.xLabelsProvider=o,this.yLabelsProvider=l,this.drawPredicate=c,this.getBaseline=h}draw(){if(this.drawPredicate()){const t=this.canvasModel.ctx;ye(t,()=>this.drawVertical(t)),ye(t,()=>this.drawHorizontal(t)),ye(t,()=>this.drawZeroLine(t))}}drawZeroLine(t){if(this.getBaseline&&this.yAxisState.type==="percent"&&this.yAxisState.zeroPercentLine){const e=this.xBoundsProvider(),s=gt(this.getBaseline());t.beginPath(),t.strokeStyle=this.config.colors.yAxis.zeroPercentLine,t.setLineDash([]),t.moveTo(e.x,s),t.lineTo(e.x+e.width,s),t.stroke(),t.closePath()}}drawVertical(t){const e=this.xLabelsProvider();if(e.length&&this.config.components.grid.vertical){t.lineWidth=this.config.components.grid.width,t.strokeStyle=this.config.colors.chartAreaTheme.gridColor,t.setLineDash(this.config.components.grid.dash||[]);const s=this.xBoundsProvider(),r=s.x+s.width;for(const i of e){const a=st(this.viewportModel.toX(i.value));a>s.x&&a<r&&(t.beginPath(),t.moveTo(a,s.y),t.lineTo(a,s.y+s.height),t.stroke())}}}drawHorizontal(t){const e=this.yLabelsProvider();if(e.length&&this.config.components.grid.horizontal){t.lineWidth=this.config.components.grid.width,t.strokeStyle=this.config.colors.chartAreaTheme.gridColor,t.setLineDash(this.config.components.grid.dash||[]);const s=this.yBoundsProvider();for(const r of e){const i=gt(this.viewportModel.toY(r.value)),a=Sh(r.text,t,zt);i>s.y+a&&i<s.y+s.height-a&&(t.beginPath(),t.moveTo(s.x,i),t.lineTo(s.x+s.width,i),t.stroke())}}}getCanvasIds(){return[this.canvasModel.canvasId]}}class Hi extends tt{constructor(t,e,s,r,i,a,o,l,c,h,v,p){super(),this.drawerName=i,this.drawingManager=a,this.drawer=new qh(t,e,s,r,o,l,c,h,p,v)}doDeactivate(){super.doDeactivate(),this.drawingManager.removeDrawer(this.drawer)}doActivate(){super.doActivate(),this.drawingManager.addDrawer(this.drawer,this.drawerName)}}class td{constructor(t,e,s,r){this.canvasModel=t,this.chartModel=e,this.config=s,this.canvasBoundsContainer=r}draw(){if(this.config.components.highLow.visible&&this.chartModel.isReady()){const{high:t,low:e,highIdx:s,lowIdx:r}=this.chartModel.mainCandleSeries.zippedHighLow,i=this.chartModel.mainCandleSeries.dataIdxStart,a=i+s,o=i+r,l=this.canvasModel.ctx;l.save(),l.font=this.config.components.highLow.font,this.drawMarkerLabel(l,a,t,"high"),this.drawMarkerLabel(l,o,e,"low"),l.restore()}}drawMarkerLabel(t,e,s,r){const i=this.getMarkerY(t,s,r==="low");if(!this.checkMarkerInBounds(i))return;const a=this.getMarkerText(s,r),o=this.getMarkerX(t,e,a);t.fillStyle=r==="high"?this.config.colors.highLowTheme.highColor:this.config.colors.highLowTheme.lowColor,t.fillText(a,o,i)}getMarkerText(t,e){const s=this.chartModel.pane.regularFormatter(t);return`${e==="high"?"H:":"L:"} ${s}`}getMarkerY(t,e,s=!1){const r=this.chartModel.toY(e);if(s){const i=Nn(t);return r+i}return r}checkMarkerInBounds(t){const e=this.canvasBoundsContainer.getBounds(Y.CHART);return t>e.y&&t<e.y+e.height}getMarkerX(t,e,s){let r=this.chartModel.toX(e);const i=this.canvasBoundsContainer.getBounds(Y.CHART),a=4,o=t.measureText(s).width;return r+a+o>i.width&&(r=r-(a+o)),r+a}getCanvasIds(){return[this.canvasModel.canvasId]}}class ed extends tt{constructor(t,e,s,r,i){super();const a=new td(e,s,t,r);i.addDrawer(a,"HIGH_LOW")}}const nd=["AFTER_MARKET","PRE_MARKET","NO_TRADING","REGULAR"],sd=24*60*60*1e3;class rd extends tt{constructor(t){super(),this.chartModel=t,this.highlights=[],this.visualHighlights={},this.highlightsUpdatedSubject=new V}activate(){this.addRxSubscription(this.chartModel.scale.xChanged.subscribe(()=>this.highlights.length&&this.recalculateVisualHighlights()))}getHighlights(){return this.highlights}getVisualHighlights(){return this.visualHighlights}recalculateVisualHighlights(){this.visualHighlights={};const t=this.chartModel.getFirstTimestamp(),e=this.chartModel.getLastTimestamp()+sd;Eo(this.highlights,t,e,id).forEach(r=>{var i;this.visualHighlights[r.type]||(this.visualHighlights[r.type]=[]),(i=this.visualHighlights[r.type])==null||i.push(r)})}setHighlights(t){this.highlights=t,this.highlights.sort((e,s)=>e.to-s.to),this.highlightsUpdatedSubject.next(this.highlights),this.highlights.length?this.recalculateVisualHighlights():this.visualHighlights={}}observeHighlightsUpdated(){return this.highlightsUpdatedSubject.asObservable()}}const id=n=>n.to,fe=[20,10];class ad{constructor(t,e,s,r,i){this.highlightsModel=t,this.chartModel=e,this.canvasModel=s,this.canvasBoundsContainer=r,this.config=i}draw(){var t,e,s,r;if(this.config.components.highlights.visible){const i=this.chartModel.getCandles(),a=this.canvasModel.ctx,o=this.highlightsModel.getVisualHighlights();if(this.highlightsModel.getHighlights().length&&i.length!==0&&this.chartModel.scale.isScaleReady()){const c=this.canvasBoundsContainer.getBounds(Y.ALL_PANES);a.save(),we(a,c);const h=(t=this.config.components.highlights.border.width)!=null?t:1,v=(e=this.config.components.highlights.border.dash)!=null?e:[0,0],p=(s=this.config.components.highlights.fontSize)!=null?s:11,C=(r=this.config.components.highlights.fontFamily)!=null?r:"monospace",O=`${p}px ${C}, monospace`;a.font=O,a.lineWidth=h,a.setLineDash(v),nd.forEach(B=>{var H,k;const z=o[B];if(z){const Z=this.config.colors.highlights[B],J=(H=Z==null?void 0:Z.border)!=null?H:"#ffffff",K=(k=Z==null?void 0:Z.background)!=null?k:"#ffffff";a.save(),a.beginPath(),a.fillStyle=K,a.strokeStyle=J,z.forEach(U=>{var Q,at,ot;const nt=this.chartModel.candleFromTimestamp(U.from),rt=Tt(nt.width,this.chartModel.scale.zoomX),dt=nt.xStart(this.chartModel.scale),ct=this.chartModel.candleFromTimestamp(U.to),St=Tt(ct.width,this.chartModel.scale.zoomX),ut=ct.xStart(this.chartModel.scale)+St;if(U.border&&this.drawBorders(U.border,a,dt+rt,ut-St,c),a.fillRect(dt,c.y,ut-dt,c.y+c.height),U.label){const vt=(Q=U.label.text)!=null?Q:"",pt=this.config.colors.highlights[U.type];a.save(),a.fillStyle=(at=pt==null?void 0:pt.label)!=null?at:"#ffffff";const Ht=Yt(vt,a,O),[Nt,kt]=this.resolveHighlightLabelPosition((ot=U.label.placement)!=null?ot:"left-left",c,[dt,ut],Ht);a.fillText(vt,Nt,kt),a.restore()}}),a.closePath(),a.restore()}}),a.restore()}}}resolveHighlightLabelPosition(t,e,s,r){const[i,a]=s;switch(t){case"right-left":return[a-fe[1]-r,e.y+fe[0]];case"left-left":return[i-fe[1]-r,e.y+fe[0]];case"right-right":return[a+fe[1],e.y+fe[0]];case"left-right":default:return[i+fe[1],e.y+fe[0]]}}drawBorders(t,e,s,r,i){const a=t.left,o=t.right;a&&(e.beginPath(),e.moveTo(s,i.y),e.lineTo(s,i.y+i.height),e.stroke(),e.closePath()),o&&(e.beginPath(),e.moveTo(r,i.y),e.lineTo(r,i.y+i.height),e.stroke(),e.closePath())}getCanvasIds(){return[this.canvasModel.canvasId]}}const od="HIGHLIGHTS_PLUGIN";class ld extends tt{constructor(t,e,s,r,i,a){super(),this.eventBus=t,this.config=e,this.highlightsModel=new rd(s),this.addChildEntity(this.highlightsModel),this.highLightsDrawer=new ad(this.highlightsModel,s,r,i,e),a.addDrawer(this.highLightsDrawer,od)}getHighlights(){return this.highlightsModel.getHighlights()}setHighlights(t){this.highlightsModel.setHighlights(t)}setHighlightsVisible(t=!0){this.config.components.highlights.visible=t,this.eventBus.fireDraw(this.highLightsDrawer.getCanvasIds())}observeHighlightsUpdated(){return this.highlightsModel.observeHighlightsUpdated()}}function cd(){return y(function(n,t){var e,s=!1;n.subscribe(Wt(t,function(r){var i=e;e=r,s&&t.next([i,r]),s=!0}))})}function lt(n,t){return y(function(e,s){var r=0;e.subscribe(Wt(s,function(i){return n.call(t,i,r++)&&s.next(i)}))})}var hd=Object.defineProperty,dd=Object.defineProperties,ud=Object.getOwnPropertyDescriptors,Ni=Object.getOwnPropertySymbols,fd=Object.prototype.hasOwnProperty,gd=Object.prototype.propertyIsEnumerable,ki=(n,t,e)=>t in n?hd(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ji=(n,t)=>{for(var e in t||(t={}))fd.call(t,e)&&ki(n,e,t[e]);if(Ni)for(var e of Ni(t))gd.call(t,e)&&ki(n,e,t[e]);return n},Ui=(n,t)=>dd(n,ud(t));const ie=4;class vd{constructor(t,e,s,r,i,a){this.config=t,this.chartModel=e,this.canvasModel=s,this.canvasBoundsContainer=r,this.formatterFactory=i,this.visualCandlesProvider=a}draw(){if(this.config.components.navigationMap.visible){const t=this.visualCandlesProvider();if(t.length){const e=this.canvasBoundsContainer.getBounds(Y.N_MAP),s=this.canvasBoundsContainer.getBounds(Y.N_MAP_BTN_L),r=this.canvasBoundsContainer.getBounds(Y.N_MAP_BTN_R),i=this.canvasBoundsContainer.getBounds(Y.N_MAP_KNOT_L),a=this.canvasBoundsContainer.getBounds(Y.N_MAP_KNOT_R),o=this.canvasBoundsContainer.getBounds(Y.N_MAP_SLIDER_WINDOW),l=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART),c=this.canvasModel.ctx;c.fillStyle=this.config.colors.navigationMap.backgroundColor,c.fillRect(e.x,e.y,e.width,e.height),c.strokeStyle=this.config.colors.paneResizer.lineColor,c.lineWidth=1,c.beginPath(),c.moveTo(e.x,e.y),c.lineTo(e.x+e.width,e.y),c.closePath(),c.stroke(),s.width!==0&&this.drawLeftArrowButton(c,s,this.config),r.width!==0&&this.drawRightArrowButton(c,r,this.config),c.fillStyle=this.config.colors.navigationMap.mapFillColor,c.beginPath(),c.moveTo(l.x,l.y+l.height);for(const h of t)c.lineTo(h[0],h[1]);if(c.lineTo(l.x+l.width,l.y+l.height),c.lineTo(l.x,l.y+l.height),c.closePath(),this.config.colors.navigationMap.mapGradientTopColor&&this.config.colors.navigationMap.mapGradientBottomColor){const h=c.createLinearGradient(l.x,l.y,l.x,l.y+l.height);h.addColorStop(0,this.config.colors.navigationMap.mapGradientTopColor),h.addColorStop(1,this.config.colors.navigationMap.mapGradientBottomColor),c.fillStyle=h}c.fill(),this.config.colors.navigationMap.mapColor&&(c.strokeStyle=this.config.colors.navigationMap.mapColor,c.stroke()),this.drawSlider(c,i,a,s,o),this.drawTimeLabels(c)}}}blockDrawSliderOnLeftArrow(t,e,s,r){t.x<=s.x+s.width&&(t.x=s.x+s.width,r.x=t.x+t.width,e.x=r.x+r.width)}drawSlider(t,e,s,r,i){this.blockDrawSliderOnLeftArrow(e,s,r,i),this.drawKnotButton(t,e,this.config,!0),this.drawKnotButton(t,s,this.config,!1),t.fillStyle=this.config.colors.navigationMap.sliderColor,t.fillRect(i.x,i.y,i.width,i.height)}drawLeftArrowButton(t,e,s){t.fillStyle=s.colors.navigationMap.buttonColor,t.fillRect(e.x,e.y,e.width,e.height),t.beginPath();const r=Math.round(e.x+e.width/2-ie/2),i=Math.round(e.y+e.height/2);t.moveTo(r,i),t.lineTo(r+ie,i+ie),t.lineTo(r+ie,i-ie),t.fillStyle=s.colors.navigationMap.buttonArrowColor,t.fill()}drawRightArrowButton(t,e,s){t.fillStyle=s.colors.navigationMap.buttonColor,t.fillRect(e.x,e.y,e.width,e.height),t.beginPath();const r=Math.round(e.x+e.width/2-ie/2),i=Math.round(e.y+e.height/2);t.moveTo(r,i-ie),t.lineTo(r,i+ie),t.lineTo(r+ie,i),t.fillStyle=s.colors.navigationMap.buttonArrowColor,t.fill()}drawKnotButton(t,e,s,r){const i=s.components.navigationMap.knots.border;t.fillStyle=s.colors.navigationMap.knotColor;const a=r?e.x-i:e.x+i;t.fillRect(a,e.y,e.width,e.height),t.lineWidth=s.components.navigationMap.knots.lineWidth,i>0&&(t.beginPath(),t.moveTo(a,e.y),t.lineTo(a,e.y+e.height),t.lineTo(a+e.width,e.y+e.height),t.lineTo(a+e.width,e.y),t.lineTo(a,e.y),t.lineWidth=i,t.strokeStyle=s.colors.navigationMap.knotBorderColor,t.stroke()),t.beginPath(),t.moveTo(a+e.width/2,e.y+e.height/4),t.lineTo(a+e.width/2,e.y+3*e.height/4),t.strokeStyle=s.colors.navigationMap.knotLineColor,t.stroke()}drawTimeLabels(t){const e=It(this.chartModel.mainCandleSeries.getSeriesInViewport()),s=this.config.components.navigationMap.timeLabels,r=s.visible;if(e.length&&r){const i=e[0].candle.timestamp,a=e[e.length-1].candle.timestamp,o=this.canvasBoundsContainer.getBounds(Y.N_MAP_LABEL_L),l=this.canvasBoundsContainer.getBounds(Y.N_MAP_LABEL_R),h={textFill:this.config.colors.navigationMap.timeLabelsTextColor,textFontFamily:s.fontFamily,textSize:`${s.fontSize}px`},v={dateFormat:s.dateFormat,padding:s.padding,textProperties:Ui(ji({},h),{textAlign:"left"})},p={dateFormat:s.dateFormat,padding:s.padding,textProperties:Ui(ji({},h),{textAlign:"right"})};this.drawTimeLabel(t,o,i,v),this.drawTimeLabel(t,l,a,p)}}drawTimeLabel(t,e,s,r){const i=r.padding,a=nr(s,r.dateFormat,this.formatterFactory);qs(t,r.textProperties);const o=Nn(t),l=er(a);Oo(t,l,e.x+i.x,e.y+o+i.y,r.textProperties)}getCanvasIds(){return[this.canvasModel.canvasId]}}class Ge extends bi{constructor(t,e,s,r,i=pi){super(t,e,s,r,i)}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasInputListener.observeXDragStart(this.hitTest).subscribe(this.onDragStart)),this.addRxSubscription(this.canvasInputListener.observeXDrag().subscribe(this.onDragTick)),this.addRxSubscription(this.canvasInputListener.observeXDragEnd().subscribe(this.onDragEnd))}doDeactivate(){super.doDeactivate()}}const Wi=4;class md extends tt{constructor(t,e,s,r,i,a){super(),this.bus=t,this.chartModel=e,this.scale=s,this.canvasInputListeners=r,this.canvasBoundsContainer=i,this.chartPanComponent=a,this.leftKnotDragStartXRelative=0,this.rightKnotDragStartXRelative=0,this.lastMousePosition=0,this.leftKnotDragStart=C=>{const O=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART);this.leftKnotDragStartXRelative=C.x-O.x-Wi},this.leftKnotDragTick=C=>{const{delta:O}=C,H=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART).width,k=(this.leftKnotDragStartXRelative+O)/H;this.canvasBoundsContainer.leftRatio=k,this.scale.setXScale(Math.round(this.chartModel.mainCandleSeries.dataPoints.length*this.canvasBoundsContainer.leftRatio),this.scale.xEnd)},this.rightKnotDragStart=C=>{const O=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART);this.rightKnotDragStartXRelative=C.x-O.x+Wi},this.rightKnotDragTick=C=>{const{delta:O}=C,H=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART).width,k=(this.rightKnotDragStartXRelative+O)/H;this.canvasBoundsContainer.rightRatio=k,this.scale.setXScale(this.scale.xStart,Math.round(this.chartModel.mainCandleSeries.dataPoints.length*this.canvasBoundsContainer.rightRatio))},this.sliderDragStart=()=>{this.lastMousePosition=0},this.sliderDragTick=C=>{const{delta:O}=C,B=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART),H=this.chartModel.mainCandleSeries.meanCandleWidth/(B.width/this.chartModel.mainCandleSeries.dataPoints.length),k=(this.lastMousePosition-O)*H;this.scale.moveXStart(this.scale.xStart-k),this.lastMousePosition=O};const o=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_KNOT_L),l=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_KNOT_R),c=new Ge(o,{onDragStart:this.leftKnotDragStart,onDragTick:this.leftKnotDragTick},this.canvasInputListeners,this.chartPanComponent),h=new Ge(l,{onDragStart:this.rightKnotDragStart,onDragTick:this.rightKnotDragTick},this.canvasInputListeners,this.chartPanComponent);this.addChildEntity(c),this.addChildEntity(h);const v=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_SLIDER_WINDOW),p=new Ge(v,{onDragStart:this.sliderDragStart,onDragTick:this.sliderDragTick},this.canvasInputListeners,this.chartPanComponent);this.addChildEntity(p)}doActivate(){super.doActivate();const t=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_BTN_L);this.addRxSubscription(this.canvasInputListeners.observeClick(t).subscribe(()=>{this.scale.moveXStart(this.scale.xStart-1)})),this.addRxSubscription(this.canvasInputListeners.observeTouchStart(t).subscribe(()=>{this.scale.moveXStart(this.scale.xStart-1)}));const e=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_BTN_R);this.addRxSubscription(this.canvasInputListeners.observeClick(e).subscribe(()=>{this.scale.moveXStart(this.scale.xStart+1)})),this.addRxSubscription(this.canvasInputListeners.observeTouchStart(e).subscribe(()=>{this.scale.moveXStart(this.scale.xStart+1)})),this.addRxSubscription(this.scale.xChanged.subscribe(()=>{const s=this.chartModel.mainCandleSeries;this.canvasBoundsContainer.leftRatio=s.dataIdxStart/(s.dataPoints.length-1),this.canvasBoundsContainer.rightRatio=s.dataIdxEnd/(s.dataPoints.length-1),this.canvasBoundsContainer.recalculateNavigationMapElementBounds(),this.bus.fireDraw()}))}}class pd extends tt{constructor(t,e,s,r,i,a,o,l,c,h){super(),this.eventBus=t,this.chartModel=e,this.canvasModel=s,this.config=r,this.canvasInputListeners=i,this.canvasBoundsContainer=a,this.chartPanComponent=c,this.visualCandles=[];const v=new vd(r,e,s,a,l,()=>this.visualCandles);o.addDrawer(v,Y.N_MAP_CHART),this.navigationMapMoveHandler=new md(this.eventBus,this.chartModel,this.chartModel.scale,this.canvasInputListeners,this.canvasBoundsContainer,this.chartPanComponent),h.setCursorForCanvasEl(Y.N_MAP_CHART,r.components.navigationMap.cursors.chart),h.setCursorForCanvasEl(Y.N_MAP_BTN_L,r.components.navigationMap.cursors.buttonLeft),h.setCursorForCanvasEl(Y.N_MAP_BTN_R,r.components.navigationMap.cursors.buttonRight),h.setCursorForCanvasEl(Y.N_MAP_KNOT_L,r.components.navigationMap.cursors.leftResizer),h.setCursorForCanvasEl(Y.N_MAP_KNOT_R,r.components.navigationMap.cursors.rightResizer),h.setCursorForCanvasEl(Y.N_MAP_SLIDER_WINDOW,r.components.navigationMap.cursors.slider)}doActivate(){super.doActivate(),this.addRxSubscription(Lt(this.chartModel.observeCandlesChanged(),this.canvasBoundsContainer.observeBoundsChanged(Y.N_MAP),this.chartModel.scale.xChanged.pipe(cd(),lt(([t,e])=>{const r=t.start<0||t.end>0,i=e.start<0||e.end>0;return r&&!i||i}))).subscribe(()=>{this.config.components.navigationMap.visible&&(this.visualCandles=this.makeVisualCandles(),this.canvasModel.fireDraw())}))}makeVisualCandles(){var t;const e=this.chartModel.getCandles();if(!e.length)return[];const s=this.chartModel.mainCandleSeries.dataIdxStart,r=this.chartModel.mainCandleSeries.dataIdxEnd,i=Math.round(Math.max(-s,0)),a=Math.max(this.chartModel.getCandlesCountWithRightOffset(),r)+i;let o=Number.NEGATIVE_INFINITY,l=Number.POSITIVE_INFINITY;const c=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART),h=c.width,v=[];let p=0,C,O;for(C=0;C<h;C++)O=gt(C*a/h)-i,O in e?(v[C]=e[O].close,p=(t=v[C])!=null?t:0,o=Math.max(o,p),l=Math.min(l,p)):v[C]=0;return o-=l,v.map((B,H)=>[H+c.x,(o+l-B)*c.height/o+c.y])}setVisible(t=!0){var e;(e=this.config.components)!=null&&e.navigationMap&&(this.config.components.navigationMap.visible=t,this.eventBus.fire(Qn),this.canvasModel.fireDraw())}}class bd extends tt{constructor(t,e,s){super(),this.scale=t,this.canvasInputListeners=e,this.mainCanvasParent=s,this.touchedCandleIndexes=[0,0]}doActivate(){this.addRxSubscription(this.canvasInputListeners.observeTouchStart().subscribe(t=>this.handleTouchStartEvent(t))),this.addRxSubscription(this.canvasInputListeners.observeTouchMove().subscribe(t=>this.handleTouchMoveEvent(t)))}handleTouchStartEvent(t){t.touches.length===2&&(this.touchedCandleIndexes=this.getXPositions(t).map(e=>this.scale.fromX(e)))}handleTouchMoveEvent(t){t.touches.length===2&&this.pinchHandler(this.touchedCandleIndexes,this.getXPositions(t))}getXPositions(t){const e=this.mainCanvasParent.getBoundingClientRect(),s=[0,0],r=document.body.scrollLeft||document.documentElement.scrollLeft;for(let i=0,a=t.touches.length;i<a;i++){const o=t.touches[i];s[i]=o.pageX-e.left-r}return s}pinchHandler(t,e){const s=(e[0]*t[1]-e[1]*t[0])/(e[0]-e[1]),r=s+(t[0]-t[1])/(e[0]-e[1])*this.scale.getBounds().width;this.scale.setXScale(s,r)}}const zi=()=>{const n=/Mac|iPod|iPhone|iPad/i.test(navigator.userAgent),e=[/Android/i,/webOS/i,/BlackBerry/i,/Windows Phone/i].some(s=>navigator.userAgent.match(s));return n?"apple":e?"mobile":"other"},Ng=(n,t)=>n==="apple"||n==="mobile"?3:t,Cd=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),yd=!!window.chrome,Xi=typeof InstallTrigger!="undefined",wd=navigator.platform.indexOf("Win")>-1,Vi=n=>{let t=!1;const{wheelDeltaY:e,wheelDeltaX:s}=n;if(e||s){let r;if(Cd)r=e===n.deltaY*-3||Math.abs(e+Math.sign(e))===Math.abs(Math.round(n.deltaY)*3)||Math.abs(e-Math.sign(e))===Math.abs(Math.round(n.deltaY)*3);else if(yd){if(r=e+Math.sign(e)===n.deltaY*-3?e+Math.sign(e)===n.deltaY*-3:e===n.deltaY*-3,wd){const i=Math.round(n.deltaY)===e||Math.abs(Math.round(n.deltaY)+Math.sign(n.deltaY))===Math.abs(e)||Math.abs(Math.round(n.deltaY)-Math.sign(n.deltaY))===Math.abs(e);r=Math.abs(e)===Math.abs(n.deltaY)||i}}else Xi?Math.abs(n.deltaY)>Math.abs(n.deltaX)?r=!1:r=s===n.deltaX*-3:r=e===n.deltaY*-3;r&&(t=!0)}else n.deltaMode===0&&(t=!0);return Xi&&n.deltaY>=16&&Math.abs(n.deltaY)%16===0&&(t=!1),n.ctrlKey&&(t=!0),t},Sd=n=>n.components.yAxis.type==="percent"?n.scale.zoomSensitivity/4:n.scale.zoomSensitivity;var hs=Math.pow;class xd extends tt{constructor(t,e,s,r,i,a,o,l){super(),this.bus=t,this.config=e,this.scale=s,this.mainCanvasParent=r,this.canvasInputListener=i,this.canvasBoundsContainer=a,this.canvasAnimation=o,this.chartPanComponent=l,this.currentPoint={x:0,y:0},this.xDraggedCandlesDelta=0,this.lastXStart=0,this.wheelTrottleTime=15,this.zoomXHandler=v=>{const p=Vi(v),C=v.deltaY<0,O=p?Sd(this.config):this.config.scale.zoomSensitivity;if(this.config.scale.zoomToCursor){const H=this.canvasBoundsContainer.getBounds(Y.CANVAS).width,z=v.offsetX/H;this.scale.zoomXToPercent(z,C,!1,O)}else this.scale.zoomXToEnd(C,O);this.bus.fireDraw()},this.onXDragStart=()=>{this.canvasAnimation.forceStopAnimation(In),this.xDraggedCandlesDelta=0,this.lastXStart=this.scale.xStart},this.onXDragTick=v=>{const{delta:p}=v;this.currentPoint.x=p;const C=re(p,this.scale.zoomX);this.scale.moveXStart(this.lastXStart-C),this.bus.fireDraw()},this.touchHandler=new bd(this.scale,this.canvasInputListener,this.mainCanvasParent);const c=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES),h=new Ge(c,{onDragStart:this.onXDragStart,onDragTick:this.onXDragTick},this.canvasInputListener,this.chartPanComponent,{disableChartPanning:!1});this.addChildEntity(h)}doActivate(){super.doActivate();const t=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES);this.addRxSubscription(Lt(this.canvasInputListener.observeWheel(t),this.canvasInputListener.observePinch(t)).pipe(Ne(this.wheelTrottleTime,void 0,{trailing:!0,leading:!0})).subscribe(this.zoomXHandler)),this.addRxSubscription(this.canvasInputListener.observeScrollGesture().pipe(Ne(this.wheelTrottleTime,void 0,{trailing:!0,leading:!0})).subscribe(e=>{let s=-1;const r=zi();(r==="apple"||r==="mobile")&&(s=1);let i=0,a=0;if(i+=e.deltaX*s,a+=e.deltaY*-s,i!==0&&Math.abs(i)>Math.abs(a)){const o=re(i,this.scale.zoomX);this.scale.moveXStart(this.scale.xStart-o)}else a!==0&&Math.abs(a)>Math.abs(i)&&this.zoomXHandler(e);this.bus.fireDraw()})),this.addRxSubscription(this.chartPanComponent.chartBaseModel.dataPrependSubject.asObservable().subscribe(({prependedCandlesWidth:e})=>{this.lastXStart+=e})),this.touchHandler.activate(),this.addSubscription(this.touchHandler.deactivate.bind(this.touchHandler))}registerChartYPanHandler(t,e){let s=t.yStart;const r=()=>{this.canvasAnimation.forceStopAnimation(In),this.currentPoint={x:0,y:0},s=t.yStart},i=o=>{const{delta:l}=o;if(this.currentPoint.y=l,t.state.auto)Pd(this.currentPoint,t.state.autoScaleDisableOnDrag)&&t.autoScale(!1);else{const c=re(t.state.inverse?-l:l,t.zoomY);t.moveYStart(s+c)}},a=new un(e,{onDragTick:i,onDragStart:r},this.canvasInputListener,this.chartPanComponent,{disableChartPanning:!1});return this.addChildEntity(a),a}}const Pd=(n,t)=>{if(!t.enabled)return!1;const e=Math.abs(n.y),s=hs(hs(Math.abs(n.x),2)+hs(e,2),.5),r=Math.abs(Math.acos(e/s));return e>t.yDiff&&r<t.edgeAngle};class Td extends tt{constructor(t,e,s,r,i,a,o,l){super(),this.eventBus=t,this.mainScale=e,this.canvasBoundsContainer=s,this.config=r,this.canvasAnimation=i,this.canvasInputListener=a,this.mainCanvasParent=o,this.chartBaseModel=l,this.chartPanComponents=[],this.chartAreaPanHandler=new xd(this.eventBus,this.config,this.mainScale,this.mainCanvasParent,this.canvasInputListener,this.canvasBoundsContainer,this.canvasAnimation,this),this.chartPanComponents.push(this.chartAreaPanHandler)}doActivate(){this.activateChartPanHandlers()}doDeactivate(){this.deactivatePanHandlers()}activateChartPanHandlers(){this.chartPanComponents.forEach(t=>t.activate())}deactivatePanHandlers(){this.chartPanComponents.forEach(t=>t.deactivate())}}const Gi=n=>t=>{const{top:e,bottom:s}=n(),r=t.high-t.low,i=r===0?1:r,a=i*e/100,o=i*s/100,l=t.low-o,c=t.high+a;return{low:l,high:c}},$i=(n,t)=>{const e=Gi(n);return{isHighLowActive:()=>!0,calculateHighLow:s=>{const r=t.calculateHighLow(s);return e(r)}}};function Md(){return Hs(1)}function Zi(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return Md()(Ke(n,Ze(n)))}function _d(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Ze(n);return y(function(s,r){(e?Zi(n,s,e):Zi(n,s)).subscribe(r)})}function Ad(n){return lt(function(t,e){return n<=e})}class Dd{constructor(t,e,s,r,i){this.config=t,this.boundsProvider=e,this.canvasModel=s,this.canvasAnimation=r,this.animationId=i}draw(){if(this.config.components.paneResizer.visible){const t=this.config.components.paneResizer.fixedMode,e=this.boundsProvider(),s=this.canvasModel.ctx,r=this.canvasAnimation.getColorAlphaAnimation(this.animationId),i=this.config.components.paneResizer.dragZone;!t&&r&&(s.fillStyle=r.getColor(0),s.fillRect(e.x,e.y-i,e.width,e.height+2*i)),s.fillStyle=this.config.colors.paneResizer.lineColor,this.config.animation.paneResizer.bgMode?s.fillRect(e.x,e.y,e.width,e.height):s.fillRect(e.x,e.y-i,e.width,e.height+2*i)}}getCanvasIds(){return[this.canvasModel.canvasId]}}class Ed extends tt{constructor(t,e,s,r,i,a,o,l,c,h,v){super(),this.id=t,this.boundsProvider=e,this.hitTest=s,this.dragTickCb=r,this.chartPanComponent=i,this.canvasModel=a,this.drawingManager=o,this.canvasInputListener=l,this.canvasAnimation=c,this.config=h,this.canvasBoundsContainer=v,this.initialY=0,this.resizeEvent$=new V,this.onYDragStart=()=>{this.config.components.crossTool.type="none",this.initialY=this.boundsProvider().y},this.onYDragEnd=()=>{this.config.components.crossTool.type="cross-and-labels",this.initialY=this.boundsProvider().y,this.canvasBoundsContainer.graphsHeightRatioChangedSubject.next(this.canvasBoundsContainer.graphsHeightRatio)},this.onYDragTick=p=>{const{delta:C,draggedPixels:O}=p;Math.abs(this.initialY-this.boundsProvider().y+O)>=0&&(this.dragTickCb(C),this.resizeEvent$.next())},this.animationId=`${this.id}_RESIZER`}doActivate(){if(super.doActivate(),!this.config.components.paneResizer.fixedMode){const s=new un(this.hitTest,{onDragTick:this.onYDragTick,onDragStart:this.onYDragStart,onDragEnd:this.onYDragEnd},this.canvasInputListener,this.chartPanComponent);this.addChildEntity(s),this.config.animation.paneResizer.enabled&&this.addRxSubscription(this.canvasInputListener.observeMouseEnter(this.hitTest,!0).pipe(_d(!1),Gt(),Ad(1)).subscribe(r=>{r?this.handleHoverAnimation("appearing"):this.handleHoverAnimation("fading")}))}const e=new Dd(this.config,this.boundsProvider,this.canvasModel,this.canvasAnimation,this.animationId);this.drawingManager.addDrawer(e,mi.paneResizer(this.id)),this.addSubscription(()=>this.drawingManager.removeDrawerByName(mi.paneResizer(this.id)))}doDeactivate(){super.doDeactivate(),this.resizeEvent$.complete()}handleHoverAnimation(t){let e;this.config.animation.paneResizer.bgMode?(e=this.canvasAnimation.getColorAlphaAnimation(this.animationId),(!e||!e.animationInProgress)&&this.canvasAnimation.startColorAlphaAnimation(this.animationId,[{color:this.config.colors.paneResizer.bgHoverColor,type:t}])):(e=this.canvasAnimation.getColorTransitionAnimation(this.animationId),(!e||!e.animationInProgress)&&this.canvasAnimation.startColorTransitionAnimation(this.animationId,[{startColor:this.config.colors.paneResizer.bgColor,endColor:this.config.colors.paneResizer.bgHoverColor,type:t}],this.config.animation.paneResizer.duration)),e&&e.animationInProgress&&e.revert()}}const Od=n=>t=>{let e;if(typeof t=="number")e=t;else if(typeof t=="string")e=Number(t);else return"\u2014";const[s]=n.dataSeries;if(s!==void 0){const r=Kt.getPricePrecision(e,s.pricePrecisions);return e.toFixed(r)}return`${e}`},Ld=n=>(t,e)=>{const[s]=n.dataSeries;let r=t;const i=e!=null?e:s;i!==void 0&&(r=Or(t,i.getBaseline()));const a=r.toFixed(Kt.DEFAULT_PRECISION).replace("-","\u2212")+" %";return a==="\u22120.00 %"?"0.00 %":a},Id=n=>({percent:Ld(n),regular:Od(n)});class Bd extends tt{constructor(t,e,s,r,i,a,o,l,c,h,v=new Set,p={regular:Hr}){super(),this.paneUUID=t,this.idx=e,this.paneComponent=s,this.chartBaseModel=r,this.canvasBoundsContainer=i,this.hitTestController=a,this.dynamicObjectsCanvasModel=o,this.scale=l,this.dragNDrop=h,this.dataSeries=v,this.formatters=p,this.getYAxisBounds=()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.idx)),this.yAxisHT=this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.idx)),this.toVisualPoints=C=>C.map(O=>new Ue(this.chartBaseModel.dataFromTimestamp(O.timestamp).centerUnit,O.close)),this.toY=C=>{var O,B;return(B=(O=this.mainDataSeries)==null?void 0:O.view.toY(C))!=null?B:1},this.valueFormatter=(C,O)=>{var B;return((B=this.formatters[this.yAxis.getAxisType()])!=null?B:this.formatters.regular)(C,O)},this.addChildEntity(l),this.setValueFormatters(Id(this)),this.yAxis=c(this.valueFormatter.bind(this),()=>this.mainDataSeries),this.addChildEntity(this.yAxis)}doDeactivate(){super.doDeactivate(),this.dataSeries.forEach(t=>{this.paneComponent.seriesRemovedSubject.next(t),t.deactivate()})}getBounds(){return this.scale.getBounds()}getBaseline(){var t,e;return(e=(t=this.mainDataSeries)==null?void 0:t.getBaseline())!=null?e:1}createDataSeries(){const t=new Yr(this,this.hitTestController.getNewDataSeriesHitTestId());return t.toVisualPoints=this.toVisualPoints,t}addDataSeries(t){this.dataSeries.add(t),this.dataSeries.size===1&&(this.mainDataSeries=t),this.paneComponent.updateView(),this.paneComponent.seriesAddedSubject.next(t)}removeDataSeries(t){this.dataSeries.delete(t),this.paneComponent.updateView(),this.paneComponent.seriesRemovedSubject.next(t)}get regularFormatter(){return this.formatters.regular}setValueFormatters(t){this.formatters=t}regularValueFromY(t){var e,s;return(s=(e=this.mainDataSeries)==null?void 0:e.view.priceFromY(t))!=null?s:this.scale.fromY(t)}}const Ki=n=>({isHighLowActive:()=>!0,calculateHighLow:t=>{const e=Array.from(n.dataSeries).filter(s=>s.highLowProvider.isHighLowActive()).map(s=>s.highLowProvider.calculateHighLow(t));return Kr(e)}});class Rd{constructor(t,e){this.panes=t,this.canvasModel=e,this.dataSeriesIdCounter=ls.DATA_SERIES[0],this.getNewDataSeriesHitTestId=()=>this.dataSeriesIdCounter++}getIdRange(){return ls.DATA_SERIES}get allDataSeries(){return Fe(Fe(Object.values(this.panes),t=>t.yExtentComponents),t=>Array.from(t.dataSeries))}lookup(t){return this.allDataSeries.find(s=>s.id===t)}onHover(t){this.allDataSeries.forEach(e=>e.hovered=e.id===(t==null?void 0:t.id)),this.canvasModel.fireDraw()}onMouseDown(t){t&&this.handleYExtentDragStart(t)}onMouseUp(){this.handleYExtentDragEnd()}handleYExtentDragStart(t){Object.values(this.panes).forEach(e=>e.yExtentComponents.forEach(s=>s.dragNDrop.deactivate())),t.extentComponent.dragNDrop.activate()}handleYExtentDragEnd(){Object.values(this.panes).forEach(t=>t.yExtentComponents.forEach(e=>e.dragNDrop.activate()))}}const ae="#FF00FF",Fd=(n,t)=>n==="down"?t.lastPrice.textNegative:n==="up"?t.lastPrice.textPositive:t.lastPrice.textSelected,Yd=(n,t)=>{const e=t.barTheme[`${n}Color`];return e!=null?e:ae},Hd=(n,t)=>{const e=t.lineTheme[`${n}Color`];return e!=null?e:ae},Nd=(n,t)=>{const e=t.candleTheme[`${n}Color`];return e!=null?e:ae},kd=(n,t)=>{const e=t.areaTheme.lineColor;return e!=null?e:ae},jd=(n,t)=>{const e=t.scatterPlot.mainColor;return e!=null?e:ae},Ud=(n,t)=>{const e=t.histogram[`${n}Cap`];return e!=null?e:ae},Wd=(n,t)=>{const e=n==="up"?t.baseLineTheme.upperSectionStrokeColor:t.baseLineTheme.lowerSectionStrokeColor;return e!=null?e:ae},Ji=(n,t)=>{const e=t.candleTheme[`${n}WickColor`];return e!=null?e:ae},zd=()=>(console.warn("Fallback for label default color"),ae);function Xd(n,t){if(n.filter(i=>i!==null).length<=1)return n.map(i=>i.y);const e=t-2,s=n.map((i,a)=>Vd(i,a,e)).filter(Zs).sort(Gd),r=new Array(s.length);return s.forEach((i,a)=>{if(i===null)return;const o=s[a+1];if(o&&o.top<i.bottom){const l=o.labelWeight-i.labelWeight===1?2:0,c=i.bottom-o.top+l;o.top+=c,o.bottom+=c}r[i.actualIndex]=(i.top+i.bottom)/2}),r}const Vd=(n,t,e)=>n?{top:n.y-e/2,bottom:n.y+e/2,labelWeight:n.weight,actualIndex:t}:null,Gd=(n,t)=>{const e=n.top,s=t.top;return e>s?1:e<s||e===s&&n.labelWeight<t.labelWeight?-1:0};var $d=Object.defineProperty,Zd=Object.defineProperties,Kd=Object.getOwnPropertyDescriptors,Qi=Object.getOwnPropertySymbols,Jd=Object.prototype.hasOwnProperty,Qd=Object.prototype.propertyIsEnumerable,qi=(n,t,e)=>t in n?$d(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ta=(n,t)=>{for(var e in t||(t={}))Jd.call(t,e)&&qi(n,e,t[e]);if(Qi)for(var e of Qi(t))Qd.call(t,e)&&qi(n,e,t[e]);return n},ea=(n,t)=>Zd(n,Kd(t));const ds={MAIN:"MAIN"};class qd extends tt{constructor(t,e,s,r,i,a,o){super(),this.eventBus=t,this.scale=e,this.canvasBoundsContainer=s,this.state=r,this.canvasModel=i,this.paneUUID=a,this.updateYAxisWidth=o,this.orderedLabels=[],this.customLabels={},this.labelsProviders={},this.labelsPositionRecalculatedSubject=new V,this.animFrameId=`anim_cache_${te()}`,this.initModel()}doActivate(){super.doActivate(),this.addRxSubscription(Lt(this.canvasBoundsContainer.observeBoundsChanged(Y.PANE_UUID(this.paneUUID)),this.canvasBoundsContainer.barResizerChangedSubject,this.scale.changed).subscribe(()=>{this.updateLabels()}))}initModel(){this.initLabelsGroups(),this.recalculateLabels(),this.canvasModel.fireDraw()}initLabelsGroups(){for(const t of Object.keys(this.labelsProviders))this.createGroup(t),Object.entries(this.labelsProviders[t]).forEach(([e,s])=>{this.addToGroup(s,t,e)})}updateLabels(t=!1){this.recalculateLabels(),ss(this.animFrameId,()=>{t&&this.updateYAxisWidth(),this.canvasModel.fireDraw()})}recalculateLabels(){var t,e;this.orderedLabels=[];const s=this.state.fontSize+((t=this.state.labelBoxMargin.top)!=null?t:0)+((e=this.state.labelBoxMargin.bottom)!=null?e:0);for(const r of Object.values(this.labelsProviders)){const i=It(Object.values(r).map(l=>l.getUnorderedLabels())),a=It(i.map(l=>l.labels)).map(l=>{var c;return{y:l.y,weight:(c=l.labelWeight)!=null?c:Number.POSITIVE_INFINITY}}),o=Xd(a,s);i.forEach(l=>{const c=o.splice(0,l.labels.length);this.orderedLabels.push(this.updateLabelsCoordinates(l,c))})}this.orderedLabels=this.orderedLabels.reverse()}createGroup(t){!this.labelsProviders[t]&&(this.labelsProviders[t]={})}addToGroup(t,e,s){this.labelsProviders[e]&&(Object.values(this.labelsProviders[e]).includes(t)||(this.labelsProviders[e][s]=t))}updateLabelsCoordinates(t,e){return ea(ta({},t),{labels:t.labels.map((s,r)=>ea(ta({},s),{lineY:s.y,y:e[r]}))})}observeLabelsPositionsRecalculated(){return this.labelsPositionRecalculatedSubject.asObservable()}registerYAxisLabelsProvider(t,e,s){var r;const i=(r=this.labelsProviders[t])!=null?r:{};i[s]=e,this.labelsProviders[t]=i,this.initModel()}unregisterYAxisLabelsProvider(t,e){var s;const r=(s=this.labelsProviders[t])!=null?s:{};delete r[e],this.labelsProviders[t]&&Object.keys(this.labelsProviders[t]).length===0&&delete this.labelsProviders[t],this.initModel()}}const na=10;class tu extends tt{constructor(t,e,s,r,i,a,o,l){if(super(),this.bus=t,this.viewportModel=r,this.canvasBoundsContainer=a,this.autoScaleCallback=l,this.yAxisDragEndSubject=new V,this.lastYStart=0,this.lastYEnd=0,this.lastYHeight=0,this.lastYPxHeight=0,this.onYDragStart=()=>{this.lastYStart=this.viewportModel.yStart,this.lastYEnd=this.viewportModel.yEnd,this.lastYHeight=this.viewportModel.yEnd-this.viewportModel.yStart,this.lastYPxHeight=this.canvasBoundsContainer.getBounds(Y.Y_AXIS).height},this.onYDragTick=c=>{const{delta:h}=c;let v;h<0?v=1/(1+-h/this.lastYPxHeight*(na-1)):v=1+h/this.lastYPxHeight*(na-1);const C=(this.lastYHeight*v-this.lastYHeight)/2,O=this.lastYStart-C,B=this.lastYEnd+C;this.autoScaleCallback(!1),this.viewportModel.setYScale(O,B),this.bus.fireDraw()},this.onYDragEnd=()=>{this.yAxisDragEndSubject.next()},e.customScale){const c=()=>e.type!=="percent",h=new un(o,{onDragTick:us(this.onYDragTick,c),onDragStart:us(this.onYDragStart,c),onDragEnd:us(this.onYDragEnd,c)},i,s,{disableChartPanning:!1});this.addChildEntity(h),e.customScaleDblClick&&i.observeDbClick(o).subscribe(()=>{l(!0),this.bus.fireDraw()})}}}const us=(n,t)=>(...e)=>t()&&n(...e);class eu{constructor(t,e=()=>!0){this.dataProvider=t,this.dataUpdatedPredicate=e,this.calculatedInThisFrame=!1,this.animFrameId=`anim_cache_${te()}`}calculateOrGet(){var t;return this.calculatedInThisFrame||(this.cache=this.dataProvider(),this.dataUpdatedPredicate()&&(this.calculatedInThisFrame=!0),vi(this.animFrameId,()=>{this.calculatedInThisFrame=!1})),(t=this.cache)!=null?t:this.dataProvider()}forceCalculateOrGet(){return this.invalidate(),this.calculateOrGet()}getLastCachedValue(){return this.cache}updateCacheValue(t){this.cache=t}invalidate(){this.cache=void 0,this.calculatedInThisFrame=!1}}const nu=0,su=.01;class fs{constructor(t,e,s,r,i=!1,a,o,l=Bn,c=23){this.increment=t,this.startEndProvider=e,this.lengthProvider=s,this.valueFormatter=r,this.withZero=i,this.axisTypeProvider=a,this.baseLineProvider=o,this.labelFilter=l,this.singleLabelHeightPixels=c,this.gridDistanceMultipliers=[2,4,5,10],this.lastSingleLabelHeightValue=0,this.distanceBetweenLabelsChangeSubject=new V,this.newGeneratedLabelsSubject=new V,this.lastStart=0,this.lastEnd=0,this.labelsCache=new eu(()=>this.labelFilter(this.doGenerateLabels()))}generateRegularLabels(t,e,s){const r=[];this.withZero&&r.push({value:0,text:"0"});let i=wt.roundToNearest(t,s);for(;i<e;){const a=wt.roundToNearest(i,s),o=this.valueFormatter(a);r.push({value:a,text:o}),i=wt.roundDecimal(i+s)}return r}generatePercentLabels(t,e,s){const r=[],i=this.baseLineProvider();let a=wt.roundToNearest(t,s);for(;a<e;){const o=wt.roundToNearest(a,s),l=Lr(o,i),c=this.valueFormatter(l);r.push({value:o,text:c}),a=wt.roundDecimal(a+s)}return r}generateLogarithmLabels(t,e,s){const r=[];let i=wt.roundToNearest(t,s);for(;i<e;){const a=Kn(i),o=this.valueFormatter(a);r.push({value:i,text:o}),i=wt.roundDecimal(i+s)}return r}doGenerateLabels(){var t;const e=this.lengthProvider();if(e<=0)return[];const[s,r]=this.calculateMinMax(),i=this.getAxisStep(s,r,e);this.lastSingleLabelHeightValue||(this.lastSingleLabelHeightValue=i);let a;const o=this.axisTypeProvider();if(o==="logarithmic"?a=this.generateLogarithmLabels(s,r,i):o==="percent"?a=this.generatePercentLabels(s,r,i):a=this.generateRegularLabels(s,r,i),this.lastSingleLabelHeightValue!==i&&this.labelsCache.cache){const l=(t=this.labelsCache.getLastCachedValue())!=null?t:[];this.distanceBetweenLabelsChangeSubject.next([l,a]),this.lastSingleLabelHeightValue=i}return this.newGeneratedLabelsSubject.next(a),a}calculateMinMax(){const[t,e]=this.startEndProvider(),s=this.lengthProvider(),r=fs.getLabelBounds(t,e,s);return[r[0],r[1]]}getAxisStep(t,e,s){const r=e-t,i=s/this.singleLabelHeightPixels,a=this.calculateIncrement(r),o=r/i;return this.calculateAxisStep(o,a)}observeDistanceBetweenLabelsChanged(){return this.distanceBetweenLabelsChangeSubject.asObservable()}observeLabelsChanged(){return this.newGeneratedLabelsSubject.asObservable()}calculateIncrement(t){if(this.increment)return this.increment;if(!isNaN(t)){const e=Kt.autoDetectIncrementOfValueRange(t);return this.adjustIncrementOnAxisType(e)}return this.adjustIncrementOnAxisType(su)}adjustIncrementOnAxisType(t){switch(this.axisTypeProvider()){case"percent":return t;case"logarithmic":const[e]=this.calculateMinMax(),r=Kn(e)+t;return Ir(r)-e;case"regular":return t}}generateNumericLabels(){const[t,e]=this.startEndProvider();return(t!==this.lastStart||e!==this.lastEnd)&&this.labelsCache.invalidate(),this.lastStart=t,this.lastEnd=e,this.labelsCache.calculateOrGet()}static getLabelBounds(t,e,s){const r=Math.abs((e-t)*(nu/s));return[t-r,e+r]}calculateAxisStep(t,e){if(e===0)return console.error("NumericAxisLabelsGenerator failed at calculateAxisStep: increment = 0"),0;let s=e,r=e,i=0;for(;s<t&&s>0;)i>=this.gridDistanceMultipliers.length&&(i=0,r*=10),s=r*this.gridDistanceMultipliers[i++];return s}}class ru extends fs{constructor(t,e,s,r,i=()=>"regular",a=23){super(t,()=>[s.yStart,s.yEnd],()=>s.getBounds().height,r,!1,i,()=>{var o,l;return(l=(o=e())==null?void 0:o.getBaseline())!=null?l:1},void 0,a),this.dataSeriesProvider=e}getLargestLabel(){var t;return((t=this.labelsCache.getLastCachedValue())!=null?t:[]).reduce((e,s)=>s.text.length>e.length?s.text:e,"")}calculateIncrement(t){var e;const s=this.dataSeriesProvider();if(s){const r=Ft(s.dataPoints),i=(e=r==null?void 0:r.close)!=null?e:0,a=zl(i,s.pricePrecisions);return this.adjustIncrementOnAxisType(a)}return super.calculateIncrement(t)}}function gs(n,t,e){var s=I(n)||t||e?{next:n,error:t,complete:e}:n;return s?y(function(r,i){var a;(a=s.subscribe)===null||a===void 0||a.call(s);var o=!0;r.subscribe(Wt(i,function(l){var c;(c=s.next)===null||c===void 0||c.call(s,l),i.next(l)},function(){var l;o=!1,(l=s.complete)===null||l===void 0||l.call(s),i.complete()},function(l){var c;o=!1,(c=s.error)===null||c===void 0||c.call(s,l),i.error(l)},function(){var l,c;o&&((l=s.unsubscribe)===null||l===void 0||l.call(s)),(c=s.finalize)===null||c===void 0||c.call(s)}))}):Te}class iu extends tt{constructor(t,e,s,r,i){super(),this.scale=t,this.labelsGenerator=e,this.canvasBoundsContainer=s,this.paneUUID=r,this.extentIdx=i,this.labels=[],this.prevYAxisHeight=0,this.animFrameId=`anim_cache_${te()}`}doActivate(){super.doActivate(),this.addRxSubscription(Lt(this.scale.yChanged,this.canvasBoundsContainer.observeBoundsChanged(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.extentIdx)).pipe(yt(t=>t.height),lt(t=>io(t,this.prevYAxisHeight,1.5)),gs(t=>{this.labelsGenerator.labelsCache.invalidate(),this.prevYAxisHeight=t}))).subscribe(()=>this.updateLabels()))}updateLabels(){this.labels=this.labelsGenerator.generateNumericLabels(),ss(this.animFrameId,()=>this.canvasBoundsContainer.updateYAxisWidths())}}class au extends tt{constructor(t,e,s,r,i,a,o,l,c){super(),this.paneUUID=t,this.state=s,this.canvasBoundsContainer=r,this.extentIdx=c,this.labelsGenerator=new ru(null,l,a,o,()=>this.state.type,s.labelHeight),this.baseLabelsModel=new iu(a,this.labelsGenerator,this.canvasBoundsContainer,t,c),this.addChildEntity(this.baseLabelsModel),this.fancyLabelsModel=new qd(e,a,r,s,i,t,()=>this.canvasBoundsContainer.updateYAxisWidths()),this.addChildEntity(this.fancyLabelsModel)}doActivate(){const t={getLargestLabel:()=>{var e;return((e=this.labelsGenerator.labelsCache.getLastCachedValue())!=null?e:[]).map(s=>s.text).concat(this.fancyLabelsModel.orderedLabels.flatMap(s=>s.labels).map(s=>s.labelText)).reduce((s,r)=>r.length>s.length?r:s,"")},getYAxisIndex:()=>this.extentIdx,getYAxisState:()=>this.state,getPaneUUID:()=>this.paneUUID};this.canvasBoundsContainer.yAxisBoundsContainer.registerYAxisWidthContributor(t),this.addSubscription(()=>this.canvasBoundsContainer.yAxisBoundsContainer.removeYAxisWidthContributor(t))}}class ou extends tt{constructor(t,e,s,r,i,a,o,l,c,h,v,p){super(),this.eventBus=t,this.canvasModel=s,this.scale=r,this.canvasBoundsContainer=a,this.cursors=l,this.paneUUID=v,this.extentIdx=p,this.labelsColorByChartTypeMap={},this.axisTypeSetSubject=new V,this.state=je(e.components.yAxis),this.yAxisScaleHandler=new tu(t,this.state,o,r,i,a,a.getBoundsHitTest(Y.PANE_UUID_Y_AXIS(v,p)),C=>r.autoScale(C)),this.addChildEntity(this.yAxisScaleHandler),this.model=new au(this.paneUUID,t,this.state,a,s,r,c,h,p),this.addChildEntity(this.model),this.updateCursor(),this.registerDefaultLabelColorResolvers()}registerDefaultLabelColorResolvers(){this.registerLabelColorResolver("candle",Nd),this.registerLabelColorResolver("bar",Yd),this.registerLabelColorResolver("line",Hd),this.registerLabelColorResolver("area",kd),this.registerLabelColorResolver("scatterPlot",jd),this.registerLabelColorResolver("histogram",Ud),this.registerLabelColorResolver("baseline",Wd),this.registerLabelColorResolver("trend",Ji),this.registerLabelColorResolver("hollow",Ji)}doActivate(){this.addRxSubscription(this.scale.beforeStartAnimationSubject.subscribe(()=>this.state.type==="percent"&&this.scale.haltAnimation()))}updateCursor(){this.state.type==="percent"?this.cursors.setCursorForCanvasEl(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.extentIdx),this.state.resizeDisabledCursor):this.cursors.setCursorForCanvasEl(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.extentIdx),this.state.cursor)}updateOrderedLabels(t=!1){this.model.fancyLabelsModel.updateLabels(t)}registerLabelColorResolver(t,e){this.labelsColorByChartTypeMap[t]=e}getLabelsColorResolver(t){var e;return(e=this.labelsColorByChartTypeMap[t])!=null?e:zd}registerYAxisLabelsProvider(t,e=ds.MAIN,s=te()){return this.model.fancyLabelsModel.registerYAxisLabelsProvider(e,t,s),s}addSimpleYAxisLabel(t,e){this.model.fancyLabelsModel.customLabels[t]=e,this.canvasModel.fireDraw()}deleteSimpleYAxisLabel(t){delete this.model.fancyLabelsModel.customLabels[t],this.canvasModel.fireDraw()}getAxisType(){return this.state.type}unregisterYAxisLabelsProvider(t=ds.MAIN,e){return this.model.fancyLabelsModel.unregisterYAxisLabelsProvider(t,e),e}getBounds(){return this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.extentIdx))}registerYAxisWidthContributor(t){this.canvasBoundsContainer.yAxisBoundsContainer.registerYAxisWidthContributor(t)}setAxisType(t){t!==this.state.type&&(this.state.type=t,this.axisTypeSetSubject.next(t),this.scale.autoScale(!0),this.model.fancyLabelsModel.updateLabels(!0),this.updateCursor())}setYAxisAlign(t){this.state.align=t,this.canvasBoundsContainer.updateYAxisWidths(),this.eventBus.fireDraw()}setVisible(t){this.state.visible=t,this.eventBus.fireDraw()}isVisible(){return this.state.visible}setLockPriceToBarRatio(t=!1){this.scale.setLockPriceToBarRatio(t)}changeLabelMode(t,e){this.state.labels.settings[t].mode=e,this.model.fancyLabelsModel.updateLabels()}changeLabelAppearance(t,e){this.state.labels.settings[t].type=e,this.model.fancyLabelsModel.updateLabels()}togglePriceScaleInverse(t){this.scale.state.inverse=t,this.scale.inverseY=t,this.scale.scaleInversedSubject.next(t)}changeLabelsDescriptionVisibility(t){this.state.labels.descriptions=t,this.canvasModel.fireDraw()}}class lu extends tt{constructor(t,e,s,r,i,a,o,l,c,h,v,p,C,O,B,H,k,z){super(),this.chartBaseModel=t,this.mainCanvasModel=e,this.yAxisLabelsCanvasModel=s,this.dynamicObjectsCanvasModel=r,this.hitTestController=i,this.config=a,this.mainScale=o,this.drawingManager=l,this.chartPanComponent=c,this.canvasInputListener=h,this.canvasAnimation=v,this.cursorHandler=p,this.eventBus=C,this.canvasBoundsContainer=O,this.uuid=B,this.seriesAddedSubject=H,this.seriesRemovedSubject=k,this._paneOrder=0,this.yExtentComponents=[],this.getYAxisBounds=()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(this.uuid)),this.valueFormatter=(J,K)=>this.mainExtent.valueFormatter(J,K);const Z=this.createExtentComponent(z);this.mainExtent=Z,this.ht=this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID(B),{extensionY:-this.config.components.paneResizer.dragZone})}get scale(){return this.mainExtent.scale}get yAxis(){return this.mainExtent.yAxis}get dataSeries(){return Fe(this.yExtentComponents,t=>Array.from(t.dataSeries))}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasBoundsContainer.observeBoundsChanged(Y.PANE_UUID(this.uuid)).pipe(Gt(Cr)).subscribe(()=>{this.yExtentComponents.forEach(t=>t.scale.recalculateZoomY()),this.dynamicObjectsCanvasModel.fireDraw()}))}toY(t){var e,s;return(s=(e=this.mainExtent.mainDataSeries)==null?void 0:e.view.toY(t))!=null?s:this.scale.toY(t)}createGridComponent(t,e,s,r){return new Hi(this.mainCanvasModel,e,this.config,r,`PANE_${t}_grid_drawer`,this.drawingManager,()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(t)),()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(t)),()=>[],()=>s.generateNumericLabels())}createYPanHandler(t,e){const s=this.chartPanComponent.chartAreaPanHandler.registerChartYPanHandler(e,this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID(t)));return[()=>{this.chartPanComponent.chartAreaPanHandler.removeChildEntity(s),s.disable()},s]}addCursors(t,e){const s=Y.PANE_UUID_Y_AXIS(this.uuid,t);return this.cursorHandler.setCursorForCanvasEl(s,e.state.cursor),()=>this.cursorHandler.removeCursorForCanvasEl(s)}createExtentComponent(t){var e,s;const r=this.yExtentComponents.length,i=()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(this.uuid)),a=(e=t==null?void 0:t.scale)!=null?e:new bc(this.mainScale,this.config,i,this.canvasAnimation),[o,l]=this.createYPanHandler(this.uuid,a),c=(C,O)=>new ou(this.eventBus,this.config,this.yAxisLabelsCanvasModel,a,this.canvasInputListener,this.canvasBoundsContainer,this.chartPanComponent,this.cursorHandler,C,O,this.uuid,r),h=new Bd(this.uuid,r,this,this.chartBaseModel,this.canvasBoundsContainer,this.hitTestController,this.dynamicObjectsCanvasModel,a,c,l);h.addSubscription(o),h.addSubscription(this.addCursors(r,h.yAxis)),t!=null&&t.paneFormatters&&h.setValueFormatters(t.paneFormatters),((s=t==null?void 0:t.useDefaultHighLow)!=null?s:!0)&&a.autoScaleModel.setHighLowProvider("default",$i(()=>({top:10,bottom:10,left:0,right:0,visible:!0}),Ki(h)));const p=this.createGridComponent(this.uuid,a,h.yAxis.model.labelsGenerator,h.yAxis.state);return h.addChildEntity(p),h.activate(),this.yExtentComponents.push(h),this.canvasBoundsContainer.updateYAxisWidths(),h}removeExtentComponent(t){t.disable(),this.yExtentComponents.splice(t.idx,1),this.yExtentComponents.forEach((e,s)=>e.idx=s),this.canvasBoundsContainer.updateYAxisWidths()}updateView(){this.yExtentComponents.forEach(t=>{t.scale.doAutoScale(),t.yAxis.model.labelsGenerator.generateNumericLabels()}),this.canvasBoundsContainer.updateYAxisWidths(),this.eventBus.fireDraw()}mergeYExtents(){for(let t=1;t<this.yExtentComponents.length;t++){const e=this.yExtentComponents[t];e.dataSeries.forEach(s=>s.moveToExtent(this.mainExtent)),e.disable()}this.canvasBoundsContainer.updateYAxisWidths(),this.yExtentComponents=[this.mainExtent]}getBounds(){return this.mainExtent.getBounds()}hide(){this._paneOrder=this.canvasBoundsContainer.panesOrder.indexOf(this.uuid),this.canvasBoundsContainer.removedPaneBounds(this.uuid),this.eventBus.fireDraw()}show(){this.canvasBoundsContainer.addPaneBounds(this.uuid,this._paneOrder),this.eventBus.fireDraw()}createDataSeries(){var t;return(t=this.mainExtent)==null?void 0:t.createDataSeries()}addDataSeries(t){this.mainExtent.addDataSeries(t),this.updateView()}removeDataSeries(t){this.mainExtent.removeDataSeries(t),this.updateView()}getAxisType(){return"regular"}moveUp(){this.canvasBoundsContainer.movePaneUp(this.uuid)}moveDown(){this.canvasBoundsContainer.movePaneDown(this.uuid)}canMoveUp(){const t=Ye(this.canvasBoundsContainer.panesOrder);return this.uuid!==t}canMoveDown(){const t=Ft(this.canvasBoundsContainer.panesOrder);return this.uuid!==t}get regularFormatter(){return this.mainExtent.formatters.regular}setPaneValueFormatters(t){this.mainExtent.setValueFormatters(t)}regularValueFromY(t){return this.mainExtent.regularValueFromY(t)}}class cu extends tt{constructor(t,e,s,r,i,a,o,l,c,h,v,p,C,O,B){super(),this.chartBaseModel=t,this.dynamicObjectsCanvasModel=e,this.userInputListenerComponents=s,this.eventBus=r,this.mainScale=i,this.canvasBoundsContainer=a,this.config=o,this.canvasAnimation=l,this.canvasInputListener=c,this.drawingManager=h,this.cursorHandler=v,this.crossEventProducer=p,this.chartPanComponent=C,this.mainCanvasModel=O,this.yAxisLabelsCanvasModel=B,this.panes={},this.paneRemovedSubject=new V,this.paneAddedSubject=new V,this.dataSeriesAddedSubject=new V,this.dataSeriesRemovedSubject=new V,this.hitTestController=new Rd(this.panes,this.dynamicObjectsCanvasModel);const H=this.createPane(ht,{useDefaultHighLow:!1,scale:this.mainScale});H.mainExtent.scale.autoScaleModel.setHighLowProvider("series",Ki(H.mainExtent)),i.autoScaleModel.setHighLowPostProcessor("offsets",Gi(()=>this.mainScale.getOffsets()))}get panesOrder(){return this.canvasBoundsContainer.panesOrder}addBounds(t,e){return this.canvasBoundsContainer.addPaneBounds(t,e),()=>this.canvasBoundsContainer.removedPaneBounds(t)}addResizer(t){const e=this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID_RESIZER(t),{extensionY:this.config.components.paneResizer.dragZone}),s=()=>{this.canvasBoundsContainer.resizePaneVertically(t,this.canvasInputListener.getCurrentPoint().y),this.eventBus.fireDraw([this.mainCanvasModel.canvasId,"dynamicObjectsCanvas"])},r=Y.PANE_UUID_RESIZER(t),i=new Ed(r,()=>this.canvasBoundsContainer.getBounds(r),e,s,this.chartPanComponent,this.mainCanvasModel,this.drawingManager,this.canvasInputListener,this.canvasAnimation,this.config,this.canvasBoundsContainer);return this.userInputListenerComponents.push(i),i}get yExtents(){return Fe(Object.values(this.panes),t=>t.yExtentComponents)}getPaneIfHit(t){return Object.values(this.panes).find(s=>this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID(s.uuid))(t.x,t.y))}createPane(t=te(),e){if(this.panes[t]!==void 0)return this.panes[t];const s=new lu(this.chartBaseModel,this.mainCanvasModel,this.yAxisLabelsCanvasModel,this.dynamicObjectsCanvasModel,this.hitTestController,this.config,this.mainScale,this.drawingManager,this.chartPanComponent,this.canvasInputListener,this.canvasAnimation,this.cursorHandler,this.eventBus,this.canvasBoundsContainer,t,this.dataSeriesAddedSubject,this.dataSeriesRemovedSubject,e);return this.config.components.paneResizer.visible&&s.addChildEntity(this.addResizer(t)),s.addSubscription(this.addBounds(t,e==null?void 0:e.order)),s.addSubscription(this.addCursors(t)),s.addSubscription(this.crossEventProducer.subscribeMouseOverHT(t,s.ht)),this.panes[t]=s,s.activate(),this.recalculateState(),s.mainExtent.scale.autoScale(!0),this.paneAddedSubject.next(this.panes),s}removePane(t){const e=this.panes[t];e!==void 0&&(this.paneRemovedSubject.next(e),e.disable(),e.yExtentComponents.forEach(s=>s.disable()),delete this.panes[t],this.recalculateState())}addCursors(t,e=this.config.components.chart.cursor){const s=Y.PANE_UUID(t),r=Y.PANE_UUID_RESIZER(t);return this.cursorHandler.setCursorForCanvasEl(s,e),this.config.components.paneResizer.visible&&this.cursorHandler.setCursorForCanvasEl(r,this.config.components.paneResizer.cursor,this.config.components.paneResizer.dragZone),()=>{this.cursorHandler.removeCursorForCanvasEl(s),this.config.components.paneResizer.visible&&this.cursorHandler.removeCursorForCanvasEl(r)}}recalculateState(){Object.values(this.panes).forEach(t=>t.scale.recalculateZoomY()),this.eventBus.fireDraw([this.mainCanvasModel.canvasId,"dynamicObjectsCanvas"])}}class hu extends tt{constructor(t,e){super(),this.elements=t,this.canvasModel=e}doActivate(){super.doActivate()}createSnapshot(t){const e=this.canvasModel.canvas,s=this.canvasModel.ctx;if(s){s.clearRect(0,0,e.width,e.height);const r=e.width/window.devicePixelRatio,i=e.height/window.devicePixelRatio;return s.drawImage(this.elements.backgroundCanvas,0,0,r,i),s.drawImage(this.elements.mainCanvas,0,0,r,i),s.drawImage(this.elements.dynamicObjectsCanvas,0,0,r,i),s.drawImage(this.elements.crossToolCanvas,0,0,r,i),t&&t(s),new Promise((a,o)=>this.elements.snapshotCanvas.toBlob(l=>l?a(l):o("Blob is null")))}else return console.error("Snapshot isn't supported"),Promise.reject()}}const sa=5,du=1e-10,uu=/\.?0+$/,ra=/(\.[1-9]*)0+$/,fu=n=>{const t=(e,s)=>{const r=Math.pow(10,sa),i=Math.round(e*r)/r;return i<1&&i>=du?i.toFixed(sa).replace(uu,"").replace(ra,""):(i+"").replace(ra,"")+(s||"")};return Math.abs(n)>999999999?(n=Math.round(n/1e6)*1e6,t(n/1e9,"B")):Math.abs(n)>999999?(n=1e3*Math.round(n/1e3),t(n/1e6,"M")):Math.abs(n)>9999?t(n/1e3,"K"):t(n)},bn=class extends tt{constructor(n,t,e,s,r){super(),this.chartComponent=n,this.drawingManager=t,this.config=e,this.volumesModel=s,this.paneManager=r,e.components.volumes.showSeparately&&this.activateSeparateVolumes()}doActivate(){super.doActivate(),this.addRxSubscription(this.chartComponent.chartModel.candlesUpdatedSubject.subscribe(()=>{var n,t;return!((n=this.pane)!=null&&n.scale.isViewportValid())&&((t=this.pane)==null?void 0:t.scale.doAutoScale(!0))})),this.addRxSubscription(this.volumesModel.volumeMax.subscribe(()=>{var n;return(n=this.pane)==null?void 0:n.scale.doAutoScale()}))}activateSeparateVolumes(){if(this.paneManager.panes[bn.UUID]===void 0){const n=this.paneManager.createPane(bn.UUID,{paneFormatters:{regular:fu},useDefaultHighLow:!1,increment:1});this.pane=n,n.mainExtent.yAxis.setAxisType("regular");const{scale:t}=n,e=$i(()=>({top:10,bottom:0,left:0,right:0,visible:!0}),this.volumesModel.highLowProvider);t.autoScaleModel.setHighLowProvider("volumes",e),t.doAutoScale(!0)}}deactiveSeparateVolumes(){this.paneManager.removePane(bn.UUID),delete this.pane,this.drawingManager.removeDrawerByName("UNDERLAY_VOLUMES_AREA")}fromY(n){var t,e;return(e=(t=this.pane)==null?void 0:t.scale.fromY(n))!=null?e:0}};let ia=bn;ia.UUID="volumes";const Cn=.3,gu=(n,t)=>{const e=t.barTheme[`${n}Color`];return Vt()(e).alpha(Cn).toString()},vu=(n,t)=>{const e=t.volume[`${n}BarColor`];return Vt()(e).alpha(Cn).toString()},mu=(n,t)=>{const e=t.lineTheme[`${n}Color`];return Vt()(e).alpha(Cn).toString()},vs=(n,t)=>{const e=t.candleTheme[`${n}Color`];return Vt()(e).alpha(Cn).toString()},pu=3;class bu{constructor(t,e,s,r,i,a){this.config=t,this.volumesModel=e,this.chartModel=s,this.getViewportModel=r,this.volumesColorByChartTypeMap=i,this.drawPredicate=a,this.volumeBarColors={down:"#FF00FF",up:"#FF00FF",none:"#FF00FF"}}calculateColors(t){var e;const s=(e=this.volumesColorByChartTypeMap[t])!=null?e:vu;this.volumeBarColors.down=s("down",this.config.colors),this.volumeBarColors.up=s("up",this.config.colors),this.volumeBarColors.none=s("none",this.config.colors)}draw(t){if(this.config.components.volumes.visible&&this.drawPredicate()){this.calculateColors(this.config.components.chart.type);const e=t.ctx;e.save();const s=this.getViewportModel().getBounds();we(e,s),this.drawVolumes(t),e.restore()}}drawLastBar(){this.config.components.volumes.visible}drawVolumes(t){const e=this.volumesModel.volumeMax.getValue();if(e===0)return;const s=It(this.chartModel.mainCandleSeries.getSeriesInViewport(this.chartModel.scale.xStart-1,this.chartModel.scale.xEnd+1)),r=this.getViewportModel();s.forEach((i,a)=>{if(i.candle.volume){const o=r.getBounds(),l=o.height,c=s[a+1]!==void 0?st(r.toX(s[a+1].startUnit)):void 0,h=st(r.toX(i.startUnit)),v=c!==void 0?c-h:st(Tt(i.width,r.zoomX));if(this.config.components.volumes.showSeparately){const p=st(r.toY(i.candle.volume)),C=st(r.toY(0))-p;this.drawVolume(t,i,h,p,v,C)}else{const p=e/(l/pu),C=Math.max(Tt(i.candle.volume,p),2),O=st(o.y+l-C);this.drawVolume(t,i,h,O,v,C)}}})}drawVolume(t,e,s,r,i,a){const o=t.ctx,l=r,c=r+a,h=e.name;o.fillStyle=this.volumeBarColors[h],o.strokeStyle=this.volumeBarColors[h],i===0?(o.beginPath(),o.moveTo(s,l),o.lineTo(s,Mr(c)),o.stroke()):o.fillRect(s,r,i,Mr(a))}}const Cu=Do(n=>n.candle.volume);class yu extends tt{constructor(t,e){super(),this.chartComponent=t,this.scale=e,this.volumeMax=new ee(0),this.highLowProvider={calculateHighLow:()=>({high:this.volumeMax.getValue(),low:0}),isHighLowActive:()=>!0}}doActivate(){super.doActivate(),this.addRxSubscription(Lt(this.chartComponent.chartModel.observeCandlesChanged(),this.scale.xChanged).subscribe(()=>this.updateVolumeMax())),this.addRxSubscription(this.chartComponent.chartModel.mainCandleSeries.observeLastVisualCandleChanged().subscribe(()=>this.recalculateLastVisualVolume()))}recalculateLastVisualVolume(){}updateVolumeMax(){var t;this.volumeMax.next((t=Ye(Cu(this.chartComponent.chartModel.mainCandleSeries.getSeriesInViewport().flat())))!=null?t:0)}}class wu extends tt{constructor(t,e,s,r,i,a,o,l){super(),this.canvasModel=t,this.canvasBoundsContainer=r,this.config=a,this.volumesColorByChartTypeMap={},this.volumeVisibilityChangedSubject=new ee(!1),this.volumeIsSeparateModeChangedSubject=new ee(!1);const c=new yu(e,s);this.volumesModel=c,this.addChildEntity(c),this.separateVolumes=new ia(e,i,a,c,o);const h=new bu(a,this.volumesModel,e.chartModel,()=>{var v,p;return this.config.components.volumes.showSeparately&&(p=(v=this.separateVolumes.pane)==null?void 0:v.scale)!=null?p:s},this.volumesColorByChartTypeMap,()=>!0);l.model.addObject({drawer:h,model:c},ht),this.addChildEntity(this.separateVolumes),this.registerDefaultVolumeColorResolvers(),this.volumeVisibilityChangedSubject.next(a.components.volumes.visible),this.volumeIsSeparateModeChangedSubject.next(a.components.volumes.showSeparately)}registerDefaultVolumeColorResolvers(){this.registerVolumeColorResolver("candle",vs),this.registerVolumeColorResolver("trend",vs),this.registerVolumeColorResolver("hollow",vs),this.registerVolumeColorResolver("line",mu),this.registerVolumeColorResolver("bar",gu)}setShowVolumesSeparatly(t){this.config.components.volumes.showSeparately!==t&&(this.config.components.volumes.showSeparately=t,t?this.separateVolumes.activateSeparateVolumes():this.separateVolumes.deactiveSeparateVolumes(),this.volumeIsSeparateModeChangedSubject.next(t))}doDeactivate(){super.doDeactivate(),this.setVisible(!1)}registerVolumeColorResolver(t,e){this.volumesColorByChartTypeMap[t]=e}setVisible(t=!0){this.config.components.volumes.visible=t,this.volumeVisibilityChangedSubject.next(t),this.config.components.volumes.showSeparately===!0&&(t?(this.separateVolumes.activateSeparateVolumes(),this.volumeIsSeparateModeChangedSubject.next(!0)):(this.separateVolumes.deactiveSeparateVolumes(),this.volumeIsSeparateModeChangedSubject.next(!1))),this.canvasBoundsContainer.recalculatePanesHeightRatios(),this.canvasModel.fireDraw()}}class Su{constructor(t,e,s,r,i){this.config=t,this.canvasBoundsContainer=e,this.canvasModel=s,this.waterMarkConfigProvider=r,this.watermarkDataProvider=i,this.getConfig=(a=0,o,l,c,h,v)=>{const p=this.canvasModel.ctx,C=this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ht)),{position:O,offsetY:B,offsetX:H}=this.config.components.waterMark;let k;switch(v?k=v:(p.font=yn(this.config,l),k=p.measureText(o).width,C.width-10<k&&(p.font=xu(this.config,this.canvasBoundsContainer,l,k),k=p.measureText(o).width)),O){case"left-top":return{x:H+C.x,y:B+a+C.y,font:p.font,text:o,color:c};case"left-bottom":return{x:H+C.x,y:C.height-h-B+a+C.y,font:p.font,text:o,color:c};case"center":return{x:C.width/2-k/2+C.x,y:(C.height-h)/2+a+C.y,font:p.font,text:o,color:c}}}}draw(){var t,e,s,r,i,a,o;if((t=this.config.components.waterMark)!=null&&t.visible&&this.config.colors){const{firstRow:l,secondRow:c,thirdRow:h}=this.watermarkDataProvider(),v=this.waterMarkConfigProvider(),p=this.config.colors.waterMarkTheme,C=this.canvasModel.ctx;let O=0,B=0,H=0,k=0,z=0;if(C.save(),v.firstRowFontSize&&l){C.font=yn(this.config,v.firstRowFontSize);const U=C.measureText(l);O=U.actualBoundingBoxAscent+U.actualBoundingBoxDescent}if(v.secondRowFontSize&&c){C.font=yn(this.config,v.secondRowFontSize);const U=C.measureText(c);B=U.actualBoundingBoxAscent+U.actualBoundingBoxDescent,H=(e=v.firstRowBottomPadding)!=null?e:0}if(v.thirdRowFontSize&&h){C.font=yn(this.config,v.thirdRowFontSize);const U=C.measureText(h);k=U.actualBoundingBoxAscent+U.actualBoundingBoxDescent,z=(s=v.secondRowBottomPadding)!=null?s:0}const Z=(r=v.thirdRowBottomPadding)!=null?r:0,J=(i=v.logoHeight)!=null?i:0,K=O+B+H+k+z+Z+J;if(l&&this.drawWaterMark(this.getConfig(O,l,v.firstRowFontSize,p.firstRowColor,K)),c&&this.drawWaterMark(this.getConfig(O+H+B,c,v.secondRowFontSize,p.secondRowColor,K)),h&&this.drawWaterMark(this.getConfig(O+H+B+z+k,h,v.thirdRowFontSize,p.thirdRowColor,K)),this.logoImage){const U=this.getConfig(O+H+B+z+k+Z,"",v.thirdRowFontSize,p.thirdRowColor,K,v.logoWidth);this.canvasModel.ctx.drawImage(this.logoImage,U.x,U.y,(a=v.logoWidth)!=null?a:0,(o=v.logoHeight)!=null?o:0)}C.restore()}}getCanvasIds(){return[this.canvasModel.canvasId]}setLogoImage(t){this.logoImage=t}drawWaterMark(t){const e=t.text;if(!e||!e.length)return;const s=this.canvasModel.ctx;s.font=t.font,s.fillStyle=t.color;const r=t.x,i=t.y;s.fillText(e,r,i)}reset(){}}const xu=(n,t,e,s)=>{const i=((o,l)=>t.getBounds(Y.CHART).width/l*o)(e,s);let a;return n.components&&n.components.waterMark&&(a=n.components.waterMark.fontFamily),i+"px "+a},yn=(n,t)=>{let e;return n.components&&n.components.waterMark&&(e=n.components.waterMark.fontFamily),t+"px "+e};var Pu=Object.defineProperty,aa=Object.getOwnPropertySymbols,Tu=Object.prototype.hasOwnProperty,Mu=Object.prototype.propertyIsEnumerable,oa=(n,t,e)=>t in n?Pu(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,la=(n,t)=>{for(var e in t||(t={}))Tu.call(t,e)&&oa(n,e,t[e]);if(aa)for(var e of aa(t))Mu.call(t,e)&&oa(n,e,t[e]);return n};class _u extends tt{constructor(t,e,s,r,i,a,o){super(),this.paneManager=t,this.chartModel=e,this.eventBus=s,this.config=r,this.canvasModel=a,this.waterMarkConfig=this.config.components.waterMark,this.waterMarkData=this.getWaterMarkData(),this.waterMarkDrawer=new Su(this.config,i,a,()=>this.waterMarkConfig,()=>this.waterMarkData),this.addRxSubscription($t(i.observeBoundsChanged(Y.PANE_UUID(ht)),this.paneManager.paneAddedSubject).subscribe(l=>{this.waterMarkConfig=this.recalculateTextSize(l.width,l.height)})),this.addRxSubscription(this.chartModel.candlesSetSubject.subscribe(()=>{this.waterMarkData=this.getWaterMarkData()})),o.addDrawerAfter(this.waterMarkDrawer,"WATERMARK","DYNAMIC_OBJECTS")}setWaterMarkVisible(t){this.config.components&&this.config.components.waterMark&&(this.config.components.waterMark.visible=t,this.canvasModel.fireDraw())}setWaterMarkData(t){this.waterMarkData=t,this.canvasModel.fireDraw()}getWaterMarkData(){return this.waterMarkData||{}}setWaterMarkConfig(t){if(!(!t||!this.config.components)){if(!this.config.components.waterMark)this.config.components.waterMark=JSON.parse(JSON.stringify(t));else{const e={};$t(e,t),$t(e,this.config.components.waterMark),this.config.components.waterMark=e}this.canvasModel.fireDraw()}}setLogoImage(t){this.waterMarkDrawer.setLogoImage(t)}recalculateTextSize(t,e){const i=v=>.15*Math.log(v)/Math.log(1.5)+1,a=i(t/1920),o=i(e/1080),l=Math.min(a,o),c=l>=0?l:0,h={firstRowFontSize:Math.round(this.config.components.waterMark.firstRowFontSize*c),secondRowFontSize:Math.round(this.config.components.waterMark.secondRowFontSize*c),thirdRowFontSize:Math.round(this.config.components.waterMark.thirdRowFontSize*c)};return la(la({},this.config.components.waterMark),h)}}const ca={x:4,y:4};function Au(n,t,e,s,r){var i,a;const o=(i=r.alignType)!=null?i:"middle",{fontSize:l,fontFamily:c,padding:h}=s.components.xAxis,v=(a=h.top)!=null?a:0,p=e.getBounds(Y.X_AXIS);t.save(),t.font=`bold ${l}px ${c}`;const O=t.measureText(r.text).width+ca.x*2;let B=0;const H=r.x;switch(o){case"start":B=H-O;break;case"end":B=H;break;case"middle":default:B=H-O/2;break}on(n,t,B,p.y,O,p.height-1),o!=="middle"&&(t.strokeStyle=r.color,t.beginPath(),t.moveTo(H,p.y),t.lineTo(H,p.y+p.height),t.stroke()),t.fillStyle=r.color;const k=B+ca.x,z=p.y+v+l;t.fillText(r.text,k,z),t.restore()}class Du{constructor(t,e,s,r,i){this.backgroundCanvasModel=t,this.config=e,this.canvasModel=s,this.canvasBoundsContainer=r,this.xAxisLabelsModel=i}draw(){const t=this.canvasModel.ctx;this.drawHighlightedBackgroundBetweenLabels(),this.xAxisLabelsModel.labels.forEach(e=>{Au(this.backgroundCanvasModel.ctx,t,this.canvasBoundsContainer,this.config,e)})}drawHighlightedBackgroundBetweenLabels(){const t=this.canvasModel.ctx,e={},s=this.xAxisLabelsModel.labels.reduce((r,i)=>{if(i.subGroupId!==void 0){let a=r[i.subGroupId];a||(a=[],r[i.subGroupId]=a),a.push(i)}return r},e);Object.keys(s).forEach(r=>{const i=s[r];if(i.length===2){const a=this.canvasBoundsContainer.getBounds(Y.X_AXIS);t.fillStyle=Vt().rgb(i[0].color).alpha(.1).toString(),ai(t,{x:i[0].x,y:a.y},{x:i[1].x,y:a.y+a.height})}})}getCanvasIds(){return[this.canvasModel.canvasId]}}const kg="week-weekday",Eu=["second","minute","hour","day","month","year"],Ou=["lessThanSecond"],Lu=n=>Eu.some(t=>t===n),Iu=n=>n==="week-weekday",Bu=n=>Ou.some(t=>t===n),ha=n=>{const t={"!":!1,$:!1};return n.includes("!")&&(t["!"]=!0),n.includes("$")&&(t.$=!0),t},ms=n=>parseInt(n,10),da=n=>{const[t,...e]=n.split("_");if(Lu(t)){const[s]=e,r=ha(s),i=ms(s);return{key:t,value:i,exact:r["!"]}}else if(Iu(t)){const[s,r]=e,i=ha(s),a=ms(s),o=ms(r);return{key:t,week:i.$?"$":a,weekday:o}}else return Bu(t)?{key:t}:(console.warn(`${n} is not fit, check the documentation to see available formats https://webdev.prosp.devexperts.com:8095/docs/chart/x-axis`),null)};class wn{constructor(t,e,s,r,i,a=()=>!0){this.config=t,this.canvasModel=e,this.viewportModel=s,this.canvasBoundsContainer=r,this.labelsProvider=i,this.drawPredicate=a}draw(){var t;if(this.drawPredicate()){const e=this.canvasModel.ctx,s=this.config.colors.xAxis,r=this.config.components.xAxis.fontFamily,i=wn.getFontFromConfig(this.config),a=this.config.components.xAxis.fontSize,o=(t=this.config.components.xAxis.padding.top)!=null?t:0;e.save(),e.font=i,e.fillStyle=s.backgroundColor;const l=this.canvasBoundsContainer.getBounds(Y.X_AXIS);e.fillRect(l.x,l.y,l.width,l.height);const c=this.config.colors.xAxis.labelTextColor,h=this.labelsProvider();this.drawLabels(e,h,l,c,a,r,o),e.restore()}}drawLabels(t,e,s,r,i,a,o){const l=`${i}px ${a}`;t.fillStyle=r;for(const c of e){const h=this.viewportModel.toX(c.value)-Yt(c.text,t,l)/2;if(h<0||h>s.width)continue;const v=s.y+i-1+o,p=c.text;t.font=l,t.fillText(p,h,v)}}static getFontFromConfig(t){return`${t.components.xAxis.fontStyle} ${t.components.xAxis.fontSize}px ${t.components.xAxis.fontFamily}`}getCanvasIds(){return[this.canvasModel.canvasId]}}const ps={lessThanSecond:0,second:100,minute:200,hour:300,day:400,"week-weekday":500,month:600,year:1e4},ua=n=>{switch(n.key){case"second":case"minute":case"hour":case"day":case"month":case"year":return ps[n.key]+n.value;case"lessThanSecond":return ps[n.key];case"week-weekday":return ps[n.key]+(n.week==="$"?9:n.week)+n.weekday*10}},fa=n=>{const t={};return n.forEach(e=>{const s=t[e.weight];s===void 0?t[e.weight]=[e]:s.push(e)}),t},Ru=(n,t)=>{const e=Object.keys(n).map(r=>parseInt(r,10)).sort((r,i)=>i-r);let s=[];for(const r of e){const i=n[r];if(!i)continue;const a=[...s];s=[];const o=a.length,l=i.length;let c=0,h=1/0,v=-1/0;for(let p=0;p<l;p++){const C=i[p],O=C.idx;for(;c<o;){const B=a[c],H=B.idx;if(O>H)c++,s.push(B),v=H,h=1/0;else{h=H;break}}h-O>=t&&O-v>=t&&(s.push(C),v=O)}for(;c<o;)s.push(a[c]),c++}return s},Fu=(n,t,e,s,r,i)=>{const a=wn.getFontFromConfig(t),o=Yt(e.text,n,a),l=Yt(s.text,n,a),c=r.toX(e.value)+o/2;return r.toX(s.value)-l/2-c<i};function bs(n){"@babel/helpers - typeof";return bs=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},bs(n)}function Bt(n,t){if(t.length<n)throw new TypeError(n+" argument"+(n>1?"s":"")+" required, but only "+t.length+" present")}function Rt(n){Bt(1,arguments);var t=Object.prototype.toString.call(n);return n instanceof Date||bs(n)==="object"&&t==="[object Date]"?new Date(n.getTime()):typeof n=="number"||t==="[object Number]"?new Date(n):((typeof n=="string"||t==="[object String]")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function Yu(n){return Bt(1,arguments),Rt(n).getDay()===1}function Hu(n){return Bt(1,arguments),Rt(n).getDay()===2}function Nu(n){return Bt(1,arguments),Rt(n).getDay()===3}function ku(n){return Bt(1,arguments),Rt(n).getDay()===4}function ju(n){return Bt(1,arguments),Rt(n).getDay()===5}function Uu(n){return Bt(1,arguments),Rt(n).getDay()===6}function Wu(n){return Bt(1,arguments),Rt(n).getDay()===0}function zu(n,t){var e;Bt(1,arguments);var s=n||{},r=Rt(s.start),i=Rt(s.end),a=i.getTime();if(!(r.getTime()<=a))throw new RangeError("Invalid interval");var o=[],l=r;l.setHours(0,0,0,0);var c=Number((e=t==null?void 0:t.step)!==null&&e!==void 0?e:1);if(c<1||isNaN(c))throw new RangeError("`options.step` must be a number greater than 1");for(;l.getTime()<=a;)o.push(Rt(l)),l.setDate(l.getDate()+c),l.setHours(0,0,0,0);return o}function Xu(n){Bt(1,arguments);var t=Rt(n);return t.setDate(1),t.setHours(0,0,0,0),t}function Vu(n){Bt(1,arguments);var t=Rt(n),e=t.getMonth();return t.setFullYear(t.getFullYear(),e+1,0),t.setHours(23,59,59,999),t}function ga(n){Bt(1,arguments);var t=Rt(n);return t.setHours(0,0,0,0),t}function va(n,t){Bt(2,arguments);var e=ga(n),s=ga(t);return e.getTime()===s.getTime()}const Gu=n=>{switch(n.key){case"lessThanSecond":return Ju(n);case"month":return Qu(n);case"second":case"minute":case"hour":case"day":case"year":return qu(n);case"week-weekday":return tf(n);default:return()=>!1}},ge=(n,t)=>{switch(t){case"lessThanSecond":return n.getMilliseconds();case"month":return n.getMonth();case"second":return n.getSeconds();case"minute":return n.getMinutes();case"hour":return n.getHours();case"day":return n.getDate();case"year":return n.getFullYear();case"week-weekday":return n.getDate()}},Cs=n=>(t,e)=>{const s=ge(t,n),r=ge(e,n);return s!==r},$u=n=>(t,e)=>{const s=ge(t,n),r=ge(e,n);return s>=r},Zu={1:Yu,2:Hu,3:Nu,4:ku,5:ju,6:Uu,7:Wu},Ku=(n,t,e)=>{var s;const r=zu({start:Xu(n),end:Vu(n)}),i=(s=Zu[e])!=null?s:()=>!1;if(t==="$"){for(const a of r.reverse())if(i(a))return va(n,a)}else{let a=1;for(const o of r)if(i(o)){if(a===t)return va(n,o);a++}}return!1},ma=(n,t)=>t===1?n===1:n/t===1,pa=(n,t)=>t===1?!0:n%t===0,Ju=n=>(t,e)=>$u(n.key)(t,e),Qu=n=>(t,e)=>{const s=Cs(n.key)(t,e),r=n.exact?ma(ge(t,n.key)+1,n.value):pa(ge(t,n.key)+1,n.value);return s&&r},qu=n=>(t,e)=>{const s=Cs(n.key)(t,e),r=n.exact?ma(ge(t,n.key),n.value):pa(ge(t,n.key),n.value);return s&&r},tf=n=>(t,e)=>{const s=Cs(n.key)(t,e),r=Ku(t,n.week,n.weekday);return s&&r},ef=n=>{switch(n.key){case"second":case"minute":return nf(n.value);case"hour":return sf(n.value);case"day":return rf(n.value);case"month":return lf(n.value);case"year":return cf(n.value);case"week-weekday":const t=of(n.week),e=af(n.weekday);return t&&e;case"lessThanSecond":return!0;default:return!1}},nf=n=>n>0&&n<=60,sf=n=>n>0&&n<=24,rf=n=>n>0&&n<=31,af=n=>ba(n)?n>=1&&n<=7:!1,of=n=>n==="$"?!0:ba(n)?n>=1&&n<=6:!1,lf=n=>n>0&&n<=12,cf=n=>n>0,ba=n=>!isNaN(n)&&isFinite(n),hf=(n,t,e,s)=>{var r,i;const a=s(n.getTime()),o=s(t.getTime());for(const[l,c]of e)if(c(a,o))return l;return(i=(r=e[e.length-1])==null?void 0:r[0])!=null?i:0};function ys(n,t,e){const s=new Array(n.length);let r=new Date(0);for(let i=0;i<n.length;i++){const a=n[i],o=new Date(a.candle.timestamp),l={weight:hf(o,r,t,e)};s[i]=l,r=o}return s}const Ca=n=>{const t={},e={};return $n(n).forEach(([s,r])=>{const i=da(s),a=i===null?!1:ef(i);if(i&&a){const o=ua(i);t[o]=r,e[o]=Gu(i)}}),{weightToTimeFormatsDict:t,weightToTimeFormatMatcherDict:e}};class ya{constructor(t,e,s,r,i,a){this.eventBus=t,this.config=e,this.chartModel=s,this.scale=r,this.timeZoneModel=i,this.canvasModel=a,this.labelsGroupedByWeight={},this.levelsCache={},this.weightToTimeFormatMatcherArray=[],this.weightToTimeFormatsDict={},this.extendedLabelsFilterConfig={minute_1:c=>c>=2},this.formatsByWeightMap=e.components.xAxis.formatsForLabelsConfig;const{weightToTimeFormatsDict:o,weightToTimeFormatMatcherDict:l}=Ca(this.formatsByWeightMap);this.weightToTimeFormatMatcherArray=Object.entries(l).map(([c,h])=>[parseInt(c,10),h]).sort(([c],[h])=>h-c),this.weightToTimeFormatsDict=o}get labels(){return this.getLabelsFromChartType()}getLabelsFromChartType(){var t,e;const s=(e=(t=this.weightedCache)==null?void 0:t.labels)!=null?e:[];return this.config.components.chart.type==="equivolume"?this.postProcessing(s):s}getAllCandlesWithFake(){const t=this.chartModel.mainCandleSeries.visualPoints;if(t.length===0)return[];const s=Array.from({length:750}).map((r,i)=>Nr(this.chartModel.mainCandleSeries.dataPoints,this.chartModel.mainCandleSeries.visualPoints,this.chartModel.mainCandleSeries.meanCandleWidth,t.length+i,this.chartModel.getPeriod()));return[...t,...s]}mapWeightedPointsToLabels(t,e){const s=new Array(t.length);return t.forEach((r,i)=>{var a;const o=e[i],l=this.weightToTimeFormatsDict[r.weight],c=this.timeZoneModel.getDateTimeFormatter(l)(o.candle.timestamp);s[i]={weight:r.weight,idx:(a=o.candle.idx)!=null?a:0,value:o.centerUnit,time:o.candle.timestamp,text:c}}),s}setFormatsForLabelsConfig(t){const{weightToTimeFormatsDict:e,weightToTimeFormatMatcherDict:s}=Ca(t);this.formatsByWeightMap=t,this.weightToTimeFormatMatcherArray=Object.entries(s).map(([r,i])=>[parseInt(r,10),i]).sort(([r],[i])=>i-r),this.weightToTimeFormatsDict=e,this.generateWeightedLabels()}generateWeightedLabels(){const t=this.getAllCandlesWithFake(),e=ys(t,this.weightToTimeFormatMatcherArray,this.timeZoneModel.tzOffset(this.config.timezone)),s=this.mapWeightedPointsToLabels(e,t);this.labelsGroupedByWeight=fa(s),this.weightedCache=void 0,this.levelsCache={},this.recalculateCachedLabels()}getLabelsFromCache(t){if(this.levelsCache[t])return this.levelsCache[t]}updateLastLabel(t){const e=this.chartModel.mainCandleSeries.visualPoints[this.chartModel.mainCandleSeries.visualPoints.length-2];if(e){const r=ys([e,t],this.weightToTimeFormatMatcherArray,this.timeZoneModel.tzOffset(this.config.timezone)),i=this.mapWeightedPointsToLabels([r[1]],[t]),[a]=i;this.labelsGroupedByWeight=Object.entries(this.labelsGroupedByWeight).reduce((o,[l,c])=>{const h=c.findIndex(p=>p.idx===a.idx);let v=c;if(h!==-1&&(v=c.filter(p=>p.idx!==a.idx)),parseInt(l,10)===a.weight){const p=v.findIndex(C=>C.idx>a.idx);p!==-1?v=[...v.slice(0,p),a,...v.slice(p)]:v.push(a)}return o[l]=v,o},{}),this.weightedCache=void 0,this.levelsCache={},this.recalculateCachedLabels()}}updateHistoryLabels(t){const e=t.concat(this.chartModel.mainCandleSeries.visualPoints[t.length]),s=ys(e,this.weightToTimeFormatMatcherArray,this.timeZoneModel.tzOffset(this.config.timezone)),r=this.mapWeightedPointsToLabels(s,e),i=fa(r),a=je(i);for(const c in this.labelsGroupedByWeight)a[c]===void 0&&(a[c]=this.labelsGroupedByWeight[c]);const o=this.chartModel.mainCandleSeries.visualPoints[t.length-1],l=Object.entries(a).sort(([c],[h])=>parseInt(h,10)-parseInt(c,10)).reduce((c,[h,v])=>{const p=parseInt(h,10),C=this.labelsGroupedByWeight[p];if(p===this.weightToTimeFormatMatcherArray[0][0]&&C.shift(),C){const O=C.map(B=>(B.idx=B.idx+t.length,B.value=o.startUnit+o.width+B.value,B));i[p]?c[h]=v.concat(O):c[h]=O}else c[h]=v;return c},{});this.labelsGroupedByWeight=l,this.weightedCache=void 0,this.levelsCache={},this.recalculateCachedLabels()}generateLabels(){this.generateWeightedLabels()}recalculateLabels(){this.recalculateCachedLabels()}recalculateCachedLabels(){if(Object.getOwnPropertyNames(this.labelsGroupedByWeight).length===0)return;const t=this.config.components.xAxis.fontSize,e=Object.values(this.formatsByWeightMap).reduce((a,o)=>Math.max(o.length,a),1),s=t*e,r=Tt(this.chartModel.mainCandleSeries.meanCandleWidth,this.scale.zoomX),i=Math.round(s/r);if(!(i<0&&!isFinite(r))&&(this.weightedCache===void 0||i!==this.weightedCache.coverUpLevel)){const a=this.getLabelsFromCache(i);if(a){this.weightedCache={labels:a,coverUpLevel:i};return}const o=Ru(this.filterLabelsByExtendedRules(this.labelsGroupedByWeight,i),i);this.levelsCache[i]=o,this.weightedCache={labels:o,coverUpLevel:i},this.eventBus.fireDraw()}}postProcessing(t){var e,s;const r=[];let i=0,a=1;for(;a<=t.length-1;){const o=t[i],l=t[a];Fu(this.canvasModel.ctx,this.config,o,l,this.scale,30)?((e=l.weight)!=null?e:0)>((s=o.weight)!=null?s:0)&&(i=a):(r.push(o),i=a,a===t.length-1&&r.push(l)),a++}return r}filterLabelsByExtendedRules(t,e){const s=$n(this.extendedLabelsFilterConfig).reduce((r,i)=>{if(!i)return r;const[a,o]=i;if(o){const l=da(a);if(l){const c=ua(l);r[c]=o}}return r},{});return $n(t).reduce((r,[i,a])=>(s[i]&&s[i](e)||(r[i]=a),r),{})}}class df extends tt{constructor(t,e){super(),this.eventBus=t,this.labelProviders=e,this.labels=[],this.initModel(),this.addSubscription(this.eventBus.on(cn,()=>this.recalculateLabels()))}initModel(){this.recalculateLabels()}recalculateLabels(){this.labels=[];for(const t of this.labelProviders)this.labels.push(...t.getUnorderedLabels())}}class uf extends tt{constructor(t,e,s,r,i){super(),this.scale=t,this.canvasInputListener=e,this.canvasBoundsContainer=s,this.chartPanComponent=r,this.chartModel=i,this.lastXStart=0,this.lastXWidth=0,this.lastXPxWidth=0,this.onXDragStart=()=>{this.lastXStart=this.scale.xStart,this.lastXWidth=this.scale.xEnd-this.scale.xStart;const o=this.canvasBoundsContainer.getBounds(Y.X_AXIS);this.lastXPxWidth=o.width-this.canvasInputListener.currentPoint.x},this.onXDragTick=o=>{const{delta:l}=o,c=this.lastXPxWidth-l;if(c<0)return;const h=this.lastXPxWidth/c,v=this.lastXWidth*h,p=this.lastXStart+(this.lastXWidth-v);this.scale.setXScale(p,this.scale.xEnd)};const a=new Ge(this.canvasBoundsContainer.getBoundsHitTest(Y.X_AXIS),{onDragStart:this.onXDragStart,onDragTick:this.onXDragTick},this.canvasInputListener,this.chartPanComponent,{disableChartPanning:!1});this.addChildEntity(a)}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasInputListener.observeDbClick(this.canvasBoundsContainer.getBoundsHitTest(Y.X_AXIS)).subscribe(()=>this.chartModel.doBasicScale())),this.addRxSubscription(this.chartModel.candlesPrependSubject.subscribe(({prependedCandlesWidth:t})=>this.lastXStart+=t))}}class ff extends tt{constructor(t,e,s,r,i,a,o,l,c,h,v,p,C){super(),this.eventBus=t,this.config=e,this.canvasModel=s,this.chartComponent=r,this.scale=i,this.chartResizeHandler=l,this.timeZoneModel=h;const O=new ya(t,e,r.chartModel,i,h,this.canvasModel);this.xAxisLabelsGenerator=O,this.xAxisLabelsModel=new df(t,[]);const B=new as;c.addDrawer(B,"X_AXIS"),this.xAxisDrawer=new wn(e,s,i,a,()=>this.xAxisLabelsGenerator.labels,()=>e.components.xAxis.visible),B.addDrawer(this.xAxisDrawer),this.xAxisLabelsDrawer=new Du(C,e,s,a,this.xAxisLabelsModel),B.addDrawer(this.xAxisLabelsDrawer),this.xAxisScaleHandler=new uf(i,o,a,v,this.chartComponent.chartModel),this.addChildEntity(this.xAxisScaleHandler),p.setCursorForCanvasEl(Y.X_AXIS,e.components.xAxis.cursor)}doActivate(){super.doActivate(),this.addRxSubscription(Lt(this.chartComponent.chartModel.candlesSetSubject,this.timeZoneModel.observeTimeZoneChanged()).subscribe(()=>{this.xAxisLabelsGenerator.generateLabels()})),this.addRxSubscription(this.chartComponent.chartModel.candlesPrependSubject.pipe(lt(({preparedCandles:t})=>t.length!==0),yt(({preparedCandles:t})=>this.chartComponent.chartModel.mainCandleSeries.visualPoints.slice(0,t.length))).subscribe(t=>{ko.includes(this.config.components.chart.type)&&this.xAxisLabelsGenerator.updateHistoryLabels&&this.xAxisLabelsGenerator.updateHistoryLabels(t)})),this.addRxSubscription(Lt(this.scale.xChanged,this.chartResizeHandler.canvasResized).pipe(Ne(50,void 0,{trailing:!0,leading:!0})).subscribe(()=>{this.xAxisLabelsGenerator.recalculateLabels()})),this.addRxSubscription(this.chartComponent.chartModel.candlesUpdatedSubject.pipe(yt(()=>Ft(this.chartComponent.chartModel.mainCandleSeries.visualPoints)),Gt((t,e)=>{var s,r;return((s=t==null?void 0:t.candle)==null?void 0:s.timestamp)===((r=e==null?void 0:e.candle)==null?void 0:r.timestamp)}),lt(Zs)).subscribe(t=>{this.xAxisLabelsGenerator.updateLastLabel&&this.xAxisLabelsGenerator.updateLastLabel(t)}))}getDrawer(){return this.xAxisDrawer}registerXAxisLabelsProvider(t){this.xAxisLabelsModel.labelProviders.push(t)}setVisible(t){var e;(e=this.config.components)!=null&&e.xAxis&&(this.config.components.xAxis.visible=t,this.eventBus.fireDraw())}setFormatsForLabelsConfig(t){this.xAxisLabelsGenerator instanceof ya?this.xAxisLabelsGenerator.setFormatsForLabelsConfig(t):console.error("Format config for x-axis is not available")}isVisible(){var t,e;return(e=(t=this.config.components)==null?void 0:t.xAxis.visible)!=null?e:!1}}var gf=Object.defineProperty,wa=Object.getOwnPropertySymbols,vf=Object.prototype.hasOwnProperty,mf=Object.prototype.propertyIsEnumerable,Sa=(n,t,e)=>t in n?gf(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Sn=(n,t)=>{for(var e in t||(t={}))vf.call(t,e)&&Sa(n,e,t[e]);if(wa)for(var e of wa(t))mf.call(t,e)&&Sa(n,e,t[e]);return n};class pf{constructor(t,e,s,r,i){this.chartModel=t,this.fullConfig=e,this.yAxisConfig=s,this.lastCandleLabelsByChartType=r,this.resolveLabelColorFn=i}getUnorderedLabels(){const t=[];if(this.yAxisConfig.labels.settings.lastPrice.mode!=="none"){const s=this.getYAxisVisualLabel(this.chartModel.mainCandleSeries),r=s&&Sn(Sn({},s),this.getLabelDrawConfig(this.chartModel.mainCandleSeries,!0));if(r){const i={labels:[r]},a=this.lastCandleLabelsByChartType[this.fullConfig.components.chart.type];a==null||a(i,this.chartModel.mainCandleSeries),t.push(i)}this.chartModel.candleSeries.forEach((i,a)=>{if(a===0)return;const o=this.getYAxisVisualLabel(i),l=o&&Sn(Sn({},o),this.getLabelDrawConfig(i,!1));if(l){const c={labels:[l]},h=this.lastCandleLabelsByChartType[i.config.type];h==null||h(c,this.chartModel.mainCandleSeries),t.push(c)}})}return t}getYAxisVisualLabel(t){const e=Ft(t.dataPoints);if(e){const s=t.view.toY(e.close);if(isFinite(s)){const r=this.yAxisConfig.labels.settings.lastPrice.mode,i=this.yAxisConfig.labels.settings.lastPrice.type;return{y:s,labelWeight:0,labelText:this.chartModel.pane.valueFormatter(e.close,t),mode:r,labelType:i,description:t.instrument.symbol}}}return null}getLabelDrawConfig(t,e){const s=t.colors.labels,r=this.resolveLabelColorFn(t.config.type),{rectLabelTextColor:i,rectLabelInvertedTextColor:a}=this.chartModel.config.colors.yAxis;let o="#FFFFFF",l="#FFFFFF";return s&&(o=r(t.lastPriceMovement,t.colors),l=e?Fd(t.lastPriceMovement,s):i),{bgColor:o,textColor:He(o,l,a),rounded:!0}}}class bf{constructor(t,e,s,r,i){this.yAxisLabelsCanvasModel=t,this.backgroundCanvasModel=e,this.canvasBoundsContainer=s,this.yAxisColors=r,this.paneManager=i}draw(){const t=this.yAxisLabelsCanvasModel.ctx,e=this.backgroundCanvasModel.ctx;this.paneManager.yExtents.forEach(s=>{const r=s.getYAxisBounds(),i=this.canvasBoundsContainer.getBounds(Y.ALL_PANES),a=s.yAxis.model.fancyLabelsModel.orderedLabels;this.drawHighlightedBackgroundBetweenLabels(a),a.forEach(o=>{var l;const c=(l=o.bounds)!=null?l:r;o.labels.forEach(h=>Ei(t,e,c,i,h,this.canvasBoundsContainer,s.yAxis.state,this.yAxisColors))}),Object.values(s.yAxis.model.fancyLabelsModel.customLabels).forEach(o=>Ei(t,e,r,i,o,this.canvasBoundsContainer,s.yAxis.state,this.yAxisColors))})}drawHighlightedBackgroundBetweenLabels(t){const e=this.yAxisLabelsCanvasModel.ctx,s={};t.forEach(r=>{r.labels.forEach(i=>{var a,o,l;if(i.subGroupId){const c=(a=s[i.subGroupId])!=null?a:[];if(s[i.subGroupId]=c,c.push(i),c.length===2){const h=(o=r.bounds)!=null?o:this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(ht));e.save(),e.fillStyle=(l=c[0].highlightColor)!=null?l:c[0].bgColor;const[v,p]=c[0].y>c[1].y?[c[1].y,c[0].y]:[c[0].y,c[1].y];ai(e,{x:h.x,y:br(v,h)},{x:h.x+h.width-6,y:br(p,h)}),e.restore()}}})})}getCanvasIds(){return[this.yAxisLabelsCanvasModel.canvasId]}}class Cf{constructor(t,e,s){this.fullConfig=t,this.canvasModel=e,this.paneManager=s}draw(){this.paneManager.yExtents.forEach(t=>{const e=t.yAxis;if(e.state.visible){const s=e.model.baseLabelsModel.labels,r=e.getBounds(),i=this.canvasModel.ctx;i.fillStyle=this.getBackgroundColor(),i.fillRect(r.x,r.y,r.width,r.height);const a=be(e.state),o=ne(a,i),l=this.getLabelTextColor();i.save(),we(i,r),this.drawLabels(i,s,r,o,a,l,e),i.restore()}})}drawLabels(t,e,s,r,i,a,o){t.fillStyle=a,t.font=i;const l=t.measureText("00.0"),c=l.actualBoundingBoxAscent+l.actualBoundingBoxDescent,h=s.y+c,v=s.y+s.height-c;e.forEach(p=>{const C=o.scale.toY(p.value);C>h&&C<v&&yf(t,s,p.text,C,r,i,o.state.labelBoxMargin.end,o.state.align)})}getCanvasIds(){return[this.canvasModel.canvasId]}getBackgroundColor(){return this.fullConfig.colors.yAxis.backgroundColor}getLabelTextColor(){return this.fullConfig.colors.yAxis.labelTextColor}}const yf=(n,t,e,s,r,i,a,o)=>{const l=o==="right"?t.x+t.width-Yt(e,n,i)-a:t.x+a;n.fillText(e,l,s+r/2-1)};class wf{constructor(){this.UNKNOWN_ARR=[],this.handlers={},this.muted=!1,this.unsub=(t,e)=>{const s=this.handlers[t];s!==void 0&&_o.call(s,e)},this.add=(t,e,s)=>(e in this.handlers?t.call(this.handlers[e],s):this.handlers[e]=[s],this.unsub.bind(this,e,s)),this.on=(t,e)=>this.add(this.UNKNOWN_ARR.push,t,e),this.observe=t=>{const e=new V,s=e.next.bind(e),r=e.unsubscribe.bind(e);return this.on(t,s),e.unsubscribe=()=>{this.unsub(t,s),r()},e.asObservable()},this.onPrior=(t,e)=>this.add(this.UNKNOWN_ARR.unshift,t,e),this.off=this.unsub,this.fire=(t,...e)=>{var s;if(!this.muted){const r=(s=this.handlers[t])!=null?s:[];let i;for(i=0,r.length;i<r.length;i++)r[i].apply(null,e)}},this.fireAsync=(t,e)=>{if(!this.muted)return window.setTimeout(this.fire.bind(this,t,e),0)},this.setMuted=t=>{this.muted=t},this.clear=()=>{this.handlers={}}}fireDraw(t){this.fire(cn,t)}}class Sf extends tt{constructor(t,e,s,r){super(),s.observeTouchStart().pipe(yt(i=>r.components.chart.highlightActiveCandle?i:void 0),Gt()).subscribe(i=>{i&&this.setCandleAsActive(i,t,e)})}setCandleAsActive(t,e,s){if(t.touches.length===1){const r=t.touches.item(0);if(r!==null){const i=this.getTouchXPosition(r,e),a=s.candleFromX(i);a&&s.mainCandleSeries.setActiveCandle(a)}}}getTouchXPosition(t,e){const s=e.getBoundingClientRect(),r=document.body.scrollLeft||document.documentElement.scrollLeft;return t.pageX-s.left-r}}class xf{constructor(t,e,s,r,i){this.frameElement=t,this.resizerElement=e,this.bus=s,this.canvasModels=r,this.config=i,this.previousBCR=void 0,this.animFrameId=`resize_${te()}`,this.canvasResized=new V,this.elementResizeDetector=new ResizeObserver(()=>this.handleResize())}subscribeResize(){this.elementResizeDetector.observe(this.resizerElement)}handleResize(){ss(this.animFrameId,()=>this.fireUpdates())}fireUpdates(){const t=this.resizerElement.getBoundingClientRect(),e={x:t.x,y:t.y,width:t.width,height:t.height};this.config||(this.frameElement.style.height=this.resizerElement.clientHeight+"px"),(this.previousBCR===void 0||this.isBCRDimensionsDiffer(this.previousBCR,e))&&(this.previousBCR=e,this.canvasModels.forEach(s=>this.previousBCR&&s.updateDPR(this.previousBCR)),this.canvasResized.next(e),this.bus.fire(Qn,e),this.bus.fire(cn))}isBCRDimensionsDiffer(t,e){return t.height!==e.height||t.width!==e.width}unsubscribeAnimationUpdate(){if(this.resizerElement)try{this.elementResizeDetector.unobserve(this.resizerElement)}catch(t){console.warn("ChartResizeHandler.ts, unsubscribeAnimationUpdate failed")}}wasResized(){return this.previousBCR!==void 0}}var Pf=Array.isArray,Tf=Object.getPrototypeOf,Mf=Object.prototype,_f=Object.keys;function Af(n){if(n.length===1){var t=n[0];if(Pf(t))return{args:t,keys:null};if(Df(t)){var e=_f(t);return{args:e.map(function(s){return t[s]}),keys:e}}}return{args:n,keys:null}}function Df(n){return n&&typeof n=="object"&&Tf(n)===Mf}var Ef=Array.isArray;function Of(n,t){return Ef(t)?n.apply(void 0,x([],b(t))):n(t)}function Lf(n){return yt(function(t){return Of(n,t)})}function If(n,t){return n.reduce(function(e,s,r){return e[s]=t[r],e},{})}function Bf(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Ze(n),s=Ga(n),r=Af(n),i=r.args,a=r.keys;if(i.length===0)return Ke([],e);var o=new Pt(Rf(i,e,a?function(l){return If(a,l)}:Te));return s?o.pipe(Lf(s)):o}function Rf(n,t,e){return e===void 0&&(e=Te),function(s){xa(t,function(){for(var r=n.length,i=new Array(r),a=r,o=r,l=function(h){xa(t,function(){var v=Ke(n[h],t),p=!1;v.subscribe(Wt(s,function(C){i[h]=C,p||(p=!0,o--),o||s.next(e(i.slice()))},function(){--a||s.complete()}))},s)},c=0;c<r;c++)l(c)},s)}}function xa(n,t,e){n?qt(e,n,t):t()}class Ff extends tt{constructor(t,e){super(),this.canvasInputListener=t,this.canvasBoundsContainer=e,this.panesSubscriptions={},this.crossSubject=new ee(null)}doActivate(){super.doActivate()}fireCrossClose(){this.crossSubject.next(null)}unsubscribeMouseOver(t){var e;(e=this.panesSubscriptions[t])==null||e.unsubscribe()}subscribeMouseOver(t,e,s){const r=e.map(a=>this.canvasBoundsContainer.getBoundsHitTest(a,s)),i=(a,o)=>r.some(l=>l(a,o));return this.subscribeMouseOverHT(t,i)}subscribeMouseOverHT(t,e){const s=this.canvasInputListener.observeMouseMoveDocument(),r=this.canvasInputListener.observeMouseEnter(e);let i=!1;const a=Bf([s,r]).pipe(lt(([,o])=>!i||i&&o)).subscribe(([o,l])=>{if(l){const c=[o.x,o.y,t];this.crossSubject.next(c),i=!1}else this.crossSubject.next(null),i=!0});return this.panesSubscriptions[t]=a,()=>a.unsubscribe()}}class Yf{constructor(t,e,s,r){this.visualCandle=t,this.price=e,this.priceFormatter=s,this.toY=r}get high(){return this.visualCandle.high}get low(){return this.visualCandle.low}get open(){return this.visualCandle.open}get close(){return this.visualCandle.close}get volume(){return this.visualCandle.candle.volume}get openY(){return this.toY(this.open)}get closeY(){return this.toY(this.close)}get highY(){return this.toY(this.high)}get lowY(){return this.toY(this.low)}get openFormatted(){return this.priceFormatter(this.open)}get closeFormatted(){return this.priceFormatter(this.close)}get highFormatted(){return this.priceFormatter(this.high)}get lowFormatted(){return this.priceFormatter(this.low)}get closestOHLCY(){return this.toY([this.close,this.open,this.high,this.low].sort((t,e)=>Math.abs(t-this.price)-Math.abs(e-this.price))[0])}}class Hf{constructor(t){this.chartModel=t}getData(t){const{x:e,y:s}=t,i=this.chartModel.candleFromX(e).idx||0,a=this.chartModel.getVisualCandle(i),o=this.chartModel.priceFromY(s);return a&&new Yf(a,o,this.chartModel.pane.regularFormatter,this.chartModel.toY)}}class Nf{constructor(t){this.chartModel=t}getData(t){const{x:e}=t,r=this.chartModel.candleFromX(e).idx||0;return this.chartModel.candleSeries.map(a=>{const o=a.dataPoints[r],l=this.chartModel.pane.regularFormatter(o==null?void 0:o.close);return{instrument:a.instrument.symbol,price:l,id:a.id}})}}var kf=Object.defineProperty,jf=Object.defineProperties,Uf=Object.getOwnPropertyDescriptors,Pa=Object.getOwnPropertySymbols,Wf=Object.prototype.hasOwnProperty,zf=Object.prototype.propertyIsEnumerable,Ta=(n,t,e)=>t in n?kf(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,$e=(n,t)=>{for(var e in t||(t={}))Wf.call(t,e)&&Ta(n,e,t[e]);if(Pa)for(var e of Pa(t))zf.call(t,e)&&Ta(n,e,t[e]);return n},ws=(n,t)=>jf(n,Uf(t));class Xf extends tt{constructor(t,e,s,r,i,a,o,l,c){super(),this.crossEventProducer=t,this.scale=e,this.config=s,this.chartModel=r,this.canvasInputListener=i,this.canvasBoundsContainer=a,this.paneManager=o,this.timeZoneModel=l,this.formatterFactory=c,this.hoverSubject=new ee(null),this.longTouchActivated=!1,this.xFormatter=()=>"";const h=new Hf(this.chartModel),v=new Nf(this.chartModel);this.hoverProducerParts={candleHover:h,compareSeriesHover:v}}get hover(){return this.hoverSubject.getValue()}doActivate(){super.doActivate(),this.addRxSubscription(this.chartModel.candlesSetSubject.subscribe(()=>{const e=this.chartModel.getLastVisualCandle();e&&this.createAndFireHoverFromCandle(e)})),this.addRxSubscription(this.chartModel.candlesUpdatedSubject.subscribe(()=>{const e=this.chartModel.getLastVisualCandle();this.hover!==null&&e!==void 0&&e.candle.timestamp===this.hover.timestamp&&this.updateHover(e)})),this.addRxSubscription(this.crossEventProducer.crossSubject.subscribe(e=>{e===null?this.hoverSubject.next(null):this.createAndFireHover(e)})),this.addRxSubscription(this.scale.xChanged.subscribe(()=>this.fireLastCross())),this.addRxSubscription(this.canvasInputListener.observeTouchStart().subscribe(e=>{const s=e.touches[0].clientX,r=e.touches[0].clientY-this.canvasBoundsContainer.canvasOnPageLocation.y;this.chartModel.candleFromX(s,!0)&&this.createAndFireHover([s,r,""])}));const t=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES);this.addRxSubscription(this.canvasInputListener.observeLongTouch(t).subscribe(e=>{this.paneManager.chartPanComponent.deactivatePanHandlers(),this.longTouchActivated=!0;const s=e.touches[0].clientX,r=e.touches[0].clientY-this.canvasBoundsContainer.canvasOnPageLocation.y;this.createAndFireHover([s,r,""])})),this.addRxSubscription(this.canvasInputListener.observeTouchEndDocument().subscribe(()=>{this.paneManager.chartPanComponent.activateChartPanHandlers(),this.longTouchActivated&&(this.longTouchActivated=!1,this.crossEventProducer.fireCrossClose())})),this.addRxSubscription(Lt(this.chartModel.candlesSetSubject,this.timeZoneModel.observeTimeZoneChanged()).subscribe(()=>this.recalculateCrossToolXFormatter()))}recalculateCrossToolXFormatter(){const t=this.config.components.crossTool.xAxisLabelFormat;this.xFormatter=Li(t,this.chartModel.getPeriod(),this.formatterFactory)}createHoverFromCandle(t){const e=t.xCenter(this.scale),s=this.scale.toY(t.close);return this.createHover(e,s,ht)}createHover(t,e,s){if(this.chartModel.getCandles().length===0)return;const i=this.chartModel.candleFromX(t,!0).timestamp,a={x:t,y:e,timestamp:i,timeFormatted:this.xFormatter(i),paneId:s},o=Object.entries(this.hoverProducerParts).reduce((l,c)=>ws($e({},l),{[c[0]]:c[1].getData(a)}),{});return $e($e({},a),o)}createAndFireHoverFromCandle(t){const e=this.createHoverFromCandle(t);this.fireHover(e)}updateHover(t){const e=this.createHoverFromCandle(t);if(this.hover&&e){const s=ws($e({},e),{x:this.hover.x,y:this.hover.y});this.fireHover(s)}}createAndFireHover([t,e,s]){const r=this.createHover(t,e,s);this.fireHover(r)}fireHover(t){var e;if(t){if(Hn()&&this.config.components.crossTool.type!=="none"){const s=(e=t.candleHover)==null?void 0:e.visualCandle.candle;s&&this.chartModel.mainCandleSeries.setActiveCandle(s)}this.hoverSubject.next(t)}else this.crossEventProducer.fireCrossClose()}fireLastCross(){const t=this.crossEventProducer.crossSubject.getValue();t&&this.createAndFireHover(t)}registerHoverProducerPart(t,e){this.hoverProducerParts=ws($e({},this.hoverProducerParts),{[t]:e})}unregisterHoverProducerPart(t){delete this.hoverProducerParts[t]}}function Mt(n,t,e,s){return n.addEventListener(e,t,s),function(){n.removeEventListener(e,t,s)}}var Vf=Object.defineProperty,Ma=Object.getOwnPropertySymbols,Gf=Object.prototype.hasOwnProperty,$f=Object.prototype.propertyIsEnumerable,_a=(n,t,e)=>t in n?Vf(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Zf=(n,t)=>{for(var e in t||(t={}))Gf.call(t,e)&&_a(n,e,t[e]);if(Ma)for(var e of Ma(t))$f.call(t,e)&&_a(n,e,t[e]);return n},Kf=(n=>(n[n.left=0]="left",n[n.middle=1]="middle",n[n.right=2]="right",n))(Kf||{});const Se=class extends tt{constructor(n,t){super(),this.eventBus=n,this.element=t,this.xDragStartSubject=new V,this.xDragSubject=new V,this.xDragTickSubject=new V,this.xDragEndSubject=new V,this.yDragStartSubject=new V,this.yDragSubject=new V,this.yDragTickSubject=new V,this.yDragEndSubject=new V,this.mouseMoveSubject=new V,this.mouseMoveDocumentSubject=new V,this.clickSubject=new V,this.clickDocumentSubject=new V,this.dbClickSubject=new V,this.dbTapSubject=new V,this.mouseDownSubject=new V,this.mouseUpSubject=new V,this.mouseUpDocumentSubject=new V,this.wheelSubject=new V,this.touchStartSubject=new V,this.touchMoveSubject=new V,this.touchEndSubject=new V,this.touchCancelSubject=new V,this.contextMenuSubject=new V,this.longTouchSubject=new V,this.pinchSubject=new V,this.scrollGestureSubject=new V,this.mouseLeavesCanvasSubject=new V,this.dragStartPoint={x:0,y:0},this.prevDragPoint={x:0,y:0},this.currentPoint={x:0,y:0},this.currentPointDocument={x:0,y:0},this.dragging=!1,this.canvasBounds={x:0,y:0,pageX:0,pageY:0,width:0,height:0},this.documentDragListeners=[],this.dragProcessListener=()=>{this.xDragSubject.next(this.currentPoint.x-this.dragStartPoint.x),this.yDragSubject.next(this.currentPoint.y-this.dragStartPoint.y),this.xDragTickSubject.next(this.currentPoint.x-this.prevDragPoint.x),this.yDragTickSubject.next(this.currentPoint.y-this.prevDragPoint.y),this.prevDragPoint.x=this.currentPoint.x,this.prevDragPoint.y=this.currentPoint.y},this.dragStartListener=e=>{this.isDraggable(e)&&(this.updateCurrentPoints(e),this.dragging=!0,this.dragStartEvent=e,this.documentDragListeners.forEach(s=>s()),this.dragStartPoint=Se.copyPoint(this.currentPoint),this.xDragStartSubject.next(this.dragStartPoint),this.yDragStartSubject.next(this.dragStartPoint),this.prevDragPoint=Zf({},this.dragStartPoint),Se.DRAG_EVENTS.forEach(s=>{document.addEventListener(s,this.dragProcessListener,!0);const r=document.removeEventListener.bind(document,s,this.dragProcessListener,!0);this.documentDragListeners.push(r),this.addSubscription(r)}),this.dragProcessListener())},this.dragListener=()=>this.mouseMoveDocumentSubject.next(this.currentPoint),this.updateElementOffsetListener=()=>this.mouseMoveSubject.next(this.currentPoint),this.dragEndListener=()=>{this.dragging=!1,this.documentDragListeners.forEach(e=>e()),this.xDragEndSubject.next(),this.yDragEndSubject.next()},this.clickHandler=()=>this.clickSubject.next(this.currentPoint),this.updateCurrentPoints=e=>{this.updateCurrentDocumentPoint(e),this.updateCurrentMousePoint(e)}}isDraggable(n){return n instanceof MouseEvent?n.button===0:n instanceof TouchEvent}startDragging(n){this.updateCurrentPoints(n),this.dragStartListener(n)}movePointer(n){this.updateCurrentPoints(n),this.dragListener(),this.updateElementOffsetListener(),this.dragging&&this.dragProcessListener()}stopDragging(){this.dragEndListener()}fixTextSelection(){const n=t=>(t.preventDefault(),!1);this.element.addEventListener("selectstart",n,!1),this.addSubscription(this.element.removeEventListener.bind(this.element,"selectstart",n,!1))}doActivate(){this.fixTextSelection(),this.documentDragListeners=[],Se.DRAG_START_EVENTS.forEach(r=>{this.element.addEventListener(r,this.dragStartListener),this.addSubscription(()=>this.element.removeEventListener(r,this.dragStartListener))}),this.trackMousePosition(),Se.DRAG_EVENTS.forEach(r=>{document.addEventListener(r,this.dragListener),this.addSubscription(document.removeEventListener.bind(document,r,this.dragListener)),this.element.addEventListener(r,this.updateElementOffsetListener),this.addSubscription(this.element.removeEventListener.bind(this.element,r,this.updateElementOffsetListener))}),Se.DRAG_END_EVENTS.forEach(r=>{document.addEventListener(r,this.dragEndListener),this.addSubscription(document.removeEventListener.bind(document,r,this.dragEndListener))}),this.addSubscription(Mt(this.element,this.clickHandler,"click"));const n=r=>{this.clickDocumentSubject.next(r)};this.addSubscription(Mt(document,n,"click"));const t=zi();if(t==="apple"||t==="mobile"){const i=(()=>{let a=null;return()=>{a?(this.dbTapSubject.next(this.currentPoint),clearTimeout(a),a=null):a=window.setTimeout(()=>{a=null},250)}})();this.addSubscription(Mt(this.element,i,"touchend"))}const e=(r,i=500,a=2)=>{r.preventDefault();let o=null;const l={x:r.touches[0].clientX,y:r.touches[0].clientY};let c={x:0,y:0};const h=p=>{c={x:p.touches[0].clientX,y:p.touches[0].clientY},(Math.sqrt(Math.pow(c.x-l.x,2)+Math.pow(c.y-l.y,2))>a||p.touches.length>1)&&v()},v=()=>{o&&(clearTimeout(o),o=null),this.element.removeEventListener("touchend",v),this.element.removeEventListener("touchmove",h)};o=setTimeout(()=>this.longTouchSubject.next(r),i),this.element.addEventListener("touchmove",h,{passive:!0}),this.element.addEventListener("touchend",v)};this.addSubscription(Mt(this.element,r=>e(r),"touchstart")),this.addSubscription(Mt(this.element,()=>this.dbClickSubject.next(this.currentPoint),"dblclick")),this.addSubscription(Mt(this.element,r=>this.touchStartSubject.next(r),"touchstart")),this.addSubscription(Mt(this.element,r=>this.touchMoveSubject.next(r),"touchmove",!0)),this.addSubscription(Mt(this.element,r=>this.touchEndSubject.next(r),"touchend")),this.addSubscription(Mt(this.element,r=>this.touchCancelSubject.next(r),"touchcancel")),this.addSubscription(Mt(this.element,r=>{r.ctrlKey?this.pinchSubject.next(r):Vi(r)?this.scrollGestureSubject.next(r):this.wheelSubject.next(r),r.preventDefault()},"wheel")),this.addSubscription(Mt(this.element,r=>this.contextMenuSubject.next(r),"contextmenu")),this.addSubscription(Mt(this.element,()=>this.mouseDownSubject.next(this.currentPoint),"mousedown")),this.addSubscription(Mt(this.element,()=>this.mouseUpSubject.next(this.currentPoint),"mouseup")),this.addSubscription(Mt(document,()=>this.mouseUpDocumentSubject.next(this.currentPoint),"mouseup")),this.addRxSubscription(this.eventBus.observe(Qn).subscribe(()=>{const r=this.element.getBoundingClientRect();this.canvasBounds.x=r.left,this.canvasBounds.y=r.top,this.canvasBounds.width=r.width,this.canvasBounds.height=r.height}));const s=()=>{this.mouseLeavesCanvasSubject.next(!0)};this.element.addEventListener("mouseleave",s,!1),this.addSubscription(this.element.removeEventListener.bind(this.element,"mouseleave",s,!1))}getCurrentMousePoint(){return this.currentPoint}trackMousePosition(){Se.DRAG_EVENTS.forEach(n=>{document.addEventListener(n,this.updateCurrentPoints,!0),this.addSubscription(()=>document.removeEventListener(n,this.updateCurrentPoints,!0))})}updateCurrentDocumentPoint(n){"pageX"in n?this.currentPointDocument.x=n.pageX:n.touches!==void 0&&(this.currentPointDocument.x=n.touches[0].pageX),"pageY"in n?this.currentPointDocument.y=n.pageY:n.touches!==void 0&&(this.currentPointDocument.y=n.touches[0].pageY)}updateCurrentMousePoint(n){const t=this.element.getBoundingClientRect();"clientX"in n?this.currentPoint.x=n.clientX-t.left:n.touches!==void 0&&(this.currentPoint.x=n.touches[0].clientX-t.left),"clientY"in n?this.currentPoint.y=n.clientY-t.top:n.touches!==void 0&&(this.currentPoint.y=n.touches[0].clientY-t.top)}static copyPoint(n){return{x:n.x,y:n.y}}observeMouseMove(n=()=>!0){return this.mouseMoveSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeMouseMoveNoDrag(){return this.mouseMoveSubject.asObservable().pipe(lt(()=>!this.dragging))}observeMouseMoveDocument(n=()=>!0){return this.mouseMoveDocumentSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeMouseMoveDocumentAnyElement(n=()=>!0){return this.mouseMoveDocumentSubject.asObservable().pipe(lt(()=>n(this.currentPointDocument.x,this.currentPointDocument.y)),yt(()=>this.currentPointDocument))}observeClickOnDocument(){return this.clickDocumentSubject.asObservable()}observeXDragStart(n=()=>!0){return this.xDragStartSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeXDrag(n=()=>!0){return this.xDragSubject.pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeXDragEnd(n=()=>!0){return this.xDragEndSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeXDragTick(){return this.xDragTickSubject.asObservable()}observeYDragStart(n=()=>!0){return this.yDragStartSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeYDrag(n=()=>!0){return this.yDragSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeYDragEnd(n=()=>!0){return this.yDragEndSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeYDragTick(){return this.yDragTickSubject.asObservable()}observeMouseEnter(n=()=>!0,t=!1){const e=this.mouseMoveSubject.asObservable().pipe(lt(()=>!(t&&this.dragging)),yt(()=>n(this.currentPoint.x,this.currentPoint.y))),s=this.observeMouseLeavesCanvas().pipe(yt(()=>!1));return Lt(e,s).pipe(Gt())}observeMouseLeavesCanvas(){return this.mouseLeavesCanvasSubject.asObservable()}observeClick(n=()=>!0){return this.clickSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeDbClick(n=()=>!0){return this.dbClickSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeDbTap(n=()=>!0){return this.dbTapSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeWheel(n=()=>!0){return this.wheelSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observePinch(n=()=>!0){return this.pinchSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeScrollGesture(){return this.scrollGestureSubject.asObservable()}observeTouchStart(n=()=>!0){return this.touchStartSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeTouchMove(n=()=>!0){return this.touchMoveSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeTouchEndDocument(){return this.touchEndSubject.asObservable()}observeTouchCancelDocument(){return this.touchCancelSubject.asObservable()}observeMouseDown(n=()=>!0){return this.mouseDownSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeMouseUp(n=()=>!0){return this.mouseUpSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeMouseUpDocument(n=()=>!0){return this.mouseUpDocumentSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeContextMenu(n=()=>!0){return this.contextMenuSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)),gs(t=>t.preventDefault()))}observeLongTouch(n=()=>!0){return this.longTouchSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)),gs(t=>t.preventDefault()))}getCurrentPoint(){return this.currentPoint}};let xn=Se;xn.DRAG_START_EVENTS=["mousedown","touchstart"],xn.DRAG_EVENTS=["mousemove","touchmove"],xn.DRAG_END_EVENTS=["mouseup","touchend","touchcancel"];var Jf=_t(722),Qf=function(n){L(t,n);function t(e,s,r){e===void 0&&(e=1/0),s===void 0&&(s=1/0),r===void 0&&(r=Xn);var i=n.call(this)||this;return i._bufferSize=e,i._windowTime=s,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=s===1/0,i._bufferSize=Math.max(1,e),i._windowTime=Math.max(1,s),i}return t.prototype.next=function(e){var s=this,r=s.isStopped,i=s._buffer,a=s._infiniteTimeWindow,o=s._timestampProvider,l=s._windowTime;r||(i.push(e),!a&&i.push(o.now()+l)),this._trimBuffer(),n.prototype.next.call(this,e)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var s=this._innerSubscribe(e),r=this,i=r._infiniteTimeWindow,a=r._buffer,o=a.slice(),l=0;l<o.length&&!e.closed;l+=i?1:2)e.next(o[l]);return this._checkFinalizedStatuses(e),s},t.prototype._trimBuffer=function(){var e=this,s=e._bufferSize,r=e._timestampProvider,i=e._buffer,a=e._infiniteTimeWindow,o=(a?1:2)*s;if(s<1/0&&o<i.length&&i.splice(0,i.length-o),!a){for(var l=r.now(),c=0,h=1;h<i.length&&i[h]<=l;h+=2)c=h;c&&i.splice(0,c+1)}},t}(V);const qf=Symbol("MEMOIZE_CLEAR_FUNCTION");function tg(n){const t={},e=function(){const s=Array.prototype.slice.call(arguments),r=Aa(s);return typeof t[r]=="undefined"&&(t[r]=n.apply(this,s)),t[r]}.bind(this);return e[qf]=function(){const s=Array.prototype.slice.call(arguments),r=Aa(s);delete t[r]},e}const jg=n=>t=>{let e=!1,s,r=[];const i=a=>{s=t(...a),e=!0,r=a};return(...a)=>{const o=a.length;if(e&&o===0)return s;if(!e||r.length!==o)return i(a),s;for(let l=0;l<o;l++)if(!n.equals(r[l],a[l]))return i(a),s;return s}};function Aa(n){if(!n.every(e=>typeof e=="number"||typeof e=="string"||typeof e=="boolean"))throw Error("Arguments to memoized function can only be strings or numbers");return JSON.stringify(n)}const Da=tg(Jf.getTimezoneOffset),eg=(n,t)=>new Date(t).getTimezoneOffset()*60*1e3+Da(n,t);class ng{constructor(t){this.config=t,this.timeZoneChangedSubject=new Qf,this.currentTzOffset=e=>this.getOffset(this.config.timezone,e),this.formatterCache={},this.getOffset=(e,s)=>eg(e,s),this.dateTimeFormatterFactory=this.initFormatterFactory(this.config.dateFormatter)}setTimeZone(t){this.config.timezone=t,this.formatterCache={},this.timeZoneChangedSubject.next(t)}observeTimeZoneChanged(){return this.timeZoneChangedSubject.asObservable()}initFormatterFactory(t){let e;if(t&&typeof t=="function")e=t;else if(t&&t.createFormatterFunction&&typeof t.createFormatterFunction=="function"){const s=t.createFormatterFunction;e=r=>s(r).bind(t)}else e=Ih(this.config,this.tzOffset);return e}getFormatterFactory(){return this.dateTimeFormatterFactory}getDateTimeFormatter(t){return this.formatterCache[t]===void 0&&(this.formatterCache[t]=this.dateTimeFormatterFactory(t)),this.formatterCache[t]}tzOffset(t){const e=r=>-new Date(r).getTimezoneOffset()*sg;let s;return t?s=r=>Da(t,r):s=e,r=>new Date(+r+s(r)-e(r))}}const sg=60*1e3;class Ss{constructor(t,e={}){this.components=[],this.chartComponents=[],this.userInputListenerComponents=[],this.canvasModels=[];var s,r;this.parentElement=t;const i=e;jo(i),this.config=i;const a=hl(i);t.innerHTML="",t.appendChild(a.content),this.id=(s=t.getAttribute("data-id"))!=null?s:"",i.fixedSize&&(t.style.width=i.fixedSize.width+"px",t.style.height=i.fixedSize.height+"px");const o=new ng(i);this.timeZoneModel=o;const l=this.timeZoneModel.getFormatterFactory(),c=dl(t);this.elements=c;const h=new wf;this.bus=h;const v=new xf(t,(r=c.chartResizer)!=null?r:t,h,this.canvasModels,i);this.chartResizeHandler=v,v.subscribeResize(),this.components.push(v.unsubscribeAnimationUpdate.bind(v));const p=new Gc(h,v);this.drawingManager=p;const C=Xc(h,c.mainCanvas,c.chartResizer,this.config.components.chart.type,this.config,p,this.canvasModels);this.mainCanvasModel=C,this.dynamicObjectsCanvasModel=Ee(h,c.dynamicObjectsCanvas,i,p,this.canvasModels,c.chartResizer);const O=new Xe(this.dynamicObjectsCanvasModel);p.addDrawer(O,"SERIES_CLEAR");const B=Ee(h,c.yAxisLabelsCanvas,i,p,this.canvasModels,c.chartResizer),H=new zn(i,h,C,l,v);this.canvasBoundsContainer=H;const k=c.mainCanvas.parentElement;if(k===null)throw new Error("Couldn't get main canvas parent");const z=new xn(h,k);this.canvasInputListener=z,this.chartComponents.push(this.canvasInputListener);const Z=new Wh(h,c.hitTestCanvas,z,H,p,i,this.canvasModels,c.chartResizer);this.hitTestCanvasModel=Z;const J=new Xe(Z);p.addDrawer(J,"HIT_TEST_CLEAR");const K=new bo(h);this.canvasAnimation=K;const U=new ri(i,()=>H.getBounds(Y.PANE_UUID(ht)),K);this.scaleModel=U;const Q=Ee(h,c.backgroundCanvas,i,p,this.canvasModels,c.chartResizer,{willReadFrequently:!0});this.backgroundCanvasModel=Q,this.cursorHandler=new ol(c.canvasArea,z,H,Z),this.chartComponents.push(this.cursorHandler),this.crossEventProducer=new Ff(z,H),this.chartComponents.push(this.crossEventProducer);const at=new Fl("candle");this.chartBaseModel=at;const ot=new Td(h,U,H,i,K,z,k,at);this.chartPanComponent=ot,this.chartComponents.push(ot),this.userInputListenerComponents.push(ot.chartAreaPanHandler);const nt=new cu(at,this.dynamicObjectsCanvasModel,this.userInputListenerComponents,h,U,H,i,K,z,p,this.cursorHandler,this.crossEventProducer,ot,C,B);this.paneManager=nt;const rt=this.paneManager.panes[ht];this.mainPane=rt,this.chartComponents.push(nt),this.dynamicObjects=new Oh(this.dynamicObjectsCanvasModel,p),this.chartComponents.push(this.dynamicObjects),this.chartModel=new mh(at,nt,h,this.dynamicObjectsCanvasModel,i,U,l,k,H,v);const dt=new sh(this.chartModel,this.dynamicObjectsCanvasModel,i,U,H,p,Z,z,Q,ot,nt,this.cursorHandler,this.dynamicObjects);this.chartComponents.push(dt),this.chartComponent=dt;const ct=this.chartComponent.chartModel;this.chartModel=ct,this.canvasBoundsContainer.setMainCandleSeries(this.chartModel.mainCandleSeries),Z.addSubscriber(nt.hitTestController),this.xAxisComponent=new ff(h,i,C,dt,U,H,z,v,this.drawingManager,o,ot,this.cursorHandler,Q),this.chartComponents.push(this.xAxisComponent),this.userInputListenerComponents.push(this.xAxisComponent.xAxisScaleHandler);const St=new Xe(C);p.addDrawer(St,"MAIN_CLEAR");const ut=new Sf(k,ct,z,i);this.chartComponents.push(ut),this.watermarkComponent=new _u(nt,ct,h,i,H,this.dynamicObjectsCanvasModel,p),this.chartComponents.push(this.watermarkComponent);const vt=Ee(h,c.crossToolCanvas,i,p,this.canvasModels,c.chartResizer);this.highlightsComponent=new ld(h,i,ct,C,H,p),this.chartComponents.push(this.highlightsComponent),i.useUTCTimeOverride&&i.dateFormatter&&!i.dateFormatter.utcTimeOverride&&(i.dateFormatter.utcTimeOverride=this.createUTCTimeOverrideConfig(ct)),this.navigationMapComponent=new pd(h,ct,C,i,z,H,p,l,ot,this.cursorHandler),this.chartComponents.push(this.navigationMapComponent),this.userInputListenerComponents.push(this.navigationMapComponent.navigationMapMoveHandler);const pt=new ed(i,this.dynamicObjectsCanvasModel,ct,H,p);this.chartComponents.push(pt),this.initYAxisDrawer(B),this.yAxisComponent=rt.mainExtent.yAxis;const Ht=new pf(this.chartModel,this.config,rt.mainExtent.yAxis.state,this.chartModel.lastCandleLabelsByChartType,this.yAxisComponent.getLabelsColorResolver.bind(this.yAxisComponent));this.yAxisComponent.registerYAxisLabelsProvider(Ht,ds.MAIN),this.volumesComponent=new wu(this.dynamicObjectsCanvasModel,dt,U,H,p,i,nt,this.dynamicObjects),this.chartComponents.push(this.volumesComponent);const Nt=new Hi(C,U,i,this.yAxisComponent.state,"GRID",p,()=>this.canvasBoundsContainer.getBounds(Y.ALL_PANES),()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ht)),()=>this.xAxisComponent.xAxisLabelsGenerator.labels,()=>this.yAxisComponent.model.baseLabelsModel.labels,()=>rt.mainExtent.toY(rt.mainExtent.getBaseline()),()=>i.components.grid.visible);this.chartComponents.push(Nt),this.hoverProducer=new Xf(this.crossEventProducer,U,i,ct,z,this.canvasBoundsContainer,this.paneManager,o,l),this.chartComponents.push(this.hoverProducer),this.crossToolComponent=new _h(i,vt,H,p,nt,this.crossEventProducer,this.hoverProducer),this.chartComponents.push(this.crossToolComponent);const kt=Ee(h,c.snapshotCanvas,i,p,this.canvasModels,c.chartResizer),ve=new hu(this.elements,kt);this.snapshotComponent=ve,this.chartComponents.push(ve);const Pn=new Qh(i,this.dynamicObjectsCanvasModel,Z,ct,H,p,l,this.cursorHandler,Q);this.eventsComponent=Pn,this.chartComponents.push(Pn),this.chartComponents.forEach(dg=>dg.activate()),this.enableUserControls(),p.reorderDrawers(i.drawingOrder),this.clearer=wo(this.components)}initYAxisDrawer(t){const e=new as,s=new Xe(t);e.addDrawer(s,"YAXIS_CLEAR"),this.drawingManager.addDrawer(e,"Y_AXIS");const r=new Cf(this.config,t,this.paneManager);e.addDrawer(r);const i=new bf(t,this.backgroundCanvasModel,this.canvasBoundsContainer,this.config.colors.yAxis,this.paneManager);e.addDrawer(i)}createUTCTimeOverrideConfig(t){const e=new RegExp("HH|H|mm|m|s|ss|sss|SSS");return{pattern:"MM/dd/YY",test:s=>e.test(s)&&(t.getPeriod()||0)>=86400}}static mergeConfig(t,e){for(const s in e)s in t?typeof t[s]=="object"&&Ss.mergeConfig(t[s],e[s]):t[s]=e[s];return t}getConfig(){return this.config}disableUserControls(){this.userInputListenerComponents.forEach(t=>t.deactivate()),this.hitTestCanvasModel.disableUserControls()}enableUserControls(){this.userInputListenerComponents.forEach(t=>t.activate()),this.hitTestCanvasModel.enableUserControls()}setGridConfig(t){var e,s,r,i,a;const o=this.config.components.grid;o.visible=(e=t.visible)!=null?e:!1,o.dash=(s=t.dash)!=null?s:[0,0],o.width=(r=t.width)!=null?r:1,o.color=(i=t.color)!=null?i:"#FFFFFF",this.config.colors.chartAreaTheme.gridColor=(a=t.color)!=null?a:"#FFFFFF",this.redraw()}setGridVisible(t){this.config.components&&this.config.components.grid&&(this.config.components.grid.visible=t,this.redraw())}setGridVertical(t){this.config.components.grid.vertical=t,this.redraw()}setGridHorizontal(t){this.config.components.grid.horizontal=t,this.redraw()}redraw(){this.bus.fireDraw()}getOffsets(){return this.config.components&&this.config.components.offsets}setShowCandleBorders(t=!0){this.config.components&&this.config.components.chart&&(this.config.components.chart.showCandlesBorder=t,this.redraw())}setHighLowVisible(t=!0){this.config.components&&this.config.components.highLow&&(this.config.components.highLow.visible=t,this.redraw())}setCrossToolVisible(t="cross-and-labels"){this.config.components&&this.config.components.crossTool&&(this.config.components.crossTool.type=t,this.redraw())}setHighlightsVisible(t=!0){var e;(e=this.config.components)!=null&&e.highlights&&(this.config.components.highlights.visible=t,this.redraw())}setHighlightsData(t){this.highlightsComponent.setHighlights(t)}setColors(t){$t(this.config.colors,t,{addIfMissing:!0,overrideExisting:!0}),this.redraw()}addMouseMoveOnChartElementHandler(t,e){const s=this.canvasBoundsContainer.getBoundsHitTest(t),r=this.canvasInputListener.observeMouseMove(s).subscribe(e);return()=>r.unsubscribe()}addMouseEnterOnChartElementHandler(t,e,s=!1){const r=this.canvasBoundsContainer.getBoundsHitTest(t),i=this.canvasInputListener.observeMouseEnter(r,s).subscribe(e);return()=>i.unsubscribe()}addClickOnChartElementHandler(t,e){const s=this.canvasBoundsContainer.getBoundsHitTest(t),r=this.canvasInputListener.observeClick(s).subscribe(e);return()=>r.unsubscribe()}addDragEventsListener(t,e){const s=this.canvasBoundsContainer.getBoundsHitTest(t),r=Lt(this.canvasInputListener.observeYDrag(s),this.canvasInputListener.observeXDrag(s)).subscribe(e);return()=>r.unsubscribe()}registerComponent(t,e){const s=t(this);this.components.push(s),e&&e(s),s.activate()}}class xs extends Ss{constructor(t,e={}){super(t,e),this.yAxis=this.yAxisComponent,this.xAxis=this.xAxisComponent,this.watermark=this.watermarkComponent,this.highlights=this.highlightsComponent,this.events=this.eventsComponent,this.snapshot=this.snapshotComponent,this.crosshair=this.crossToolComponent,this.navigationMap=this.navigationMapComponent,this.volumes=this.volumesComponent,this.cursors=this.cursorHandler,this.data=this.chartComponent,this.scale=this.scaleModel,this.panning=this.chartPanComponent,this.bounds=this.canvasBoundsContainer,this.hover=this.hoverProducer}registerPaneFormatters(t,e){var s;(s=this.paneManager.panes[t])==null||s.setPaneValueFormatters(e)}destroy(){this.bus.setMuted(!0),this.chartComponents.forEach(t=>t.disable()),this.parentElement.childNodes.forEach(t=>t.remove()),this.parentElement.style.width="",this.parentElement.style.height=""}showSeparateVolumes(t=!1){this.volumes&&(this.volumes.setShowVolumesSeparatly(t),this.bounds.updateYAxisWidths())}setData(t){if(Array.isArray(t)){if(t.length===0)return;const[e,...s]=t;this.chartComponent.setAllSeries(e,s)}else this.chartComponent.setMainSeries(t)}updateData(t){if(Array.isArray(t)){if(t.length===0)return;const[e,...s]=t;this.chartComponent.updateAllSeries(e,s)}else this.chartComponent.updateAllSeries(t)}setAutoScale(t=!0){this.scale.autoScale(t)}setRtl(t){this.config.rtl=t,this.bus.fireDraw()}setChartType(t){this.chartComponent.setChartType(t)}createPane(){return this.paneManager.createPane()}}var rg=Object.defineProperty,ig=Object.defineProperties,ag=Object.getOwnPropertyDescriptors,Ea=Object.getOwnPropertySymbols,og=Object.prototype.hasOwnProperty,lg=Object.prototype.propertyIsEnumerable,Oa=(n,t,e)=>t in n?rg(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,cg=(n,t)=>{for(var e in t||(t={}))og.call(t,e)&&Oa(n,e,t[e]);if(Ea)for(var e of Ea(t))lg.call(t,e)&&Oa(n,e,t[e]);return n},hg=(n,t)=>ig(n,ag(t));const La=(n,t={})=>new xs(n,t);window.DXChart=hg(cg({},window.DXChart),{Chart:xs,createChart:La})})(),ug=Tn})();})();
23
+ `;function vl(n){const t=document.createElement("template");return t.innerHTML=gl(n.devexpertsPromoLink),t}function ml(n){const t={},e=Array.from(n.querySelectorAll("[data-element]"));if(e.length!==0&&e.forEach(s=>{var r;t[(r=s.getAttribute("data-element"))!=null?r:""]=s}),fl(t))return t;throw new Error("Some chart elements are missing")}function pl(n){if(n.length>1){const t=n.reduce((r,i,a)=>{if(a!==n.length-1){const o=n[a+1].timestamp-i.timestamp;r[o]?r[o]++:r[o]=1}return r},{});let e=0,s;for(const r of Object.keys(t)){const i=parseInt(r,10),a=t[i];a>e&&i>0&&(e=a,s=i)}if(s)return s}}const Ue=(n,t,e,s=1e3)=>{var r,i,a,o;const l=(i=(r=ke(e))==null?void 0:r.timestamp)!=null?i:0,c=(o=(a=Yt(e))==null?void 0:a.timestamp)!=null?o:0;return n>c?t?{index:e.length-1+Math.ceil((n-c)/s),exact:!0}:{index:e.length-1,exact:!0}:n<l?t?{index:gt((n-l)/s),exact:!0}:{index:-1,exact:!0}:ue(e,n,h=>h.timestamp)},$n=1;function rn(n,t){return t===n?"none":t>n?"up":"down"}function bl(n,t){return t>n?"up":"down"}function Cl(n,t,e=!1){const{expansion:s,impVolatility:r,vwap:i,volume:a,timestamp:o}=n;let l=n.hi,c=n.lo,h=n.open;const g=n.close;e&&(l=g,c=g,h=g);let p=n.idx;return t!==void 0&&(p=t),{hi:l,lo:c,open:h,close:g,timestamp:o,volume:a,expansion:s,idx:p,impVolatility:r,vwap:i}}const Sr={color:"#FF00FF",lineWidth:1,hoveredLineWidth:2},xr={paintConfig:[Sr],type:"LINEAR",highLowActive:!0,visible:!0,labelLastValue:"viewport",labelMode:"label",labelAppearanceType:"badge"};var yl=Object.defineProperty,Pr=Object.getOwnPropertySymbols,wl=Object.prototype.hasOwnProperty,Sl=Object.prototype.propertyIsEnumerable,Tr=(n,t,e)=>t in n?yl(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,xl=(n,t)=>{for(var e in t||(t={}))wl.call(t,e)&&Tr(n,e,t[e]);if(Pr)for(var e of Pr(t))Sl.call(t,e)&&Tr(n,e,t[e]);return n};class Pl{constructor(t,e,s,r){this.series=t,this.config=e,this.yAxisBoundsProvider=s,this.axisState=r}getUnorderedLabels(){if(!this.config.visible)return[];const e=this.config.labelLastValue==="series"?this.series.getLastDataSeriesPoint:this.series.getLastVisualSeriesPoint,s=this.yAxisBoundsProvider(),r=this.config.labelMode,i=this.config.labelAppearanceType,a=e();if(a===void 0)return[];const o=this.series.view.toY(a.close);if(!isFinite(o))return[];const l=this.series.valueFormatter(a.close),c=this.getLabelDrawConfig();return[{labels:[xl({y:o,description:this.series.name,mode:r,labelType:i,labelText:l},c)],axisState:this.axisState,bounds:s}]}getLabelDrawConfig(){var t;const e=this.series.config,r=((t=e.paintConfig[0])!=null?t:Sr).color;return{textColor:fe(r,"white","black"),bgColor:r,paddingBottom:e.labelPaddingBottom,paddingEnd:e.labelPaddingEnd,paddingTop:e.labelPaddingTop}}}let Jt=window.devicePixelRatio,an=window.matchMedia(`screen and (resolution: ${window.devicePixelRatio}dppx)`);const Zn=()=>{an.removeEventListener("change",Zn),Jt=window.devicePixelRatio,an=window.matchMedia(`screen and (resolution: ${window.devicePixelRatio}dppx)`),an.addEventListener("change",Zn)};an.addEventListener("change",Zn);const Tl=()=>Jt,Ml=n=>Ce(Jt*n)/Jt,st=n=>gt(Jt*n)/Jt,Mr=n=>fo(Jt*n)/Jt,We=n=>JSON.parse(JSON.stringify(n));function Kn(n){return Object.entries(n)}const _r=(n,t)=>{for(const[e,s]of Array.from(n.entries()))if(s===t)return e};function Ar(n){return Object.keys(n)}function Dr(n,t){if(Object.is(n,t))return!0;if(typeof n!="object"||n===null||typeof t!="object"||t===null)return!1;const e=Object.keys(n),s=Object.keys(t);if(e.length!==s.length)return!1;for(let r=0,i=e.length;r<i;r++)if(!hasOwnProperty.call(t,e[r])||!Dr(n[e[r]],t[e[r]]))return!1;return!0}function Er(n){n===void 0&&(n={});var t=n.connector,e=t===void 0?function(){return new V}:t,s=n.resetOnError,r=s===void 0?!0:s,i=n.resetOnComplete,a=i===void 0?!0:i,o=n.resetOnRefCountZero,l=o===void 0?!0:o;return function(c){var h,g,p,b=0,E=!1,B=!1,N=function(){g==null||g.unsubscribe(),g=void 0},k=function(){N(),h=p=void 0,E=B=!1},X=function(){var Z=h;k(),Z==null||Z.unsubscribe()};return y(function(Z,J){b++,!B&&!E&&N();var K=p=p!=null?p:e();J.add(function(){b--,b===0&&!B&&!E&&(g=Jn(X,l))}),K.subscribe(J),!h&&b>0&&(h=new be({next:function(U){return K.next(U)},error:function(U){B=!0,N(),g=Jn(k,r,U),K.error(U)},complete:function(){E=!0,N(),g=Jn(k,a),K.complete()}}),te(Z).subscribe(h))})(c)}}function Jn(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];if(t===!0){n();return}if(t!==!1){var r=new be({next:function(){r.unsubscribe(),n()}});return te(t.apply(void 0,x([],C(e)))).subscribe(r)}}const on=(n,t)=>n/t,Tt=(n,t)=>n/t,re=(n,t)=>n*t,Ir=(n,t)=>(n-t)*100/t,Or=(n,t)=>n*t/100+t,Lr=n=>Math.log2(n),qn=n=>Math.pow(2,n);class _l extends tt{constructor(){super(...arguments),this._xStart=0,this._xEnd=0,this._yStart=0,this._yEnd=0,this._zoomX=1,this._zoomY=1,this._inverseY=!1,this.changed=new V,this.xChanged=this.changed.pipe(yt(()=>({start:this.xStart,end:this.xEnd})),Zt((t,e)=>t.start===e.start&&t.end===e.end),Er()),this.yChanged=this.changed.pipe(yt(()=>({start:this.yStart,end:this.yEnd})),Zt((t,e)=>t.start===e.start&&t.end===e.end),Er())}toX(t){return this.getBounds().x+Tt(t-this.xStart,this.zoomX)}xPixels(t){return Tt(t,this.zoomX)}toY(t){return this.inverseY?this.getBounds().y+Tt(t-this.yStart,this.zoomY):this.getBounds().y+this.getBounds().height-Tt(t-this.yStart,this.zoomY)}yPixels(t){return Tt(t,this.zoomY)}fromX(t){const e=t-this.getBounds().x;return re(e+Tt(this.xStart,this.zoomX),this.zoomX)}fromY(t){const e=t-this.getBounds().y;return this.inverseY?re(e+Tt(this.yStart,this.zoomY),this.zoomY):re(this.getBounds().height-e+Tt(this.yStart,this.zoomY),this.zoomY)}recalculateZoomX(){this.zoomX=this.calculateZoomX(this.xStart,this.xEnd)}recalculateZoomY(){this.zoomY=this.calculateZoomY(this.yStart,this.yEnd)}calculateZoomX(t,e){return on(e-t,this.getBounds().width)}calculateZoomY(t,e){return on(e-t,this.getBounds().height)}recalculateZoom(t=!0){this.recalculateZoomX(),this.recalculateZoomY(),t&&this.fireChanged()}setXScale(t,e,s=!0){this.xStart=t,this.xEnd=e,this.recalculateZoomX(),s&&this.fireChanged()}setYScale(t,e,s=!0){this.yStart=t,this.yEnd=e,this.recalculateZoomY(),s&&this.fireChanged()}export(){return{xStart:this.xStart,xEnd:this.xEnd,yStart:this.yStart,yEnd:this.yEnd,zoomX:this.zoomX,zoomY:this.zoomY,inverseY:this.inverseY}}apply(t){this.xStart=t.xStart,this.xEnd=t.xEnd,this.yStart=t.yStart,this.yEnd=t.yEnd,this.zoomX=t.zoomX,this.zoomY=t.zoomY,this.inverseY=t.inverseY,this.fireChanged()}fireChanged(){this.changed.next()}get xStart(){return this._xStart}set xStart(t){this._xStart=t}get xEnd(){return this._xEnd}set xEnd(t){this._xEnd=t}get yStart(){return this._yStart}set yStart(t){this._yStart=t}get yEnd(){return this._yEnd}set yEnd(t){this._yEnd=t}get zoomX(){return this._zoomX}set zoomX(t){this._zoomX=t}get zoomY(){return this._zoomY}set zoomY(t){this._zoomY=t}get inverseY(){return this._inverseY}set inverseY(t){this._inverseY=t}isViewportValid(){return this.xStart!==this.xEnd&&this.yStart!==this.yEnd&&isFinite(this.yStart)&&isFinite(this.yEnd)}}const Al=(n,t)=>!Ar(n).some(e=>n[e]!==t[e]);class Dl{constructor(t,e){this.scale=t,this.dataSeries=e,this.prevAnimationId=""}getBaselineForPercent(t){const e=this.scale.currentAnimation;let s;if(e!=null&&e.animationInProgress){e.id!==this.prevAnimationId&&(this.initialBaseline=void 0,this.targetBaseline=void 0,this.prevAnimationId=e.id);const r=e.easingFn(e.getProgress());this.initialBaseline===void 0&&(this.initialBaseline=t(ue(this.dataSeries.visualPoints,e.xStart,i=>i.centerUnit).index)),this.targetBaseline===void 0&&(this.targetBaseline=t(ue(this.dataSeries.visualPoints,e.animationConfig.targetXStart,i=>i.centerUnit).index)),s=this.initialBaseline+(this.targetBaseline-this.initialBaseline)*r}else s=t();return s}}class Br{constructor(t,e,s,r){this.dataSeries=t,this.scale=e,this.getAxisType=s,this.getBaseline=r,this.toY=i=>this.scale.toY(this.toAxisUnits(i)),this.toX=i=>this.scale.toX(i),this.xPixels=i=>this.scale.xPixels(i),this.yPixels=i=>this.scale.yPixels(i),this.percentAnimationHandler=new Dl(this.scale,this.dataSeries)}toAxisUnits(t,e=this.getBaseline){switch(this.getAxisType()){case"percent":const s=this.percentAnimationHandler.getBaselineForPercent(e);return Ir(t,s);case"logarithmic":return Lr(t);case"regular":return t}}priceFromY(t){const e=this.scale.fromY(t);return this.fromAxisUnits(e)}fromAxisUnits(t){switch(this.getAxisType()){case"percent":return Or(t,this.getBaseline());case"logarithmic":return qn(t);case"regular":return t}}}var El=Object.defineProperty,Il=Object.defineProperties,Ol=Object.getOwnPropertyDescriptors,Rr=Object.getOwnPropertySymbols,Ll=Object.prototype.hasOwnProperty,Bl=Object.prototype.propertyIsEnumerable,Fr=(n,t,e)=>t in n?El(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Rl=(n,t)=>{for(var e in t||(t={}))Ll.call(t,e)&&Fr(n,e,t[e]);if(Rr)for(var e of Rr(t))Bl.call(t,e)&&Fr(n,e,t[e]);return n},Fl=(n,t)=>Il(n,Ol(t));class Xe{constructor(t,e){this.centerUnit=t,this.close=e}y(t){return st(t.toY(this.close))}x(t){return st(t.toX(this.centerUnit))}clone(){return new Xe(this.centerUnit,this.close)}}class Yr extends tt{constructor(t,e,s,r=We(xr)){var i;super(),this.extentComponent=t,this.id=e,this.htId=s,this.name="",this.hovered=!1,this._dataPoints=[],this.pricePrecisions=[2],this.linkedDataSeriesModels=[],this._dataPointsFlat=[],this._visualPoints=[],this._visualPointsFlat=[],this.dataIdxStart=0,this.dataIdxEnd=0,this.getPaintConfig=a=>{var o;return(o=this.config.paintConfig[a])!=null?o:this.config.paintConfig[0]},this.getBaseline=(a=this.dataIdxStart)=>{var o,l;return(l=(o=this.visualPoints[a])==null?void 0:o.close)!=null?l:1},this.getTextForPoint=a=>`${a.close}`,this.getLastVisualSeriesPoint=()=>{const a=this.visualPoints,o=ue(a,this.scale.xEnd,l=>l.centerUnit).index;return a[o]},this.getLastDataSeriesPoint=()=>{const a=this.visualPoints;return Yt(a)},this.config=Kt(r,xr),this.scale=t.scale,this.view=new Br(this,this.scale,()=>this.extentComponent.yAxis.getAxisType(),this.getBaseline),this.yAxisLabelProvider=new Pl(this,this.config,t.getYAxisBounds,(i=t.yAxis)==null?void 0:i.state),this.highLowProvider=Nl(this),t.addDataSeries(this),this.activate()}get dataPoints2D(){return this._dataPoints}get dataPoints(){return this._dataPointsFlat}set dataPoints(t){this._dataPoints=qs(t),this._dataPointsFlat=this._dataPoints.flat(),this.visualPoints=this._toVisualPoints(this._dataPoints)}get visualPoints(){return this._visualPointsFlat}get visualPoints2D(){return this._visualPoints}set visualPoints(t){this._visualPoints=qs(t),this._visualPointsFlat=this._visualPoints.flat()}doActivate(){this.addRxSubscription(this.scale.xChanged.subscribe(()=>this.recalculateDataViewportIndexes())),this.addRxSubscription(this.scale.scaleInversedSubject.subscribe(()=>this.recalculateVisualPoints()))}setDataPoints(t){this.dataPoints=t,this.extentComponent.paneComponent.updateView()}_toVisualPoints(t){return t.map(e=>this.toVisualPoints(e))}moveToExtent(t){var e;this.extentComponent.removeDataSeries(this),this.extentComponent=t,this.scale=t.scale,this.view=new Br(this,this.scale,()=>this.extentComponent.yAxis.getAxisType(),this.getBaseline),this.yAxisLabelProvider.yAxisBoundsProvider=t.getYAxisBounds,this.yAxisLabelProvider.axisState=(e=t.yAxis)==null?void 0:e.state,this.deactivate(),this.activate(),t.addDataSeries(this)}toVisualPoints(t){return t.map((e,s)=>({centerUnit:s,close:e.close}))}setType(t){this.config.type=t,this.extentComponent.dynamicObjectsCanvasModel.fireDraw()}recalculateVisualPoints(){this.visualPoints=this._toVisualPoints(this.dataPoints2D)}recalculateDataViewportIndexes(t=this.scale.xStart,e=this.scale.xEnd){const{dataIdxStart:s,dataIdxEnd:r}=this.calculateDataViewportIndexes(t,e);this.dataIdxStart=s,this.dataIdxEnd=r}calculateDataViewportIndexes(t,e){const s=ue(this.visualPoints,t,i=>i.centerUnit).index,r=ue(this.visualPoints,e,i=>i.centerUnit).index;return{dataIdxStart:s,dataIdxEnd:r}}valueFormatter(t){return Nr(t)}getSeriesInViewport(t,e){let s=this.dataIdxStart,r=this.dataIdxEnd;if(e!==void 0&&t!==void 0){const i=this.calculateDataViewportIndexes(t,e);s=i.dataIdxStart,r=i.dataIdxEnd}return Eo(this.visualPoints2D,s,r)}}const Yl=n=>{const t={high:Number.MIN_SAFE_INTEGER,low:Number.MAX_SAFE_INTEGER,highIdx:0,lowIdx:0};for(let e=0;e<n.length;e++){const s=n[e];s.close>t.high&&(t.high=s.close,t.highIdx=e),s.close<t.low&&(t.low=s.close,t.lowIdx=e)}return t},Nl=n=>({isHighLowActive:()=>n.config.highLowActive,calculateHighLow:t=>{const e=Yl(n.getSeriesInViewport(t==null?void 0:t.xStart,t==null?void 0:t.xEnd).flat());return Fl(Rl({},e),{high:n.view.toAxisUnits(e.high),low:n.view.toAxisUnits(e.low)})}}),Nr=n=>{const e=i=>Math.ceil(Math.log(Math.abs(i))*Math.LOG10E),r=((i,a=5)=>Math.max(0,a-Math.max(0,e(i))))(n);return wt.makeDecimal(n,r)};class ln extends Xe{constructor(t,e,s,r,i,a,o,l,c=!1,h=!1,g=!1){super(t,r),this.startUnit=t-e/2,this.width=e,this.open=s,this.high=i,this.low=a,this.name=o,this.candle=l,this.hasBorder=c,this.isActive=h,this.isHollow=g}bodyHeight(t){return st(Math.abs(t.toY(this.open)-t.toY(this.close)))}candleHeight(t){return st(Math.abs(t.toY(this.high)-t.toY(this.low)))}bodyAsVLine(t){if(this.width<2)return[this.centerUnit,this.yLineStart(t),this.width,this.candleHeight(t)]}bodyRect(t){return[this.startUnit,this.yBodyStart(t),this.width,this.bodyHeight(t)]}getCandle(){return this.candle}yBodyKeyPoints(t){const e=st(t.toY(this.high)),s=st(t.toY(this.low)),r=st(t.toY(this.open)),i=st(t.toY(this.close)),[a,o]=r>i?[i,r]:[r,i],[l,c]=e>s?[s,e]:[e,s];return[l,a,o,c]}yLineEnd(t){return st(Math.max(t.toY(this.high),t.toY(this.low)))}yLineStart(t){return st(Math.min(t.toY(this.high),t.toY(this.low)))}yBodyStart(t){return st(Math.min(t.toY(this.open),t.toY(this.close)))}yBodyEnd(t){return st(Math.max(t.toY(this.open),t.toY(this.close)))}xCenter(t){return this.x(t)}xStart(t){return Ml(t.toX(this.startUnit))}}const De=60,Hr=(n,t,e,s,r=De)=>{const i=ze(n,s,r);i.volume=e;let a;if(t.length===0)a=0;else if(s>=t.length){const o=t[t.length-1],c=(s-(t.length-1))*e;a=o.centerUnit+c}else{const o=t[0],c=-s*e;a=o.centerUnit-c}return new ln(a,e,i.open,i.close,i.lo,i.hi,rn(i.open,i.close),i)},Hl=(n,t,e,s,r=De)=>{const i=kl(n,s,r);let a;if(t.length===0)a=0;else if(s>=t.length){const o=t[t.length-1],c=(s-(t.length-1))*e;a=o.centerUnit+c}else{const o=t[0],c=-s*e;a=o.centerUnit-c}return new Xe(a,i.close)},ze=(n,t,e=De)=>({hi:NaN,lo:NaN,open:NaN,close:NaN,timestamp:kr(n,t,e),volume:NaN,expansion:!0,idx:t}),kl=(n,t,e=De)=>({close:NaN,timestamp:kr(n,t,e)});function kr(n,t,e=De){var s,r;const i=Ce(t);if(n.length===0)return 0;const a=Yt(n);if(i>=n.length&&a)return jr(a,n.length-1,i,e);const o=ke(n);return i<0&&o?jr(o,0,i,e):(r=(s=n[i])==null?void 0:s.timestamp)!=null?r:0}const jr=(n,t,e,s=De)=>n.timestamp+(e-(t!=null?t:0))*s;class jl{constructor(t){this.type=t,this.mainDataPoints=[],this.mainVisualPoints=[],this.dataUpdatedSubject=new V,this.dataSetSubject=new V,this.dataRemovedSubject=new V,this.dataPrependSubject=new V,this.meanDataWidth=1,this.period=1}dataFromTimestamp(t,e=!0,s=this.mainDataPoints){const r=Ue(t,e,s,this.period);return this.dataFromIdx(r.index)}recalculatePeriod(){const t=pl(this.mainDataPoints);t&&(this.period=t)}dataFromIdx(t){const e=this.mainVisualPoints[t];return e||(this.type==="candle"?Hr(this.mainDataPoints,this.mainVisualPoints,this.meanDataWidth,t,this.period):Hl(this.mainDataPoints,this.mainVisualPoints,this.meanDataWidth,t,this.period))}}var Ul=Object.defineProperty,Ur=Object.getOwnPropertySymbols,Wl=Object.prototype.hasOwnProperty,Xl=Object.prototype.propertyIsEnumerable,Wr=(n,t,e)=>t in n?Ul(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,zl=(n,t)=>{for(var e in t||(t={}))Wl.call(t,e)&&Wr(n,e,t[e]);if(Ur)for(var e of Ur(t))Xl.call(t,e)&&Wr(n,e,t[e]);return n};class Vl{constructor(t,e){this.canvasModel=t,this.config=e,this.prevState={},this.prevWidth=0,this.prevHeight=0}draw(){if(Dr(this.config.colors.chartAreaTheme,this.prevState)&&this.prevHeight===this.canvasModel.height&&this.prevWidth===this.canvasModel.width)return;this.canvasModel.clear();const t=this.canvasModel.ctx;if(this.config.colors.chartAreaTheme.backgroundMode==="gradient"){const e=t.createLinearGradient(0,0,this.canvasModel.width,this.canvasModel.height);e.addColorStop(0,this.config.colors.chartAreaTheme.backgroundGradientTopColor),e.addColorStop(1,this.config.colors.chartAreaTheme.backgroundGradientBottomColor),t.fillStyle=e}else t.fillStyle=this.config.colors.chartAreaTheme.backgroundColor;t.fillRect(0,0,this.canvasModel.width,this.canvasModel.height),this.prevState=zl({},this.config.colors.chartAreaTheme),this.prevWidth=this.canvasModel.width,this.prevHeight=this.canvasModel.height}getCanvasIds(){return[this.canvasModel.canvasId]}}const cn=(n,t,e,s,r,i,a)=>{const o=Tl(),l=[e*o,s*o,r*o,i*o];let c=n.getImageData(...l);if(a!==void 0){const h=c.data[3]/255;if(h===1)for(let g=3;g<c.data.length;g+=4)c.data[g]=gt(c.data[g]*a);else for(let g=0;g<c.data.length;g++){const p=c.data[g];c.data[g]=g%4===3?gt(p*a):gt(h*p)}c=new ImageData(c.data,c.width,c.height,{colorSpace:c.colorSpace})}t.putImageData(c,l[0],l[1])},Xr=(n,{x:t,width:e,activeCandle:s})=>new ln(t,e,n.open,n.close,n.hi,n.lo,rn(n.open,n.close),n,!0,Qn(n,s)),Gl=(n,{x:t,width:e,activeCandle:s,prevCandle:r})=>{var i;return new ln(t,e,n.open,n.close,n.hi,n.lo,bl((i=r==null?void 0:r.close)!=null?i:n.close,n.close),n,!0,Qn(n,s),n.close>n.open)},zr=(n,{x:t,width:e,activeCandle:s,prevCandle:r})=>{var i;return new ln(t,e,n.open,n.close,n.hi,n.lo,rn((i=r==null?void 0:r.close)!=null?i:n.close,n.close),n,!0,Qn(n,s),n.close>n.open)},$l=zr,Qn=(n,t)=>{const e=t&&t.idx===n.idx;return e!=null?e:!1},Vr=()=>$n,we=class{static autoDetectIncrementOfValueRange(n){const t=this.getDigitsInNumber(n);return n===0?.01:Math.pow(10,t-3)}static getDigitsInNumber(n){const t=s=>gt(Math.log10((s^s>>31)-(s>>31)))+1;let e=t(n);return e===1&&n<1&&(e=t(n*1e9)-9),e}static getPriceIncrement(n,t=[]){if(!this.validatePriceIncrementsOrPrecisions(t))return this.DEFAULT_INCREMENT;if(isNaN(n))return Math.round(t[0]);n=Math.abs(n);let e=1;const s=1e-6;for(;e<t.length&&n>t[e]+Math.min(t[e-1],t[e+1])*s;)e+=2;return e>=t.length||n<t[e]-Math.min(t[e-1],t[e+1])*s?t[e-1]:Math.min(t[e-1],t[e+1])}static getPricePrecision(n,t){if(!this.validatePriceIncrementsOrPrecisions(t))return 0;if(isNaN(n))return Math.round(t[0]);n=Math.abs(n);let e=1;for(;e<t.length&&n>t[e];)e+=2;return Math.round(t[e-1])}static roundPriceToIncrement(n,t,e){const s=we.getPriceIncrement(e||n,t);return wt.roundToNearest(n,s)}static computePrecisions(n){const t=[...n];for(let e=0;e<n.length;e+=2)t[e]=we.calculatePrecision(n[e]);for(let e=1;e<n.length;e+=2)t[e]=n[e]+Math.min(n[e-1],n[e+1])*we.RELATIVE_EPS;return t}static calculatePrecision(n){let t=n>1?Math.abs(Math.floor(n)-n):n;for(let e=0;e<we.MAXIMUM_PRECISION;e++){const s=Math.floor(t+.5),r=Math.abs(t*we.RELATIVE_EPS);if(s>=t-r&&s<=t+r)return e;t*=10}return we.MAXIMUM_PRECISION}static validatePriceIncrementsOrPrecisions(n){return!(n.length===0||!Array.isArray(n)||n.findIndex(t=>t!==0)===-1)}};let qt=we;qt.DEFAULT_INCREMENT=.01,qt.DEFAULT_PRECISION=2,qt.RELATIVE_EPS=1e-8,qt.MAXIMUM_PRECISION=10;const Zl=(n,t)=>{var e;const s=(e=Yt(t))!=null?e:1;return Math.pow(10,-s)};var Kl=Object.defineProperty,Jl=Object.defineProperties,ql=Object.getOwnPropertyDescriptors,Gr=Object.getOwnPropertySymbols,Ql=Object.prototype.hasOwnProperty,tc=Object.prototype.propertyIsEnumerable,$r=(n,t,e)=>t in n?Kl(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ec=(n,t)=>{for(var e in t||(t={}))Ql.call(t,e)&&$r(n,e,t[e]);if(Gr)for(var e of Gr(t))tc.call(t,e)&&$r(n,e,t[e]);return n},nc=(n,t)=>Jl(n,ql(t));const sc=n=>({isHighLowActive:()=>!0,calculateHighLow:t=>{const e=t?t.xStart:n.scale.xStart,s=t?t.xEnd:n.scale.xEnd,{dataIdxStart:r,dataIdxEnd:i}=n.calculateDataViewportIndexes(e,s),a=n.visualPoints.slice(r,i+1),o=Zr(a),l=()=>{var c,h;return(h=(c=n.visualPoints[r])==null?void 0:c.close)!=null?h:1};return nc(ec({},o),{low:n.view.toAxisUnits(o.low,l),high:n.view.toAxisUnits(o.high,l)})}}),Zr=n=>{const t={high:Number.MIN_SAFE_INTEGER,low:Number.MAX_SAFE_INTEGER,highIdx:0,lowIdx:0};for(let e=0;e<n.length;e++){const s=n[e];s.high>t.high&&(t.high=s.high,t.highIdx=e),s.low<t.low&&(t.low=s.low,t.lowIdx=e)}return t},rc=30,ic=(n,t,e)=>{const s=n.startViewportMovementAnimation(t,{duration:rc,targetXStart:e.xStart,targetXEnd:e.xEnd,targetYStart:e.yStart,targetYEnd:e.yEnd,targetZoomX:e.zoomX,targetZoomY:e.zoomY});t.currentAnimation=s};class ac{constructor(t,e){this.delegate=t,this.highLowPostProcessor={},this.highLowProviders=e!=null?e:{}}setHighLowProvider(t,e){this.highLowProviders[t]=e}deleteHighLowProvider(t){delete this.highLowProviders[t]}setHighLowPostProcessor(t,e){this.highLowPostProcessor[t]=e}doAutoYScale(t){oc(this.delegate,t,Object.values(this.highLowProviders),Object.values(this.highLowPostProcessor))}}const oc=(n,t,e,s)=>{const r=e.filter(o=>o.isHighLowActive()).map(o=>o.calculateHighLow(t)),i=Kr(r),a=s.reduce((o,l)=>l(o),i);t.yStart=a.low,t.yEnd=a.high,t.zoomY=n.calculateZoomY(t.yStart,t.yEnd)};function Kr(n){if(n.length===0)return lc();let t=n[0].high,e=n[0].low;return n.forEach(s=>{isFinite(s.high)&&s.high>=t&&(t=s.high),isFinite(s.low)&&s.low<=e&&(e=s.low)}),{low:e,high:t}}const lc=()=>({high:Number.MIN_SAFE_INTEGER,low:Number.MAX_SAFE_INTEGER});var cc=Object.defineProperty,Jr=Object.getOwnPropertySymbols,hc=Object.prototype.hasOwnProperty,dc=Object.prototype.propertyIsEnumerable,qr=(n,t,e)=>t in n?cc(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Qr=(n,t)=>{for(var e in t||(t={}))hc.call(t,e)&&qr(n,e,t[e]);if(Jr)for(var e of Jr(t))dc.call(t,e)&&qr(n,e,t[e]);return n};const uc=(n,t,e,s)=>{var r,i,a,o;const l=Qr({},n),c=(i=(r=t[e])==null?void 0:r.startUnit)!=null?i:0,h=(o=(a=Io(-e,t))==null?void 0:a.startUnit)!=null?o:0;let g=n.xStart,p=n.xEnd;return l.xStart>=h&&(g=h,p=p-(l.xStart-h)),l.xEnd<c&&(g=c-re(s.width,l.zoomX),p=c),l.xStart=g,l.xEnd=p,l},fc=(n,t,e,s)=>{const r=Qr({},t),i=s(),a=r.xEnd-r.xStart,o=a<e.minCandles,l=i.width/e.minWidth,c=a>l;if(i.width>0){if(c)return r.xStart=r.xEnd-l,r.zoomX=on(r.xEnd-r.xStart,i.width),r;if(o)return r.xEnd=n.xEnd,r.xStart=r.xEnd-e.minCandles,r.zoomX=on(r.xEnd-r.xStart,i.width),r}return r},gc=(n,t)=>n/t,vc=(n,t)=>n/t,Ng=(n,t)=>n*t,ti=(n,t)=>{const e=n.zoomY;n.zoomY=vc(n.zoomX,t);const s=n.zoomY/e,r=n.yEnd-n.yStart,a=r*s-r;n.yEnd=n.yEnd+a},mc=(n,t)=>{const e=n.xStart;n.xStart=t,n.xEnd=n.xEnd+(t-e)},pc=(n,t)=>{const e=n.yStart;n.yStart=t,n.yEnd=n.yEnd+(t-e)},ei=(n,t,e,s,r)=>{const i=(t.xEnd-t.xStart)*s,a=i*e,o=i*(1-e);return r?(t.xStart=t.xStart+a,t.xEnd=t.xEnd-o):(t.xStart=t.xStart-a,t.xEnd=t.xEnd+o),t.zoomX=n.calculateZoomX(t.xStart,t.xEnd),t},bc=(n,t,e,s)=>ei(n,t,1,e,s);var Cc=Object.defineProperty,ni=Object.getOwnPropertySymbols,yc=Object.prototype.hasOwnProperty,wc=Object.prototype.propertyIsEnumerable,si=(n,t,e)=>t in n?Cc(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,hn=(n,t)=>{for(var e in t||(t={}))yc.call(t,e)&&si(n,e,t[e]);if(ni)for(var e of ni(t))wc.call(t,e)&&si(n,e,t[e]);return n};const Sc=()=>({high:Number.NEGATIVE_INFINITY,low:Number.POSITIVE_INFINITY,highIdx:0,lowIdx:0});class ri extends _l{constructor(t,e,s){super(),this.config=t,this.getBounds=e,this.canvasAnimation=s,this.scaleInversedSubject=new V,this.beforeStartAnimationSubject=new V,this.history=[],this.zoomXYRatio=0,this.xConstraints=[],this.scalePostProcessor=(r,i)=>this.xConstraints.reduce((a,o)=>o(r,a),i),this.state=We(t.scale),this.autoScaleModel=new ac(this),this.offsets=this.config.components.offsets,this.addXConstraint((r,i)=>fc(r,i,this.config.components.chart,this.getBounds))}addXConstraint(t){this.xConstraints=[...this.xConstraints,t]}updateOffsets(t){this.offsets=hn(hn({},this.offsets),t),this.doAutoScale(!0)}getOffsets(){return this.offsets}zoomXToPercent(t,e,s=!1,r=this.config.scale.zoomSensitivity){const i=this.config.scale.disableAnimations||s;i&&this.haltAnimation(),this.beforeStartAnimationSubject.next();const a=this.export();ei(this,a,t,r,e),this.zoomXTo(a,i)}zoomXToEnd(t,e=this.config.scale.zoomSensitivity){this.config.scale.disableAnimations&&this.haltAnimation(),this.beforeStartAnimationSubject.next();const s=this.export();bc(this,s,e,t),this.zoomXTo(s,this.config.scale.disableAnimations)}haltAnimation(){var t;(t=this.currentAnimation)!=null&&t.animationInProgress&&(this.currentAnimation.finishAnimation(),this.doAutoScale())}zoomXTo(t,e){const s=hn({},t),r=this.scalePostProcessor(s,t);this.state.lockPriceToBarRatio&&ti(r,this.zoomXYRatio),this.state.auto&&this.autoScaleModel.doAutoYScale(r),e?this.apply(r):ic(this.canvasAnimation,this,r)}setXScale(t,e){const s=this.export();super.setXScale(t,e,!1);const r=this.export(),i=this.scalePostProcessor(s,r);this.state.lockPriceToBarRatio&&ti(i,this.zoomXYRatio),this.state.auto&&this.autoScaleModel.doAutoYScale(i),this.apply(i)}moveXStart(t){const e=this.export(),s=hn({},e);this.haltAnimation(),mc(e,t);const r=this.scalePostProcessor(s,e);this.state.auto&&this.autoScaleModel.doAutoYScale(r),this.apply(r)}moveYStart(t){if(this.haltAnimation(),!this.state.auto){const e=this.export();pc(e,t),this.apply(e)}}doAutoScale(t=!1){if(!this.isViewportAnimationInProgress()&&this.state.auto||t){const e=this.export();this.autoScaleModel.doAutoYScale(e),Al(e,this.export())||this.apply(e)}}isViewportAnimationInProgress(){const t=this.currentAnimation;return t==null?void 0:t.animationInProgress}pushToHistory(t){this.history.push(t)}popFromHistory(){return this.history.pop()}clearHistory(){this.history=[]}isDefaultXBounds(){return this.xStart===0&&this.xEnd===0}isDefaultYBounds(){return this.yStart===0&&this.yEnd===0}isScaleReady(){return!this.isDefaultXBounds()&&!this.isDefaultYBounds()}autoScale(t=!0){this.config.components.yAxis.type==="percent"?this.state.auto=!0:this.state.auto=t,t&&(this.clearHistory(),this.doAutoScale())}setLockPriceToBarRatio(t=!1){const{type:e}=this.config.components.yAxis;if(e==="percent"||e==="logarithmic"){this.state.lockPriceToBarRatio=!1;return}t&&this.recalculateZoomXYRatio(),this.state.lockPriceToBarRatio=t}recalculateZoomXYRatio(){this.zoomXYRatio=gc(this.zoomX,this.zoomY)}}class xc extends ri{constructor(t,e,s,r){super(e,s,r),this.delegate=t,this.config=e,this.getBounds=s}doActivate(){this.addRxSubscription(this.delegate.xChanged.subscribe(()=>this.doAutoScale(this.state.auto)))}get xStart(){return this.delegate.xStart}set xStart(t){this.delegate.xStart=t}get xEnd(){return this.delegate.xEnd}set xEnd(t){this.delegate.xEnd=t}get zoomX(){return this.delegate.zoomX}set zoomX(t){this.delegate.zoomX=t}observeXChanged(){return this.delegate.xChanged}fireChanged(){this.delegate.changed.next(),this.changed.next()}}const Pc=en().colors;class ge extends Yr{constructor(t,e,s,r,i,a,o,l,c=Pc){super(t,e,s),this.eventBus=r,this.candlesTransformersByChartType=o,this.candleWidthByChartType=l,this.colors=c,this.zippedHighLow=Sc(),this.lastPriceMovement="none",this.lastVisualCandleChangedSubject=new V,this.meanCandleWidth=$n,this._instrument=a,this.instrument=a,this.highLowProvider=sc(this),this.scale=i,this.name=a.symbol}get dataPoints(){return super.dataPoints}set dataPoints(t){super.dataPoints=t,this.applyPriceMovement()}get instrument(){return this._instrument}set instrument(t){var e;this._instrument=t,this.pricePrecisions=qt.computePrecisions((e=t.priceIncrements)!=null?e:[.01])}recalculateDataViewportIndexes(t=this.scale.xStart,e=this.scale.xEnd){super.recalculateDataViewportIndexes(t,e),this.recalculateZippedHighLow(),this.eventBus.fireDraw()}applyPriceMovement(){const t=Yt(this.dataPoints);t&&(this.lastPriceMovement=rn(t.open,t.close))}recalculateVisualPoints(){super.recalculateVisualPoints(),this.recalculateMeanCandleWidth(this.visualPoints)}recalculateZippedHighLow(){return this.zippedHighLow=Zr(this.visualPoints.slice(this.dataIdxStart,this.dataIdxEnd))}updateCurrentPrice(t){this.previousPrice=this.currentPrice||t,this.currentPrice=t,this.currentPrice!==this.previousPrice&&(this.lastPriceMovement=this.currentPrice>this.previousPrice?"up":"down")}updateCandleSeriesColors(t){this.colors=Kt(t,this.colors),this.recalculateVisualPoints()}observeLastVisualCandleChanged(){return this.lastVisualCandleChangedSubject.asObservable()}doDeactivate(){super.doDeactivate()}toVisualPoints(t,e=0){var s,r;if(t.length===0)return[];const i=this.config.type,a=[];let o=e;const l=(s=this.candleWidthByChartType[i])!=null?s:Vr;for(let c=0;c<t.length;c++){const h=t[c],g=t[c-1],p=l(h),b=o+p/2,E=(r=this.candlesTransformersByChartType[i])!=null?r:Xr;a.push(E(h,{x:b,width:p,prevCandle:g,activeCandle:this.activeCandle})),o+=p}return a}recalculateMeanCandleWidth(t){t.length!==0?this.meanCandleWidth=t.reduce((e,s)=>e+s.width,0)/t.length:this.meanCandleWidth=$n}setActiveCandle(t){this.activeCandle=t,this.recalculateVisualPoints()}clearData(){this.dataPoints=[],this.clearVisualCandles(),this.clearPrices()}clearPrices(){this.previousPrice=void 0,this.currentPrice=void 0,this.lastPriceMovement="none"}clearVisualCandles(){this.visualPoints=[]}}function Hg(n){switch(n){case"line":case"area":return!0;default:return!1}}class Tc{constructor(t){this.config=t}draw(t,e,s,r){if(s instanceof ge){const i=Lt(e);if(i.length===0)return;r.singleColor?t.strokeStyle=r.singleColor:t.strokeStyle=s.colors.areaTheme.lineColor,s.hovered?t.lineWidth=this.config.selectedWidth:t.lineWidth=this.config.areaLineWidth;const a=s.extentComponent.getBounds(),o=i[0],l=s.view.toX(o.centerUnit);for(let c=0;c<i.length;c++){const h=i[c-1],g=i[c+1],p=i[c],b=s.view.toX(p.centerUnit),E=s.view.toY(p.close),B=a.y+a.height;if(h===void 0)t.beginPath(),t.lineTo(gt(b),B),t.moveTo(gt(b),E);else if(g===void 0){t.lineTo(gt(b),E),t.stroke(),t.lineTo(gt(b),B),t.lineTo(gt(l),B),t.closePath();let N;r.singleColor?t.fillStyle=r.singleColor:t.fillStyle=s.colors.areaTheme.startColor&&s.colors.areaTheme.stopColor?(N=t.createLinearGradient(0,0,0,a.height),N.addColorStop(0,s.colors.areaTheme.startColor),N.addColorStop(1,s.colors.areaTheme.stopColor),N):"",t.fill()}else t.lineTo(gt(b),E)}}}}function ii(n,t,e,s,r,i=4,a=!0,o=!1){n.save(),n.beginPath(),n.moveTo(t+i,e),n.lineTo(t+s-i,e),n.quadraticCurveTo(t+s,e,t+s,e+i),n.lineTo(t+s,e+r-i),n.quadraticCurveTo(t+s,e+r,t+s-i,e+r),n.lineTo(t+i,e+r),n.quadraticCurveTo(t,e+r,t,e+r-i),n.lineTo(t,e+i),n.quadraticCurveTo(t,e,t+i,e),n.closePath(),a&&n.fill(),o&&n.stroke(),n.restore()}function Mc(n,t,e,s,r,i,a,o,l,c,h=4,g=!0,p=!1){const b=c==="right"?o:-o,E=c==="right"?h:-h,B=h;n.save(),n.beginPath(),l?n.moveTo(i+E,a):n.moveTo(i,a),l?(n.lineTo(i+b-E,a),n.quadraticCurveTo(i+b,a,i+b,a-B),n.lineTo(i+b,e+B),n.quadraticCurveTo(i+b,e,i+b-E,e),n.lineTo(t+E,e)):(n.lineTo(i+b,a),n.lineTo(i+b,e),n.lineTo(t,e)),l?(n.quadraticCurveTo(t,e,t-E/3,e+B/3),n.lineTo(s+E/3,r-B/3),n.quadraticCurveTo(s,r,s+E/3,r+B/3),n.lineTo(i-E/3,a-B/3),n.quadraticCurveTo(i,a,i+E/3,a)):(n.lineTo(s,r),n.lineTo(i,a)),n.closePath(),g&&n.fill(),p&&n.stroke(),n.restore()}function _c(n,t,e,s,r,i=1){n.save(),n.lineWidth=i,n.beginPath(),n.moveTo(t,e),n.lineTo(s,r),n.stroke(),n.closePath(),n.restore()}function Se(n,t){n.save(),n.lineWidth%2&&n.translate(.5,.5),t(),n.restore()}function ai(n,t,e){const s=Math.min(t.x,e.x)+.5,r=Math.min(t.y,e.y),i=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);n.fillRect(s,r,i,a)}const kg=n=>Array.isArray(n[0])?n:[n];class Ac{constructor(t,e){this.paneManager=t,this.seriesDrawers=e}draw(t,e,s){const r=t.ctx,i=s&&this.paneManager.panes[s];e&&(r.save(),i&&xe(r,i.getBounds()),this.drawSeries(r,e),r.restore())}drawSeries(t,e){if(e.config.visible){const s=e.config.type,r=this.seriesDrawers[s];if(r){const i=e.getSeriesInViewport(e.scale.xStart-1,e.scale.xEnd+1);i&&i.length>=1&&r.draw(t,i,e,{})}else console.error(`Data series drawer with type ${s} isn't registered!`)}}}const xe=(n,t)=>{n.beginPath(),n.rect(t.x,t.y,t.width,t.height),n.clip(),n.closePath()},Ee=(n,t,e,s,r=t)=>{s.forceBold?n.lineWidth=s.forceBold:e.hovered?n.lineWidth=r:n.lineWidth=t};class Dc{constructor(t){this.config=t}setFillStyle(t,e,s,r){if(e.singleColor)t.strokeStyle=e.singleColor;else{const i=s.colors.barTheme;i&&(t.strokeStyle=i[`${r.name}Color`])}}draw(t,e,s,r){if(s instanceof ge){const i=Lt(e);Ee(t,this.config.barLineWidth,s,r),Se(t,()=>{for(const a of i){this.setFillStyle(t,r,s,a),t.beginPath();const o=st(s.view.toX(a.centerUnit)),l=st(s.view.toX(a.startUnit)),[c,h,g,p]=a.yBodyKeyPoints(s.view),b=st(s.view.xPixels(a.width)/2),E=st(s.view.toY(a.close)),B=st(s.view.toY(a.open));this.config.showWicks?(t.moveTo(o,c),t.lineTo(o,p)):(t.moveTo(o,h),t.lineTo(o,g)),t.moveTo(o,E),t.lineTo(o+b,E),t.moveTo(l,B),t.lineTo(o,B),t.stroke()}})}}}class Ec{constructor(t,e){this.baseLineModel=t,this.canvasBoundContainer=e}draw(t,e,s,r){if(r!==void 0&&s instanceof ge){const i=Lt(e),a=this.baseLineModel.baselineYPercents,o=this.canvasBoundContainer.getBounds(Y.CHART),l=o.y+o.height*(a/100),c=i[0];for(let h=0;h<i.length;h++){const g=i[h],p=i[h-1],b=i[h+1],E=s.view.toX(c.centerUnit),B=s.view.toX(g.centerUnit),N=s.view.toY(g.close),k=p?s.view.toY(p.close)<l:!1,X=N<l;if(p!==void 0&&k!==X){oi(t,s,r,k);const Z=s.view.toX(p.centerUnit),J=s.view.toY(p.close),K=B-Z,U=N-J,q=K/U,at=N-l,ot=q*at,nt=Z+(K-ot);t.lineTo(nt,l),t.stroke(),t.lineTo(E,l),t.closePath(),t.fill(),t.beginPath(),t.moveTo(nt,l)}p===void 0?(t.beginPath(),t.moveTo(B,N)):b===void 0?(oi(t,s,r,X),t.lineTo(B,N),t.stroke(),t.lineTo(B,l),t.lineTo(E,l),t.closePath(),t.fill(),t.beginPath(),t.moveTo(E,l),t.lineTo(B,l),t.strokeStyle=s.colors.baseLineTheme.baselineColor,t.stroke()):t.lineTo(B,N)}}}}const oi=(n,t,e,s)=>{e.singleColor?(n.fillStyle=e.singleColor,n.strokeStyle=e.singleColor):(n.fillStyle=s?t.colors.baseLineTheme.upperSectionFillColor:t.colors.baseLineTheme.lowerSectionFillColor,n.strokeStyle=s?t.colors.baseLineTheme.upperSectionStrokeColor:t.colors.baseLineTheme.lowerSectionStrokeColor)};class Ic{constructor(t){this.config=t,this.pixelLength=1,this.lineWidthCU=1,this.halfLineWidthCU=1}draw(t,e,s,r){if(s instanceof ge){const i=Lt(e);Ee(t,this.config.candleLineWidth,s,r,this.config.candleLineWidth),Se(t,()=>{this.pixelLength=1/Jt,this.halfLineWidthCU=t.lineWidth/2,this.lineWidthCU=t.lineWidth;for(const a of i){const{candleTheme:o,activeCandleTheme:l}=s.colors;o&&l&&this.drawCandle(t,r,s,a)}})}}drawCandle(t,e,s,r){const{candleTheme:i,activeCandleTheme:a}=s.colors,o=r.name,l=r.isActive?a:i,c=r.isHollow;e.singleColor?t.fillStyle=e.singleColor:c?t.fillStyle=l[`${o}WickColor`]:t.fillStyle=l[`${o}Color`];const h=st(s.view.toX(r.startUnit)),g=st(s.view.xPixels(r.width)),p=r.bodyHeight(s.view),[b,E,B,N]=r.yBodyKeyPoints(s.view),k=E===B?E+1:B,X=b===N?b+1:N,Z=l[`${o}Color`],J=o==="none"?Z:l[`${o}WickColor`];t.fillStyle=Z,e.singleColor?t.strokeStyle=e.singleColor:t.strokeStyle=J;const K=c||(r.hasBorder&&r.isActive?this.config.showActiveCandlesBorder:this.config.showCandlesBorder),U=this.config.showWicks;if(g<2)t.beginPath(),t.moveTo(h,U?b:E),t.lineTo(h,U?X:k),t.stroke();else if(g<3)t.beginPath(),t.moveTo(h,U?b:E),t.lineTo(h,U?X:k),t.moveTo(h+1,E),t.lineTo(h+1,k),t.stroke();else if(g===3){const q=g/Jt;this.drawCandlesWicks(t,h+q,b,X,E,k),c||(t.beginPath(),t.moveTo(h+q,E),t.lineTo(h+q,k),t.stroke()),this.drawCandleBorder(t,e,l,r,h+this.halfLineWidthCU,E+this.halfLineWidthCU,g-this.lineWidthCU,p-this.lineWidthCU)}else{const q=r.x(s.view);this.drawCandlesWicks(t,q,b,X,E,k-1);const at=this.config.candlePaddingPercent,ot=Math.max(st(g*at/2),this.pixelLength),nt=h+ot,rt=g-ot*2;c||(e.singleColor&&(t.fillStyle=e.singleColor),t.fillRect(nt,E,rt,p)),K&&this.drawCandleBorder(t,e,l,r,nt+this.halfLineWidthCU,E+this.halfLineWidthCU,rt-this.lineWidthCU,p-this.lineWidthCU)}}drawCandlesWicks(t,e,s,r,i,a){this.config.showWicks&&(t.beginPath(),t.moveTo(e,s),t.lineTo(e,i),t.moveTo(e,a),t.lineTo(e,r),t.stroke())}drawCandleBorder(t,e,s,r,i,a,o,l){if(e.singleColor)t.strokeStyle=e.singleColor;else{const c=r.name;t.strokeStyle=c==="none"?s[`${c}Color`]:s[`${c}WickColor`]}t.strokeRect(i,a,o,l)}}class Oc{constructor(t){this.config=t}draw(t,e,s,r){if(s instanceof ge){const i=e.flat(),a=s.scale.getBounds(),o=a.y+a.height;for(const l of i){t.beginPath();const c=l.name,h=this.config.barCapSize,g=s.colors.histogram;if(g===void 0)return;r.singleColor?t.fillStyle=r.singleColor:t.fillStyle=g[`${c}Bright`];const p=l.xStart(s.view),b=st(s.view.toY(l.close)),E=st(s.view.xPixels(l.width));t.fillRect(p,b,E,h);const B=t.createLinearGradient(0,b+h,0,o);r.singleColor?t.fillStyle=r.singleColor:(B.addColorStop(0,g[`${c}Cap`]),B.addColorStop(1,g[`${c}Bottom`]),t.fillStyle=B),E===0?(t.beginPath(),t.strokeStyle=B,t.moveTo(p,b+h),t.lineTo(p,o),t.stroke(),t.closePath()):t.fillRect(p,b+h,E,o-b-h)}}}}class Lc{constructor(t){this.config=t}draw(t,e,s,r){if(s instanceof ge){const i=Lt(e);Ee(t,this.config.lineWidth,s,r,this.config.selectedWidth);const a=s.colors.lineTheme;t.lineCap="round",r.singleColor&&(t.strokeStyle=r.singleColor);for(let o=1;o<i.length;o++){const l=i[o-1],c=i[o],h=c.name;r.singleColor||(t.strokeStyle=a[`${h}Color`]);const g=s.view.toX(l.centerUnit),p=s.view.toY(l.close),b=s.view.toX(c.centerUnit),E=s.view.toY(c.close);t.beginPath(),t.moveTo(g,p),t.lineTo(b,E),t.stroke()}}}}const Bc=1.5;class Rc{constructor(t){this.config=t}draw(t,e,s,r){var i;t.fillStyle=(i=r.singleColor)!=null?i:this.config.mainColor;for(const a of Lt(e)){t.beginPath();const o=st(s.view.toX(a.centerUnit)),l=st(s.view.toY(a.close));t.arc(o,l,Bc,0,Math.PI*2,!0),t.fill()}}}const Fc=["candle","bar","line","area","scatterPlot","hollow","histogram","baseline","trend"];class Yc{constructor(t,e,s){this.drawer=t,this.config=e,this.chartBounds=s}draw(t,e,s,r){this.isChartTypeAllowed()&&(this.beforeDraw(t),this.drawer.draw(t,e,s,r),this.afterDraw(t,s))}beforeDraw(t){t.restore(),t.save(),xe(t,this.chartBounds())}isChartTypeAllowed(){return Fc.includes(this.config.components.chart.type)}afterDraw(t,e){t.restore(),t.save(),xe(t,e.scale.getBounds())}}class Nc{constructor(t){this.chartModel=t}draw(t,e,s,r){e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);t.fillStyle=(o=r.singleColor)!=null?o:l.color,i.forEach(c=>{const h=this.chartModel.getVisualCandle(Ce(c.centerUnit)),g=c.close;if(h&&g===1){const p=this.chartModel.scale.zoomX,b=st(Tt(h.width,p)),E=st(h.bodyHeight(this.chartModel.scale)),B=h.xCenter(this.chartModel.scale)-b/2,N=h.yBodyStart(this.chartModel.scale),k=this.chartModel.config.components.chart.candlePaddingPercent,X=st(b*k/2),Z=B+X,J=b-X*2;t.fillRect(Z,N,J,E)}})})}}const li=(n,t,e)=>{n.length!==0&&n.forEach((s,r)=>{const{centerUnit:i,close:a}=s,o=e.toX(i),l=e.toY(a);r===0?t.moveTo(o,l):t.lineTo(o,l)})},Hc=/^(#)([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i,kc=/^\s*(rgba?)\s*[(]\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*[\d.]+\s*)?[)]\s*$/i;function jc(n){const t=Hc.exec(n)||kc.exec(n);let e=[];return t&&(e=t.slice(2,5),t[1]==="#")?e.map(function(s){return parseInt(s,16)}):e}const ci={};function Uc(n,t){let e=ci[n+t];if(!e){const s=jc(n);e=s&&"rgba("+s.join(",")+","+t+")",ci[n+t]=e}return e}class Wc{constructor(){}draw(t,e,s,r){s.config.visible&&(e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);Ee(t,l.lineWidth,s,r,l.hoveredLineWidth);const c=(o=r.singleColor)!=null?o:l.color;t.strokeStyle=c,this.drawLine(t,i,s.view)}),s.linkedDataSeriesModels.forEach((i,a)=>{if(di(i.config.type)&&di(s.config.type)&&i.config.visible){const o=[],l=s,c=l.getSeriesInViewport(l.scale.xStart-1,l.scale.xEnd+1),h=i.getSeriesInViewport(i.scale.xStart-1,i.scale.xEnd+1);c.forEach((g,p)=>{const b=Math.min(g.length,h[p].length);for(let N=0;N<b;N++){const k=[g[N].clone(),h[p][N].clone()];o.push({diffPoints:k})}const E=l.getPaintConfig(p).color,B=i.getPaintConfig(a).color;this.drawDifference(t,E,B,o,l,i,r)})}}))}drawLine(t,e,s){t.beginPath(),li(e,t,s),t.stroke()}drawDifference(t,e,s,r,i,a,o){const[l,c]=[[],[]];r.forEach(p=>{const[b,E]=p.diffPoints;l.push(b),c.push(E)});const h=hi(l,i.view),g=hi(c,a.view);this.fillCloud(t,s,h,g,o),this.fillCloud(t,e,g,h,o)}fillCloud(t,e,s,r,i){var a,o,l,c;t.save(),t.beginPath();const h=(o=(a=ke(s))==null?void 0:a.x)!=null?o:0,g=(c=(l=Yt(s))==null?void 0:l.x)!=null?c:0;t.lineTo(h,0),s.forEach(p=>{t.lineTo(p.x,p.y)}),t.lineTo(g,0),t.closePath(),t.clip(),t.beginPath(),s.forEach((p,b)=>{b===0?t.moveTo(p.x,p.y):t.lineTo(p.x,p.y)}),r.slice().reverse().forEach(p=>{t.lineTo(p.x,p.y)}),t.closePath(),t.fillStyle=i.singleColor?i.singleColor:Uc(e||"#383838",.3),t.fill(),t.restore()}}const hi=(n,t)=>n.map(e=>{const{centerUnit:s,close:r}=e,i=t.toX(s),a=t.toY(r);return{x:i,y:a}}),di=n=>n==="DIFFERENCE";class Xc{constructor(){}draw(t,e,s,r){const i=s.view.toY(0);e.forEach((a,o)=>{var l;const c=s.getPaintConfig(o);Ee(t,c.lineWidth,s,r,c.hoveredLineWidth),t.strokeStyle=(l=r.singleColor)!=null?l:c.color,t.beginPath(),a.forEach(h=>{const g=s.view.toX(h.centerUnit),p=s.view.toY(h.close);t.moveTo(g,gt(i)),t.lineTo(g,gt(p))}),t.stroke()})}}class zc{constructor(){}draw(t,e,s,r){e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);Ee(t,l.lineWidth,s,r,l.hoveredLineWidth),t.strokeStyle=(o=r.singleColor)!=null?o:l.color,this.drawLinePath(t,i,s.view)})}drawLinePath(t,e,s){t.beginPath(),li(e,t,s),t.stroke()}}class Vc{constructor(){}draw(t,e,s,r){e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a),c=l.lineWidth;t.fillStyle=(o=r.singleColor)!=null?o:l.color,t.lineWidth=1,i.forEach(h=>{t.beginPath();const g=s.view.toX(h.centerUnit),p=s.view.toY(h.close);t.arc(g,p,c,0,Math.PI*2),t.fill()})})}}class Gc{constructor(t){this.config=t}draw(t,e,s,r){t.save(),e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);t.fillStyle=(o=r.singleColor)!=null?o:l.color;const c=l.lineWidth+"px "+this.config.components.yAxis.fontFamily;t.font=c,i.forEach(h=>{const g=s.getTextForPoint(h),p=Nt(g,t,c),b=ne(c,t),E=s.view.toX(h.centerUnit)-p/2,B=s.view.toY(h.close)+b;t.fillText(g,E,B)})}),t.restore()}}class $c{constructor(){}draw(t,e,s,r){e.forEach((i,a)=>{var o;const l=s.getPaintConfig(a);t.fillStyle=(o=r.singleColor)!=null?o:l.color,i.forEach(c=>{const h=s.view.toX(c.centerUnit),g=s.view.toY(c.close);this.drawCandleTriangle(t,h,g,l.lineWidth)})})}drawCandleTriangle(t,e,s,r){t.beginPath(),t.moveTo(e-r/2,s),t.lineTo(e,s-r),t.lineTo(e+r/2,s),t.fill()}}const ts="resized_local",dn="draw",jg="draw_last_candle",Ie={width:20,height:20};class ui{constructor(t,e,s,r,i,a={}){this.eventBus=t,this.canvas=e,this.drawingManager=s,this.resizer=i,this.width=0,this.height=0,this.prevHeight=0,this.prevWidth=0,this.type=es;var o;r.push(this),this.parent=Jc(e);const l=e.getContext("2d",a);if(l===null)throw new Error("Couldn't get 2d context????");this.context=l,this._canvasId=(o=e.getAttribute("data-element"))!=null?o:"",this.updateCanvasWidthHeight(e,this.getChartResizerElement().getBoundingClientRect())}updateDPR(t){const{width:e,height:s}=t,r=window.devicePixelRatio;this.canvas.style.height=s+"px",this.canvas.style.width=e+"px",this.canvas.width=e*r,this.canvas.height=s*r,this.width=e,this.height=s,this.ctx.scale(r,r)}get canvasId(){return this._canvasId}get ctx(){return this.context}clear(){this.context.clearRect(0,0,this.width,this.height)}isLinked(){var t,e;return(e=(t=this.type)==null?void 0:t.linked)!=null?e:!1}fireDraw(){this.eventBus.fireDraw([this.canvasId])}updateCanvasWidthHeight(t,e=this.getChartResizerElement().getBoundingClientRect()){t.clientWidth!==this.width&&(t.width=t.clientWidth,this.width=t.clientWidth);const s=e.height;s!==this.height&&(t.style.height=s+"px",this.height=s,t.height=s,this.prevHeight=s)}getChartResizerElement(){var t;return(t=this.resizer)!=null?t:this.parent}isReady(){return this.width>Ie.width&&this.height>Ie.height}}const es={name:"candle"},Zc={candle:es,bar:{name:"candle"},line:{name:"line",linked:!0},area:{name:"area",linked:!0}};function Kc(n,t,e,s,r,i,a){var o;const l=Oe(n,t,r,i,a,e);return l.type=(o=Zc[s])!=null?o:es,l}function Oe(n,t,e,s,r,i,a){const o=new ui(n,t,s,r,i,a);return fi(o,e),o}function fi(n,t){const e=n.canvas;t.fixedSize&&(e.width=t.fixedSize.width,e.height=t.fixedSize.height,e.style.width=t.fixedSize.width+"px",e.style.height=t.fixedSize.height+"px",n.width=t.fixedSize.width,n.height=t.fixedSize.height),e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.direction="ltr"}function Jc(n){let t=n;for(;t;){if(t.nodeType===1&&t.hasAttribute("data-chart-container"))return t;if(t.parentElement!==null)t=t.parentElement;else break}return t}let ns=!1,ss=0;const un=new Map,rs=new Map,gi=()=>{ns||(ns=!0,ss=requestAnimationFrame(()=>{rs.forEach((n,t)=>{n(),rs.delete(t)}),un.forEach((n,t)=>{n(),un.delete(t)}),ns=!1}))},vi=(n,t)=>{un.set(n,t),gi()},zg=n=>{un.delete(n)},is=(n,t)=>{rs.set(n,t),gi()},fn="HIT_TEST_",Vg=null;class qc{constructor(t,e){this.chartResizeHandler=e,this.drawingOrder=[],this.drawersMap={},this.canvasIdsList=[],this.animFrameId=`draw_${Ft()}`,this.drawHitTestCanvas=()=>{this.drawingOrder.forEach(s=>{s.indexOf(fn)!==-1&&this.drawersMap[s].draw()})},t.on(dn,s=>{e.wasResized()&&(this.canvasIdsList&&(s&&s.length!==0?this.canvasIdsList=this.canvasIdsList.concat(s):this.canvasIdsList=void 0),vi(this.animFrameId,()=>{this.forceDraw(this.canvasIdsList),this.canvasIdsList=[],this.drawHitTestCanvas()}))})}redrawCanvasesImmediate(){this.chartResizeHandler.fireUpdates(),this.forceDraw()}drawLastBar(){this.drawingOrder.forEach(t=>{if(t.indexOf(fn)===-1){const e=this.drawersMap[t];e.drawLastBar&&e.drawLastBar()}})}forceDraw(t){this.isDrawable()&&this.drawingOrder.forEach(e=>{if(e.indexOf(fn)===-1){const s=this.drawersMap[e];if(!t||t.length===0){s.draw();return}_o(t,s.getCanvasIds()).length&&s.draw()}})}isDrawable(){var t,e,s,r;return((e=(t=this.chartResizeHandler.previousBCR)==null?void 0:t.height)!=null?e:0)>Ie.width&&((r=(s=this.chartResizeHandler.previousBCR)==null?void 0:s.width)!=null?r:0)>Ie.height}drawHitTestOnly(){this.drawHitTestCanvas()}addDrawer(t,e=Ft()){this.drawingOrder.indexOf(e)===-1&&this.drawingOrder.push(e),this.drawersMap[e]=t}addDrawerAfter(t,e,s){this.addDrawer(t,e);const r=this.drawingOrder.indexOf(e);this.drawingOrder.splice(r,1);const i=this.drawingOrder.indexOf(s);this.drawingOrder.splice(i+1,0,e),this.reorderDrawers(this.drawingOrder)}addDrawerBefore(t,e,s){this.addDrawer(t,e);const r=this.drawingOrder.indexOf(s);if(r!==-1){const i=this.drawingOrder.indexOf(e);return this.drawingOrder.splice(i,1),this.drawingOrder.splice(r,0,e),this.reorderDrawers(this.drawingOrder),!0}return!1}getDrawerByName(t){return this.drawersMap[t]}getNameByDrawer(t){for(const e in this.drawersMap)if(this.drawersMap[e]===t)return e}removeDrawerByName(t){const e=this.drawersMap[t];this.removeDrawer(e)}removeDrawer(t){Object.keys(this.drawersMap).forEach(e=>{if(this.drawersMap[e]===t){delete this.drawersMap[e];const s=this.drawingOrder.indexOf(e);s!==-1&&this.drawingOrder.splice(s,1)}})}reorderDrawers(t){this.drawingOrder=Ks(this.drawingOrder,t)}}class mi{static paneResizer(t){return`PANE_RESIZER_${t}`}}class Qc{constructor(t,e,s){this.seriesDrawers=t,this.canvasModel=e,this.paneManager=s}draw(){const t=this.canvasModel.ctx;this.paneManager.yExtents.forEach(e=>{t.save(),xe(t,e.getBounds()),e.dataSeries.forEach(s=>this.drawSeries(t,s)),t.restore()})}drawSeries(t,e){if(e.config.visible){const s=e.config.type,r=this.seriesDrawers[s];if(r){const i={singleColor:this.canvasModel.idToColor(e.htId),forceBold:7};r.draw(t,e.getSeriesInViewport(e.scale.xStart-1,e.scale.xEnd+1),e,i)}}}getCanvasIds(){return[this.canvasModel.canvasId]}}const pi={disableChartPanning:!0};class bi extends tt{constructor(t,e,s,r,i){super(),this.hitTest=t,this.dragCallbacks=e,this.canvasInputListener=s,this.chartPanComponent=r,this.dragComponentOptions=i,this.dragging=!1,this.draggedPixels=0,this.onDragStart=a=>{this.dragging=!0,this.draggedPixels=0,this.dragCallbacks.onDragStart&&this.dragCallbacks.onDragStart(a),this.dragComponentOptions.disableChartPanning&&this.chartPanComponent.deactivatePanHandlers()},this.onDragTick=a=>{this.dragging&&(this.draggedPixels+=a,this.dragCallbacks.onDragTick({delta:a,draggedPixels:this.draggedPixels}))},this.onDragEnd=()=>{this.dragging&&(this.dragging=!1,this.dragCallbacks.onDragEnd&&this.dragCallbacks.onDragEnd(this.draggedPixels),this.dragComponentOptions.disableChartPanning&&this.chartPanComponent.activateChartPanHandlers())}}doActivate(){super.doActivate()}doDeactivate(){super.doDeactivate()}}class gn extends bi{constructor(t,e,s,r,i=pi){super(t,e,s,r,i)}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasInputListener.observeYDragStart(this.hitTest).subscribe(this.onDragStart)),this.addRxSubscription(this.canvasInputListener.observeYDrag().subscribe(this.onDragTick)),this.addRxSubscription(this.canvasInputListener.observeYDragEnd().subscribe(this.onDragEnd))}doDeactivate(){super.doDeactivate()}}const th="BASELINE_RESIZER";class eh extends tt{constructor(t,e,s,r,i,a,o){super(),this.chartModel=t,this.canvasModel=s,this.canvasInputListener=r,this.config=i,this.canvasBoundContainer=a,this.cursorHandler=o,this.resizerBounds={x:0,y:0,pageX:0,pageY:0,height:0,width:0},this.baselineYPercents=50,this.ht=Vn.hitTestOf(this.resizerBounds,{extensionY:this.config.components.paneResizer.dragZone}),this.dragTickCb=c=>{const{delta:h}=c,g=this.canvasBoundContainer.getBounds(Y.CHART),p=this.canvasInputListener.getCurrentPoint().y;h!==0&&rl(p,g)&&(this.moveBaseLine(p),this.canvasModel.fireDraw())};const l=new gn(this.ht,{onDragTick:this.dragTickCb},r,e);this.addChildEntity(l)}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasBoundContainer.observeBoundsChanged(Y.CHART).subscribe(()=>this.recalculateBounds())),this.chartModel.chartTypeChanged.subscribe(t=>{t==="baseline"?this.cursorHandler.setCursorForBounds("BASELINE_RESIZER",this.resizerBounds,this.config.components.baseline.cursor,this.config.components.baseline.dragZone):this.cursorHandler.removeCursorForCanvasEl("BASELINE_RESIZER")})}recalculateBounds(){const t=this.canvasBoundContainer.getBounds(Y.CHART),e=this.canvasBoundContainer.getBounds(Y.Y_AXIS);this.resizerBounds.x=t.x,this.resizerBounds.width=t.width+e.width,this.resizerBounds.height=this.config.components.baseline.height;const s=t.y+t.height*(this.baselineYPercents/100);this.resizerBounds.y=s,this.canvasBoundContainer.bounds[th]=this.resizerBounds}moveBaseLine(t){const e=this.canvasBoundContainer.getBounds(Y.CHART);this.baselineYPercents=(t-e.y)*100/e.height,this.resizerBounds.y=t}doDeactivate(){super.doDeactivate()}}const vn=n=>{var t;const e=Ne(n.close,n.open,n.hi,n.lo);if(!isFinite(e))throw new Error("Received candle without any price");const s=Ne(n.hi,Math.max(n.open,n.close),e),r=Ne(n.lo,Math.min(n.open,n.close),e),i=Ne(n.open,n.lo,e),a=Ne(n.close,n.hi,e);return{hi:s,lo:r,open:i,close:a,timestamp:n.timestamp,volume:(t=n.volume)!=null?t:0,expansion:n.expansion,idx:n.idx,impVolatility:n.impVolatility}},as=n=>{for(let t=0;t<n.length;++t)n[t].idx=t},Ci=n=>{n.forEach(t=>{t.idx=void 0})};class nh{constructor(){}draw(t,e,s){const r=s.view.toY(0),i=Lt(e),a=[[],[]];i.forEach((o,l,c)=>{a[o.close<this.previousValue(c,l)?1:0].push(o)}),a.forEach((o,l)=>{const c=s.getPaintConfig(l);t.strokeStyle=l===0?c.color:c.aditionalColor||"#FF00FF",t.lineWidth=c.lineWidth,t.beginPath(),o.forEach(h=>{const g=s.view.toX(h.centerUnit),p=s.view.toY(h.close);t.moveTo(g,gt(r)),t.lineTo(g,gt(p))}),t.stroke()})}previousValue(t,e){do e--;while(e>=0&&!isFinite(t[e]&&t[e].close));return t[e]?t[e].close:Number.NaN}}var sh=Object.defineProperty,yi=Object.getOwnPropertySymbols,rh=Object.prototype.hasOwnProperty,ih=Object.prototype.propertyIsEnumerable,wi=(n,t,e)=>t in n?sh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ah=(n,t)=>{for(var e in t||(t={}))rh.call(t,e)&&wi(n,e,t[e]);if(yi)for(var e of yi(t))ih.call(t,e)&&wi(n,e,t[e]);return n};class oh{constructor(){this.symbol="MOCK",this.priceIncrements=[.01]}}class lh extends tt{constructor(t,e,s,r,i,a,o,l,c,h,g,p,b){super(),this.chartModel=t,this.canvasModel=e,this.config=s,this.scale=r,this.canvasBoundsContainer=i,this.drawingManager=a,this.hitTestCanvasModel=o,this.canvasInputListener=l,this.paneManager=g,this.dynamicObjects=b,this._dataSeriesDrawers={},this.strToBarType=B=>{var N;return(N=this.barTypeValues.find(k=>k===B))!=null?N:"candle"},this.addChildEntity(this.chartModel),this.registerDefaultCandlesTransformers(),this.baselineModel=new eh(this.chartModel,h,this.canvasModel,this.canvasInputListener,this.config,this.canvasBoundsContainer,p),this.addChildEntity(this.baselineModel);const E=new Qc(this._dataSeriesDrawers,this.hitTestCanvasModel,g);this.drawingManager.addDrawerBefore(E,fn+"DATA_SERIES","HIT_TEST_EVENTS"),this.registerDefaultDataSeriesDrawers(),this.backgroundDrawer=new Vl(c,this.config),a.addDrawer(this.backgroundDrawer,"MAIN_BACKGROUND"),p.setCursorForCanvasEl(Y.PANE_UUID(ct),s.components.chart.cursor),this.dataSeriesDrawer=new Ac(g,this.dataSeriesDrawers)}doActivate(){super.doActivate(),this.dynamicObjects.model.addObject({id:this.chartModel.mainCandleSeries.id,paneId:this.chartModel.mainCandleSeries.extentComponent.paneUUID,model:this.chartModel.mainCandleSeries,drawer:this.dataSeriesDrawer}),this.addRxSubscription(this.paneManager.dataSeriesAddedSubject.subscribe(t=>{this.dynamicObjects.model.addObject({id:t.id,paneId:t.extentComponent.paneUUID,model:t,drawer:this.dataSeriesDrawer})})),this.addRxSubscription(this.paneManager.dataSeriesRemovedSubject.subscribe(t=>{this.dynamicObjects.model.removeObject(t.id)}))}registerDefaultCandlesTransformers(){this.registerCandlesTransformer("candle",Xr),this.registerCandlesTransformer("trend",zr),this.registerCandlesTransformer("hollow",Gl),this.registerCandlesTransformer("line",$l)}get barTypeValues(){return Ar(this._dataSeriesDrawers)}get dataSeriesDrawers(){return this._dataSeriesDrawers}registerCandlesTransformer(t,e){this.chartModel.registerCandlesTransformer(t,e)}registerLastCandleLabelHandler(t,e){this.chartModel.registerLastCandleLabelHandler(t,e)}registerCandlesWidthCalculator(t,e){this.chartModel.registerCandlesWidthCalculator(t,e)}registerDefaultDataSeriesDrawers(){const t=new Ic(this.config.components.chart);this.registerDataSeriesTypeDrawer("candle",t),this.registerDataSeriesTypeDrawer("trend",t),this.registerDataSeriesTypeDrawer("hollow",t),this.registerDataSeriesTypeDrawer("bar",new Dc(this.config.components.chart)),this.registerDataSeriesTypeDrawer("line",new Lc(this.config.components.chart)),this.registerDataSeriesTypeDrawer("scatterPlot",new Rc(this.config.colors.scatterPlot)),this.registerDataSeriesTypeDrawer("area",new Tc(this.config.components.chart)),this.registerDataSeriesTypeDrawer("baseline",new Ec(this.baselineModel,this.canvasBoundsContainer)),this.registerDataSeriesTypeDrawer("histogram",new Oc(this.config.components.chart.histogram));const e=()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ct));this.registerDataSeriesTypeDrawer("LINEAR",new zc),this.registerDataSeriesTypeDrawer("HISTOGRAM",new Xc),this.registerDataSeriesTypeDrawer("TREND_HISTOGRAM",new nh),this.registerDataSeriesTypeDrawer("POINTS",new Vc),this.registerDataSeriesTypeDrawer("COLOR_CANDLE",new Yc(new Nc(this.chartModel),this.config,e)),this.registerDataSeriesTypeDrawer("TEXT",new Gc(this.config)),this.registerDataSeriesTypeDrawer("TRIANGLE",new $c),this.registerDataSeriesTypeDrawer("DIFFERENCE",new Wc)}setChartType(t){this.config.components.chart.type=t,this.chartModel.rememberCurrentTimeframe(),this.chartModel.mainCandleSeries.setType(t),this.chartModel.mainCandleSeries.updateCandleSeriesColors(ah({},this.config.colors)),this.chartModel.mainCandleSeries.recalculateVisualPoints(),this.chartModel.chartTypeChanged.next(t)}resetChartScale(){this.chartModel.doBasicScale()}setTimestampRange(t,e){return this.chartModel.setTimestampRange(t,e)}setXScale(t,e){return this.scale.setXScale(t,e)}setShowWicks(t){this.config.components.chart.showWicks=t,this.canvasModel.fireDraw()}setMainSeries(t){var e;const s=(e=t.instrument)!=null?e:this.chartModel.mainCandleSeries.instrument;this.chartModel.mainCandleSeries.instrument=s,this.chartModel.setAllSeries({candles:t.candles,instrument:s},this.chartModel.getSecondarySeries().map(r=>{var i;const a=(i=r.instrument)!=null?i:this.chartModel.mainCandleSeries.instrument,o=r.dataPoints;return Ci(o),{candles:o,instrument:a}})),this.updatePriceIncrementsIfNeeded(s)}setSecondarySeries(t){var e;const s=(e=t.instrument)!=null?e:this.chartModel.mainCandleSeries.instrument,r=this.chartModel.setSecondaryCandleSeries(t.candles,s);if(this.updatePriceIncrementsIfNeeded(s),r)return r}setAllSeries(t,e=[]){var s;const r=(s=t.instrument)!=null?s:this.chartModel.mainCandleSeries.instrument;this.updatePriceIncrementsIfNeeded(r),e.forEach(i=>{var a;const o=(a=i.instrument)!=null?a:this.chartModel.mainCandleSeries.instrument;this.updatePriceIncrementsIfNeeded(o)}),this.chartModel.setAllSeries(t,e)}toXFromCandleIndex(t){return this.chartModel.toX(t)}toXFromTimestamp(t){return this.chartModel.candleFromTimestamp(t).xCenter(this.chartModel.scale)}toY(t){return this.chartModel.toY(t)}updateAllSeries(t,e=[]){this.chartModel.updateAllSeries(t,e),this.canvasModel.fireDraw()}removeDataFrom(t){this.chartModel.removeDataFrom(t)}removeSecondarySeries(t){this.chartModel.removeSecondaryCandleSeries(t)}prependCandles(t,e){this.chartModel.prependCandles(t,e)}addLastCandle(t,e){this.chartModel.addLastCandle(t,e)}removeCandleByIdx(t,e){this.chartModel.removeCandleByIdx(t,e)}updateLastCandle(t,e){this.chartModel.updateLastCandle(t,e)}updateCandles(t,e){this.chartModel.updateCandles(t,e)}setOffsets(t){this.chartModel.setOffsets(t)}getDataSeriesDrawer(t){return this._dataSeriesDrawers[t]}registerDataSeriesTypeDrawer(t,e){this._dataSeriesDrawers[t]=e}updatePriceIncrementsIfNeeded(t){(!t.priceIncrements||!qt.validatePriceIncrementsOrPrecisions(t.priceIncrements))&&(t.priceIncrements=[qt.autoDetectIncrementOfValueRange(this.scale.yEnd-this.scale.yStart)])}observeOffsetsChanged(){return this.chartModel.offsetsChanged}observeChartTypeChanged(){return this.chartModel.chartTypeChanged}observeCandlesChanged(){return this.chartModel.observeCandlesChanged()}observeCandlesUpdated(){return this.chartModel.candlesUpdatedSubject}observeCandlesPrepended(){return this.chartModel.candlesPrependSubject}}class ch extends ge{constructor(t,e,s,r,i,a,o,l,c,h){super(e,s,r,i,a,o,l,c,h),this.baseModel=t}set visualPoints(t){super.visualPoints=t,this.baseModel.mainVisualPoints=super.visualPoints}get visualPoints(){return super.visualPoints}set dataPoints(t){super.dataPoints=t,this.baseModel.mainDataPoints=super.dataPoints}get dataPoints(){return super.dataPoints}recalculateMeanCandleWidth(t){super.recalculateMeanCandleWidth(t),this.baseModel.meanDataWidth=this.meanCandleWidth}}const hh=n=>t=>{if(t.length!==0){const e=t.slice(Math.max(t.length-n.state.defaultViewportItems,0)),s=e[0],r=e[e.length-1];n.setXScale(s.startUnit,r.startUnit+r.width+n.offsets.right),n.doAutoScale(!0),n.recalculateZoomXYRatio(),n.fireChanged()}},dh=(n,t)=>(e,s=null)=>{const[r,i]=e,a=t.candleFromTimestamp(r).startUnit,o=t.candleFromTimestamp(i).startUnit,l=s===null?0:t.mainCandleSeries.meanCandleWidth*2,c=s?a-l:a+l,h=s?o+l:o-l;n.setXScale(c,h)};var uh=Object.defineProperty,fh=Object.defineProperties,gh=Object.getOwnPropertyDescriptors,Si=Object.getOwnPropertySymbols,vh=Object.prototype.hasOwnProperty,mh=Object.prototype.propertyIsEnumerable,xi=(n,t,e)=>t in n?uh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Ve=(n,t)=>{for(var e in t||(t={}))vh.call(t,e)&&xi(n,e,t[e]);if(Si)for(var e of Si(t))mh.call(t,e)&&xi(n,e,t[e]);return n},os=(n,t)=>fh(n,gh(t));class ph{constructor(t){this.config=t,this.usedChartColors={},this.symbolsToColorKeys={},this.secondaryChartColorsPool=this.createColorPool(this.config.colors.secondaryChartTheme),this.usedChartColors=Object.keys(this.secondaryChartColorsPool).reduce((e,s)=>os(Ve({},e),{[s]:0}),{})}createColorPool(t){return t.reduce((e,s,r)=>(e[`color${r}`]=os(Ve({},We(this.config.colors)),{lineTheme:Ve({},s.lineTheme),areaTheme:Ve({},s.areaTheme)}),e),{})}takeColorFromPool(t){let e=Number.MAX_SAFE_INTEGER,s="";for(const[r,i]of Object.entries(this.usedChartColors))i<e&&(e=i,s=r);return this.usedChartColors[s]=this.usedChartColors[s]+1,this.symbolsToColorKeys[t]=s,this.secondaryChartColorsPool[s]}addColorToPool(t){const e=this.symbolsToColorKeys[t];this.usedChartColors[e]&&(this.usedChartColors[e]=this.usedChartColors[e]-1)}updateColorConfig(t,e){var s,r;const i=this.secondaryChartColorsPool[this.usedChartColors[t]];if(i){const a=e;this.secondaryChartColorsPool[this.usedChartColors[t]]=os(Ve({},e),{lineTheme:Object.assign(i.lineTheme,(s=a.lineTheme)!=null?s:{}),areaTheme:Object.assign(i.areaTheme,(r=a.areaTheme)!=null?r:{})})}}}var bh=Object.defineProperty,Pi=Object.getOwnPropertySymbols,Ch=Object.prototype.hasOwnProperty,yh=Object.prototype.propertyIsEnumerable,Ti=(n,t,e)=>t in n?bh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,mn=(n,t)=>{for(var e in t||(t={}))Ch.call(t,e)&&Ti(n,e,t[e]);if(Pi)for(var e of Pi(t))yh.call(t,e)&&Ti(n,e,t[e]);return n};class wh extends tt{constructor(t,e,s,r,i,a,o,l,c,h){super(),this.chartBaseModel=t,this.paneManager=e,this.bus=s,this.canvasModel=r,this.config=i,this.scale=a,this.formatterFactory=o,this.mainCanvasParent=l,this.canvasBoundsContainer=c,this.chartResizeHandler=h,this.prevChartWidth=0,this.prevYWidth=0,this.candleSeries=[],this.nextCandleTimeStampSubject=new V,this.chartTypeChanged=new V,this.mainInstrumentChangedSubject=new V,this.scaleInversedSubject=new V,this.offsetsChanged=new V,this.candlesTransformersByChartType={},this.lastCandleLabelsByChartType={},this.candleWidthByChartType={},this.lastTimeFrame=[0,0],this.FAKE_CANDLES_DEFAULT=100,this.toY=p=>this.mainCandleSeries.view.toY(p),this.chartTypeChanged.next(this.config.components.chart.type),this.secondaryChartColors=new ph(this.config);const g=new ch(this.chartBaseModel,this.paneManager.panes[ct].mainExtent,Ft(),this.paneManager.hitTestController.getNewDataSeriesHitTestId(),this.bus,this.scale,new oh,this.candlesTransformersByChartType,this.candleWidthByChartType,mn({},this.config.colors));g.config.type=this.config.components.chart.type,this.candleSeries.push(g),a.addXConstraint((p,b)=>uc(b,this.mainCandleSeries.visualPoints,this.config.components.chart.minCandlesOffset,a.getBounds())),this.basicScaleViewportTransformer=hh(a),this.timeFrameViewportTransformer=dh(a,this),this.pane=this.paneManager.panes[ct]}get mainCandleSeries(){return this.candleSeries[0]}get secondaryCandleSeries(){return this.candleSeries.filter(t=>t!==this.mainCandleSeries)}get candlesUpdatedSubject(){return this.chartBaseModel.dataUpdatedSubject}get candlesSetSubject(){return this.chartBaseModel.dataSetSubject}get candlesRemovedSubject(){return this.chartBaseModel.dataRemovedSubject}get candlesPrependSubject(){return this.chartBaseModel.dataPrependSubject}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasBoundsContainer.observeBoundsChanged(Y.PANE_UUID(ct)).pipe(Zt(Cr)).subscribe(t=>{this.handleChartResize(t)}))}handleChartResize(t){if(t.width>Ie.width&&t.height>Ie.height){const e=this.getEffectiveChartWidth(),s=this.getEffectiveYAxisWidth();if(this.prevChartWidth===0){this.scale.isViewportValid()?this.scale.recalculateZoom():this.doBasicScale(),this.prevChartWidth=e,this.prevYWidth=s;return}if(s!==this.prevYWidth){if(this.config.scale.keepZoomXOnYAxisChange){const i=re(s-this.prevYWidth,this.scale.zoomX);this.scale.setXScale(this.scale.xStart,this.scale.xEnd-i)}else this.scale.recalculateZoomX();this.prevYWidth=s,this.prevChartWidth=e;return}const r=re(e-this.prevChartWidth,this.scale.zoomX);this.scale.setXScale(this.scale.xStart-r,this.scale.xEnd),this.scale.recalculateZoomY(),this.prevYWidth=s,this.prevChartWidth=e}}setMainCandleSeries(t,e){this.mainCandleSeries.instrument=e,this.setAllSeries({candles:t,instrument:e},this.getSecondarySeries().map(s=>{const r=s.dataPoints;return Ci(r),{candles:r,instrument:s.instrument}}))}setSecondaryCandleSeries(t,e=this.mainCandleSeries.instrument,s=!0){const r=pn(t.map(vn)),i=this.reindexCandlesBasedOnSeries(this.mainCandleSeries.dataPoints,r),a=this.secondarySeriesAdjustments(this.mainCandleSeries.dataPoints,i),l=this.secondaryCandleSeries.some(c=>c.instrument.symbol===e.symbol)?this.secondaryCandleSeries.find(c=>c.instrument.symbol===e.symbol):this.createSecondaryCandleSeriesModel(e);if(l)return l.dataPoints=a,s&&(this.scale.doAutoScale(),l.recalculateVisualPoints(),this.candlesSetSubject.next(),this.canvasModel.fireDraw()),l}setAllSeries(t,e=[]){var s;this.mainCandleSeries.instrument=(s=t.instrument)!=null?s:this.mainCandleSeries.instrument,t.instrument&&this.mainInstrumentChangedSubject.next(t.instrument),this.rememberCurrentTimeframe();const r=pn(t.candles.map(vn));this.mainCandleSeries.clearData(),as(r),this.mainCandleSeries.dataPoints=r,this.secondaryCandleSeries.filter(i=>e.filter(a=>{var o;return((o=a.instrument)==null?void 0:o.symbol)===i.instrument.symbol}).length===0).forEach(i=>this.removeSecondaryCandleSeries(i)),e.map(i=>this.setSecondaryCandleSeries(i.candles,i.instrument,!1)),this.candleSeries.forEach(i=>{i.recalculateDataViewportIndexes(),i.recalculateVisualPoints()}),this.chartBaseModel.recalculatePeriod(),this.autoScaleOnCandles(),this.scale.doAutoScale(),this.candlesSetSubject.next(),this.canvasModel.fireDraw()}autoScaleOnCandles(){this.scale.state.autoScaleOnCandles&&(this.doBasicScale(),this.scale.autoScale(!0))}doBasicScale(){this.basicScaleViewportTransformer(this.mainCandleSeries.visualPoints),this.bus.fireDraw()}doPreviousTimeFrameScale(t=null){this.timeFrameViewportTransformer(this.lastTimeFrame,t),this.scale.state.autoScaleOnCandles&&this.scale.doAutoScale(!0),this.bus.fireDraw()}rememberCurrentTimeframe(){this.mainCandleSeries.visualPoints.length!==0&&(this.lastTimeFrame=[this.candleFromX(this.scale.toX(this.scale.xStart),!0).timestamp,this.candleFromX(this.scale.toX(this.scale.xEnd),!0).timestamp])}updateAllSeries(t,e=[]){t=mn({},t),t.instrument||(t.instrument=this.mainCandleSeries.instrument);const s=[t,...e];if(!this.candleSeries.every(l=>s.find(c=>{var h;return((h=c.instrument)==null?void 0:h.symbol)===l.instrument.symbol}))||e.length!==this.secondaryCandleSeries.length){console.error("All series update failed. Instruments for series are different.");return}const r=pn(t.candles.map(vn)),i=_i(this.mainCandleSeries.dataPoints,r),a=i.candles;as(a),this.mainCandleSeries.dataPoints=a,e.map(l=>{var c,h,g,p;const b=pn(l.candles.map(vn)),E=_i((p=(g=this.findSecondarySeriesBySymbol((h=(c=l.instrument)==null?void 0:c.symbol)!=null?h:""))==null?void 0:g.dataPoints)!=null?p:[],b).candles;return this.setSecondaryCandleSeries(E,l.instrument,!1)}),this.candleSeries.forEach(l=>{l.recalculateVisualPoints(),l.recalculateDataViewportIndexes()});const o=this.chartBaseModel.mainVisualPoints.slice(0,i.prepended.length).reduce((l,c)=>l+c.width,0);this.scale.moveXStart(this.scale.xStart+o),this.candlesPrependSubject.next({prependedCandlesWidth:o,prependedCandles:i.prepended}),this.chartBaseModel.recalculatePeriod(),this.candlesUpdatedSubject.next(),this.bus.fireDraw()}removeDataFrom(t){Object.values(this.paneManager.panes).forEach(e=>{e.dataSeries.forEach(s=>{const r=ue(s.dataPoints,t,a=>a.timestamp),i=r.exact?r.index:r.index+1;s.dataPoints=s.dataPoints.slice(0,i)})}),this.candlesRemovedSubject.next(),this.candlesUpdatedSubject.next(),this.canvasModel.fireDraw()}createSecondaryCandleSeriesModel(t){const e=mn(mn({},this.config.colors),this.secondaryChartColors.takeColorFromPool(t.symbol));return this.createCandleSeriesModel(t,e)}createCandleSeriesModel(t,e){const s=new ge(this.paneManager.panes[ct].mainExtent,Ft(),this.paneManager.hitTestController.getNewDataSeriesHitTestId(),this.bus,this.scale,t,this.candlesTransformersByChartType,this.candleWidthByChartType,e);return s.config.type="line",this.candleSeries.push(s),s}removeSecondaryCandleSeries(t){return this.secondaryChartColors.addColorToPool(t.instrument.symbol),this.candleSeries=this.candleSeries.filter(e=>e!==t),t.deactivate(),this.paneManager.panes[ct].removeDataSeries(t),this.scale.doAutoScale(),t.colors}secondarySeriesAdjustments(t,e){const s=[];return t.forEach(r=>{var i;const a=(i=r.idx)!=null?i:0,o=e[a];if(o)s.push(o);else{let l=Mi(e,a,-1);if(l||(l=Mi(e,a,1)),l){const c=Cl(l,a,!0);s.push(c)}}}),s}updateSecondaryCandleSeriesConfig(t,e,s){const r=Kt(t,en().colors);this.secondaryChartColors.updateColorConfig(e,r);const i=this.findSecondarySeriesBySymbol(e);i&&(i.config.type=s,i.updateCandleSeriesColors(r)),this.bus.fireDraw([this.canvasModel.canvasId])}setAutoScale(t){this.scale.autoScale(t)}getEffectiveYAxisWidth(){return this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(ct)).width}getEffectiveChartWidth(){return this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ct)).width}getEffectiveChartHeight(){return this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ct)).height}setOffsets(t){this.scale.updateOffsets(t);const e=this.getCandlesCountWithRightOffset(),s=this.mainCandleSeries.visualPoints;this.hasCandles()&&e>=s.length&&this.scale.setXScale(this.scale.xStart,this.candleFromIdx(e).startUnit),this.offsetsChanged.next(),this.bus.fireDraw()}getOffsets(){return this.scale.getOffsets()}fromY(t){return this.scale.fromY(t)}priceFromY(t,e){return(e!=null?e:this.mainCandleSeries).view.priceFromY(t)}fromX(t){return this.scale.fromX(t)}toX(t){const e=this.candleFromIdx(t);return this.scale.toX(e.centerUnit)}candleFromX(t,e=!1,s=this.mainCandleSeries){const r=this.scale.fromX(t);return this.candleFromUnit(r,e,s)}candleFromUnit(t,e=!1,s=this.mainCandleSeries){var r,i;const a=ue(s.visualPoints,t,g=>g.startUnit),o=s.visualPoints,l=this.getLastVisualCandle();o[a.index]!==void 0&&(t<0||l&&t>l.startUnit+l.width)&&(a.index+=Ce((t-o[a.index].centerUnit)/this.mainCandleSeries.meanCandleWidth));const c=a.index,h=Math.max(Math.min(o.length-1,c),0);return(c<0||c>=o.length)&&e?ze(this.mainCandleSeries.dataPoints,c,this.chartBaseModel.period):(i=(r=o[h])==null?void 0:r.candle)!=null?i:ze(this.mainCandleSeries.dataPoints,h,this.chartBaseModel.period)}candleFromTimestamp(t,e=!0,s=this.mainCandleSeries){const r=s.dataPoints;return this.chartBaseModel.dataFromTimestamp(t,e,r)}candleFromIdx(t){return this.chartBaseModel.dataFromIdx(t)}isReady(){return this.canvasModel.isReady()&&this.hasCandles()}registerCandlesTransformer(t,e){this.candlesTransformersByChartType[t]=e}registerCandlesWidthCalculator(t,e){this.candleWidthByChartType[t]=e}registerLastCandleLabelHandler(t,e){this.lastCandleLabelsByChartType[t]=e}hasCandles(){return this.mainCandleSeries.visualPoints.length!==0}getVisualCandle(t){var e,s,r;const i=t-((r=(s=(e=this.mainCandleSeries.visualPoints[0])==null?void 0:e.candle)==null?void 0:s.idx)!=null?r:0);return this.mainCandleSeries.visualPoints[i]}getFirstIdx(){return this.mainCandleSeries.dataIdxStart}getLastIdx(){return this.mainCandleSeries.dataIdxEnd}getFirstTimestamp(t=!0){return t?this.candleFromIdx(this.getFirstIdx()).candle.timestamp:this.candleFromUnit(this.scale.xStart,!0).timestamp}getLastTimestamp(t=!0){return t?this.candleFromIdx(this.getLastIdx()).candle.timestamp:this.candleFromUnit(this.scale.xEnd,!0).timestamp}setTimestampRange(t,e){const s=this.candleFromTimestamp(t).startUnit,r=this.candleFromTimestamp(e),i=r.startUnit+r.width;return this.scale.setXScale(s,i)}getLastCandle(){const t=this.mainCandleSeries.dataPoints;return Yt(t)}getLastVisualCandle(){const t=this.mainCandleSeries.visualPoints;return Yt(t)}getMaxCandlesFitLength(){return gt(this.getEffectiveChartWidth()/this.config.components.chart.minWidth)}getSecondarySeries(){return this.secondaryCandleSeries}isSeriesInstrument(t,e){return t.instrument.symbol===e}findSeriesBySymbol(t){return this.candleSeries.filter(e=>this.isSeriesInstrument(e,t))}findSecondarySeriesBySymbol(t){return this.secondaryCandleSeries.find(e=>this.isSeriesInstrument(e,t))}reindexCandlesBasedOnSeries(t,e){return e.reduce((s,r)=>{const i=r.timestamp,a=Ue(i,!1,t,this.chartBaseModel.period);return a.index>=0&&a.index<t.length&&(r.idx=a.index,s[a.index]=r),s},[])}getPeriod(){return this.chartBaseModel.period}isCandleInViewport(t){return this.getFirstIdx()<=t&&t<=this.getLastIdx()}updateCandles(t,e=this.mainCandleSeries.instrument.symbol){const s=this.mainCandleSeries.instrument.symbol===e,r=this.findSeriesBySymbol(e);if(r.length===0){console.warn("updateCandles failed. Can't find series",e);return}r.forEach(i=>{const a=i.dataPoints;let o=!1,l=!1,c;t.forEach(h=>{var g;if(!h)return;const p=Ue(h.timestamp,!0,a,this.getPeriod()),b=Math.min(p.index,a.length);o=o||b===a.length,a[b]=h,h.idx=b,i.dataPoints=a,i.recalculateDataViewportIndexes(),l=l||this.isCandleInViewport(b);const E=b>=a.length-1,B=c&&h.timestamp<c.timestamp;if(E&&!B&&(c=h),o&&c&&s&&l){const N=(g=this.candleWidthByChartType[this.config.components.chart.type])!=null?g:Vr;this.scale.moveXStart(this.scale.xStart+N(c))}}),c&&(i.updateCurrentPrice(c.close),this.paneManager.yExtents.forEach(h=>h.yAxis.updateOrderedLabels(!0))),l&&c&&t.length===1?this.canvasModel.fireDraw():i.recalculateVisualPoints()}),this.scale.doAutoScale(),this.candlesUpdatedSubject.next()}observeCandlesChanged(){return Ot(this.candlesSetSubject,this.candlesUpdatedSubject)}getCandles(){return this.mainCandleSeries.dataPoints}getCandlesWithFake(t=0,e){let s=this.getCandles().slice();const r=this.getCandlesCount(),i=e!=null?e:r+this.FAKE_CANDLES_DEFAULT;s=s.slice(Math.max(0,t),Math.min(r,i));const a=[],o=[];for(let c=r;c<i;c++)a.push(ze(this.mainCandleSeries.dataPoints,c,this.getPeriod()));const l=Math.min(0,i);for(let c=t;c<l;c++)o.push(ze(this.mainCandleSeries.dataPoints,c,this.getPeriod()));return[...o,...s,...a]}getCandlesCount(){return this.mainCandleSeries.dataPoints.length}getCandlesCountWithRightOffset(){return this.getCandlesCount()+this.getOffsets().right}clearData(){this.candleSeries.forEach(t=>t.clearData())}prependCandles(t,e){const s=t.slice(),r=[];return e.forEach(i=>{const o=Ue(i.timestamp,!1,t).index;o<0?r.push(i):t[o].timestamp===i.timestamp?s[o]=i:console.warn(`Couldn't update candle with timestamp ${i.timestamp}`)}),{prepended:r,candles:[...r,...s]}}addLastCandle(t,e=this.mainCandleSeries.instrument.symbol){this.updateCandles([t],e)}updateLastCandle(t,e=this.mainCandleSeries.instrument.symbol){this.updateCandles([t],e)}removeCandleByIdx(t,e=this.mainCandleSeries.instrument.symbol){const s=this.findSeriesBySymbol(e);if(s.length===0){console.warn("removeCandle by id failed. Can't find series",e);return}s.forEach(r=>{r.dataPoints=r.dataPoints.slice(0,t).concat(r.dataPoints.slice(t+1)),as(r.dataPoints),r.recalculateVisualPoints()}),this.candlesRemovedSubject.next(),this.candlesUpdatedSubject.next(),this.canvasModel.fireDraw()}}const pn=n=>n.slice().sort((t,e)=>t.timestamp===e.timestamp?0:t.timestamp>e.timestamp?1:-1),Mi=(n,t,e)=>{if(t>=n.length)return n[n.length-1];for(let s=t;s<n.length&&s>=0;s+=e){const r=n[s];if(r)return r}},_i=(n,t)=>{const e=n.slice(),s=[],r=[];return t.forEach(i=>{const o=Ue(i.timestamp,!0,n).index;o<0?s.push(i):o>=n.length?r.push(i):n[o].timestamp===i.timestamp?e[o]=i:console.warn(`Couldn't update candle with timestamp ${i.timestamp}`)}),{prepended:s,appended:r,candles:[...s,...e,...r]}};class Ge{constructor(t){this.canvasModel=t}draw(){this.canvasModel.clear()}getCanvasIds(){return[this.canvasModel.canvasId]}}class ls{constructor(t){this.drawers=t!=null?t:new Map}draw(){this.drawers.forEach(t=>t.draw())}addDrawer(t,e){const s=e!=null?e:"drawer"+this.drawers.size;this.drawers.set(s,t)}drawLastBar(){this.drawers.forEach(t=>t.drawLastBar&&t.drawLastBar())}removeDrawer(t){const e=_r(this.drawers,t);e?this.drawers.delete(e):console.warn("Couldn't find drawer type")}removeDrawerByName(t){this.drawers.delete(t)}getDrawer(t){return this.drawers.get(t)}moveTop(t){const e=_r(this.drawers,t);e?this.moveTopByName(e):console.warn("Couldn't find drawer type")}moveTopByName(t){if(this.drawers.size===1)return;const e=this.drawers.get(t);this.drawers.delete(t),e&&this.drawers.set(t,e)}getSize(){return this.drawers.size}getAll(){return this.drawers}getCanvasIds(){const t=Lt(Array.from(this.drawers).map(([,s])=>s.getCanvasIds())),e=new Set([...t]);return Array.from(e)}}class Sh{constructor(t,e,s){this.model=t,this.crossToolCanvasModel=e,this.crossToolTypeDrawers=s}draw(){const t=this.crossToolTypeDrawers[this.model.type];t?this.model.currentHover&&t.draw(this.crossToolCanvasModel.ctx,this.model.currentHover):console.error(`No cross tool drawer type registered for drawer type ${this.model.type}`)}getCanvasIds(){return[this.crossToolCanvasModel.canvasId]}}class xh extends tt{constructor(t,e,s,r){super(),this.config=t,this.crossToolCanvasModel=e,this.crossEventProducer=s,this.hoverProducer=r,this.currentHoverSubject=new $t(null),this.type="cross-and-labels",this.type=t.type}get currentHover(){return this.currentHoverSubject.getValue()}set currentHover(t){this.currentHoverSubject.next(t)}setType(t){this.type=t}doActivate(){super.doActivate(),this.addRxSubscription(this.hoverProducer.hoverSubject.subscribe(t=>{this.crossEventProducer.crossSubject.getValue()!==null&&t!==null?this.updateHover(t):this.currentHover=null,this.fireDraw()}))}fireDraw(){this.type!=="none"&&this.crossToolCanvasModel.fireDraw()}updateHover(t,e=this.config.magnetTarget){if(this.currentHover===null?this.currentHover={x:t.x,y:0,time:t.timeFormatted,paneId:t.paneId}:(this.currentHover.x=t.x,this.currentHover.time=t.timeFormatted),t.candleHover&&t.paneId===ct)switch(e){case"O":this.currentHover.y=t.candleHover.openY;break;case"C":this.currentHover.y=t.candleHover.closeY;break;case"H":this.currentHover.y=t.candleHover.highY;break;case"L":this.currentHover.y=t.candleHover.lowY;break;case"OHLC":this.currentHover.y=t.candleHover.closestOHLCY;break;case"none":this.currentHover.y=t.y;break}else this.currentHover.y=t.y;this.currentHover.paneId=ct,this.currentHoverSubject.next(this.currentHover)}}const zt=4;function Ph(n,t,e,s,r,i,a,o=!1){var l,c,h,g,p,b,E;const B=i.align,N=(l=r.textFont)!=null?l:ye(i),k=r.bgColor,X=(c=r.textColor)!=null?c:fe(k,a.labelTextColor,a.labelInvertedTextColor),Z=(h=r.paddingTop)!=null?h:zt,J=(g=r.paddingBottom)!=null?g:zt,K=(p=r.paddingEnd)!=null?p:zt,U=Ce(ne(N,n)/2),q=s-U-Z,ot=s+U+J-q;if((s<t.y+ot/2||s>t.y+t.height-ot/2)&&!o)return;n.save(),n.fillStyle=k,n.strokeStyle=k;const nt=Ce(t.width/6),rt=B==="right"?t.x:t.x+t.width,dt=B==="right"?rt+nt:rt-nt,ht=i.labelBoxMargin.end,St=ht-K,ut=t.width-nt-St;Mc(n,dt,q,rt,q+Ce(ot/2),dt,q+ot,ut,(E=(b=i.typeConfig.badge)==null?void 0:b.rounded)!=null?E:!1,B),n.fillStyle=X,n.font=N;const vt=B==="right"?t.x+t.width-Nt(e,n,N)-ht:t.x+ht;n.fillText(e,vt,s+U-1),n.restore()}function Th(n,t,e,s,r,i,a,o=!1){var l,c,h,g,p,b,E,B,N,k,X;const Z=i.align,J=(l=r.textFont)!=null?l:ye(i),K=r.bgColor,U=(c=r.textColor)!=null?c:fe(K,a.labelTextColor,a.labelInvertedTextColor),q=(h=i.typeConfig.rectangle)==null?void 0:h.paddings,at=(p=(g=r.paddingTop)!=null?g:q==null?void 0:q.top)!=null?p:zt,ot=(E=(b=r.paddingBottom)!=null?b:q==null?void 0:q.bottom)!=null?E:zt,nt=(N=(B=r.paddingEnd)!=null?B:q==null?void 0:q.end)!=null?N:zt,rt=r.paddingStart,dt=ne(J,n),ht=s-dt/2-at,ut=s+dt/2+ot-ht,vt=(X=r.rounded)!=null?X:(k=i.typeConfig.rectangle)==null?void 0:k.rounded;if((s<t.y+ut/2||s>t.y+t.height-ut/2)&&!o)return;n.save(),n.fillStyle=K,n.strokeStyle=K;const pt=i.labelBoxMargin.end;n.font=J;const Ht=Nt(e,n,J),kt=pt-nt,jt=rt!==void 0?Ht+rt+nt:t.width-kt,pe=Z==="right"?t.x+t.width-kt-jt:t.x+kt,Mn=Z==="right"?t.x+t.width-Ht-pt:pt;vt?ii(n,pe,ht,jt,ut,4,!0):n.fillRect(pe,ht,jt,ut),n.fillStyle=U,n.fillText(e,Mn,s+dt/2-1),n.restore()}function Mh(n,t,e,s,r,i,a,o=!1,l){var c,h,g,p,b,E,B,N,k;const X=i.align,Z=(c=r.textFont)!=null?c:ye(i),J=r.bgColor,K=(h=r.textColor)!=null?h:fe(J,a.labelTextColor,a.labelInvertedTextColor),U=(g=i.typeConfig.rectangle)==null?void 0:g.paddings,q=(b=(p=r.paddingTop)!=null?p:U==null?void 0:U.top)!=null?b:zt,at=(B=(E=r.paddingBottom)!=null?E:U==null?void 0:U.bottom)!=null?B:zt,ot=(k=(N=r.paddingEnd)!=null?N:U==null?void 0:U.end)!=null?k:zt,nt=r.paddingStart,rt=ne(Z,n),dt=s-rt/2-q,St=s+rt/2+at-dt;if((s<t.y+St/2||s>t.y+t.height-St/2)&&!o)return;n.save(),n.fillStyle=J,n.strokeStyle=J;const ut=i.labelBoxMargin.end;n.font=Z;const vt=Nt(e,n,Z),pt=ut-ot,Ht=nt!==void 0?vt+nt+ot:t.width-pt,kt=X==="right"?t.x+t.width-pt-Ht:t.x+pt,jt=X==="right"?t.x+t.width-vt-ut:ut;l&&cn(l,n,kt,dt,Ht,St),n.fillStyle=K,n.fillText(e,jt,s+rt/2-1),n.restore()}function _h(n,t,e=zt){return ne(n,t)/2+e}const Ah="badge",Ai=4,Di={badge:Ph,rectangle:Th,plain:Mh};function Ei(n,t,e,s,r,i,a,o){var l,c,h,g,p;const b=r.y,E=r.labelText,B=(l=r.mode)!=null?l:"label",N=(c=r.labelType)!=null?c:Ah,k=r.description,X=(h=r.textFont)!=null?h:ye(a),Z=r.bgColor,J=(g=r.lineColor)!=null?g:Z,K=Nt(k!=null?k:"",n,X)+8,U=gt(r.y),q=ne(X,n),at=b-q/2,nt=b+q/2-at;n.save(),n.fillStyle=Z,n.strokeStyle=J;const rt=i.getBounds(Y.PANE_UUID(ct)),dt=Di[N],ht=a.labels.descriptions,St=Dh(e,U,nt),ut=()=>ht&&Eh(t,n,e,s,r,a.align,a);let vt,pt;const Ht=2;a.align==="right"?(vt=rt.x,pt=ht?rt.x+rt.width-K:rt.x+rt.width+Ht):(vt=ht?rt.x+K:rt.x-Ht,pt=rt.x+rt.width);const kt=(p=r.lineY)!=null?p:r.y,jt=()=>St&&Se(n,()=>_c(n,vt,kt,pt,kt,1)),pe=()=>dt(n,e,E,b,r,a,o,!1,t);switch(B){case"line":jt(),ut();break;case"line-label":jt(),ut(),pe();break;case"label":ut(),pe();break;case"none":break}n.restore()}const Dh=(n,t,e)=>t>n.y+e/2&&t<n.y+n.height-e/2;function Eh(n,t,e,s,r,i="right",a){var o,l,c;const h=r.description;if(!h||h.length===0)return;const g=r.y,p=ye(a),b=Nt(h,t,p),E=ne(p,t),B=(o=r.paddingTop)!=null?o:Ai,N=(l=r.paddingBottom)!=null?l:Ai,k=g-E/2-B,Z=g+E/2+N-k;if(g<e.y+Z/2||g>e.y+e.height-Z/2)return;t.save();const J=b+5,K=4,U=b+K*2,q=s.x+s.width,at=i==="right"?q-U:s.x+K;cn(n,t,at,k,J,Z,.8),t.fillStyle=(c=r.descColor)!=null?c:r.bgColor,t.font=p;const ot=i==="right"?q-b-K*2:s.x+K*2;t.fillText(h,ot,g+E/2-1),t.restore()}class Ii{constructor(t,e,s,r,i=()=>!0,a){this.config=t,this.canvasBoundsContainer=e,this.paneManager=s,this.backgroundCanvasModel=r,this.crossDrawPredicate=i,this.noLines=a}draw(t,e){this.crossDrawPredicate()&&Se(t,()=>this.drawCrossTool(t,e))}drawCrossTool(t,e){var s,r,i,a,o;const l=this.canvasBoundsContainer.getBounds(Y.ALL_PANES),c=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES,{extensionY:1e-4}),h=(s=this.config.components.xAxis.padding.top)!=null?s:0,g=(i=this.config.components.yAxis.typeConfig[(r=this.config.components.crossTool.yLabel.type)!=null?r:"badge"])==null?void 0:i.paddings,p=(a=g==null?void 0:g.start)!=null?a:0,b=(o=this.paneManager.panes[e.paneId])==null?void 0:o.ht;if(c(e.x,l.y)){const E={start:[l.x,e.y],end:[l.x+l.width+p,e.y]},B={start:[e.x,l.y],end:[e.x,l.y+l.height+h]},N=b==null?void 0:b(e.x,e.y);this.noLines||(t.strokeStyle=this.config.colors.crossTool.lineColor,t.setLineDash(this.config.components.crossTool.lineDash),t.beginPath(),N&&(t.moveTo(...E.start),t.lineTo(...E.end)),t.moveTo(...B.start),t.lineTo(...B.end),t.stroke()),N&&this.drawYLabel(t,e),this.drawXLabel(t,e)}}drawXLabel(t,e){var s,r,i,a,o;const l=this.config.components.crossTool.xLabel.padding,c=this.config.components.crossTool.xLabel.margin,h=this.config.colors.crossTool;if(this.config.components.xAxis.visible){t.font=this.config.components.xAxis.fontSize+"px "+this.config.components.xAxis.fontFamily;const g=e.x,p=e.time,b=t.measureText(p).width,E=this.config.components.xAxis.fontSize,B=this.canvasBoundsContainer.getBounds(Y.X_AXIS);t.save(),t.fillStyle=h.labelBoxColor;const N=(s=l==null?void 0:l.left)!=null?s:0,k=(r=l==null?void 0:l.right)!=null?r:0,X=(i=l==null?void 0:l.top)!=null?i:0,Z=(a=l==null?void 0:l.bottom)!=null?a:0,J=(o=c==null?void 0:c.top)!=null?o:0,K=b+N+k,U=E+X+Z,q=Math.max(g-K/2,0),at=B.y+J;ii(t,q,at,K,U),t.fillStyle=h.labelTextColor;const ot=Math.max(g-b/2,N),nt=B.y+J+E+X-1;t.fillText(p,ot,nt),t.restore()}}drawYLabel(t,e){const s=this.config.components.crossTool.yLabel.padding,r=this.config.colors.crossTool;if(this.config.components.yAxis.visible){const i=this.paneManager.panes[e.paneId],a=e.y;if(!i)return;for(const o of i.yExtentComponents){const l=o.regularValueFromY(a),c=o.valueFormatter(l),h=this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(i.uuid,o.idx)),g=Di[this.config.components.crossTool.yLabel.type];g(t,h,c,a,{textColor:r.labelTextColor,bgColor:r.labelBoxColor,paddingBottom:s==null?void 0:s.bottom,paddingEnd:s==null?void 0:s.end,paddingTop:s==null?void 0:s.top},o.yAxis.state,this.config.colors.yAxis,!0,this.backgroundCanvasModel.ctx)}}}}class Ih{draw(){}}class Oh extends tt{constructor(t,e,s,r,i,a,o,l){super(),this.config=t,this.crossToolCanvasModel=e,this.canvasBoundsContainer=s,this.drawingManager=r,this.paneManager=i,this.backgroundCanvasModel=l,this.crossToolTypeDrawers={},this.model=new xh(t.components.crossTool,this.crossToolCanvasModel,a,o),this.addChildEntity(this.model);const c=new Ge(this.crossToolCanvasModel);this.registerDefaultDrawerTypes();const h=new Sh(this.model,this.crossToolCanvasModel,this.crossToolTypeDrawers),g=new ls;g.addDrawer(c,"CLEAR_CANVAS"),g.addDrawer(h,"CROSS_TOOL_DRAWER"),this.drawingManager.addDrawer(g,"CROSS_TOOL")}registerDefaultDrawerTypes(){this.registerCrossToolTypeDrawer("cross-and-labels",new Ii(this.config,this.canvasBoundsContainer,this.paneManager,this.backgroundCanvasModel,()=>!0)),this.registerCrossToolTypeDrawer("just-labels",new Ii(this.config,this.canvasBoundsContainer,this.paneManager,this.backgroundCanvasModel,()=>!0,!0)),this.registerCrossToolTypeDrawer("none",new Ih)}setVisible(t){this.model.setType(t?"cross-and-labels":"none")}setType(t){this.model.setType(t)}observeCrossToolChanged(){return this.model.currentHoverSubject}setMagnetTarget(t){this.config.components.crossTool.magnetTarget=t}registerCrossToolTypeDrawer(t,e){this.crossToolTypeDrawers[t]=e}}class Lh{constructor(t,e){this.dynamicObjectsModel=t,this.canvasModel=e}draw(){const t=this.dynamicObjectsModel.objects;Object.entries(t).forEach(([e,s])=>{for(const r of s){const{model:i,drawer:a}=r;a.draw(this.canvasModel,i,e)}})}getCanvasIds(){return[this.canvasModel.canvasId]}}class ie{constructor(t){this.data=t,this.next=null}}class Bh{constructor(t){if(this._head=null,this._tail=null,this.length=0,this._head=t!=null?t:null,this.head!==null){let e=this.head;for(;e.next;)e=e.next;this._tail=e,this.length++}}insertAtEnd(t){const e=new ie(t);if(this.head===null)this._head=e;else{let s=this.head;for(;s.next;)s=s.next;s.next=e}this._tail=e,this.length++}insertAt(t,e){if(!this.head||t<0||t>this.length)return null;const s=new ie(e);if(t===0)s.next=this.head,this._head=s;else{let r=this.head,i=r,a=0;for(;r&&a<t;)a++,i=r,r=r.next;s.next=r,i.next=s,t===this.length-1&&(this._tail=s)}this.length++}removeAt(t){if(!this.head||t<0||t>=this.length)return null;let e=this.head,s=e,r=0;if(t===0)this._head=e.next;else{for(;e.next&&r<t;)r++,s=e,e=e.next;s.next=e.next,t===this.length-1&&(this._tail=s)}this.length--}getNodePosition(t){let e=0,s=this.head;for(;s;){if(s.data===t.data)return e;s=s.next,e++}return-1}size(){return this.length}get head(){return this._head}get tail(){return this._tail}*[Symbol.iterator](){let t=this.head;for(;t;)yield t.data,t=t.next}}class Rh extends tt{constructor(t){super(),this.canvasModel=t,this.modelIdToObjectMap=new Map,this._objects=new $t({})}getObjectInfoById(t){const e=this.modelIdToObjectMap.get(t);if(!e)return;const s=e.paneId,i=this.objects[s];if(i)return[e,i]}getObjectPosition(t){const e=this.getObjectInfoById(t);if(!e)return-1;const[s,r]=e,i=new ie(s);return r.getNodePosition(i)}addObject(t){var e;const s=t.paneId,r=this.objects,i=(e=r[s])!=null?e:new Bh;Object.keys(r).find(a=>a===s)||(r[s]=i),i.insertAtEnd(t),this.modelIdToObjectMap.set(t.id,t),this.setDynamicObjects(r)}removeObject(t){const e=this.getObjectInfoById(t);if(!e)return;const[s,r]=e,i=new ie(s),a=r.getNodePosition(i);r.removeAt(a),this.modelIdToObjectMap.delete(t),r.size()===0&&delete this.objects[s.paneId],this.setDynamicObjects(this.objects)}moveToPosition(t,e){const s=this.getObjectInfoById(t);if(!s)return;const[r,i]=s,a=new ie(r),o=i.getNodePosition(a);o!==e&&(o<e?(i.insertAt(e,r),i.removeAt(o)):(i.removeAt(o),i.insertAt(e,r)),this.setDynamicObjects(this.objects))}bringToFront(t){const e=this.getObjectInfoById(t);if(!e)return;const[s,r]=e,i=new ie(s),a=r.getNodePosition(i);a>=0&&a<r.size()&&(r.removeAt(a),r.insertAtEnd(s),this.setDynamicObjects(this.objects))}bringToBack(t){const e=this.getObjectInfoById(t);if(!e)return;const[s,r]=e,i=new ie(s),a=r.getNodePosition(i);a>0&&a<=r.size()&&(r.removeAt(a),r.insertAt(0,s),this.setDynamicObjects(this.objects))}moveForward(t){const e=this.getObjectInfoById(t);if(!e)return;const[s,r]=e,i=new ie(s),a=r.getNodePosition(i);a>=0&&a+1<r.size()&&(r.removeAt(a),r.insertAt(a+1,s),this.setDynamicObjects(this.objects))}moveBackwards(t){const e=this.getObjectInfoById(t);if(!e)return;const[s,r]=e,i=new ie(s),a=r.getNodePosition(i);a>0&&a<r.size()&&(r.removeAt(a),r.insertAt(a-1,s),this.setDynamicObjects(this.objects))}get objects(){return this._objects.getValue()}setDynamicObjects(t){this._objects.next(t),this.canvasModel.fireDraw()}}class Fh extends tt{constructor(t,e){super();const s=new Rh(t);this.model=s,this.addChildEntity(s);const r=new Lh(s,t);e.addDrawer(r,"DYNAMIC_OBJECTS")}}const Yh=()=>n=>n.toString(),Nh=(n,t)=>{var e;const s="date.get"+(t((e=n.timezone)!=null?e:"")?"":"UTC"),r={YYYY:a("FullYear"),YY:a("FullYear")+" % 100",MMM:o("shortMonths","Month"),MMMM:l(o("shortMonths","Month")),M:"1+"+a("Month"),d:a("Date"),H:a("Hours"),m:a("Minutes"),s:a("Seconds"),sss:a("Milliseconds"),EEE:o("shortDays","Day"),SSS:"this.addTwoZeros("+a("Milliseconds")+")",T:"date.getTime()"};["s","m","H","d","M"].forEach(function(h){r[h+h]="this.addZero("+r[h]+")"});const i=new RegExp(Object.keys(r).sort().reverse().join("|"),"g");function a(h){return s+h+"()"}function o(h,g){return"this."+h+"["+a(g)+"]"}function l(h){return h+".toUpperCase()"}function c(h){return"' + ("+r[h]+") + '"}return function(h){var g;const p={shortDays:Hh(n),shortMonths:kh(n),addZero(b){return b<10?"0"+b:b},addTwoZeros(b){return(b<100?"0":"")+(b<10?"0":"")+b},tzDate:t((g=n.timezone)!=null?g:"")||function(b){return b instanceof Date?b:new Date(+b)}};return new Function("date","date=this.tzDate(date); return '"+h.replace(i,c)+"'").bind(p)}};function Hh(n){var t;return(t=n.shortDays)!=null?t:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}function kh(n){var t;return(t=n.shortMonths)!=null?t:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}const Oi=(n,t,e)=>{if(n){if(typeof n=="string")return e(n);if(Array.isArray(n)){const s=n.filter(r=>{if(r.showWhen){const i=[];return r.showWhen.periodLessThen&&i.push(()=>{var a,o;return t<((o=(a=r.showWhen)==null?void 0:a.periodLessThen)!=null?o:0)}),r.showWhen.periodMoreThen&&i.push(()=>{var a,o;return t>=((o=(a=r.showWhen)==null?void 0:a.periodMoreThen)!=null?o:0)}),i.every(a=>a())}else return!0});if(s.length>0){const r=s[0];if(r.format)return e(r.format);if(r.customFormatter)return r.customFormatter}}}return Yh()},jh={"rhombus-small":4,rhombus:6,"rhombus-large":8},$e=(n,t)=>`${n}_${t}`;class Uh{constructor(t,e,s,r,i,a,o){this.backgroundCanvas=t,this.canvasModel=e,this.chartModel=s,this.config=r,this.canvasBoundsContainer=i,this.model=a,this.formatterProvider=o,this.customIcons={};const l=this.config.components.events.icons;l&&(this.createCustomIcon("earnings",l.earnings),this.createCustomIcon("dividends",l.dividends),this.createCustomIcon("splits",l.splits),this.createCustomIcon("conference-calls",l.conferenceCalls))}createCustomIcon(t,e){if(e){const s=this.createIconImage(e.normal),r=this.createIconImage(e.hover);this.customIcons[$e(t,"normal")]=s,this.customIcons[$e(t,"hover")]=r}}createIconImage(t){var e;const r=new DOMParser().parseFromString(t,"text/html").querySelector("svg");let i=0;r&&(i=parseInt((e=r.getAttribute("height"))!=null?e:"",10));const l="data:image/svg+xml;base64,"+btoa(t),c=new Image;return c.src=l,{img:c,svgHeight:i}}draw(){if(!this.config.components.events.visible)return;const t=this.canvasBoundsContainer.getBounds(Y.EVENTS),e=this.canvasBoundsContainer.getBounds(Y.ALL_PANES),s=this.canvasModel.ctx;s.save(),this.model.events.filter(r=>this.config.components.events.eventsVisibility[r.type]).forEach(r=>{const i=this.chartModel.candleFromTimestamp(r.timestamp).xCenter(this.chartModel.scale);if(i>e.x&&i<e.x+e.width){const a=this.config.colors.events[r.type].color;s.strokeStyle=a,this.customIcons[$e(r.type,"hover")]!==void 0?this.drawCustomSvgEvent(s,i,t,r):this.drawDefaultEvent(s,i,t,r,a),this.model.hoveredEvent.getValue()===r&&(s.beginPath(),s.moveTo(i,e.y),s.lineTo(i,t.y+t.height/2),s.stroke(),s.closePath(),this.config.components.xAxis.visible&&this.drawLabel(i,r))}}),s.restore()}drawCustomSvgEvent(t,e,s,r){const i=s.y+s.height/2,a=this.customIcons[$e(r.type,"normal")],o=this.customIcons[$e(r.type,"hover")];this.model.hoveredEvent.getValue()===r?t.drawImage(o.img,e-o.svgHeight/2,i-o.svgHeight/2):t.drawImage(a.img,e-a.svgHeight/2,i-a.svgHeight/2)}drawDefaultEvent(t,e,s,r,i){const a=s.y+s.height/2;t.fillStyle=i,t.lineWidth=1.5;const o=cs(r);t.beginPath(),t.moveTo(e-o,a),t.lineTo(e,a-o),t.lineTo(e+o,a),t.lineTo(e,a+o),t.closePath(),this.model.hoveredEvent.getValue()===r?t.fill():t.stroke()}drawLabel(t,e){var s;const r=this.canvasModel.ctx,i=this.canvasBoundsContainer.getBounds(Y.X_AXIS),a=this.config.components.xAxis.fontFamily,o=this.config.components.xAxis.fontSize,l=(s=this.config.components.xAxis.padding.top)!=null?s:0,c=i.y+o-1+l;r.font=`${o}px ${a}`;const h=this.formatterProvider()(e.timestamp),g=r.measureText(h).width;cn(this.backgroundCanvas.ctx,r,t-g/2,i.y+1,g,i.height-1),r.fillStyle=this.config.colors.events[e.type].color,r.fillText(h,t-g/2,c)}getCanvasIds(){return[this.canvasModel.canvasId]}}function cs(n){return jh[n.style]}const bn=5;class Wh{constructor(t,e,s,r,i){this.hitTestCanvasModel=t,this.chartModel=e,this.config=s,this.canvasBoundsContainer=r,this.model=i}draw(){const t=this.hitTestCanvasModel.ctx,e=this.canvasBoundsContainer.getBounds(Y.EVENTS);t.save(),this.model.events.forEach((s,r)=>{const i=this.model.events[r-1],a=i&&this.chartModel.candleFromTimestamp(i.timestamp).xCenter(this.chartModel.scale),o=this.chartModel.candleFromTimestamp(s.timestamp).xCenter(this.chartModel.scale);if(o>e.x&&o<e.x+e.width){const l=this.config.colors.events[s.type].color;t.strokeStyle=l,t.fillStyle=l;const c=cs(s);t.fillStyle=this.hitTestCanvasModel.idToColor(s.id);const h=(c+bn)*2;if(a!==void 0){const g=cs(i);if(a+g>o-h/2){const b=c*2+bn;t.fillRect(a+g,e.y,b,e.height)}else t.fillRect(o-c-bn,e.y,h,e.height)}else t.fillRect(o-c-bn,e.y,h,e.height)}}),t.restore()}getCanvasIds(){return[this.hitTestCanvasModel.canvasId]}}var Xh=Object.defineProperty,Li=Object.getOwnPropertySymbols,zh=Object.prototype.hasOwnProperty,Vh=Object.prototype.propertyIsEnumerable,Bi=(n,t,e)=>t in n?Xh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Gh=(n,t)=>{for(var e in t||(t={}))zh.call(t,e)&&Bi(n,e,t[e]);if(Li)for(var e of Li(t))Vh.call(t,e)&&Bi(n,e,t[e]);return n};const Ri=317,hs={DRAWINGS:[1,199],NEWS:[200,299],DATA_SERIES:[300,2999],EVENTS:[3e3,4e3],EXECUTED_ORDERS:[4001,5e3]};class $h extends ui{constructor(t,e,s,r,i,a,o,l){super(t,e,i,o,l,{willReadFrequently:!0,desynchronized:!0}),this.canvasInputListener=s,this.canvasBoundsContainer=r,this.hitTestSubscribers=[],this.eventsSubscriptions=[],this.hoverSubject=new V,this.touchStartSubject=new V,this.dblClickSubject=new V,this.rightClickSubject=new V,this.curImgData=new Uint8ClampedArray(4),this.prevAnimationFrameId=-1,fi(this,a),e.style.visibility="hidden",this.enableUserControls()}enableUserControls(){if(this.eventsSubscriptions.length===0){const t=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES),e=this.canvasInputListener.observeMouseMove().pipe(je(100,void 0,{trailing:!0})).subscribe(c=>this.eventHandler(c,"hover")),s=this.canvasInputListener.observeTouchStart().pipe(yt(()=>this.canvasInputListener.currentPoint)).subscribe(c=>this.eventHandler(c,"touchstart")),r=Ot(this.canvasInputListener.observeMouseDown(t),this.canvasInputListener.observeTouchStart().pipe(yt(()=>this.canvasInputListener.currentPoint))).subscribe(c=>this.eventHandler(c,"mousedown")),i=Ot(this.canvasInputListener.observeMouseUp(t),this.canvasInputListener.observeTouchEndDocument().pipe(yt(()=>this.canvasInputListener.currentPoint))).subscribe(c=>this.eventHandler(c,"mouseup")),a=this.canvasInputListener.observeDbClick(t).subscribe(c=>this.eventHandler(c,"dblclick")),o=this.canvasInputListener.observeContextMenu(t).pipe(yt(()=>Gh({},this.canvasInputListener.currentPoint))).subscribe(c=>{this.eventHandler(c,"contextmenu")}),l=this.canvasInputListener.observeWheel(t).subscribe(c=>setTimeout(()=>this.eventHandler(c,"zoom"),0));this.eventsSubscriptions.push(e,r,a,o,l,s,i)}}disableUserControls(){this.eventsSubscriptions.forEach(t=>t.unsubscribe()),this.eventsSubscriptions=[]}addSubscriber(t){this.hitTestSubscribers.push(t)}removeSubscriber(t){this.hitTestSubscribers=this.hitTestSubscribers.filter(e=>e===t)}idToColor(t){const e=(t*Ri).toString(16);return"#000000".substr(0,7-e.length)+e}colorToId(t){return t/Ri}observeHoverOnElement(){return this.hoverSubject.asObservable()}observeTouchStartOnElement(){return this.touchStartSubject.asObservable()}observeDblClickOnElement(){return this.dblClickSubject.asObservable()}observeRightClickOnElement(){return this.rightClickSubject.asObservable()}getPixel(t,e){const s=window.devicePixelRatio;return this.prevAnimationFrameId!==ss&&(this.curImgData=this.ctx.getImageData(t*s,e*s,1,1).data,this.prevAnimationFrameId=ss),this.curImgData}resolveModel(t){const e=this.getPixel(t.x,t.y),s=this.colorToId(e[0]*65536+e[1]*256+e[2]),r=Number(s),[i]=ds(this.hitTestSubscribers,r);return i==null?void 0:i.lookup(s)}resolveCursor(t){var e;if(!this.hitTestSubscribers.some(l=>l.resolveCursor!==void 0))return;const s=this.getPixel(t.x,t.y),r=this.colorToId(s[0]*65536+s[1]*256+s[2]),i=Number(r),[a]=ds(this.hitTestSubscribers,i),o=a==null?void 0:a.lookup(r);return(e=a==null?void 0:a.resolveCursor)==null?void 0:e.call(a,t,o)}eventHandler(t,e){var s,r,i,a,o,l,c;const h=this.getPixel(t.x,t.y),g=this.colorToId(h[0]*65536+h[1]*256+h[2]),p=Number(g),[b,E]=ds(this.hitTestSubscribers,p),B=b==null?void 0:b.lookup(g),N={point:t,model:B};switch(e){case"mousedown":B&&((s=b==null?void 0:b.onMouseDown)==null||s.call(b,B,t)),E.forEach(k=>k.onMouseDown&&k.onMouseDown(null,t));break;case"mouseup":B&&((r=b==null?void 0:b.onMouseUp)==null||r.call(b,B,t)),E.forEach(k=>k.onMouseUp&&k.onMouseUp(null,t));break;case"hover":B&&((i=b==null?void 0:b.onHover)==null||i.call(b,B,t)),E.forEach(k=>k.onHover&&k.onHover(null,t)),this.hoverSubject.next(N);break;case"touchstart":B&&((a=b==null?void 0:b.onTouchStart)==null||a.call(b,B,t)),E.forEach(k=>k.onTouchStart&&k.onTouchStart(null,t)),this.touchStartSubject.next(N);break;case"dblclick":B&&((o=b==null?void 0:b.onDblClick)==null||o.call(b,B,t)),this.dblClickSubject.next(N);break;case"contextmenu":B&&((l=b==null?void 0:b.onRightClick)==null||l.call(b,B,t)),this.rightClickSubject.next(N);break;case"zoom":B&&((c=b==null?void 0:b.onZoom)==null||c.call(b,B,t)),E.forEach(k=>k.onZoom&&k.onZoom(null,t));break;default:break}}}const ds=(n,t)=>{let e;const s=[];return n.forEach(r=>{const[i,a]=r.getIdRange();t>=i&&t<=a?e=r:s.push(r)}),[e,s]};var Zh=Object.defineProperty,Kh=Object.defineProperties,Jh=Object.getOwnPropertyDescriptors,Fi=Object.getOwnPropertySymbols,qh=Object.prototype.hasOwnProperty,Qh=Object.prototype.propertyIsEnumerable,Yi=(n,t,e)=>t in n?Zh(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,td=(n,t)=>{for(var e in t||(t={}))qh.call(t,e)&&Yi(n,e,t[e]);if(Fi)for(var e of Fi(t))Qh.call(t,e)&&Yi(n,e,t[e]);return n},ed=(n,t)=>Kh(n,Jh(t));class nd extends tt{constructor(t){super(),this.canvasModel=t,this.events=[],this.hoveredEvent=new $t(null)}setEvents(t){this.events=this.indexEvents(t)}indexEvents(t){const e=this.getIdRange()[0];return t.map((s,r)=>ed(td({},s),{id:r+e})).sort((s,r)=>s.timestamp-r.timestamp)}getIdRange(){return hs.EVENTS}lookup(t){return this.events.filter(e=>e.id===t)[0]}onHover(t,e){this.hoveredEvent.getValue()!==t&&(t&&(t.point=e),this.hoveredEvent.next(t),this.canvasModel.fireDraw())}onTouchStart(t,e){this.onHover(t,e)}}class sd extends tt{constructor(t,e,s,r,i,a,o,l,c){super(),this.config=t,this.canvasModel=e,this.canvasBoundsContainer=i,this.drawingManager=a,this.formatterFactory=o,this.eventsXAxisLabelFormatterProvider=()=>Oi(this.config.components.events.xAxisLabelFormat,r.getPeriod(),this.formatterFactory);const h=new nd(e);this.eventsModel=h,this.addChildEntity(h),s.addSubscriber(h);const g=new Uh(c,e,r,t,i,h,this.eventsXAxisLabelFormatterProvider);this.drawingManager.addDrawer(g,"EVENTS");const p=new Wh(s,r,t,i,h);this.drawingManager.addDrawerBefore(p,"HIT_TEST_EVENTS","HIT_TEST_DRAWINGS"),l.setCursorForCanvasEl(Y.EVENTS,t.components.events.cursor)}setEvents(t){this.eventsModel.setEvents(t),this.canvasModel.fireDraw()}setVisible(t){this.config.components.events.visible=t,this.canvasBoundsContainer.recalculateBounds(),this.canvasModel.fireDraw()}setEventTypeVisible(t){Kt(this.config.components.events.eventsVisibility,t,{overrideExisting:!0,addIfMissing:!1}),this.canvasModel.fireDraw()}observeEventHovered(){return this.eventsModel.hoveredEvent.asObservable()}}class rd{constructor(t,e,s,r,i,a,o,l,c=()=>!0,h){this.canvasModel=t,this.viewportModel=e,this.config=s,this.yAxisState=r,this.xBoundsProvider=i,this.yBoundsProvider=a,this.xLabelsProvider=o,this.yLabelsProvider=l,this.drawPredicate=c,this.getBaseline=h}draw(){if(this.drawPredicate()){const t=this.canvasModel.ctx;Se(t,()=>this.drawVertical(t)),Se(t,()=>this.drawHorizontal(t)),Se(t,()=>this.drawZeroLine(t))}}drawZeroLine(t){const e=this.yLabelsProvider();if(this.getBaseline&&this.yAxisState.type==="percent"&&this.yAxisState.zeroPercentLine&&e.length){const s=this.xBoundsProvider(),r=gt(this.getBaseline());t.beginPath(),t.strokeStyle=this.config.colors.yAxis.zeroPercentLine,t.setLineDash([]),t.moveTo(s.x,r),t.lineTo(s.x+s.width,r),t.stroke(),t.closePath()}}drawVertical(t){const e=this.xLabelsProvider();if(e.length&&this.config.components.grid.vertical){t.lineWidth=this.config.components.grid.width,t.strokeStyle=this.config.colors.chartAreaTheme.gridColor,t.setLineDash(this.config.components.grid.dash||[]);const s=this.xBoundsProvider(),r=s.x+s.width;for(const i of e){const a=st(this.viewportModel.toX(i.value));a>s.x&&a<r&&(t.beginPath(),t.moveTo(a,s.y),t.lineTo(a,s.y+s.height),t.stroke())}}}drawHorizontal(t){const e=this.yLabelsProvider();if(e.length&&this.config.components.grid.horizontal){t.lineWidth=this.config.components.grid.width,t.strokeStyle=this.config.colors.chartAreaTheme.gridColor,t.setLineDash(this.config.components.grid.dash||[]);const s=this.yBoundsProvider();for(const r of e){const i=gt(this.viewportModel.toY(r.value)),a=_h(r.text,t,zt);i>s.y+a&&i<s.y+s.height-a&&(t.beginPath(),t.moveTo(s.x,i),t.lineTo(s.x+s.width,i),t.stroke())}}}getCanvasIds(){return[this.canvasModel.canvasId]}}class Ni extends tt{constructor(t,e,s,r,i,a,o,l,c,h,g,p){super(),this.drawerName=i,this.drawingManager=a,this.drawer=new rd(t,e,s,r,o,l,c,h,p,g)}doDeactivate(){super.doDeactivate(),this.drawingManager.removeDrawer(this.drawer)}doActivate(){super.doActivate(),this.drawingManager.addDrawer(this.drawer,this.drawerName)}}class id{constructor(t,e,s,r){this.canvasModel=t,this.chartModel=e,this.config=s,this.canvasBoundsContainer=r}draw(){if(this.config.components.highLow.visible&&this.chartModel.isReady()){const{high:t,low:e,highIdx:s,lowIdx:r}=this.chartModel.mainCandleSeries.zippedHighLow,i=this.chartModel.mainCandleSeries.dataIdxStart,a=i+s,o=i+r,l=this.canvasModel.ctx;l.save(),l.font=this.config.components.highLow.font,this.drawMarkerLabel(l,a,t,"high"),this.drawMarkerLabel(l,o,e,"low"),l.restore()}}drawMarkerLabel(t,e,s,r){const i=this.getMarkerY(t,s,r==="low");if(!this.checkMarkerInBounds(i))return;const a=this.getMarkerText(s,r),o=this.getMarkerX(t,e,a);t.fillStyle=r==="high"?this.config.colors.highLowTheme.highColor:this.config.colors.highLowTheme.lowColor,t.fillText(a,o,i)}getMarkerText(t,e){const s=this.chartModel.pane.regularFormatter(t);return`${e==="high"?"H:":"L:"} ${s}`}getMarkerY(t,e,s=!1){const r=this.chartModel.toY(e);if(s){const i=jn(t);return r+i}return r}checkMarkerInBounds(t){const e=this.canvasBoundsContainer.getBounds(Y.CHART);return t>e.y&&t<e.y+e.height}getMarkerX(t,e,s){let r=this.chartModel.toX(e);const i=this.canvasBoundsContainer.getBounds(Y.CHART),a=4,o=t.measureText(s).width;return r+a+o>i.width&&(r=r-(a+o)),r+a}getCanvasIds(){return[this.canvasModel.canvasId]}}class ad extends tt{constructor(t,e,s,r,i){super();const a=new id(e,s,t,r);i.addDrawer(a,"HIGH_LOW")}}const od=["AFTER_MARKET","PRE_MARKET","NO_TRADING","REGULAR"],ld=24*60*60*1e3;class cd extends tt{constructor(t){super(),this.chartModel=t,this.highlights=[],this.visualHighlights={},this.highlightsUpdatedSubject=new V}activate(){this.addRxSubscription(this.chartModel.scale.xChanged.subscribe(()=>this.highlights.length&&this.recalculateVisualHighlights()))}getHighlights(){return this.highlights}getVisualHighlights(){return this.visualHighlights}recalculateVisualHighlights(){this.visualHighlights={};const t=this.chartModel.getFirstTimestamp(),e=this.chartModel.getLastTimestamp()+ld;Ro(this.highlights,t,e,hd).forEach(r=>{var i;this.visualHighlights[r.type]||(this.visualHighlights[r.type]=[]),(i=this.visualHighlights[r.type])==null||i.push(r)})}setHighlights(t){this.highlights=t,this.highlights.sort((e,s)=>e.to-s.to),this.highlightsUpdatedSubject.next(this.highlights),this.highlights.length?this.recalculateVisualHighlights():this.visualHighlights={}}observeHighlightsUpdated(){return this.highlightsUpdatedSubject.asObservable()}}const hd=n=>n.to,ve=[20,10];class dd{constructor(t,e,s,r,i){this.highlightsModel=t,this.chartModel=e,this.canvasModel=s,this.canvasBoundsContainer=r,this.config=i}draw(){var t,e,s,r;if(this.config.components.highlights.visible){const i=this.chartModel.getCandles(),a=this.canvasModel.ctx,o=this.highlightsModel.getVisualHighlights();if(this.highlightsModel.getHighlights().length&&i.length!==0&&this.chartModel.scale.isScaleReady()){const c=this.canvasBoundsContainer.getBounds(Y.ALL_PANES);a.save(),xe(a,c);const h=(t=this.config.components.highlights.border.width)!=null?t:1,g=(e=this.config.components.highlights.border.dash)!=null?e:[0,0],p=(s=this.config.components.highlights.fontSize)!=null?s:11,b=(r=this.config.components.highlights.fontFamily)!=null?r:"monospace",E=`${p}px ${b}, monospace`;a.font=E,a.lineWidth=h,a.setLineDash(g),od.forEach(B=>{var N,k;const X=o[B];if(X){const Z=this.config.colors.highlights[B],J=(N=Z==null?void 0:Z.border)!=null?N:"#ffffff",K=(k=Z==null?void 0:Z.background)!=null?k:"#ffffff";a.save(),a.beginPath(),a.fillStyle=K,a.strokeStyle=J,X.forEach(U=>{var q,at,ot;const nt=this.chartModel.candleFromTimestamp(U.from),rt=Tt(nt.width,this.chartModel.scale.zoomX),dt=nt.xStart(this.chartModel.scale),ht=this.chartModel.candleFromTimestamp(U.to),St=Tt(ht.width,this.chartModel.scale.zoomX),ut=ht.xStart(this.chartModel.scale)+St;if(U.border&&this.drawBorders(U.border,a,dt+rt,ut-St,c),a.fillRect(dt,c.y,ut-dt,c.y+c.height),U.label){const vt=(q=U.label.text)!=null?q:"",pt=this.config.colors.highlights[U.type];a.save(),a.fillStyle=(at=pt==null?void 0:pt.label)!=null?at:"#ffffff";const Ht=Nt(vt,a,E),[kt,jt]=this.resolveHighlightLabelPosition((ot=U.label.placement)!=null?ot:"left-left",c,[dt,ut],Ht);a.fillText(vt,kt,jt),a.restore()}}),a.closePath(),a.restore()}}),a.restore()}}}resolveHighlightLabelPosition(t,e,s,r){const[i,a]=s;switch(t){case"right-left":return[a-ve[1]-r,e.y+ve[0]];case"left-left":return[i-ve[1]-r,e.y+ve[0]];case"right-right":return[a+ve[1],e.y+ve[0]];case"left-right":default:return[i+ve[1],e.y+ve[0]]}}drawBorders(t,e,s,r,i){const a=t.left,o=t.right;a&&(e.beginPath(),e.moveTo(s,i.y),e.lineTo(s,i.y+i.height),e.stroke(),e.closePath()),o&&(e.beginPath(),e.moveTo(r,i.y),e.lineTo(r,i.y+i.height),e.stroke(),e.closePath())}getCanvasIds(){return[this.canvasModel.canvasId]}}const ud="HIGHLIGHTS_PLUGIN";class fd extends tt{constructor(t,e,s,r,i,a){super(),this.eventBus=t,this.config=e,this.highlightsModel=new cd(s),this.addChildEntity(this.highlightsModel),this.highLightsDrawer=new dd(this.highlightsModel,s,r,i,e),a.addDrawer(this.highLightsDrawer,ud)}getHighlights(){return this.highlightsModel.getHighlights()}setHighlights(t){this.highlightsModel.setHighlights(t)}setHighlightsVisible(t=!0){this.config.components.highlights.visible=t,this.eventBus.fireDraw(this.highLightsDrawer.getCanvasIds())}observeHighlightsUpdated(){return this.highlightsModel.observeHighlightsUpdated()}}function gd(){return y(function(n,t){var e,s=!1;n.subscribe(Xt(t,function(r){var i=e;e=r,s&&t.next([i,r]),s=!0}))})}function lt(n,t){return y(function(e,s){var r=0;e.subscribe(Xt(s,function(i){return n.call(t,i,r++)&&s.next(i)}))})}var vd=Object.defineProperty,md=Object.defineProperties,pd=Object.getOwnPropertyDescriptors,Hi=Object.getOwnPropertySymbols,bd=Object.prototype.hasOwnProperty,Cd=Object.prototype.propertyIsEnumerable,ki=(n,t,e)=>t in n?vd(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ji=(n,t)=>{for(var e in t||(t={}))bd.call(t,e)&&ki(n,e,t[e]);if(Hi)for(var e of Hi(t))Cd.call(t,e)&&ki(n,e,t[e]);return n},Ui=(n,t)=>md(n,pd(t));const ae=4;class yd{constructor(t,e,s,r,i,a){this.config=t,this.chartModel=e,this.canvasModel=s,this.canvasBoundsContainer=r,this.formatterFactory=i,this.visualCandlesProvider=a}draw(){if(this.config.components.navigationMap.visible){const t=this.visualCandlesProvider();if(t.length){const e=this.canvasBoundsContainer.getBounds(Y.N_MAP),s=this.canvasBoundsContainer.getBounds(Y.N_MAP_BTN_L),r=this.canvasBoundsContainer.getBounds(Y.N_MAP_BTN_R),i=this.canvasBoundsContainer.getBounds(Y.N_MAP_KNOT_L),a=this.canvasBoundsContainer.getBounds(Y.N_MAP_KNOT_R),o=this.canvasBoundsContainer.getBounds(Y.N_MAP_SLIDER_WINDOW),l=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART),c=this.canvasModel.ctx;c.fillStyle=this.config.colors.navigationMap.backgroundColor,c.fillRect(e.x,e.y,e.width,e.height),c.strokeStyle=this.config.colors.paneResizer.lineColor,c.lineWidth=1,c.beginPath(),c.moveTo(e.x,e.y),c.lineTo(e.x+e.width,e.y),c.closePath(),c.stroke(),s.width!==0&&this.drawLeftArrowButton(c,s,this.config),r.width!==0&&this.drawRightArrowButton(c,r,this.config),c.fillStyle=this.config.colors.navigationMap.mapFillColor,c.beginPath(),c.moveTo(l.x,l.y+l.height);for(const h of t)c.lineTo(h[0],h[1]);if(c.lineTo(l.x+l.width,l.y+l.height),c.lineTo(l.x,l.y+l.height),c.closePath(),this.config.colors.navigationMap.mapGradientTopColor&&this.config.colors.navigationMap.mapGradientBottomColor){const h=c.createLinearGradient(l.x,l.y,l.x,l.y+l.height);h.addColorStop(0,this.config.colors.navigationMap.mapGradientTopColor),h.addColorStop(1,this.config.colors.navigationMap.mapGradientBottomColor),c.fillStyle=h}c.fill(),this.config.colors.navigationMap.mapColor&&(c.strokeStyle=this.config.colors.navigationMap.mapColor,c.stroke()),this.drawSlider(c,i,a,s,o),this.drawTimeLabels(c)}}}blockDrawSliderOnLeftArrow(t,e,s,r){t.x<=s.x+s.width&&(t.x=s.x+s.width,r.x=t.x+t.width,e.x=r.x+r.width)}drawSlider(t,e,s,r,i){this.blockDrawSliderOnLeftArrow(e,s,r,i),this.drawKnotButton(t,e,this.config,!0),this.drawKnotButton(t,s,this.config,!1),t.fillStyle=this.config.colors.navigationMap.sliderColor,t.fillRect(i.x,i.y,i.width,i.height)}drawLeftArrowButton(t,e,s){t.fillStyle=s.colors.navigationMap.buttonColor,t.fillRect(e.x,e.y,e.width,e.height),t.beginPath();const r=Math.round(e.x+e.width/2-ae/2),i=Math.round(e.y+e.height/2);t.moveTo(r,i),t.lineTo(r+ae,i+ae),t.lineTo(r+ae,i-ae),t.fillStyle=s.colors.navigationMap.buttonArrowColor,t.fill()}drawRightArrowButton(t,e,s){t.fillStyle=s.colors.navigationMap.buttonColor,t.fillRect(e.x,e.y,e.width,e.height),t.beginPath();const r=Math.round(e.x+e.width/2-ae/2),i=Math.round(e.y+e.height/2);t.moveTo(r,i-ae),t.lineTo(r,i+ae),t.lineTo(r+ae,i),t.fillStyle=s.colors.navigationMap.buttonArrowColor,t.fill()}drawKnotButton(t,e,s,r){const i=s.components.navigationMap.knots.border;t.fillStyle=s.colors.navigationMap.knotColor;const a=r?e.x-i:e.x+i;t.fillRect(a,e.y,e.width,e.height),t.lineWidth=s.components.navigationMap.knots.lineWidth,i>0&&(t.beginPath(),t.moveTo(a,e.y),t.lineTo(a,e.y+e.height),t.lineTo(a+e.width,e.y+e.height),t.lineTo(a+e.width,e.y),t.lineTo(a,e.y),t.lineWidth=i,t.strokeStyle=s.colors.navigationMap.knotBorderColor,t.stroke()),t.beginPath(),t.moveTo(a+e.width/2,e.y+e.height/4),t.lineTo(a+e.width/2,e.y+3*e.height/4),t.strokeStyle=s.colors.navigationMap.knotLineColor,t.stroke()}drawTimeLabels(t){const e=Lt(this.chartModel.mainCandleSeries.getSeriesInViewport()),s=this.config.components.navigationMap.timeLabels,r=s.visible;if(e.length&&r){const i=e[0].candle.timestamp,a=e[e.length-1].candle.timestamp,o=this.canvasBoundsContainer.getBounds(Y.N_MAP_LABEL_L),l=this.canvasBoundsContainer.getBounds(Y.N_MAP_LABEL_R),h={textFill:this.config.colors.navigationMap.timeLabelsTextColor,textFontFamily:s.fontFamily,textSize:`${s.fontSize}px`},g={dateFormat:s.dateFormat,padding:s.padding,textProperties:Ui(ji({},h),{textAlign:"left"})},p={dateFormat:s.dateFormat,padding:s.padding,textProperties:Ui(ji({},h),{textAlign:"right"})};this.drawTimeLabel(t,o,i,g),this.drawTimeLabel(t,l,a,p)}}drawTimeLabel(t,e,s,r){const i=r.padding,a=nr(s,r.dateFormat,this.formatterFactory);Qs(t,r.textProperties);const o=jn(t),l=er(a);Fo(t,l,e.x+i.x,e.y+o+i.y,r.textProperties)}getCanvasIds(){return[this.canvasModel.canvasId]}}class Ze extends bi{constructor(t,e,s,r,i=pi){super(t,e,s,r,i)}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasInputListener.observeXDragStart(this.hitTest).subscribe(this.onDragStart)),this.addRxSubscription(this.canvasInputListener.observeXDrag().subscribe(this.onDragTick)),this.addRxSubscription(this.canvasInputListener.observeXDragEnd().subscribe(this.onDragEnd))}doDeactivate(){super.doDeactivate()}}const Wi=4;class wd extends tt{constructor(t,e,s,r,i,a){super(),this.bus=t,this.chartModel=e,this.scale=s,this.canvasInputListeners=r,this.canvasBoundsContainer=i,this.chartPanComponent=a,this.leftKnotDragStartXRelative=0,this.rightKnotDragStartXRelative=0,this.lastMousePosition=0,this.leftKnotDragStart=b=>{const E=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART);this.leftKnotDragStartXRelative=b.x-E.x-Wi},this.leftKnotDragTick=b=>{const{delta:E}=b,N=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART).width,k=(this.leftKnotDragStartXRelative+E)/N;this.canvasBoundsContainer.leftRatio=k,this.scale.setXScale(Math.round(this.chartModel.mainCandleSeries.dataPoints.length*this.canvasBoundsContainer.leftRatio),this.scale.xEnd)},this.rightKnotDragStart=b=>{const E=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART);this.rightKnotDragStartXRelative=b.x-E.x+Wi},this.rightKnotDragTick=b=>{const{delta:E}=b,N=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART).width,k=(this.rightKnotDragStartXRelative+E)/N;this.canvasBoundsContainer.rightRatio=k,this.scale.setXScale(this.scale.xStart,Math.round(this.chartModel.mainCandleSeries.dataPoints.length*this.canvasBoundsContainer.rightRatio))},this.sliderDragStart=()=>{this.lastMousePosition=0},this.sliderDragTick=b=>{const{delta:E}=b,B=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART),N=this.chartModel.mainCandleSeries.meanCandleWidth/(B.width/this.chartModel.mainCandleSeries.dataPoints.length),k=(this.lastMousePosition-E)*N;this.scale.moveXStart(this.scale.xStart-k),this.lastMousePosition=E};const o=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_KNOT_L),l=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_KNOT_R),c=new Ze(o,{onDragStart:this.leftKnotDragStart,onDragTick:this.leftKnotDragTick},this.canvasInputListeners,this.chartPanComponent),h=new Ze(l,{onDragStart:this.rightKnotDragStart,onDragTick:this.rightKnotDragTick},this.canvasInputListeners,this.chartPanComponent);this.addChildEntity(c),this.addChildEntity(h);const g=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_SLIDER_WINDOW),p=new Ze(g,{onDragStart:this.sliderDragStart,onDragTick:this.sliderDragTick},this.canvasInputListeners,this.chartPanComponent);this.addChildEntity(p)}doActivate(){super.doActivate();const t=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_BTN_L);this.addRxSubscription(this.canvasInputListeners.observeClick(t).subscribe(()=>{this.scale.moveXStart(this.scale.xStart-1)})),this.addRxSubscription(this.canvasInputListeners.observeTouchStart(t).subscribe(()=>{this.scale.moveXStart(this.scale.xStart-1)}));const e=this.canvasBoundsContainer.getBoundsHitTest(Y.N_MAP_BTN_R);this.addRxSubscription(this.canvasInputListeners.observeClick(e).subscribe(()=>{this.scale.moveXStart(this.scale.xStart+1)})),this.addRxSubscription(this.canvasInputListeners.observeTouchStart(e).subscribe(()=>{this.scale.moveXStart(this.scale.xStart+1)})),this.addRxSubscription(this.scale.xChanged.subscribe(()=>{const s=this.chartModel.mainCandleSeries;this.canvasBoundsContainer.leftRatio=s.dataIdxStart/(s.dataPoints.length-1),this.canvasBoundsContainer.rightRatio=s.dataIdxEnd/(s.dataPoints.length-1),this.canvasBoundsContainer.recalculateNavigationMapElementBounds(),this.bus.fireDraw()}))}}class Sd extends tt{constructor(t,e,s,r,i,a,o,l,c,h){super(),this.eventBus=t,this.chartModel=e,this.canvasModel=s,this.config=r,this.canvasInputListeners=i,this.canvasBoundsContainer=a,this.chartPanComponent=c,this.visualCandles=[];const g=new yd(r,e,s,a,l,()=>this.visualCandles);o.addDrawer(g,Y.N_MAP_CHART),this.navigationMapMoveHandler=new wd(this.eventBus,this.chartModel,this.chartModel.scale,this.canvasInputListeners,this.canvasBoundsContainer,this.chartPanComponent),h.setCursorForCanvasEl(Y.N_MAP_CHART,r.components.navigationMap.cursors.chart),h.setCursorForCanvasEl(Y.N_MAP_BTN_L,r.components.navigationMap.cursors.buttonLeft),h.setCursorForCanvasEl(Y.N_MAP_BTN_R,r.components.navigationMap.cursors.buttonRight),h.setCursorForCanvasEl(Y.N_MAP_KNOT_L,r.components.navigationMap.cursors.leftResizer),h.setCursorForCanvasEl(Y.N_MAP_KNOT_R,r.components.navigationMap.cursors.rightResizer),h.setCursorForCanvasEl(Y.N_MAP_SLIDER_WINDOW,r.components.navigationMap.cursors.slider)}doActivate(){super.doActivate(),this.addRxSubscription(Ot(this.chartModel.observeCandlesChanged(),this.canvasBoundsContainer.observeBoundsChanged(Y.N_MAP),this.chartModel.scale.xChanged.pipe(gd(),lt(([t,e])=>{const r=t.start<0||t.end>0,i=e.start<0||e.end>0;return r&&!i||i}))).subscribe(()=>{this.config.components.navigationMap.visible&&(this.visualCandles=this.makeVisualCandles(),this.canvasModel.fireDraw())}))}makeVisualCandles(){var t;const e=this.chartModel.getCandles();if(!e.length)return[];const s=this.chartModel.mainCandleSeries.dataIdxStart,r=this.chartModel.mainCandleSeries.dataIdxEnd,i=Math.round(Math.max(-s,0)),a=Math.max(this.chartModel.getCandlesCountWithRightOffset(),r)+i;let o=Number.NEGATIVE_INFINITY,l=Number.POSITIVE_INFINITY;const c=this.canvasBoundsContainer.getBounds(Y.N_MAP_CHART),h=c.width,g=[];let p=0,b,E;for(b=0;b<h;b++)E=gt(b*a/h)-i,E in e?(g[b]=e[E].close,p=(t=g[b])!=null?t:0,o=Math.max(o,p),l=Math.min(l,p)):g[b]=0;return o-=l,g.map((B,N)=>[N+c.x,(o+l-B)*c.height/o+c.y])}setVisible(t=!0){var e;(e=this.config.components)!=null&&e.navigationMap&&(this.config.components.navigationMap.visible=t,this.eventBus.fire(ts),this.canvasModel.fireDraw())}}class xd extends tt{constructor(t,e,s){super(),this.scale=t,this.canvasInputListeners=e,this.mainCanvasParent=s,this.touchedCandleIndexes=[0,0]}doActivate(){this.addRxSubscription(this.canvasInputListeners.observeTouchStart().subscribe(t=>this.handleTouchStartEvent(t))),this.addRxSubscription(this.canvasInputListeners.observeTouchMove().subscribe(t=>this.handleTouchMoveEvent(t)))}handleTouchStartEvent(t){t.touches.length===2&&(this.touchedCandleIndexes=this.getXPositions(t).map(e=>this.scale.fromX(e)))}handleTouchMoveEvent(t){t.touches.length===2&&this.pinchHandler(this.touchedCandleIndexes,this.getXPositions(t))}getXPositions(t){const e=this.mainCanvasParent.getBoundingClientRect(),s=[0,0],r=document.body.scrollLeft||document.documentElement.scrollLeft;for(let i=0,a=t.touches.length;i<a;i++){const o=t.touches[i];s[i]=o.pageX-e.left-r}return s}pinchHandler(t,e){const s=(e[0]*t[1]-e[1]*t[0])/(e[0]-e[1]),r=s+(t[0]-t[1])/(e[0]-e[1])*this.scale.getBounds().width;this.scale.setXScale(s,r)}}const Xi=()=>{const n=/Mac|iPod|iPhone|iPad/i.test(navigator.userAgent),e=[/Android/i,/webOS/i,/BlackBerry/i,/Windows Phone/i].some(s=>navigator.userAgent.match(s));return n?"apple":e?"mobile":"other"},Gg=(n,t)=>n==="apple"||n==="mobile"?3:t,Pd=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),Td=!!window.chrome,zi=typeof InstallTrigger!="undefined",Md=navigator.platform.indexOf("Win")>-1,Vi=n=>{let t=!1;const{wheelDeltaY:e,wheelDeltaX:s}=n;if(e||s){let r;if(Pd)r=e===n.deltaY*-3||Math.abs(e+Math.sign(e))===Math.abs(Math.round(n.deltaY)*3)||Math.abs(e-Math.sign(e))===Math.abs(Math.round(n.deltaY)*3);else if(Td){if(r=e+Math.sign(e)===n.deltaY*-3?e+Math.sign(e)===n.deltaY*-3:e===n.deltaY*-3,Md){const i=Math.round(n.deltaY)===e||Math.abs(Math.round(n.deltaY)+Math.sign(n.deltaY))===Math.abs(e)||Math.abs(Math.round(n.deltaY)-Math.sign(n.deltaY))===Math.abs(e);r=Math.abs(e)===Math.abs(n.deltaY)||i}}else zi?Math.abs(n.deltaY)>Math.abs(n.deltaX)?r=!1:r=s===n.deltaX*-3:r=e===n.deltaY*-3;r&&(t=!0)}else n.deltaMode===0&&(t=!0);return zi&&n.deltaY>=16&&Math.abs(n.deltaY)%16===0&&(t=!1),n.ctrlKey&&(t=!0),t},_d=n=>n.components.yAxis.type==="percent"?n.scale.zoomSensitivity/4:n.scale.zoomSensitivity;var us=Math.pow;class Ad extends tt{constructor(t,e,s,r,i,a,o,l){super(),this.bus=t,this.config=e,this.scale=s,this.mainCanvasParent=r,this.canvasInputListener=i,this.canvasBoundsContainer=a,this.canvasAnimation=o,this.chartPanComponent=l,this.currentPoint={x:0,y:0},this.xDraggedCandlesDelta=0,this.lastXStart=0,this.wheelTrottleTime=15,this.zoomXHandler=g=>{const p=Vi(g),b=g.deltaY<0,E=p?_d(this.config):this.config.scale.zoomSensitivity;if(this.config.scale.zoomToCursor){const N=this.canvasBoundsContainer.getBounds(Y.CANVAS).width,X=g.offsetX/N;this.scale.zoomXToPercent(X,b,!1,E)}else this.scale.zoomXToEnd(b,E);this.bus.fireDraw()},this.onXDragStart=()=>{this.canvasAnimation.forceStopAnimation(Rn),this.xDraggedCandlesDelta=0,this.lastXStart=this.scale.xStart},this.onXDragTick=g=>{const{delta:p}=g;this.currentPoint.x=p;const b=re(p,this.scale.zoomX);this.scale.moveXStart(this.lastXStart-b),this.bus.fireDraw()},this.touchHandler=new xd(this.scale,this.canvasInputListener,this.mainCanvasParent);const c=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES),h=new Ze(c,{onDragStart:this.onXDragStart,onDragTick:this.onXDragTick},this.canvasInputListener,this.chartPanComponent,{disableChartPanning:!1});this.addChildEntity(h)}doActivate(){super.doActivate();const t=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES);this.addRxSubscription(Ot(this.canvasInputListener.observeWheel(t),this.canvasInputListener.observePinch(t)).pipe(je(this.wheelTrottleTime,void 0,{trailing:!0,leading:!0})).subscribe(this.zoomXHandler)),this.addRxSubscription(this.canvasInputListener.observeScrollGesture().pipe(je(this.wheelTrottleTime,void 0,{trailing:!0,leading:!0})).subscribe(e=>{let s=-1;const r=Xi();(r==="apple"||r==="mobile")&&(s=1);let i=0,a=0;if(i+=e.deltaX*s,a+=e.deltaY*-s,i!==0&&Math.abs(i)>Math.abs(a)){const o=re(i,this.scale.zoomX);this.scale.moveXStart(this.scale.xStart-o)}else a!==0&&Math.abs(a)>Math.abs(i)&&this.zoomXHandler(e);this.bus.fireDraw()})),this.addRxSubscription(this.chartPanComponent.chartBaseModel.dataPrependSubject.asObservable().subscribe(({prependedCandlesWidth:e})=>{this.lastXStart+=e})),this.touchHandler.activate(),this.addSubscription(this.touchHandler.deactivate.bind(this.touchHandler))}registerChartYPanHandler(t,e){let s=t.yStart;const r=()=>{this.canvasAnimation.forceStopAnimation(Rn),this.currentPoint={x:0,y:0},s=t.yStart},i=o=>{const{delta:l}=o;if(this.currentPoint.y=l,t.state.auto)Dd(this.currentPoint,t.state.autoScaleDisableOnDrag)&&t.autoScale(!1);else{const c=re(t.state.inverse?-l:l,t.zoomY);t.moveYStart(s+c)}},a=new gn(e,{onDragTick:i,onDragStart:r},this.canvasInputListener,this.chartPanComponent,{disableChartPanning:!1});return this.addChildEntity(a),a}}const Dd=(n,t)=>{if(!t.enabled)return!1;const e=Math.abs(n.y),s=us(us(Math.abs(n.x),2)+us(e,2),.5),r=Math.abs(Math.acos(e/s));return e>t.yDiff&&r<t.edgeAngle};class Ed extends tt{constructor(t,e,s,r,i,a,o,l){super(),this.eventBus=t,this.mainScale=e,this.canvasBoundsContainer=s,this.config=r,this.canvasAnimation=i,this.canvasInputListener=a,this.mainCanvasParent=o,this.chartBaseModel=l,this.chartPanComponents=[],this.chartAreaPanHandler=new Ad(this.eventBus,this.config,this.mainScale,this.mainCanvasParent,this.canvasInputListener,this.canvasBoundsContainer,this.canvasAnimation,this),this.chartPanComponents.push(this.chartAreaPanHandler)}doActivate(){this.activateChartPanHandlers()}doDeactivate(){this.deactivatePanHandlers()}activateChartPanHandlers(){this.chartPanComponents.forEach(t=>t.activate())}deactivatePanHandlers(){this.chartPanComponents.forEach(t=>t.deactivate())}}const Gi=n=>t=>{const{top:e,bottom:s}=n(),r=t.high-t.low,i=r===0?1:r,a=i*e/100,o=i*s/100,l=t.low-o,c=t.high+a;return{low:l,high:c}},$i=(n,t)=>{const e=Gi(n);return{isHighLowActive:()=>!0,calculateHighLow:s=>{const r=t.calculateHighLow(s);return e(r)}}};function Id(){return Ns(1)}function Zi(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return Id()(qe(n,Je(n)))}function Od(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Je(n);return y(function(s,r){(e?Zi(n,s,e):Zi(n,s)).subscribe(r)})}function Ld(n){return lt(function(t,e){return n<=e})}class Bd{constructor(t,e,s,r,i){this.config=t,this.boundsProvider=e,this.canvasModel=s,this.canvasAnimation=r,this.animationId=i}draw(){if(this.config.components.paneResizer.visible){const t=this.config.components.paneResizer.fixedMode,e=this.boundsProvider(),s=this.canvasModel.ctx,r=this.canvasAnimation.getColorAlphaAnimation(this.animationId),i=this.config.components.paneResizer.dragZone;!t&&r&&(s.fillStyle=r.getColor(0),s.fillRect(e.x,e.y-i,e.width,e.height+2*i)),s.fillStyle=this.config.colors.paneResizer.lineColor,this.config.animation.paneResizer.bgMode?s.fillRect(e.x,e.y,e.width,e.height):s.fillRect(e.x,e.y-i,e.width,e.height+2*i)}}getCanvasIds(){return[this.canvasModel.canvasId]}}class Rd extends tt{constructor(t,e,s,r,i,a,o,l,c,h,g){super(),this.id=t,this.boundsProvider=e,this.hitTest=s,this.dragTickCb=r,this.chartPanComponent=i,this.canvasModel=a,this.drawingManager=o,this.canvasInputListener=l,this.canvasAnimation=c,this.config=h,this.canvasBoundsContainer=g,this.initialY=0,this.resizeEvent$=new V,this.onYDragStart=()=>{this.config.components.crossTool.type="none",this.initialY=this.boundsProvider().y},this.onYDragEnd=()=>{this.config.components.crossTool.type="cross-and-labels",this.initialY=this.boundsProvider().y,this.canvasBoundsContainer.graphsHeightRatioChangedSubject.next(this.canvasBoundsContainer.graphsHeightRatio)},this.onYDragTick=p=>{const{delta:b,draggedPixels:E}=p;Math.abs(this.initialY-this.boundsProvider().y+E)>=0&&(this.dragTickCb(b),this.resizeEvent$.next())},this.animationId=`${this.id}_RESIZER`}doActivate(){if(super.doActivate(),!this.config.components.paneResizer.fixedMode){const s=new gn(this.hitTest,{onDragTick:this.onYDragTick,onDragStart:this.onYDragStart,onDragEnd:this.onYDragEnd},this.canvasInputListener,this.chartPanComponent);this.addChildEntity(s),this.config.animation.paneResizer.enabled&&this.addRxSubscription(this.canvasInputListener.observeMouseEnter(this.hitTest,!0).pipe(Od(!1),Zt(),Ld(1)).subscribe(r=>{r?this.handleHoverAnimation("appearing"):this.handleHoverAnimation("fading")}))}const e=new Bd(this.config,this.boundsProvider,this.canvasModel,this.canvasAnimation,this.animationId);this.drawingManager.addDrawer(e,mi.paneResizer(this.id)),this.addSubscription(()=>this.drawingManager.removeDrawerByName(mi.paneResizer(this.id)))}doDeactivate(){super.doDeactivate(),this.resizeEvent$.complete()}handleHoverAnimation(t){let e;this.config.animation.paneResizer.bgMode?(e=this.canvasAnimation.getColorAlphaAnimation(this.animationId),(!e||!e.animationInProgress)&&this.canvasAnimation.startColorAlphaAnimation(this.animationId,[{color:this.config.colors.paneResizer.bgHoverColor,type:t}])):(e=this.canvasAnimation.getColorTransitionAnimation(this.animationId),(!e||!e.animationInProgress)&&this.canvasAnimation.startColorTransitionAnimation(this.animationId,[{startColor:this.config.colors.paneResizer.bgColor,endColor:this.config.colors.paneResizer.bgHoverColor,type:t}],this.config.animation.paneResizer.duration)),e&&e.animationInProgress&&e.revert()}}const Fd=n=>t=>{let e;if(typeof t=="number")e=t;else if(typeof t=="string")e=Number(t);else return"\u2014";const[s]=n.dataSeries;if(s!==void 0){const r=qt.getPricePrecision(e,s.pricePrecisions);return e.toFixed(r)}return`${e}`},Yd=n=>(t,e)=>{const[s]=n.dataSeries;let r=t;const i=e!=null?e:s;i!==void 0&&(r=Ir(t,i.getBaseline()));const a=r.toFixed(qt.DEFAULT_PRECISION).replace("-","\u2212")+" %";return a==="\u22120.00 %"?"0.00 %":a},Nd=n=>({percent:Yd(n),regular:Fd(n)});class Hd extends tt{constructor(t,e,s,r,i,a,o,l,c,h,g=new Set,p={regular:Nr}){super(),this.paneUUID=t,this.idx=e,this.paneComponent=s,this.chartBaseModel=r,this.canvasBoundsContainer=i,this.hitTestController=a,this.dynamicObjectsCanvasModel=o,this.scale=l,this.dragNDrop=h,this.dataSeries=g,this.formatters=p,this.getYAxisBounds=()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.idx)),this.yAxisHT=this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.idx)),this.toVisualPoints=b=>b.map(E=>new Xe(this.chartBaseModel.dataFromTimestamp(E.timestamp).centerUnit,E.close)),this.toY=b=>{var E,B;return(B=(E=this.mainDataSeries)==null?void 0:E.view.toY(b))!=null?B:1},this.valueFormatter=(b,E)=>{var B;return((B=this.formatters[this.yAxis.getAxisType()])!=null?B:this.formatters.regular)(b,E)},this.addChildEntity(l),this.setValueFormatters(Nd(this)),this.yAxis=c(this.valueFormatter.bind(this),()=>this.mainDataSeries),this.addChildEntity(this.yAxis)}doDeactivate(){super.doDeactivate(),this.dataSeries.forEach(t=>{this.paneComponent.seriesRemovedSubject.next(t),t.deactivate()})}getBounds(){return this.scale.getBounds()}getBaseline(){var t,e;return(e=(t=this.mainDataSeries)==null?void 0:t.getBaseline())!=null?e:1}createDataSeries(){const t=new Yr(this,Ft(),this.hitTestController.getNewDataSeriesHitTestId());return t.toVisualPoints=this.toVisualPoints,t}addDataSeries(t){this.dataSeries.add(t),this.dataSeries.size===1&&(this.mainDataSeries=t),this.paneComponent.updateView(),this.paneComponent.seriesAddedSubject.next(t)}removeDataSeries(t){this.dataSeries.delete(t),this.paneComponent.updateView(),this.paneComponent.seriesRemovedSubject.next(t)}get regularFormatter(){return this.formatters.regular}setValueFormatters(t){this.formatters=t}regularValueFromY(t){var e,s;return(s=(e=this.mainDataSeries)==null?void 0:e.view.priceFromY(t))!=null?s:this.scale.fromY(t)}}const Ki=n=>({isHighLowActive:()=>!0,calculateHighLow:t=>{const e=Array.from(n.dataSeries).filter(s=>s.highLowProvider.isHighLowActive()).map(s=>s.highLowProvider.calculateHighLow(t));return Kr(e)}});class kd{constructor(t,e){this.panes=t,this.canvasModel=e,this.dataSeriesIdCounter=hs.DATA_SERIES[0],this.getNewDataSeriesHitTestId=()=>this.dataSeriesIdCounter++}getIdRange(){return hs.DATA_SERIES}get allDataSeries(){return He(He(Object.values(this.panes),t=>t.yExtentComponents),t=>Array.from(t.dataSeries))}lookup(t){return this.allDataSeries.find(s=>s.htId===t)}onHover(t){this.allDataSeries.forEach(e=>e.hovered=e.htId===(t==null?void 0:t.htId)),this.canvasModel.fireDraw()}onMouseDown(t){t&&this.handleYExtentDragStart(t)}onMouseUp(){this.handleYExtentDragEnd()}handleYExtentDragStart(t){Object.values(this.panes).forEach(e=>e.yExtentComponents.forEach(s=>s.dragNDrop.deactivate())),t.extentComponent.dragNDrop.activate()}handleYExtentDragEnd(){Object.values(this.panes).forEach(t=>t.yExtentComponents.forEach(e=>e.dragNDrop.activate()))}}const oe="#FF00FF";function Ji(n,t,e,s){const r=n.yAxis.backgroundColor,i=n.chartAreaTheme.backgroundColor,a=n.chartAreaTheme.backgroundGradientTopColor,o=n.chartAreaTheme.backgroundGradientBottomColor,l=s.align==="left"?a:o,c=n.chartAreaTheme.backgroundMode==="gradient"?l:i;return fe(r==="transparent"?c:r,t,e)}const jd=(n,t)=>n==="down"?t.lastPrice.textNegative:n==="up"?t.lastPrice.textPositive:t.lastPrice.textSelected,Ud=(n,t)=>{const e=t.barTheme[`${n}Color`];return e!=null?e:oe},Wd=(n,t)=>{const e=t.lineTheme[`${n}Color`];return e!=null?e:oe},Xd=(n,t)=>{const e=t.candleTheme[`${n}Color`];return e!=null?e:oe},zd=(n,t)=>{const e=t.areaTheme.lineColor;return e!=null?e:oe},Vd=(n,t)=>{const e=t.scatterPlot.mainColor;return e!=null?e:oe},Gd=(n,t)=>{const e=t.histogram[`${n}Cap`];return e!=null?e:oe},$d=(n,t)=>{const e=n==="up"?t.baseLineTheme.upperSectionStrokeColor:t.baseLineTheme.lowerSectionStrokeColor;return e!=null?e:oe},qi=(n,t)=>{const e=t.candleTheme[`${n}WickColor`];return e!=null?e:oe},Zd=()=>(console.warn("Fallback for label default color"),oe);function Kd(n,t){if(n.filter(o=>o!==null).length<=1)return n.map(o=>o.y);const e=t-2,s=n.map((o,l)=>Jd(o,l,e)).filter(Zs).sort(qd),r=new Array(s.length),i=s.reduce((o,l)=>Math.min(o,l.labelWeight),Number.POSITIVE_INFINITY),a=s.findIndex(o=>o.labelWeight===i);for(let o=a;o>=0;o--){const l=s[o],c=s[o-1];if(l){if(c&&c.bottom>l.top){const h=Math.abs(c.labelWeight-l.labelWeight)===1?2:0;c.bottom=l.top-h,c.top=c.bottom-t}r[l.actualIndex]=(l.top+l.bottom)/2}}for(let o=a;o<s.length;o++){const l=s[o],c=s[o+1];if(!l)break;if(c&&c.top<l.bottom){const h=Math.abs(c.labelWeight-l.labelWeight)===1?2:0;c.top=l.bottom+h,c.bottom=c.top+t}r[l.actualIndex]=(l.top+l.bottom)/2}return r}const Jd=(n,t,e)=>n?{top:n.y-e/2,bottom:n.y+e/2,labelWeight:n.weight,actualIndex:t}:null,qd=(n,t)=>{const e=n.top,s=t.top;return e>s?1:e<s||e===s&&n.labelWeight<t.labelWeight?-1:0};var Qd=Object.defineProperty,tu=Object.defineProperties,eu=Object.getOwnPropertyDescriptors,Qi=Object.getOwnPropertySymbols,nu=Object.prototype.hasOwnProperty,su=Object.prototype.propertyIsEnumerable,ta=(n,t,e)=>t in n?Qd(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ea=(n,t)=>{for(var e in t||(t={}))nu.call(t,e)&&ta(n,e,t[e]);if(Qi)for(var e of Qi(t))su.call(t,e)&&ta(n,e,t[e]);return n},na=(n,t)=>tu(n,eu(t));const fs={MAIN:"MAIN"};class ru extends tt{constructor(t,e,s,r,i,a,o){super(),this.eventBus=t,this.scale=e,this.canvasBoundsContainer=s,this.state=r,this.canvasModel=i,this.paneUUID=a,this.updateYAxisWidth=o,this.orderedLabels=[],this.customLabels={},this.labelsProviders={},this.labelsPositionRecalculatedSubject=new V,this.animFrameId=`anim_cache_${Ft()}`,this.initModel()}doActivate(){super.doActivate(),this.addRxSubscription(Ot(this.canvasBoundsContainer.observeBoundsChanged(Y.PANE_UUID(this.paneUUID)),this.canvasBoundsContainer.barResizerChangedSubject,this.scale.changed).subscribe(()=>{this.updateLabels()}))}initModel(){this.initLabelsGroups(),this.recalculateLabels(),this.canvasModel.fireDraw()}initLabelsGroups(){for(const t of Object.keys(this.labelsProviders))this.createGroup(t),Object.entries(this.labelsProviders[t]).forEach(([e,s])=>{this.addToGroup(s,t,e)})}updateLabels(t=!1){this.recalculateLabels(),is(this.animFrameId,()=>{t&&this.updateYAxisWidth(),this.canvasModel.fireDraw()})}recalculateLabels(){var t,e;this.orderedLabels=[];const s=this.state.fontSize+((t=this.state.labelBoxMargin.top)!=null?t:0)+((e=this.state.labelBoxMargin.bottom)!=null?e:0);for(const r of Object.values(this.labelsProviders)){const i=Lt(Object.values(r).map(l=>l.getUnorderedLabels())),a=Lt(i.map(l=>l.labels)).map(l=>{var c;return{y:l.y,weight:(c=l.labelWeight)!=null?c:Number.POSITIVE_INFINITY}}),o=Kd(a,s);i.forEach(l=>{const c=o.splice(0,l.labels.length);this.orderedLabels.push(this.updateLabelsCoordinates(l,c))})}this.orderedLabels=this.orderedLabels.reverse()}createGroup(t){!this.labelsProviders[t]&&(this.labelsProviders[t]={})}addToGroup(t,e,s){this.labelsProviders[e]&&(Object.values(this.labelsProviders[e]).includes(t)||(this.labelsProviders[e][s]=t))}updateLabelsCoordinates(t,e){return na(ea({},t),{labels:t.labels.map((s,r)=>na(ea({},s),{lineY:s.y,y:e[r]}))})}observeLabelsPositionsRecalculated(){return this.labelsPositionRecalculatedSubject.asObservable()}registerYAxisLabelsProvider(t,e,s){var r;const i=(r=this.labelsProviders[t])!=null?r:{};i[s]=e,this.labelsProviders[t]=i,this.initModel()}unregisterYAxisLabelsProvider(t,e){var s;const r=(s=this.labelsProviders[t])!=null?s:{};delete r[e],this.labelsProviders[t]&&Object.keys(this.labelsProviders[t]).length===0&&delete this.labelsProviders[t],this.initModel()}}const sa=10;class iu extends tt{constructor(t,e,s,r,i,a,o,l){if(super(),this.bus=t,this.viewportModel=r,this.canvasBoundsContainer=a,this.autoScaleCallback=l,this.yAxisDragEndSubject=new V,this.lastYStart=0,this.lastYEnd=0,this.lastYHeight=0,this.lastYPxHeight=0,this.onYDragStart=()=>{this.lastYStart=this.viewportModel.yStart,this.lastYEnd=this.viewportModel.yEnd,this.lastYHeight=this.viewportModel.yEnd-this.viewportModel.yStart,this.lastYPxHeight=this.canvasBoundsContainer.getBounds(Y.Y_AXIS).height},this.onYDragTick=c=>{const{delta:h}=c;let g;h<0?g=1/(1+-h/this.lastYPxHeight*(sa-1)):g=1+h/this.lastYPxHeight*(sa-1);const b=(this.lastYHeight*g-this.lastYHeight)/2,E=this.lastYStart-b,B=this.lastYEnd+b;this.autoScaleCallback(!1),this.viewportModel.setYScale(E,B),this.bus.fireDraw()},this.onYDragEnd=()=>{this.yAxisDragEndSubject.next()},e.customScale){const c=()=>e.type!=="percent"&&e.visible,h=new gn(o,{onDragTick:gs(this.onYDragTick,c),onDragStart:gs(this.onYDragStart,c),onDragEnd:gs(this.onYDragEnd,c)},i,s,{disableChartPanning:!1});this.addChildEntity(h),e.customScaleDblClick&&i.observeDbClick(o).subscribe(()=>{l(!0),this.bus.fireDraw()})}}}const gs=(n,t)=>(...e)=>t()&&n(...e);class au{constructor(t,e=()=>!0){this.dataProvider=t,this.dataUpdatedPredicate=e,this.calculatedInThisFrame=!1,this.animFrameId=`anim_cache_${Ft()}`}calculateOrGet(){var t;return this.calculatedInThisFrame||(this.cache=this.dataProvider(),this.dataUpdatedPredicate()&&(this.calculatedInThisFrame=!0),vi(this.animFrameId,()=>{this.calculatedInThisFrame=!1})),(t=this.cache)!=null?t:this.dataProvider()}forceCalculateOrGet(){return this.invalidate(),this.calculateOrGet()}getLastCachedValue(){return this.cache}updateCacheValue(t){this.cache=t}invalidate(){this.cache=void 0,this.calculatedInThisFrame=!1}}const ou=0,lu=.01;class vs{constructor(t,e,s,r,i=!1,a,o,l=Fn,c=23){this.increment=t,this.startEndProvider=e,this.lengthProvider=s,this.valueFormatter=r,this.withZero=i,this.axisTypeProvider=a,this.baseLineProvider=o,this.labelFilter=l,this.singleLabelHeightPixels=c,this.gridDistanceMultipliers=[2,4,5,10],this.lastSingleLabelHeightValue=0,this.distanceBetweenLabelsChangeSubject=new V,this.newGeneratedLabelsSubject=new V,this.lastStart=0,this.lastEnd=0,this.labelsCache=new au(()=>this.labelFilter(this.doGenerateLabels()))}generateRegularLabels(t,e,s){const r=[];this.withZero&&r.push({value:0,text:"0"});let i=wt.roundToNearest(t,s);for(;i<e;){const a=wt.roundToNearest(i,s),o=this.valueFormatter(a);r.push({value:a,text:o}),i=wt.roundDecimal(i+s)}return r}generatePercentLabels(t,e,s){const r=[],i=this.baseLineProvider();let a=wt.roundToNearest(t,s);for(;a<e;){const o=wt.roundToNearest(a,s),l=Or(o,i),c=this.valueFormatter(l);r.push({value:o,text:c}),a=wt.roundDecimal(a+s)}return r}generateLogarithmLabels(t,e,s){const r=[];let i=wt.roundToNearest(t,s);for(;i<e;){const a=qn(i),o=this.valueFormatter(a);r.push({value:i,text:o}),i=wt.roundDecimal(i+s)}return r}doGenerateLabels(){var t;const e=this.lengthProvider();if(e<=0)return[];const[s,r]=this.calculateMinMax(),i=this.getAxisStep(s,r,e);this.lastSingleLabelHeightValue||(this.lastSingleLabelHeightValue=i);let a;const o=this.axisTypeProvider();if(o==="logarithmic"?a=this.generateLogarithmLabels(s,r,i):o==="percent"?a=this.generatePercentLabels(s,r,i):a=this.generateRegularLabels(s,r,i),this.lastSingleLabelHeightValue!==i&&this.labelsCache.cache){const l=(t=this.labelsCache.getLastCachedValue())!=null?t:[];this.distanceBetweenLabelsChangeSubject.next([l,a]),this.lastSingleLabelHeightValue=i}return this.newGeneratedLabelsSubject.next(a),a}calculateMinMax(){const[t,e]=this.startEndProvider(),s=this.lengthProvider(),r=vs.getLabelBounds(t,e,s);return[r[0],r[1]]}getAxisStep(t,e,s){const r=e-t,i=s/this.singleLabelHeightPixels,a=this.calculateIncrement(r),o=r/i;return this.calculateAxisStep(o,a)}observeDistanceBetweenLabelsChanged(){return this.distanceBetweenLabelsChangeSubject.asObservable()}observeLabelsChanged(){return this.newGeneratedLabelsSubject.asObservable()}calculateIncrement(t){if(this.increment)return this.increment;if(!isNaN(t)){const e=qt.autoDetectIncrementOfValueRange(t);return this.adjustIncrementOnAxisType(e)}return this.adjustIncrementOnAxisType(lu)}adjustIncrementOnAxisType(t){switch(this.axisTypeProvider()){case"percent":return t;case"logarithmic":const[e]=this.calculateMinMax(),r=qn(e)+t;return Lr(r)-e;case"regular":return t}}generateNumericLabels(){const[t,e]=this.startEndProvider();return(t!==this.lastStart||e!==this.lastEnd)&&this.labelsCache.invalidate(),this.lastStart=t,this.lastEnd=e,this.labelsCache.calculateOrGet()}static getLabelBounds(t,e,s){const r=Math.abs((e-t)*(ou/s));return[t-r,e+r]}calculateAxisStep(t,e){if(e===0)return console.error("NumericAxisLabelsGenerator failed at calculateAxisStep: increment = 0"),0;let s=e,r=e,i=0;for(;s<t&&s>0;)i>=this.gridDistanceMultipliers.length&&(i=0,r*=10),s=r*this.gridDistanceMultipliers[i++];return s}}class cu extends vs{constructor(t,e,s,r,i=()=>"regular",a=23){super(t,()=>[s.yStart,s.yEnd],()=>s.getBounds().height,r,!1,i,()=>{var o,l;return(l=(o=e())==null?void 0:o.getBaseline())!=null?l:1},void 0,a),this.dataSeriesProvider=e}getLargestLabel(){var t;return((t=this.labelsCache.getLastCachedValue())!=null?t:[]).reduce((e,s)=>s.text.length>e.length?s.text:e,"")}calculateIncrement(t){var e;const s=this.dataSeriesProvider();if(s){const r=Yt(s.dataPoints),i=(e=r==null?void 0:r.close)!=null?e:0,a=Zl(i,s.pricePrecisions);return this.adjustIncrementOnAxisType(a)}return super.calculateIncrement(t)}}function ra(n,t,e){var s=L(n)||t||e?{next:n,error:t,complete:e}:n;return s?y(function(r,i){var a;(a=s.subscribe)===null||a===void 0||a.call(s);var o=!0;r.subscribe(Xt(i,function(l){var c;(c=s.next)===null||c===void 0||c.call(s,l),i.next(l)},function(){var l;o=!1,(l=s.complete)===null||l===void 0||l.call(s),i.complete()},function(l){var c;o=!1,(c=s.error)===null||c===void 0||c.call(s,l),i.error(l)},function(){var l,c;o&&((l=s.unsubscribe)===null||l===void 0||l.call(s)),(c=s.finalize)===null||c===void 0||c.call(s)}))}):_e}class hu extends tt{constructor(t,e,s,r,i){super(),this.scale=t,this.labelsGenerator=e,this.canvasBoundsContainer=s,this.paneUUID=r,this.extentIdx=i,this.labels=[],this.prevYAxisHeight=0,this.animFrameId=`anim_cache_${Ft()}`}doActivate(){super.doActivate(),this.addRxSubscription(Ot(this.scale.yChanged,this.canvasBoundsContainer.observeBoundsChanged(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.extentIdx)).pipe(yt(t=>t.height),lt(t=>ho(t,this.prevYAxisHeight,1.5)),ra(t=>{this.labelsGenerator.labelsCache.invalidate(),this.prevYAxisHeight=t}))).subscribe(()=>this.updateLabels()))}updateLabels(){this.labels=this.labelsGenerator.generateNumericLabels(),is(this.animFrameId,()=>this.canvasBoundsContainer.updateYAxisWidths())}}class du extends tt{constructor(t,e,s,r,i,a,o,l,c){super(),this.paneUUID=t,this.state=s,this.canvasBoundsContainer=r,this.extentIdx=c,this.labelsGenerator=new cu(null,l,a,o,()=>this.state.type,s.labelHeight),this.baseLabelsModel=new hu(a,this.labelsGenerator,this.canvasBoundsContainer,t,c),this.addChildEntity(this.baseLabelsModel),this.fancyLabelsModel=new ru(e,a,r,s,i,t,()=>this.canvasBoundsContainer.updateYAxisWidths()),this.addChildEntity(this.fancyLabelsModel)}doActivate(){const t={getLargestLabel:()=>{var e;return((e=this.labelsGenerator.labelsCache.getLastCachedValue())!=null?e:[]).map(s=>s.text).concat(this.fancyLabelsModel.orderedLabels.flatMap(s=>s.labels).map(s=>s.labelText)).reduce((s,r)=>r.length>s.length?r:s,"")},getYAxisIndex:()=>this.extentIdx,getYAxisState:()=>this.state,getPaneUUID:()=>this.paneUUID};this.canvasBoundsContainer.yAxisBoundsContainer.registerYAxisWidthContributor(t),this.addSubscription(()=>this.canvasBoundsContainer.yAxisBoundsContainer.removeYAxisWidthContributor(t))}}class uu extends tt{constructor(t,e,s,r,i,a,o,l,c,h,g,p){super(),this.eventBus=t,this.config=e,this.canvasModel=s,this.scale=r,this.canvasBoundsContainer=a,this.cursors=l,this.paneUUID=g,this.extentIdx=p,this.labelsColorByChartTypeMap={},this.axisTypeSetSubject=new V,this.state=We(e.components.yAxis),this.yAxisScaleHandler=new iu(t,this.state,o,r,i,a,a.getBoundsHitTest(Y.PANE_UUID_Y_AXIS(g,p)),b=>r.autoScale(b)),this.addChildEntity(this.yAxisScaleHandler),this.model=new du(this.paneUUID,t,this.state,a,s,r,c,h,p),this.addChildEntity(this.model),this.updateCursor(),this.registerDefaultLabelColorResolvers()}registerDefaultLabelColorResolvers(){this.registerLabelColorResolver("candle",Xd),this.registerLabelColorResolver("bar",Ud),this.registerLabelColorResolver("line",Wd),this.registerLabelColorResolver("area",zd),this.registerLabelColorResolver("scatterPlot",Vd),this.registerLabelColorResolver("histogram",Gd),this.registerLabelColorResolver("baseline",$d),this.registerLabelColorResolver("trend",qi),this.registerLabelColorResolver("hollow",qi)}doActivate(){this.addRxSubscription(this.scale.beforeStartAnimationSubject.subscribe(()=>this.state.type==="percent"&&this.scale.haltAnimation()))}updateCursor(){this.state.type==="percent"?this.cursors.setCursorForCanvasEl(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.extentIdx),this.state.resizeDisabledCursor):this.cursors.setCursorForCanvasEl(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.extentIdx),this.state.cursor)}updateOrderedLabels(t=!1){this.model.fancyLabelsModel.updateLabels(t)}registerLabelColorResolver(t,e){this.labelsColorByChartTypeMap[t]=e}getLabelsColorResolver(t){var e;return(e=this.labelsColorByChartTypeMap[t])!=null?e:Zd}registerYAxisLabelsProvider(t,e=fs.MAIN,s=Ft()){return this.model.fancyLabelsModel.registerYAxisLabelsProvider(e,t,s),s}addSimpleYAxisLabel(t,e){this.model.fancyLabelsModel.customLabels[t]=e,this.canvasModel.fireDraw()}deleteSimpleYAxisLabel(t){delete this.model.fancyLabelsModel.customLabels[t],this.canvasModel.fireDraw()}getAxisType(){return this.state.type}unregisterYAxisLabelsProvider(t=fs.MAIN,e){return this.model.fancyLabelsModel.unregisterYAxisLabelsProvider(t,e),e}getBounds(){return this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(this.paneUUID,this.extentIdx))}registerYAxisWidthContributor(t){this.canvasBoundsContainer.yAxisBoundsContainer.registerYAxisWidthContributor(t)}setAxisType(t){t!==this.state.type&&(this.state.type=t,this.axisTypeSetSubject.next(t),this.scale.autoScale(!0),this.model.fancyLabelsModel.updateLabels(!0),this.updateCursor())}setYAxisAlign(t){this.state.align=t,this.canvasBoundsContainer.updateYAxisWidths(),this.eventBus.fireDraw()}setVisible(t){this.state.visible=t,this.config.components.yAxis.visible=t,t?this.enable():this.disable(),this.model.fancyLabelsModel.updateLabels(),this.model.baseLabelsModel.updateLabels()}isVisible(){return this.state.visible}setLockPriceToBarRatio(t=!1){this.scale.setLockPriceToBarRatio(t)}changeLabelMode(t,e){this.state.labels.settings[t].mode=e,this.model.fancyLabelsModel.updateLabels()}changeLabelAppearance(t,e){this.state.labels.settings[t].type=e,this.model.fancyLabelsModel.updateLabels()}togglePriceScaleInverse(t){this.scale.state.inverse=t,this.scale.inverseY=t,this.scale.scaleInversedSubject.next(t)}changeLabelsDescriptionVisibility(t){this.state.labels.descriptions=t,this.canvasModel.fireDraw()}}class fu extends tt{constructor(t,e,s,r,i,a,o,l,c,h,g,p,b,E,B,N,k,X){super(),this.chartBaseModel=t,this.mainCanvasModel=e,this.yAxisLabelsCanvasModel=s,this.dynamicObjectsCanvasModel=r,this.hitTestController=i,this.config=a,this.mainScale=o,this.drawingManager=l,this.chartPanComponent=c,this.canvasInputListener=h,this.canvasAnimation=g,this.cursorHandler=p,this.eventBus=b,this.canvasBoundsContainer=E,this.uuid=B,this.seriesAddedSubject=N,this.seriesRemovedSubject=k,this._paneOrder=0,this.yExtentComponents=[],this.getYAxisBounds=()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(this.uuid)),this.valueFormatter=(J,K)=>this.mainExtent.valueFormatter(J,K);const Z=this.createExtentComponent(X);this.mainExtent=Z,this.ht=this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID(B),{extensionY:-this.config.components.paneResizer.dragZone})}get scale(){return this.mainExtent.scale}get yAxis(){return this.mainExtent.yAxis}get dataSeries(){return He(this.yExtentComponents,t=>Array.from(t.dataSeries))}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasBoundsContainer.observeBoundsChanged(Y.PANE_UUID(this.uuid)).pipe(Zt(Cr)).subscribe(()=>{this.yExtentComponents.forEach(t=>t.scale.recalculateZoomY()),this.dynamicObjectsCanvasModel.fireDraw()}))}toY(t){var e,s;return(s=(e=this.mainExtent.mainDataSeries)==null?void 0:e.view.toY(t))!=null?s:this.scale.toY(t)}createGridComponent(t,e,s,r){return new Ni(this.mainCanvasModel,e,this.config,r,`PANE_${t}_grid_drawer`,this.drawingManager,()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(t)),()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(t)),()=>[],()=>s.generateNumericLabels())}createYPanHandler(t,e){const s=this.chartPanComponent.chartAreaPanHandler.registerChartYPanHandler(e,this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID(t)));return[()=>{this.chartPanComponent.chartAreaPanHandler.removeChildEntity(s),s.disable()},s]}addCursors(t,e){const s=Y.PANE_UUID_Y_AXIS(this.uuid,t);return this.cursorHandler.setCursorForCanvasEl(s,e.state.cursor),()=>this.cursorHandler.removeCursorForCanvasEl(s)}createExtentComponent(t){var e,s;const r=this.yExtentComponents.length,i=()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(this.uuid)),a=(e=t==null?void 0:t.scale)!=null?e:new xc(this.mainScale,this.config,i,this.canvasAnimation),[o,l]=this.createYPanHandler(this.uuid,a),c=(b,E)=>new uu(this.eventBus,this.config,this.yAxisLabelsCanvasModel,a,this.canvasInputListener,this.canvasBoundsContainer,this.chartPanComponent,this.cursorHandler,b,E,this.uuid,r),h=new Hd(this.uuid,r,this,this.chartBaseModel,this.canvasBoundsContainer,this.hitTestController,this.dynamicObjectsCanvasModel,a,c,l);h.addSubscription(o),h.addSubscription(this.addCursors(r,h.yAxis)),t!=null&&t.paneFormatters&&h.setValueFormatters(t.paneFormatters),((s=t==null?void 0:t.useDefaultHighLow)!=null?s:!0)&&a.autoScaleModel.setHighLowProvider("default",$i(()=>({top:10,bottom:10,left:0,right:0,visible:!0}),Ki(h)));const p=this.createGridComponent(this.uuid,a,h.yAxis.model.labelsGenerator,h.yAxis.state);return h.addChildEntity(p),h.activate(),this.yExtentComponents.push(h),this.canvasBoundsContainer.updateYAxisWidths(),h}removeExtentComponent(t){t.disable(),this.yExtentComponents.splice(t.idx,1),this.yExtentComponents.forEach((e,s)=>e.idx=s),this.canvasBoundsContainer.updateYAxisWidths()}updateView(){this.yExtentComponents.forEach(t=>{t.scale.doAutoScale(),t.yAxis.model.labelsGenerator.generateNumericLabels()}),this.canvasBoundsContainer.updateYAxisWidths(),this.eventBus.fireDraw()}mergeYExtents(){for(let t=1;t<this.yExtentComponents.length;t++){const e=this.yExtentComponents[t];e.dataSeries.forEach(s=>s.moveToExtent(this.mainExtent)),e.disable()}this.canvasBoundsContainer.updateYAxisWidths(),this.yExtentComponents=[this.mainExtent]}getBounds(){return this.mainExtent.getBounds()}hide(){this._paneOrder=this.canvasBoundsContainer.panesOrder.indexOf(this.uuid),this.canvasBoundsContainer.removedPaneBounds(this.uuid),this.eventBus.fireDraw()}show(){this.canvasBoundsContainer.addPaneBounds(this.uuid,this._paneOrder),this.eventBus.fireDraw()}createDataSeries(){var t;return(t=this.mainExtent)==null?void 0:t.createDataSeries()}addDataSeries(t){this.mainExtent.addDataSeries(t),this.updateView()}removeDataSeries(t){this.mainExtent.removeDataSeries(t),this.updateView()}getAxisType(){return"regular"}moveUp(){this.canvasBoundsContainer.movePaneUp(this.uuid)}moveDown(){this.canvasBoundsContainer.movePaneDown(this.uuid)}canMoveUp(){const t=ke(this.canvasBoundsContainer.panesOrder);return this.uuid!==t}canMoveDown(){const t=Yt(this.canvasBoundsContainer.panesOrder);return this.uuid!==t}get regularFormatter(){return this.mainExtent.formatters.regular}setPaneValueFormatters(t){this.mainExtent.setValueFormatters(t)}regularValueFromY(t){return this.mainExtent.regularValueFromY(t)}}class gu extends tt{constructor(t,e,s,r,i,a,o,l,c,h,g,p,b,E,B){super(),this.chartBaseModel=t,this.dynamicObjectsCanvasModel=e,this.userInputListenerComponents=s,this.eventBus=r,this.mainScale=i,this.canvasBoundsContainer=a,this.config=o,this.canvasAnimation=l,this.canvasInputListener=c,this.drawingManager=h,this.cursorHandler=g,this.crossEventProducer=p,this.chartPanComponent=b,this.mainCanvasModel=E,this.yAxisLabelsCanvasModel=B,this.panes={},this.paneRemovedSubject=new V,this.paneAddedSubject=new V,this.dataSeriesAddedSubject=new V,this.dataSeriesRemovedSubject=new V,this.hitTestController=new kd(this.panes,this.dynamicObjectsCanvasModel);const N=this.createPane(ct,{useDefaultHighLow:!1,scale:this.mainScale});N.mainExtent.scale.autoScaleModel.setHighLowProvider("series",Ki(N.mainExtent)),i.autoScaleModel.setHighLowPostProcessor("offsets",Gi(()=>this.mainScale.getOffsets()))}get panesOrder(){return this.canvasBoundsContainer.panesOrder}addBounds(t,e){return this.canvasBoundsContainer.addPaneBounds(t,e),()=>this.canvasBoundsContainer.removedPaneBounds(t)}addResizer(t){const e=this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID_RESIZER(t),{extensionY:this.config.components.paneResizer.dragZone}),s=()=>{this.canvasBoundsContainer.resizePaneVertically(t,this.canvasInputListener.getCurrentPoint().y),this.eventBus.fireDraw([this.mainCanvasModel.canvasId,"dynamicObjectsCanvas"])},r=Y.PANE_UUID_RESIZER(t),i=new Rd(r,()=>this.canvasBoundsContainer.getBounds(r),e,s,this.chartPanComponent,this.mainCanvasModel,this.drawingManager,this.canvasInputListener,this.canvasAnimation,this.config,this.canvasBoundsContainer);return this.userInputListenerComponents.push(i),i}get yExtents(){return He(Object.values(this.panes),t=>t.yExtentComponents)}getPaneIfHit(t){return Object.values(this.panes).find(s=>this.canvasBoundsContainer.getBoundsHitTest(Y.PANE_UUID(s.uuid))(t.x,t.y))}createPane(t=Ft(),e){if(this.panes[t]!==void 0)return this.panes[t];const s=new fu(this.chartBaseModel,this.mainCanvasModel,this.yAxisLabelsCanvasModel,this.dynamicObjectsCanvasModel,this.hitTestController,this.config,this.mainScale,this.drawingManager,this.chartPanComponent,this.canvasInputListener,this.canvasAnimation,this.cursorHandler,this.eventBus,this.canvasBoundsContainer,t,this.dataSeriesAddedSubject,this.dataSeriesRemovedSubject,e);return this.config.components.paneResizer.visible&&s.addChildEntity(this.addResizer(t)),s.addSubscription(this.addBounds(t,e==null?void 0:e.order)),s.addSubscription(this.addCursors(t)),s.addSubscription(this.crossEventProducer.subscribeMouseOverHT(t,s.ht)),this.panes[t]=s,s.activate(),this.recalculateState(),s.mainExtent.scale.autoScale(!0),this.paneAddedSubject.next(this.panes),s}removePane(t){const e=this.panes[t];e!==void 0&&(this.paneRemovedSubject.next(e),e.disable(),e.yExtentComponents.forEach(s=>s.disable()),delete this.panes[t],this.recalculateState())}addCursors(t,e=this.config.components.chart.cursor){const s=Y.PANE_UUID(t),r=Y.PANE_UUID_RESIZER(t);return this.cursorHandler.setCursorForCanvasEl(s,e),this.config.components.paneResizer.visible&&this.cursorHandler.setCursorForCanvasEl(r,this.config.components.paneResizer.cursor,this.config.components.paneResizer.dragZone),()=>{this.cursorHandler.removeCursorForCanvasEl(s),this.config.components.paneResizer.visible&&this.cursorHandler.removeCursorForCanvasEl(r)}}recalculateState(){Object.values(this.panes).forEach(t=>t.scale.recalculateZoomY()),this.eventBus.fireDraw([this.mainCanvasModel.canvasId,"dynamicObjectsCanvas"])}}class vu extends tt{constructor(t,e){super(),this.elements=t,this.canvasModel=e}doActivate(){super.doActivate()}createSnapshot(t){const e=this.canvasModel.canvas,s=this.canvasModel.ctx;if(s){s.clearRect(0,0,e.width,e.height);const r=e.width/window.devicePixelRatio,i=e.height/window.devicePixelRatio;return s.drawImage(this.elements.backgroundCanvas,0,0,r,i),s.drawImage(this.elements.mainCanvas,0,0,r,i),s.drawImage(this.elements.dynamicObjectsCanvas,0,0,r,i),s.drawImage(this.elements.crossToolCanvas,0,0,r,i),t&&t(s),new Promise((a,o)=>this.elements.snapshotCanvas.toBlob(l=>l?a(l):o("Blob is null")))}else return console.error("Snapshot isn't supported"),Promise.reject()}}const ia=5,mu=1e-10,pu=/\.?0+$/,aa=/(\.[1-9]*)0+$/,bu=n=>{const t=(e,s)=>{const r=Math.pow(10,ia),i=Math.round(e*r)/r;return i<1&&i>=mu?i.toFixed(ia).replace(pu,"").replace(aa,""):(i+"").replace(aa,"")+(s||"")};return Math.abs(n)>999999999?(n=Math.round(n/1e6)*1e6,t(n/1e9,"B")):Math.abs(n)>999999?(n=1e3*Math.round(n/1e3),t(n/1e6,"M")):Math.abs(n)>9999?t(n/1e3,"K"):t(n)},Cn=class extends tt{constructor(n,t,e,s,r){super(),this.chartComponent=n,this.drawingManager=t,this.config=e,this.volumesModel=s,this.paneManager=r,e.components.volumes.showSeparately&&this.activateSeparateVolumes()}doActivate(){super.doActivate(),this.addRxSubscription(this.chartComponent.chartModel.candlesUpdatedSubject.subscribe(()=>{var n,t;return!((n=this.pane)!=null&&n.scale.isViewportValid())&&((t=this.pane)==null?void 0:t.scale.doAutoScale(!0))})),this.addRxSubscription(this.volumesModel.volumeMax.subscribe(()=>{var n;return(n=this.pane)==null?void 0:n.scale.doAutoScale()}))}activateSeparateVolumes(){if(this.paneManager.panes[Cn.UUID]===void 0){const n=this.paneManager.createPane(Cn.UUID,{paneFormatters:{regular:bu},useDefaultHighLow:!1,increment:1});this.pane=n,n.mainExtent.yAxis.setAxisType("regular");const{scale:t}=n,e=$i(()=>({top:10,bottom:0,left:0,right:0,visible:!0}),this.volumesModel.highLowProvider);t.autoScaleModel.setHighLowProvider("volumes",e),t.doAutoScale(!0)}}deactiveSeparateVolumes(){this.paneManager.removePane(Cn.UUID),delete this.pane,this.drawingManager.removeDrawerByName("UNDERLAY_VOLUMES_AREA")}fromY(n){var t,e;return(e=(t=this.pane)==null?void 0:t.scale.fromY(n))!=null?e:0}};let oa=Cn;oa.UUID="volumes";const yn=.3,Cu=(n,t)=>{const e=t.barTheme[`${n}Color`];return Gt()(e).alpha(yn).toString()},yu=(n,t)=>{const e=t.volume[`${n}BarColor`];return Gt()(e).alpha(yn).toString()},wu=(n,t)=>{const e=t.lineTheme[`${n}Color`];return Gt()(e).alpha(yn).toString()},ms=(n,t)=>{const e=t.candleTheme[`${n}Color`];return Gt()(e).alpha(yn).toString()},Su=3;class xu{constructor(t,e,s,r,i,a){this.config=t,this.volumesModel=e,this.chartModel=s,this.getViewportModel=r,this.volumesColorByChartTypeMap=i,this.drawPredicate=a,this.volumeBarColors={down:"#FF00FF",up:"#FF00FF",none:"#FF00FF"}}calculateColors(t){var e;const s=(e=this.volumesColorByChartTypeMap[t])!=null?e:yu;this.volumeBarColors.down=s("down",this.config.colors),this.volumeBarColors.up=s("up",this.config.colors),this.volumeBarColors.none=s("none",this.config.colors)}draw(t){if(this.config.components.volumes.visible&&this.drawPredicate()){this.calculateColors(this.config.components.chart.type);const e=t.ctx;e.save();const s=this.getViewportModel().getBounds();xe(e,s),this.drawVolumes(t),e.restore()}}drawLastBar(){this.config.components.volumes.visible}drawVolumes(t){const e=this.volumesModel.volumeMax.getValue();if(e===0)return;const s=Lt(this.chartModel.mainCandleSeries.getSeriesInViewport(this.chartModel.scale.xStart-1,this.chartModel.scale.xEnd+1)),r=this.getViewportModel();s.forEach((i,a)=>{if(i.candle.volume){const o=r.getBounds(),l=o.height,c=s[a+1]!==void 0?st(r.toX(s[a+1].startUnit)):void 0,h=st(r.toX(i.startUnit)),g=c!==void 0?c-h:st(Tt(i.width,r.zoomX));if(this.config.components.volumes.showSeparately){const p=st(r.toY(i.candle.volume)),b=st(r.toY(0))-p;this.drawVolume(t,i,h,p,g,b)}else{const p=e/(l/Su),b=Math.max(Tt(i.candle.volume,p),2),E=st(o.y+l-b);this.drawVolume(t,i,h,E,g,b)}}})}drawVolume(t,e,s,r,i,a){const o=t.ctx,l=r,c=r+a,h=e.name;o.fillStyle=this.volumeBarColors[h],o.strokeStyle=this.volumeBarColors[h],i===0?(o.beginPath(),o.moveTo(s,l),o.lineTo(s,Mr(c)),o.stroke()):o.fillRect(s,r,i,Mr(a))}}const Pu=Bo(n=>n.candle.volume),la="volumes";class Tu extends tt{constructor(t,e){super(),this.chartComponent=t,this.scale=e,this.id=la,this.volumeMax=new $t(0),this.highLowProvider={calculateHighLow:()=>({high:this.volumeMax.getValue(),low:0}),isHighLowActive:()=>!0}}doActivate(){super.doActivate(),this.addRxSubscription(Ot(this.chartComponent.chartModel.observeCandlesChanged(),this.scale.xChanged).subscribe(()=>this.updateVolumeMax())),this.addRxSubscription(this.chartComponent.chartModel.mainCandleSeries.observeLastVisualCandleChanged().subscribe(()=>this.recalculateLastVisualVolume()))}recalculateLastVisualVolume(){}updateVolumeMax(){var t;this.volumeMax.next((t=ke(Pu(this.chartComponent.chartModel.mainCandleSeries.getSeriesInViewport().flat())))!=null?t:0)}}class Mu extends tt{constructor(t,e,s,r,i,a,o,l){super(),this.canvasModel=t,this.canvasBoundsContainer=r,this.config=a,this.dynamicObjectsComponent=l,this.volumesColorByChartTypeMap={},this.volumeVisibilityChangedSubject=new $t(!1),this.volumeIsSeparateModeChangedSubject=new $t(!1);const c=new Tu(e,s);this.volumesModel=c,this.addChildEntity(c),this.separateVolumes=new oa(e,i,a,c,o),this.volumesDrawer=new xu(a,this.volumesModel,e.chartModel,()=>{var h,g;return this.config.components.volumes.showSeparately&&(g=(h=this.separateVolumes.pane)==null?void 0:h.scale)!=null?g:s},this.volumesColorByChartTypeMap,()=>!0),a.components.volumes.visible&&this.addVolumesToDynamicObjects(),this.addChildEntity(this.separateVolumes),this.registerDefaultVolumeColorResolvers(),this.volumeVisibilityChangedSubject.next(a.components.volumes.visible),this.volumeIsSeparateModeChangedSubject.next(a.components.volumes.showSeparately)}registerDefaultVolumeColorResolvers(){this.registerVolumeColorResolver("candle",ms),this.registerVolumeColorResolver("trend",ms),this.registerVolumeColorResolver("hollow",ms),this.registerVolumeColorResolver("line",wu),this.registerVolumeColorResolver("bar",Cu)}setShowVolumesSeparatly(t){this.config.components.volumes.showSeparately!==t&&(this.config.components.volumes.showSeparately=t,t?this.separateVolumes.activateSeparateVolumes():this.separateVolumes.deactiveSeparateVolumes(),this.volumeIsSeparateModeChangedSubject.next(t))}doDeactivate(){super.doDeactivate(),this.setVisible(!1)}registerVolumeColorResolver(t,e){this.volumesColorByChartTypeMap[t]=e}setVisible(t=!0){this.config.components.volumes.visible=t,this.volumeVisibilityChangedSubject.next(t),t?this.addVolumesToDynamicObjects():this.dynamicObjectsComponent.model.removeObject(this.volumesModel.id),this.config.components.volumes.showSeparately&&(t?(this.separateVolumes.activateSeparateVolumes(),this.volumeIsSeparateModeChangedSubject.next(!0)):(this.separateVolumes.deactiveSeparateVolumes(),this.volumeIsSeparateModeChangedSubject.next(!1))),this.canvasBoundsContainer.recalculatePanesHeightRatios(),this.canvasModel.fireDraw()}addVolumesToDynamicObjects(){this.dynamicObjectsComponent.model.getObjectPosition(this.volumesModel.id)===-1&&this.dynamicObjectsComponent.model.addObject({id:this.volumesModel.id,paneId:this.config.components.volumes.showSeparately?la:ct,drawer:this.volumesDrawer,model:this.volumesModel})}}class _u{constructor(t,e,s,r,i){this.config=t,this.canvasBoundsContainer=e,this.canvasModel=s,this.waterMarkConfigProvider=r,this.watermarkDataProvider=i,this.getConfig=(a=0,o,l,c,h,g)=>{const p=this.canvasModel.ctx,b=this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ct)),{position:E,offsetY:B,offsetX:N}=this.config.components.waterMark;let k;switch(g?k=g:(p.font=wn(this.config,l),k=p.measureText(o).width,b.width-10<k&&(p.font=Au(this.config,this.canvasBoundsContainer,l,k),k=p.measureText(o).width)),E){case"left-top":return{x:N+b.x,y:B+a+b.y,font:p.font,text:o,color:c};case"left-bottom":return{x:N+b.x,y:b.height-h-B+a+b.y,font:p.font,text:o,color:c};case"center":return{x:b.width/2-k/2+b.x,y:(b.height-h)/2+a+b.y,font:p.font,text:o,color:c}}}}draw(){var t,e,s,r,i,a,o;if((t=this.config.components.waterMark)!=null&&t.visible&&this.config.colors){const{firstRow:l,secondRow:c,thirdRow:h}=this.watermarkDataProvider(),g=this.waterMarkConfigProvider(),p=this.config.colors.waterMarkTheme,b=this.canvasModel.ctx;let E=0,B=0,N=0,k=0,X=0;if(b.save(),g.firstRowFontSize&&l){b.font=wn(this.config,g.firstRowFontSize);const U=b.measureText(l);E=U.actualBoundingBoxAscent+U.actualBoundingBoxDescent}if(g.secondRowFontSize&&c){b.font=wn(this.config,g.secondRowFontSize);const U=b.measureText(c);B=U.actualBoundingBoxAscent+U.actualBoundingBoxDescent,N=(e=g.firstRowBottomPadding)!=null?e:0}if(g.thirdRowFontSize&&h){b.font=wn(this.config,g.thirdRowFontSize);const U=b.measureText(h);k=U.actualBoundingBoxAscent+U.actualBoundingBoxDescent,X=(s=g.secondRowBottomPadding)!=null?s:0}const Z=(r=g.thirdRowBottomPadding)!=null?r:0,J=(i=g.logoHeight)!=null?i:0,K=E+B+N+k+X+Z+J;if(l&&this.drawWaterMark(this.getConfig(E,l,g.firstRowFontSize,p.firstRowColor,K)),c&&this.drawWaterMark(this.getConfig(E+N+B,c,g.secondRowFontSize,p.secondRowColor,K)),h&&this.drawWaterMark(this.getConfig(E+N+B+X+k,h,g.thirdRowFontSize,p.thirdRowColor,K)),this.logoImage){const U=this.getConfig(E+N+B+X+k+Z,"",g.thirdRowFontSize,p.thirdRowColor,K,g.logoWidth);this.canvasModel.ctx.drawImage(this.logoImage,U.x,U.y,(a=g.logoWidth)!=null?a:0,(o=g.logoHeight)!=null?o:0)}b.restore()}}getCanvasIds(){return[this.canvasModel.canvasId]}setLogoImage(t){this.logoImage=t}drawWaterMark(t){const e=t.text;if(!e||!e.length)return;const s=this.canvasModel.ctx;s.font=t.font,s.fillStyle=t.color;const r=t.x,i=t.y;s.fillText(e,r,i)}reset(){}}const Au=(n,t,e,s)=>{const i=((o,l)=>t.getBounds(Y.CHART).width/l*o)(e,s);let a;return n.components&&n.components.waterMark&&(a=n.components.waterMark.fontFamily),i+"px "+a},wn=(n,t)=>{let e;return n.components&&n.components.waterMark&&(e=n.components.waterMark.fontFamily),t+"px "+e};var Du=Object.defineProperty,ca=Object.getOwnPropertySymbols,Eu=Object.prototype.hasOwnProperty,Iu=Object.prototype.propertyIsEnumerable,ha=(n,t,e)=>t in n?Du(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,da=(n,t)=>{for(var e in t||(t={}))Eu.call(t,e)&&ha(n,e,t[e]);if(ca)for(var e of ca(t))Iu.call(t,e)&&ha(n,e,t[e]);return n};class Ou extends tt{constructor(t,e,s,r,i,a,o){super(),this.paneManager=t,this.chartModel=e,this.eventBus=s,this.config=r,this.canvasModel=a,this.waterMarkConfig=this.config.components.waterMark,this.waterMarkData=this.getWaterMarkData(),this.waterMarkDrawer=new _u(this.config,i,a,()=>this.waterMarkConfig,()=>this.waterMarkData),this.addRxSubscription(Kt(i.observeBoundsChanged(Y.PANE_UUID(ct)),this.paneManager.paneAddedSubject).subscribe(l=>{this.waterMarkConfig=this.recalculateTextSize(l.width,l.height)})),this.addRxSubscription(this.chartModel.candlesSetSubject.subscribe(()=>{this.waterMarkData=this.getWaterMarkData()})),o.addDrawerAfter(this.waterMarkDrawer,"WATERMARK","DYNAMIC_OBJECTS")}setWaterMarkVisible(t){this.config.components&&this.config.components.waterMark&&(this.config.components.waterMark.visible=t,this.canvasModel.fireDraw())}setWaterMarkData(t){this.waterMarkData=t,this.canvasModel.fireDraw()}getWaterMarkData(){return this.waterMarkData||{}}setWaterMarkConfig(t){if(!(!t||!this.config.components)){if(!this.config.components.waterMark)this.config.components.waterMark=JSON.parse(JSON.stringify(t));else{const e={};Kt(e,t),Kt(e,this.config.components.waterMark),this.config.components.waterMark=e}this.canvasModel.fireDraw()}}setLogoImage(t){this.waterMarkDrawer.setLogoImage(t)}recalculateTextSize(t,e){const i=g=>.15*Math.log(g)/Math.log(1.5)+1,a=i(t/1920),o=i(e/1080),l=Math.min(a,o),c=l>=0?l:0,h={firstRowFontSize:Math.round(this.config.components.waterMark.firstRowFontSize*c),secondRowFontSize:Math.round(this.config.components.waterMark.secondRowFontSize*c),thirdRowFontSize:Math.round(this.config.components.waterMark.thirdRowFontSize*c)};return da(da({},this.config.components.waterMark),h)}}const ua={x:4,y:4};function Lu(n,t,e,s,r){var i,a;const o=(i=r.alignType)!=null?i:"middle",{fontSize:l,fontFamily:c,padding:h}=s.components.xAxis,g=(a=h.top)!=null?a:0,p=e.getBounds(Y.X_AXIS);t.save(),t.font=`bold ${l}px ${c}`;const E=t.measureText(r.text).width+ua.x*2;let B=0;const N=r.x;switch(o){case"start":B=N-E;break;case"end":B=N;break;case"middle":default:B=N-E/2;break}cn(n,t,B,p.y,E,p.height-1),o!=="middle"&&(t.strokeStyle=r.color,t.beginPath(),t.moveTo(N,p.y),t.lineTo(N,p.y+p.height),t.stroke()),t.fillStyle=r.color;const k=B+ua.x,X=p.y+g+l;t.fillText(r.text,k,X),t.restore()}class Bu{constructor(t,e,s,r,i){this.backgroundCanvasModel=t,this.config=e,this.canvasModel=s,this.canvasBoundsContainer=r,this.xAxisLabelsModel=i}draw(){const t=this.canvasModel.ctx;this.drawHighlightedBackgroundBetweenLabels(),this.xAxisLabelsModel.labels.forEach(e=>{Lu(this.backgroundCanvasModel.ctx,t,this.canvasBoundsContainer,this.config,e)})}drawHighlightedBackgroundBetweenLabels(){const t=this.canvasModel.ctx,e={},s=this.xAxisLabelsModel.labels.reduce((r,i)=>{if(i.subGroupId!==void 0){let a=r[i.subGroupId];a||(a=[],r[i.subGroupId]=a),a.push(i)}return r},e);Object.keys(s).forEach(r=>{const i=s[r];if(i.length===2){const a=this.canvasBoundsContainer.getBounds(Y.X_AXIS);t.fillStyle=Gt().rgb(i[0].color).alpha(.1).toString(),ai(t,{x:i[0].x,y:a.y},{x:i[1].x,y:a.y+a.height})}})}getCanvasIds(){return[this.canvasModel.canvasId]}}const $g="week-weekday",Ru=["second","minute","hour","day","month","year"],Fu=["lessThanSecond"],Yu=n=>Ru.some(t=>t===n),Nu=n=>n==="week-weekday",Hu=n=>Fu.some(t=>t===n),fa=n=>{const t={"!":!1,$:!1};return n.includes("!")&&(t["!"]=!0),n.includes("$")&&(t.$=!0),t},ps=n=>parseInt(n,10),ga=n=>{const[t,...e]=n.split("_");if(Yu(t)){const[s]=e,r=fa(s),i=ps(s);return{key:t,value:i,exact:r["!"]}}else if(Nu(t)){const[s,r]=e,i=fa(s),a=ps(s),o=ps(r);return{key:t,week:i.$?"$":a,weekday:o}}else return Hu(t)?{key:t}:(console.warn(`${n} is not fit, check the documentation to see available formats https://webdev.prosp.devexperts.com:8095/docs/chart/x-axis`),null)};class Sn{constructor(t,e,s,r,i,a=()=>!0){this.config=t,this.canvasModel=e,this.viewportModel=s,this.canvasBoundsContainer=r,this.labelsProvider=i,this.drawPredicate=a}draw(){var t;if(this.drawPredicate()){const e=this.canvasModel.ctx,s=this.config.colors.xAxis,r=this.config.components.xAxis.fontFamily,i=Sn.getFontFromConfig(this.config),a=this.config.components.xAxis.fontSize,o=(t=this.config.components.xAxis.padding.top)!=null?t:0;e.save(),e.font=i,e.fillStyle=s.backgroundColor;const l=this.canvasBoundsContainer.getBounds(Y.X_AXIS);e.fillRect(l.x,l.y,l.width,l.height);const c=this.config.colors.xAxis.labelTextColor,h=this.labelsProvider();this.drawLabels(e,h,l,c,a,r,o),e.restore()}}drawLabels(t,e,s,r,i,a,o){const l=`${i}px ${a}`;t.fillStyle=r;for(const c of e){const h=this.viewportModel.toX(c.value)-Nt(c.text,t,l)/2;if(h<0||h>s.width)continue;const g=s.y+i-1+o,p=c.text;t.font=l,t.fillText(p,h,g)}}static getFontFromConfig(t){return`${t.components.xAxis.fontStyle} ${t.components.xAxis.fontSize}px ${t.components.xAxis.fontFamily}`}getCanvasIds(){return[this.canvasModel.canvasId]}}const bs={lessThanSecond:0,second:100,minute:200,hour:300,day:400,"week-weekday":500,month:600,year:1e4},va=n=>{switch(n.key){case"second":case"minute":case"hour":case"day":case"month":case"year":return bs[n.key]+n.value;case"lessThanSecond":return bs[n.key];case"week-weekday":return bs[n.key]+(n.week==="$"?9:n.week)+n.weekday*10}},ma=n=>{const t={};return n.forEach(e=>{const s=t[e.weight];s===void 0?t[e.weight]=[e]:s.push(e)}),t},ku=(n,t)=>{const e=Object.keys(n).map(r=>parseInt(r,10)).sort((r,i)=>i-r);let s=[];for(const r of e){const i=n[r];if(!i)continue;const a=[...s];s=[];const o=a.length,l=i.length;let c=0,h=1/0,g=-1/0;for(let p=0;p<l;p++){const b=i[p],E=b.idx;for(;c<o;){const B=a[c],N=B.idx;if(E>N)c++,s.push(B),g=N,h=1/0;else{h=N;break}}h-E>=t&&E-g>=t&&(s.push(b),g=E)}for(;c<o;)s.push(a[c]),c++}return s},ju=(n,t,e,s,r,i)=>{const a=Sn.getFontFromConfig(t),o=Nt(e.text,n,a),l=Nt(s.text,n,a),c=r.toX(e.value)+o/2;return r.toX(s.value)-l/2-c<i};function Cs(n){"@babel/helpers - typeof";return Cs=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Cs(n)}function Bt(n,t){if(t.length<n)throw new TypeError(n+" argument"+(n>1?"s":"")+" required, but only "+t.length+" present")}function Rt(n){Bt(1,arguments);var t=Object.prototype.toString.call(n);return n instanceof Date||Cs(n)==="object"&&t==="[object Date]"?new Date(n.getTime()):typeof n=="number"||t==="[object Number]"?new Date(n):((typeof n=="string"||t==="[object String]")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function Uu(n){return Bt(1,arguments),Rt(n).getDay()===1}function Wu(n){return Bt(1,arguments),Rt(n).getDay()===2}function Xu(n){return Bt(1,arguments),Rt(n).getDay()===3}function zu(n){return Bt(1,arguments),Rt(n).getDay()===4}function Vu(n){return Bt(1,arguments),Rt(n).getDay()===5}function Gu(n){return Bt(1,arguments),Rt(n).getDay()===6}function $u(n){return Bt(1,arguments),Rt(n).getDay()===0}function Zu(n,t){var e;Bt(1,arguments);var s=n||{},r=Rt(s.start),i=Rt(s.end),a=i.getTime();if(!(r.getTime()<=a))throw new RangeError("Invalid interval");var o=[],l=r;l.setHours(0,0,0,0);var c=Number((e=t==null?void 0:t.step)!==null&&e!==void 0?e:1);if(c<1||isNaN(c))throw new RangeError("`options.step` must be a number greater than 1");for(;l.getTime()<=a;)o.push(Rt(l)),l.setDate(l.getDate()+c),l.setHours(0,0,0,0);return o}function Ku(n){Bt(1,arguments);var t=Rt(n);return t.setDate(1),t.setHours(0,0,0,0),t}function Ju(n){Bt(1,arguments);var t=Rt(n),e=t.getMonth();return t.setFullYear(t.getFullYear(),e+1,0),t.setHours(23,59,59,999),t}function pa(n){Bt(1,arguments);var t=Rt(n);return t.setHours(0,0,0,0),t}function ba(n,t){Bt(2,arguments);var e=pa(n),s=pa(t);return e.getTime()===s.getTime()}const qu=n=>{switch(n.key){case"lessThanSecond":return nf(n);case"month":return sf(n);case"second":case"minute":case"hour":case"day":case"year":return rf(n);case"week-weekday":return af(n);default:return()=>!1}},me=(n,t)=>{switch(t){case"lessThanSecond":return n.getMilliseconds();case"month":return n.getMonth();case"second":return n.getSeconds();case"minute":return n.getMinutes();case"hour":return n.getHours();case"day":return n.getDate();case"year":return n.getFullYear();case"week-weekday":return n.getDate()}},ys=n=>(t,e)=>{const s=me(t,n),r=me(e,n);return s!==r},Qu=n=>(t,e)=>{const s=me(t,n),r=me(e,n);return s>=r},tf={1:Uu,2:Wu,3:Xu,4:zu,5:Vu,6:Gu,7:$u},ef=(n,t,e)=>{var s;const r=Zu({start:Ku(n),end:Ju(n)}),i=(s=tf[e])!=null?s:()=>!1;if(t==="$"){for(const a of r.reverse())if(i(a))return ba(n,a)}else{let a=1;for(const o of r)if(i(o)){if(a===t)return ba(n,o);a++}}return!1},Ca=(n,t)=>t===1?n===1:n/t===1,ya=(n,t)=>t===1?!0:n%t===0,nf=n=>(t,e)=>Qu(n.key)(t,e),sf=n=>(t,e)=>{const s=ys(n.key)(t,e),r=n.exact?Ca(me(t,n.key)+1,n.value):ya(me(t,n.key)+1,n.value);return s&&r},rf=n=>(t,e)=>{const s=ys(n.key)(t,e),r=n.exact?Ca(me(t,n.key),n.value):ya(me(t,n.key),n.value);return s&&r},af=n=>(t,e)=>{const s=ys(n.key)(t,e),r=ef(t,n.week,n.weekday);return s&&r},of=n=>{switch(n.key){case"second":case"minute":return lf(n.value);case"hour":return cf(n.value);case"day":return hf(n.value);case"month":return ff(n.value);case"year":return gf(n.value);case"week-weekday":const t=uf(n.week),e=df(n.weekday);return t&&e;case"lessThanSecond":return!0;default:return!1}},lf=n=>n>0&&n<=60,cf=n=>n>0&&n<=24,hf=n=>n>0&&n<=31,df=n=>wa(n)?n>=1&&n<=7:!1,uf=n=>n==="$"?!0:wa(n)?n>=1&&n<=6:!1,ff=n=>n>0&&n<=12,gf=n=>n>0,wa=n=>!isNaN(n)&&isFinite(n),vf=(n,t,e,s)=>{var r,i;const a=s(n.getTime()),o=s(t.getTime());for(const[l,c]of e)if(c(a,o))return l;return(i=(r=e[e.length-1])==null?void 0:r[0])!=null?i:0};function ws(n,t,e){const s=new Array(n.length);let r=new Date(0);for(let i=0;i<n.length;i++){const a=n[i],o=new Date(a.candle.timestamp),l={weight:vf(o,r,t,e)};s[i]=l,r=o}return s}const Sa=n=>{const t={},e={};return Kn(n).forEach(([s,r])=>{const i=ga(s),a=i===null?!1:of(i);if(i&&a){const o=va(i);t[o]=r,e[o]=qu(i)}}),{weightToTimeFormatsDict:t,weightToTimeFormatMatcherDict:e}};class xa{constructor(t,e,s,r,i,a){this.eventBus=t,this.config=e,this.chartModel=s,this.scale=r,this.timeZoneModel=i,this.canvasModel=a,this.labelsGroupedByWeight={},this.levelsCache={},this.weightToTimeFormatMatcherArray=[],this.weightToTimeFormatsDict={},this.extendedLabelsFilterConfig={minute_1:c=>c>=2},this.formatsByWeightMap=e.components.xAxis.formatsForLabelsConfig;const{weightToTimeFormatsDict:o,weightToTimeFormatMatcherDict:l}=Sa(this.formatsByWeightMap);this.weightToTimeFormatMatcherArray=Object.entries(l).map(([c,h])=>[parseInt(c,10),h]).sort(([c],[h])=>h-c),this.weightToTimeFormatsDict=o}get labels(){return this.getLabelsFromChartType()}getLabelsFromChartType(){var t,e;const s=(e=(t=this.weightedCache)==null?void 0:t.labels)!=null?e:[];return this.config.components.chart.type==="equivolume"?this.postProcessing(s):s}getAllCandlesWithFake(){const t=this.chartModel.mainCandleSeries.visualPoints;if(t.length===0)return[];const s=Array.from({length:750}).map((r,i)=>Hr(this.chartModel.mainCandleSeries.dataPoints,this.chartModel.mainCandleSeries.visualPoints,this.chartModel.mainCandleSeries.meanCandleWidth,t.length+i,this.chartModel.getPeriod()));return[...t,...s]}mapWeightedPointsToLabels(t,e){const s=new Array(t.length);return t.forEach((r,i)=>{var a;const o=e[i],l=this.weightToTimeFormatsDict[r.weight],c=this.timeZoneModel.getDateTimeFormatter(l)(o.candle.timestamp);s[i]={weight:r.weight,idx:(a=o.candle.idx)!=null?a:0,value:o.centerUnit,time:o.candle.timestamp,text:c}}),s}setFormatsForLabelsConfig(t){const{weightToTimeFormatsDict:e,weightToTimeFormatMatcherDict:s}=Sa(t);this.formatsByWeightMap=t,this.weightToTimeFormatMatcherArray=Object.entries(s).map(([r,i])=>[parseInt(r,10),i]).sort(([r],[i])=>i-r),this.weightToTimeFormatsDict=e,this.generateWeightedLabels()}generateWeightedLabels(){const t=this.getAllCandlesWithFake(),e=ws(t,this.weightToTimeFormatMatcherArray,this.timeZoneModel.tzOffset(this.config.timezone)),s=this.mapWeightedPointsToLabels(e,t);this.labelsGroupedByWeight=ma(s),this.weightedCache=void 0,this.levelsCache={},this.recalculateCachedLabels()}getLabelsFromCache(t){if(this.levelsCache[t])return this.levelsCache[t]}updateLastLabel(t){const e=this.chartModel.mainCandleSeries.visualPoints[this.chartModel.mainCandleSeries.visualPoints.length-2];if(e){const r=ws([e,t],this.weightToTimeFormatMatcherArray,this.timeZoneModel.tzOffset(this.config.timezone)),i=this.mapWeightedPointsToLabels([r[1]],[t]),[a]=i;this.labelsGroupedByWeight=Object.entries(this.labelsGroupedByWeight).reduce((o,[l,c])=>{const h=c.findIndex(p=>p.idx===a.idx);let g=c;if(h!==-1&&(g=c.filter(p=>p.idx!==a.idx)),parseInt(l,10)===a.weight){const p=g.findIndex(b=>b.idx>a.idx);p!==-1?g=[...g.slice(0,p),a,...g.slice(p)]:g.push(a)}return o[l]=g,o},{}),this.weightedCache=void 0,this.levelsCache={},this.recalculateCachedLabels()}}updateHistoryLabels(t){const e=t.concat(this.chartModel.mainCandleSeries.visualPoints[t.length]),s=ws(e,this.weightToTimeFormatMatcherArray,this.timeZoneModel.tzOffset(this.config.timezone)),r=this.mapWeightedPointsToLabels(s,e),i=ma(r),a=We(i);for(const c in this.labelsGroupedByWeight)a[c]===void 0&&(a[c]=this.labelsGroupedByWeight[c]);const o=this.chartModel.mainCandleSeries.visualPoints[t.length-1],l=Object.entries(a).sort(([c],[h])=>parseInt(h,10)-parseInt(c,10)).reduce((c,[h,g])=>{const p=parseInt(h,10),b=this.labelsGroupedByWeight[p];if(p===this.weightToTimeFormatMatcherArray[0][0]&&b.shift(),b){const E=b.map(B=>(B.idx=B.idx+t.length,B.value=o.startUnit+o.width+B.value,B));i[p]?c[h]=g.concat(E):c[h]=E}else c[h]=g;return c},{});this.labelsGroupedByWeight=l,this.weightedCache=void 0,this.levelsCache={},this.recalculateCachedLabels()}generateLabels(){this.generateWeightedLabels()}recalculateLabels(){this.recalculateCachedLabels()}recalculateCachedLabels(){if(Object.getOwnPropertyNames(this.labelsGroupedByWeight).length===0)return;const t=this.config.components.xAxis.fontSize,e=Object.values(this.formatsByWeightMap).reduce((a,o)=>Math.max(o.length,a),1),s=t*e,r=Tt(this.chartModel.mainCandleSeries.meanCandleWidth,this.scale.zoomX),i=Math.round(s/r);if(!(i<0&&!isFinite(r))&&(this.weightedCache===void 0||i!==this.weightedCache.coverUpLevel)){const a=this.getLabelsFromCache(i);if(a){this.weightedCache={labels:a,coverUpLevel:i};return}const o=ku(this.filterLabelsByExtendedRules(this.labelsGroupedByWeight,i),i);this.levelsCache[i]=o,this.weightedCache={labels:o,coverUpLevel:i},this.eventBus.fireDraw()}}postProcessing(t){var e,s;const r=[];let i=0,a=1;for(;a<=t.length-1;){const o=t[i],l=t[a];ju(this.canvasModel.ctx,this.config,o,l,this.scale,30)?((e=l.weight)!=null?e:0)>((s=o.weight)!=null?s:0)&&(i=a):(r.push(o),i=a,a===t.length-1&&r.push(l)),a++}return r}filterLabelsByExtendedRules(t,e){const s=Kn(this.extendedLabelsFilterConfig).reduce((r,i)=>{if(!i)return r;const[a,o]=i;if(o){const l=ga(a);if(l){const c=va(l);r[c]=o}}return r},{});return Kn(t).reduce((r,[i,a])=>(s[i]&&s[i](e)||(r[i]=a),r),{})}}class mf extends tt{constructor(t,e){super(),this.eventBus=t,this.labelProviders=e,this.labels=[],this.initModel(),this.addSubscription(this.eventBus.on(dn,()=>this.recalculateLabels()))}initModel(){this.recalculateLabels()}recalculateLabels(){this.labels=[];for(const t of this.labelProviders)this.labels.push(...t.getUnorderedLabels())}}class pf extends tt{constructor(t,e,s,r,i){super(),this.scale=t,this.canvasInputListener=e,this.canvasBoundsContainer=s,this.chartPanComponent=r,this.chartModel=i,this.lastXStart=0,this.lastXWidth=0,this.lastXPxWidth=0,this.onXDragStart=()=>{this.lastXStart=this.scale.xStart,this.lastXWidth=this.scale.xEnd-this.scale.xStart;const o=this.canvasBoundsContainer.getBounds(Y.X_AXIS);this.lastXPxWidth=o.width-this.canvasInputListener.currentPoint.x},this.onXDragTick=o=>{const{delta:l}=o,c=this.lastXPxWidth-l;if(c<0)return;const h=this.lastXPxWidth/c,g=this.lastXWidth*h,p=this.lastXStart+(this.lastXWidth-g);this.scale.setXScale(p,this.scale.xEnd)};const a=new Ze(this.canvasBoundsContainer.getBoundsHitTest(Y.X_AXIS),{onDragStart:this.onXDragStart,onDragTick:this.onXDragTick},this.canvasInputListener,this.chartPanComponent,{disableChartPanning:!1});this.addChildEntity(a)}doActivate(){super.doActivate(),this.addRxSubscription(this.canvasInputListener.observeDbClick(this.canvasBoundsContainer.getBoundsHitTest(Y.X_AXIS)).subscribe(()=>this.chartModel.doBasicScale())),this.addRxSubscription(this.chartModel.candlesPrependSubject.subscribe(({prependedCandlesWidth:t})=>this.lastXStart+=t))}}class bf extends tt{constructor(t,e,s,r,i,a,o,l,c,h,g,p,b){super(),this.eventBus=t,this.config=e,this.canvasModel=s,this.chartComponent=r,this.scale=i,this.chartResizeHandler=l,this.timeZoneModel=h;const E=new xa(t,e,r.chartModel,i,h,this.canvasModel);this.xAxisLabelsGenerator=E,this.xAxisLabelsModel=new mf(t,[]);const B=new ls;c.addDrawer(B,"X_AXIS"),this.xAxisDrawer=new Sn(e,s,i,a,()=>this.xAxisLabelsGenerator.labels,()=>e.components.xAxis.visible),B.addDrawer(this.xAxisDrawer),this.xAxisLabelsDrawer=new Bu(b,e,s,a,this.xAxisLabelsModel),B.addDrawer(this.xAxisLabelsDrawer),this.xAxisScaleHandler=new pf(i,o,a,g,this.chartComponent.chartModel),this.addChildEntity(this.xAxisScaleHandler),p.setCursorForCanvasEl(Y.X_AXIS,e.components.xAxis.cursor)}doActivate(){super.doActivate(),this.addRxSubscription(Ot(this.chartComponent.chartModel.candlesSetSubject,this.timeZoneModel.observeTimeZoneChanged()).subscribe(()=>{this.xAxisLabelsGenerator.generateLabels()})),this.addRxSubscription(this.chartComponent.chartModel.candlesPrependSubject.pipe(lt(({prependedCandles:t})=>t.length!==0),yt(({prependedCandles:t})=>this.chartComponent.chartModel.mainCandleSeries.visualPoints.slice(0,t.length))).subscribe(t=>{zo.includes(this.config.components.chart.type)&&this.xAxisLabelsGenerator.updateHistoryLabels&&this.xAxisLabelsGenerator.updateHistoryLabels(t)})),this.addRxSubscription(Ot(this.scale.xChanged,this.chartResizeHandler.canvasResized).pipe(je(50,void 0,{trailing:!0,leading:!0})).subscribe(()=>{this.xAxisLabelsGenerator.recalculateLabels()})),this.addRxSubscription(this.chartComponent.chartModel.candlesUpdatedSubject.pipe(yt(()=>Yt(this.chartComponent.chartModel.mainCandleSeries.visualPoints)),Zt((t,e)=>{var s,r;return((s=t==null?void 0:t.candle)==null?void 0:s.timestamp)===((r=e==null?void 0:e.candle)==null?void 0:r.timestamp)}),lt(Zs)).subscribe(t=>{this.xAxisLabelsGenerator.updateLastLabel&&this.xAxisLabelsGenerator.updateLastLabel(t)}))}getDrawer(){return this.xAxisDrawer}registerXAxisLabelsProvider(t){this.xAxisLabelsModel.labelProviders.push(t)}setVisible(t){var e;(e=this.config.components)!=null&&e.xAxis&&(this.config.components.xAxis.visible=t,this.eventBus.fireDraw())}setFormatsForLabelsConfig(t){this.xAxisLabelsGenerator instanceof xa?this.xAxisLabelsGenerator.setFormatsForLabelsConfig(t):console.error("Format config for x-axis is not available")}isVisible(){var t,e;return(e=(t=this.config.components)==null?void 0:t.xAxis.visible)!=null?e:!1}}var Cf=Object.defineProperty,Pa=Object.getOwnPropertySymbols,yf=Object.prototype.hasOwnProperty,wf=Object.prototype.propertyIsEnumerable,Ta=(n,t,e)=>t in n?Cf(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,xn=(n,t)=>{for(var e in t||(t={}))yf.call(t,e)&&Ta(n,e,t[e]);if(Pa)for(var e of Pa(t))wf.call(t,e)&&Ta(n,e,t[e]);return n};class Sf{constructor(t,e,s,r,i){this.chartModel=t,this.chartConfig=e,this.yAxisConfig=s,this.lastCandleLabelsByChartType=r,this.resolveLabelColorFn=i}getUnorderedLabels(){const t=[];if(!(this.yAxisConfig.labels.settings.lastPrice.mode!=="none"&&this.yAxisConfig.visible))return t;const s=this.getYAxisVisualLabel(this.chartModel.mainCandleSeries),r=s&&xn(xn({},s),this.getLabelDrawConfig(this.chartModel.mainCandleSeries,!0));if(r){const i={labels:[r]},a=this.lastCandleLabelsByChartType[this.chartConfig.components.chart.type];a==null||a(i,this.chartModel.mainCandleSeries),t.push(i)}return this.chartModel.candleSeries.forEach((i,a)=>{if(a===0)return;const o=this.getYAxisVisualLabel(i),l=o&&xn(xn({},o),this.getLabelDrawConfig(i,!1));if(l){const c={labels:[l]},h=this.lastCandleLabelsByChartType[i.config.type];h==null||h(c,this.chartModel.mainCandleSeries),t.push(c)}}),t}getYAxisVisualLabel(t){const e=Yt(t.dataPoints);if(e){const s=t.view.toY(e.close);if(isFinite(s)){const r=this.yAxisConfig.labels.settings.lastPrice.mode,i=this.yAxisConfig.labels.settings.lastPrice.type;return{y:s,labelWeight:0,labelText:this.chartModel.pane.valueFormatter(e.close,t),mode:r,labelType:i,description:t.instrument.symbol}}}return null}getLabelDrawConfig(t,e){const s=this.yAxisConfig.labels.settings.lastPrice.type,r=t.colors.labels,{rectLabelTextColor:i="white",rectLabelInvertedTextColor:a="black"}=this.chartConfig.colors.yAxis,o=this.resolveLabelColorFn(t.config.type);if(!r)return{bgColor:"#FFFFFF",textColor:fe("#FFFFFF","#000000",a),rounded:!0};const l=o(t.lastPriceMovement,t.colors);if(e){const c=jd(t.lastPriceMovement,r);return{bgColor:l,textColor:s==="plain"?Ji(this.chartConfig.colors,c,a,this.yAxisConfig):fe(l,c,a),rounded:!0}}return{bgColor:l,textColor:s==="plain"?Ji(this.chartConfig.colors,i,a,this.yAxisConfig):fe(l,i,a),rounded:!0}}}class xf{constructor(t,e,s,r,i){this.yAxisLabelsCanvasModel=t,this.backgroundCanvasModel=e,this.canvasBoundsContainer=s,this.fullConfig=r,this.paneManager=i}draw(){const t=this.yAxisLabelsCanvasModel.ctx,e=this.backgroundCanvasModel.ctx;this.paneManager.yExtents.forEach(s=>{if(s.yAxis.state.visible){const r=s.getYAxisBounds(),i=this.canvasBoundsContainer.getBounds(Y.ALL_PANES),a=s.yAxis.model.fancyLabelsModel.orderedLabels;this.drawHighlightedBackgroundBetweenLabels(a),a.forEach(o=>{var l;const c=(l=o.bounds)!=null?l:r;o.labels.forEach(h=>Ei(t,e,c,i,h,this.canvasBoundsContainer,s.yAxis.state,this.fullConfig.colors.yAxis))}),Object.values(s.yAxis.model.fancyLabelsModel.customLabels).forEach(o=>Ei(t,e,r,i,o,this.canvasBoundsContainer,s.yAxis.state,this.fullConfig.colors.yAxis))}})}drawHighlightedBackgroundBetweenLabels(t){const e=this.yAxisLabelsCanvasModel.ctx,s={};t.forEach(r=>{r.labels.forEach(i=>{var a,o,l;if(i.subGroupId){const c=(a=s[i.subGroupId])!=null?a:[];if(s[i.subGroupId]=c,c.push(i),c.length===2){const h=(o=r.bounds)!=null?o:this.canvasBoundsContainer.getBounds(Y.PANE_UUID_Y_AXIS(ct));e.save(),e.fillStyle=(l=c[0].highlightColor)!=null?l:c[0].bgColor;const[g,p]=c[0].y>c[1].y?[c[1].y,c[0].y]:[c[0].y,c[1].y];ai(e,{x:h.x,y:br(g,h)},{x:h.x+h.width-6,y:br(p,h)}),e.restore()}}})})}getCanvasIds(){return[this.yAxisLabelsCanvasModel.canvasId]}}class Pf{constructor(t,e,s){this.fullConfig=t,this.canvasModel=e,this.paneManager=s}draw(){this.paneManager.yExtents.forEach(t=>{const e=t.yAxis;if(e.state.visible){const s=e.model.baseLabelsModel.labels,r=e.getBounds(),i=this.canvasModel.ctx;i.fillStyle=this.getBackgroundColor(),i.fillRect(r.x,r.y,r.width,r.height);const a=ye(e.state),o=ne(a,i),l=this.getLabelTextColor();i.save(),xe(i,r),this.drawLabels(i,s,r,o,a,l,e),i.restore()}})}drawLabels(t,e,s,r,i,a,o){t.fillStyle=a,t.font=i;const l=t.measureText("00.0"),c=l.actualBoundingBoxAscent+l.actualBoundingBoxDescent,h=s.y+c,g=s.y+s.height-c;e.forEach(p=>{const b=o.scale.toY(p.value);b>h&&b<g&&Tf(t,s,p.text,b,r,i,o.state.labelBoxMargin.end,o.state.align)})}getCanvasIds(){return[this.canvasModel.canvasId]}getBackgroundColor(){return this.fullConfig.colors.yAxis.backgroundColor}getLabelTextColor(){return this.fullConfig.colors.yAxis.labelTextColor}}const Tf=(n,t,e,s,r,i,a,o)=>{const l=o==="right"?t.x+t.width-Nt(e,n,i)-a:t.x+a;n.fillText(e,l,s+r/2-1)};class Mf{constructor(){this.UNKNOWN_ARR=[],this.handlers={},this.muted=!1,this.unsub=(t,e)=>{const s=this.handlers[t];s!==void 0&&Oo.call(s,e)},this.add=(t,e,s)=>(e in this.handlers?t.call(this.handlers[e],s):this.handlers[e]=[s],this.unsub.bind(this,e,s)),this.on=(t,e)=>this.add(this.UNKNOWN_ARR.push,t,e),this.observe=t=>{const e=new V,s=e.next.bind(e),r=e.unsubscribe.bind(e);return this.on(t,s),e.unsubscribe=()=>{this.unsub(t,s),r()},e.asObservable()},this.onPrior=(t,e)=>this.add(this.UNKNOWN_ARR.unshift,t,e),this.off=this.unsub,this.fire=(t,...e)=>{var s;if(!this.muted){const r=(s=this.handlers[t])!=null?s:[];let i;for(i=0,r.length;i<r.length;i++)r[i].apply(null,e)}},this.fireAsync=(t,e)=>{if(!this.muted)return window.setTimeout(this.fire.bind(this,t,e),0)},this.setMuted=t=>{this.muted=t},this.clear=()=>{this.handlers={}}}fireDraw(t){this.fire(dn,t)}}class _f extends tt{constructor(t,e,s,r){super(),s.observeTouchStart().pipe(yt(i=>r.components.chart.highlightActiveCandle?i:void 0),Zt()).subscribe(i=>{i&&this.setCandleAsActive(i,t,e)})}setCandleAsActive(t,e,s){if(t.touches.length===1){const r=t.touches.item(0);if(r!==null){const i=this.getTouchXPosition(r,e),a=s.candleFromX(i);a&&s.mainCandleSeries.setActiveCandle(a)}}}getTouchXPosition(t,e){const s=e.getBoundingClientRect(),r=document.body.scrollLeft||document.documentElement.scrollLeft;return t.pageX-s.left-r}}class Af{constructor(t,e,s,r,i){this.frameElement=t,this.resizerElement=e,this.bus=s,this.canvasModels=r,this.config=i,this.previousBCR=void 0,this.animFrameId=`resize_${Ft()}`,this.canvasResized=new V,this.elementResizeDetector=new ResizeObserver(()=>this.handleResize())}subscribeResize(){this.elementResizeDetector.observe(this.resizerElement)}handleResize(){is(this.animFrameId,()=>this.fireUpdates())}fireUpdates(){const t=this.resizerElement.getBoundingClientRect(),e={x:t.x,y:t.y,width:t.width,height:t.height};this.config||(this.frameElement.style.height=this.resizerElement.clientHeight+"px"),(this.previousBCR===void 0||this.isBCRDimensionsDiffer(this.previousBCR,e))&&(this.previousBCR=e,this.canvasModels.forEach(s=>this.previousBCR&&s.updateDPR(this.previousBCR)),this.canvasResized.next(e),this.bus.fire(ts,e),this.bus.fire(dn))}isBCRDimensionsDiffer(t,e){return t.height!==e.height||t.width!==e.width}unsubscribeAnimationUpdate(){if(this.resizerElement)try{this.elementResizeDetector.unobserve(this.resizerElement)}catch(t){console.warn("ChartResizeHandler.ts, unsubscribeAnimationUpdate failed")}}wasResized(){return this.previousBCR!==void 0}}var Df=Array.isArray,Ef=Object.getPrototypeOf,If=Object.prototype,Of=Object.keys;function Lf(n){if(n.length===1){var t=n[0];if(Df(t))return{args:t,keys:null};if(Bf(t)){var e=Of(t);return{args:e.map(function(s){return t[s]}),keys:e}}}return{args:n,keys:null}}function Bf(n){return n&&typeof n=="object"&&Ef(n)===If}var Rf=Array.isArray;function Ff(n,t){return Rf(t)?n.apply(void 0,x([],C(t))):n(t)}function Yf(n){return yt(function(t){return Ff(n,t)})}function Nf(n,t){return n.reduce(function(e,s,r){return e[s]=t[r],e},{})}function Hf(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Je(n),s=qa(n),r=Lf(n),i=r.args,a=r.keys;if(i.length===0)return qe([],e);var o=new Pt(kf(i,e,a?function(l){return Nf(a,l)}:_e));return s?o.pipe(Yf(s)):o}function kf(n,t,e){return e===void 0&&(e=_e),function(s){Ma(t,function(){for(var r=n.length,i=new Array(r),a=r,o=r,l=function(h){Ma(t,function(){var g=qe(n[h],t),p=!1;g.subscribe(Xt(s,function(b){i[h]=b,p||(p=!0,o--),o||s.next(e(i.slice()))},function(){--a||s.complete()}))},s)},c=0;c<r;c++)l(c)},s)}}function Ma(n,t,e){n?ee(e,n,t):t()}class jf extends tt{constructor(t,e){super(),this.canvasInputListener=t,this.canvasBoundsContainer=e,this.panesSubscriptions={},this.crossSubject=new $t(null)}doActivate(){super.doActivate()}fireCrossClose(){this.crossSubject.next(null)}unsubscribeMouseOver(t){var e;(e=this.panesSubscriptions[t])==null||e.unsubscribe()}subscribeMouseOver(t,e,s){const r=e.map(a=>this.canvasBoundsContainer.getBoundsHitTest(a,s)),i=(a,o)=>r.some(l=>l(a,o));return this.subscribeMouseOverHT(t,i)}subscribeMouseOverHT(t,e){const s=this.canvasInputListener.observeMouseMoveDocument(),r=this.canvasInputListener.observeMouseEnter(e);let i=!1;const a=Hf([s,r]).pipe(lt(([,o])=>!i||i&&o)).subscribe(([o,l])=>{if(l){const c=[o.x,o.y,t];this.crossSubject.next(c),i=!1}else this.crossSubject.next(null),i=!0});return this.panesSubscriptions[t]=a,()=>a.unsubscribe()}}class Uf{constructor(t,e,s,r){this.visualCandle=t,this.price=e,this.priceFormatter=s,this.toY=r}get high(){return this.visualCandle.high}get low(){return this.visualCandle.low}get open(){return this.visualCandle.open}get close(){return this.visualCandle.close}get volume(){return this.visualCandle.candle.volume}get openY(){return this.toY(this.open)}get closeY(){return this.toY(this.close)}get highY(){return this.toY(this.high)}get lowY(){return this.toY(this.low)}get openFormatted(){return this.priceFormatter(this.open)}get closeFormatted(){return this.priceFormatter(this.close)}get highFormatted(){return this.priceFormatter(this.high)}get lowFormatted(){return this.priceFormatter(this.low)}get closestOHLCY(){return this.toY([this.close,this.open,this.high,this.low].sort((t,e)=>Math.abs(t-this.price)-Math.abs(e-this.price))[0])}}class Wf{constructor(t){this.chartModel=t}getData(t){const{x:e,y:s}=t,i=this.chartModel.candleFromX(e).idx||0,a=this.chartModel.getVisualCandle(i),o=this.chartModel.priceFromY(s);return a&&new Uf(a,o,this.chartModel.pane.regularFormatter,this.chartModel.toY)}}class Xf{constructor(t){this.chartModel=t}getData(t){const{x:e}=t,r=this.chartModel.candleFromX(e).idx||0;return this.chartModel.candleSeries.map(a=>{const o=a.dataPoints[r],l=this.chartModel.pane.regularFormatter(o==null?void 0:o.close);return{instrument:a.instrument.symbol,price:l,id:a.id,htId:a.htId}})}}var zf=Object.defineProperty,Vf=Object.defineProperties,Gf=Object.getOwnPropertyDescriptors,_a=Object.getOwnPropertySymbols,$f=Object.prototype.hasOwnProperty,Zf=Object.prototype.propertyIsEnumerable,Aa=(n,t,e)=>t in n?zf(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,Ke=(n,t)=>{for(var e in t||(t={}))$f.call(t,e)&&Aa(n,e,t[e]);if(_a)for(var e of _a(t))Zf.call(t,e)&&Aa(n,e,t[e]);return n},Ss=(n,t)=>Vf(n,Gf(t));class Kf extends tt{constructor(t,e,s,r,i,a,o,l,c){super(),this.crossEventProducer=t,this.scale=e,this.config=s,this.chartModel=r,this.canvasInputListener=i,this.canvasBoundsContainer=a,this.paneManager=o,this.timeZoneModel=l,this.formatterFactory=c,this.hoverSubject=new $t(null),this.longTouchActivatedSubject=new $t(!1),this.xFormatter=()=>"";const h=new Wf(this.chartModel),g=new Xf(this.chartModel);this.hoverProducerParts={candleHover:h,compareSeriesHover:g}}get hover(){return this.hoverSubject.getValue()}doActivate(){super.doActivate(),this.addRxSubscription(this.chartModel.candlesSetSubject.subscribe(()=>{const e=this.chartModel.getLastVisualCandle();e&&this.createAndFireHoverFromCandle(e)})),this.addRxSubscription(this.chartModel.candlesUpdatedSubject.subscribe(()=>{const e=this.chartModel.getLastVisualCandle();this.hover!==null&&e!==void 0&&e.candle.timestamp===this.hover.timestamp&&this.updateHover(e)})),this.addRxSubscription(this.crossEventProducer.crossSubject.subscribe(e=>{e===null?this.hoverSubject.next(null):this.createAndFireHover(e)})),this.addRxSubscription(this.scale.xChanged.subscribe(()=>this.fireLastCross())),this.addRxSubscription(this.canvasInputListener.observeTouchStart().subscribe(e=>{const s=e.touches[0].clientX-this.canvasBoundsContainer.canvasOnPageLocation.x,r=e.touches[0].clientY-this.canvasBoundsContainer.canvasOnPageLocation.y;this.chartModel.candleFromX(s,!0)&&this.createAndFireHover([s,r,""])}));const t=this.canvasBoundsContainer.getBoundsHitTest(Y.ALL_PANES);this.addRxSubscription(this.canvasInputListener.observeLongTouchStart(t).subscribe(e=>{this.paneManager.chartPanComponent.deactivatePanHandlers(),this.longTouchActivatedSubject.next(!0);const s=e.touches[0].clientX-this.canvasBoundsContainer.canvasOnPageLocation.x,r=e.touches[0].clientY-this.canvasBoundsContainer.canvasOnPageLocation.y;this.createAndFireHover([s,r,""]),this.crossEventProducer.crossSubject.next([s,r,""])})),this.addRxSubscription(this.canvasInputListener.observeTouchEndDocument().subscribe(()=>{this.paneManager.chartPanComponent.activateChartPanHandlers(),this.longTouchActivatedSubject.getValue()&&(this.longTouchActivatedSubject.next(!1),this.crossEventProducer.fireCrossClose())})),this.addRxSubscription(Ot(this.chartModel.candlesSetSubject,this.timeZoneModel.observeTimeZoneChanged()).subscribe(()=>this.recalculateCrossToolXFormatter()))}recalculateCrossToolXFormatter(){const t=this.config.components.crossTool.xAxisLabelFormat;this.xFormatter=Oi(t,this.chartModel.getPeriod(),this.formatterFactory)}createHoverFromCandle(t){const e=t.xCenter(this.scale),s=this.scale.toY(t.close);return this.createHover(e,s,ct)}createHover(t,e,s){if(this.chartModel.getCandles().length===0)return;const i=this.chartModel.candleFromX(t,!0).timestamp,a={x:t,y:e,timestamp:i,timeFormatted:this.xFormatter(i),paneId:s},o=Object.entries(this.hoverProducerParts).reduce((l,c)=>Ss(Ke({},l),{[c[0]]:c[1].getData(a)}),{});return Ke(Ke({},a),o)}createAndFireHoverFromCandle(t){const e=this.createHoverFromCandle(t);this.fireHover(e)}updateHover(t){const e=this.createHoverFromCandle(t);if(this.hover&&e){const s=Ss(Ke({},e),{x:this.hover.x,y:this.hover.y});this.fireHover(s)}}createAndFireHover([t,e,s]){const r=this.createHover(t,e,s);this.fireHover(r)}fireHover(t){var e;if(t){if(kn()&&this.config.components.crossTool.type!=="none"){const s=(e=t.candleHover)==null?void 0:e.visualCandle.candle;s&&this.chartModel.mainCandleSeries.setActiveCandle(s)}this.hoverSubject.next(t)}else this.crossEventProducer.fireCrossClose()}fireLastCross(){const t=this.crossEventProducer.crossSubject.getValue();t&&this.createAndFireHover(t)}registerHoverProducerPart(t,e){this.hoverProducerParts=Ss(Ke({},this.hoverProducerParts),{[t]:e})}unregisterHoverProducerPart(t){delete this.hoverProducerParts[t]}}const Da={left:0,middle:1,right:2};function Mt(n,t,e,s){return n.addEventListener(e,t,s),function(){n.removeEventListener(e,t,s)}}function Le(n){return t=>{t.button===Da.left&&n(t)}}var Jf=Object.defineProperty,Ea=Object.getOwnPropertySymbols,qf=Object.prototype.hasOwnProperty,Qf=Object.prototype.propertyIsEnumerable,Ia=(n,t,e)=>t in n?Jf(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,tg=(n,t)=>{for(var e in t||(t={}))qf.call(t,e)&&Ia(n,e,t[e]);if(Ea)for(var e of Ea(t))Qf.call(t,e)&&Ia(n,e,t[e]);return n};const Pe=class extends tt{constructor(n,t){super(),this.eventBus=n,this.element=t,this.xDragStartSubject=new V,this.xDragSubject=new V,this.xDragTickSubject=new V,this.xDragEndSubject=new V,this.yDragStartSubject=new V,this.yDragSubject=new V,this.yDragTickSubject=new V,this.yDragEndSubject=new V,this.mouseMoveSubject=new V,this.mouseMoveDocumentSubject=new V,this.clickSubject=new V,this.clickDocumentSubject=new V,this.dbClickSubject=new V,this.dbTapSubject=new V,this.mouseDownSubject=new V,this.mouseUpSubject=new V,this.mouseUpDocumentSubject=new V,this.wheelSubject=new V,this.touchStartSubject=new V,this.touchMoveSubject=new V,this.touchEndSubject=new V,this.touchCancelSubject=new V,this.longTouchStartSubject=new V,this.longTouchEndSubject=new V,this.contextMenuSubject=new V,this.pinchSubject=new V,this.scrollGestureSubject=new V,this.mouseLeavesCanvasSubject=new V,this.dragStartPoint={x:0,y:0},this.prevDragPoint={x:0,y:0},this.currentPoint={x:0,y:0},this.currentPointDocument={x:0,y:0},this.dragging=!1,this.canvasBounds={x:0,y:0,pageX:0,pageY:0,width:0,height:0},this.documentDragListeners=[],this.dragProcessListener=()=>{this.xDragSubject.next(this.currentPoint.x-this.dragStartPoint.x),this.yDragSubject.next(this.currentPoint.y-this.dragStartPoint.y),this.xDragTickSubject.next(this.currentPoint.x-this.prevDragPoint.x),this.yDragTickSubject.next(this.currentPoint.y-this.prevDragPoint.y),this.prevDragPoint.x=this.currentPoint.x,this.prevDragPoint.y=this.currentPoint.y},this.dragStartListener=e=>{this.isDraggable(e)&&(this.updateCurrentPoints(e),this.dragging=!0,this.dragStartEvent=e,this.documentDragListeners.forEach(s=>s()),this.dragStartPoint=Pe.copyPoint(this.currentPoint),this.xDragStartSubject.next(this.dragStartPoint),this.yDragStartSubject.next(this.dragStartPoint),this.prevDragPoint=tg({},this.dragStartPoint),Pe.DRAG_EVENTS.forEach(s=>{document.addEventListener(s,this.dragProcessListener,!0);const r=document.removeEventListener.bind(document,s,this.dragProcessListener,!0);this.documentDragListeners.push(r),this.addSubscription(r)}),this.dragProcessListener())},this.dragListener=()=>this.mouseMoveDocumentSubject.next(this.currentPoint),this.updateElementOffsetListener=()=>this.mouseMoveSubject.next(this.currentPoint),this.dragEndListener=()=>{this.dragging=!1,this.documentDragListeners.forEach(e=>e()),this.xDragEndSubject.next(),this.yDragEndSubject.next()},this.updateCurrentPoints=e=>{this.updateCurrentDocumentPoint(e),this.updateCurrentMousePoint(e)}}isDraggable(n){return n instanceof MouseEvent?n.button===Da.left:n instanceof TouchEvent}startDragging(n){this.updateCurrentPoints(n),this.dragStartListener(n)}movePointer(n){this.updateCurrentPoints(n),this.dragListener(),this.updateElementOffsetListener(),this.dragging&&this.dragProcessListener()}stopDragging(){this.dragEndListener()}fixTextSelection(){const n=t=>(t.preventDefault(),!1);this.element.addEventListener("selectstart",n,!1),this.addSubscription(this.element.removeEventListener.bind(this.element,"selectstart",n,!1))}doActivate(){this.fixTextSelection(),this.documentDragListeners=[],Pe.DRAG_START_EVENTS.forEach(e=>{this.element.addEventListener(e,this.dragStartListener),this.addSubscription(()=>this.element.removeEventListener(e,this.dragStartListener))}),this.trackMousePosition(),Pe.DRAG_EVENTS.forEach(e=>{document.addEventListener(e,this.dragListener),this.addSubscription(document.removeEventListener.bind(document,e,this.dragListener)),this.element.addEventListener(e,this.updateElementOffsetListener),this.addSubscription(this.element.removeEventListener.bind(this.element,e,this.updateElementOffsetListener))}),Pe.DRAG_END_EVENTS.forEach(e=>{document.addEventListener(e,this.dragEndListener),this.addSubscription(document.removeEventListener.bind(document,e,this.dragEndListener))}),this.addSubscription(Mt(this.element,Le(()=>this.clickSubject.next(this.currentPoint)),"click")),this.addSubscription(Mt(document,Le(e=>this.clickDocumentSubject.next(e)),"click"));const n=Xi();if(n==="apple"||n==="mobile"){let e=null;const s=i=>{i.preventDefault(),e?(this.dbTapSubject.next(this.currentPoint),clearTimeout(e),e=null):e=window.setTimeout(()=>{e=null},250)};this.addSubscription(Mt(this.element,s,"touchend"));const r=(i,a=700,o=3)=>{i.preventDefault();const l={x:i.touches[0].clientX,y:i.touches[0].clientY};let c={x:0,y:0},h=!1,g=null;g=setTimeout(()=>{h=!0,this.longTouchStartSubject.next(i)},a);const p=E=>{E.preventDefault(),c={x:E.touches[0].clientX,y:E.touches[0].clientY},(Math.sqrt(Math.pow(c.x-l.x,2)+Math.pow(c.y-l.y,2))>o||E.touches.length>1)&&g&&clearTimeout(g)},b=E=>{E.preventDefault(),g&&clearTimeout(g),h&&(h=!1,this.longTouchEndSubject.next(E)),this.element.removeEventListener("touchend",b),this.element.removeEventListener("touchmove",p)};this.element.addEventListener("touchmove",p),this.element.addEventListener("touchend",b)};this.addSubscription(Mt(this.element,i=>r(i),"touchstart"))}this.addSubscription(Mt(this.element,Le(()=>this.dbClickSubject.next(this.currentPoint)),"dblclick")),this.addSubscription(Mt(this.element,e=>this.touchStartSubject.next(e),"touchstart")),this.addSubscription(Mt(this.element,e=>this.touchMoveSubject.next(e),"touchmove",!0)),this.addSubscription(Mt(this.element,e=>this.touchEndSubject.next(e),"touchend")),this.addSubscription(Mt(this.element,e=>this.touchCancelSubject.next(e),"touchcancel")),this.addSubscription(Mt(this.element,e=>{e.ctrlKey?this.pinchSubject.next(e):Vi(e)?this.scrollGestureSubject.next(e):this.wheelSubject.next(e),e.preventDefault()},"wheel")),this.addSubscription(Mt(this.element,e=>this.contextMenuSubject.next(e),"contextmenu")),this.addSubscription(Mt(this.element,Le(()=>this.mouseDownSubject.next(this.currentPoint)),"mousedown")),this.addSubscription(Mt(this.element,Le(()=>this.mouseUpSubject.next(this.currentPoint)),"mouseup")),this.addSubscription(Mt(document,Le(()=>this.mouseUpDocumentSubject.next(this.currentPoint)),"mouseup")),this.addRxSubscription(this.eventBus.observe(ts).subscribe(()=>{const e=this.element.getBoundingClientRect();this.canvasBounds.x=e.left,this.canvasBounds.y=e.top,this.canvasBounds.width=e.width,this.canvasBounds.height=e.height}));const t=()=>{this.mouseLeavesCanvasSubject.next(!0)};this.element.addEventListener("mouseleave",t,!1),this.addSubscription(this.element.removeEventListener.bind(this.element,"mouseleave",t,!1))}getCurrentMousePoint(){return this.currentPoint}trackMousePosition(){Pe.DRAG_EVENTS.forEach(n=>{document.addEventListener(n,this.updateCurrentPoints,!0),this.addSubscription(()=>document.removeEventListener(n,this.updateCurrentPoints,!0))})}updateCurrentDocumentPoint(n){"pageX"in n?this.currentPointDocument.x=n.pageX:n.touches!==void 0&&(this.currentPointDocument.x=n.touches[0].pageX),"pageY"in n?this.currentPointDocument.y=n.pageY:n.touches!==void 0&&(this.currentPointDocument.y=n.touches[0].pageY)}updateCurrentMousePoint(n){const t=this.element.getBoundingClientRect();"clientX"in n?this.currentPoint.x=n.clientX-t.left:n.touches!==void 0&&(this.currentPoint.x=n.touches[0].clientX-t.left),"clientY"in n?this.currentPoint.y=n.clientY-t.top:n.touches!==void 0&&(this.currentPoint.y=n.touches[0].clientY-t.top)}static copyPoint(n){return{x:n.x,y:n.y}}observeMouseMove(n=()=>!0){return this.mouseMoveSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeMouseMoveNoDrag(){return this.mouseMoveSubject.asObservable().pipe(lt(()=>!this.dragging))}observeMouseMoveDocument(n=()=>!0){return this.mouseMoveDocumentSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeMouseMoveDocumentAnyElement(n=()=>!0){return this.mouseMoveDocumentSubject.asObservable().pipe(lt(()=>n(this.currentPointDocument.x,this.currentPointDocument.y)),yt(()=>this.currentPointDocument))}observeClickOnDocument(){return this.clickDocumentSubject.asObservable()}observeXDragStart(n=()=>!0){return this.xDragStartSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeXDrag(n=()=>!0){return this.xDragSubject.pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeXDragEnd(n=()=>!0){return this.xDragEndSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeXDragTick(){return this.xDragTickSubject.asObservable()}observeYDragStart(n=()=>!0){return this.yDragStartSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeYDrag(n=()=>!0){return this.yDragSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeYDragEnd(n=()=>!0){return this.yDragEndSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeYDragTick(){return this.yDragTickSubject.asObservable()}observeMouseEnter(n=()=>!0,t=!1){const e=this.mouseMoveSubject.asObservable().pipe(lt(()=>!(t&&this.dragging)),yt(()=>n(this.currentPoint.x,this.currentPoint.y))),s=this.observeMouseLeavesCanvas().pipe(yt(()=>!1));return Ot(e,s).pipe(Zt())}observeMouseLeavesCanvas(){return this.mouseLeavesCanvasSubject.asObservable()}observeClick(n=()=>!0){return this.clickSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeDbClick(n=()=>!0){return this.dbClickSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeDbTap(n=()=>!0){return this.dbTapSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeWheel(n=()=>!0){return this.wheelSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observePinch(n=()=>!0){return this.pinchSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeScrollGesture(){return this.scrollGestureSubject.asObservable()}observeTouchStart(n=()=>!0){return this.touchStartSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeTouchMove(n=()=>!0){return this.touchMoveSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeTouchEndDocument(){return this.touchEndSubject.asObservable()}observeTouchCancelDocument(){return this.touchCancelSubject.asObservable()}observeMouseDown(n=()=>!0){return this.mouseDownSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeMouseUp(n=()=>!0){return this.mouseUpSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeMouseUpDocument(n=()=>!0){return this.mouseUpDocumentSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeContextMenu(n=()=>!0){return this.contextMenuSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)),ra(t=>t.preventDefault()))}observeLongTouchStart(n=()=>!0){return this.longTouchStartSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}observeLongTouchEnd(n=()=>!0){return this.longTouchEndSubject.asObservable().pipe(lt(()=>n(this.currentPoint.x,this.currentPoint.y)))}getCurrentPoint(){return this.currentPoint}};let Pn=Pe;Pn.DRAG_START_EVENTS=["mousedown","touchstart"],Pn.DRAG_EVENTS=["mousemove","touchmove"],Pn.DRAG_END_EVENTS=["mouseup","touchend","touchcancel"];var eg=_t(722),ng=function(n){O(t,n);function t(e,s,r){e===void 0&&(e=1/0),s===void 0&&(s=1/0),r===void 0&&(r=Gn);var i=n.call(this)||this;return i._bufferSize=e,i._windowTime=s,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=s===1/0,i._bufferSize=Math.max(1,e),i._windowTime=Math.max(1,s),i}return t.prototype.next=function(e){var s=this,r=s.isStopped,i=s._buffer,a=s._infiniteTimeWindow,o=s._timestampProvider,l=s._windowTime;r||(i.push(e),!a&&i.push(o.now()+l)),this._trimBuffer(),n.prototype.next.call(this,e)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var s=this._innerSubscribe(e),r=this,i=r._infiniteTimeWindow,a=r._buffer,o=a.slice(),l=0;l<o.length&&!e.closed;l+=i?1:2)e.next(o[l]);return this._checkFinalizedStatuses(e),s},t.prototype._trimBuffer=function(){var e=this,s=e._bufferSize,r=e._timestampProvider,i=e._buffer,a=e._infiniteTimeWindow,o=(a?1:2)*s;if(s<1/0&&o<i.length&&i.splice(0,i.length-o),!a){for(var l=r.now(),c=0,h=1;h<i.length&&i[h]<=l;h+=2)c=h;c&&i.splice(0,c+1)}},t}(V);const sg=Symbol("MEMOIZE_CLEAR_FUNCTION");function rg(n){const t={},e=function(){const s=Array.prototype.slice.call(arguments),r=Oa(s);return typeof t[r]=="undefined"&&(t[r]=n.apply(this,s)),t[r]}.bind(this);return e[sg]=function(){const s=Array.prototype.slice.call(arguments),r=Oa(s);delete t[r]},e}const Zg=n=>t=>{let e=!1,s,r=[];const i=a=>{s=t(...a),e=!0,r=a};return(...a)=>{const o=a.length;if(e&&o===0)return s;if(!e||r.length!==o)return i(a),s;for(let l=0;l<o;l++)if(!n.equals(r[l],a[l]))return i(a),s;return s}};function Oa(n){if(!n.every(e=>typeof e=="number"||typeof e=="string"||typeof e=="boolean"))throw Error("Arguments to memoized function can only be strings or numbers");return JSON.stringify(n)}const La=rg(eg.getTimezoneOffset),ig=(n,t)=>new Date(t).getTimezoneOffset()*60*1e3+La(n,t);class ag{constructor(t){this.config=t,this.timeZoneChangedSubject=new ng,this.currentTzOffset=e=>this.getOffset(this.config.timezone,e),this.formatterCache={},this.getOffset=(e,s)=>ig(e,s),this.dateTimeFormatterFactory=this.initFormatterFactory(this.config.dateFormatter)}setTimeZone(t){this.config.timezone=t,this.formatterCache={},this.timeZoneChangedSubject.next(t)}observeTimeZoneChanged(){return this.timeZoneChangedSubject.asObservable()}initFormatterFactory(t){let e;if(t&&typeof t=="function")e=t;else if(t&&t.createFormatterFunction&&typeof t.createFormatterFunction=="function"){const s=t.createFormatterFunction;e=r=>s(r).bind(t)}else e=Nh(this.config,this.tzOffset);return e}getFormatterFactory(){return this.dateTimeFormatterFactory}getDateTimeFormatter(t){return this.formatterCache[t]===void 0&&(this.formatterCache[t]=this.dateTimeFormatterFactory(t)),this.formatterCache[t]}tzOffset(t){const e=r=>-new Date(r).getTimezoneOffset()*og;let s;return t?s=r=>La(t,r):s=e,r=>new Date(+r+s(r)-e(r))}}const og=60*1e3;class xs{constructor(t,e={}){this.components=[],this.chartComponents=[],this.userInputListenerComponents=[],this.canvasModels=[];var s,r;this.parentElement=t;const i=e;Vo(i),this.config=i;const a=vl(i);t.innerHTML="",t.appendChild(a.content),this.id=(s=t.getAttribute("data-id"))!=null?s:"",i.fixedSize&&(t.style.width=i.fixedSize.width+"px",t.style.height=i.fixedSize.height+"px");const o=new ag(i);this.timeZoneModel=o;const l=this.timeZoneModel.getFormatterFactory(),c=ml(t);this.elements=c;const h=new Mf;this.bus=h;const g=new Af(t,(r=c.chartResizer)!=null?r:t,h,this.canvasModels,i);this.chartResizeHandler=g,g.subscribeResize(),this.components.push(g.unsubscribeAnimationUpdate.bind(g));const p=new qc(h,g);this.drawingManager=p;const b=Kc(h,c.mainCanvas,c.chartResizer,this.config.components.chart.type,this.config,p,this.canvasModels);this.mainCanvasModel=b,this.dynamicObjectsCanvasModel=Oe(h,c.dynamicObjectsCanvas,i,p,this.canvasModels,c.chartResizer);const E=new Ge(this.dynamicObjectsCanvasModel);p.addDrawer(E,"SERIES_CLEAR");const B=Oe(h,c.yAxisLabelsCanvas,i,p,this.canvasModels,c.chartResizer),N=new Vn(i,h,b,l,g);this.canvasBoundsContainer=N;const k=c.mainCanvas.parentElement;if(k===null)throw new Error("Couldn't get main canvas parent");const X=new Pn(h,k);this.canvasInputListener=X,this.chartComponents.push(this.canvasInputListener);const Z=new $h(h,c.hitTestCanvas,X,N,p,i,this.canvasModels,c.chartResizer);this.hitTestCanvasModel=Z;const J=new Ge(Z);p.addDrawer(J,"HIT_TEST_CLEAR");const K=new xo(h);this.canvasAnimation=K;const U=new ri(i,()=>N.getBounds(Y.PANE_UUID(ct)),K);this.scaleModel=U;const q=Oe(h,c.backgroundCanvas,i,p,this.canvasModels,c.chartResizer,{willReadFrequently:!0});this.backgroundCanvasModel=q,this.cursorHandler=new ul(c.canvasArea,X,N,Z),this.chartComponents.push(this.cursorHandler),this.crossEventProducer=new jf(X,N),this.chartComponents.push(this.crossEventProducer);const at=new jl("candle");this.chartBaseModel=at;const ot=new Ed(h,U,N,i,K,X,k,at);this.chartPanComponent=ot,this.chartComponents.push(ot),this.userInputListenerComponents.push(ot.chartAreaPanHandler);const nt=new gu(at,this.dynamicObjectsCanvasModel,this.userInputListenerComponents,h,U,N,i,K,X,p,this.cursorHandler,this.crossEventProducer,ot,b,B);this.paneManager=nt;const rt=this.paneManager.panes[ct];this.mainPane=rt,this.chartComponents.push(nt),this.dynamicObjects=new Fh(this.dynamicObjectsCanvasModel,p),this.chartComponents.push(this.dynamicObjects),this.chartModel=new wh(at,nt,h,this.dynamicObjectsCanvasModel,i,U,l,k,N,g);const dt=new lh(this.chartModel,this.dynamicObjectsCanvasModel,i,U,N,p,Z,X,q,ot,nt,this.cursorHandler,this.dynamicObjects);this.chartComponents.push(dt),this.chartComponent=dt;const ht=this.chartComponent.chartModel;this.chartModel=ht,this.canvasBoundsContainer.setMainCandleSeries(this.chartModel.mainCandleSeries),Z.addSubscriber(nt.hitTestController),this.xAxisComponent=new bf(h,i,b,dt,U,N,X,g,this.drawingManager,o,ot,this.cursorHandler,q),this.chartComponents.push(this.xAxisComponent),this.userInputListenerComponents.push(this.xAxisComponent.xAxisScaleHandler);const St=new Ge(b);p.addDrawer(St,"MAIN_CLEAR");const ut=new _f(k,ht,X,i);this.chartComponents.push(ut),this.watermarkComponent=new Ou(nt,ht,h,i,N,this.dynamicObjectsCanvasModel,p),this.chartComponents.push(this.watermarkComponent);const vt=Oe(h,c.crossToolCanvas,i,p,this.canvasModels,c.chartResizer);this.highlightsComponent=new fd(h,i,ht,b,N,p),this.chartComponents.push(this.highlightsComponent),i.useUTCTimeOverride&&i.dateFormatter&&!i.dateFormatter.utcTimeOverride&&(i.dateFormatter.utcTimeOverride=this.createUTCTimeOverrideConfig(ht)),this.navigationMapComponent=new Sd(h,ht,b,i,X,N,p,l,ot,this.cursorHandler),this.chartComponents.push(this.navigationMapComponent),this.userInputListenerComponents.push(this.navigationMapComponent.navigationMapMoveHandler);const pt=new ad(i,this.dynamicObjectsCanvasModel,ht,N,p);this.chartComponents.push(pt),this.initYAxisDrawer(B),this.yAxisComponent=rt.mainExtent.yAxis;const Ht=new Sf(this.chartModel,this.config,rt.mainExtent.yAxis.state,this.chartModel.lastCandleLabelsByChartType,this.yAxisComponent.getLabelsColorResolver.bind(this.yAxisComponent));this.yAxisComponent.registerYAxisLabelsProvider(Ht,fs.MAIN),this.volumesComponent=new Mu(this.dynamicObjectsCanvasModel,dt,U,N,p,i,nt,this.dynamicObjects),this.chartComponents.push(this.volumesComponent);const kt=new Ni(b,U,i,this.yAxisComponent.state,"GRID",p,()=>this.canvasBoundsContainer.getBounds(Y.ALL_PANES),()=>this.canvasBoundsContainer.getBounds(Y.PANE_UUID(ct)),()=>this.xAxisComponent.xAxisLabelsGenerator.labels,()=>this.yAxisComponent.model.baseLabelsModel.labels,()=>rt.mainExtent.toY(rt.mainExtent.getBaseline()),()=>i.components.grid.visible);this.chartComponents.push(kt),this.hoverProducer=new Kf(this.crossEventProducer,U,i,ht,X,this.canvasBoundsContainer,this.paneManager,o,l),this.chartComponents.push(this.hoverProducer),this.crossToolComponent=new Oh(i,vt,N,p,nt,this.crossEventProducer,this.hoverProducer,this.backgroundCanvasModel),this.chartComponents.push(this.crossToolComponent);const jt=Oe(h,c.snapshotCanvas,i,p,this.canvasModels,c.chartResizer),pe=new vu(this.elements,jt);this.snapshotComponent=pe,this.chartComponents.push(pe);const Mn=new sd(i,this.dynamicObjectsCanvasModel,Z,ht,N,p,l,this.cursorHandler,q);this.eventsComponent=Mn,this.chartComponents.push(Mn),this.chartComponents.forEach(yg=>yg.activate()),this.enableUserControls(),p.reorderDrawers(i.drawingOrder),this.clearer=Mo(this.components)}initYAxisDrawer(t){const e=new ls,s=new Ge(t);e.addDrawer(s,"YAXIS_CLEAR"),this.drawingManager.addDrawer(e,"Y_AXIS");const r=new Pf(this.config,t,this.paneManager);e.addDrawer(r);const i=new xf(t,this.backgroundCanvasModel,this.canvasBoundsContainer,this.config,this.paneManager);e.addDrawer(i)}createUTCTimeOverrideConfig(t){const e=new RegExp("HH|H|mm|m|s|ss|sss|SSS");return{pattern:"MM/dd/YY",test:s=>e.test(s)&&(t.getPeriod()||0)>=86400}}static mergeConfig(t,e){for(const s in e)s in t?typeof t[s]=="object"&&xs.mergeConfig(t[s],e[s]):t[s]=e[s];return t}getConfig(){return this.config}disableUserControls(){this.userInputListenerComponents.forEach(t=>t.deactivate()),this.hitTestCanvasModel.disableUserControls()}enableUserControls(){this.userInputListenerComponents.forEach(t=>t.activate()),this.hitTestCanvasModel.enableUserControls()}setGridConfig(t){var e,s,r,i,a;const o=this.config.components.grid;o.visible=(e=t.visible)!=null?e:!1,o.dash=(s=t.dash)!=null?s:[0,0],o.width=(r=t.width)!=null?r:1,o.color=(i=t.color)!=null?i:"#FFFFFF",this.config.colors.chartAreaTheme.gridColor=(a=t.color)!=null?a:"#FFFFFF",this.redraw()}setGridVisible(t){this.config.components&&this.config.components.grid&&(this.config.components.grid.visible=t,this.redraw())}setGridVertical(t){this.config.components.grid.vertical=t,this.redraw()}setGridHorizontal(t){this.config.components.grid.horizontal=t,this.redraw()}redraw(){this.bus.fireDraw()}getOffsets(){return this.config.components&&this.config.components.offsets}setShowCandleBorders(t=!0){this.config.components&&this.config.components.chart&&(this.config.components.chart.showCandlesBorder=t,this.redraw())}setHighLowVisible(t=!0){this.config.components&&this.config.components.highLow&&(this.config.components.highLow.visible=t,this.redraw())}setCrossToolVisible(t="cross-and-labels"){this.config.components&&this.config.components.crossTool&&(this.config.components.crossTool.type=t,this.redraw())}setHighlightsVisible(t=!0){var e;(e=this.config.components)!=null&&e.highlights&&(this.config.components.highlights.visible=t,this.redraw())}setHighlightsData(t){this.highlightsComponent.setHighlights(t)}setColors(t){Kt(this.config.colors,t,{addIfMissing:!0,overrideExisting:!0}),this.redraw()}addMouseMoveOnChartElementHandler(t,e){const s=this.canvasBoundsContainer.getBoundsHitTest(t),r=this.canvasInputListener.observeMouseMove(s).subscribe(e);return()=>r.unsubscribe()}addMouseEnterOnChartElementHandler(t,e,s=!1){const r=this.canvasBoundsContainer.getBoundsHitTest(t),i=this.canvasInputListener.observeMouseEnter(r,s).subscribe(e);return()=>i.unsubscribe()}addClickOnChartElementHandler(t,e){const s=this.canvasBoundsContainer.getBoundsHitTest(t),r=this.canvasInputListener.observeClick(s).subscribe(e);return()=>r.unsubscribe()}addDragEventsListener(t,e){const s=this.canvasBoundsContainer.getBoundsHitTest(t),r=Ot(this.canvasInputListener.observeYDrag(s),this.canvasInputListener.observeXDrag(s)).subscribe(e);return()=>r.unsubscribe()}registerComponent(t,e){const s=t(this);this.components.push(s),e&&e(s),s.activate()}}class Ba extends xs{constructor(t,e={}){super(t,e),this.yAxis=this.yAxisComponent,this.xAxis=this.xAxisComponent,this.watermark=this.watermarkComponent,this.highlights=this.highlightsComponent,this.events=this.eventsComponent,this.snapshot=this.snapshotComponent,this.crosshair=this.crossToolComponent,this.navigationMap=this.navigationMapComponent,this.volumes=this.volumesComponent,this.cursors=this.cursorHandler,this.data=this.chartComponent,this.scale=this.scaleModel,this.panning=this.chartPanComponent,this.bounds=this.canvasBoundsContainer,this.hover=this.hoverProducer}registerPaneFormatters(t,e){var s;(s=this.paneManager.panes[t])==null||s.setPaneValueFormatters(e)}destroy(){this.bus.setMuted(!0),this.chartComponents.forEach(t=>t.disable()),this.parentElement.childNodes.forEach(t=>t.remove()),this.parentElement.style.width="",this.parentElement.style.height=""}showSeparateVolumes(t=!1){this.volumes&&(this.volumes.setShowVolumesSeparatly(t),this.bounds.updateYAxisWidths())}setData(t){if(Array.isArray(t)){if(t.length===0)return;const[e,...s]=t;this.chartComponent.setAllSeries(e,s)}else this.chartComponent.setMainSeries(t)}updateData(t){if(Array.isArray(t)){if(t.length===0)return;const[e,...s]=t;this.chartComponent.updateAllSeries(e,s)}else this.chartComponent.updateAllSeries(t)}setAutoScale(t=!0){this.scale.autoScale(t)}setRtl(t){this.config.rtl=t,this.bus.fireDraw()}setChartType(t){this.chartComponent.setChartType(t)}createPane(){return this.paneManager.createPane()}}var lg=Object.defineProperty,cg=Object.defineProperties,hg=Object.getOwnPropertyDescriptors,Ra=Object.getOwnPropertySymbols,dg=Object.prototype.hasOwnProperty,ug=Object.prototype.propertyIsEnumerable,Fa=(n,t,e)=>t in n?lg(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,fg=(n,t)=>{for(var e in t||(t={}))dg.call(t,e)&&Fa(n,e,t[e]);if(Ra)for(var e of Ra(t))ug.call(t,e)&&Fa(n,e,t[e]);return n},gg=(n,t)=>cg(n,hg(t));function Ya(n){n=n||{},n.quantity=n.quantity||200,n.startY=n.startY||50,n.avgCandleSize=n.avgCandleSize||2,n.avgTrendLength=n.avgTrendLength||{},n.avgTrendLength.sw=n.avgTrendLength.sw||10,n.avgTrendLength.down=n.avgTrendLength.down||10,n.avgTrendLength.up=n.avgTrendLength.up||10,n.withVolume=n.withVolume===!0||!1,n.period=n.period||3600;var t=[],e=n.quantity||200,s=10,r=10,i=10;n.avgTrendLength&&(s=n.avgTrendLength.sw||10,r=n.avgTrendLength.down||10,i=n.avgTrendLength.up||10);var a=n.startY||50,o=n.avgCandleSize||2,l=a-o,c=a+o,h=Tn(l,c,o);for(t.push(h);t.length<e;){var g=Math.random()*10;g>6?t=t.concat(pg(t[t.length-1],o,s)):g>3?t=t.concat(vg(t[t.length-1],o,i)):t=t.concat(mg(t[t.length-1],o,r))}t=t.slice(0,n.quantity);let p=Math.round(new Date().getTime()/3e5)*3e5;p-=e*1e3*n.period;for(let b=0;b<t.length;b++){const E=t[b];Object.assign(E,{timestamp:p,isVisible:!0}),p+=1e3*n.period,n.withVolume&&(E.volume=Math.ceil(Math.random()*1e3+200))}return t}function Tn(n,t,e,s){var r=Math.random()*(t-n)+n,i;if(s&&s==="bull"||!s&&Math.random()>.5){var a=r+e;i=a<t?a:t}else{var o=r-e;i=o>n?o:n}var l=Math.max(r,i)+Math.random()*e*.2,c=Math.min(r,i)-Math.random()*e*.2;return{hi:l,lo:c,open:r,close:i,timestamp:0,volume:0}}function vg(n,t,e){for(var s=[],r=Math.random()*e+e/2,i=n.lo,a=n.hi+t*1.2,o=0;o<r;o++){var l=Math.random()>.9?"bear":"bull",c=Tn(i,a,t,l);i=c.lo-t*(Math.random()*.1+.1),a=c.hi+t*(Math.random()*1.3+.1),Math.random()>.9&&(a=c.hi+t),s.push(c)}return s}function mg(n,t,e){for(var s=[],r=Math.random()*e+e/2,i=n.hi-t*1.2,a=n.hi,o=0;o<r;o++){var l=Math.random()<.9?"bear":"bull",c=Tn(i,a,t,l);i=c.lo-t*(Math.random()*.3+.1),a=c.hi-t*(Math.random()*.1+.1),Math.random()>.9&&(a=c.lo-t),s.push(c)}return s}function pg(n,t,e){var s=[],r=Math.random()*e+e/2;function i(p){var b,E;return Math.random()>.5?(b=p.lo-t*.2,E=p.hi+t*1.2):(b=p.lo-t*1.2,E=p.hi+t*.2),{from:b,to:E}}for(var a=i(n),o=a.from,l=a.to,c=0;c<r;c++){var h=Math.random()<.5?"bear":"bull",g=Tn(o,l,t,h);a=i(g),o=a.from,l=a.to,Math.random()>.9&&(Math.random()>.5?o=g.lo-t:l=g.hi+t),s.push(g)}return s}window.DXChart=gg(fg({},window.DXChart),{generateCandlesData:Ya});function bg(n){return Ya(n)}const Cg=(n,t={})=>new Ba(n,t)})(),window.DXChart=_n})();})();